Android蓝牙经验分享二

 

1、获取本地蓝牙适配器

      BluetoothAdapter mAdapter= BluetoothAdapter.getDefaultAdapter();

      2、打开蓝牙

      if(!mAdapter.isEnabled()){

//弹出对话框提示用户是后打开

Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(enabler, REQUEST_ENABLE);

      //不做提示,强行打开

      // mAdapter.enable();

}

      3、搜索设备

   1)刚才说过了mAdapter.startDiscovery()

是第一步,可以你会发现没有返回的蓝牙设备,怎么知道查找到了呢?向下看,不要急

        2)定义BroadcastReceiver,关于BroadcastReceiver不多讲了,不是今天的讨论内容,代码如下

   BroadcastReceiver mReceiver = new BroadcastReceiver() {

        public void onReceive(Context context, Intent intent) {

      String action = intent.getAction();

                   //找到设备

      if (BluetoothDevice.ACTION_FOUND.equals(action)) {

            BluetoothDevice device = intent

.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

            if (device.getBondState() != BluetoothDevice.BOND_BONDED) {

            Log.v(TAG, "find device:" + device.getName()

+ device.getAddress());

            }

      } 

            //搜索完成

           else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED

.equals(action)) {

         setTitle("搜索完成");

         if (mNewDevicesAdapter.getCount() == 0) {

         Log.v(TAG,"find over");

            }

         }

         //执行更新列表的代码

      }

   };

     这样,没当查找到新设备或是搜索完成,相应的操作都在上段代码的两个if里执行了,不过前提是你要先注册

BroadcastReceiver,具体代码如下

      IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);

      registerReceiver(mReceiver, filter);

      filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);

      registerReceiver(mReceiver, filter);

      (这段代码,一般写在onCreate()里..)

   3建立连接,首先Android sdk(2.0以上版本)支持的蓝牙连接是通过BluetoothSocket建立连接(说的不对请高人指正),服务器端(BluetoothServerSocket)和客户端(BluetoothSocket)需指定同样的UUID,才能建立连接,因为建立连接的方法会阻塞线程,所以服务器端和客户端都应启动新线程连接

         1)服务器端:

   //UUID格式一般是"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"可到

        //http://www.uuidgenerator.com 申请

   BluetoothServerSocket serverSocket = mAdapter. listenUsingRfcommWithServiceRecord(serverSocketName,UUID);

   serverSocket.accept();

   2)客户端:

   //还记得我们刚才在BroadcastReceiver获取了BLuetoothDevice么?

   BluetoothSocket clienSocket=dcvice. createRfcommSocketToServiceRecord(UUID);

   clienSocket.connect();

   4、数据传递,通过以上操作,就已经建立的BluetoothSocket连接了,数据传递无非是通过流的形式

   1)获取流

   inputStream = socket.getInputStream();

   outputStream = socket.getOutputStream();

   2)写出、读入

   这是基础的东西,在这就不多赘述了

   补充一下:

   使设备能够被搜索到

   Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);

    startActivityForResult(enabler,REQUEST_DISCOVERABLE);

   终于写完了,这是我这几天的学习经验,希望对有蓝牙需求的朋友有所帮助!另外,之前我们提过

android.bluetooth下有8个类,还有4个类没有用到,那4个类里定义的都是常量,我也没用到它们..

   最后把我找到的几个蓝牙的例子附在后面,希望从事软件开发,尤其是Android开发的朋友以后多沟通、多分享!

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值