[AA] Fixed App crash upon leaving AA Screen
The App was crashing as we tried to unsubscrive from an unsupported value. Now a try catch was added to prevent this.
This commit is contained in:
@@ -2,10 +2,6 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.camera.any"
|
||||
android:required="false" />
|
||||
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
|
||||
|
||||
@@ -25,6 +25,7 @@ import android.util.Log;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.OptIn;
|
||||
import androidx.car.app.CarContext;
|
||||
import androidx.car.app.HostException;
|
||||
import androidx.car.app.annotations.ExperimentalCarApi;
|
||||
import androidx.car.app.hardware.CarHardwareManager;
|
||||
import androidx.car.app.hardware.common.OnCarDataAvailableListener;
|
||||
@@ -204,7 +205,12 @@ public class VehicleInformationHelper {
|
||||
mCarInfo.removeSpeedListener(mSpeedListener);
|
||||
mCarInfo.removeEnergyLevelListener(mEnergyLevelListener);
|
||||
mCarInfo.removeMileageListener(mMileageListener);
|
||||
mCarInfo.removeEvStatusListener(mEvStatusListener);
|
||||
try {
|
||||
mCarInfo.removeEvStatusListener(mEvStatusListener);
|
||||
} catch (final RuntimeException e) {
|
||||
// Ignore and continue silently.
|
||||
Log.w(TAG, "unsubscribeFromAllCarInfo: Unsubscribing from experimental API failed");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -66,6 +66,9 @@ public class CarInfoEnergyLevel extends AbstractCarInfo<EnergyLevel>{
|
||||
|
||||
@Override
|
||||
float getFloatValue(final EnergyLevel value, final SupportedCarInfo propType) {
|
||||
if (value == null) {
|
||||
return -2f;
|
||||
}
|
||||
switch (propType) {
|
||||
case BATTERY_PERCENTAGE:
|
||||
return AndroidAutoConstants.unwrapFloatValue(value.getBatteryPercent());
|
||||
@@ -80,6 +83,9 @@ public class CarInfoEnergyLevel extends AbstractCarInfo<EnergyLevel>{
|
||||
|
||||
@Override
|
||||
boolean getBooleanValue(final EnergyLevel value, final SupportedCarInfo propType) {
|
||||
if (value == null) {
|
||||
return false;
|
||||
}
|
||||
switch (propType) {
|
||||
case LOW_ENERGY:
|
||||
return AndroidAutoConstants.unwrapBooleanValue(value.getEnergyIsLow());
|
||||
|
||||
@@ -56,6 +56,9 @@ public class CarInfoEvStatus extends AbstractCarInfo<EvStatus> {
|
||||
@OptIn(markerClass = ExperimentalCarApi.class)
|
||||
@Override
|
||||
boolean getBooleanValue(final EvStatus value, final SupportedCarInfo propType) {
|
||||
if (value == null) {
|
||||
return false;
|
||||
}
|
||||
switch (propType) {
|
||||
case EV_CONNECTOR_STATE:
|
||||
return AndroidAutoConstants.unwrapBooleanValue(value.getEvChargePortConnected());
|
||||
|
||||
@@ -45,6 +45,9 @@ public class CarInfoMileage extends AbstractCarInfo<Mileage> {
|
||||
|
||||
@Override
|
||||
float getFloatValue(final Mileage value, final SupportedCarInfo propType) {
|
||||
if (value == null) {
|
||||
return -2f;
|
||||
}
|
||||
if (propType == SupportedCarInfo.MILEAGE) {
|
||||
return AndroidAutoConstants.unwrapFloatValue(value.getOdometerMeters());
|
||||
}
|
||||
|
||||
@@ -60,6 +60,9 @@ public class CarInfoModel extends AbstractCarInfo<Model> {
|
||||
|
||||
@Override
|
||||
int getIntValue(final Model value, final SupportedCarInfo propType) {
|
||||
if (value == null) {
|
||||
return -2;
|
||||
}
|
||||
switch (propType) {
|
||||
case YEAR:
|
||||
return AndroidAutoConstants.unwrapIntValue(value.getYear());
|
||||
@@ -70,6 +73,9 @@ public class CarInfoModel extends AbstractCarInfo<Model> {
|
||||
|
||||
@Override
|
||||
String getStringValue(final Model value, final SupportedCarInfo propType) {
|
||||
if (value == null) {
|
||||
return "";
|
||||
}
|
||||
switch (propType) {
|
||||
case MANUFACTURER:
|
||||
return value.getManufacturer().getValue();
|
||||
|
||||
@@ -54,6 +54,9 @@ public class CarInfoSpeed extends AbstractCarInfo<Speed> {
|
||||
|
||||
@Override
|
||||
float getFloatValue(final Speed value, final SupportedCarInfo propType) {
|
||||
if (value == null) {
|
||||
return -2f;
|
||||
}
|
||||
switch (propType) {
|
||||
case RAW_SPEED:
|
||||
return AndroidAutoConstants.unwrapFloatValue(value.getRawSpeedMetersPerSecond());
|
||||
|
||||
@@ -45,6 +45,9 @@ public class CarInfoTollCard extends AbstractCarInfo<TollCard> {
|
||||
|
||||
@Override
|
||||
int getIntValue(final TollCard value, final SupportedCarInfo propType) {
|
||||
if (value == null) {
|
||||
return -2;
|
||||
}
|
||||
if (propType == SupportedCarInfo.TOLL_CARD) {
|
||||
return AndroidAutoConstants.unwrapIntValue(value.getCardState());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user