Android开发自己的锁屏壁纸
SurfaceView SurfaceHolder MediaPlayer Service BroadcastReceiver KeyguardManager PowerManager
思路:启动一个服务,监听灭屏广播,当收到广播的时候,点亮屏幕,禁用锁屏,调用使用SurfaceView播放视频。
public class WallPaperSurfaceView extends SurfaceView implements Callback {private SurfaceHolder mSurfaceHolder;public MediaPlayer mediaPlayer;String tag = "BackgroundSurfaceView";private HelloActivity helloActivity;@Override protected void onWindowVisibilityChanged(int visibility) { // TODO Auto-generated method stub super.onWindowVisibilityChanged(visibility); } @Override public boolean onTouchEvent(MotionEvent event) { helloActivity.finish(); HelloActivity.isScreenOff = false; return super.onTouchEvent(event); } public WallPaperSurfaceView(Context context, AttributeSet attrs) {super(context, attrs);helloActivity = (HelloActivity) context;mSurfaceHolder = getHolder();//设置SurfaceView自己不管理的缓冲区mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);mSurfaceHolder.addCallback(this);}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}@Overridepublic void surfaceCreated(SurfaceHolder holder) { Log.d("yzy","surfaceCreated....."); mediaPlayer=new MediaPlayer();play();}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {holder.removeCallback(this);if(mediaPlayer!=null ) {mediaPlayer.release();mediaPlayer = null;}}private void play() {try { if(mediaPlayer == null) { mediaPlayer = new MediaPlayer(); } mediaPlayer.reset();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaPlayer.setScreenOnWhilePlaying(true);//设置需要播放的视频 mediaPlayer.setDataSource("/mnt/sdcard/sun.mp4");mediaPlayer.setDisplay(mSurfaceHolder);mediaPlayer.prepare();mediaPlayer.setLooping(true);//播放mediaPlayer.start();} catch (Exception e) {Log.e(tag, "kc" , e);}}}