Bluetoothが任意のAndroidデバイスで定期的に有効になっているかどうかを確認したいと思います。それを行うためにBroadcastReceiverを使用してキャッチできる意図はありますか、または他の方法がありますか?
そこに行きます:
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null) {
// Device does not support Bluetooth
} else {
if (!mBluetoothAdapter.isEnabled()) {
// Bluetooth is not enable :)
}
}
uses-permission
<uses-permission Android:name="Android.permission.BLUETOOTH" Android:required="false" />
ここに、この質問に対する答えとして他の選択肢があります。
まず、マニフェストファイルに次の行を追加します。
<uses-feature Android:name="Android.hardware.BLUETOOTH" Android:required="false"/>
ここで、Bluetoothのサポート可能性を確認する場所で、次のコードを使用します。
boolean isBluetoothSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
public boolean isBluetoothEnabled()
{
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
return mBluetoothAdapter.isEnabled();
}
マニフェストファイルでの許可:
<uses-permission Android:name="Android.permission.BLUETOOTH" />
プログラムでBluetoothの状態(オンまたはオフ)を確認するには:
BluetoothAdapter btAdapter = ((Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR1)
?((BluetoothManager)mContext.getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter()
:(BluetoothAdapter.getDefaultAdapter()));
if(btAdapter==null){
return;
}
if(btAdapter.getState()==BluetoothAdapter.STATE_ON){
//Bluetooth is ON
}
Intentアクションを聞くこともできます:
BluetoothAdapter.ACTION_STATE_CHANGED
使用できる
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
接続されたチェックBT用
mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_CONNECTED
チェック用bt切断
mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_DISCONNECTED
これは、@ xjaphxの答えの助けを借りて、やや単純化したバージョンです:
private boolean getBlueToothOn(){
BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
return btAdapter != null && btAdapter.isEnabled();
}
<uses-permission Android:name="Android.permission.BLUETOOTH" />