欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Native.js獲取監(jiān)聽開關(guān)等操作Android藍(lán)牙設(shè)備實例代碼

 更新時間:2018年09月17日 11:31:10   投稿:wdc  
本文為大家分享了Native.js對Android藍(lán)牙設(shè)備的操作實例代碼包括:監(jiān)聽藍(lán)牙開關(guān)狀態(tài),開啟關(guān)閉藍(lán)牙,獲取藍(lán)牙設(shè)備列表,藍(lán)牙連接票據(jù)打印機(jī)

Native.js開啟關(guān)閉藍(lán)牙

var main = plus.android.runtimeMainActivity();
var Context = plus.android.importClass("android.content.Context");
var BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
plus.android.importClass(BManager);//引入相關(guān)的method函數(shù)
var BAdapter = BManager.getAdapter();
plus.android.importClass(BAdapter);//引入相關(guān)的method函數(shù),這樣之后才會有isEnabled函數(shù)支持
if(!BAdapter.isEnabled()) {
BAdapter.enable();
}

Native.js監(jiān)聽藍(lán)牙開關(guān)狀態(tài)

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) { //實現(xiàn)onReceiver回調(diào)函數(shù)
 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); //監(jiān)聽藍(lán)牙開關(guān)
main.registerReceiver(receiver, filter); //注冊監(jiān)聽

if (!BAdapter.isEnabled()) {
 BAdapter.enable(); //啟動藍(lán)牙
}else{
 BAdapter.disable();
}

Native.js獲取藍(lán)牙設(shè)備列表

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藍(lán)牙連接票據(jù)打印機(jī)

測試機(jī):佳博PT-280便攜打印機(jī)
手機(jī):華為低端
功能:掃描周圍藍(lán)牙設(shè)備加入列表,點擊未配對設(shè)備,自動配對設(shè)備,點擊已配對設(shè)備,進(jìn)行打印測試

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="搜索設(shè)備" onclick="searchDevices('a')"></p>
 </div>
 <div>
 未配對藍(lán)牙設(shè)備
 <ul id="list1">

 </ul>
 </div>

 <div>
 已配對藍(lán)牙設(shè)備

 <ul id="list2">

 </ul>
 </div>
 </body>
</html>

Js文件

