如何将Android手机作为蓝牙耳机?

时间:2010-07-02 05:36:00

标签: android bluetooth headset

是的,我知道Android已经实现了蓝牙耳机 配置文件,但它位于音频网关角色中,而不是HeadSet角色。

我想要做的是在Android手机上开发应用程序 将充当蓝牙耳机,因此它可以连接到我的笔记本电脑 蓝牙。 当我试着打电话给某人时,我可以用我的手机拨打他的电话 应用程序将通过蓝牙将语音转发到我的笔记本电脑, 在笔记本电脑上运行的另一个应用程序将获取语音数据 并将它们转发到Skype或GTalk或其他一些VoIP程序。

换句话说,如何在耳机中实现耳机配置文件 Android手机上的角色?提前谢谢!

2 个答案:

答案 0 :(得分:4)

从android方面来说,我认为最好的解决方案是打开计算机中服务的连接:

URL url = new URL("http://192.186.0.1/path/to/service");
URLConnection connection = url.openConnection();

将其作为OutputStream获取:

OutputStream out = new BufferedStream(connection.getOutputStream());

然后使用AudioRecord发送记录的数据:

public static final int DEFAULT_SAMPLE_RATE = 8000; 
private static final int DEFAULT_BUFFER_SIZE = 4096; 
private static final int CALLBACK_PERIOD = 4000;

AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, 
            DEFAULT_SAMPLE_RATE, AudioFormat.CHANNEL_CONFIGURATION_DEFAULT, 
            AudioFormat.ENCODING_DEFAULT, DEFAULT_BUFFER_SIZE);
recorder.setPositionNotificationPeriod(CALLBACK_PERIOD);

int bytesRead = 0;
ByteBuffer buffer = ByteBuffer.allocateDirect(DEFAULT_BUFFER_SIZE);
while ((bytesRead = recorder.read(buffer, DEFAULT_BUFFER_SIZE)) > 0) {
    out.write(buffer.array(), 0, bytesRead);
}

所有这一切都应该在一个单独的线程上完成,以避免崩溃应用程序和一个机制来处理录制停止或连接丢失。此外,我很确定它应该可以在wifi上工作,虽然我不确定它是否与蓝牙相同(尽管大多数设备都有BT现在有wifi天,你可以获得更多带宽)

我没有测试过这段代码,所以我不能100%肯定它会起作用。

接下来的事情将是在机器上将音频传输到欲望的应用程序,但这超出了我的经验。我想你将不得不做一个虚拟驱动程序或类似的东西。 还必须对从桌面应用程序发送到手机的音频执行反向机制(我对该部分非常感兴趣,因为它也会制作一个很好的无线耳机来观看电影)。

这是我的2美分;我很想知道它是否有效。 ;)

答案 1 :(得分:1)

我不知道我是否理解了真正的问题或你的主要目标......但是我发布了here如何通过蓝牙在Android中接收和发送声音。

我希望能帮到你......