如何隐藏耳机图标?
How to hide headset icon?
如果插入耳机,状态栏中会出现耳机图标。
如何隐藏状态栏中的耳机图标?我知道这在应用程序 https://play.google.com/store/apps/details?id=com.ligq.ikey&hl=ru
中是可能的
AudioManager 有私有方法,可以使用反射访问。
AudioManager manager = (AudioManager) aContext.getSystemService(Context.AUDIO_SERVICE);
try {
int deviceType = AudioSystem.DEVICE_OUT_WIRED_HEADSET;
// turn off headset
int state = 0;
Class<?> cl = Class.forName("android.media.AudioManager");
Method method = cl.getMethod("setWiredDeviceConnectionState", new Class[] {
Integer.TYPE, Integer.TYPE, String.class });
method.invoke(manager, new Object[] { deviceType, state, "device" });
} catch (Exception e) {
iLog.error("disableHeadset, exception {}", ExceptionUtils.getStackTrace(e));
}
所有语音都传递到耳机而不是耳机
我稍微修改了上面的内容以使其工作。它的效果非常好,我非常感谢 user2930077 的帮助。我真正需要添加到代码中的唯一一件事是更改设备类型,我输入了文字值。 4 = 带麦克风的耳机,8 = 不带麦克风的耳机。第二个值是 on/off。如果你想要它,将它设置为 1,如果你想要它关闭,则设置为 0。
我也会附上我是如何让它工作的,我希望它能对以后的人有所帮助。再次感谢 user2930077!!!!
AudioManager manager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
Class<?> cl = null;
try {
cl = Class.forName("android.media.AudioManager");
setDeviceConnectionState = cl.getMethod("setWiredDeviceConnectionState", new Class[] {
Integer.TYPE, Integer.TYPE, String.class });
//4 is for the headset with microphone 8 is for headset without microphone
//0 is for off and 1 is for on
setDeviceConnectionState.invoke(manager, new Object[] { 4 , 0, "device" });
setDeviceConnectionState.invoke(manager, new Object[] { 8 , 0, "device" });
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
如果插入耳机,状态栏中会出现耳机图标。
如何隐藏状态栏中的耳机图标?我知道这在应用程序 https://play.google.com/store/apps/details?id=com.ligq.ikey&hl=ru
中是可能的AudioManager 有私有方法,可以使用反射访问。
AudioManager manager = (AudioManager) aContext.getSystemService(Context.AUDIO_SERVICE);
try {
int deviceType = AudioSystem.DEVICE_OUT_WIRED_HEADSET;
// turn off headset
int state = 0;
Class<?> cl = Class.forName("android.media.AudioManager");
Method method = cl.getMethod("setWiredDeviceConnectionState", new Class[] {
Integer.TYPE, Integer.TYPE, String.class });
method.invoke(manager, new Object[] { deviceType, state, "device" });
} catch (Exception e) {
iLog.error("disableHeadset, exception {}", ExceptionUtils.getStackTrace(e));
}
所有语音都传递到耳机而不是耳机
我稍微修改了上面的内容以使其工作。它的效果非常好,我非常感谢 user2930077 的帮助。我真正需要添加到代码中的唯一一件事是更改设备类型,我输入了文字值。 4 = 带麦克风的耳机,8 = 不带麦克风的耳机。第二个值是 on/off。如果你想要它,将它设置为 1,如果你想要它关闭,则设置为 0。
我也会附上我是如何让它工作的,我希望它能对以后的人有所帮助。再次感谢 user2930077!!!!
AudioManager manager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
Class<?> cl = null;
try {
cl = Class.forName("android.media.AudioManager");
setDeviceConnectionState = cl.getMethod("setWiredDeviceConnectionState", new Class[] {
Integer.TYPE, Integer.TYPE, String.class });
//4 is for the headset with microphone 8 is for headset without microphone
//0 is for off and 1 is for on
setDeviceConnectionState.invoke(manager, new Object[] { 4 , 0, "device" });
setDeviceConnectionState.invoke(manager, new Object[] { 8 , 0, "device" });
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}