天天看點

僅需30行代碼,輕松內建HMS Core視訊編輯服務螢幕錄制能力

現如今,手機錄屏是必不可少的能力之一。對于遊戲領域作者來說,在平時直播玩遊戲、制作攻略、操作集錦時,不友善切屏,這時在遊戲内如果有一個錄制按鈕就可以随時開啟,記錄下每個精彩瞬間,減少後期剪輯工作量;在直播App中開啟一鍵錄屏,不光友善主播後續的賬号營運與複盤,使用者也能随時截取有意思的片段傳播在社交媒體上;在會議App裡,通常因為要點太多而來不及記錄,此時點選錄屏按鈕,後續再進行會議的回顧、總結與摘要就十分便利;在上網課時,使用者可以直接在課程頁面點選錄屏,友善及時學習和批注;和親朋好友視訊聊天,也可在社交App裡直接點選錄制,記錄下每個相見的時光。

那麼,如何在App裡內建錄屏能力呢?HMS Core​​視訊編輯服務​​​​螢幕錄制SDK​​提供全屏錄制手機桌面、實時錄音、背景錄制等能力,內建簡單,支援自定義錄屏通知、多分辨率選擇、多存儲路徑選擇等,無需切屏,助力遊戲、直播等App快速、輕松實作錄屏功能。

功能特點

30行代碼就可以簡單內建;

支援自定義通知欄樣式;

支援橫豎屏切換;

支援多分辨率選擇;

錄屏結束後,支援自定義存儲位置。

Demo

開發步驟

1.開發準備

詳細準備步驟可參考​​華為開發者聯盟官網​​。

2. 內建螢幕錄制
  1. 建立螢幕錄制事件監聽器​​HVERecordListener​​執行個體,重寫監聽器的方法。
HVERecordListener mHVERecordListener = new HVERecordListener(){
    @Override
    public void onRecordStateChange(HVERecordState recordingStateHve) {
        // 錄屏狀态變化
    }

    @Override
    public void onRecordProgress(int duration) {
        // 錄屏進度
    }

    @Override
    public void onRecordError(HVEErrorCode err, String msg) {
        // 錄屏錯誤
    }

    @Override
    public void onRecordComplete(HVERecordFile fileHve) {
        // 錄屏完成
    }
};      
  1. 使用應用上下文和​​HVERecordListener​​執行個體,初始化​​HVERecord​​。
HVERecord.init(this, mHVERecordListener);      

3.(可選)建立​​HVERecordConfiguration.Builder​​執行個體,設定錄屏配置。

HVERecordConfiguration hveRecordConfiguration = new HVERecordConfiguration.Builder()
     .setMicStatus(true)
     .setOrientationMode(HVEOrientationMode.LANDSCAPE)
     .setResolutionMode(HVEResolutionMode.RES_480P)
     .setStorageFile(new File("/sdcard/DCIM/Camera"))
     .build();
HVERecord.setConfigurations(hveRecordConfiguration);      
  1. 自定義錄屏通知。在自定義錄屏通知前,先建立用來指定通知布局的XML檔案。XML檔案需包含按鈕等通知元件的ID。以下為指定錄屏通知布局的XML檔案使用示例。将自定義錄屏通知的按鈕對應ID命名為“btn_1”。可根據實際需要決定通知中的按鈕數量。

a. 将自定義通知布局傳入​​HVENotificationConfig​​的初始化方法。

b. 使用XML檔案中定義的按鈕、textView等元件的ID及點選事件。調用​​addClickEvent​​可建立點選事件。

c. 調用​​setDurationViewId​​設定textView ID,用來指定錄屏時長顯示位置。

d. 調用​​setCallingIntent​​設定錄屏通知點選時傳回的intent。在示例中,intent用來打開一個Activity,這是intent的常見用法。

e. 在​​HVERecord​​中設定通知配置。

HVENotificationConfig notificationData = new HVENotificationConfig(R.layout.hms_scr_layout_custom_notification);
notificationData.addClickEvent(R.id.btn_1, () -> { HVERecord.stopRecord(); });
notificationData.setDurationViewId(R.id.duration);
notificationData.setCallingIntent(new Intent(this, SettingsActivity.class)
    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK));
HVERecord.setNotificationConfig(notificationData);      
  1. 開始錄屏。
HVERecord.startRecord();      
  1. 停止錄屏。
HVERecord.stopRecord();