2013-10-01 66 views
1

我正在開發一個應用程序,我必須連接到藍牙設備。如何在Android中連接藍牙設備?

我可以掃描藍牙設備並列出配對ListView。

我想在ListView上單擊設備時連接到藍牙設備。

此java代碼是當我單擊ListView上的設備項目時的操作。

pair_devices_list.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub    

       AlertDialog.Builder deviceInfo = new AlertDialog.Builder(DeviceList.this); 
       mBluetoothAdapter.cancelDiscovery();//stop scan    

       String info = ((TextView) arg1).getText().toString(); 
       String address = info.substring(info.length()-18); 

       BluetoothDevice connect_device = mBluetoothAdapter.getRemoteDevice(address);     

       try { 
        BluetoothSocket socket = connect_device.createRfcommSocketToServiceRecord(my_UUID); 
        socket.connect(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 
     }); 

當我執行的應用程序,它總是當我輸入下面的代碼crase:

BluetoothDevice connect_device = mBluetoothAdapter.getRemoteDevice(address); 

但是,當我改變字符串「address」的地址device.getAddress,它工作正常。

我顯示字符串address。 它的內容是藍牙設備的MAC地址,但它的類型是字符串。

getRemoteDevice這裏我選擇字符串的類型。

所以我不爲什麼APP使用字符串時總是崩潰address ???

回答

0

MAC地址由17個字符,你拿18

String address = info.substring(info.length()-17);
0

我不知道那塊代碼串信息等是必要的。嘗試簡單地初始化您的字符串,如下所示:

String address = device.getAddress;