一、前言

       最近做一个项目,里面要求用到Bluetooth Printer (蓝牙打印机)对账单信息进行打印,做项目的过程跳了很多的坑,本文在此做个小结,以起到抛砖引玉的作用。

Bluetooth Printer 和手机连接用到了蓝牙,其中主要用到下面几个类:BluetoothDevice 、BluetoothAdapter、Bluetooth Socket

1.BluetoothDevice

这是远程蓝牙设备的bean类,继承了Parcelable接口,远程蓝牙设备的属性都在这个类中,包括名称、地址、类和连接状态等信息;最主要的方法有

(1)public String getAddress

(2)public String getName () 获取远程设备的蓝牙昵称;

(3)public int getBondState ()获取远程设备的连接状态;

 详情查看:BluetoothDevice

2.BluetoothAdapter

调用getDefaultAdapter()这一静态方法获取的,它有几个常用的常量:

(1)String      ACTION_DISCOVERY_FINISHED 广播事件:本地蓝牙适配器已经完成设备的搜寻过程。

(2) String      ACTION_DISCOVERY_STARTED 广播事件:本地蓝牙适配器已经开始对远程设备的搜寻过程

(3)String      ACTION_LOCAL_NAME_CHANGED 广播活动:本地蓝牙适配器已经更改了它的蓝牙名称

(4)String      ACTION_REQUEST_DISCOVERABLE  

Activity活动:显示一个请求被搜寻模式的系统活动。如果蓝牙模块当前未打开,该活动也将请求用户打开蓝牙模块;

(5)String      ACTION_REQUEST_ENABLE  Activity活动:显示一个允许用户打开蓝牙模块的系统活动

常见的方法:

(1)public boolean isEnabled

如果蓝牙正处于打开状态并可用,则返回真值

(2)public boolean startDiscovery () 

     开始对远程设备进行查找的进程,它通常牵涉到一个大概需时12秒的查询扫描过程,紧跟着是一个对每个获取到自身蓝牙名称的新设备的页面扫描。这是一个异步调用方法:该方法将马上获得返回值,