为android实现自己的蓝牙配置文件

时间:2011-10-05 05:40:14

标签: android sockets bluetooth

我正在尝试为Android(HF方面)实现Handsfree蓝牙配置文件。我通过rfcomm成功连接,它允许我向/从AG发送/接收AT命令。但是语音怎么样?在文档中,我已阅读有关同步连接的信息,并尝试接受来自SCO套接字的连接:

int sock = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_SCO)

但没有任何反应。

这是一个正确类型的套接字,还是我需要与SCO不同的东西?

1 个答案:

答案 0 :(得分:0)

您可以从位于ScoSocket.java的课程frameworks/base/core/java/android/bluetooth中获取灵感。您将看到它调用本机函数而不是socket(AF_BLUETOOTH...)。正如Phone应用程序所使用的那样,您可以依赖它。

/** Connect this SCO socket to the given BT address.
 *  Does not block.
 */
public synchronized boolean connect(String address, String name) {
    if (DBG) log("connect() " + this);
    if (mState != STATE_READY) {
        if (DBG) log("connect(): Bad state");
        return false;
    }
    acquireWakeLock();
    if (connectNative(address, name)) {
        mState = STATE_CONNECTING;
        return true;
    } else {
        mState = STATE_CLOSED;
        releaseWakeLockNow();
        return false;
    }
}
private native boolean connectNative(String address, String name);