Android Bluetooth: ArrayAdapter не заполняется. (Spinner) - PullRequest
0 голосов
/ 20 ноября 2018

Этот код не работает, он должен отображаться на всех устройствах в Spinner.Я включаю код манифеста, mRecieve и Oncreate.

Мой код манифеста:

`<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />`

Мой mReceiver:

`private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
            if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            String deviceName = device.getName();
            String deviceHardwareAddress = device.getAddress();
            spinnerArrayAdapter.add(deviceName+ "\n"+deviceHardwareAddress);
            spinnerArrayAdapter.notifyDataSetChanged();
        }
    }`

Мой при создании:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);
    spinner_bluetooth_list = findViewById(R.id.spinner);
    txt_password = findViewById(R.id.txt_password);
    txt_mac_address = findViewById(R.id.txt_mac_address);
    spinnerArrayAdapter = new ArrayAdapter(SettingsActivity.this, android.R.layout.simple_list_item_1);
    spinner_bluetooth_list.setAdapter(spinnerArrayAdapter);
    IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    registerReceiver(mReceiver, filter);


}

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Разве вы не должны вызывать notifyDataSetChanged() для Adapter?

private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            spinnerArrayAdapter.add(bluetoothDevice.getName() + "\n"
                    + bluetoothDevice.getAddress());
            spinnerArrayAdapter.notifyDataSetChanged() //OVER HERE!
        }
    }
};
0 голосов
/ 20 ноября 2018

Я не понял, что вы пытаетесь сделать

Прежде всего убедитесь, что вы отправили IntentFilter на этот BroadCast

если вы этого не сделаете, фрагмент поможет вам

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(broadcastReceiver, filter);

если первый шаг сделан, убедитесь, что вы уже запустили обнаружение

mBluetoothAdapter.startDiscovery();

и не забывайте, когда вы закончили (чтобы не связываться с проблемами производительности)

mBluetoothAdapter.cancelDiscovery();

Убедитесь, что вы объявили все разрешения s, необходимые для того, что вы хотите.

Если предыдущие шаги не помогли решить проблему, опишите ее более подробно, поскольку ваша проблема размыта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...