<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

        午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
        首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
        中華工控網首頁
          P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
          D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
          電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
        安卓的藍牙全面開發教程
        --工業觸摸一體機藍牙解決方案
        收藏本文     查看收藏

        開發系統:Android4.4.2 運行平臺:廣州微嵌安卓工業平板
        安卓的藍牙的打開包括獲取藍牙模塊、搜索藍牙設備、藍牙設備間的配對、連接跟通信等部分。
        1、安卓中使用藍牙模塊需要藍牙的使用權限,需要在AndroidMainfest.xml中聲明:

        允許程序連接到已配對的藍牙設備 <uses-permission android:name="android.permission.BLUETOOTH"/> 允許程序發現和配對藍牙設備 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

        2、獲取藍牙適配器并打開藍牙

        //獲取藍牙適配器 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if(mBluetoothAdapter ==null){ Toast.makeText(this, "不支持藍牙設備",Toast.LENGTH_LONG).show(); bluetoothSwitch.setEnabled(false); return; } 打開藍牙設備 //判斷藍牙設備是否處于關閉狀態,如果是則打開藍牙 if(!mBluetoothAdapter.isEnabled()){ if(mBluetoothManager.enable()){//打開藍牙設備 //開啟藍牙后,需設置藍牙為可發現狀態,這樣其它的藍牙設備才能搜索到。 Intent discoverableIntent = new Intent (BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); //最后的參數設置可見的時間,最長為300s,設為0表示一直可見 discoverableIntent.putExtra( BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0); startActivity(discoverableIntent); //成功打開藍牙后開始搜索附近的藍牙設備 mBluetoothAdapter.startDiscovery(); //停止搜索:mBluetoothAdapter.cancelDiscovery(); } }else{ //關閉藍牙設備 mBluetoothManager.disable(); } //獲取已配對的藍牙設備 Set<BluetoothDevice> Bondedlist =mBluetoothAdapter.getBondedDevices();

        3、定義廣播接收,在開始搜索附近的藍牙設備,系統回發出三個搜索狀態的廣播

        BluetoothDevice.ACTION_FOUND //搜索到設備 BluetoothAdapter.ACTION_DISCOVERY_STARTED //開始搜索 BluetoothAdapter.ACTION_DISCOVERY_FINISHED //搜索結束 定義廣播接收相應的廣播狀態 private class BluetoothReceive extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO 自動生成的方法存根 String action = intent.getAction(); //判斷廣播內容 //搜索到藍牙設備廣播 if(action.equals(BluetoothDevice.ACTION_FOUND)){ //獲取搜素到的藍牙設備 BluetoothDevice device =intent.getParcelableExtra (BluetoothDevice.EXTRA_DEVICE); if(device.getName()==null){ return; } //獲取搜素到的藍牙設備是否已經配對 if(device.getBondState() == BluetoothDevice.BOND_BONDED){ deviceSet.add(device); adapter.add(device.getName()+":可使用"); } else { deviceSet.add(device); adapter.add(device.getName()+":可配對"); } } //搜索結束的廣播 else if(action.equals (BluetoothAdapter.ACTION_DISCOVERY_FINISHED)){ Toast.makeText(MainActivity.this, "掃描結束",Toast.LENGTH_LONG).show(); } } }

        4、藍牙設備的配對

        //獲取搜索到的藍牙設備列表中的藍牙設備及其狀態 BluetoothDevice device = deviceSet.get(position); int state = deviceSet.get(position).getBondState(); //判斷藍牙設備狀態 Switch(state){ //藍牙設備沒有配對 case BluetoothDevice.BOND_NONE: //配對方法一: Method createBondMethod= device.getClass().getMethod("createBond"); Boolean returnValue =(Boolean)createBondMethod.invoke(device); //配對方法二: device.createBond(); break; //藍牙設備已經配對 case BluetoothDevice.BOND_BONDED: //可選操作:刪除配對信息、連接藍牙設備 //刪除配對信息: Method createBondMethod= device.getClass().getMethod("removeBond"); Boolean returnValue =(Boolean)createBondMethod.invoke(device); //連接藍牙設備: //建立藍牙客戶端并連接服務器 mBluetoothClient = new BluetoothClient(MainActivity.this,device,uuid); mBluetoothClient.connect(); break; }

        上面的內容主要是獲取藍牙模塊、打開藍牙、搜素附近藍牙設備跟進行配對。
        下面的是藍牙設備間建立連接并進行通信。
        藍牙設備的連接、通信跟網絡通信TCP的類似,分別有服務器、客戶端,先是新建一個服務器用于監聽客戶端的連接請求,客戶端向服務器發送連接請求,連接成功后雙方都獲得BluetoothSocket的實例,雙方可以通過BluetoothSocket的實例進行通信。
        5、服務器:
        新建一個藍牙服務器并監聽客戶端的連接請求
        在listenUsingRfcommWithServiceRecord中有一個參數叫做UUID,UUID(Universally Unique Identifier)是一個128位的字符串ID,被用于唯一標識我們的藍牙服務。

        String name = mBluetoothAdapter.getName(); try { //創建一個BluetoothServerSocket藍牙服務器,并開啟接收線程等待客戶端的連接 mServerSocket = mBluetoothAdapter .listenUsingRfcommWithServiceRecord(name, uuid); new acceptThread().start(); } catch (IOException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); }; 等待客戶端連接: public class acceptThread extends Thread{ @Override public void run() { // TODO 自動生成的方法存根 try { //該方法是服務器阻塞等待客戶端的連接, //監聽到有客戶端連接返回一個BluetoothSocket的實例 socket = mServerSocket.accept(); Log.d("Server", "以連接"); //開啟讀取線程讀取客戶端發來的數據 read = new readThread(); read.start(); } catch (IOException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } super.run(); } } 讀取數據: public class readThread extends Thread{ @Override public void run() { // TODO 自動生成的方法存根 if(socket.isConnected()){ try { //獲取socket的InputStream并不斷讀取數據 InputStream in = socket.getInputStream(); byte[] buff = new byte[1024]; while(!isInterrupted()){ int size = in.read(buff);; if(size>0){ Log.d("RECVDATA", String.valueOf(buff)); } } in.close(); } catch (IOException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } } super.run(); } } 發送數據: public void write(String str){ if(socket.isConnected()){ try { //獲取socket的OutputStream并寫入數據 OutputStream out = socket.getOutputStream(); out.write(str.getBytes()); out.close(); } catch (IOException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } } } //關閉服務器: mServerSocket.close(); //關閉BluetoothSocket: Socket.close();

        6、客戶端:

        獲取一個BluetoothSocket的實例并向服務器發送連接請求 public class ConnectThread extends Thread{ @Override public void run() { // TODO 自動生成的方法存根 try { //獲取BluetoothSocket實例并連接服務器,該處的uuid需與服務器短 //的uuid一致才能連接成功,connect()是回阻塞的。 socket = mBluetoothDevice .createRfcommSocketToServiceRecord(uuid); socket.connect() Log.d("TAG", "連接成功"); read = new ReadThread(); read.start(); } catch (IOException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } super.run(); } } 客戶端的讀取跟發送與服務器的相同。

        至此安卓系統的藍牙的基本功能就基本完成了,在兩塊都開啟了藍牙的安卓設備上分別建議服務器跟客戶端,并進行連接,連接成功后雙方就可以通過藍牙進行通信了。


         

        狀 態: 離線

        公司簡介
        產品目錄
        供應信息

        公司名稱: 廣州市微嵌計算機科技有限公司
        聯 系 人: 李工
        電  話: 020-32206882
        傳  真: 020-32207973
        地  址: 廣東廣州黃埔永和新莊工業園B座
        郵  編: 510630
        主  頁:
         
        該廠商相關解決方案:
        智能終端wince工業觸摸控制屏的應用解決方案
        嵌入式工業平板電腦應用智能家居解決方案
        嵌入式工控觸摸一體機在道路稱重計費系統中的應用
        支持can現場總線的工業觸摸一體機應用案例
        電力系統工業觸摸屏一體機的應用
        微嵌安卓系統工業平板電腦在車載行業應用
        WindowsCE上usb驅動的.cab安裝包
        嵌入式工控機針對液晶屏生產線系統解決方案
        更多方案...
        立即發送詢問信息在線聯系該解決方案廠商:
        用戶名: 密碼: 免費注冊為中華工控網會員
        請留下您的有效聯系方式,以方便我們及時與您聯絡

        關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
        工控網客服熱線:0755-86369299
        版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

        主站蜘蛛池模板: 亚洲国产中文字幕精品| 九色免费视频| 色偷偷中文在线天堂中文| 美女黄网站人色视频免费国产| 2022最新国产在线不卡a| 国产a在亚洲线播放| 亚洲色偷偷偷综合网| 久久精品无码免费不卡| 99re视频精品全部免费| 国产精品无遮挡在线观看| 中文字幕精品久久久久人妻红杏1| 亚洲av无码国产在丝袜线观看| 亚洲人成网站77777在线观看| 久久99热全是成人精品亚洲欧美精品| 日本成人午夜一区二区三区| 美女黄网站人色视频免费国产| 激情文学一区二区国产区| 中文字幕在线观看一区二区| 国产午夜精品理论大片| 成人免费精品网站在线观看影片| 亚洲无av在线中文字幕| 青青草无码免费一二三区| 国产成A人片在线观看视频下载| 久久亚洲人成网站| 成年片免费观看网站| 美女无遮挡免费视频网站| 久久精品66免费99精品| 亚洲成在人线在线播放无码| 宝贝腿开大点我添添公视频免| 亚洲一区二区三区色视频| 亚洲AV无码专区色爱天堂老鸭窝 | 天堂国产+人+综合+亚洲欧美| 国产欧美va欧美va香蕉在| 亚洲高清国产自产拍av| 亚洲AV成人片不卡无码| 日亚韩在线无码一区二区三区| 亚洲av无码专区在线亚| 久久精品国产亚洲av麻豆甜| 中文字幕日韩一区二区不卡| 亚洲欧洲一区二区精品| 丰满人妻被黑人猛烈进入|