我正在开发一款适用于蓝牙遥控器的小型机器人应用程序(不,不是arduino)。机器人有一个蓝牙芯片(BK3221),从我通过他们的UUID知道的东西可以使用A2DP和AVRCP协议(面向音频)。
UUID 1:0000110b-00000-1000-8000-00805f9b34fb
UUID 2:0000110e-00000-1000-8000-00805f9b34fb
我可以通过蓝牙A2DP类的connect()创建移动设备和设备的连接但这就是我拥有的,我有代理和连接的设备,但我不知道如何提供信息。
此外,我尝试使用RFCOMM(应该支持AVRCP)的android函数以基本方式编程连接。机器人是一个封闭的系统,我不知道它是否作为一个服务器或客户端工作(我认为这是因为服务器,因为它接受与前一个案例中的函数“conect()”的conexion)。但是当我调用connect函数时会生成异常BluetoothSocket me:“JSR82连接连接没有创建(失败或中止)”。我看了JSR82,但给了我一种过时的感觉......
如果有人对某事有所了解......谢谢
与BluetoothA2dp的连接代码:
//adaptador == BluetoothAdapter and proxy1 == BluetoothA2dp
protected Boolean doInBackground(BluetoothDevice device) throws RemoteException {
Method connect = getConnectMethod();
final BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener() {
public void onServiceConnected(int profile, BluetoothProfile proxy) {
if (profile == BluetoothProfile.A2DP) {
proxy1 = (BluetoothA2dp) proxy;
}
}
public void onServiceDisconnected(int profile) {
if (profile == BluetoothProfile.A2DP) {
proxy1 = null; }
}};
adaptador.getProfileProxy(getBaseContext(), mProfileListener, BluetoothProfile.A2DP);
try {
connect.setAccessible(true);
connect.invoke(proxy1, device);
Toast.makeText(getBaseContext(),"Connection OK!", Toast.LENGTH_LONG).show();
} catch (Exception ex) {
Toast.makeText(getBaseContext(),"Connection Error"+ex.getMessage(), Toast.LENGTH_LONG).show();
}
private Method getConnectMethod () {
try {
return BluetoothA2dp.class.getDeclaredMethod("connect", BluetoothDevice.class);
} catch (NoSuchMethodException ex) {
Toast.makeText(getBaseContext(),"Method dont appear", Toast.LENGTH_LONG).show();
return null;
}
}