使用蓝牙和Android控制远程

时间:2014-06-10 13:51:04

标签: android bluetooth a2dp avrcp

我正在开发一款适用于蓝牙遥控器的小型机器人应用程序(不,不是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;
                }
            }

0 个答案:

没有答案