Przeglądaj źródła

fix(android) use modern API for requesting audio focus

master
Saúl Ibarra Corretgé 4 lat temu
rodzic
commit
67002c903a

+ 21
- 2
android/sdk/src/main/java/org/jitsi/meet/sdk/AudioDeviceHandlerGeneric.java Wyświetl plik

16
 
16
 
17
 package org.jitsi.meet.sdk;
17
 package org.jitsi.meet.sdk;
18
 
18
 
19
+import android.media.AudioAttributes;
19
 import android.media.AudioDeviceInfo;
20
 import android.media.AudioDeviceInfo;
21
+import android.media.AudioFocusRequest;
20
 import android.media.AudioManager;
22
 import android.media.AudioManager;
23
+import android.os.Build;
21
 
24
 
22
 import java.util.HashSet;
25
 import java.util.HashSet;
23
 import java.util.Set;
26
 import java.util.Set;
216
         audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
219
         audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
217
         audioManager.setMicrophoneMute(false);
220
         audioManager.setMicrophoneMute(false);
218
 
221
 
219
-        if (audioManager.requestAudioFocus(this, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN)
220
-            == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
222
+        int gotFocus;
223
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
224
+            gotFocus = audioManager.requestAudioFocus(new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
225
+                .setAudioAttributes(
226
+                    new AudioAttributes.Builder()
227
+                        .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
228
+                        .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
229
+                        .build()
230
+                )
231
+                .setAcceptsDelayedFocusGain(true)
232
+                .setOnAudioFocusChangeListener(this)
233
+                .build()
234
+            );
235
+        } else {
236
+            gotFocus = audioManager.requestAudioFocus(this, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN);
237
+        }
238
+
239
+        if (gotFocus == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
221
             JitsiMeetLogger.w(TAG + " Audio focus request failed");
240
             JitsiMeetLogger.w(TAG + " Audio focus request failed");
222
             return false;
241
             return false;
223
         }
242
         }

Ładowanie…
Anuluj
Zapisz