星期二, 3月 28, 2017
[ Android ] BroadcastReceiver 用法 (二) AndroidManifest.xml 註冊
利用藍芽偵測來當這個例子,
寫一個broadcastreceiver來偵測藍芽機器,
如果有偵測到就印出來他的名字。
(一) 建立Receiver
一開始我先直接建個BluetoothReceiver的java檔,
來繼承BroadcastReceiver這個class,
他就會建立個"onReceive"這個method,
而裡面就是要處理接收到event後要做什麼事。
記得在onReceive()內不要處理超過十秒,不然會被回傳ANR。
there is a timeout of 10 seconds that the system allows before considering the receiver to be blocked and a candidate to be killed
然後我裡面只處理一件事,
我會去getActioin()來拿目前intent是有什麼event,
而我會去監聽"BluetoothDevice.ACTION_FOUND"這個event,
代表如果有偵測到bluetooth就會觸發。
if (BluetoothDevice.ACTION_FOUND.equals(action)) {....}
因為BluetoothDevice是用Parcelable包裝的,
所以使用getParcelableExtra來拿取,
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
之後直接用getName()來讀取bluetooth的名稱。
(二) AndroidManifest.xml內宣告
<receiver android:name=".BluetoothReceiver">
<intent-filter>
<action android:name="android.bluetooth.device.action.FOUND" />
</intent-filter>
</receiver>
我宣告了name是BluetoothReceiver這個class,
而"intent-filter"是定義receiver可接收的行為,
因為bluetooth需要授權,
所以要先拿到權限才行。
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
SourceCode
Ref 1
Ref 2
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言