Android开发自己的锁屏壁纸

来源:互联网 发布:淘宝 价格曲线 编辑:程序博客网 时间:2024/05/23 02:05

SurfaceView  SurfaceHolder  MediaPlayer    Service      BroadcastReceiver    KeyguardManager    PowerManager

思路:启动一个服务,监听灭屏广播,当收到广播的时候,点亮屏幕,禁用锁屏,调用使用SurfaceView播放视频。

1.启动一个服务

      <service Android:name=".LockService" >            <intent-filter>                <category android:name="android.intent.category.default" />            </intent-filter>        </service>        Intent intent = new Intent();        intent.setClass(this,LockService.class);        startService(intent);


2.LockService onCreate中注册监听ACTION_SCREEN_OFF

      

final IntentFilter filter = new IntentFilter();        filter.addAction(Intent.ACTION_SCREEN_OFF);              registerReceiver(mReceiver, filter);

3.LockService 的内部监听类

  private final BroadcastReceiver mReceiver = new BroadcastReceiver() {        @Override        public void onReceive(Context context, Intent intent) {            final String action = intent.getAction();            if (Intent.ACTION_SCREEN_OFF.equals(action)) {                Log.d("yzy","screen_off...");                if(HelloActivity.isScreenOff == false){                    wakeUpScreen();                    Intent intent1  = new Intent();                    intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                    intent1.setClass(LockService.this, HelloActivity.class);//启动屏保界面                    startActivity(intent1);                    HelloActivity.isScreenOff = true;                }                          }         }    };


4.点亮屏幕,禁用锁屏

        

    KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);            KeyguardLock mKeyguardLock = mKeyguardManager.newKeyguardLock("");            mKeyguardLock.disableKeyguard();//解锁屏幕,也就是 关闭 屏幕 锁定 功能                        PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);            PowerManager.WakeLock mWakeLock = pm.newWakeLock(                PowerManager.ACQUIRE_CAUSES_WAKEUP |                PowerManager.SCREEN_DIM_WAKE_LOCK |                PowerManager.ON_AFTER_RELEASE, "SimpleTimer");            mWakeLock.acquire();            //释放屏幕常亮锁            if(null != mWakeLock) {              //可以灭屏了            //  mWakeLock.release();            }

5.WallPaperSurfaceView MediaPlayer  SurfaceHolder 播放视频

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); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width,   int height) { } @Override public void surfaceCreated(SurfaceHolder holder) {    Log.d("yzy","surfaceCreated.....");    mediaPlayer=new MediaPlayer();  play();   } @Override public 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);  } }}


0 0
原创粉丝点击