Android 仿网易云音乐中锁屏后在开锁界面插屏功能,ffmpeg 音视频开发实战 2019 下载
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 架构师教程,保证你学了以后保证薪资上升一个台阶。
以下是今天给大家分享的一些独家干货:

评论