我正在尝试为Android(HF方面)实现Handsfree蓝牙配置文件。我通过rfcomm成功连接,它允许我向/从AG发送/接收AT命令。但是语音怎么样?在文档中,我已阅读有关同步连接的信息,并尝试接受来自SCO套接字的连接:
int sock = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_SCO)
但没有任何反应。
这是一个正确类型的套接字,还是我需要与SCO不同的东西?
答案 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);