实际工作中为了fix某个issue,车载应用需要在车机andoid系统退出STR模式(Suspend to RAM)时候执行某个逻辑
解决方案参照anrdoid文档
注册一个CarPowerStateListener回调,重写onStateChanged 方法
在androidManifest.xml中增加以下权限
1
|
<uses-permission android:name="android.car.permission.CAR_POWER" />
|
在业务逻辑中注册CarPowerStateListener
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import android.car.hardware.power.CarPowerManager;
import android.car.hardware.power.CarPowerManager.CarPowerStateListener;
public class MyService extends Service
{
private CarPowerManager mCarPowerManager = null;
@override
public void onCreate()
{
super.onCreate();
Car car = Car.CreateCar(this);
mCarPowerManager = (CarPowerManager)car.getCarManager(Car.POWER_SERVICE);
if(mCarPowerManager!=null)
{
final CarPowerManager.CarPowerStateListener powerListener = new CarPowerManager.CarPowerStateListener () {
@Override
public void onStateChanged(int state) {
Log.i(TAG, "onStateChanged() state = " + state);
if(state==SUSPEND_EXIT) //此时退出STR mode
{
//do my business
}
}
};
}
}
@override
public void onDestroy()
{
super.onDestroy();
if(mCarPowerManager!=null)
{
mCarPowerManager.clearListener();
}
}
}
|