0

在我的 android 应用程序中,我需要执行一个操作来检查bluetooth socket在进入下一个状态之前是否已连接。

在清单文件中我定义了android:minSdkVersion="7" And android:targetSdkVersion="17".

所以我可以使用蓝牙 Socket 类中可用的isConnected()方法来检查这一点。但是这个方法已经添加了API level 14,因为我的android:targetSdkVersion="17"编译很好并且可以正确安装在我的设备中。

但问题出在运行时,它为我提供了以下错误。

java.lang.NoSuchMethodError: android.bluetooth.BluetoothSocket.isConnected

此外,运行 Android OS 版本 4.0(API 级别 14)或更高版本的设备也不会发生此错误。

主要是我相信这个POST解释了java.lang.NoSuchMethodError

问题

1)。 问题是如何识别蓝牙套接字是否与运行低于 4.0(API 级别 14)的 Android OS 版本的设备连接。

如果有人想在运行低于 Android 4.0 版本的设备中实现这一目标的解决方案。提前致谢...!!!

4

1 回答 1

2

尝试这个:

getApplicationContext().registerReceiver(receiver,
                new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED));

getApplicationContext().registerReceiver(receiver,
                new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED));

private final BroadcastReceiver mReceiver = new BroadcastReceiver()
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action))
        {
            // LOG - Connected
        }
        else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action))
        {
            // LOG - Disconnected
        }
    }
}

当您连接到另一台设备时,这将启动一个 BroadcastReceiver。我希望这就是你要找的。

于 2013-09-20T07:46:31.467 回答