9cb29de1f0
- Kiosk v1.6.0 (versionCode 10)
- Integrate BLE scale gateway directly into kiosk app (no external app needed)
- New scale/ package: BleScaleManager, GatewayWebSocketServer, ScaleProtocol, GatewayService
- GatewayService: foreground service, runs BLE scan + WebSocket :8765 server
- Auto-reconnect on BLE disconnect; protocol compatible with old gateway app
- Setup step 4: replace gateway install flow with BLE device scan + selection (mandatory)
- Permissions: added BLUETOOTH_SCAN, BLUETOOTH_CONNECT, ACCESS_FINE_LOCATION (pre-S),
FOREGROUND_SERVICE, FOREGROUND_SERVICE_CONNECTED_DEVICE
- KioskActivity: replace launchGatewayInBackground() with startGatewayService()
- checkForUpdates: remove gateway APK check (gateway is now internal)
- Remove GATEWAY_PACKAGE / GATEWAY_DOWNLOAD_URL constants
- Logo / branding
- logo.png + logo_icon.png: transparent background (no more black)
- ic_logo.png regenerated in all densities
- Removed house emoji (🏠) from web UI: favicon, bottom nav, setup wizard header
- Removed 🏠 prefix from all translations (it/en/de) and manifest
- Setup wizard: logo shown in language + welcome steps
- Setup wizard: footer with credits ('Creato da Stimpfl Daniel • Open Source')
- CSS: .nav-logo-icon for bottom nav logo sizing
- Scale Gateway v2.1.1 (versionCode 8)
- Fix false update notification: replace == comparison with proper semverNewer()
(was reporting 'update available' whenever tag != current, e.g. v2.1.0 != 2.1.0)
100 lines
4.7 KiB
XML
100 lines
4.7 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:tools="http://schemas.android.com/tools">
|
|
|
|
<!-- Network -->
|
|
<uses-permission android:name="android.permission.INTERNET" />
|
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
|
|
|
<!-- Keep screen on -->
|
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
|
|
<!-- Camera & Microphone (for barcode scan, photo, voice) -->
|
|
<uses-permission android:name="android.permission.CAMERA" />
|
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
|
<uses-feature android:name="android.hardware.camera" android:required="false" />
|
|
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
|
|
|
|
<!-- Storage (file upload/download) -->
|
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
|
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29" />
|
|
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
|
|
|
<!-- Move task to front -->
|
|
<uses-permission android:name="android.permission.REORDER_TASKS" />
|
|
|
|
<!-- Self-update: install own APK at runtime -->
|
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
|
|
|
<!-- ── BLE Scale Gateway (integrated) ───────────────────────────── -->
|
|
<!-- Legacy BLE permissions (Android ≤ 11) -->
|
|
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
|
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
|
|
<!-- Fine location required for BLE scan on Android < 12 -->
|
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />
|
|
<!-- Android 12+ BLE permissions -->
|
|
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
|
|
android:usesPermissionFlags="neverForLocation"
|
|
tools:targetApi="s" />
|
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
|
<!-- Foreground service for keeping BLE+WebSocket alive -->
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
|
|
<!-- BLE hardware — not required, app gracefully disables scale if absent -->
|
|
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false" />
|
|
|
|
<application
|
|
android:allowBackup="true"
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:label="@string/app_name"
|
|
android:roundIcon="@mipmap/ic_launcher_round"
|
|
android:supportsRtl="true"
|
|
android:usesCleartextTraffic="true"
|
|
android:theme="@style/Theme.MaterialComponents.Light.NoActionBar">
|
|
|
|
<activity
|
|
android:name=".KioskActivity"
|
|
android:exported="true"
|
|
android:launchMode="singleTask"
|
|
android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
|
|
android:windowSoftInputMode="adjustResize">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
<activity
|
|
android:name=".SetupActivity"
|
|
android:exported="false"
|
|
android:theme="@style/Theme.MaterialComponents.Light.NoActionBar"
|
|
android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
|
|
android:windowSoftInputMode="adjustResize" />
|
|
|
|
<activity
|
|
android:name=".SettingsActivity"
|
|
android:exported="false"
|
|
android:theme="@style/Theme.MaterialComponents.Light.NoActionBar" />
|
|
|
|
<!-- GatewayService: runs BLE scan + WebSocket server as a foreground service -->
|
|
<service
|
|
android:name=".scale.GatewayService"
|
|
android:exported="false"
|
|
android:foregroundServiceType="connectedDevice" />
|
|
|
|
<!-- FileProvider for serving the downloaded APK to the installer -->
|
|
<provider
|
|
android:name="androidx.core.content.FileProvider"
|
|
android:authorities="${applicationId}.provider"
|
|
android:exported="false"
|
|
android:grantUriPermissions="true">
|
|
<meta-data
|
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
|
android:resource="@xml/file_paths" />
|
|
</provider>
|
|
|
|
</application>
|
|
|
|
</manifest>
|