Skip to content

Commit

Permalink
Merge branch 'BimmerGestalt-main'
Browse files Browse the repository at this point in the history
  • Loading branch information
galenzhao committed Jun 20, 2024
2 parents 9268205 + 257211a commit 2b943b3
Show file tree
Hide file tree
Showing 36 changed files with 388 additions and 84 deletions.
24 changes: 22 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ jobs:
with:
fetch-depth: 0
submodules: true
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 17

- name: Prepare cached external dependencies
uses: actions/cache@v3
Expand All @@ -27,8 +32,23 @@ jobs:

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: Build the project

- name: Extract signing key
if: github.repository == 'BimmerGestalt/IDriveConnectAddons' && github.ref == 'refs/heads/main'
run: "echo '${{ secrets.KEYSTORE_BASE64 }}' | base64 -d > keystore.jks"

- name: Build the project (debug mode)
if: github.repository != 'BimmerGestalt/IDriveConnectAddons' || github.ref != 'refs/heads/main'
run: ./gradlew assembleDebug

- name: Build the project (release mode)
if: github.repository == 'BimmerGestalt/IDriveConnectAddons' && github.ref == 'refs/heads/main'
run: ./gradlew assembleRelease
env:
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEYSTORE_ALIAS: upload
KEYSTORE_ALIAS_PASSWORD: ${{ secrets.KEYSTORE_ALIAS_PASSWORD }}

