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