mirror of
https://github.com/home-assistant/android
synced 2024-10-15 12:32:54 +00:00
Migrate bluetooth sensors to common and add to wear OS (#3168)
* Migrate bluetooth sensors to common and add to wear OS * Add missing BT permissions and register for state change events * Update permissions again
This commit is contained in:
parent
afd8a21fbd
commit
db63a38cd5
|
@ -53,6 +53,7 @@ import io.homeassistant.companion.android.R
|
|||
import io.homeassistant.companion.android.common.data.authentication.AuthenticationRepository
|
||||
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
|
||||
import io.homeassistant.companion.android.common.data.url.UrlRepository
|
||||
import io.homeassistant.companion.android.common.sensors.BluetoothSensorManager
|
||||
import io.homeassistant.companion.android.common.util.cancel
|
||||
import io.homeassistant.companion.android.common.util.cancelGroupIfNeeded
|
||||
import io.homeassistant.companion.android.common.util.generalChannel
|
||||
|
@ -62,7 +63,6 @@ import io.homeassistant.companion.android.database.notification.NotificationItem
|
|||
import io.homeassistant.companion.android.database.sensor.SensorDao
|
||||
import io.homeassistant.companion.android.database.settings.SettingsDao
|
||||
import io.homeassistant.companion.android.database.settings.WebsocketSetting
|
||||
import io.homeassistant.companion.android.sensors.BluetoothSensorManager
|
||||
import io.homeassistant.companion.android.sensors.LocationSensorManager
|
||||
import io.homeassistant.companion.android.sensors.NotificationSensorManager
|
||||
import io.homeassistant.companion.android.sensors.SensorReceiver
|
||||
|
|
|
@ -13,6 +13,7 @@ import dagger.hilt.android.AndroidEntryPoint
|
|||
import io.homeassistant.companion.android.BuildConfig
|
||||
import io.homeassistant.companion.android.common.sensors.AudioSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.BatterySensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.BluetoothSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.DNDSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.DisplaySensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.KeyguardSensorManager
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package io.homeassistant.companion.android.bluetooth.ble
|
||||
package io.homeassistant.companion.android.common.bluetooth.ble
|
||||
|
||||
import android.content.Context
|
||||
import io.homeassistant.companion.android.sensors.BluetoothSensorManager
|
||||
import io.homeassistant.companion.android.sensors.SensorReceiver
|
||||
import android.content.Intent
|
||||
import io.homeassistant.companion.android.common.sensors.BluetoothSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.SensorReceiverBase
|
||||
import org.altbeacon.beacon.Beacon
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.round
|
||||
|
@ -80,6 +81,8 @@ class IBeaconMonitor {
|
|||
private fun sendUpdate(context: Context, tmp: List<IBeacon>) {
|
||||
beacons = tmp
|
||||
sensorManager.updateBeaconMonitoringSensor(context)
|
||||
SensorReceiver.updateAllSensors(context)
|
||||
val intent = Intent(context, SensorReceiverBase::class.java)
|
||||
intent.action = SensorReceiverBase.ACTION_UPDATE_SENSORS
|
||||
context.sendBroadcast(intent)
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package io.homeassistant.companion.android.bluetooth.ble
|
||||
package io.homeassistant.companion.android.common.bluetooth.ble
|
||||
|
||||
interface IBeaconNameFormat {
|
||||
val uuid: String
|
|
@ -1,4 +1,4 @@
|
|||
package io.homeassistant.companion.android.bluetooth.ble
|
||||
package io.homeassistant.companion.android.common.bluetooth.ble
|
||||
|
||||
data class IBeaconTransmitter(
|
||||
override var uuid: String,
|
|
@ -1,4 +1,4 @@
|
|||
package io.homeassistant.companion.android.bluetooth.ble
|
||||
package io.homeassistant.companion.android.common.bluetooth.ble
|
||||
|
||||
import org.altbeacon.beacon.service.RssiFilter
|
||||
import kotlin.math.pow
|
|
@ -1,4 +1,4 @@
|
|||
package io.homeassistant.companion.android.bluetooth.ble
|
||||
package io.homeassistant.companion.android.common.bluetooth.ble
|
||||
|
||||
import android.content.Context
|
||||
import kotlinx.coroutines.CoroutineScope
|
|
@ -1,11 +1,11 @@
|
|||
package io.homeassistant.companion.android.bluetooth.ble
|
||||
package io.homeassistant.companion.android.common.bluetooth.ble
|
||||
|
||||
import android.bluetooth.BluetoothManager
|
||||
import android.bluetooth.le.AdvertiseCallback
|
||||
import android.bluetooth.le.AdvertiseSettings
|
||||
import android.content.Context
|
||||
import androidx.core.content.getSystemService
|
||||
import io.homeassistant.companion.android.sensors.BluetoothSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.BluetoothSensorManager
|
||||
import org.altbeacon.beacon.Beacon
|
||||
import org.altbeacon.beacon.BeaconParser
|
||||
import org.altbeacon.beacon.BeaconTransmitter
|
|
@ -1,19 +1,18 @@
|
|||
package io.homeassistant.companion.android.sensors
|
||||
package io.homeassistant.companion.android.common.sensors
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
import io.homeassistant.companion.android.bluetooth.ble.IBeacon
|
||||
import io.homeassistant.companion.android.bluetooth.ble.IBeaconMonitor
|
||||
import io.homeassistant.companion.android.bluetooth.ble.IBeaconTransmitter
|
||||
import io.homeassistant.companion.android.bluetooth.ble.KalmanFilter
|
||||
import io.homeassistant.companion.android.bluetooth.ble.MonitoringManager
|
||||
import io.homeassistant.companion.android.bluetooth.ble.TransmitterManager
|
||||
import io.homeassistant.companion.android.bluetooth.ble.name
|
||||
import io.homeassistant.companion.android.common.bluetooth.BluetoothDevice
|
||||
import io.homeassistant.companion.android.common.bluetooth.BluetoothUtils
|
||||
import io.homeassistant.companion.android.common.bluetooth.BluetoothUtils.supportsTransmitter
|
||||
import io.homeassistant.companion.android.common.sensors.SensorManager
|
||||
import io.homeassistant.companion.android.common.bluetooth.ble.IBeacon
|
||||
import io.homeassistant.companion.android.common.bluetooth.ble.IBeaconMonitor
|
||||
import io.homeassistant.companion.android.common.bluetooth.ble.IBeaconTransmitter
|
||||
import io.homeassistant.companion.android.common.bluetooth.ble.KalmanFilter
|
||||
import io.homeassistant.companion.android.common.bluetooth.ble.MonitoringManager
|
||||
import io.homeassistant.companion.android.common.bluetooth.ble.TransmitterManager
|
||||
import io.homeassistant.companion.android.common.bluetooth.ble.name
|
||||
import io.homeassistant.companion.android.database.AppDatabase
|
||||
import io.homeassistant.companion.android.database.sensor.SensorSetting
|
||||
import io.homeassistant.companion.android.database.sensor.SensorSettingType
|
|
@ -11,6 +11,13 @@
|
|||
<uses-permission android:name="android.permission.BODY_SENSORS" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="com.google.android.clockwork.settings.WATCH_TOUCH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH"
|
||||
android:maxSdkVersion="30"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
|
||||
android:maxSdkVersion="30"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
|
||||
|
||||
<uses-feature android:name="android.hardware.type.watch" />
|
||||
|
||||
|
@ -39,6 +46,8 @@
|
|||
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
|
||||
<action android:name="android.app.action.NEXT_ALARM_CLOCK_CHANGED" />
|
||||
<action android:name="io.homeassistant.companion.android.UPDATE_SENSORS" />
|
||||
<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
|
||||
<action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<uses-library
|
||||
|
|
|
@ -2,6 +2,7 @@ package io.homeassistant.companion.android
|
|||
|
||||
import android.app.Application
|
||||
import android.app.NotificationManager
|
||||
import android.bluetooth.BluetoothAdapter
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.media.AudioManager
|
||||
|
@ -92,6 +93,13 @@ open class HomeAssistantApplication : Application() {
|
|||
addAction("com.google.android.clockwork.actions.WET_MODE_ENDED")
|
||||
}
|
||||
)
|
||||
|
||||
// Listen for bluetooth state changes
|
||||
registerReceiver(
|
||||
sensorReceiver,
|
||||
IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED)
|
||||
)
|
||||
|
||||
// Update complications when the screen is on
|
||||
val complicationReceiver = ComplicationReceiver()
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ import dagger.hilt.android.AndroidEntryPoint
|
|||
import io.homeassistant.companion.android.BuildConfig
|
||||
import io.homeassistant.companion.android.common.sensors.AudioSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.BatterySensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.BluetoothSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.DNDSensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.DisplaySensorManager
|
||||
import io.homeassistant.companion.android.common.sensors.KeyguardSensorManager
|
||||
|
@ -56,6 +57,7 @@ class SensorReceiver : SensorReceiverBase() {
|
|||
AudioSensorManager(),
|
||||
BatterySensorManager(),
|
||||
BedtimeModeSensorManager(),
|
||||
BluetoothSensorManager(),
|
||||
DisplaySensorManager(),
|
||||
DNDSensorManager(),
|
||||
HeartRateSensorManager(),
|
||||
|
|
Loading…
Reference in a new issue