Add global microphone mute key for keyboard
This change will enable the "mic mute" key on keyboards to globally mute the microphone using the SensorManager, which has UI implemented in multiple places (quick shortcuts, privacy center, settings...). Test: manual Bug: 237355207 Signed-off-by: LiZhihong <lizh52@lenovo.corp-partner.google.com> Signed-off-by: DingYong <dingyong2@lenovo.corp-partner.google.com> Change-Id: I492e501503b0ab9f56e1fa84fcc77a8c798bcb83
This commit is contained in:
@@ -1975,7 +1975,6 @@ public class KeyEvent extends InputEvent implements Parcelable {
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY:
|
||||
case KeyEvent.KEYCODE_MEDIA_PAUSE:
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
|
||||
case KeyEvent.KEYCODE_MUTE:
|
||||
case KeyEvent.KEYCODE_HEADSETHOOK:
|
||||
case KeyEvent.KEYCODE_MEDIA_STOP:
|
||||
case KeyEvent.KEYCODE_MEDIA_NEXT:
|
||||
|
||||
@@ -97,7 +97,6 @@ public class PhoneFallbackEventHandler implements FallbackEventHandler {
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY:
|
||||
case KeyEvent.KEYCODE_MEDIA_PAUSE:
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
|
||||
case KeyEvent.KEYCODE_MUTE:
|
||||
case KeyEvent.KEYCODE_HEADSETHOOK:
|
||||
case KeyEvent.KEYCODE_MEDIA_STOP:
|
||||
case KeyEvent.KEYCODE_MEDIA_NEXT:
|
||||
@@ -224,7 +223,6 @@ public class PhoneFallbackEventHandler implements FallbackEventHandler {
|
||||
}
|
||||
|
||||
case KeyEvent.KEYCODE_HEADSETHOOK:
|
||||
case KeyEvent.KEYCODE_MUTE:
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY:
|
||||
case KeyEvent.KEYCODE_MEDIA_PAUSE:
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
|
||||
|
||||
@@ -117,6 +117,7 @@ import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.database.ContentObserver;
|
||||
import android.graphics.Rect;
|
||||
import android.hardware.SensorPrivacyManager;
|
||||
import android.hardware.display.DisplayManager;
|
||||
import android.hardware.display.DisplayManagerInternal;
|
||||
import android.hardware.hdmi.HdmiAudioSystemClient;
|
||||
@@ -395,6 +396,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
IStatusBarService mStatusBarService;
|
||||
StatusBarManagerInternal mStatusBarManagerInternal;
|
||||
AudioManagerInternal mAudioManagerInternal;
|
||||
SensorPrivacyManager mSensorPrivacyManager;
|
||||
DisplayManager mDisplayManager;
|
||||
DisplayManagerInternal mDisplayManagerInternal;
|
||||
boolean mPreloadedRecentApps;
|
||||
@@ -1882,6 +1884,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
mDreamManagerInternal = LocalServices.getService(DreamManagerInternal.class);
|
||||
mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class);
|
||||
mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
|
||||
mSensorPrivacyManager = mContext.getSystemService(SensorPrivacyManager.class);
|
||||
mDisplayManager = mContext.getSystemService(DisplayManager.class);
|
||||
mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class);
|
||||
mPackageManager = mContext.getPackageManager();
|
||||
@@ -3019,6 +3022,18 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
return key_not_consumed;
|
||||
}
|
||||
|
||||
private void toggleMicrophoneMuteFromKey() {
|
||||
if (mSensorPrivacyManager.supportsSensorToggle(
|
||||
SensorPrivacyManager.TOGGLE_TYPE_SOFTWARE,
|
||||
SensorPrivacyManager.Sensors.MICROPHONE)) {
|
||||
boolean isEnabled = mSensorPrivacyManager.isSensorPrivacyEnabled(
|
||||
SensorPrivacyManager.TOGGLE_TYPE_SOFTWARE,
|
||||
SensorPrivacyManager.Sensors.MICROPHONE);
|
||||
mSensorPrivacyManager.setSensorPrivacy(SensorPrivacyManager.Sensors.MICROPHONE,
|
||||
!isEnabled);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TV only: recognizes a remote control gesture for capturing a bug report.
|
||||
*/
|
||||
@@ -3954,11 +3969,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
break;
|
||||
}
|
||||
|
||||
case KeyEvent.KEYCODE_MUTE:
|
||||
result &= ~ACTION_PASS_TO_USER;
|
||||
if (down && event.getRepeatCount() == 0) {
|
||||
toggleMicrophoneMuteFromKey();
|
||||
}
|
||||
break;
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY:
|
||||
case KeyEvent.KEYCODE_MEDIA_PAUSE:
|
||||
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
|
||||
case KeyEvent.KEYCODE_HEADSETHOOK:
|
||||
case KeyEvent.KEYCODE_MUTE:
|
||||
case KeyEvent.KEYCODE_MEDIA_STOP:
|
||||
case KeyEvent.KEYCODE_MEDIA_NEXT:
|
||||
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
|
||||
|
||||
Reference in New Issue
Block a user