买了一个单声道的蓝牙耳机,没想到只能打电话,不能听音乐。但当打电话时再播放音乐,声音就从蓝牙耳机中出来,马上想到能不能编写一个控制音频输出的位置?上网搜索了一下,有二款软件可以做到:super mono free trial 和 superMonoFroyoFreeTrial, 说是免费,但使用有限制, 一怒之下,把这二款软件破解了,实现代码如下:
输出到蓝牙耳机:
AudioManager mAm = ( AudioManager ) getSystemService(Context.AUDIO_SERVICE);
mAm.setMode(AudioManager.MODE_IN_CALL);
mAm.setBluetoothScoOn(true);
mAm.startBluetoothSco();
输出到手机:
AudioManager mAm = ( AudioManager ) getSystemService(Context.AUDIO_SERVICE);
mAm.setMode(AudioManager.MODE_NORMAL);
mAm.setBluetoothScoOn(false);
mAm.stopBluetoothSco();
在AndroidManifest.xml添加能力:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
几行代码搞掂。输出到蓝牙耳机可能会有些延时。
设置音量按控制源
setVolumeControlStream(AudioManager.STREAM_MUSIC);