首页 > 代码库 > 蓝牙那些事之状态监听

蓝牙那些事之状态监听

    对于蓝牙状态的监听事件,此篇文章讲的是对于手机蓝牙的或者是设备自身蓝牙状态的监听,而并非是远程设备蓝牙状态的监听,当然如果要监听远程设备的蓝牙状态也不是没有办法,相对于监听自身蓝牙状态难度更大,资料页相对较少。

  如果要监听本身蓝牙状态,还是要注册广播

 1     //注册广播接收器(监听蓝牙状态的改变) 2         IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 3          4         filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);    5 //      filter.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);//蓝牙扫描状态(SCAN_MODE)发生改变 6  7 //      filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); //指明一个远程设备的连接状态的改变。比如,当一个设备已经被匹配。    8         filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);//指明一个与远程设备建立的低级别(ACL)连接。 9         filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);//指明一个来自于远程设备的低级别(ACL)连接的断开10         filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED);//指明一个为远程设备提出的低级别(ACL)的断开连接请求,并即将断开连接。11         12 //      filter.addAction(BluetoothDevice.ACTION_FOUND);//发现远程设备 13 //      filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);//本地蓝牙适配器已经开始对远程设备的搜寻过程。14         this.registerReceiver(BluetoothReciever, filter); // 不要忘了之后解除绑定    

这里有多个过滤的条件,用户可以根据自身开发的需要加减条件以达到监听效果

广播:

 1 //蓝牙状态监听 2     private BroadcastReceiver BluetoothReciever = new BroadcastReceiver() { 3           @Override 4           public void onReceive(Context context, Intent intent) { 5               System.out.println("==========此时蓝牙的状态是====11===="+intent.getAction()); 6               if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) { 7                   int btState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,BluetoothAdapter.STATE_OFF); 8                   System.out.println("==========此时蓝牙的状态是====22===="+btState); 9                   //打印蓝牙的状态10                   printBTState(btState);11               }else if(BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(intent.getAction())){12                   Utils.getinstance().getStr(MainActivity.this, "蓝牙已断开");13                   Intent in=new Intent();14                   in.setAction("com.healthys.blue");15                   in.putExtra("tizhong", "0123456");16                   sendBroadcast(in);17                   try {18                       //设置两秒后自动回连19                     Thread.sleep(2000);20                     BlueToothHelper.getinstance().getClient(null,Myfinal.btpath,1234);21                 } catch (Exception e) {22                     e.printStackTrace();23                 }24               }else if(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED.equals(intent.getAction())){25                   Utils.getinstance().getStr(MainActivity.this, "蓝牙即将断开");26               }27           }28     };

打印蓝牙的状态,在这里可以做相应的事件处理

 1 //打印蓝牙的状态 2     private void printBTState(int btState) { 3       switch (btState) { 4           case BluetoothAdapter.STATE_OFF: 5               System.out.println("============蓝牙状态:已关闭==========="+btState); 6               Utils.getinstance().getStr(MainActivity.this, "蓝牙已关闭"); 7               Myfinal.isconnection=false; 8               Intent in=new Intent(); 9               in.setAction("com.healthys.blue");10               in.putExtra("tizhong", "0123456");11               sendBroadcast(in);12               break;13           case BluetoothAdapter.STATE_TURNING_OFF:14                 System.out.println("========蓝牙状态:正在关闭=============="+btState);15               break;16           case BluetoothAdapter.STATE_TURNING_ON:17               System.out.println("=====蓝牙状态:正在打开======"+btState);//当蓝牙打开后自动连接设备18               break;19           case BluetoothAdapter.STATE_ON:20               System.out.println("=========蓝牙状态:已打开========="+btState);21 22               Utils.getinstance().getStr(MainActivity.this, "蓝牙已打开");23               if(Myfinal.btpath!=null&&!Myfinal.btpath.equals("")){24                   BlueToothHelper.getinstance().getClient(null,Myfinal.btpath,1234);25               }26               break;27           default:28               break;29       }30     }

解除注册事件:

1 //解除注册2     @Override3     protected void onDestroy() {4         super.onDestroy();5         unregisterReceiver(BluetoothReciever);6         unregisterReceiver(loginReceiver);7     }

 

好吧,监听事件也就写到这里了...