**
项目用到蓝牙通讯,对蓝牙这快稍微整理:**
Android平台中蓝牙系统从上到下主要包括java框架中的Bluethooth类,Android适配库,BlueZ库,驱动程序和协议。
android中主要用到的:
1.BluetoothSocket类
android蓝牙端的监听接口和TCP的端口类似,都是使用了socket和servicesocket类。在客户端,使用一个单独的BluetoothScoket类去初始化一个外界链接和管理该链接。
为了创建一个BluetoothSocket去连接到一个已知设备,使用BluethoothDevice.createRfcommSocketToServiceRecord()方法,然后调用connect()方法尝试一个面向远程设备的链接。这个调用将被阻塞,直到一个链接已经建立或者该连接失败。
BluetoothSocket类的线程是安全的,因为close()方法。
公用方法:
public void close(); 马上关闭该端口并释放所有资源。
public void connect();尝试连接到远程设备。
public inputstream getinputstream(); 通过连接的端口获得输入数据流,即使该端口未连接,也会返回数据流,不过会抛异常,直到相关连接建立。(getout…同上)
public BluetoothDevice getremoteDevice();获得该端口正在连接或者已将连接的设备。
BluetoothAdapter类
bluetoothAdapter 代表本地的蓝牙适配器设备,通过该类用户执行基本的蓝牙操作。
为了得到这个类,需要调用getDeaultAdapter(),这是所有蓝牙使用的第一步,当有了这个本地适配器以后,用户可以得到一系列的BluetoothDevice对象,这些对象代表所有拥有getBoundedDevice()方法的已匹配设备,用startDiscovery()方法来开始设备的搜寻,
公用方法
public boolean cancelDiscovery();取消当前的设备并查找新进程,查找是一个重量级的过程,因此这个在connet()方法调用。
public static boolean checkBluetoothAddress(String address);验证蓝牙地址;
public boolean disable();关闭本地蓝牙适配器;
public boolean enable();打开
public String getAddress();获取本地蓝牙硬件地址;
public Set getBoundDevices();返回已配对的蓝牙设备
public String getName();获取蓝牙名称;
public BluetoothDevice getRemoteDevice(String address);为硬件地址获取一个bluetooth获取一个Bluetooth对象。checkBluetoothAddress(String) 验证蓝牙地址的正确性;
public int getScanMode();获取本地蓝牙适配器的当前蓝牙扫描模式,取值:
无功能状态 : int SCAN_MODE_NONE , 值为20, 查询扫描和页面扫描都失效, 该状态下蓝牙模块既不能扫描其它设备, 也不可见;
扫描状态 : int SCAN_MODE_CONNECTABLE , 值为21, 查询扫描失效, 页面扫描有效, 该状态下蓝牙模块可以扫描其它设备, 从可见性来说只对已配对的蓝牙设备可见, 只有配对的设备才能主动连接本设备;
可见状态 : int SCAN_MODE_CONNECTABLE_DISCOVERABLE, 值为23, 查询扫描和页面扫描都有效;
public int getState();获取本地蓝牙适配器的当前状态:
蓝牙关闭 : int STATE_OFF , 值为10, 蓝牙模块处于关闭状态;
蓝牙打开中 : int STATE_TURNING_ON , 值为11, 蓝牙模块正在打开;
蓝牙开启 : int STATE_ON , 值为12, 蓝牙模块处于开启状态;
蓝牙开启中 : int STATE_TURNING_OFF , 值为13, 蓝牙模块正在关闭;
蓝牙开关状态顺序 : STATE_OFF –> STATE_TURNING_ON –> STATE_ON –> STATE_TURNING_OFF –> STATE_OFF;
public boolean isDiscovering() :是否正在搜索蓝牙
public boolean isEnabled();蓝牙是否是打开状态并可用;
public boolean startDiscovery();开始查找设备,成功true,反之false;
到此。蓝牙的类差不多了,调用时注意权限“android.permission.BLUETOOTH”开关蓝牙“android.permission.BLUETOOTH_ADMIN”
后续会放上demo已经各种跳坑。在这说一句,对于有些蓝牙模块连不上很蛋疼。
Android蓝牙开发详解
2976

被折叠的 条评论
为什么被折叠?



