该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
就是我做的是一个可以切换手机听筒模式和扬声器模式的APP,在其他手机上可以正常切换,但是在华为手机上切换失败,是什么原因?
是不是华为手机又其他方式?希望给出解答
代码如下:
// 切换模式,听筒和免提
private void setSpeakerphoneOn(boolean on) {
try {
// 播放音频流类型
setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
// 获得当前类
@SuppressWarnings("rawtypes")
Class audioSystemClass = Class.forName("android.media.AudioSystem");
// 得到这个方法
@SuppressWarnings("unchecked")
Method setForceUse = audioSystemClass.getMethod("setForceUse",
int.class, int.class);
if (on) {// 免提的,打开扬声器
audioManager.setMicrophoneMute(false);
audioManager.setSpeakerphoneOn(true);// 打开扬声器
audioManager.setMode(AudioManager.MODE_NORMAL);
play_voice.setImageResource(R.drawable.talking_mic_press);
// setForceUse.invoke(null, 1, 1);
// 先关闭手机发送给板子语音的线程
stopSpeak();
} else {// 听筒
audioManager.setSpeakerphoneOn(false);
audioManager.setMode(AudioManager.MODE_NORMAL);
setForceUse.invoke(null, 0, 0);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
play_voice.setImageResource(R.drawable.talking_mic_normal);
// 可以自由说话,也可以接受板子的语音
startSpeak();
}
play_voice.setClickable(true);
} catch (Exception e) {
e.printStackTrace();
}
}