尝试这个顺序:
public void displayDetectedDevices(){
mBluetoothAdapter.startDiscovery();
// Create a BroadcastReceiver for ACTION_FOUND
mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// When discovery finds a device
if(BluetoothDevice.ACTION_FOUND.equals(action)){
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String deviceName = device.getName();
String deviceAddress = device.getAddress();
String s = " ";
unpairedDevices.add(deviceName + s + deviceAddress +" \n");
unpairedDevicesList = new ArrayList(unpairedDevices);
Toast.makeText(getActivity(), unpairedDevicesList.toString(), Toast.LENGTH_LONG).show();
}
}
};
}
请记住在onCreate()中声明如下:
public void onCreate(Bundle savedInstance){
super.onCreate(savedInstance);
unpairedDevicesList = new ArrayList();
unpairedDevices = new HashSet();
}
记住#2在onCreate()之前声明以下内容:
ArrayList unpairedDevicesList;
Set unpairedDevices;
最后的想法:
我使用Set和arrayList来放置检测到的设备.一个Set将不包含重复项.根据您要做的事情,两者都有用,因为它们提供不同的功能.另外here是我的github页面,它包含更多信息和一个完整的蓝牙应用程序.
随着集合的填充,设备将开始填充屏幕,具体取决于您希望UI的工作方式.我用了一个简单的清单.