在平常使用音乐播放器时经常会遇到锁屏会显示歌词功能,做的时候也是各种手机不适配,翻阅了网上的文章,发现都是好几年前的,适配的安卓版本比较低,所以我就整合了一下分享给大家.

例如下图:

主要用到的知识点

1.锁屏的广播监听

废话不多说,先上代码

广播接收的方法,用来接收自手机系统广播的开屏锁屏:

public class LockerReceiver extends BroadcastReceiver {private static final String TAG = "LockReceiver";public LockerReceiver() {}@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (!TextUtils.isEmpty(action)) {if (action.equals(Intent.ACTION_POWER_CONNECTED)) {//todo} else if (action.equals(Intent.ACTION_SCREEN_ON)) {} else if (action.equals(Intent.ACTION_SCREEN_OFF)) {Log.e(TAG, "onReceive---" + action);LockScreenActivity.startActivity(context);}}}
}

注册一下该广播,可以在某个Activity,也可以在Application,也可以在Service,具体根据自己的业务需求来

private void registerLockerReceiver() {IntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_POWER_CONNECTED);filter.addAction(Intent.ACTION_SCREEN_OFF);filter.addAction(Intent.ACTION_SCREEN_ON);lockerReceiver = new LockerReceiver();registerReceiver(lockerReceiver, filter);}

同时也需要在销毁方法里面反注册:

private void unregisterLockerReceiver() {if (lockerReceiver == null) {return;}unregisterReceiver(lockerReceiver);lockerReceiver = null;}

锁屏的Activity需要单独设置window的显示方式:

/*** 显示在锁屏上面* @param window*/private void setLockerWindow(Window window) {WindowManager.LayoutParams lp = window.getAttributes();if (Build.VERSION.SDK_INT > 18) {lp.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;}window.setAttributes(lp);window.getDecorView().setSystemUiVisibility(0x0);window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);}

开启该Activity时添加action标明为新的任务,并且要从任务栈中移出:

@NonNullprivate static Intent getIntent(Context context) {Intent screenIntent = new Intent();screenIntent.setClass(context, LockScreenActivity.class);screenIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);screenIntent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);return screenIntent;}

同时清单文件也要设置一些必要的属性:

<activityandroid:name=".LockScreenActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:excludeFromRecents="true"android:exported="true"android:hardwareAccelerated="true"android:launchMode="singleInstance"android:taskAffinity="com.lock.LockScreenActivity"android:theme="@style/LockScreenStyle"android:windowSoftInputMode="stateAlwaysHidden|adjustPan" />

最重要的还是权限:有些10.0手机需要赋予在应用上层显示的权限,有些10.0则不需要,参考喜马拉雅App和酷狗都是需要的

<!--10.0专属,在其他应用上层展示--><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

附上demo地址:

Android 自定义锁屏Demo

