2013-10-01 3 views
1

Я разрабатываю приложение, где мне нужно подключиться к устройству Bluetooth.Как подключить устройство Bluetooth в Android?

Я могу сканировать устройство Bluetooth и перечислить парную функцию ListView.

Я хочу подключиться к устройству Bluetooth, когда я нажимаю на устройство в 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(); 
       } 

      } 
     }); 

Когда я исполняю APP, он всегда Крас, когда я набираю код следующее:

BluetoothDevice connect_device = mBluetoothAdapter.getRemoteDevice(address); 

Но когда я изменить строку «address» по адресу device.getAddress, он работает нормально.

Я показываю строку address. Это содержимое MAC-адреса bluetoothdevice, но это тип строки.

И тип getRemoteDevice здесь я выбираю строку.

Так что я не понимаю Почему APP всегда сбой, когда я использую строку address ???

ответ

0

MAC-адрес состоит из 17 символов, и вы берете 18.

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

Я не знаю, если этот кусок кода с подстроки информации и т.п. необходимо. Попробуйте просто инициализировать свою строку следующим образом:

String address = device.getAddress; 
Смежные вопросы