我正在使用Android工作室开发蓝牙应用程序。今天,我遇到了一个奇怪的问题。 我有3台蓝牙设备,一部智能手机,一台平板电脑和另一台设备,但我们并不关心它。
我在两台设备上执行相同的应用程序,但智能手机在Android 8.1(API 27)上,平板电脑在Android 4.0.4(API 15)上。 在智能手机上,该应用程序运行良好。当我扫描附近的设备时,我得到了4种不同的设备。
但是有问题。在平板电脑上,当我扫描附近的设备时,我的智能手机检测到的每台设备差不多有10次。我真的不知道为什么两个设备都没有发现彼此。也许Android版本是出错的原因。
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) { // discover devices
Scanned_devices = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
scanned_deviceName = Scanned_devices.getName();
scanned_macAddress = Scanned_devices.getAddress();
mDeviceList.add(scanned_deviceName + "\n" + scanned_macAddress);
Log.i("BT", scanned_deviceName + "\n" + scanned_macAddress);
Set<BluetoothDevice> pairedDevices = blueAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device : pairedDevices) {
try {
if (scanned_deviceName.equals(device.getName()) || scanned_macAddress.equals(device.getAddress())) {
Toast.makeText(getApplicationContext(), "Already Paired", Toast.LENGTH_LONG).show();
mDeviceList.remove(scanned_deviceName + "\n" + scanned_macAddress);
} //else {
//mDeviceList.add(scanned_deviceName + "\n" + scanned_macAddress);
//Log.i("BT", scanned_deviceName + "\n" + scanned_macAddress);
//}
}catch(Exception e)
{
Log.d("tag", "not working");
Toast.makeText(getApplicationContext(), "not working..", Toast.LENGTH_LONG).show();
}
}
}
Scanned_devices_ListView.setAdapter(new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, mDeviceList));
}
}
};
答案 0 :(得分:0)
在尝试了很多事情来检测设备是否已经存在于我的ArrayList中之后,我尝试了这段代码:
if (!mDeviceList.contains(scanned_deviceName + "\n" + scanned_macAddress))
{
mDeviceList.add(scanned_deviceName + "\n" + scanned_macAddress);
Log.i("BT", scanned_deviceName + "\n" + scanned_macAddress);
}
这将检查数组是否包含此字符串:
DeviceName
DeviceMac@
如果条件为真,则将String添加到ArrayList。
如果它为假(在ArrayList中有另一个具有相同内容的String),则不会将String添加到ArrayList。