[英]Android Enable/ Disable Bluetooth
我有一個代碼,在我的應用程序中,按鈕按下打開和關閉藍牙。
當藍牙打開或關閉時,我想將此按鈕的背景更改為綠色和紅色。 我為它做了google答案,並且有一個類似於它的stackoverflow帖子,他提到的方式不起作用。 我注冊了一個接收器,像往常一樣有一個開關盒,我提到這個按鈕的顏色變化,它不起作用。
事實上,接收器中的log.d甚至沒有顯示在android studio的終端中。
該守則不是關於如何影響顏色,而是從廣播接收器訪問藍牙的狀態變化
public void enableDisableBT(){
if(mBluetoothAdapter == null) {
Log.d(TAG, "enableDisableBT: Does not have BT capabilities");
Toast.makeText(getApplicationContext(),"No Bluetooth Capability", Toast.LENGTH_SHORT).show();
}
if (!mBluetoothAdapter.isEnabled()){
Log.d(TAG, "enableDisableBT: enabling BT");
//btnONOFF.setBackgroundColor(Color.GREEN); // Since bluetooth is NOT enabled, it enables bluetotoh and sets background color to green
Intent enableBTIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enableBTIntent);
IntentFilter BTIntent = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(mBroadcastReceiver1, BTIntent);
}
if(mBluetoothAdapter.isEnabled()){
Log.d(TAG, "enableDisableBT: disabling BT");
mBluetoothAdapter.disable();
btnONOFF.setBackgroundColor(Color.RED);// Since bluetooth is enabled, it disables bluetotoh and sets background color to green
incomingMessages.setText("Incoming Messages");
IntentFilter BTIntent = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(mBroadcastReceiver1, BTIntent);
}
}
private final BroadcastReceiver mBroadcastReceiver1 = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// when discovery finds a device
if (action.equals(mBluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED)){
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,mBluetoothAdapter.ERROR);
switch (state){
case BluetoothAdapter.STATE_OFF:
Log.d(TAG, "onReceive: STATE OFF");
break;
case BluetoothAdapter.STATE_TURNING_OFF:
Log.d(TAG, "mBroadcastReceiver1: STATE TURNING OFF");
break;
case BluetoothAdapter.STATE_ON:
//Log.d(TAG, "mBroadcastReceiver1: STATE ON");
btnONOFF.setBackgroundColor(Color.GREEN);
break;
case BluetoothAdapter.STATE_TURNING_ON:
Log.d(TAG, "mBroadcastReceiver1: STATE TURNING ON");
break;
}
}
}
};
您需要在清單中聲明BroadcastReceiver以偵聽藍牙狀態。 本文總結得很好: https : //droidhat.com/broadcast-receiver-using-change-in-bluetooth-status
1)
/**
* A receiver that listens to Bluetooth getting turned on.
*/
public class BluetoothReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
int state;
switch (action) {
case BluetoothAdapter.ACTION_STATE_CHANGED:
state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1);
if (state == BluetoothAdapter.STATE_ON) {
// change my button color
}
}
}
}
2)
<receiver
android:name="com.myapp.BluetoothReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
</intent-filter>
</receiver>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.