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
- Android开发自己的锁屏壁纸
- android开发壁纸的设置
- android动态壁纸开发(能运行的)
- android 锁屏独立壁纸
- android 设置锁屏壁纸
- Android N 同时设置壁纸与锁屏壁纸的方法
- Android动态壁纸开发
- android 动态壁纸开发
- Android动态壁纸开发
- android 自己写的Launcher中长按选择壁纸
- android 锁屏壁纸和桌面壁纸的设置实现
- Android开发学习之设置Android壁纸的功能实现
- android利用OpenGLES开发动态壁纸用到的GLWallpaperService类
- lenovo android 更换 锁屏壁纸
- 自己研发的Android3D引擎开发的3d壁纸,欢迎大家拍砖~~
- Android初学------选择设置壁纸的时候可以选择自己的应用
- Android壁纸、主题的区别
- Android 壁纸 保存的目录
- SpringMVC框架上的文件上传
- 盛世烟花,几许薄凉
- extern int i=0;必须定义或声明为全局变量
- 2014-10-21 随笔
- Java数据类型和MySql数据类型对应表
- Android开发自己的锁屏壁纸
- Linxu下的串口编程(二)
- Ubuntu terminal不能Ctrl V和 Ctrl C
- MySQL通过sql语句获取当前日期|时间|时间戳
- 一个httpclient 实例
- Cocos2d-X 学习笔记 14 CocosBuilder基础应用
- windows 命令行下怎样切换到想到达的目录
- 无线龙串口解析
- 使用OnCtlColor函数消息打造背景