1

Bluetooth デバイスを検出してテキスト ファイルに書き込むコードを作成しました。ただし、テキスト ファイルに書き込むときは、最後に見つかったデバイスのみが書き込まれ、残りは無視されます。

たとえば、私のデバイスは「abcd」、「efgh」、および「ijkl」Bluetooth デバイスを検出し、「ijkl」のみがテキスト ファイルに書き込まれます。

検出されたすべてのデバイスをテキスト ファイルに書き込むにはどうすればよいですか?

以下は私の放送受信機のコードです

    private final BroadcastReceiver bcReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if(BluetoothDevice.ACTION_FOUND.equals(action)){
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

            deviceName = device.getName();

            try{
                File root = new File(Environment.getExternalStorageDirectory(), "Folder");
                if(!root.exists()){
                    root.mkdirs();
                }
                File deviceFiles = new File(root, "File");
                FileWriter writer = new FileWriter(deviceFiles);
                writer.append(deviceName);
                writer.flush();
                writer.close();
            }catch(IOException e){
                e.printStackTrace();
            }
            btArrayAdapter.add(deviceName);
        }
    }
};
4

2 に答える 2

0

まず - Sahil が提案したように、スキャンを開始する前にファイルを作成します。
また、パラメーターを使用してファイルを追加モードで開きます-

writer = new FileWriter(deviceFiles, true);
writer.write(deviceName);
于 2013-01-25T12:12:30.957 に答える
0

これは、新しいデバイスが見つかるたびに新しいファイルを作成しているためです。そのため、 abcdデバイスをファイル (たとえばDeviceFile ) に保存した後、次のデバイスを検索し、efghを見つけて、古いデバイスを置き換えるファイルDeviceFileを作成します。したがって、最後のデバイスのみがファイルに保存されます。

そのため、スキャンを開始する前にファイルを作成してください。

編集-

    private final BroadcastReceiver bcReceiver = new BroadcastReceiver() {
        File deviceFiles;

        @Override
        public void onReceive(Context context, Intent intent) {
            try {
                File root = new File(
                        Environment.getExternalStorageDirectory(), "Folder");
                if (!root.exists()) {
                    root.mkdirs();
                }
                deviceFiles = new File(root, "File");
            } catch (Exception e) {

            }
            String action = intent.getAction();
            if (BluetoothDevice.ACTION_FOUND.equals(action)) {
                BluetoothDevice device = intent
                        .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                deviceName = device.getName();
                try {
                    BufferedWriter out = new BufferedWriter(new FileWriter(
                            "deviceFiles", true));
                    out.write(deviceName);
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                btArrayAdapter.add(deviceName);
            }
        }
    };

私はそれをテストしていませんが。ロジックを実装しただけです。必要に応じて関連する調整を行います。

于 2013-01-25T11:58:45.110 に答える