android: simplify the creation of AudioManager
Do so on the main thread at startup and pass it along.
This commit is contained in:
parent
05a8591110
commit
025e2b1ecb
|
@ -108,7 +108,8 @@ class AudioDeviceHandlerConnectionService implements
|
||||||
*/
|
*/
|
||||||
private int supportedRouteMask = -1;
|
private int supportedRouteMask = -1;
|
||||||
|
|
||||||
public AudioDeviceHandlerConnectionService() {
|
public AudioDeviceHandlerConnectionService(AudioManager audioManager) {
|
||||||
|
this.audioManager = audioManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -136,11 +137,10 @@ class AudioDeviceHandlerConnectionService implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(Context context, AudioModeModule audioModeModule) {
|
public void start(AudioModeModule audioModeModule) {
|
||||||
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
|
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
|
||||||
|
|
||||||
module = audioModeModule;
|
module = audioModeModule;
|
||||||
audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
|
|
||||||
|
|
||||||
RNConnectionService rcs = ReactInstanceManagerHolder.getNativeModule(RNConnectionService.class);
|
RNConnectionService rcs = ReactInstanceManagerHolder.getNativeModule(RNConnectionService.class);
|
||||||
if (rcs != null) {
|
if (rcs != null) {
|
||||||
|
|
|
@ -117,7 +117,8 @@ class AudioDeviceHandlerGeneric implements
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public AudioDeviceHandlerGeneric() {
|
public AudioDeviceHandlerGeneric(AudioManager audioManager) {
|
||||||
|
this.audioManager = audioManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -178,11 +179,10 @@ class AudioDeviceHandlerGeneric implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(Context context, AudioModeModule audioModeModule) {
|
public void start(AudioModeModule audioModeModule) {
|
||||||
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
|
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
|
||||||
|
|
||||||
module = audioModeModule;
|
module = audioModeModule;
|
||||||
audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
|
|
||||||
|
|
||||||
// Setup runtime device change detection.
|
// Setup runtime device change detection.
|
||||||
audioManager.registerAudioDeviceCallback(audioDeviceCallback, null);
|
audioManager.registerAudioDeviceCallback(audioDeviceCallback, null);
|
||||||
|
|
|
@ -59,7 +59,8 @@ class AudioDeviceHandlerLegacy implements
|
||||||
*/
|
*/
|
||||||
private BluetoothHeadsetMonitor bluetoothHeadsetMonitor;
|
private BluetoothHeadsetMonitor bluetoothHeadsetMonitor;
|
||||||
|
|
||||||
public AudioDeviceHandlerLegacy() {
|
public AudioDeviceHandlerLegacy(AudioManager audioManager) {
|
||||||
|
this.audioManager = audioManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -155,11 +156,11 @@ class AudioDeviceHandlerLegacy implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(Context context, AudioModeModule audioModeModule) {
|
public void start(AudioModeModule audioModeModule) {
|
||||||
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
|
JitsiMeetLogger.i("Using " + TAG + " as the audio device handler");
|
||||||
|
|
||||||
module = audioModeModule;
|
module = audioModeModule;
|
||||||
audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
|
Context context = module.getContext();
|
||||||
|
|
||||||
// Setup runtime device change detection.
|
// Setup runtime device change detection.
|
||||||
//
|
//
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package org.jitsi.meet.sdk;
|
package org.jitsi.meet.sdk;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.media.AudioManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
|
||||||
import com.facebook.react.bridge.Arguments;
|
import com.facebook.react.bridge.Arguments;
|
||||||
|
@ -85,6 +86,12 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||||
return supportsConnectionService && useConnectionService_;
|
return supportsConnectionService && useConnectionService_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link AudioManager} instance used to interact with the Android audio
|
||||||
|
* subsystem.
|
||||||
|
*/
|
||||||
|
private AudioManager audioManager;
|
||||||
|
|
||||||
private AudioDeviceHandlerInterface audioDeviceHandler;
|
private AudioDeviceHandlerInterface audioDeviceHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -136,6 +143,8 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||||
*/
|
*/
|
||||||
public AudioModeModule(ReactApplicationContext reactContext) {
|
public AudioModeModule(ReactApplicationContext reactContext) {
|
||||||
super(reactContext);
|
super(reactContext);
|
||||||
|
|
||||||
|
audioManager = (AudioManager)reactContext.getSystemService(Context.AUDIO_SERVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -212,14 +221,14 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (useConnectionService()) {
|
if (useConnectionService()) {
|
||||||
audioDeviceHandler = new AudioDeviceHandlerConnectionService();
|
audioDeviceHandler = new AudioDeviceHandlerConnectionService(audioManager);
|
||||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
audioDeviceHandler = new AudioDeviceHandlerGeneric();
|
audioDeviceHandler = new AudioDeviceHandlerGeneric(audioManager);
|
||||||
} else {
|
} else {
|
||||||
audioDeviceHandler = new AudioDeviceHandlerLegacy();
|
audioDeviceHandler = new AudioDeviceHandlerLegacy(audioManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
audioDeviceHandler.start(getReactApplicationContext(), this);
|
audioDeviceHandler.start(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -418,16 +427,24 @@ class AudioModeModule extends ReactContextBaseJavaModule {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Needed on the legacy handler...
|
||||||
|
*
|
||||||
|
* @return Context for the application.
|
||||||
|
*/
|
||||||
|
Context getContext() {
|
||||||
|
return getReactApplicationContext();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface for the modules implementing the actual audio device management.
|
* Interface for the modules implementing the actual audio device management.
|
||||||
*/
|
*/
|
||||||
interface AudioDeviceHandlerInterface {
|
interface AudioDeviceHandlerInterface {
|
||||||
/**
|
/**
|
||||||
* Start detecting audio device changes.
|
* Start detecting audio device changes.
|
||||||
* @param context Android {@link Context} where detection should take place.
|
|
||||||
* @param audioModeModule Reference to the main {@link AudioModeModule}.
|
* @param audioModeModule Reference to the main {@link AudioModeModule}.
|
||||||
*/
|
*/
|
||||||
void start(Context context, AudioModeModule audioModeModule);
|
void start(AudioModeModule audioModeModule);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stop audio device detection.
|
* Stop audio device detection.
|
||||||
|
|
Loading…
Reference in New Issue