android 蓝牙 通信 bluetooth

此例子基于 android demo

Android的蓝牙开发,虽然不多用,但有时还是会用到,  Android对于蓝牙开发从2.0版本的sdk才开始支持,而且模拟器不支持,测试需要两部手机
      由于公司用到了蓝牙,所以学习了一下,也和大家分享一下!


总体来说和网络 socket 很相似,监听,连接,成功后,发送数据;


  我将蓝牙分成了客户端和服务端,下载地址:

  http://download.youkuaiyun.com/detail/q610098308/8681065


  第一步:

先要在AndroidManifest.xml里加入权限

<uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" />

<uses-permissionandroid:name="android.permission.BLUETOOTH" />


    看下api,Android所有关于蓝牙开发的类都在android.bluetooth包下,如下图,只有8个类

                1.jpg

 

  

1、获取本地蓝牙适配器

       // Get local Bluetooth adapter
      mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if(mBluetoothAdapter==null)                 //如果为空可能不存在蓝牙,退出;
        {
             Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
             return;
        }
       

      2、打开蓝牙

      if(!mAdapter.isEnabled()){

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

            Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

             startActivityForResult(enabler, REQUEST_ENABLE);

           //不做提示,强行打开

           // mAdapter.enable();

}


   3,
建立连接,服务器端(BluetoothServerSocket)和客户端(BluetoothSocket)需指定同样的UUID,才能建立连接,因为建立连接的方法会阻塞线程,所以服务器端和客户端都应启动新线程连接

 1)服务器端:
  

    // Unique UUID for this application
    private static final UUID MY_UUID_SECURE =
        UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");
    private static final UUID MY_UUID_INSECURE =
        UUID.fromString("8ce255c0-200a-11e0-ac64-0800200c9a66");


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


serverSocket.accept();


2)
客户端:


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


BluetoothSocket clienSocket=dcvice. createRfcommSocketToServiceRecord(UUID MY_UUID_INSECURE);


clienSocket.connect();


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


1
)获取流


inputStream = socket.getInputStream();


outputStream = socket.getOutputStream();


2
)写出、读入

                    // Read from the InputStream
                    bytes = mmInStream.read(buffer);


                    mmOutStream.write(buffer);          



demo是包括客户端和服务端;分别放到两个手机上就可以通信;大家改改应该就可以用;

http://download.youkuaiyun.com/detail/q610098308/8628675

http://download.youkuaiyun.com/detail/q610098308/8681065



评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋恋西风

up up up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值