如何使用android实现录屏小功能

  介绍

这篇文章给大家分享的是有关如何使用android实现录屏小功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

<强>思路

android实现录屏功能有两种方案,一种是直接使用android自带的MediaProjectionManager实现录屏功能,第二种是是只录语音,用户的操作通过某种方式进行记录保存,最后通过某种协议进行播放。

两种方案各有各的优缺点,前者实现方式简单,但无法只录制特定区域的画面,并且生成的视频文件一般都比较大。后者实现较为繁琐,音频录制android7.0之前没有暂停方法,只能生成多个文件,然后对音频进行合成。用户的操作需要自己进行保存,播放时还原。播放器需要自定义生成。但后者的好处是可扩展性高,支持特定区域录制,并且生成的音频文件比较小。

<强>需求

录制画板,画板要求可以更改颜色粗细,可以擦除。画板底部可以是白板,图片。图片要求是相机拍摄或者本地图片。可以播放录制内容,需要上传,所以文件要小,所有只能选择第二种方式。
github地址

如何使用android实现录屏小功能

整个项目生成的是一个文件夹,文件夹中包含一个MP3文件,一个连续波协议文件(存储用户的操作),图片。整个画板是一个recyclerView,项目中包含一个涂鸦画板,图片控件。播放时读取连续波协议文件,按照时间一个个绘制,协议内容包含画板各个页的内容是空白画板还是图片,时间点,操作(切换图片/画线)。

<强>音频

//开始录音   if 才能;(mMediaRecorder ==, null), {   ,,,,,mMediaRecorder =, new  MediaRecorder ();   ,,,}   ,,,mMediaRecorder.setAudioSource (MediaRecorder.AudioSource.MIC);   ,,,mMediaRecorder.setOutputFormat (MediaRecorder.OutputFormat.AMR_NB);   ,,,mMediaRecorder.setOutputFile (mRecordFilePath);   ,,,mMediaRecorder.setAudioEncoder (MediaRecorder.AudioEncoder.AMR_NB);//amr_nb格式头部有6个字节的头信息      ,,,try  {   ,,,,,mMediaRecorder.prepare ();   ,,,,,mMediaRecorder.start ();   ,,,,,isRunning =,真的;   ,,,,,AudioUtil.startAudio ();   ,,,,,mHandler.sendEmptyMessageDelayed (MSG_TYPE_COUNT_DOWN, 1000);   ,,,},catch  (IOException  e), {   ,,,,,e.printStackTrace ();   ,,,} /* *   ,,*,合成amr_nb编码的音频   ,,*,@param  partsPaths   ,,*,@param  unitedFilePath   ,,*/public 才能static  void  uniteAMRFile (List

音频播放

mediaPlayer =, new 媒体播放器();   mediaPlayer.setDataSource(路径);   ,,,mediaPlayer.prepare ();   ,,mediaPlayer.start ();

<强> recyclerView

是否禁止滑动

public  class  ForbitLayoutManager  extends  LinearLayoutManager  {   private 才能boolean  canScrollHorizon =,真的;   private 才能boolean  canScrollVertical =,真的;   public 才能ForbitLayoutManager (Context 上下文),{   ,,,超级(上下文);   ,,}      public 才能;ForbitLayoutManager (Context 上下文,int 定位,,boolean  reverseLayout), {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何使用android实现录屏小功能