在鴻蒙開發中,系統提供了PhotoViewPicker選擇圖片,cameraPicker拍照和錄影片,此方式能夠達到無需向使用者申請許可權就能選圖片、拍照和錄影片。除了使用者操作的選圖、拍照和錄影片,其它時間APP無權獲取相簿圖片,無權呼叫相機,對於使用者來說,使用相簿和相機都是很明確的時機,安全性非常高。以下來看看具體的使用方式。
使用PhotoViewPicker選擇圖片
我們new一個PhotoViewPicker並呼叫select方法,就可以開啟系統圖片選擇器進行圖片選擇了,支援的引數非常多,基本滿足了日常的使用場景。
- MIMEType:我們可以透過MIMEType來設定是選擇圖片或者選擇影片,甚至是同時選擇圖片和影片。
- isEditSupported:透過isEditSupported引數來設定選擇好圖片後,是否進入圖片編輯模式。
- isOriginalSupported:透過isOriginalSupported引數來設定選擇的圖片是否為源圖,該引數設定為true,選擇頁面有一個按鈕,可以控制是否使用源圖。
- isPhotoTakingSupported:在圖片選擇頁面,可以透過isPhotoTakingSupported引數設定第一個位置是否為拍照選項,設定後點選第一個位置,可以開啟相機拍攝一張圖片。
- isPreviewForSingleSelectionSupported:透過isPreviewForSingleSelectionSupported引數可以在圖片選擇後,進入大圖預覽頁面,使我們能夠檢視圖片的更多細節。
- isSearchSupported:當相簿的圖片太多時,我們可以透過isSearchSupported引數顯示搜尋框,在搜尋框中輸入圖片相關內容,以便快速查詢相關圖片
- maxSelectNumber:透過maxSelectNumber來設定選擇的數量,預設選擇50張圖片,最多選擇500張。
- preselectedUris:當為多選模式時,透過preselectedUris引數可以預選中一些圖片,以便避免每次開啟圖片選擇器,都是重新選擇,從而導致之前選擇的圖片丟失了。
一個完整的示例如下
new photoAccessHelper.PhotoViewPicker().select({
MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE,
maxSelectNumber: 9,
isEditSupported: false,
isOriginalSupported: rue,
preselectedUris: [],
isPhotoTakingSupported: false,
isPreviewForSingleSelectionSupported: false,
isSearchSupported: false
}, (err, data) => {
console.log(data)
})
使用cameraPicker拍照和錄影片
我們可以透過cameraPicker的select方法來進行拍照或錄影片,也可以同時設定拍照和錄影片,使用者在拍照頁面自行選擇是拍照還是錄影片。具體使用引數如下
- mediaTypes:是一個陣列,設定為拍照片,還是錄影片,也可以同時設定
- cameraPosition:設定是使用前置攝像頭還是後置攝像頭進行拍照或錄影片
- saveUri:設定拍照或錄製的影片儲存的位置,通常設定成我們的沙箱目錄
- videoDuration:當模式為錄影片時,此引數為設定影片的最大時長。
一個完整的示例如下
cameraPicker.pick(context,[cameraPicker.PickerMediaType.PHOTO, cameraPicker.PickerMediaType.VIDEO],
{ cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK,saveUri:'',videoDuration:30 })
.then((value) => {
console.log(value.resultUri)
})
使用者在系統拍照錄影片頁面,可以自己選擇很多引數,例如是否開啟閃光燈,圖片的寬高比,影片的幀率,是否撕開參考線等等,可選擇的引數很多,靈活度也很高,基本可以滿足日常的使用場景,最主要的是不用向使用者申請許可權,還是非常方便的。