diff --git a/.github/workflows/gradle_build.yml b/.github/workflows/gradle_build.yml
new file mode 100644
index 0000000..9523766
--- /dev/null
+++ b/.github/workflows/gradle_build.yml
@@ -0,0 +1,51 @@
+name: Build APK
+
+on:
+ push:
+ branches: [ master, dev, ci-cd ]
+ pull_request:
+ branches: [ master, dev ]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Configure SSH for private submodules
+ uses: webfactory/ssh-agent@v0.9.0
+ with:
+ ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
+
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ submodules: recursive
+ repository: Botts-Innovative-Research/osh-android
+
+ - name: Setup Java
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'zulu'
+
+ - name: Setup Android SDK
+ uses: android-actions/setup-android@v3
+ with:
+ packages: ''
+
+ - name: Build APK
+ run: |
+ chmod +x ./gradlew
+ ./gradlew build -x test -x osgi -x lintDebug -x javadoc
+
+ - name: Upload APK artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: osh-android-APK
+ path: sensorhub-android-app/build/outputs/apk/debug/sensorhub-android-app-debug.apk
+
+ - name: Create GitHub Release
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
+ uses: softprops/action-gh-release@v2
+ with:
+ files: app/build/outputs/apk/basic/release/*.apk
+ generate_release_notes: true
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
index 437f68a..189cbdf 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -6,6 +6,3 @@
path = submodules/osh-core
url = git@github.com:kalynstricklin/osh-core.git
branch = update-moduleutils
-[submodule "submodules/botts-addons"]
- path = submodules/botts-addons
- url = git@github.com:Botts-Innovative-Research/botts-addons.git
diff --git a/sensorhub-android-app/res/values-de/strings.xml b/sensorhub-android-app/res/values-de/strings.xml
index 1b20577..a82915f 100644
--- a/sensorhub-android-app/res/values-de/strings.xml
+++ b/sensorhub-android-app/res/values-de/strings.xml
@@ -416,4 +416,25 @@
Port muss eine Zahl sein
Port muss zwischen 1 und 65535 liegen
+
+ Lizenzschlüssel erforderlich
+ Der Garmin Health SDK-Lizenzschlüssel ist nicht konfiguriert. Fügen Sie ihn in gradle.properties hinzu.
+ Garmin SDK-Fehler
+ Garmin Health SDK konnte nicht initialisiert werden: %s
+ Scan fehlgeschlagen
+ Garmin-Geräte-Scan fehlgeschlagen (Fehler %d)
+ Suche nach Garmin-Geräten…
+ Stellen Sie sicher, dass Ihr Garmin-Gerät in der Nähe und im Kopplungsmodus ist.
+ %d Garmin-Gerät(e) gefunden
+ Kopplungs-Zeitüberschreitung
+ Authentifizierung ist abgelaufen. Bitte versuchen Sie es erneut.
+ Kopplung…
+ Kopplung mit %s.\nBitte bestätigen Sie auf Ihrem Garmin-Gerät, wenn Sie dazu aufgefordert werden.
+ Erfolgreich gekoppelt
+ Gekoppelt mit %s
+ Kopplung fehlgeschlagen
+ Kopplung fehlgeschlagen: %s
+ Stopp
+ Weiter suchen…
+ IP-Adresse konnte nicht ermittelt werden
diff --git a/sensorhub-android-app/res/values-es/strings.xml b/sensorhub-android-app/res/values-es/strings.xml
index 22acc99..0b24dcf 100644
--- a/sensorhub-android-app/res/values-es/strings.xml
+++ b/sensorhub-android-app/res/values-es/strings.xml
@@ -184,4 +184,24 @@
El puerto debe estar entre 1 y 65535
+ Clave de licencia requerida
+ La clave de licencia del SDK de Garmin Health no está configurada. Agréguela a gradle.properties.
+ Error del SDK de Garmin
+ Error al inicializar el SDK de Garmin Health: %s
+ Escaneo fallido
+ El escaneo del dispositivo Garmin falló (error %d)
+ Buscando dispositivos Garmin…
+ Asegúrese de que su dispositivo Garmin esté cerca y en modo de emparejamiento.
+ Se encontraron %d dispositivo(s) Garmin
+ Tiempo de emparejamiento agotado
+ La autenticación expiró. Por favor, intente de nuevo.
+ Emparejando…
+ Emparejando con %s.\nConfirme en su dispositivo Garmin si se le solicita.
+ Emparejado exitosamente
+ Emparejado con %s
+ Emparejamiento fallido
+ Error al emparejar: %s
+ Detener
+ Seguir buscando…
+ No se pudo obtener la dirección IP
diff --git a/sensorhub-android-app/res/values-fr/strings.xml b/sensorhub-android-app/res/values-fr/strings.xml
index 85716bf..bd2ec43 100644
--- a/sensorhub-android-app/res/values-fr/strings.xml
+++ b/sensorhub-android-app/res/values-fr/strings.xml
@@ -416,4 +416,25 @@
Le port doit être un nombre
Le port doit être compris entre 1 et 65535
+
+ Clé de licence requise
+ La clé de licence du SDK Garmin Health n\'est pas configurée. Ajoutez-la dans gradle.properties.
+ Erreur du SDK Garmin
+ Échec de l\'initialisation du SDK Garmin Health : %s
+ Échec du scan
+ Le scan de l\'appareil Garmin a échoué (erreur %d)
+ Recherche d\'appareils Garmin…
+ Assurez-vous que votre appareil Garmin est à proximité et en mode d\'appairage.
+ %d appareil(s) Garmin trouvé(s)
+ Délai d\'appairage expiré
+ L\'authentification a expiré. Veuillez réessayer.
+ Appairage…
+ Appairage avec %s.\nVeuillez confirmer sur votre appareil Garmin si demandé.
+ Appairage réussi
+ Appairé avec %s
+ Échec de l\'appairage
+ Échec de l\'appairage : %s
+ Arrêter
+ Continuer la recherche…
+ Impossible d\'obtenir l\'adresse IP
\ No newline at end of file
diff --git a/sensorhub-android-app/res/values-it/strings.xml b/sensorhub-android-app/res/values-it/strings.xml
index 52da53b..205bc21 100644
--- a/sensorhub-android-app/res/values-it/strings.xml
+++ b/sensorhub-android-app/res/values-it/strings.xml
@@ -416,4 +416,25 @@
La porta deve essere un numero
La porta deve essere compresa tra 1 e 65535
+
+ Chiave di licenza richiesta
+ La chiave di licenza del SDK Garmin Health non è configurata. Aggiungila in gradle.properties.
+ Errore SDK Garmin
+ Inizializzazione SDK Garmin Health fallita: %s
+ Scansione fallita
+ Scansione dispositivo Garmin fallita (errore %d)
+ Ricerca dispositivi Garmin…
+ Assicurati che il dispositivo Garmin sia vicino e in modalità di associazione.
+ Trovati %d dispositivo/i Garmin
+ Timeout associazione
+ L\'autenticazione è scaduta. Riprova.
+ Associazione…
+ Associazione con %s.\nConferma sul dispositivo Garmin se richiesto.
+ Associazione riuscita
+ Associato con %s
+ Associazione fallita
+ Associazione fallita: %s
+ Ferma
+ Continua la ricerca…
+ Impossibile ottenere l\'indirizzo IP
diff --git a/sensorhub-android-app/res/values-pt/strings.xml b/sensorhub-android-app/res/values-pt/strings.xml
index 78e5adb..6deacaa 100644
--- a/sensorhub-android-app/res/values-pt/strings.xml
+++ b/sensorhub-android-app/res/values-pt/strings.xml
@@ -416,4 +416,25 @@
A porta deve ser um número
A porta deve estar entre 1 e 65535
+
+ Chave de licença necessária
+ A chave de licença do SDK Garmin Health não está configurada. Adicione-a em gradle.properties.
+ Erro do SDK Garmin
+ Falha ao inicializar o SDK Garmin Health: %s
+ Falha na varredura
+ Varredura do dispositivo Garmin falhou (erro %d)
+ Procurando dispositivos Garmin…
+ Certifique-se de que o dispositivo Garmin está próximo e em modo de emparelhamento.
+ Encontrado(s) %d dispositivo(s) Garmin
+ Tempo de emparelhamento esgotado
+ A autenticação expirou. Por favor, tente novamente.
+ Emparelhando…
+ Emparelhando com %s.\nConfirme no seu dispositivo Garmin se solicitado.
+ Emparelhado com sucesso
+ Emparelhado com %s
+ Falha no emparelhamento
+ Falha ao emparelhar: %s
+ Parar
+ Continuar procurando…
+ Não foi possível obter o endereço IP
diff --git a/sensorhub-android-app/res/values-zh-rTW/strings.xml b/sensorhub-android-app/res/values-zh-rTW/strings.xml
index 2210e79..f1f8e12 100644
--- a/sensorhub-android-app/res/values-zh-rTW/strings.xml
+++ b/sensorhub-android-app/res/values-zh-rTW/strings.xml
@@ -40,7 +40,6 @@
啟用 SOS 服務
啟用連線系統服務
啟用探索服務
- 執行名稱
啟用加速度計資料串流
啟用陀螺儀資料串流
@@ -62,7 +61,6 @@
啟用 FLIR One 熱像儀資料串流(透過 USB 連接時)
啟用 STE RadPager 資料串流(感測器須在啟動時透過藍牙 LE 連接)
啟用範本驅動程式串流
- Stream biometric data from the Garmin Wearable Sensor
@@ -250,4 +248,25 @@
連接埠應為數字
連接埠應介於 1 到 65535 之間
+
+ 需要授權金鑰
+ Garmin Health SDK 授權金鑰尚未配置。請將其新增至 gradle.properties。
+ Garmin SDK 錯誤
+ 無法初始化 Garmin Health SDK:%s
+ 掃描失敗
+ Garmin 裝置掃描失敗(錯誤碼 %d)
+ 正在掃描 Garmin 裝置…
+ 請確認 Garmin 裝置在附近且處於配對模式。
+ 找到 %d 個 Garmin 裝置
+ 配對逾時
+ 認證逾時,請重試。
+ 配對中…
+ 正在與 %s 配對。\n如有提示,請在 Garmin 裝置上確認。
+ 配對成功
+ 已與 %s 配對
+ 配對失敗
+ 配對失敗:%s
+ 停止
+ 繼續掃描…
+ 無法取得 IP 位址
diff --git a/sensorhub-android-app/res/values/strings.xml b/sensorhub-android-app/res/values/strings.xml
index aebba8f..b757e81 100644
--- a/sensorhub-android-app/res/values/strings.xml
+++ b/sensorhub-android-app/res/values/strings.xml
@@ -423,4 +423,20 @@
Garmin Health SDK license key is not configured. Add it to gradle.properties.
Garmin SDK Error
Failed to initialize Garmin Health SDK: %s
+ Scan Failed
+ Garmin device scan failed (error %d)
+ Scanning for Garmin Devices…
+ Make sure your Garmin device is nearby and in pairing mode.
+ Found %d Garmin Device(s)
+ Pairing Timeout
+ Authentication timed out. Please try again.
+ Pairing…
+ Pairing with %s.\nPlease confirm on your Garmin device if prompted.
+ Paired Successfully
+ Paired with %s
+ Pairing Failed
+ Failed to pair: %s
+ Stop
+ Keep scanning…
+ Unable to get IP Address
diff --git a/sensorhub-android-app/src/org/sensorhub/android/MainActivity.java b/sensorhub-android-app/src/org/sensorhub/android/MainActivity.java
index b0b27f2..2d1fed8 100644
--- a/sensorhub-android-app/src/org/sensorhub/android/MainActivity.java
+++ b/sensorhub-android-app/src/org/sensorhub/android/MainActivity.java
@@ -39,11 +39,9 @@
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
-import android.content.pm.PackageManager;
import android.location.LocationManager;
import android.location.LocationProvider;
-import com.botts.impl.sensor.garmin.GarminConfig;
import com.botts.impl.service.discovery.DiscoveryService;
import com.botts.impl.service.discovery.DiscoveryServiceConfig;
import com.google.android.material.appbar.MaterialToolbar;
@@ -137,23 +135,6 @@ public class MainActivity extends AppCompatActivity implements SensorHubServiceP
private TextView toolbarTitle;
private BroadcastReceiver broadcastReceiver;
- enum Sensors {
- Android,
- TruPulse,
- TruPulseSim,
- Angel,
- FlirOne,
- DJIDrone,
- ProxySensor,
- BLELocation,
- Meshtastic,
- PolarHRMonitor,
- Kestrel,
- Wardriving,
- Controller,
- Template
- }
-
private final ServiceConnection sConn = new ServiceConnection()
{
public void onServiceConnected(ComponentName className, IBinder service)
@@ -475,19 +456,6 @@ public boolean verify(String arg0, SSLSession arg1) {
sensorhubConfig.add(kestrelConfig);
}
- // Garmin sensor
- if (prefs.getBoolean("garmin_enabled", false)) {
- GarminConfig garminConfig = new GarminConfig();
- garminConfig.id = "GARMIN";
- garminConfig.name = "Garmin [" + deviceName + "]";
- garminConfig.autoStart = true;
- garminConfig.lastUpdated = ANDROID_SENSORS_LAST_UPDATED;
- garminConfig.deviceAddress = prefs.getString("garmin_device_address", "");
- garminConfig.sdkLicenseKey = BuildConfig.GARMIN_SDK_KEY;
-
- sensorhubConfig.add(garminConfig);
- }
-
// Controller
if (prefs.getBoolean("controller_enabled", false)) {
ControllerConfig controllerConfig = new ControllerConfig();
diff --git a/sensorhub-android-lib/build.gradle b/sensorhub-android-lib/build.gradle
index d53b422..64f9aa0 100644
--- a/sensorhub-android-lib/build.gradle
+++ b/sensorhub-android-lib/build.gradle
@@ -9,7 +9,7 @@ dependencies {
api project(':sensorhub-driver-angelsensor')
api project(':sensorhub-driver-android')
api project(':sensorhub-driver-kestrel')
- api project(':sensorhub-android-garmin')
+// api project(':sensorhub-android-garmin')
// api project(':sensorhub-driver-flirone')
// api project(':sensorhub-client-consys-okhttp')
// api project(':sensorhub-android-flirone')
diff --git a/settings.gradle b/settings.gradle
index d9ac7b4..23bd0d4 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -31,9 +31,7 @@ def repos = [
'sensors/weather/sensorhub-driver-kestrel',
'sensors/health/sensorhub-driver-angelsensor',
'processing/sensorhub-process-vecmath',
- 'processing/sensorhub-process-geoloc'
- ],
- 'botts-addons' : [
+ 'processing/sensorhub-process-geoloc',
'services/sensorhub-service-discovery'
]
]
diff --git a/submodules/botts-addons b/submodules/botts-addons
deleted file mode 160000
index 7271af1..0000000
--- a/submodules/botts-addons
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 7271af1a739256a4170e5281f62efea0a57b41dc
diff --git a/submodules/osh-addons b/submodules/osh-addons
index 029d323..a7bc58a 160000
--- a/submodules/osh-addons
+++ b/submodules/osh-addons
@@ -1 +1 @@
-Subproject commit 029d3235e45bf3fe91b2ef619ab53fec7f7fc03e
+Subproject commit a7bc58af4afce56385f117597e302ad37220f2ee
diff --git a/submodules/osh-core b/submodules/osh-core
index e2935bf..a413b4d 160000
--- a/submodules/osh-core
+++ b/submodules/osh-core
@@ -1 +1 @@
-Subproject commit e2935bf3554ffec84ed5fb929782b8a389b7e3c0
+Subproject commit a413b4d19c5ec00d6bdef84305d9dd9992bc1a15