Bluetoothをオン/オフするアプリケーションを作成しました。私はスイッチボタンを使いました。Bluetoothを有効/無効にする
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private final static int REQUEST_ENABLE_BT = 1;
BluetoothAdapter mBluetoothAdapter = null;
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(mBluetoothAdapter.ACTION_STATE_CHANGED)) {
final int state = intent.getIntExtra(mBluetoothAdapter.EXTRA_STATE, mBluetoothAdapter.ERROR);
switch (state){
case BluetoothAdapter.STATE_OFF:
break;
case BluetoothAdapter.STATE_ON:
break;
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Switch bluetoothSwitch = (Switch) findViewById(R.id.bluetoothSwitch);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null){
//Device does not support bluetooth
}
else{
bluetoothSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(bluetoothSwitch.isChecked() && !mBluetoothAdapter.isEnabled()){
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
IntentFilter BTIntent = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(mReceiver, BTIntent);
}
if(!bluetoothSwitch.isChecked() && mBluetoothAdapter.isEnabled()){
mBluetoothAdapter.disable();
IntentFilter BTIntent = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(mReceiver, BTIntent);
}
}
});
}
}
}
問題は、私は私のアプリからの設定から、Bluetoothをオン/オフしていない場合は、スイッチが変化しないということである。ここでは、コードです。 ブロードキャストレシーバを実装しましたが、スイッチからアクセスできません。放送受信機内部の
bluetoothSwich.setChecked(true)
が、それは動作しません: 私が試してみました。
のTy
EDIT: 私は部分的に私は私のアプリに少なくとも1時間からオン/オフボタンをクリックする必要が最初の設定からオン/オフ動作をキャッチするが、世界的なスイッチに問題を解決しました。なにか提案を?
は、には、Androidマニフェストファイル内に受信機を追加していますか?広いキャストレシーバーの中でそれにアクセスするためにあなたのスイッチボタンをグローバルにしてください –
私はアンドロイドマニフェストで受信機を追加しました。私はswtichボタンをグローバルにしようとしましたが、ブロードキャストレシーバーからアクセスできますが、設定からブルートゥースのオン/オフをトリガーすることはできません – Tenrampi