Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe87df9e authored by Roman Kiryanov's avatar Roman Kiryanov
Browse files

Check mBtRouteProvider for null before using it



BluetoothRouteProvider.getInstance returns null if
there is no BT adapter available (e.g. on Android Studio
Emulator) which causes a bad crash.

Bug: 152647633
Test: boot, play video in chrome
Signed-off-by: default avatarRoman Kiryanov <rkir@google.com>
Change-Id: Ic52a164c348290463cbf1fba913a67d378b746d9
parent 5bc4b972
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -103,6 +103,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
        }
        updateDeviceRoute(newAudioRoutes);

        // .getInstance returns null if there is no bt adapter available
        mBtRouteProvider = BluetoothRouteProvider.getInstance(context, (routes) -> {
            publishProviderState();

@@ -116,11 +117,13 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
        mContext.registerReceiver(new VolumeChangeReceiver(),
                new IntentFilter(AudioManager.VOLUME_CHANGED_ACTION));

        if (mBtRouteProvider != null) {
            mHandler.post(() -> {
                mBtRouteProvider.start();
                notifyProviderState();
            });
        }
    }

    @Override
    public void requestCreateSession(long requestId, String packageName, String routeId,
@@ -153,12 +156,14 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {

    @Override
    public void transferToRoute(long requestId, String sessionId, String routeId) {
        if (mBtRouteProvider != null) {
            if (TextUtils.equals(routeId, mDeviceRoute.getId())) {
                mBtRouteProvider.transferTo(null);
            } else {
                mBtRouteProvider.transferTo(routeId);
            }
        }
    }

    @Override
    public void setRouteVolume(long requestId, String routeId, int volume) {
@@ -294,7 +299,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
                    mDeviceRoute = new MediaRoute2Info.Builder(mDeviceRoute)
                            .setVolume(newVolume)
                            .build();
                } else {
                } else if (mBtRouteProvider != null) {
                    mBtRouteProvider.setSelectedRouteVolume(newVolume);
                }
                publishProviderState();