Native.js获取监听开关等操作Android蓝牙设备实例代码
Native.js开启关闭蓝牙
varmain=plus.android.runtimeMainActivity();
varContext=plus.android.importClass("android.content.Context");
varBManager=main.getSystemService(Context.BLUETOOTH_SERVICE);
plus.android.importClass(BManager);//引入相关的method函数
varBAdapter=BManager.getAdapter();
plus.android.importClass(BAdapter);//引入相关的method函数,这样之后才会有isEnabled函数支持
if(!BAdapter.isEnabled()){
BAdapter.enable();
}
Native.js监听蓝牙开关状态
varmain=plus.android.runtimeMainActivity();
varBluetoothAdapter=plus.android.importClass("android.bluetooth.BluetoothAdapter");
varBAdapter=newBluetoothAdapter.getDefaultAdapter();
varresultDiv=document.getElementById('output');
varreceiver=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);
}
});
varIntentFilter=plus.android.importClass('android.content.IntentFilter');
varfilter=newIntentFilter();
filter.addAction(BAdapter.ACTION_STATE_CHANGED);//监听蓝牙开关
main.registerReceiver(receiver,filter);//注册监听
if(!BAdapter.isEnabled()){
BAdapter.enable();//启动蓝牙
}else{
BAdapter.disable();
}
Native.js获取蓝牙设备列表
unctionbluetooth_list(){
varmain=plus.android.runtimeMainActivity();
varContext=plus.android.importClass("android.content.Context");
varlists=BAdapter.getBondedDevices();
plus.android.importClass(lists);
varresultDiv=document.getElementById('bluetooth_list');
variterator=lists.iterator();
plus.android.importClass(iterator);
while(iterator.hasNext()){
vard=iterator.next();
plus.android.importClass(d);
console.log(d.getAddress());
}
}
Native.js蓝牙连接票据打印机
测试机:佳博PT-280便携打印机
手机:华为低端
功能:扫描周围蓝牙设备加入列表,点击未配对设备,自动配对设备,点击已配对设备,进行打印测试
html页面代码
未配对蓝牙设备 已配对蓝牙设备
Js文件
//address=""搜索蓝牙//address=设备mac地址,自动配对给出mac地址的设备
functionsearchDevices(address){
//注册类
varmain=plus.android.runtimeMainActivity();
varIntentFilter=plus.android.importClass("android.content.IntentFilter");
varBluetoothAdapter=plus.android.importClass("android.bluetooth.BluetoothAdapter");
varBluetoothDevice=plus.android.importClass("android.bluetooth.BluetoothDevice");
varBAdapter=BluetoothAdapter.getDefaultAdapter();
console.log("开始搜索设备");
varfilter=newIntentFilter();
varbdevice=newBluetoothDevice();
varon=null;
varun=null;
varvlist1=document.getElementById("list1");//注册容器用来显示未配对设备
vlist1.innerHTML="";//清空容器
varvlist2=document.getElementById("list2");//注册容器用来显示未配对设备
vlist2.innerHTML="";//清空容器
varbutton1=document.getElementById("bt1");
button1.disabled=true;
button1.value="正在搜索请稍候";
BAdapter.startDiscovery();//开启搜索
varreceiver;
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("配对成功");
varli2=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){//判断防止重复添加
varli1=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());
varli2=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);//注册监听
}
vardevice=null,
BAdapter=null,
BluetoothAdapter=null,
uuid=null,
main=null,
bluetoothSocket=null;
functionprint(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()){
varoutputStream=bluetoothSocket.getOutputStream();
plus.android.importClass(outputStream);
varstring="打印测试\r\n";
varbytes=plus.android.invoke(string,"getBytes","gbk");
outputStream.write(bytes);
outputStream.flush();
device=null//这里关键
bluetoothSocket.close();//必须关闭蓝牙连接否则意外断开的话打印错误
}
}
以上是针对Native.js对Android蓝牙设备的操作实例代码,如果你想了解Native.js的其它实例代码或原生的Android蓝牙操作方法请查看下面的相关链接