2012-12-03 257 views
1

我有一个名为scan的按钮,它扫描可用的蓝牙设备并制作列表视图。 当我按下该设备列表中的某个设备时,'调用ConnectThread(BluetoothDevice设备),但如何将单击的设备地址发送到this.'m使用下面的代码。在这能够获取名称,但如何获得地址。将设备地址发送到Android中的ConnectThread(蓝牙设备设备) - 蓝牙

ListView lv = getListView(); 

     // listening to single list item on click 
     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

       mBluetoothAdapter.cancelDiscovery(); 
      // Toast.makeText(getApplicationContext(), "clicked device", 2).show(); 
       String address = mArrayAdapter.get(position); 
       device = mBluetoothAdapter.getRemoteDevice(address); 

       new ConnectThread(device); 
      } 
     }); 

ConnectThread代码:

private class ConnectThread extends Thread { 
    private final BluetoothSocket mmSocket; 
    private final BluetoothDevice mmDevice; 

    public ConnectThread(BluetoothDevice device) { 
     // Use a temporary object that is later assigned to mmSocket, 
     // because mmSocket is final 
     BluetoothSocket tmp = null; 
     mmDevice = device; 
     Toast.makeText(getApplicationContext(), "device: " + device, 2).show(); 
     // Get a BluetoothSocket to connect with the given BluetoothDevice 
     try { 
      // MY_UUID is the app's UUID string, also used by the server code 
      tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 
     } catch (IOException e) { } 
     mmSocket = tmp; 
    } 
    public void run() { 
     // Cancel discovery because it will slow down the connection 
     mBluetoothAdapter.cancelDiscovery(); 

     try { 
      // Connect the device through the socket. This will block 
      // until it succeeds or throws an exception 
      mmSocket.connect(); 
     } catch (IOException connectException) { 
      // Unable to connect; close the socket and get out 
      try { 
       mmSocket.close(); 
      } catch (IOException closeException) { } 
      return; 
     } 

     // Do work to manage the connection (in a separate thread) 
     // manageConnectedSocket(mmSocket); 
    } 

    /** Will cancel an in-progress connection, and close the socket */ 
    public void cancel() { 
     try { 
      mmSocket.close(); 
     } catch (IOException e) { } 
    } 
} 

回答

1

我找到答案了这个问题。当我在列表视图中单击项目时使用下面的代码。

 ListView lv = getListView(); 

     // listening to single list item on click 
     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

       mBluetoothAdapter.cancelDiscovery(); 

       String info = mArrayAdapter.get(position); 
       String address = info.substring(info.length() - 17); 
       device = mBluetoothAdapter.getRemoteDevice(address); 
       new ConnectThread(device); 

      } 
     });