Android的聯通性---Bluetooth(二)

來源:互聯網
上載者:User

藍芽許可權

為了在你的應用程式中使用藍芽功能,至少要聲明兩個藍芽許可權(BLUETOOTH和BLUETOOTH_ADMIN)中的一個。

為了執行任何藍芽通訊(如請求串連、接收串連和傳輸資料),你必須申請BLUETOOTH許可權。

為了啟動裝置發現或維護藍芽設定,你必須申請BLUETOOTH_ADMIN許可權。大多數需要這個許可權的應用程式,僅僅是為能夠發現本地的藍牙裝置。這個許可權所授予的其他能力應該不被使用,除非是電源管理的應用程式,它會在依據使用者的請求來修改藍芽設定。注意:如果你使用了BLUETOOTH_ADMIN許可權,那麼必須要有BLUETOOTH許可權。

在你的應用程式資訊清單檔案中聲明藍芽許可權,例如:

<manifest ... >

  <uses-permission android:name="android.permission.BLUETOOTH" />

  ...

</manifest>

關於聲明應用程式許可權的更多資訊,請參閱<uses-permission>

 

設定藍芽

在應用程式能夠利用藍芽通道通訊之前,需要確認裝置是否支援藍芽通訊,如果支援,要確保它是可用的。

如果不支援藍芽,那麼你應該有好的禁用所有藍芽功能。如果支援藍芽,但是被禁用的,那麼你要在不離開你的應用程式的情況下,請求使用者啟用藍芽功能,這種設定要使用BluetoothAdapter對象,在以下兩個步驟中完成。

1. 獲得BluetoothAdapter對象

BluetoothAdapter對象是所有藍芽活動都需要的,要獲得這個對象,就要調用靜態getDefaultAdapter()方法。這個方法會返回一個代表裝置自己的藍芽適配器的BluetoothAdapter對象。整個系統有一個藍芽適配器,你的應用程式能夠使用這個對象來進行互動。如果getDefaultAdapter()方法返回null,那麼該裝置不支援藍芽,你的處理也要在此結束。例如:

BluetoothAdapter mBluetoothAdapter =BluetoothAdapter.getDefaultAdapter();if(mBluetoothAdapter ==null){// Device does not support Bluetooth}2. 啟用藍芽功能

接下來,你需要確保藍芽是可用的。調用isEnabled()方法來檢查當前藍芽是否可用。如果這個方法返回false,那麼藍芽是被禁用的。要申請啟用藍芽功能,就要調用帶有ACTION_REQUEST_ENABLE操作意圖的startActivityForResult()方法。它會給系統設定發一個啟用藍芽功能的請求(不終止你的應用程式)。例如:

if(!mBluetoothAdapter.isEnabled()){    Intent enableBtIntent =newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);}

這時會顯示一個請求使用者啟用藍芽功能的對話方塊,1所示:

 

圖1.啟用藍芽功能的對話方塊。

如果使用者響應“Yes”,那麼系統會開始啟用藍芽功能,完成啟動過程(有可能失敗),焦點會返回給你的應用程式。

傳遞給startActivityForResult()方法的REQUEST_ENABLE_BT常量,是一個你的應用程式中定義的整數(它必須大於0),系統會把它作為requestCode參數返回到你的onActivityResult()回調實現中。

如果藍芽功能啟用成功,你的Activity會在onActivityResult()回調中接收到RESULT_OK結果,如果藍芽沒有被啟動(或者使用者響應了“No”),那麼該結果編碼是RESULT_CANCELED。

可選地,你的應用程式還可以監聽ACTION_STATE_CHANGED廣播Intent,無論藍芽狀態何時改變,系統都會廣播這個Intent。這個廣播包含的附加欄位EXTRA_STATE和EXTRA_PREVIOUS_STATE中分別指明了新的和舊的藍芽狀態。這些附加欄位中可能的值是:STATE_TURNING_ON、STATE_ON、STATE_TURNING_OFF和STATE_OFF。監聽這個廣播對於在應用程式運行時檢測藍芽的狀態是有用的。

提示:啟用可發現能力會自動啟動藍芽功能。如果你計劃在執行藍芽活動之前,要始終啟用裝置的可發現機制,就可以跳過上面的第2步,詳細請參閱下文“啟用藍芽可發現”。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.