Android 如何使用异步任务检查蓝牙是否以编程方式与其他设备连接?
我需要在异步任务中的doInBackground方法中检查是否有任何设备已连接并通过蓝牙与我的设备通信。如果已连接/正在通信-将toast消息显示为“已连接”。如果未连接,则显示为“未连接设备”Android 如何使用异步任务检查蓝牙是否以编程方式与其他设备连接?,android,android-asynctask,android-bluetooth,Android,Android Asynctask,Android Bluetooth,我需要在异步任务中的doInBackground方法中检查是否有任何设备已连接并通过蓝牙与我的设备通信。如果已连接/正在通信-将toast消息显示为“已连接”。如果未连接,则显示为“未连接设备” 我到处都搜索过,但没有找到符合我要求的答案。我不知道您的详细问题,但我的解决方案是BroadhastReceiver for Bluetooth适配器 public类AnyActivity扩展了AppCompative活动{ 私有BluetoothAdapter mBluetoothAdapter=Bl
我到处都搜索过,但没有找到符合我要求的答案。我不知道您的详细问题,但我的解决方案是BroadhastReceiver for Bluetooth适配器
public类AnyActivity扩展了AppCompative活动{
私有BluetoothAdapter mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
私有静态布尔值isConnected=false;
私有静态布尔值isConnecting=false;
私有静态布尔值IsdConected=false;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_any);
IntentFilter BT_ConState_filter=新建
IntentFilter(BluetoothAdapter.ACTION\u CONNECTION\u STATE\u CHANGED);
这个.registerReceiver(BR_BT_ConState,BT_ConState_filter);
}
BroadcastReceiver BR_BT_ConState=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
字符串action\u BR\u BT\u ConState=intent.getAction();
int iBR_BT_ConState_state=intent.getIntExtra(BluetoothAdapter.EXTRA_CONNECTION_state,mblueothAdapter.ERROR);
if(动作\u BR\u BT\u ConState.equals(mBluetoothAdapter.action\u CONNECTION\u STATE\u CHANGED))
{
开关(iBR_BT_ConState_状态){
案例BluetoothAdapter.STATE_正在连接:
Toast.makeText(这个“连接”,Toast.LENGTH_SHORT).show();
断开连接=错误;
断开连接=正确;
isdconected=假;
打破
案例BluetoothAdapter.STATE_已连接:
Toast.makeText(这个“已连接”,Toast.LENGTH_SHORT).show();
断开连接=正确;
断开连接=错误;
isdconected=假;
打破
案例BluetoothAdapter.STATE_已断开:
Toast.makeText(这是“disconnected”,Toast.LENGTH_SHORT).show();
断开连接=错误;
断开连接=错误;
Isdconected=真;
打破
}
}
}
};
公共静态布尔值未连接(){
返回不连接;
}
公共静态布尔值isDisConnected(){
返回是断开连接的;
}
公共静态布尔值断开连接(){
返回是断开连接的;
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
上下文。未注册接收者(BR_BT_ConState);
}
}
如果你告诉我你到底想做什么,例如:
根据状态运行一些代码,
执行一些TextView更改,
或者类似回调的方法
或者别的,我可以试着帮你更多
我现在所做的是创建一些静态函数,您应该能够在AsynkTask中调用它们,只需调用
AnyActivity.isConnected()
,就可以返回BluetoothAdapter的当前状态。您是在说ble gatt吗?然后创建一个回调
private final BluetoothGattCallback gattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
switch (newState) {
case BluetoothProfile.STATE_DISCONNECTED:
break;
case BluetoothProfile.STATE_CONNECTING:
break;
case BluetoothProfile.STATE_CONNECTED:
break;
}
}
它正在按预期工作。但我需要根据我的要求做一些修改。谢谢你,伙计。没问题,你应该看看@Frestoni的解决方案,对我来说也不错,但从未尝试过。如果答案有用,请接受:)