我想定期检查蓝牙状态

时间:2014-08-28 00:20:29

标签: android bluetooth

这是我的代码。

我正在尝试将android连接到arduino。 但我想检查蓝牙状态,因为用户可以关闭蓝牙。 那时,我不希望蓝牙状态栏保持“连接”状态。

我尝试使用Thread而不是BroadcastReceiver。然后我的代码没有错误,但Thread没有工作。

也许在调用蓝牙活动时,Thread无法做某事。

使用BroadcastReceiver会更好吗?

private static final int REQUEST_CONNECT_DEVICE = 1;
private static final int REQUEST_ENABLE_BT = 2;

private BluetoothAdapter bluetoothAdapter = null;

private BluetoothThread btThread;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

        if(bluetoothAdapter == null) {
            Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
            finish();
            return;
        }       

    bluetoothConnect();

    btThread = new BluetoothThread();
    btThread.start();


}


private void bluetoothConnect() {

        if(!bluetoothAdapter.isEnabled()){
            changeBtStatus(CONNECTING);
            Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(enableIntent, REQUEST_ENABLE_BT);

        } else{ 
            changeBtStatus(CONNECTED);
            ensureDiscoverable();
        }


}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
    if(requestCode == REQUEST_ENABLE_BT){
        if(bluetoothAdapter.isEnabled()) {
            changeBtStatus(CONNECTED);
            ensureDiscoverable();
        } else{
            changeBtStatus(DISCONNECTED);

        }
    }
}

class BluetoothThread extends Thread{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        super.run();

        while(true){
            try{
                Thread.sleep(3000);
                bluetoothConnect();
            }catch(InterruptedException e){
                //do noop
            }
        }
    }


    }

1 个答案:

答案 0 :(得分:-1)

你不应该使用线程,你将不断地使用你的应用程序浪费电池,最好的办法是让一个听众在蓝牙关闭时通知你的应用程序。有一个接口。

http://developer.android.com/reference/android/bluetooth/BluetoothProfile.ServiceListener.html