Compare commits

...

2 Commits

3 changed files with 35 additions and 29 deletions
+2 -2
View File
@@ -79,8 +79,8 @@ android {
applicationId "com.ariacockpit" applicationId "com.ariacockpit"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 10005 versionCode 10006
versionName "0.1.0.5" versionName "0.1.0.6"
// Fallback fuer Libraries mit Product Flavors // Fallback fuer Libraries mit Product Flavors
missingDimensionStrategy 'react-native-camera', 'general' missingDimensionStrategy 'react-native-camera', 'general'
} }
@@ -148,6 +148,11 @@ class AudioFocusModule(reactContext: ReactApplicationContext) : ReactContextBase
promise.resolve(false) promise.resolve(false)
return return
} }
// Async laufen lassen — wir wollen einen request, Pause, dann abandon.
// Ohne Pause merkt das System (und damit Spotify) die kurze Owner-
// Wechsel oft gar nicht. 250ms reicht erfahrungsgemaess fuer den
// Focus-Stack-Refresh.
Thread {
try { try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val attrs = AudioAttributes.Builder() val attrs = AudioAttributes.Builder()
@@ -160,21 +165,22 @@ class AudioFocusModule(reactContext: ReactApplicationContext) : ReactContextBase
.setOnAudioFocusChangeListener(kickListener) .setOnAudioFocusChangeListener(kickListener)
.build() .build()
am.requestAudioFocus(kickReq) am.requestAudioFocus(kickReq)
Thread.sleep(250)
am.abandonAudioFocusRequest(kickReq) am.abandonAudioFocusRequest(kickReq)
} else { } else {
@Suppress("DEPRECATION")
val kickListener = AudioManager.OnAudioFocusChangeListener { /* ignorieren */ } val kickListener = AudioManager.OnAudioFocusChangeListener { /* ignorieren */ }
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
am.requestAudioFocus(kickListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN) am.requestAudioFocus(kickListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN)
Thread.sleep(250)
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
am.abandonAudioFocus(kickListener) am.abandonAudioFocus(kickListener)
} }
Log.i(TAG, "kickReleaseMedia: USAGE_MEDIA-Stack aufgemischt") Log.i(TAG, "kickReleaseMedia: USAGE_MEDIA-Stack aufgemischt (250ms Pause)")
promise.resolve(true)
} catch (e: Exception) { } catch (e: Exception) {
Log.w(TAG, "kickReleaseMedia failed: ${e.message}") Log.w(TAG, "kickReleaseMedia failed: ${e.message}")
promise.resolve(false)
} }
}.start()
promise.resolve(true)
} }
private fun release() { private fun release() {
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "aria-cockpit", "name": "aria-cockpit",
"version": "0.1.0.5", "version": "0.1.0.6",
"private": true, "private": true,
"scripts": { "scripts": {
"android": "react-native run-android", "android": "react-native run-android",