摘要: BTX6是世界上唯一一款蓝牙磁条卡读写器,由深圳市优力科创自主研发生产,可以在无电源接入的情况下读取与写入市面上所有的磁条卡数据,BTX6体积小很小,便于携带重量只有138.7克,内置450毫安锂电池,连续工作时间超过了3小时。通过无线蓝牙与手机,平板电脑,笔记本等设备连接,兼容Windows 7,8,Vista,Xp,2000(32&64位)MacBook Air,MacBook Pro,Mac Mini,Mac Pro,iMac)、Unix,Linux、ios,Android的所有主流操作系统。免费提供配套软件。
1、在项目集成 MSR-BTX6 SDK
首先需要在 AndroidManifest.xml 注册服务和添加蓝牙权限:
点击(此处)折叠或打开
- <manifest>
- … … …
- <uses-permission android:name="android.permission.BLUETOOTH"/>
- <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
-
- <application>
- … … …
- <service android:name="com.postech.btx6library.service.BTService"/>
- </application>
- </manifest>
>
2、核心管理类 Management 详解:
Public Static Method | |
Void | bindService(Context context,ServiceBinderCallback callback) 在当前 Activity 绑定服务BTService,callback 能监听 BTService 的绑定结果。 |
Void | unBindService(Context context) 退出 Activity 时,解除 BTService 的绑定。 |
Void | startConnection(String address) 连接蓝牙设备,address 是蓝牙设备的地址。 |
Void | stopConnection() 断开已经连接的蓝牙设备。 |
Void | setSendCmdCallbackListener(SendCmdCallbackListener CallbackListener) 添加发送命令监听器,在已连接状态,向蓝牙设备发送命令后,返回对应结果。 |
Void | setDeviceConnectionStatusListener(DeviceConnectionStatusListener listener) 监听蓝牙设备的连接状态。 |
Void | sendInitCmd() 发送初始化命令。 |
Void | sendReadCmd() 发送读卡命令。 |
Void | sendWriteCmd(String track1,String track2,String track3) 发送写卡命令,三个参数分别对应轨道一、二、三的数据。注意:轨道一数据长度最大不能超过 76 个字节,轨道二数据长度最大不超过 37 个字节,轨道三数据长度最大不超过 104 个字节。 三条轨道的数据不能同时为空。 |
Void | checkTrackCharacter(int number,String trackString) 在发送写卡命令前,检查发送的字符是否符合轨道的数据格式,返回 true,表示格式正确;返回 false,表示格式不正确。number 代表轨道号,范围在 1-3 之间, trackString 是需要发送的数据。 |
Void | 111sendEraseCmd(int track1,int track2,int track3) 发送擦除命令,三个参数分别对应轨道一、二、三。0 表示不擦除,1 表示擦除。 |
Void | sendEraseCmd(int track1,int track2,int track3) 发送擦除命令,三个参数分别对应轨道一、二、三。0 表示不擦除,1 表示擦除。 |
Void | sendCardTypeCmd(int type) 设置高抗卡(type=0)或者低抗卡(type=1)。 |
Void | sendLeadingZeros(int B210,int B75) 设置轨道的前导零。建议默认值(62,22)。 |
Void | sendSetNameCmd(String name) 设置蓝牙设备的名字。只能由字母和数字组成 |
Void | getDeviceVoltage() 获取蓝牙设备的电压和电量。 |
Void | startSearchBluetoothDevice(BluetoothSearchResultCallback resultCallback) 启动蓝牙搜索。resultCallback 监控蓝牙搜索状态变化。 |
Void | cancelSearchBluetoothDevice() 取消蓝牙搜索 |
注意:发送读卡、写卡、擦除命令后,再发送下一个命令前,需要先发送初始化命令
对设备进行初始化。
3、ServiceBinderCallback 详解
Public Method | |
Void | binderSuccess() BTService 绑定成功时执行 |
Void | binderFailed() BTService 绑定异常时执行 |
4、发送命令完毕,监听返回结果,SendCmdCallbackListener 详解
Public Method | |
Void | receiveInitResult(boolean initFlag) initFlag = true 时,表示初始化成功,否则,表示失败。 |
Void | receiveReadResult(String track1,String track2,String track3) 接收读卡数据,track1 表示轨道一的数据,track2 表示轨道二的数据,track3 表示轨道三的数据。 |
Void | writeCmdCallback(boolean writeCmd) writeCmd = true 时,表示写卡命令发送成功,否则,失败。 |
Void | receiveWriteResult(boolean writeFlag) writeFlag = true 时,表示写入轨道的数据正确,否则,错误。 |
Void | receiveCardTypeResult(boolean typeFlag) typeFlag = true 时,表示高抗或者低抗卡设置成功,否则,失败。 |
Void | receiveEraseResult(boolean eraseFlag) eraseFlag = true 时,表示擦除命令发送成功,否则,失败。 |
Void | receiveSetupCardResult(boolean setupFlag) setupFlag = true 时,表示前导零设置成功,否则,失败。 |
Void | receiveSetNameResult(boolean nameFlag) 修改蓝牙设备的名字后,会断开蓝牙,这里没有消息返回。 |
Void | receiveElectricityResult(boolean flag,String voltage,String energy) 获取蓝牙设备的电压(voltage),电量(energy);flag = false 时,表示电压低,voltage和 energy 的值都等于 Low。 |
Void | receiveEmptyCardResult() 当擦除所有的轨道数据时,可以在这提示轨道数据已完全擦除。 |
Void | recordSwipeCardCounter(int counter) 记录读卡,写卡,擦除的成功次数。 |
Void | receiveSwipeCardErrorResult() 刷卡错误时执行,可以在这里作出提示。 |
5、DeviceConnectionStatusListener 详解,用来获取蓝牙设备的连接状态。
Constant | |
Static | CONNECTING_STATUS 正在连接 |
Static | CONNECTED_STATUS 已连接成功 |
Static | DISCONNECT_STATUS 断开连接 |
Static | CONNECT_FAILED 连接失败 |
Public Method | |
void | onStatusEvent(int status) 蓝牙设备连接状态切换 |
6、BluetoothSearchResultCallback 详解,调用 startSearchBluetoothDevice()搜索蓝牙时,需要传入 BluetoothSearchResultCallback 对象。
Public Method | |
void | notSupportBluetooth() 手机不支持蓝牙时执行。 |
void | bluetoothDisable(BluetoothAdapter bluetoothAdapter) 手机蓝牙没有开启时执行, 可以用 bluetoothAdapter.enable()开启。 |
void | startSearch() 启动手机蓝牙搜索时执行,可以在这做预加载。 |
void | getSearchResult(String deviceName,String deviceAddress) 在这获取蓝牙设备的名字和地址。 |
void | searchingBluetoothDevice() 正在搜索蓝牙。在蓝牙搜索没有停止之前,再次启动蓝牙搜索时执行。 |
void | searchFinished() 蓝牙搜索结束时执行。 |
7、轨道数据的字符格式
轨道一的字符格式 | |||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
: | ; | < | = | > | ! | " | # | $ | |
% | & | ? | ( | ) | * | + | , | - | . |
/ | @ | A | B | C | D | E | F | G | H |
I | J | K | L | M | N | O | P | Q | R |
S | T | U | V | W | X | Y | Z | [ | ] |
\ | ^ | _ |
轨道二、轨道三的字符格式 | |||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
: | ; | < | > | = | ? |
8、处理特殊异常
AllTrackDataNullException |
当发送写卡命令,三个参数都为 null 时,会抛出这个异常。 |
TrackLengthException |
当发送写卡命令,轨道数据长度超出限定长度时,会抛出这个异常。 |
TrackCharacterFormatException |
当发送写卡命令,轨道数据的字符格式错误时,会抛出这个异常。 |
DeviceNameFormatException |
设置蓝牙设备名字,字符格式错误时,会抛出这个异常。 |
相关下载:
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26312268/viewspace-2144694/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26312268/viewspace-2144694/