无法在免提和Android mobile之间建立音频通信

无法在免提和Android mobile之间建立音频通信,android,mobile,audio,bluetooth,Android,Mobile,Audio,Bluetooth,我的要求是开发一个应用程序,使用免提模式通过蓝牙[配对]从免提设备接收呼叫、断开呼叫和拨打android mobile的号码 注意:我正在尝试将一部手机设为免提手机,另一部手机我正在尝试通过蓝牙配对,如果来电是通过手机,我应该能够接收免提手机的通话。这可能吗 在抓取n个帖子后,我能够将AT命令从免提发送到Android mobile。所以,如果我在安卓手机上接到电话,我可以断开通话,也可以通过在免提设备上运行以下代码来拨打电话 m_oBluetoothSocket = btDevice.crea

我的要求是开发一个应用程序,使用免提模式通过蓝牙[配对]从免提设备接收呼叫、断开呼叫和拨打android mobile的号码

注意:我正在尝试将一部手机设为免提手机,另一部手机我正在尝试通过蓝牙配对,如果来电是通过手机,我应该能够接收免提手机的通话。这可能吗

在抓取n个帖子后,我能够将AT命令从免提发送到Android mobile。所以,如果我在安卓手机上接到电话,我可以断开通话,也可以通过在免提设备上运行以下代码来拨打电话

m_oBluetoothSocket = btDevice.createRfcommSocketToServiceRecord(MY_UUID);
Log.i("Not Connected +:  ", "Socket Connected");

mmInStream = m_oBluetoothSocket.getInputStream();
mmOutStream = m_oBluetoothSocket.getOutputStream();

// AT command to receive call
 mmOutStream.write("ATA\r".getBytes());
    dis = new DataInputStream(mmInStream);
    av = dis.available();
    if (av != 0) {
        byte[] b = new byte[av];
        dis.read(b);
        System.out.println(new String(b) + "Recieved form modem");
}
要断开呼叫,我将
ATA\r
替换为
AT+CHUP
命令

我面临的问题是,在接到电话后,我无法说话或听到,也无法与手机进行音频通信

我按照这个指南实现了这一点,但在我接到免提电话后,我无法进行音频通信

在上述文件中,我遵循了6.2.5.1。使用以下代码接听来自HF(无带内振铃)部分的来电

m_oBluetoothSocket = btDevice.createRfcommSocketToServiceRecord(MY_UUID);
Log.i("Not Connected +:  ", "Socket Connected");

mmInStream = m_oBluetoothSocket.getInputStream();
mmOutStream = m_oBluetoothSocket.getOutputStream();

 mmOutStream.write("AT+CIND=?\r".getBytes());
 DataInputStream dis = new DataInputStream(mmInStream);
    int av = dis.available();
    if (av != 0) {
        byte[] b = new byte[av];
        dis.read(b);
        System.out.println(new String(b) + "CIND=? Recieved form modem");
 }

mmOutStream.write("AT+CIND?\r".getBytes());
dis = new DataInputStream(mmInStream);
av = dis.available();
if (av != 0) {
    byte[] b = new byte[av];
    dis.read(b);
    System.out.println(new String(b)
            + "CIND Recieved form modem");
}

mmOutStream.write("AT+CMER\r".getBytes());
dis = new DataInputStream(mmInStream);
av = dis.available();
if (av != 0) {
    byte[] b = new byte[av];
    dis.read(b);
    System.out.println(new String(b) + "NREC Recieved form modem");
}

mmOutStream.write("AT+NREC=0\r".getBytes());
dis = new DataInputStream(mmInStream);
av = dis.available();
if (av != 0) {
    byte[] b = new byte[av];
    dis.read(b);
    System.out.println(new String(b) + "NREC Recieved form modem");
}

mmOutStream.write("AT+CHLD=?\r".getBytes());
dis = new DataInputStream(mmInStream);
av = dis.available();
if (av != 0) {
    byte[] b = new byte[av];
    dis.read(b);
    System.out.println(new String(b) + "CHLD  Recieved form modem");
}

mmOutStream.write("ATA=?\r".getBytes());
dis = new DataInputStream(mmInStream);
av = dis.available();
if (av != 0) {
    byte[] b = new byte[av];
    dis.read(b);
    System.out.println(new String(b) + "CHLD  Recieved form modem");
}
清单文件中存在权限

<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.BROADCAST_STICKY"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

我能够从安卓手机得到适当的回应,但接到电话后我无法说话和听到


请在这方面帮助我。

您有运行用例时的日志吗?特别是从
AudioPolicyManager
AudioHardware
模块?AudioPolicyManager和AudioHardware需要捕获。。。我不知道。。。。我认为这些不是必需的。正如我上面提到的,我可以接听电话,但若我用耳机通话,被叫人就听不见。。。。当我接到电话时,我看到一个蓝牙耳机图标,我也启用了它。。。但我仍然不能说话[我指的是流音频]……你所说的“需要捕获”是什么意思?默认情况下,我的三星手机会启用这些日志。使用这些日志,您应该能够看到正在做出的语音呼叫路由决策。我错过了需求的主要部分。我正在尝试使一部手机成为免提手机,而另一部手机我正在尝试通过蓝牙配对,如果打到手机,我应该能够从免提手机接收和通话。这有可能吗???如果另一部手机能够作为实现免提模式的BT配件,那么它应该可以工作(我不知道是否有可能让一部手机做到这一点)。否则我就怀疑了。Android应用程序无法获取一些音频数据并将其注入语音通话的上行线路。