是否可以通过带耳机的耳机播放音调?
问题描述:
我正在制作一款用于测试手机的Android应用程序,并且我需要能够在插入耳机时通过耳机扬声器播放铃声。当耳机未插入时,我可以通过耳机扬声器播放铃声插入,但不插入插入。有耳机插入时是否有通过耳机播放我的音色?我将包括无耳机工作的代码。是否可以通过带耳机的耳机播放音调?
mp = MediaPlayer.create(getApplicationContext(), R.raw.tone_1ghz_5sec);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
//set to false for through headphones
audioManager.setSpeakerphoneOn(false);
mp.start();
在其他活动中,我使用的音频系统级给力音箱,这是这里的关键?
答
我能够得到它的工作。无论您想通过上面的代码调用它,您都可以通过耳机扬声器或打电话给扬声器。如果您想通过电话扬声器仍然播放它,即使插入了耳机,也可以这样做:
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();
}
可能的重复[如何将默认音频路由到耳机时耳机连接?](http://*.com/questions/38461743/how-to-route-default-audio-to-ear-piece-when-headphones-are-connected) – tar
谢谢你指示我到那个职位。它帮助我解决了我的问题。 – Toby