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蓝牙操作方法请查看下面的相关链接