mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-03-01 14:16:49 +00:00
More intelligent default behavior with speakerphone and wired headset
When video is enabled, speakerphone is now enabled unless there's a wired headset. If speakerphone is enabled and a wired headset gets plugged in, speakerphone is disabled. If video is enabled and a wired headset is removed, speakerphone is enabled. Fixes #6153 // FREEBIE
This commit is contained in:
@@ -46,6 +46,7 @@ import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.service.MessageRetrievalService;
|
||||
import org.thoughtcrime.securesms.service.WebRtcCallService;
|
||||
import org.thoughtcrime.securesms.util.ServiceUtil;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
import org.whispersystems.libsignal.IdentityKey;
|
||||
@@ -91,7 +92,9 @@ public class WebRtcCallActivity extends Activity {
|
||||
if (!networkAccess.isCensored(this)) MessageRetrievalService.registerActivityStarted(this);
|
||||
initializeScreenshotSecurity();
|
||||
EventBus.getDefault().registerSticky(this);
|
||||
|
||||
registerBluetoothReceiver();
|
||||
registerWiredHeadsetReceiver();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -113,6 +116,7 @@ public class WebRtcCallActivity extends Activity {
|
||||
if (!networkAccess.isCensored(this)) MessageRetrievalService.registerActivityStopped(this);
|
||||
EventBus.getDefault().unregister(this);
|
||||
unregisterReceiver(bluetoothStateReceiver);
|
||||
unregisterReceiver(wiredHeadsetStateReceiver);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -149,7 +153,12 @@ public class WebRtcCallActivity extends Activity {
|
||||
}
|
||||
|
||||
private void handleSetMuteVideo(boolean muted) {
|
||||
// callScreen.setLocalVideoEnabled(!muted);
|
||||
AudioManager audioManager = ServiceUtil.getAudioManager(this);
|
||||
|
||||
if (!muted && !audioManager.isWiredHeadsetOn() && !audioManager.isBluetoothScoOn()) {
|
||||
AudioUtils.enableSpeakerphoneRouting(WebRtcCallActivity.this);
|
||||
callScreen.notifyAudioRoutingChange();
|
||||
}
|
||||
|
||||
Intent intent = new Intent(this, WebRtcCallService.class);
|
||||
intent.setAction(WebRtcCallService.ACTION_SET_MUTE_VIDEO);
|
||||
@@ -352,6 +361,27 @@ public class WebRtcCallActivity extends Activity {
|
||||
callScreen.notifyBluetoothChange();
|
||||
}
|
||||
|
||||
private void registerWiredHeadsetReceiver() {
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(AudioUtils.getWiredHeadsetUpdateAction());
|
||||
wiredHeadsetStateReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
int state = intent.getIntExtra("state", -1);
|
||||
|
||||
if (state == 0 && callScreen.isVideoEnabled()) {
|
||||
AudioUtils.enableSpeakerphoneRouting(WebRtcCallActivity.this);
|
||||
callScreen.notifyAudioRoutingChange();
|
||||
} else if (state == 1) {
|
||||
AudioUtils.enableDefaultRouting(WebRtcCallActivity.this);
|
||||
callScreen.notifyAudioRoutingChange();
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
registerReceiver(wiredHeadsetStateReceiver, filter);
|
||||
}
|
||||
|
||||
private class AudioButtonListener implements WebRtcCallControls.AudioButtonListener {
|
||||
@Override
|
||||
public void onAudioChange(AudioUtils.AudioMode mode) {
|
||||
|
||||
Reference in New Issue
Block a user