我有以下功能在启动时运行并且完美地工作。
我想在其他功能中添加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){
请帮助我!!
由于
答案 0 :(得分:0)
ACL_CONNECTED / DISCONNECTED不完全可靠,我从经验中学到,因为在设备连接期间可能会多次发生这种情况(例如,如果需要引脚,则会“连接”,如果超时则会“断开连接”提供了错误的引脚。这并不一定表示连接正确)。这表示较低层连接。
如果您想使用广播接收器,最好使用特定于您使用的配置文件的广播(例如A2DP)。每个人都有自己的广播。您可以听到的另一件事是来自ConnectivityManager的Connectivity_state_changed,对于BLUETOOTH类型(还没有真正试过这个)。
此外,在没有广播接收器的情况下检查它是否已连接的方式,例如,当您想要在更新活动之前检查后台时,将通过以下方式获取配置文件对象:
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, Sreedevi。