- name: Upload APKs
uses: actions/upload-artifact@v3
with:
Expand Down Expand Up @@ -67,7 +87,7 @@ jobs:
- name: Stage upload directory
run: |
mkdir dist
cp */build/outputs/apk/debug/*apk dist/
cp */build/outputs/apk/*/*apk dist/
- name: Upload to Github releases
uses: svenstaro/upload-release-action@v2
with:
Expand Down
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions .idea/deploymentTargetSelector.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 35 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions .idea/migrations.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# IDriveConnectAddons

The Connected Apps protocol is very powerful and provides an unparalleled convergence experience.
While the AAIdrive app focuses on a specific feature set, creative people could implement their own ideas to unlock other functionality!
While the AAIdrive app focuses on a specific feature set, addons providing extra functionality have been [built and released](https://github.com/BimmerGestalt/IDriveConnectAddons/releases) and creative people could implement their own ideas to unlock other possibilities!

# Current Integrations

Expand All @@ -19,6 +19,7 @@ There's also the concept of a Car Connection Addon, which starts up and shuts do

- [screen_mirror](screen_mirror) adds an app to the car to show a copy of the phone screen on the car's screen.
- [Hass Gestalt](https://github.com/BimmerGestalt/HassGestalt) provides access to Home Assistant dashboards in the car's screen
- [ReadYou Gestalt](https://github.com/BimmerGestalt/ReadYou) adds an RSS news app to the car's screen, based on [ReadYou](https://f-droid.org/packages/me.ash.reader/)

# Future Ideas

Expand All @@ -30,15 +31,15 @@ The car provides [so much data](https://bimmergestalt.github.io/BMWConnectedAnal
- Fuel logger, automatically reporting fill-ups to Fuelly or Spritmonitor
- Scrobbling of car-sourced music such as SiriusXM or USB (basic implementation in [bimmerscrobbler](bimmerscrobbler))
- Live gauges display of some basic performance data, without needing extra hardware (simple example in [cds_gauges](cds_gauges))
- Car race recording, inspired by BMW M Laptimer (one approach enabled with [androbd_gestalt](androbd_gestalt))
- Car race recording, inspired by BMW M Laptimer (one attempt with [androbd_gestalt](androbd_gestalt))
- Automatically load VIN from the car to decode the list of options that the car came with

## Legacy Apps

There were previously some incredibly innovative features using the Connected Apps protocol, perhaps they can be brought back and updated?

- Official Twitter client could be reused for Mastodon
- Perhaps integrated with the official RSS News reader
- Official RSS News reader (implemented as a [fork of ReadYou](https://github.com/BimmerGestalt/ReadYou))
- Dynamic Music would be fun
- Sports Displays could be reused for accelerometer display, perhaps?
- Smart Things could be a frontend for Home Assistant (implemented as [Hass Gestalt](https://github.com/BimmerGestalt/HassGestalt))
Expand All @@ -65,7 +66,7 @@ By using AM App Icons as launchers into other apps, we can essentially create cu

The protocol has some other APIs which haven't been fully explored, such as the Map api that takes a KMZ file. This might enable some fun features:

- Add a POI layer to show speed traps (blitzer.de Flitsmeister Yasonik, for example). OSM has some of [this data](https://wiki.openstreetmap.org/wiki/Relation:enforcement).
- Add a POI layer to show speed traps (blitzer.de Flitsmeister Yanosik, for example). OSM has some of [this data](https://wiki.openstreetmap.org/wiki/Relation:enforcement).
- Add a POI layer to show addresses of contacts from the phone's address book

Turns out this map functionality is less of a POI layer and more like a mini map showing search results, which lends itself to different functionality:
Expand Down
2 changes: 1 addition & 1 deletion androbd_gestalt/AndrOBD-libplugin
18 changes: 15 additions & 3 deletions androbd_gestalt/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,37 @@ plugins {
}

android {
compileSdkVersion 30
buildToolsVersion "30.0.0"

defaultConfig {
applicationId "io.bimmergestalt.idriveconnectaddons.androbd_gestalt"
compileSdk 33
minSdkVersion 21
targetSdkVersion 30
targetSdkVersion 33
versionCode 1
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

signingConfigs {
release
}
if (System.getenv("CI") == "true") {
// configure keystore
signingConfigs.release.storeFile = file("../keystore.jks")
signingConfigs.release.storePassword = System.getenv("KEYSTORE_PASSWORD")
signingConfigs.release.keyAlias = System.getenv("KEYSTORE_ALIAS")
signingConfigs.release.keyPassword = System.getenv("KEYSTORE_ALIAS_PASSWORD")
}

buildFeatures {
dataBinding true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
compileOptions {
Expand All @@ -34,6 +45,7 @@ android {
kotlinOptions {
jvmTarget = '1.8'
}
namespace 'io.bimmergestalt.idriveconnectaddons.androbd_gestalt'
}

repositories {
Expand Down
7 changes: 3 additions & 4 deletions androbd_gestalt/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.bimmergestalt.idriveconnectaddons.androbd_gestalt">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

<uses-permission android:name="io.bimmergestalt.permission.CDS_normal" />
<uses-permission android:name="io.bimmergestalt.permission.CDS_personal" />
Expand All @@ -11,7 +10,7 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.IDriveConnectAddons">
<activity android:name=".MainActivity">
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
Expand Down Expand Up @@ -40,7 +39,7 @@
</service>

<!-- Become discoverable in the Addons tab -->
<service android:name=".GestaltPlugin">
<service android:name=".GestaltPlugin" android:exported="true">
<intent-filter>
<action android:name="io.bimmergestalt.cardata.service" />
</intent-filter>
Expand Down
18 changes: 15 additions & 3 deletions bimmerscrobbler/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,37 @@ plugins {
}

android {
compileSdkVersion 30
buildToolsVersion "30.0.0"

defaultConfig {
applicationId "io.bimmergestalt.idriveconnectaddons.bimmerscrobbler"
compileSdk 33
minSdkVersion 21
targetSdkVersion 30
targetSdkVersion 33
versionCode 1
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

signingConfigs {
release
}
if (System.getenv("CI") == "true") {
// configure keystore
signingConfigs.release.storeFile = file("../keystore.jks")
signingConfigs.release.storePassword = System.getenv("KEYSTORE_PASSWORD")
signingConfigs.release.keyAlias = System.getenv("KEYSTORE_ALIAS")
signingConfigs.release.keyPassword = System.getenv("KEYSTORE_ALIAS_PASSWORD")
}

buildFeatures {
dataBinding true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
compileOptions {
Expand All @@ -34,6 +45,7 @@ android {
kotlinOptions {
jvmTarget = '1.8'
}
namespace 'io.bimmergestalt.idriveconnectaddons.bimmerscrobbler'
}

repositories {
Expand Down
7 changes: 3 additions & 4 deletions bimmerscrobbler/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.bimmergestalt.idriveconnectaddons.bimmerscrobbler">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

<uses-permission android:name="io.bimmergestalt.permission.CDS_normal" />
<application
Expand All @@ -10,7 +9,7 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.IDriveConnectAddons">
<activity android:name=".MainActivity">
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand All @@ -21,7 +20,7 @@

<!-- Become discoverable in the Addons tab -->
<!-- Also becomes bound when the car connects -->
<service android:name=".MainService">
<service android:name=".MainService" android:exported="true">
<intent-filter>
<action android:name="io.bimmergestalt.cardata.service" />
</intent-filter>
Expand Down
Loading

0 comments on commit 2b943b3

Please sign in to comment.