首页 文章

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

提问于
浏览
21

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

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

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

2 回答

  • 1

    从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美分;我很想知道它是否有效 . ;)

  • 4

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

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

相关问题