蓝牙两次添加到ListView中,而不是一次

问题描述

| 我正在搜索范围内的可用“ 0”。出于某种原因,每个找到的设备只应显示一次,就被两次添加到ListView中。 有人知道我在做什么错吗?代码包括在下面。   发现发现设备时
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
   // Get the BluetoothDevice object from the Intent
   BluetoothDevice device;
   device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

   // If it\'s already paired,skip it,because it\'s been listed already
   if (device.getBondState() == BluetoothDevice.BOND_BONDED) {
      Log.v(\"test\",\"test\");

      mNewDevicesArrayAdapter.add(device.getName() + \"\\n\" + device.getAddress());
   }

} else if (BluetoothAdapter.ACTION_disCOVERY_FINISHED.equals(action)) {
   // When discovery is finished,change the Activity title

   setProgressBarIndeterminateVisibility(false);
   setTitle(R.string.select_device);

   if (mNewDevicesArrayAdapter.getCount() == 0) {
      String noDevices = getResources().getText(R.string.none_found).toString();
      mNewDevicesArrayAdapter.add(noDevices);
   }
}
    

解决方法

        在代码中,您使用equals操作。这就是为什么将两次相加。已配对的设备列表中的一个。并将相同的项目再次添加到新发明的列表中。试试这个代码。
// When discovery finds a device
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            // Get the BluetoothDevice object from the Intent
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            // If it\'s already paired,skip it,because it\'s been listed already
            if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
                mNewDevicesArrayAdapter.add(device.getName() + \"\\n\" + device.getAddress());
            }
        // When discovery is finished,change the Activity title
        } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
            setProgressBarIndeterminateVisibility(false);
            setTitle(R.string.select_device);
            if (mNewDevicesArrayAdapter.getCount() == 0) {
                String noDevices = getResources().getText(R.string.none_found).toString();
                mNewDevicesArrayAdapter.add(noDevices);
            }
        }