2011-09-05 134 views
3

美好的一天,我试图创建一个蓝牙应用程序,我无法连接到另一个Android设备。似乎正在发生的问题是在传出连接createRfcommSocketToServiceRecord(UUID) - 其中我认为UUID是不正确的两个设备。该文件说:有通过蓝牙连接到Android设备的问题UUID

如果您连接到Android等,那么请生成自己独特的UUID。

我的问题是 - 如果其他的Android设备没有安装我的应用程序,我应该如何连接到正确的UUID?我试着简单地使用通用的UUID00001101-0000-1000-8000-00805F9B34FB,但这似乎不能解决问题。

下面是代码示例的一部分:

private static final UUID MY_UUID_SECURE = 
    UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 

private class ConnectThread extends Thread { 
    BluetoothDevice mdevice; 
    BluetoothSocket mclientSocket; 

    //private String mSocketType; 
    private Handler handler; 
    private ProgressDialog dialog; 

    public ConnectThread(BluetoothDevice device) { 
     mdevice = device; 
     BluetoothSocket temp = null; 

     try { 
      System.out.println("making connection to remote device"); 
      temp = mdevice.createRfcommSocketToServiceRecord(MY_UUID_SECURE); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     Log.i(TAG, "Bluetooth Socket" + temp.toString() + "obtained"); 
     mclientSocket = temp; 
    } 

    public synchronized void run() { 
     try { 
      Log.i(TAG, "starting to connect"); 
      mclientSocket.connect(); 
     } catch (IOException e) { 
      Log.e(TAG, "connection Failed"); 

      try { 
       mclientSocket.close(); 
      } catch (IOException e2) { 
       ; // Do nothing. 
      } 
     } 
    } 

    //public void cancel() { 
     //try { 
      // mclientSocket.close(); 
     //} catch (IOException e) { 
      //Log.e(TAG, "close() of connect " + mSocketType + " socket failed", e); 
     //} 
    //} 

注:我还没有实现蓝牙服务器插槽,但我反而想了解如何连接到另一个不具有Android设备我应用程序安装帮助一如既往的赞赏。谢谢。

+0

如何连接通用UUID?你可以发布代码示例吗? – Dyonisos

+0

@Dyonisos,我已经添加了代码示例和我使用的UUID。 – irobotxxx

+0

也许您尝试使用“http:// www.uuidgenerator.com”生成自己的UUID,而不是使用泛型。 – Dyonisos

回答

4

来源:http://developer.android.com/guide/topics/wireless/bluetooth.html

为了创建两个设备上的应用程序之间的连接,你必须实现在服务器端和客户端的机制,因为一个设备必须打开一个服务器套接字,另一个必须启动连接(使用服务器设备的MAC地址来启动连接)。当服务器和客户端在同一个RFCOMM通道上各有一个连接的BluetoothSocket时,它们被认为是相互连接的。此时,每个设备都可以获取输入和输出流,并且可以开始数据传输,这将在“管理连接”一节中讨论。本节介绍如何启动两台设备之间的连接。

服务器设备和客户端设备均以不同的方式获取所需的BluetoothSocket。当接收到连接时,服务器将收到它。当客户端打开一个到服务器的RFCOMM通道时,客户端会收到它。