現如今,手機錄屏是必不可少的能力之一。對于遊戲領域作者來說,在平時直播玩遊戲、制作攻略、操作集錦時,不友善切屏,這時在遊戲内如果有一個錄制按鈕就可以随時開啟,記錄下每個精彩瞬間,減少後期剪輯工作量;在直播App中開啟一鍵錄屏,不光友善主播後續的賬号營運與複盤,使用者也能随時截取有意思的片段傳播在社交媒體上;在會議App裡,通常因為要點太多而來不及記錄,此時點選錄屏按鈕,後續再進行會議的回顧、總結與摘要就十分便利;在上網課時,使用者可以直接在課程頁面點選錄屏,友善及時學習和批注;和親朋好友視訊聊天,也可在社交App裡直接點選錄制,記錄下每個相見的時光。
那麼,如何在App裡內建錄屏能力呢?HMS Core視訊編輯服務螢幕錄制SDK提供全屏錄制手機桌面、實時錄音、背景錄制等能力,內建簡單,支援自定義錄屏通知、多分辨率選擇、多存儲路徑選擇等,無需切屏,助力遊戲、直播等App快速、輕松實作錄屏功能。
功能特點
30行代碼就可以簡單內建;
支援自定義通知欄樣式;
支援橫豎屏切換;
支援多分辨率選擇;
錄屏結束後,支援自定義存儲位置。
Demo
開發步驟
1.開發準備
詳細準備步驟可參考華為開發者聯盟官網。
2. 內建螢幕錄制
- 建立螢幕錄制事件監聽器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) {
// 錄屏完成
}
};
- 使用應用上下文和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);
- 自定義錄屏通知。在自定義錄屏通知前,先建立用來指定通知布局的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);
- 開始錄屏。
HVERecord.startRecord();
- 停止錄屏。
HVERecord.stopRecord();