码迷,mamicode.com
首页 > 其他好文 > 详细

蓝牙那些事之状态监听

时间:2014-06-17 15:48:09      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   tar   

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

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

 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     @Override
3     protected void onDestroy() {
4         super.onDestroy();
5         unregisterReceiver(BluetoothReciever);
6         unregisterReceiver(loginReceiver);
7     }

 

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

蓝牙那些事之状态监听,布布扣,bubuko.com

蓝牙那些事之状态监听

标签:des   style   class   blog   code   tar   

原文地址:http://www.cnblogs.com/yrhua/p/3792332.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!