失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android音频切换到蓝牙耳机 在Android上将音频路由到蓝牙耳机(非A2DP)

android音频切换到蓝牙耳机 在Android上将音频路由到蓝牙耳机(非A2DP)

时间:2020-06-24 20:30:15

相关推荐

android音频切换到蓝牙耳机 在Android上将音频路由到蓝牙耳机(非A2DP)

我有一个非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)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。