我正在使用AudioTrack播放通过UDP套接字收到的声音。我和声音一起发出很多噪音,所以我决定使用AudioManager。但是AudioManager会将声音路由更改为超出应用程序的范围。以下是我正在使用的代码。
m_amAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
m_amAudioManager.setMode(AudioManager.MODE_IN_CALL);
m_amAudioManager.setSpeakerphoneOn(false);
这段代码的问题在于,当我关闭应用程序并启动音乐播放器时,声音来自前置扬声器而不是后置扬声器,我不能以某种方式改变它。 要解决此问题,我决定在关闭应用时添加以下行。
m_amAudioManager.setSpeakerphoneOn(true);
但是这条线问题是当我接到一个电话(正常通话)时,默认情况下扬声器开启。我真的需要帮助。
答案 0 :(得分:13)
首先,您需要在清单中声明用户权限MODIFY_AUDIO_SETTINGS以更改AudioManager设置。
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
在更改任何设置之前,您必须保存当前的AudioManager设置!
oldAudioMode = audioManager.getMode();
oldRingerMode = audioManager.getRingerMode();
isSpeakerPhoneOn = audioManager.isSpeakerphoneOn();
应用音频设置(示例)
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(true);
然后在完成后,恢复设置
audioManager.setSpeakerphoneOn(isSpeakerPhoneOn);
audioManager.setMode(oldAudioMode);
audioManager.setRingerMode(oldRingerMode);
答案 1 :(得分:1)
关闭应用时设置此项。
m_amAudioManager.setMode(AudioManager.MODE_NORMAL);