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: Roman Kiryanov <rkir@google.com>
Change-Id: Ic52a164c348290463cbf1fba913a67d378b746d9
This commit is contained in:
Roman Kiryanov
2020-03-27 17:40:27 -07:00
parent 5bc4b972dc
commit fe87df9ea6

View File

@@ -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,10 +117,12 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
mContext.registerReceiver(new VolumeChangeReceiver(),
new IntentFilter(AudioManager.VOLUME_CHANGED_ACTION));
mHandler.post(() -> {
mBtRouteProvider.start();
notifyProviderState();
});
if (mBtRouteProvider != null) {
mHandler.post(() -> {
mBtRouteProvider.start();
notifyProviderState();
});
}
}
@Override
@@ -153,10 +156,12 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
@Override
public void transferToRoute(long requestId, String sessionId, String routeId) {
if (TextUtils.equals(routeId, mDeviceRoute.getId())) {
mBtRouteProvider.transferTo(null);
} else {
mBtRouteProvider.transferTo(routeId);
if (mBtRouteProvider != null) {
if (TextUtils.equals(routeId, mDeviceRoute.getId())) {
mBtRouteProvider.transferTo(null);
} else {
mBtRouteProvider.transferTo(routeId);
}
}
}
@@ -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();