使用MediaProjectionManager,VirtualDisplay,AudioRecord,MediaCodec以及MediaMuxer等API实现屏幕录制功能。MediaProjectionManager是Android5.0出现的API,但是现在已经Android十几了,尤其Android10对隐私保护真的做的很多事情啊!获取屏幕必须要foreground service绑定显式通知;mediaProjection必须要在通知显示之后获取;文件结构也重新设计了,不能随意创建文件夹了,系统提供了一些可用的文件夹,保存在Android/data/包名路径下。
在Android12的手机上写了个截屏、录屏的项目,遇到各种问题,解决完各种报错,终于运行起来了,先来看看效果吧!

AndroidManifest权限配置
//截屏
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
//录屏,录屏需要保存视频文件和获取声音
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
AndroidManifest配置ScreenService
<service android:name=".ScreenService"
android:enabled="true"
android:exported="true"
android:foregroundServiceType="mediaProjection"/>
Activity获取MediaProjectionManager
projectionManager = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE);
Activity绑定ScreenService
@Override
protected void onCreate(Bundle savedInstanceState) {

本文介绍了如何在Android 12设备上使用MediaProjectionManager, VirtualDisplay, AudioRecord, MediaCodec和MediaMuxer API进行屏幕录制。针对Android 10以上的隐私保护措施,如需要foreground service和显式通知,以及文件存储路径的改变进行了详细说明,并提供了AndroidManifest的权限配置、ScreenService的绑定过程以及截屏和录屏的具体操作。在解决Android 12的各种适配问题后,最终成功实现了截屏和录屏功能。"
89966224,5759947,动态加载第三方应用:插件化详解,"['Android开发', '插件框架', '组件化', '热更新', '应用解耦']
最低0.47元/天 解锁文章
2146

被折叠的 条评论
为什么被折叠?



