❶ android开发设置屏蔽录制
项目开发中,为了用户信息的安全,会有禁止页面被截屏、录屏的需求。
这类资料,在网上有很多,一般都是通过设置Activity的Flag解决,如:
//禁止页面被截屏、录屏getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
这种设置可解决一般的防截屏、录屏的需求。
如果页面中有弹出Popupwindow,在录屏视频中的效果是:
非Popupwindow区域为黑色
但Popupwindow区域仍然是可以看到的
如下面两张Gif图所示:
未设置FLAG_SECURE,录屏的效果,如下图(git图片中间的水印忽略):
设置了FLAG_SECURE之后,录屏的效果,如下图(git图片中间的水印忽略):
❷ 如何使Android录音实现内录功能
之前在做直播的时候需要使用到内录功能,比如经常看到游戏主播在直播玩游戏,游戏的声音不是通过MIC录制的,而是内录完成的。故在此记录一下。
相信大家都很熟悉Android如果录音的了:
int frequency = 44100; int audioEncoding = AudioFormat.ENCODING_PCM_16BIT; int channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO; int minBufferSize = AudioRecord.getMinBufferSize(frequency, channelConfiguration, audioEncoding); int audioSource = MediaRecorder.AudioSource.MIC;
AudioRecord audioRecord = new AudioRecord(audioSource, frequency,
channelConfiguration, audioEncoding, minBufferSize);
audioRecord.startRecording();
...
AudioSource输入源介绍
项目
介绍
权限
DEFAULT 默认。在源码 system/media/audio/include/system/audio.h配置默认项 无
MIC 麦克风 无
VOICE_UPLINK 电话录音上行线路 android.permission.CAPTURE_AUDIO_OUTPUT,系统权限不允许第三方app使用
VOICE_DOWNLINK 电话录音下行线路 android.permission.CAPTURE_AUDIO_OUTPUT,系统权限不允许第三方app使用
VOICE_CALL 电话录音上下线路 android.permission.CAPTURE_AUDIO_OUTPUT,系统权限不允许第三方app使用
CAMCORDER 摄像头的麦克风 无
VOICE_RECOGNITION 语音识别 无
VOICE_COMMUNICATION 网络电话 无
REMOTE_SUBMIX 传输到远程的音频混合流。默认情况下如何用该项录音,本地扬声器或者耳机的声音将会被截走 android.permission.CAPTURE_AUDIO_OUTPUT,系统权限不允许第三方app使用
好了,现在我们知道了REMOTE_SUBMIX可以实现内录功能了。有两点比较麻烦:
需要系统权限
会截走扬声器和耳机的声音,也就是说再录音时本地无法播放声音
系统权限问题
这个对我来说比较好办,因为我是直接在android设备板子上开发,可以直接使用系统签名编译。首先在AndroidManifest.xml添加
android:sharedUserId="android.uid.system"
其次,
第一种方法:
adb shell 执行:
signapk.jar platform.x509.pem platform.pk8 app-unsigned.apk signed.apk
adb push signed.apk /system/app
第二种方法:
编写Android.mk : 设置签名为platform
截走扬声器和耳机的声音问题
修改framework下av/services/audiopolicy/AudioPolicyManager.cpp
getDeviceForStrategy方法下找到
修改为
意思是声音输出的设备添加了耳机和扬声器,这里可根据实际情况设置。
至此,将最开始的录音代码
改成
就可以实现内录功能了。
<br/>
ps:
在不修改源码的情况下,第三方app目前暂不知如何实现内录。
延伸阅读
5.0以后请求Android录屏默认会弹出确认框,但在系统app下请求就不会弹出了(具体可以去看源码)。这也是为了谷歌为了安全考虑。
不过5.0的时候这个弹框却是一个大漏洞,被国内360发现了,给你们链接^_^
Android 5.0屏幕录制漏洞
❸ 安卓手机怎么录屏
安卓手机录屏的方法如下:
从状态栏向下滑出通知面板(可继续下滑),点击屏幕录制,启动录屏。点击屏幕上方的红色计时按钮,结束录屏。
安卓简介:
安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android操作系统最初由安迪·鲁宾开发,主要支持手机。
2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。
第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表等。
2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。
2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
❹ android录屏并上传
流程思路是:
(1)利用系统录屏API MediaProjectionManager 向用户询问是否录制
(2)返回一个 Intent data 对象,根据这个对象调用 MediaProjectionManager.getMediaProjection() 方法生成 MediaProjection 对象
(3)根据 MediaProjection 对象创建 VirtualDisplay 实例
(4)创建 MediaRecorder 对象并初始化
(5)调用 MediaRecorder.start() 开始录制
(6)调用 MediaRecorder.stop() 停止录制
(7)上传文件
调用 okhttp3 库
安装 implementation "com.squareup.okhttp3:okhttp:4.9.3"
MyMediaRecorder.java:
MainActivity.java:
❺ 如何用 Android 手机完美录屏
Android 7.0 以下录屏:SCR Screen Recorder Pro
SCR Screen Recorder Pro 可以说是 Android 7.0 之前唯一支持内录的录屏应用了。
视频设置上,除了常用的分辨率和帧率调节,它还支持码率“决定同样分辨率下的画面丰富程度,越大越好”,方向和影片速度调节。为了提高录屏性能,它还支持自定义编码器(H264 和 MPEG-4),自定义通过 CPU,GPU 还是软件特有的 GPU+ 来处理屏幕图像。至于显示前置摄像头画面和触摸操作等功能大家都有,就不详细说了
❻ Android截屏、录屏工具
有时候会用到颜色拾取器这样的东西来查看屏幕上的颜色值,一直是用Pixolor这个软件来看颜色的;很方便,点哪里显示哪里,也没有延迟,以为是什么黑科技;我注意到一个细节,如果只是切换屏幕,颜色拾取器不会更新,只有移动拾取器才更新选中;可以确定是截屏来实现的了,那就简单了,截屏获取像素点的颜色值就好了
网上看了一下,截屏大概分为保存View为图像和调用录屏服务两种办法,录屏是比较好的办法,可以在APP外截屏,所以简单的封装了一下
Step 1. Add the JitPack repository to your build file
Step 2. Add the dependency
主要分为两步,第一步是开启录屏;第二步就可以直接获取截屏,返回Bitmap
截图的过程录屏是开启的,录屏开启就可以进行截屏,操作完需要关闭录屏
截屏过程很快,效果很好
如果是APP外截屏则开启悬浮窗服务,可以通过操作悬浮窗进行截屏
参考文章: Android 截屏方式整理 、 Android录屏(5.0+)
1.初始化一个 MediaProjectionManager
2.创建并启动 Intent
3.在 onActivityResult 中拿到MediaProjection
4.设置VirtualDisplay将图像和展示的View关联起来。一般来说我们会将图像展示到SurfaceView,这里为了为了便于拿到截图,我们使用ImageReader,他内置有SurfaceView。
5.通过ImageReader拿到截图
6.注意截屏之后要及时关闭VirtualDisplay ,因为VirtualDisplay 是十分消耗内存和电量的。
录屏和截屏差不多,只是截屏的时候只是设置了一个ImageReader去获取图像数据,而录屏是设置一个 SurfaceView 去接收内容,获取视频流,然后通过 MediaCodec 来实现视频的硬编码,然后保存为视频文件
初始化录屏的大小和码率
开始录屏,设置输出文件
停止录屏
参考文章: Android视频录制--屏幕录制
1.在 AndroidManifest 中添加权限,Android 6.0 加入的动态权限申请,如果应用的 targetSdkVersion 是 23,申请敏感权限还需要动态申请
中间操作和截屏一样,就是准备开启录屏
5.创建虚拟屏幕,这一步就是通过 MediaProject 录制屏幕的关键所在, VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR 参数是指创建屏幕镜像,所以我们实际录制内容的是屏幕镜像,但内容和实际屏幕是一样的,并且这里我们把 VirtualDisplay 的渲染目标 Surface 设置为 MediaRecorder 的 getSurface ,后面我就可以通过 MediaRecorder 将屏幕内容录制下来,并且存成 video 文件
6.录制屏幕数据,这里利用 MediaRecord 将屏幕内容保存下来