Skip to content

Commit 95a90df

Browse files
committed
#1518 fix: media constraints should work in more apps
1 parent 64bc44f commit 95a90df

File tree

3 files changed

+12
-15
lines changed

3 files changed

+12
-15
lines changed

app/src/main/java/io/github/sds100/keymapper/constraints/ConstraintSnapshot.kt

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.github.sds100.keymapper.constraints
22

3-
import android.media.AudioAttributes
3+
import android.media.AudioManager
44
import android.os.Build
55
import io.github.sds100.keymapper.system.accessibility.IAccessibilityService
66
import io.github.sds100.keymapper.system.bluetooth.BluetoothDeviceInfo
@@ -43,9 +43,9 @@ class ConstraintSnapshotImpl(
4343
private val isScreenOn: Boolean by lazy { displayAdapter.isScreenOn.firstBlocking() }
4444
private val appsPlayingMedia: List<String> by lazy { mediaAdapter.getActiveMediaSessionPackages() }
4545

46-
private val audioContentTypes: Set<Int> by lazy {
46+
private val audioVolumeStreams: Set<Int> by lazy {
4747
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
48-
mediaAdapter.getActiveAudioContentTypes()
48+
mediaAdapter.getActiveAudioVolumeStreams()
4949
} else {
5050
emptySet()
5151
}
@@ -65,9 +65,8 @@ class ConstraintSnapshotImpl(
6565
}
6666
}
6767

68-
private fun isMediaContentTypePlaying(): Boolean {
69-
return audioContentTypes.contains(AudioAttributes.CONTENT_TYPE_MOVIE) ||
70-
audioContentTypes.contains(AudioAttributes.CONTENT_TYPE_MUSIC)
68+
private fun isMediaPlaying(): Boolean {
69+
return audioVolumeStreams.contains(AudioManager.STREAM_MUSIC) || appsPlayingMedia.isNotEmpty()
7170
}
7271

7372
override fun isSatisfied(constraint: Constraint): Boolean {
@@ -77,7 +76,7 @@ class ConstraintSnapshotImpl(
7776
is Constraint.AppPlayingMedia -> {
7877
if (appsPlayingMedia.contains(constraint.packageName)) {
7978
return true
80-
} else if (appInForeground == constraint.packageName && isMediaContentTypePlaying()) {
79+
} else if (appInForeground == constraint.packageName && isMediaPlaying()) {
8180
return true
8281
} else {
8382
return false
@@ -86,13 +85,11 @@ class ConstraintSnapshotImpl(
8685

8786
is Constraint.AppNotPlayingMedia ->
8887
appsPlayingMedia.none { it == constraint.packageName } &&
89-
!(appInForeground == constraint.packageName && isMediaContentTypePlaying())
88+
!(appInForeground == constraint.packageName && isMediaPlaying())
9089

91-
Constraint.MediaPlaying ->
92-
isMediaContentTypePlaying() || appsPlayingMedia.isNotEmpty()
90+
Constraint.MediaPlaying -> isMediaPlaying()
9391

94-
Constraint.NoMediaPlaying ->
95-
!isMediaContentTypePlaying() && appsPlayingMedia.isEmpty()
92+
Constraint.NoMediaPlaying -> !isMediaPlaying()
9693

9794
is Constraint.BtDeviceConnected -> {
9895
connectedBluetoothDevices.any { it.address == constraint.bluetoothAddress }

app/src/main/java/io/github/sds100/keymapper/system/media/AndroidMediaAdapter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ class AndroidMediaAdapter(context: Context) : MediaAdapter {
5151
}
5252

5353
@RequiresApi(Build.VERSION_CODES.O)
54-
override fun getActiveAudioContentTypes(): Set<Int> {
54+
override fun getActiveAudioVolumeStreams(): Set<Int> {
5555
return audioManager.activePlaybackConfigurations
56-
.map { it.audioAttributes.contentType }
56+
.map { it.audioAttributes.volumeControlStream }
5757
.toSet()
5858
}
5959

app/src/main/java/io/github/sds100/keymapper/system/media/MediaAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ interface MediaAdapter {
2323
* the AudioAttributes class.
2424
*/
2525
@RequiresApi(Build.VERSION_CODES.O)
26-
fun getActiveAudioContentTypes(): Set<Int>
26+
fun getActiveAudioVolumeStreams(): Set<Int>
2727
fun fastForward(packageName: String? = null): Result<*>
2828
fun rewind(packageName: String? = null): Result<*>
2929
fun play(packageName: String? = null): Result<*>

0 commit comments

Comments
 (0)