2024年1月29日发(作者:)
import perService;import ils;import eHolder;import ption;public class VideoWallPaperService extends WallpaperService {private static final String SERVICE_NAME = "allPaperService";@Overridepublic Engine onCreateEngine() {return new VideoEngine();}public static void startWallPaper(Context context, String videoPath) {WallpaperInfo info = tance(context).getWallpaperInfo();if(info != null && SERVICE_(viceName())) {changeVideo(context, videoPath);} else {startNewWallpaper(context, videoPath);}}public static void closeWallpaper(Context context) {try {tance(context).clear();} catch(IOException e) {tackTrace();}}private static void startNewWallpaper(Context context, String path) {saveVideoPath(context, path);Intent intent = new Intent(_CHANGE_LIVE_WALLPAPER);ra(_LIVE_WALLPAPER_COMPONENT, new ComponentName(context,));ctivity(intent);}private static void changeVideo(Context context, String path) {saveVideoPath(context, path);
Intent intent = new Intent();ion();ra(AST_SET_VIDEO_PARAM, _SET_VIDEO);oadcast(intent);}public static void setVolume(Context context, boolean hasVolume) {Intent intent = new Intent();ion();if(hasVolume) {ra(AST_SET_VIDEO_PARAM, _VOICE_NORMAL);} else {ra(AST_SET_VIDEO_PARAM, _VOICE_SILENCE);}oadcast(intent);}private static void saveVideoPath(Context context, String path) { editor = aultSharedPreferences(context).edit();ing(_PATH, path);();}private String getVideoPath() {SharedPreferences preferences = aultSharedPreferences(this);return ing(_PATH, null);}private class VideoEngine extends Engine implements aredListener,letionListener, rListener {private MediaPlayer mPlayer;private boolean mLoop;private boolean mVolume;private boolean isPapered = false;private VideoEngine() {SharedPreferences preferences = aultSharedPreferences();mLoop = lean("loop", true);mVolume = lean("volume", false);
}private BroadcastReceiver mReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {int action = Extra(AST_SET_VIDEO_PARAM, -1);switch(action) {case _SET_VIDEO: {setVideo(getVideoPath());break;}case _VOICE_NORMAL: {mVolume = true;setVolume();break;}case _VOICE_SILENCE: {mVolume = false;setVolume();break;}}}};@Overridepublic void onCreate(SurfaceHolder surfaceHolder) {te(surfaceHolder);IntentFilter filter = new IntentFilter();ion();registerReceiver(mReceiver, filter);}@Overridepublic void onDestroy() {roy();unregisterReceiver(mReceiver);
}@Overridepublic void onVisibilityChanged(boolean visible) {if(isPapered) {if(visible) {();} else {();}}}@Overridepublic void onSurfaceCreated(SurfaceHolder holder) {aceCreated(holder);mPlayer = new MediaPlayer();setVideo(getVideoPath());}@Overridepublic void onSurfaceDestroyed(SurfaceHolder holder) {aceDestroyed(holder);if(ing()) {();}e();mPlayer = null;}@Overridepublic void onPrepared(MediaPlayer mp) {isPapered = true;();}@Overridepublic void onCompletion(MediaPlayer mp) {closeWallpaper(getApplicationContext());
}@Overridepublic boolean onError(MediaPlayer mp, int what, int extra) {closeWallpaper(getApplicationContext());return true;}private void setVideo(String videoPath) {if(y(videoPath)) {closeWallpaper(getApplicationContext());throw new IllegalArgumentException("video path is null");}if(mPlayer != null) {();isPapered = false;try {reparedListener(this);ompletionListener(this);rrorListener(this);ping(mLoop);// play(getSurfaceHolder());face(getSurfaceHolder().getSurface());setVolume();aSource(videoPath);eAsync();} catch(IOException e) {tackTrace();}}}private void setVolume() {if(mPlayer != null) {if(mVolume) {ume(1.0f, 1.0f);} else {
public static final int ACTION_VOICE_NORMAL = 0x103;}


发布评论