我试图从列表视图连接到已配对的蓝牙设备,但是我似乎无法正确使用它。我的代码看起来不错,但是当我在手机上运行它时它什么也没做。任何帮助将不胜感激。谢谢。

import java.io.IOError;
import java.io.IOException;
import java.io.InvalidObjectException;
import java.util.Set;
import java.util.UUID;
import android.app.ListActivity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class Devices extends ListActivity {

     private ArrayAdapter<String> btArrayAdapter;
     private BluetoothAdapter btAdapter;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         btArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
         btAdapter = BluetoothAdapter.getDefaultAdapter();
         getPairedDevices();
     }


    private void getPairedDevices() {

Set<BluetoothDevice> pairedDevices = btAdapter.getBondedDevices();
if(pairedDevices.size()>0){
    for (BluetoothDevice device :pairedDevices){
        String name = device.getName();
        btArrayAdapter.add(name);
    }
 }

 setListAdapter(btArrayAdapter);
   }

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {

Set<BluetoothDevice> device = btAdapter.getBondedDevices();
//System.out.println(device.getClass());

Thread ConnectThread = new Thread();
ConnectThread.start();


   }

   public class ConnectThread extends Thread{

private final BluetoothSocket mmSocket;
private final BluetoothDevice mmDevice;
private final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

public ConnectThread(BluetoothDevice device){
    BluetoothSocket tmp = null;
    mmDevice = device;

    try{
        tmp = device.createInsecureRfcommSocketToServiceRecord(MY_UUID);
    } catch (IOException e){}
    mmSocket = tmp;
}

public void run(){
    btAdapter.cancelDiscovery();

    try{
        mmSocket.connect();
    }catch (IOException connectException){

        try{
            mmSocket.close();
        }catch (IOException closeException){}
        return;

    }

    //Work to manage connection
}

public void cancel(){
    try{
        mmSocket.close();
    }catch (IOException e){}
}
 }





}

最佳答案

在onCreate()方法中,您需要为ListView设置适配器。



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    btArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
    btAdapter = BluetoothAdapter.getDefaultAdapter();
    setListAdapter(btArrayAdapter);
    getPairedDevices();
}

07-24 19:08