Не могу найти устройства Bluetooth

Делаю НИР по теме "Чатик на bluetooth", столкнулась с проблемой: не получается найти устройства по Bluetooth рядом.
Поиск должен происходить по нажатию кнопки.
Код MainActivity

public class MainActivity extends AppCompatActivity {
    Switch switch_bt;
    Switch switch_visible;
    Button button_search;
    ListView List_bt;

    private BluetoothAdapter My_Bluetooth;
    private ArrayList list_arr = new ArrayList();
    private ArrayAdapter<String> adapter;

    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        List_bt = findViewById(R.id.List_bt);
        button_search = findViewById(R.id.button_search);

        My_Bluetooth = BluetoothAdapter.getDefaultAdapter();

    button_search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                adapter = new ArrayAdapter<>(MainActivity.this, R.layout.listitems, R.id.list_content, list_arr);
                if (adapter.getCount()!= 0)
                    adapter.clear();
                list_arr.clear();
                My_Bluetooth.startDiscovery();
                IntentFilter myFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
                registerReceiver(mResiver, myFilter);
                myFilter = new IntentFilter((BluetoothAdapter.ACTION_DISCOVERY_FINISHED));
                registerReceiver(mResiver, myFilter);

            }
        });
    }

    private final BroadcastReceiver mResiver = new BroadcastReceiver() {
        @SuppressLint("MissingPermission")
        @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);
                if (device.getName() != null) {
                    list_arr.add(device.getName() + "  -  " + device.getAddress());

                }
            } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
                My_Bluetooth.cancelDiscovery();
            }
            adapter = new ArrayAdapter<>(MainActivity.this, R.layout.listitems, R.id.list_content, list_arr);
            List_bt.setAdapter(adapter);
        }
    };
}

Это конкретно кусок кода, который должен отвечать за поиск и вывод.
Манифесты:

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

В консоли при запуске приложения (запускаю на устройстве через отладку) выглядит так, как будто ловит только ACTION_DISCOVERY_FINISHED, т.е. не то что не выводит найденное, но даже не находит. ACTION_FOUND Не выводится ни разу. При этом когда в настройках самого телефона включаю "Поиск устройств" оно все прекрасно находит.
Вывод уже сопряженных устройств работает прекрасно, а поиск новых - нет.

Собственно, вопрос: как реализовать поиск новых, еще не сопряженных устройств Bluetooth?


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