Проблема с обнаружением устройств на Android с помощью bluetooth

В моём приложении мне нужно будет соединяться и работать с устройствами по bluetooth. На сайте android studio я прочитал, как проверить поддержку BT, сопряженные устройства, добавить их в список, с этим проблем не было, всё работало. Но код, который должен искать устройства рядом, никак не хочет работать, как бы я не пытался. Сначала думал, что проблема именно в динамическом массиве или в ListView, в который должны добавляться имена и адреса найденный устройств, поэтому пробовал создавать другой ListView, другой массив, пытался вывести информацию в toast, но нет, ничего не срабатывало. Такое чувство, что метод onReceive класса BroadcastReceiver вообще не работает. Может быть проблема в самом телефоне, на котором я всё это тестирую? (Вне приложения телефон нормально находит устройства) Вот код, в котором я пытаюсь найти новые устройства методом startDiscovery(), засунуть их в динамический массив discoveredDevices и отобразить в ListView с помощью адаптера, попутно отобразив этапы метода onReceive в toast. Метод discoverDevices() срабатывает по нажатию кнопки (код создания кнопок и проверки сопряженный устройств опустил, чтобы не загромождать место, но если нужен, он здесь https://github.com/HtonicSava/src/blob/main/main/java/com/example/myapplication/MainActivity.java):

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

public class MainActivity extends AppCompatActivity {

    BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
    boolean buttonToggle = false;

    ArrayList<String> discoveredDevices = new ArrayList<>();
    ListView listView;
    ArrayAdapter<String> adapter;

    final BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
                Toast toast = Toast.makeText(getApplicationContext(),"ACTION_DISCOVERY_STARTED" , Toast.LENGTH_SHORT);
                toast.show();
                //discovery starts
            } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
                //discovery finishes
                Toast toast = Toast.makeText(getApplicationContext(),"ACTION_DISCOVERY_FINISHED" , Toast.LENGTH_SHORT);
                toast.show();
            } else if (BluetoothDevice.ACTION_FOUND.equals(action)) {
                Toast toast = Toast.makeText(getApplicationContext(), "ACTION_FOUND", Toast.LENGTH_SHORT);
                toast.show();
                //bluetooth device found
                BluetoothDevice device = (BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                discoveredDevices.add(device.getName() + " : " + device.getAddress());
                adapter.notifyDataSetChanged();
            }

        }
    };



    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = getIntent();
        String[] message = intent.getStringArrayExtra(LoginMenu.EXTRA_MESSAGE);
        TextView textView = findViewById(R.id.textView);
        textView.setText(getString(R.string.profile_info, message[0], message[1]));


        listView = findViewById(R.id.pairedList);
        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, discoveredDevices);
        listView.setAdapter(adapter);

        IntentFilter filter = new IntentFilter();
        filter.addAction(BluetoothDevice.ACTION_FOUND);
        filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
        filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
        registerReceiver(receiver, filter);

        checkBluetooth();

    }

    public void discoverDevices(){
        bluetooth.startDiscovery();
        adapter.notifyDataSetChanged();
    }


Ответы (0 шт):