Android 仿音乐播放器自定义锁屏歌词功能相关推荐

  1. android仿音乐播放器,Android仿音乐播放器功能

    本文实例为大家分享了Android仿音乐播放器功能的具体代码,供大家参考,具体内容如下 读取本地音乐文件 源代码: import android.media.MediaPlayer; import a ...

  2. android 暂停音乐播放器,Android仿音乐播放器带进度的播放暂停按钮

    因为项目需要,要做一个下载暂停开始的按钮,要求按钮上显示进度.网上找了找没有合适的,不太满意,于是自己动手写了一个. 效果如下: 主要步骤: 1.最外侧的圆环. 2.圆环内侧代表进度的圆弧. 3.暂停 ...

  3. android 小型音乐播放器(实现播放、下一首、上一首、自动播放、随机播放按钮、当前播放歌曲界面)

    该文章主要针对 android 的音乐播放器软件进行简单的功能添加:播放.断点播放.停止.上一曲.下一曲.随机播放.显示当前播放歌曲(后续会为当前显示的播放添加动画): 软件开发流程: 1.先向内存卡 ...

  4. Android在线音乐播放器

    波尼音乐 系列文章 Android开源在线音乐播放器--波尼音乐 Android开源音乐播放器之播放器基本功能 Android开源音乐播放器之高仿云音乐黑胶唱片 Android开源音乐播放器之自动滚动 ...

  5. android MusicPlayer 音乐播放器 Lrc歌词控件的实现

    MusicPlayer Lrc歌词控件的实现 最近在做一个音乐播放器,关于其中歌词控件,上网查过了一些资料,然后进行修改,也算完整的实现了其功能.先看看实现后的效果. 实现的原理实际上是自定义一个Vi ...

  6. 最全的Android开源音乐播放器源码汇总

    收集了很多音乐播放器类的Android项目源码,非常不错的开源项目,会让你事半功倍,希望大家补充...谢谢! Android基于经纬度切歌的冲绳音乐播放器源码 http://neast.cn/foru ...

  7. 乐乐音乐:Android音乐播放器及动感(KTV)歌词相关博客汇总

    相关简介 Java Swing PC版本乐乐音乐播放器 乐乐音乐PC播放器单机版本,支持ape,wav,flac,mp3等多种格式,支持动态ksc.hrc.krc歌词文件和支持和显示翻译歌词和音译歌词 ...

  8. Vue实现仿音乐播放器项目总述以及阶段目录

    Github地址 https://github.com/badaoliumang/vuemusicplayer Vue实现仿音乐播放器各阶段代码 https://download.csdn.net/d ...

  9. Vue实现仿音乐播放器6-实现新歌速递与swiper轮播图切换

    前言 前面在首页已经完成今日推荐以及访问百度API获取数据,现在继续来完善home主页. 效果 新歌速递 swiper实现轮播图 实现 实现新歌速递 在components下新建新歌速递组件News_ ...

  10. Vue实现仿音乐播放器3-将项目托管到git以及github

    Github新建项目 1.登录github,点击右上角新建仓库 2.输入仓库名以及描述等,点击Create resposity 3.新建仓库完成后,右边有个clone or download,复制SS ...

最新文章

  1. 100天59万行代码_如何抽出100天的代码时间
  2. 16张思维导图+学习路线图,囊括所有Python基础,可打印
  3. 深度学习模型建立过程_所有深度学习都是统计模型的建立
  4. html5做文字颜色渐变代码,神奇!js+CSS+DIV实现文字颜色渐变效果_javascript技巧
  5. 将 SharePoint 开发与其他形式的开发进行比较
  6. 伪装 php 版本号,linux伪装隐藏Nginx,PHP版本号提升服务器安全性
  7. 谁优谁劣?——AMD与Intel产品对比分析
  8. Flutter SliverAnimatedOpacity 透明渐变动画效果
  9. 5g网络架构_【5G网络架构】系列之五:5G核心网向to B演进
  10. 【QT】QT从零入门教程(八):QT常用控件 [QLabel、QPushButton、QLineEdit、QTextEdit]
  11. 安装Linux系统后无法启动win,安装Win10 CentOS7双系统后无法启动Win10系统怎么办
  12. logrotate日志管理工具
  13. javaee utf-8文件的转换
  14. 【语音识别】基于matlab GUI声纹识别【含Matlab源码 1022期】
  15. 数据库课程设计(学校运动会管理系统)
  16. stack Error: EACCES: permission denied
  17. WebDriverException: Message: unknown error: cannot find Chrome binary(ChromeDriver及谷歌官网下载地址)
  18. dplyr-高效的数据变换与整理工具--转载
  19. Windows 10 D盘操作需要管理员权限
  20. 强烈推荐!程序员必备的15 款工具(含阿里内部工具)

热门文章

  1. 004_simulink建立子系统
  2. HTC Vive开发笔记之手柄震动 转
  3. 35岁的程序员:第9章,女测试
  4. 使用js jquery去搭建完成京东购物车
  5. 3dmax渲染软件有哪些?哪个好用
  6. 电子计算机与多谋种,2011—2012学年度第一学期七年级上册语文期末测试AB卷(2套)(含答案)...
  7. 为什么不发展三进制计算机,三进制计算机
  8. 【Python】 Python小游戏-贪吃蛇大冒险
  9. 如何提高自己的归纳总结能力?
  10. P1930 亚瑟王的宫殿