1. 程式人生 > >android 實現螢幕錄製功能

android 實現螢幕錄製功能

https://github.com/guaju/ScreenRecordLibrary

本庫是基於MediaProjection封裝的手機螢幕錄製開源庫,並提交到Jcenter,方便大家使用

使用方法:

module中的build.gradle中的depandencies中新增依賴即可,如下
dependencies {
xxxxxx
compile 'com.guaju:screenrecorderlibrary:1.0.1'
}

目前最新的版本是1.0.1,僅僅是朋友用了用,如果大家使用過程中有什麼意見和建議,歡迎issue

使用方法:

1、新增許可權,註冊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" />



 <service android:name="com.guaju.screenrecorderlibrary.RecordService" />

2、在application中初始化例項

如:
  private ScreenRecorderHelper instance;
  public static MyApplication app;
  @Override
  public void onCreate() {
      super.onCreate();
      app=this;
      //init
      instance = ScreenRecorderHelper.getInstance(this);
  }
  public ScreenRecorderHelper getSRHelper(){
      return instance;
  }
  得到ScreenRecorderHelper類

並且別忘記在清單檔案中配置 application  name

3、在需要錄屏的activity 或者fragment中初始化RecordService,如

  srHelper = MyApplication.getApp().getSRHelper();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        isclick=true;
        srHelper.initRecordService(this);
    }
    由於我這個庫只考慮到了5.0之後的,所以如果有5.0版本之前的手機需要錄屏的話,請自行處理

4、複寫onActivityResult方法,我在screenRecorderHelper中也定義了一個onActivityResult方法,直接拿來使用即可,如

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Log.e("tag", "requestCode****" + requestCode);
    srHelper.onActivityResult(this, requestCode, resultCode, data, new ScreenRecorderHelper.OnRecordStatusChangeListener() {
        @Override
        public void onChangeSuccess() {
            //開始錄製,處理開始錄製後的事件
            dosomething
        }

        @Override
        public void onChangeFailed() {
            //如果錄製失敗,則不作任何變化
             dosomething
        }
    });
}

5.準備工作就緒,直接操作開始錄製按鈕,和停止錄製按鈕即可

 srHelper.startRecord(MainActivity.this);
 
 srHelper.stopRecord(new ScreenRecorderHelper.OnRecordStatusChangeListener() {
                                        @Override
                                        public void onChangeSuccess() {
                                            //當停止成功,做介面變化
                                            //Toast.makeText(MainActivity.this, "錄屏成功"+srHelper.getRecordFilePath(), Toast.LENGTH_SHORT).show();

                                        }

                                        @Override
                                        public void onChangeFailed() {
                                            //不作處理

                                        }
                                    });

ok,走完上邊五步就能夠實現螢幕錄製了,當然如果想改下程式碼的話,可以下載module庫直接修改,多謝指教~~~