我有一个非A2DP单耳BT耳机(Plantronics 510),并希望使用它与我的Android HTC Magic听低质量的音频,如播客/有声书。
经过多次谷歌搜索,我发现只有电话音频可以路由到非A2DP蓝牙耳机。 (我想知道,如果你已经找到一个现成的解决方案来路由各种音频到非A2DP蓝牙耳机)
所以我想,无论如何,以编程方式,我可以将音频传输到携带电话通话音频的流。这样我会愚弄手机携带我的mp3音频到我的蓝牙耳机。我写了以下简单的代码。
import android.content.*;
import android.app.Activity;
import android.os.Bundle;
import android.media.*;
import java.io.*;
import android.util.Log;
public class BTAudioActivity extends Activity
{
private static final String TAG = "BTAudioActivity";
private MediaPlayer mPlayer = null;
private AudioManager amanager = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
amanager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
amanager.setBluetoothScoOn(true);
amanager.setMode(AudioManager.MODE_IN_CALL);
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(new FileInputStream(
"/sdcard/sample.mp3").getFD());
mPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
mPlayer.prepare();
mPlayer.start();
} catch(Exception e) {
Log.e(TAG, e.toString());
}
}
@Override
public void onDestroy()
{
mPlayer.stop();
amanager.setMode(AudioManager.MODE_NORMAL);
amanager.setBluetoothScoOn(false);
super.onDestroy();
}
}
正如你可以看到,我尝试各种方法的组合,我认为会愚弄手机相信我的音频是一个电话:
>使用MediaPlayer的setAudioStreamType(STREAM_VOICE_CALL)
>使用AudioManager的setBluetoothScoOn(true)
>使用AudioManager的setMode(MODE_IN_CALL)
但以上没有一个工作。如果我在上面的代码中删除AudioManager调用,音频从扬声器播放,如果我如上所示更换它们,音频停止来自扬声器,但它不通过蓝牙耳机。所以这可能是部分成功。
我已经检查,蓝牙耳机工作正常与电话。
一定有一个原因Android不支持这个。但我不能放弃的感觉,是不可能通过编程方式重新路由音频。有任何想法吗?
P.S。以上代码需要以下权限
< uses-permission android:name =“android.permission.MODIFY_AUDIO_SETTINGS”/>
如果觉得《android音频切换到蓝牙耳机 在Android上将音频路由到蓝牙耳机(非A2DP)》对你有帮助,请点赞、收藏,并留下你的观点哦!