HarmonyOS手機遙控Dayu開發(fā)板相機(一)
??想了解更多關(guān)于開源的內(nèi)容,請訪問:??
前幾篇博文解決了HarmonyOS和OpenHarmony的通信問題,現(xiàn)在嘗試用通信來做一些事情。比如用手機遙控開發(fā)板的攝像頭,或者開發(fā)板遙控手機的攝像頭,乃至照片回傳。關(guān)于調(diào)用板子的攝像頭的方式經(jīng)研究,主要有兩種,一種是camera組件,一種是調(diào)用API。先從簡單的camera組件開始。
一、效果
- 調(diào)用接口成功
- 存在問題
拍攝的圖片實際沒有保存到圖庫。
二、Camera組件
1、需要權(quán)限
相機權(quán)限,讀寫媒體文件的權(quán)限。
{
"name": "ohos.permission.CAMERA"
},
{
"name": "ohos.permission.WRITE_MEDIA"
},
{
"name": "ohos.permission.READ_MEDIA"
}
2、支持的事件
除了通用事件外,還支持error事件,在用戶不允許使用攝像頭的時候觸發(fā)。
3、支持方法
僅支持,takePhoto(CameraTakePhotoOptions),拍照設(shè)置參數(shù)。
- CameraTakePhotoOptions
參數(shù)列表:
參數(shù) | 類型 | 描述 |
quality | string | 圖片質(zhì)量:high,normal,low |
success | Function | 接口調(diào)用成功的回調(diào)函數(shù) |
fail | Function | 接口調(diào)用失敗的回調(diào)函數(shù) |
complete | Function | 接口調(diào)用結(jié)束的回調(diào)函數(shù) |
三、案例編寫
關(guān)于手機側(cè),開發(fā)板側(cè)的UDP通信請看我的前幾篇博文,這里只分享Camera的組件調(diào)用。
1、index.css
這里全局就用一個攝像頭畫面即可。
<camera flash="on" deviceposition="back" @error="cameraError" style="height: 100%;width: 100%;position: absolute;top: 1%;" onclick="takepic" id="c">
</camera>
- flash值控制閃光燈的開啟。
- @error就是前文提到的,如果用戶不授權(quán)就會觸發(fā)的回調(diào)函數(shù)。
- deviceposition的值表示前后攝像頭,front表示前置,back表示后置。
2、index.js
這里約定,接受到0的信息表示進行拍照的操作,手機側(cè)沿用之前的功能編寫即可。
- takePhoto(options)
takepic(){
var options= {
"quality":"normal",
"success":this.onSuccess(),
"fail":this.onFailed(),
"complete":this.onCompleted()
}
this.$element("c").takePhoto(options
);
},
onFailed:async function(){
prompt.showToast({
message: "拍攝失敗"
});
},
onSuccess:async function(e){
console.info(this.TAG+JSON.stringify(e))
prompt.showToast({
message: "拍攝成功"
});
},
onCompleted:async function(){
prompt.showToast({
message: "拍攝完成"
});
},
cameraError(){
prompt.showToast({
message: "授權(quán)失敗!"
});
},
這里將takpic()方法綁定到UDPsocket的監(jiān)聽函數(shù)上即可,當(dāng)判斷信息為0的時候,執(zhí)行拍照操作,可通過toast窗口判斷拍攝情況。
- 在config.json中添加讀寫媒體,相機的權(quán)限。
- 獲取用戶授權(quán)。
grantPermission() {
console.info('Calc[IndexPage] grantPermission')
let context = featureAbility.getContext()
context.requestPermissionsFromUser(['ohos.permission.CAMERA', "ohos.permission.WRITE_MEDIA","ohos.permission.READ_MEDIA"], 666, function (result) {
})
},
四、結(jié)語
可見Camera組件能夠獲取相機的預(yù)覽和拍照功能,各項回調(diào)函數(shù)能夠進入,但是實際沒有保存到圖庫,可能是該組件還未完善。下次我們繼續(xù)嘗試調(diào)用其他api來獲取相機預(yù)覽流和拍照功能。