Native.js开启关闭蓝牙
1
2
3
4
5
6
7
8
9
|
var main = plus.android.runtimeMainActivity(); var Context = plus.android.importClass("android.content.Context"); var BManager = main.getSystemService(Context.BLUETOOTH_SERVICE); plus.android.importClass(BManager);//引入相关的method函数 var BAdapter = BManager.getAdapter(); plus.android.importClass(BAdapter);//引入相关的method函数,这样之后才会有isEnabled函数支持 if(!BAdapter.isEnabled()) { BAdapter.enable(); } |
Native.js监听蓝牙开关状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
var main = plus.android.runtimeMainActivity(); var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter"); var BAdapter = new BluetoothAdapter.getDefaultAdapter(); var resultDiv = document.getElementById('output'); var receiver=plus.android.implements('io.dcloud.android.content.BroadcastReceiver', { onReceive: function(context, intent) { //实现onReceiver回调函数 plus.android.importClass(intent); console.log(intent.getAction()); resultDiv.textContent += '\nAction :' + intent.getAction(); main.unregisterReceiver(receiver); } }); var IntentFilter = plus.android.importClass('android.content.IntentFilter'); var filter = new IntentFilter(); filter.addAction(BAdapter.ACTION_STATE_CHANGED); //监听蓝牙开关 main.registerReceiver(receiver, filter); //注册监听 if (!BAdapter.isEnabled()) { BAdapter.enable(); //启动蓝牙 }else{ BAdapter.disable(); } |
Native.js获取蓝牙设备列表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
unction bluetooth_list(){ var main = plus.android.runtimeMainActivity(); var Context = plus.android.importClass("android.content.Context"); var lists = BAdapter.getBondedDevices(); plus.android.importClass(lists); var resultDiv = document.getElementById('bluetooth_list'); var iterator = lists.iterator(); plus.android.importClass(iterator); while (iterator.hasNext()) { var d = iterator.next(); plus.android.importClass(d); console.log(d.getAddress()); } } |
Native.js蓝牙连接票据打印机
测试机:佳博PT-280便携打印机
手机:华为低端
功能:扫描周围蓝牙设备加入列表,点击未配对设备,自动配对设备,点击已配对设备,进行打印测试
html页面代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title ></ title > < script src = "js/pr.js" ></ script > </ head > < body > < div > < p >< input id = "bt1" type = "button" value = "搜索设备" onclick = "searchDevices('a')" ></ p > </ div > < div > 未配对蓝牙设备 < ul id = "list1" > </ ul > </ div > < div > 已配对蓝牙设备 < ul id = "list2" > </ ul > </ div > </ body > </ html > |
Js文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
//address=""搜索蓝牙//address=设备mac地址,自动配对给出mac地址的设备 function searchDevices(address) { //注册类 var main = plus.android.runtimeMainActivity(); var IntentFilter = plus.android.importClass( "android.content.IntentFilter" ); var BluetoothAdapter = plus.android.importClass( "android.bluetooth.BluetoothAdapter" ); var BluetoothDevice = plus.android.importClass( "android.bluetooth.BluetoothDevice" ); var BAdapter = BluetoothAdapter.getDefaultAdapter(); console.log( "开始搜索设备" ); var filter = new IntentFilter(); var bdevice = new BluetoothDevice(); var on = null ; var un = null ; var vlist1 = document.getElementById( "list1" ); //注册容器用来显示未配对设备 vlist1.innerHTML = "" ; //清空容器 var vlist2 = document.getElementById( "list2" ); //注册容器用来显示未配对设备 vlist2.innerHTML = "" ; //清空容器 var button1 = document.getElementById( "bt1" ); button1.disabled= true ; button1.value= "正在搜索请稍候" ; BAdapter.startDiscovery(); //开启搜索 var receiver; receiver = plus.android.implements( "io.dcloud.android.content.BroadcastReceiver" , { onReceive: function (context, intent) { //实现onReceiver回调函数 plus.android.importClass(intent); //通过intent实例引入intent类,方便以后的‘.'操作 console.log(intent.getAction()); //获取action if (intent.getAction() == "android.bluetooth.adapter.action.DISCOVERY_FINISHED" ){ main.unregisterReceiver(receiver); //取消监听 button1.disabled= false ; button1.value= "搜索设备" ; console.log( "搜索结束" ); } else { BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); //判断是否配对 if (BleDevice.getBondState() == bdevice.BOND_NONE) { console.log( "未配对蓝牙设备:" + BleDevice.getName() + " " + BleDevice.getAddress()); //参数如果跟取得的mac地址一样就配对 if (address == BleDevice.getAddress()) { if (BleDevice.createBond()) { //配对命令.createBond() console.log( "配对成功" ); var li2 = document.createElement( "li" ); //注册 li2.setAttribute( "id" , BleDevice.getAddress()); //打印机mac地址 li2.setAttribute( "onclick" , "print(id)" ); //注册click点击列表进行打印 li2.innerText = BleDevice.getName(); vlist2.appendChild(li2); } } else { if (BleDevice.getName() != on ){ //判断防止重复添加 var li1 = document.createElement( "li" ); //注册 li1.setAttribute( "id" , BleDevice.getAddress()); //打印机mac地址 li1.setAttribute( "onclick" , "searchDevices(id)" ); //注册click点击列表进行配对 on = BleDevice.getName(); li1.innerText = on; vlist1.appendChild(li1); } } } else { if (BleDevice.getName() != un ){ //判断防止重复添加 console.log( "已配对蓝牙设备:" + BleDevice.getName() + " " + BleDevice.getAddress()); var li2 = document.createElement( "li" ); //注册 li2.setAttribute( "id" , BleDevice.getAddress()); //打印机mac地址 li2.setAttribute( "onclick" , "print(id)" ); //注册click点击列表进行打印 un = BleDevice.getName(); li2.innerText = un; vlist2.appendChild(li2);} }} } }); filter.addAction(bdevice.ACTION_FOUND); filter.addAction(BAdapter.ACTION_DISCOVERY_STARTED); filter.addAction(BAdapter.ACTION_DISCOVERY_FINISHED); filter.addAction(BAdapter.ACTION_STATE_CHANGED); main.registerReceiver(receiver, filter); //注册监听 } var device = null , BAdapter = null , BluetoothAdapter = null , uuid = null , main = null , bluetoothSocket = null ; function print(mac_address) { if (!mac_address) { mui.toast( "请选择蓝牙打印机" ); return ; } main = plus.android.runtimeMainActivity(); BluetoothAdapter = plus.android.importClass( "android.bluetooth.BluetoothAdapter" ); UUID = plus.android.importClass( "java.util.UUID" ); uuid = UUID.fromString( "00001101-0000-1000-8000-00805F9B34FB" ); BAdapter = BluetoothAdapter.getDefaultAdapter(); device = BAdapter.getRemoteDevice(mac_address); plus.android.importClass(device); bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid); plus.android.importClass(bluetoothSocket); if (!bluetoothSocket.isConnected()) { console.log( "检测到设备未连接,尝试连接...." ); bluetoothSocket.connect(); } console.log( "设备已连接" ); if (bluetoothSocket.isConnected()) { var outputStream = bluetoothSocket.getOutputStream(); plus.android.importClass(outputStream); var string = "打印测试\r\n" ; var bytes = plus.android.invoke(string, "getBytes" , "gbk" ); outputStream.write(bytes); outputStream.flush(); device = null //这里关键 bluetoothSocket.close(); //必须关闭蓝牙连接否则意外断开的话打印错误 } } |
以上是针对Native.js对Android蓝牙设备的操作实例代码,如果你想了解Native.js的其它实例代码或原生的Android蓝牙操作方法请查看下面的相关链接