//address=""搜索藍(lán)牙//address=設(shè)備mac地址,自動配對給出mac地址的設(shè)備
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("開始搜索設(shè)備");
 var filter = new IntentFilter();
 var bdevice = new BluetoothDevice();
 var on = null;
 var un = null;
 var vlist1 = document.getElementById("list1"); //注冊容器用來顯示未配對設(shè)備
 vlist1.innerHTML = ""; //清空容器
 var vlist2 = document.getElementById("list2"); //注冊容器用來顯示未配對設(shè)備
 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) { //實現(xiàn)onReceiver回調(diào)函數(shù)
 plus.android.importClass(intent); //通過intent實例引入intent類,方便以后的‘.'操作
 console.log(intent.getAction()); //獲取action
 if(intent.getAction() == "android.bluetooth.adapter.action.DISCOVERY_FINISHED"){
 main.unregisterReceiver(receiver);//取消監(jiān)聽
 button1.disabled=false;
 button1.value="搜索設(shè)備";
 console.log("搜索結(jié)束");
 }else{
 BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
 //判斷是否配對
 if (BleDevice.getBondState() == bdevice.BOND_NONE) {
 console.log("未配對藍(lán)牙設(shè)備:" + BleDevice.getName() + " " + BleDevice.getAddress());
 //參數(shù)如果跟取得的mac地址一樣就配對
 if (address == BleDevice.getAddress()) {
  if (BleDevice.createBond()) { //配對命令.createBond()
  console.log("配對成功");
  var li2 = document.createElement("li"); //注冊
  li2.setAttribute("id", BleDevice.getAddress()); //打印機(jī)mac地址
  li2.setAttribute("onclick", "print(id)"); //注冊click點擊列表進(jìn)行打印
  li2.innerText = BleDevice.getName();
  vlist2.appendChild(li2);
  }

 } else {
  if(BleDevice.getName() != on ){ //判斷防止重復(fù)添加
  var li1 = document.createElement("li"); //注冊
  li1.setAttribute("id", BleDevice.getAddress()); //打印機(jī)mac地址
  li1.setAttribute("onclick", "searchDevices(id)"); //注冊click點擊列表進(jìn)行配對
  on = BleDevice.getName();
  li1.innerText = on;
  vlist1.appendChild(li1);

  }

 }
 } else {
 if(BleDevice.getName() != un ){ //判斷防止重復(fù)添加
 console.log("已配對藍(lán)牙設(shè)備:" + BleDevice.getName() + " " + BleDevice.getAddress());
 var li2 = document.createElement("li"); //注冊
 li2.setAttribute("id", BleDevice.getAddress()); //打印機(jī)mac地址
 li2.setAttribute("onclick", "print(id)"); //注冊click點擊列表進(jìn)行打印
 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); //注冊監(jiān)聽
}

var device = null,
 BAdapter = null,
 BluetoothAdapter = null,
 uuid = null,
 main = null,
 bluetoothSocket = null;

function print(mac_address) {
 if (!mac_address) {
 mui.toast("請選擇藍(lán)牙打印機(jī)");
 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("檢測到設(shè)備未連接,嘗試連接....");
 bluetoothSocket.connect();
 }

 console.log("設(shè)備已連接");

 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 //這里關(guān)鍵
 bluetoothSocket.close(); //必須關(guān)閉藍(lán)牙連接否則意外斷開的話打印錯誤

 }

}

以上是針對Native.js對Android藍(lán)牙設(shè)備的操作實例代碼,如果你想了解Native.js的其它實例代碼或原生的Android藍(lán)牙操作方法請查看下面的相關(guān)鏈接

相關(guān)文章

  • 谷歌被屏蔽后如何搭建安卓環(huán)境

    谷歌被屏蔽后如何搭建安卓環(huán)境

    從5月27日開始,谷歌(Google)在華的幾乎所有的服務(wù)都處于無法使用的狀態(tài),除了搜索引擎遭到屏蔽之外,谷歌的郵箱(Gmail)、日歷(Calendar)、翻譯(Translate)、地圖(Maps)、分析(Analytics)和Google AdSense等產(chǎn)品也受到了影響。同時安裝安卓環(huán)境的時候同樣容易出現(xiàn)問題
    2014-06-06
  • 詳解Xamarin.Android 利用Fragment實現(xiàn)底部菜單

    詳解Xamarin.Android 利用Fragment實現(xiàn)底部菜單

    這篇文章主要介紹了詳解Xamarin.Android 利用Fragment實現(xiàn)底部菜單,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • 實例解析Android系統(tǒng)中的ContentProvider組件用法

    實例解析Android系統(tǒng)中的ContentProvider組件用法

    這篇文章主要介紹了Android系統(tǒng)中的ContentProvider組件用法,舉例講解了ContentProvider傳遞數(shù)據(jù)及監(jiān)聽ContentProvider數(shù)據(jù)改變的方法,十分詳細(xì),需要的朋友可以參考下
    2016-04-04
  • Android基于OpenCV實現(xiàn)QR二維碼檢測

    Android基于OpenCV實現(xiàn)QR二維碼檢測

    QR碼比普通一維條碼具有快速讀取和更大的存儲資料容量,也無需要像一維條碼般在掃描時需要直線對準(zhǔn)掃描儀。因此其應(yīng)用范圍已經(jīng)擴(kuò)展到包括產(chǎn)品跟蹤,物品識別,文檔管理,庫存營銷等方面。本文講解Android基于OpenCV實現(xiàn)QR二維碼檢測的步驟
    2021-06-06
  • Android編程四大組件之Activity用法實例分析

    Android編程四大組件之Activity用法實例分析

    這篇文章主要介紹了Android編程四大組件之Activity用法,實例分析了Activity的創(chuàng)建,生命周期,內(nèi)存管理及啟動模式等,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-01-01
  • Android ListView實現(xiàn)無限循環(huán)滾動

    Android ListView實現(xiàn)無限循環(huán)滾動

    這篇文章主要為大家詳細(xì)介紹了Android ListView實現(xiàn)無限循環(huán)滾動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 詳解Android中fragment和viewpager的那點事兒

    詳解Android中fragment和viewpager的那點事兒

    本文主要對Android中fragment和viewpager進(jìn)行詳細(xì)介紹,具有一定的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • 利用smsmanager實現(xiàn)后臺發(fā)送短信示例

    利用smsmanager實現(xiàn)后臺發(fā)送短信示例

    這篇文章主要介紹了android利用SmsManager可以實現(xiàn)后臺發(fā)送短信的方法,最近有使用說明,大家可以參考使用
    2014-01-01
  • 詳解Flutter混排瀑布流解決方案

    詳解Flutter混排瀑布流解決方案

    這篇文章主要介紹了Flutter混排瀑布流解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Android仿京東淘寶自動無限循環(huán)輪播控件思路詳解

    Android仿京東淘寶自動無限循環(huán)輪播控件思路詳解

    在App的開發(fā)中,很多的時候都需要實現(xiàn)類似京東淘寶一樣的自動無限輪播的廣告欄,這里小編寫了一個,分享到腳本之家平臺供大家參考
    2017-04-04

最新評論