Как открыть приложение, используя данные сопряженного устройства Bluetooth в широковещательном приемнике - PullRequest
1 голос
/ 18 марта 2019

Мое приложение - использовать OBD-сканер (который предоставляет интерфейс Bluetooth) для получения данных автомобиля. Я хочу добавить одну функцию в это приложение - приложение должно открываться каждый раз, когда obd (уже сопряженный) автомобиля находится в диапазоне Bluetooth мобильного телефона.

Мои мысли о реализации этого - получить список сопряженных устройств в широковещательном приемнике, если какое-либо из парных устройств содержит подстроку obd (маленькую или заглавную), тогда приложение должно открыться само.

что я достиг: всякий раз, когда любое мобильное устройство, которое содержит строку obd Sub, подключено к моему мобильному телефону, мое приложение само открывается. Процесс подключения выполняется вручную с помощью настроек устройства.

код внутри трансляции для вышеупомянутого результата:

public class BrodcastBlueTooth extends BroadcastReceiver {
    public BrodcastBlueTooth() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {

        String DeviceName=null;
        String action = intent.getAction();
//        Log.d("BroadcastActions", "Action "+action+"received");
        int state;
        BluetoothDevice bluetoothDevice;

        switch(action)
        {

            case BluetoothDevice.ACTION_ACL_CONNECTED:
                bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                Toast.makeText(context, "Connected to "+bluetoothDevice.getName(), Toast.LENGTH_SHORT).show();
                Log.d("BroadcastActions", "Connected to "+bluetoothDevice.getName());

                DeviceName=bluetoothDevice.getName();
                if (DeviceName.contains("OBD")){
                    Intent newIntent = new Intent();
                    newIntent.setClassName("com.quad14.obdnewtry", "com.quad14.obdnewtry.activity.MainActivity");
                    newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                    context.startActivity(newIntent);


                }else if(DeviceName.contains("obd")){
                    Intent newIntent = new Intent();
                    newIntent.setClassName("com.quad14.obdnewtry", "com.quad14.obdnewtry.activity.MainActivity");
                    newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                    context.startActivity(newIntent);
                }

                break;

            case BluetoothDevice.ACTION_ACL_DISCONNECTED:
                bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
//                Toast.makeText(context, "Disconnected from "+bluetoothDevice.getName(),
//                        Toast.LENGTH_SHORT).show();
                break;
        }

Я объявляю свою трансляцию в манифесте, поэтому она всегда работает в фоновом режиме.

Я получил список сопряженных устройств по следующему коду:

   public void PairedDevice(){
            Set<BluetoothDevice> pairedDevices = BTAdapter.getBondedDevices();
            if (pairedDevices.size() > 0) {
                for (BluetoothDevice device : pairedDevices) {
                    PaiedDevices.add(device.getName());

                    Log.e("DeviceName", String.valueOf(PaiedDevices));
                    PairDeviceFlag=true;
                }
            }
        }  

что мне делать с этого момента, чтобы получить желаемый результат. Любые другие способы также приветствуются.

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