当前位置: 移动技术网 > IT编程>移动开发>Android > Native.js获取监听开关等操作Android蓝牙设备实例代码

Native.js获取监听开关等操作Android蓝牙设备实例代码

2019年08月02日  | 移动技术网IT编程  | 我要评论

readyfor 4gb下载,顶真对联,云朝

native.js开启关闭蓝牙

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监听蓝牙开关状态

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获取蓝牙设备列表

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页面代码

<!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文件

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网