zoukankan      html  css  js  c++  java
  • android 蓝牙 通信 bluetooth

    此例子基于 android demo

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


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


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

      http://download.csdn.net/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.csdn.net/detail/q610098308/8628675

    http://download.csdn.net/detail/q610098308/8681065

    
    
  • 相关阅读:
    数据库系列之查询(4)
    数据库系列之查询(3)
    数据库系列之查询(2)
    数据库系列之查询(1)
    数据库系列之视图
    数据库系列之数据管理(删除数据)
    数据库系列之数据管理(更新数据)
    数据库系列之数据管理(插入数据)
    数据库管理之数据表管理(2)
    数据库管理之数据表管理(1)
  • 原文地址:https://www.cnblogs.com/sharecenter/p/5621080.html
Copyright © 2011-2022 走看看