写点什么

Android 仿网易云音乐中锁屏后在开锁界面插屏功能,ffmpeg 音视频开发实战 2019 下载

作者:嘟嘟侠客
  • 2021 年 11 月 27 日
  • 本文字数:1491 字

    阅读完需:约 5 分钟

System.out.println("收到锁屏广播");


Intent lockscreen = new Intent(LockService.this, LockScreenActivity.class);


lockscreen.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


startActivity(lockscreen);


}


}


};


IntentFilter filter = new IntentFilter();


filter.addAction(Intent.ACTION_SCREEN_OFF);


registerReceiver(receiver, filter);


}


Intent.ACTION_SCREEN_OFF 表示屏幕熄灭。


在广播 onReceive()方法中,收到屏幕熄灭的广播后,开启充当锁屏界面的 Activity,我们知道在 Service 中启动 Activity 需要


《Android 学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享


添加一个标志位。


addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


这样我们便实现了锁屏功能。


问题还没有结束。


首先开启的 Activity 我们最好把它设置在单独的一个任务栈中,它与当前 APP 的任务栈没有关系,相互独立,这样才是一个好的锁屏功能。既然是锁屏,那么这个任务栈有且只有这一个 Activity。


我们很容易想到 singleInstance 属性了。


android:launchMode="singleInstance"


android:taskAffinity="com.example.suoping.lockscreen"


其次,这个 Activity 在最近打开的 Activity 中不能出现,也就是按住 home 键出现最近打开的 Activity 界面中不能有它。因为它是锁屏功能嘛,解锁之后肯定就不能再看到它。


android:excludeFromRecents="true"


最后,在 Activity 设置 Window 的 Flags,一定要在 setContentView 之前设置。


this.getWindow().addFlags(


WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD


| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);


假如我们的手机有锁屏功能,就是系统的那种锁屏,滑动图案解锁之类的,那么我们无法越过这个界面,只能在这个界面之上加入我们的 Activity,加入这两个 flag 保证了 Activity 会出现在锁屏界面。


至此我们的锁屏后插屏功能已经实现。


要完全仿的话,它首先需要滑动 finish 功能,且不响应 back 键。


不响应 back 键容易,覆写 onBackPressed()方法什么也不做。


@Override


public void onBackPressed() {


}


滑动 finish 功能我们这里用到开源项目SwipeBackLayout,将 Activity 主题设置为透明,继承 SwipeBackActivity 即可。


<style name="LockScreenBase" parent="android:Theme.Light.NoTitleBar.Fullscreen">


<item name="android:windowIsTranslucent">true</item>


<item name="android:windowBackground">@android:color/transparent</item>


<item name="android:colorBackgroundCacheHint">@null</item>


<item name="android:windowNoTitle">true</item>


<item name="android:backgroundDimEnabled">false</item>


<item name="android:windowAnimationStyle">@null</item>

最后

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!


最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究


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


为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品 Android 架构师教程,保证你学了以后保证薪资上升一个台阶。


以下是今天给大家分享的一些独家干货:



本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

用户头像

嘟嘟侠客

关注

还未添加个人签名 2021.03.19 加入

还未添加个人简介

评论

发布
暂无评论
Android仿网易云音乐中锁屏后在开锁界面插屏功能,ffmpeg音视频开发实战2019下载