一:自定义屏保Dream的创建
1.首先创建一个Dream类,必须继承系统DreamService:
public class Album extends DreamService {
@Override
public void onCreate() {
super.onCreate();
setInteractive(false);
}
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
setInteractive(false);
// setLowProfile(true);
setFullscreen(true);
setContentView(R.layout.album_layout);
}
@Override
public void onDreamingStarted() {//互动屏保已经启动,这里可以开始播放动画或者其他操作
super.onDreamingStarted();
}
@Override
public void onDreamingStopped() {//在停止 onDreamingStarted() 里启动的东西
super.onDreamingStopped();
}
@Override
public void onDetachedFromWindow() {//在这里回收前面调用的资源(比如 handlers 和 listeners)
super.onDetachedFromWindow();
}
}
2.必须在AndroidMainfest.xml中注册这个屏保服务:
<!-- 相册屏保 -->
<service
android:name=".dream.Album"
android:exported="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/album"
android:permission="android.permission.BIND_DREAM_SERVICE">
<intent-filter>
<action android:name="android.service.dreams.DreamService" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
二:屏保的设置
private DreamBackend mBackend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen_saver);
mBackend = DreamBackend.getInstance(ScreenSaverActivity.this);
ComponentName componentName = mBackend.getActiveDream();
Log.e(TAG, "当前系统设置的Dream==包名:" + componentName.getPackageName() + ",类名:" + componentName.getClassName());
}
/**
*设置屏保
*/
private void setDream(){
mBackend.setActiveDream(new ComponentName("com.test.settings", "com.test.settings.dream.Album"));
}