現如今,手機錄屏是必不可少的能力之一。對於游戲領域作者來說,在平時直播玩游戲、製作攻略、操作集錦時,不方便切屏,這時在游戲內如果有一個錄製按鈕就可以隨時開啟,記錄下每個精彩瞬間,減少後期剪輯工作量;在直播App中開啟一鍵錄屏,不光方便主播後續的賬號運營與復盤,用戶也能隨時截取有意思的片段傳播在社交媒 ...
現如今,手機錄屏是必不可少的能力之一。對於游戲領域作者來說,在平時直播玩游戲、製作攻略、操作集錦時,不方便切屏,這時在游戲內如果有一個錄製按鈕就可以隨時開啟,記錄下每個精彩瞬間,減少後期剪輯工作量;在直播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();
瞭解更多詳情>>
訪問華為開發者聯盟官網
獲取開髮指導文檔
華為移動服務開源倉庫地址:GitHub、Gitee
關註我們,第一時間瞭解 HMS Core 最新技術資訊~