Skip to content

Commit 5d05a44

Browse files
committed
Add volume assistant sensor
1 parent bbdf55b commit 5d05a44

4 files changed

Lines changed: 40 additions & 9 deletions

File tree

app/src/main/kotlin/io/homeassistant/companion/android/sensors/SensorReceiver.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class SensorReceiver : SensorReceiverBase() {
6565
AudioSensorManager.VOLUME_CHANGED_ACTION to listOf(
6666
AudioSensorManager.volAccessibility.id,
6767
AudioSensorManager.volAlarm.id,
68+
AudioSensorManager.volAssistant.id,
6869
AudioSensorManager.volCall.id,
6970
AudioSensorManager.volDTMF.id,
7071
AudioSensorManager.volNotification.id,

common/src/main/kotlin/io/homeassistant/companion/android/common/sensors/AudioSensorManager.kt

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,17 @@ class AudioSensorManager @Inject constructor(
184184
entityCategory = SensorManager.ENTITY_CATEGORY_DIAGNOSTIC,
185185
updateType = SensorManager.BasicSensor.UpdateType.INTENT,
186186
)
187+
188+
@CatalogSensor
189+
val volAssistant = SensorManager.BasicSensor(
190+
"volume_assistant",
191+
"sensor",
192+
commonR.string.sensor_name_volume_assistant,
193+
commonR.string.sensor_description_volume_assistant,
194+
"mdi:assistant",
195+
entityCategory = SensorManager.ENTITY_CATEGORY_DIAGNOSTIC,
196+
updateType = SensorManager.BasicSensor.UpdateType.INTENT,
197+
)
187198
}
188199

189200
override fun docsLink(): String {
@@ -194,15 +205,20 @@ class AudioSensorManager @Inject constructor(
194205
get() = commonR.string.sensor_name_audio
195206

196207
override suspend fun getAvailableSensors(): List<SensorManager.BasicSensor> {
197-
val allSupportedSensors = listOf(
198-
audioSensor, audioState, headphoneState, micMuted, speakerphoneState,
199-
musicActive, volAlarm, volCall, volMusic, volRing, volNotification, volSystem,
200-
volDTMF,
201-
)
202-
return if (SdkVersion.isAtLeast(Build.VERSION_CODES.O)) {
203-
allSupportedSensors.plus(volAccessibility)
204-
} else {
205-
allSupportedSensors
208+
return buildList {
209+
addAll(
210+
listOf(
211+
audioSensor, audioState, headphoneState, micMuted, speakerphoneState,
212+
musicActive, volAlarm, volCall, volMusic, volRing, volNotification, volSystem,
213+
volDTMF,
214+
),
215+
)
216+
if (SdkVersion.isAtLeast(Build.VERSION_CODES.O)) {
217+
add(volAccessibility)
218+
}
219+
if (SdkVersion.isAtLeast(Build.VERSION_CODES.CINNAMON_BUN)) {
220+
add(volAssistant)
221+
}
206222
}
207223
}
208224

@@ -228,6 +244,9 @@ class AudioSensorManager @Inject constructor(
228244
if (SdkVersion.isAtLeast(Build.VERSION_CODES.O)) {
229245
updateVolumeAccessibility(audioManager)
230246
}
247+
if (SdkVersion.isAtLeast(Build.VERSION_CODES.CINNAMON_BUN)) {
248+
updateVolumeAssistant(audioManager)
249+
}
231250
}
232251

233252
private suspend fun updateAudioSensor(audioManager: AudioManager) {
@@ -271,6 +290,7 @@ class AudioSensorManager @Inject constructor(
271290
AudioManager.MODE_CALL_SCREENING -> "call_screening"
272291
AudioManager.MODE_CALL_REDIRECT -> "call_redirect"
273292
AudioManager.MODE_COMMUNICATION_REDIRECT -> "communication_redirect"
293+
AudioManager.MODE_ASSISTANT_CONVERSATION -> "assistant_conversation"
274294
else -> STATE_UNKNOWN
275295
}
276296

@@ -282,6 +302,7 @@ class AudioSensorManager @Inject constructor(
282302
AudioManager.MODE_CALL_SCREENING -> "mdi:microphone-message"
283303
AudioManager.MODE_CALL_REDIRECT -> "mdi:phone"
284304
AudioManager.MODE_COMMUNICATION_REDIRECT -> "mdi:message-video"
305+
AudioManager.MODE_ASSISTANT_CONVERSATION -> "mdi:assistant"
285306
else -> "mdi:volume-low"
286307
}
287308

@@ -298,6 +319,7 @@ class AudioSensorManager @Inject constructor(
298319
"call_screening",
299320
"call_redirect",
300321
"communication_redirect",
322+
"assistant_conversation",
301323
),
302324
),
303325
)
@@ -415,6 +437,11 @@ class AudioSensorManager @Inject constructor(
415437
updateVolumeSensor(audioManager, volDTMF, AudioManager.STREAM_DTMF)
416438
}
417439

440+
@RequiresApi(Build.VERSION_CODES.CINNAMON_BUN)
441+
private suspend fun updateVolumeAssistant(audioManager: AudioManager) {
442+
updateVolumeSensor(audioManager, volAssistant, AudioManager.STREAM_ASSISTANT)
443+
}
444+
418445
private suspend fun updateVolumeSensor(
419446
audioManager: AudioManager,
420447
sensor: SensorManager.BasicSensor,

common/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,6 +1139,8 @@
11391139
<string name="sensor_description_volume_accessibility">Volume level for accessibility prompts on the device</string>
11401140
<string name="sensor_name_volume_dtmf">Volume level DTMF</string>
11411141
<string name="sensor_description_volume_dtmf">Volume level for DTMF tones on the device</string>
1142+
<string name="sensor_name_volume_assistant">Volume level assistant</string>
1143+
<string name="sensor_description_volume_assistant">Volume level for digital assistant on the device</string>
11421144
<string name="basic_sensor_name_high_accuracy_interval">High accuracy update interval</string>
11431145
<string name="sensor_description_high_accuracy_interval">The update interval set for high accuracy mode</string>
11441146
<string name="update">Update</string>

wear/src/main/kotlin/io/homeassistant/companion/android/sensors/SensorReceiver.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class SensorReceiver : SensorReceiverBase() {
6363
AudioSensorManager.VOLUME_CHANGED_ACTION to listOf(
6464
AudioSensorManager.volAccessibility.id,
6565
AudioSensorManager.volAlarm.id,
66+
AudioSensorManager.volAssistant.id,
6667
AudioSensorManager.volCall.id,
6768
AudioSensorManager.volDTMF.id,
6869
AudioSensorManager.volNotification.id,

0 commit comments

Comments
 (0)