2

Android で検出可能な Bluetooth デバイスのリストを取得しようとしています。デバイスを取得し、ArrayAdapter を使用して、デバイスの ListView を作成できます。私の質問は、この情報を別の機能に使用できるように、それらをリストに保存するにはどうすればよいですか? Android開発者サイトを見てみましたが、ListViewのチュートリアルしかありません。他のチュートリアルや説明も探しましたが、間違った情報が得られているようです。

私のコードは次のとおりです。

protected List<String> doInBackground(Void... arg0) {
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothAdapter.startDiscovery();

// Create a BroadcastReceiver for ACTION_FOUND
final List<String> discoverableDevicesList = new ArrayList<String>();

final BroadcastReceiver 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)) {
            // Get the BluetoothDevice object from the Intent
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            short rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE);
            // Add the name and address to an array adapter to show in a ListView
            System.out.println(device.getName());
            discoverableDevicesList.add(device.getName() + "\n" + device.getAddress() + "\n" + rssi);   
        }
    }
};
// Register the BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
context.registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy

return discoverableDevicesList;

}

おそらくBluetoothデバイスのスキャンに関連する発見時間と関係がありますが、それぞれが発見されたので、リストに追加するだけでよいと思いましたか? 誰かが似たようなものに出くわしたり、解決策を考えたりしましたか? とても有難い!

4

1 に答える 1

1

UIスレッドと関係がある可能性があるようです。AsyncTask を起動して、Bluetooth デバイスの検出で ListView を設定しようとしましたか? 私はあなたがそうするのを見ます:

           // Add the name and address to an array adapter to show in a ListView
        System.out.println(device.getName());
        discoverableDevicesList.add(device.getName() + "\n" + device.getAddress() + "\n" + rssi);   

レシーバーの内部ですが、UI スレッドが応答を処理する準備が整っているという保証はありません。

私はこれをhttp://android-developers.blogspot.com/2009/05/painless-threading.htmlから取得しています

于 2013-02-27T19:41:43.237 に答える