[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"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
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.POST_NOTIFICATIONS" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
|
<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.NonNull;
|
||||||
import androidx.annotation.OptIn;
|
import androidx.annotation.OptIn;
|
||||||
import androidx.car.app.CarContext;
|
import androidx.car.app.CarContext;
|
||||||
|
import androidx.car.app.HostException;
|
||||||
import androidx.car.app.annotations.ExperimentalCarApi;
|
import androidx.car.app.annotations.ExperimentalCarApi;
|
||||||
import androidx.car.app.hardware.CarHardwareManager;
|
import androidx.car.app.hardware.CarHardwareManager;
|
||||||
import androidx.car.app.hardware.common.OnCarDataAvailableListener;
|
import androidx.car.app.hardware.common.OnCarDataAvailableListener;
|
||||||
@@ -204,7 +205,12 @@ public class VehicleInformationHelper {
|
|||||||
mCarInfo.removeSpeedListener(mSpeedListener);
|
mCarInfo.removeSpeedListener(mSpeedListener);
|
||||||
mCarInfo.removeEnergyLevelListener(mEnergyLevelListener);
|
mCarInfo.removeEnergyLevelListener(mEnergyLevelListener);
|
||||||
mCarInfo.removeMileageListener(mMileageListener);
|
mCarInfo.removeMileageListener(mMileageListener);
|
||||||
|
try {
|
||||||
mCarInfo.removeEvStatusListener(mEvStatusListener);
|
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
|
@Override
|
||||||
float getFloatValue(final EnergyLevel value, final SupportedCarInfo propType) {
|
float getFloatValue(final EnergyLevel value, final SupportedCarInfo propType) {
|
||||||
|
if (value == null) {
|
||||||
|
return -2f;
|
||||||
|
}
|
||||||
switch (propType) {
|
switch (propType) {
|
||||||
case BATTERY_PERCENTAGE:
|
case BATTERY_PERCENTAGE:
|
||||||
return AndroidAutoConstants.unwrapFloatValue(value.getBatteryPercent());
|
return AndroidAutoConstants.unwrapFloatValue(value.getBatteryPercent());
|
||||||
@@ -80,6 +83,9 @@ public class CarInfoEnergyLevel extends AbstractCarInfo<EnergyLevel>{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean getBooleanValue(final EnergyLevel value, final SupportedCarInfo propType) {
|
boolean getBooleanValue(final EnergyLevel value, final SupportedCarInfo propType) {
|
||||||
|
if (value == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (propType) {
|
switch (propType) {
|
||||||
case LOW_ENERGY:
|
case LOW_ENERGY:
|
||||||
return AndroidAutoConstants.unwrapBooleanValue(value.getEnergyIsLow());
|
return AndroidAutoConstants.unwrapBooleanValue(value.getEnergyIsLow());
|
||||||
|
|||||||
@@ -56,6 +56,9 @@ public class CarInfoEvStatus extends AbstractCarInfo<EvStatus> {
|
|||||||
@OptIn(markerClass = ExperimentalCarApi.class)
|
@OptIn(markerClass = ExperimentalCarApi.class)
|
||||||
@Override
|
@Override
|
||||||
boolean getBooleanValue(final EvStatus value, final SupportedCarInfo propType) {
|
boolean getBooleanValue(final EvStatus value, final SupportedCarInfo propType) {
|
||||||
|
if (value == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
switch (propType) {
|
switch (propType) {
|
||||||
case EV_CONNECTOR_STATE:
|
case EV_CONNECTOR_STATE:
|
||||||
return AndroidAutoConstants.unwrapBooleanValue(value.getEvChargePortConnected());
|
return AndroidAutoConstants.unwrapBooleanValue(value.getEvChargePortConnected());
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ public class CarInfoMileage extends AbstractCarInfo<Mileage> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
float getFloatValue(final Mileage value, final SupportedCarInfo propType) {
|
float getFloatValue(final Mileage value, final SupportedCarInfo propType) {
|
||||||
|
if (value == null) {
|
||||||
|
return -2f;
|
||||||
|
}
|
||||||
if (propType == SupportedCarInfo.MILEAGE) {
|
if (propType == SupportedCarInfo.MILEAGE) {
|
||||||
return AndroidAutoConstants.unwrapFloatValue(value.getOdometerMeters());
|
return AndroidAutoConstants.unwrapFloatValue(value.getOdometerMeters());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,9 @@ public class CarInfoModel extends AbstractCarInfo<Model> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
int getIntValue(final Model value, final SupportedCarInfo propType) {
|
int getIntValue(final Model value, final SupportedCarInfo propType) {
|
||||||
|
if (value == null) {
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
switch (propType) {
|
switch (propType) {
|
||||||
case YEAR:
|
case YEAR:
|
||||||
return AndroidAutoConstants.unwrapIntValue(value.getYear());
|
return AndroidAutoConstants.unwrapIntValue(value.getYear());
|
||||||
@@ -70,6 +73,9 @@ public class CarInfoModel extends AbstractCarInfo<Model> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
String getStringValue(final Model value, final SupportedCarInfo propType) {
|
String getStringValue(final Model value, final SupportedCarInfo propType) {
|
||||||
|
if (value == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
switch (propType) {
|
switch (propType) {
|
||||||
case MANUFACTURER:
|
case MANUFACTURER:
|
||||||
return value.getManufacturer().getValue();
|
return value.getManufacturer().getValue();
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ public class CarInfoSpeed extends AbstractCarInfo<Speed> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
float getFloatValue(final Speed value, final SupportedCarInfo propType) {
|
float getFloatValue(final Speed value, final SupportedCarInfo propType) {
|
||||||
|
if (value == null) {
|
||||||
|
return -2f;
|
||||||
|
}
|
||||||
switch (propType) {
|
switch (propType) {
|
||||||
case RAW_SPEED:
|
case RAW_SPEED:
|
||||||
return AndroidAutoConstants.unwrapFloatValue(value.getRawSpeedMetersPerSecond());
|
return AndroidAutoConstants.unwrapFloatValue(value.getRawSpeedMetersPerSecond());
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ public class CarInfoTollCard extends AbstractCarInfo<TollCard> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
int getIntValue(final TollCard value, final SupportedCarInfo propType) {
|
int getIntValue(final TollCard value, final SupportedCarInfo propType) {
|
||||||
|
if (value == null) {
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
if (propType == SupportedCarInfo.TOLL_CARD) {
|
if (propType == SupportedCarInfo.TOLL_CARD) {
|
||||||
return AndroidAutoConstants.unwrapIntValue(value.getCardState());
|
return AndroidAutoConstants.unwrapIntValue(value.getCardState());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user