gpt4 book ai didi

java - android - 如何检查设备是否已连接蓝牙

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:14 30 4
gpt4 key购买 nike

我有以下函数在启动时运行并且工作完美。

我想在其他函数中添加 if 条件,以检查设备是否仍处于连接状态。

这是代码

private final  Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case BluetoothService.MESSAGE_STATE_CHANGE:
switch (msg.arg1) {
case BluetoothService.STATE_CONNECTED:
Toast.makeText(getApplicationContext(), "Connect successful",
Toast.LENGTH_SHORT).show();
btnClose.setEnabled(true);
btnSend.setEnabled(true);
btnSendDraw.setEnabled(true);
break;
case BluetoothService.STATE_CONNECTING:
Log.d("À¶ÑÀµ÷ÊÔ","ÕýÔÚÁ¬½Ó.....");
break;
case BluetoothService.STATE_LISTEN:
case BluetoothService.STATE_NONE:
Log.d("À¶ÑÀµ÷ÊÔ","µÈ´ýÁ¬½Ó.....");
break;
}
break;
case BluetoothService.MESSAGE_CONNECTION_LOST:
Toast.makeText(getApplicationContext(), "Device connection was lost",
Toast.LENGTH_SHORT).show();
btnClose.setEnabled(false);
btnSend.setEnabled(false);
btnSendDraw.setEnabled(false);
break;
case BluetoothService.MESSAGE_UNABLE_CONNECT:
Toast.makeText(getApplicationContext(), "Unable to connect device",
Toast.LENGTH_SHORT).show();
break;
}
}

};

其他功能是这样启动的

     @Override
protected void onPostExecute(String result){

请帮助我!!

谢谢

最佳答案

ACL_CONNECTED/DISCONNECTED 并不完全可靠,我从经验中了解到,因为这种情况可能在设备连接期间发生多次(例如,如果需要引脚,您将获得“连接”,然后如果超时/提供错误的引脚,则“断开连接”。这并不一定表明连接正确)。这表示下层连接。

如果您想使用广播接收器,最好使用特定于您所使用的配置文件的广播(例如 A2DP)。每个人都有自己的广播。您可以收听的另一件事是来自 ConnectivityManager 的 Connectivity_state_changed,用于 BLUETOOTH 类型(还没有真正尝试过这个)。

此外,在没有广播接收器的情况下检查它是否已连接的方法,例如,当您想在更新 Activity 之前检查后台时,将通过以下方式获取配置文件对象:


mBluetoothAdapter.getProfileProxy(mContext, mA2DPProfileListener, BluetoothProfile.A2DP);

其中mA2DPProfileListener是一个ServiceListener对象:

<code>
private ServiceListener mA2DPProfileListener = new ServiceListener(){
//anonymous inner type. etc.
public void onServiceConnected(int profile, BluetoothProfile proxy) {
//cast the BluetoothProfile object to the profile you need, say
//BluetoothA2DP proxyA2DP = (BluetoothA2DP) proxy;
int currentState = proxyA2DP.getConnectionState(mDevice);
//mDevice is the BluetoothDevice object you can get from
//BluetoothAdapter.getRemote...
}

public void onServiceDisconnected(int profile) {
}
}
</code>

您可以检查currentState指向什么,并确定设备是否已连接/断开/连接等。

HTH,斯里德维。

关于java - android - 如何检查设备是否已连接蓝牙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28038883/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com