❶ 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 將屏幕內容保存下來