Android 仿火萤视频桌面 神奇的LiveWallPaper
来源:互联网 发布:惠州人民政府网络问政 编辑:程序博客网 时间:2024/06/01 20:40
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
本文已在我的公众号hongyangAndroid原创首发。
转载请标明出处:
http://blog.csdn.net/lmj623565791/article/details/72170299
本文出自张鸿洋的博客
一、概述
上周我的微信公众号推送了一篇Android 实现”透明屏幕,当时我看到之后就觉得特别感兴趣,也立即联系作者要了授权~~
欢迎大家扫描左侧二维码关注我的公众号,每天7点半推送优秀技术博文。
感兴趣的原因是,我是内涵段子的资深用户,前段时间基本被一款叫火萤视频桌面的软件(就是将视频作为桌面)给刷屏了,所以看了下作者的代码,看到了SurfaceHolder,立刻想到了,肯定可以用来播放视频实现视频桌面的效果,于是周末尝试了下,果然很简单。
所以本篇文章无限感谢Android 实现”透明屏幕一文,代码也部分参考自其提供的透明相机。
https://github.com/songixan/Wallpaper
效果图是这样的:
注:本文的测试机为小米5s ,可能不同手机会有一些兼容性问题,尝试解决下,欢迎留言。
二、实现
(1) 配置相关
首先编写一个xml文件,用于描述wallpaper的thumbnail
、description
、settingsActivity
等,这里为了简单,仅设置了thumbnail。
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
(2)编写代码
Wallpaper需要在屏幕上一直显示,其背后其实是一个Service,所以实现一个Wallpaper需要继承自WallpaperService
,实现其抽象方法onCreateEngine
,如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
可以看到返回值是一个Engine,Engine为WallpaperService的内部类,其内部包含onSurfaceCreated
、onSurfaceChanged
、onSurfaceDestroyed
、onTouchEvent
等方法,看到这些方法,立刻想到了SurfaceView,关于SurfaceView相关知识可以参考:
- Android SurfaceView实战 打造抽奖转盘
此外,大家还记得在Android播放视频吗?
常规的做法有通过VideoView,除此以外还有通过MediaPlayer配合SurfaceView配合来实现,今天这个例子类似后者。
我们只需要通过MediaPlayer将解码的数据不断的输送到传入的Surface中即可。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
代码非常简单,在onSurfaceCreated中去初始化mMediaPlayer,核心代码即为设置setSurface方法,这里我默认设置了静音。
onVisibilityChanged,即当桌面不可见时,我们要暂停播放,等回到桌面继续。
当onSurfaceDestroyed时释放资源~~
这样我们的VideoLiveWallpaper就写好了,别忘了他是个Service,需要我们去注册。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
(3)设置为壁纸
注册完成后,我们在MainActivity中添加一个按钮点击设置为桌面背景,调用代码如下
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
这样就完成了代码的初步编写啦~~
(4)增加一些参数的支持
刚才我们设置了默认是静音,可能有时候我们会希望能够动态去控制视频桌面的参数,正常应该尝试去使用settingsActivity
,不过我觉得其实广播也挺合适的,无非就是Service(可能在独立的进程)和Activity等通信嘛~~
这里我们增加一个复选框,支持设置开启声音or关闭声音。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
Engine还有onCreate和onDestroy声明周期方法,可以在onCreate中注册动态广播,当接受到发送的action为ACTION_VOICE_NORMAL
则开启声音;接收到发送的ACTION_VOICE_SILENCE
则为静音状态。
最后直接在VideoLiveWallpaper中添加两个静态方法用于发送广播即可:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
在Actiivty中:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
监听一下CheckBox状态,发送广播即可。
ok,这样一个简单的视频桌面就完成啦~~
源码地址:
- https://github.com/WanAndroid/LiveWallPaper/tree/master/hongyang/MagicWallPaper
直接将这个目录以项目形式导入。
- Android 仿火萤视频桌面 神奇的LiveWallPaper
- Android 仿火萤视频桌面 神奇的LiveWallPaper
- Android 仿火萤视频桌面 神奇的LiveWallPaper
- Android 仿火萤视频桌面 神奇的LiveWallPaper
- Android 如何去掉“LiveWallpaper”里面的全部动态壁纸
- android动态壁纸LiveWallpaper用法
- android动态壁纸LiveWallpaper用法
- Android神奇之从服务器获取最新的视频资讯
- 神奇的机械椅子{视频}
- Android录制桌面视频screenrecord
- Android 录制桌面视频 screenrecord
- Android视频桌面,动态桌面开发
- android layout_weight的神奇
- android神奇的“FileNotFoundException”
- 神奇的android广播
- android开发LiveWallpaper流程(利用OpenGLES开发)
- Android Launcher开发(三)动态壁纸(LiveWallPaper)气泡流动效果
- Android Launcher开发(三)动态壁纸(LiveWallPaper)气泡流动效果
- SQL Server-表表达式基础
- 小程序的坑
- 中国有多少家银行?(最全名单统计)
- 让技能成为潜意识之Redis技能 SORT排序命令使用
- js中如何判断+0与-0
- Android 仿火萤视频桌面 神奇的LiveWallPaper
- 【Angular】关于AsyncPipe你不知道的3件事!
- java 修改mat的像素数据
- HTML关键字<3>
- 超强、超详细Redis数据库入门教程
- title和alt的区别
- SQL Server-聚焦UNIOL ALL/UNION查询
- 【心魔】----穷的时候怎么办?
- 本地图片上传