提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。
一、需求背景
需求来源:Dolby Atmos应用二次开发的客户需求
Android版本:Android 14(高通平台)
需求说明:为Dolby Atmos应用新增加一个TileService的提醒功能,当用户打开Dolby Atmos并且没有添加TileService的时候,提示用户是否要将该应用的TileService添加到QucikSettings中。
需求分解:
①为Dolby Atmos应用新增加一个TileService的提醒功能,当用户打开Dolby Atmos并且没有添加TileService的时候,提示用户是否要将该应用的TileService添加到QucikSettings中。
②当Dolby Atmos的TileService已经被用户手动添加到QucikSettings中时,点击按钮时不会再弹出提示框要求用户添加TileService,只有当TileService没有被添加到QucikSettings中时,点击按钮才会调用requestAddTileService()方法。
③能监听Dolby Atmos的TileService在QuickSettings中的状态,并实时更新。
二、需求实现
2.1 监听TileService在QuickSettings中的状态
为了实现需求②和③,我决定通过SharedPreferences来存储Dolby Atmos的TileService是否已经被添加的状态。这时我们可以利用MyTileService中的onTileAdded()和onTileRemoved()方法来刷新TileService的添加的状态。
public class MyTileService extends TileService {
private HeadphoneReceiver headphoneReceiver;
private static String TAG = "MyTileServiceTAG";
++ private static String TILE_ADDED_KEY = "tile_added";
// Called when the user adds your tile.
@Override
public void onTileAdded() {
super.onTileAdded();
Log.d(TAG, "onTileAdded()");
++ saveDolbyTileAddState(true);
}
· · ·
// Called when the user removes your tile.
@Override
public void onTileRemoved() {
super.onTileRemoved();
Log.d(TAG, "onTileRemoved()");
++ saveDolbyTileAddState(false);
· · ·
}
++ // 更新SharedPreferences状态
++ private void saveDolbyTileAddState(Boolean isDolbyTileAdded) {
++ SharedPreferences mySharedPref =