Android13 基座充电屏保

Android13 基座充电屏保

屏幕保护有两个设置可选:默认为插入基座充电时

通过DreamBackend启用屏保,并且保存选择的时机

//QSSI.13\packages\apps\Settings\src\com\android\settings\dream\WhenToDreamPicker.java

@Override

protected boolean setDefaultKey(String key) {

mBackend.setWhenToDream(DreamSettings.getSettingFromPrefKey(key));

return true;

}

//QSSI.13\frameworks\base\packages\SettingsLib\src\com\android\settingslib\dream\DreamBackend.java

//启用屏保:

public void startDreaming() {

logd("startDreaming()");

if (mDreamManager == null) {

return;

}

try {

mDreamManager.dream();

} catch (RemoteException e) {

Log.w(TAG, "Failed to dream", e);

}

}

//记录启用时机

public void setWhenToDream(@WhenToDream int whenToDream) {

setEnabled(whenToDream != NEVER);

switch (whenToDream) {

case WHILE_CHARGING:

setActivatedOnDock(false);

setActivatedOnSleep(true);

break;

case WHILE_DOCKED:

setActivatedOnDock(true);

setActivatedOnSleep(false);

break;

case EITHER:

setActivatedOnDock(true);

setActivatedOnSleep(true);

break;

case NEVER:

default:

break;

}

}

public void setActivatedOnDock(boolean value) {

logd("setActivatedOnDock(%s)", value);

setBoolean(Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, value);

}

public void setActivatedOnSleep(boolean value) {

logd("setActivatedOnSleep(%s)", value);

setBoolean(Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, value);

}

DreamBackend是对屏保管理的类,最终会通过IDreamManager来执行到DreamManagerService

启动屏保时,先获取系统安装的所有屏保,通过下列代码可以得到我们自己的开发的屏保

PackageManager pm = mContext.getPackageManager();

Intent dreamIntent = new Intent(DreamService.SERVICE_INTERFACE);

List resolveInfos = pm.queryIntentServices(dreamIntent,

PackageManager.GET_META_DATA);

然后再将屏保设置我们自己开发的

//QSSI.13\frameworks\base\services\core\java\com\android\server\dreams\DreamManagerService.java

public void setActiveDream(ComponentName dream) {

logd("setActiveDream(%s)", dream);

if (mDreamManager == null)

return;

try {

ComponentName[] dreams = { dream };

mDreamManager.setDreamComponents(dream == null ? null : dreams);

} catch (RemoteException e) {

Log.w(TAG, "Failed to set active dream to " + dream, e);

}

}

如果没有设置,系统会有一个默认的屏保,使用以下方法可以获取默认屏保

//QSSI.13\frameworks\base\services\core\java\com\android\server\dreams\DreamManagerService.java

public ComponentName getDefaultDream() {

if (mDreamManager == null)

return null;

try {

return m

相关推荐

南非国宝级名模拍写真助力世界杯
365bet娱乐投注

南非国宝级名模拍写真助力世界杯

📅 06-27 👁️ 5010
经典矿业图书推荐(第1辑)
365bet体育在线中文网

经典矿业图书推荐(第1辑)

📅 10-14 👁️ 1183