淺談Bluetooth藍芽開發,淺談bluetooth藍芽

來源:互聯網
上載者:User

淺談Bluetooth藍芽開發,淺談bluetooth藍芽

前言:項目用到藍芽開發,具體藍芽擷取硬體感應器中的資料。

因為沒有藍芽開發的相關經驗,決定先瞭解一些藍芽開發的知識,再去看之前同事寫的藍芽相關代碼。

 

---------------------------------------------------------------------------------------------------

一、藍芽開發相關類

1、BluetoothAdapter

 顯而易見,藍芽適配器。

 通過這個類我們進行以下操作:

1、開關藍牙裝置2、掃描藍牙裝置3、設定/擷取藍芽狀態資訊,例如:藍芽狀態值、藍芽Name、藍芽Mac地址等;

 

2、BluetoothDevice

藍牙裝置,是我們串連的裝置

擷取方法:

BluetoothData.SENSOR_DOWN_ADRESS = “20:16:05:25:32:31”; //MAC地址
BluetoothDevice sensor_down = mBluetoothAdapter.getRemoteDevice(BluetoothData.SENSOR_DOWN_ADRESS);

 

 

---------------------------------------------------------------------------------------------------

二、藍芽開發使用的基本步驟

1、許可權

這個在AndroidManifest.xml檔案中添加許可權,這個是必須要的

    //在程式中使用藍芽功能    <uses-permission android:name="android.permission.BLUETOOTH"/>    //啟動裝置發現或操縱藍芽設定    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

 

2、獲得藍芽適配器 BluetoothAdapter 對象 並根據獲得結果判斷當前裝置是否支援藍芽

BluetoothAdapter mBluetoothAdapter =  BluetoothAdapter.getDefaultAdapter();
if(mBluetoothAdapter == null){
//裝置不支援藍芽功能
Toast.makeText(this,"當前裝置不支援藍芽功能",Toast.LENGTH_SHORT).show();
return ;
}

 

3、在裝置支援藍芽功能的情況下,我們需要判斷藍芽功能是否開啟,若沒開啟,需給之開啟

isEnabled()判斷是否開啟藍芽功能,enable()方法用於開啟藍芽功能

if(!mBluetoothAdapter.isEnabled()){            boolean enable = mBluetoothAdapter.enable(); //傳回值表示 是否成功開啟了藍芽功能            if(enable){                Toast.makeText(this,"開啟藍芽功能成功!",Toast.LENGTH_SHORT).show();            }else{                Toast.makeText(this,"開啟藍芽功能失敗,請到'系統設定'中手動開啟藍芽功能!",Toast.LENGTH_SHORT).show();                return ;            }        }

 

4、查詢已經配對的藍牙裝置

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();        //如果有配對的裝置        if(pairedDevices.size() > 0){            ArrayList<String> mArrayAdapter = new ArrayList<>();            for(BluetoothDevice device : pairedDevices){                //通過array adapter在列表中添加裝置名稱和地址                mArrayAdapter.add(device.getName() + "\n" + device.getAddress());                Log.i("bluetooth",device.getName() + "\n" + device.getAddress());            }        }else{            Toast.makeText(this,"暫無已配對裝置",Toast.LENGTH_SHORT).show();        }

 

5、查詢附近可用的藍牙裝置

方法很簡單,就一句話

 

mBluetoothAdapter.startDiscovery();

注意此方法是非同步執行的,相當於開啟一個子線程,整個過程大約耗時12秒。

切記,當我們搜尋並成功串連到我們需要的裝置的時候,需要及時的關閉搜尋行為,可以使用cancelDiscovery。

 

接下來我們需要寫一個廣播來接收查詢到的裝置資料

private final BroadcastReceiver mReceiver = new BroadcastReceiver(){        public void onReceive(Context context, Intent intent){            String action = intent.getAction();            allBlueToothDevice = new ArrayList<>();            if(BluetoothDevice.ACTION_FOUND.equals(action)){                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);                Log.i("bluetooth","可配對裝置:"+device.getName() + "\n" + device.getAddress());            }        }    };

記得在onCreate()方法中註冊廣播:

 IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); registerReceiver(mReceiver, filter);

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.