Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 淺談Bluetooth藍牙開發,淺談bluetooth藍牙

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

編輯:關於android開發

淺談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);

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved