Android 仿火萤视频桌面 神奇的LiveWallPaper

这篇具有很好参考价值的文章主要介绍了Android 仿火萤视频桌面 神奇的LiveWallPaper。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文已在我的公众号hongyangAndroid原创首发。

转载请标明出处:

http://blog.csdn.net/lmj623565791/article/details/72170299

本文出自张鸿洋的博客

一、概述


上周我的微信公众号推送了一篇Android 实现”透明屏幕,当时我看到之后就觉得特别感兴趣,也立即联系作者要了授权~~

欢迎大家扫描左侧二维码关注我的公众号,每天7点半推送优秀技术博文。

感兴趣的原因是,我是内涵段子的资深用户,前段时间基本被一款叫火萤视频桌面的软件(就是将视频作为桌面)给刷屏了,所以看了下作者的代码,看到了SurfaceHolder,立刻想到了,肯定可以用来播放视频实现视频桌面的效果,于是周末尝试了下,果然很简单。

所以本篇文章无限感谢Android 实现”透明屏幕一文,代码也部分参考自其提供的透明相机。

https://github.com/songixan/Wallpaper

效果图是这样的:

注:本文的测试机为小米5s ,可能不同手机会有一些兼容性问题,尝试解决下,欢迎留言。

二、实现


(1) 配置相关

首先编写一个xml文件,用于描述wallpaper的thumbnaildescriptionsettingsActivity等,这里为了简单,仅设置了thumbnail。

<?xml version="1.0" encoding="utf-8"?>

<wallpaper xmlns:android=“http://schemas.android.com/apk/res/android”

android:thumbnail=“@mipmap/ic_launcher” />

(2)编写代码

Wallpaper需要在屏幕上一直显示,其背后其实是一个Service,所以实现一个Wallpaper需要继承自WallpaperService,实现其抽象方法onCreateEngine,如下:

public class VideoLiveWallpaper extends WallpaperService {

public Engine onCreateEngine() {

return new VideoEngine();

}

//…

}

可以看到返回值是一个Engine,Engine为WallpaperService的内部类,其内部包含onSurfaceCreatedonSurfaceChangedonSurfaceDestroyedonTouchEvent等方法,看到这些方法,立刻想到了SurfaceView,关于SurfaceView相关知识可以参考:

  • Android SurfaceView实战 打造抽奖转盘

此外,大家还记得在Android播放视频吗?

常规的做法有通过VideoView,除此以外还有通过MediaPlayer配合SurfaceView配合来实现,今天这个例子类似后者。

我们只需要通过MediaPlayer将解码的数据不断的输送到传入的Surface中即可。

class VideoEngine extends Engine {

private MediaPlayer mMediaPlayer;

@Override

public void onSurfaceCreated(SurfaceHolder holder) {

L.d("VideoEngine#onSurfaceCreated ");

super.onSurfaceCreated(holder);

mMediaPlayer = new MediaPlayer();

mMediaPlayer.setSurface(holder.getSurface());

try {

AssetManager assetMg = getApplicationContext().getAssets();

AssetFileDescriptor fileDescriptor = assetMg.openFd(“test1.mp4”);

mMediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),

fileDescriptor.getStartOffset(), fileDescriptor.getLength());

mMediaPlayer.setLooping(true);

mMediaPlayer.setVolume(0, 0);

mMediaPlayer.prepare();

mMediaPlayer.start();

} catch (IOException e) {

e.printStackTrace();

}

}

@Override

public void onVisibilityChanged(boolean visible) {

L.d("VideoEngine#onVisibilityChanged visible = " + visible);

if (visible) {

mMediaPlayer.start();

} else {

mMediaPlayer.pause();

}

}

@Override

public void onSurfaceDestroyed(SurfaceHolder holder) {

L.d("VideoEngine#onSurfaceDestroyed ");

super.onSurfaceDestroyed(holder);

mMediaPlayer.release();

mMediaPlayer = null;

}

代码非常简单,在onSurfaceCreated中去初始化mMediaPlayer,核心代码即为设置setSurface方法,这里我默认设置了静音。

onVisibilityChanged,即当桌面不可见时,我们要暂停播放,等回到桌面继续。

当onSurfaceDestroyed时释放资源~~

这样我们的VideoLiveWallpaper就写好了,别忘了他是个Service,需要我们去注册。

<service

android:name=“.VideoLiveWallpaper”

android:label=“@string/app_name”

android:permission=“android.permission.BIND_WALLPAPER”

android:process=“:wallpaper”>

<meta-data

android:name=“android.service.wallpaper”

android:resource=“@xml/livewallpaper” />

(3)设置为壁纸

注册完成后,我们在MainActivity中添加一个按钮点击设置为桌面背景,调用代码如下

public static void setToWallPaper(Context context) {

final Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);

intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,

new ComponentName(context, VideoLiveWallpaper.class));

context.startActivity(intent);

}

这样就完成了代码的初步编写啦~~

(4)增加一些参数的支持

刚才我们设置了默认是静音,可能有时候我们会希望能够动态去控制视频桌面的参数,正常应该尝试去使用settingsActivity,不过我觉得其实广播也挺合适的,无非就是Service(可能在独立的进程)和Activity等通信嘛~~

这里我们增加一个复选框,支持设置开启声音or关闭声音。

public static final String VIDEO_PARAMS_CONTROL_ACTION = “com.zhy.livewallpaper”;

public static final String KEY_ACTION = “action”;

public static final int ACTION_VOICE_SILENCE = 110;

public static final int ACTION_VOICE_NORMAL = 111;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

Android 仿火萤视频桌面 神奇的LiveWallPaper,程序员,android,音视频

Android 仿火萤视频桌面 神奇的LiveWallPaper,程序员,android,音视频

Android 仿火萤视频桌面 神奇的LiveWallPaper,程序员,android,音视频

Android 仿火萤视频桌面 神奇的LiveWallPaper,程序员,android,音视频

Android 仿火萤视频桌面 神奇的LiveWallPaper,程序员,android,音视频

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)

Android 仿火萤视频桌面 神奇的LiveWallPaper,程序员,android,音视频

尾声

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

最后想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。
Android 仿火萤视频桌面 神奇的LiveWallPaper,程序员,android,音视频
当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。

进阶学习视频

Android 仿火萤视频桌面 神奇的LiveWallPaper,程序员,android,音视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

Android 仿火萤视频桌面 神奇的LiveWallPaper,程序员,android,音视频

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

理论看多了总要实践的。

进阶学习视频

[外链图片转存中…(img-5WwR3MTA-1711544463817)]

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中…(img-K2s5o3GQ-1711544463817)]文章来源地址https://www.toymoban.com/news/detail-854266.html

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

到了这里,关于Android 仿火萤视频桌面 神奇的LiveWallPaper的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 系统桌面 App —— Launcher 开发(1)

    Launcher就是Android系统的桌面,俗称“HomeScreen”也就是我们开机后看到的第一个App。launcher其实就是一个app,它的作用是显示和管理手机上其他App。目前市场上有很多第三方的launcher应用,比如“小米桌面”、“91桌面”等等 要让app作为Launcher,需要在Manifest中添加两个category:

    2024年02月11日
    浏览(62)
  • 音视频开发:Qt在视频剪辑3D桌面软件获胜, 嵌入式不敌安卓

    1 Qt Android嵌入式应用层开发方向对比   大家都知道啊,做嵌入式linux设备,一些没有屏幕,比如安防摄像头,门铃之类的,另外一些嵌入式设备是有触控屏,在触控屏上还跑应用软件的,这种比如商场各种自动售卖机,铁路卖票,银行自助服务,车载系统等。 10年前,我大学

    2024年02月09日
    浏览(46)
  • Android桌面长按图标快捷方式——Shortcuts

    简介 当我们在长按Android应用的桌面图标时,一般回弹出一个列表,上面一般有应用信息、卸载应用等功能,并且部分应用在这里还添加了自己的快捷方式,今天主要介绍如何添加自定义的快捷方式。 长按桌面显示的快捷方式在Android中叫Shortcut,它有两种创建方式,分为静态

    2023年04月22日
    浏览(49)
  • android 悬浮窗 模拟微信通话返回桌面悬浮

    现有一款IM聊天需求,在通话页面点击缩小视图或者Home键返回桌面,点击悬浮窗回到通话页面这样一个需求。 权限 首先是权限的获取,请注意,在Android 8.0及以上版本中,需要申请悬浮窗权限(SYSTEM_ALERT_WINDOW)才能显示悬浮窗。你可以在应用启动时请求该权限,或者引导用

    2024年02月01日
    浏览(38)
  • Flutter 使用texture_rgba_renderer实现桌面端渲染视频

    第一章 Android使用Texture渲染视频 第二章 Windows使用Texture渲染视频 第三章 Linux使用Texture渲染视频 第四章 全平台FFI+CustomPainter渲染视频 第五章 Windows使用Native窗口渲染视频 第六章 桌面端使用texture_rgba_renderer渲染视频(本章) 前面几章介绍了flutter使用texture渲染视频的方法,但

    2024年02月15日
    浏览(48)
  • Android S从桌面点击图标启动APP流程 (六)

    系列文章 Android S从桌面点击图标启动APP流程 (一) Android S从桌面点击图标启动APP流程 (二) Android S从桌面点击图标启动APP流程 (三) Android S从桌面点击图标启动APP流程 (四) Android S从桌面点击图标启动APP流程 (五) Android 12的源码链接: android 12 aosp http://aospxref.com/android-12.0.0_r3/ 上文

    2024年02月06日
    浏览(48)
  • FFmpeg 中 RTSP推流桌面和Android设备延时测试

    官网,GitHub,CSDN中选一个就好: ● 官网: Builds - CODEX FFMPEG @ gyan.dev 下载源码:选择一个就好 ● GitHub : Releases · BtbN/FFmpeg-Builds (github.com) ● CSDN 已上传 ffmpeg 和 rtsp 服务器: ‍FFmpeg RTSP 推流桌面 ● GitHub : Releases · aler9/mediamtx (github.com) ​ 解压后: ● ​双击 运行 即可:

    2023年04月19日
    浏览(47)
  • 桌面太单调?一起用Python做个自定义动态壁纸,竟然还可以放视频!

    前言 前段时间,用PyQt5写了几篇文章,关于Python自制一款炫酷音乐播放器、自定义桌面动画挂件、车牌自动识别系统。今天就继续给大家分享一个实战案例,带大家一起用Python的PyQt5开发一个自定义动态桌面壁纸,好玩又有趣! 首先一起来看看最终实现的自定义动态壁纸效果

    2023年04月25日
    浏览(255)
  • 实现纯Web语音视频聊天和桌面分享(附源码,PC端+移动端)

    在网页里实现文字聊天是比较容易的,但若要实现视频聊天,就比较麻烦了。本文将实现一个纯Web版的视频聊天和桌面分享的Demo,可直接在浏览器中运行,不需要安装任何插件。 1.本Demo的主要功能有 (1)一对一语音视频聊天。 (2)远程桌面观看。 (3)当客户端掉线时,

    2024年01月23日
    浏览(57)
  • Windows11 如何删除此电脑里面的 6 个系统图标(视频、图片、文档、下载、音乐、桌面)?

    周末空闲的时候把家里台式机重新装了 Windows11 系统,发现在此电脑里面多了 6 个系统图标:视频、图片、文档、下载、音乐、桌面,这样看着不仅乱还引发了我的强迫症。。。 那么,该如何将此电脑里面的系统图标删除呢?本文将提供三种解决方案。 第一种方式:修改注册

    2023年04月19日
    浏览(98)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包