HarmonyOS 如何拉起系统相机,并系统弹框出来让用户确认是否允许访问相机

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

拉起系统相机参考Demo:

import picker from '@ohos.multimedia.cameraPicker'
import camera from '@ohos.multimedia.camera';
import common from '@ohos.app.ability.common';
import { BusinessError } from '@ohos.base';
import fileuri from '@ohos.file.fileuri';
import fs from '@ohos.file.fs';
class CameraPosition {
  cameraPosition: camera.CameraPosition
  saveUri: string
  constructor(cameraPosition: camera.CameraPosition, saveUri: string) {
    this.cameraPosition = cameraPosition
    this.saveUri = saveUri
  }
}
let mContext = getContext(this) as common.Context;
//指定uri保存,需要先创建这个文件,然后获得这个创建文件的uri
let pathDir = getContext().filesDir;
let filePath = pathDir + `/${new Date().getTime()}.jpg}`
fs.createRandomAccessFileSync(filePath, fs.OpenMode.CREATE);
let uri = fileuri.getUriFromPath(filePath);
async function demo() {
  try {
    let pickerProfile = new CameraPosition(camera.CameraPosition.CAMERA_POSITION_BACK, uri)
    //前置摄像机传CAMERA_POSITION_FRONT,后置摄像机传CAMERA_POSITION_BACK,saveuri传想存到对应沙箱的uri
    let pickerResult: picker.PickerResult = await picker.pick(mContext,
      [picker.PickerMediaType.PHOTO, picker.PickerMediaType.VIDEO], pickerProfile);
    console.log("the pick pickerResult is:" + JSON.stringify(pickerResult));
  } catch (error) {
    let err = error as BusinessError;
    console.error(`the pick call failed. error code: ${err.code}`);
  }
}
@Entry
@Component
struct Index {
  build() {
    Row() {
      Column() {
        Button('拉起后置摄像头').onClick(() => {
          demo()
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

参考文档:https://gitee.com/openharmony/docs/blob/92cc9d8b12b628332a5b97fe8df9e16174d3cd9e/zh-cn/application-dev/reference/apis/js-apis-cameraPicker.md

关于系统相机权限授权:

1.首先在module.json5文件中申请需要的权限:

"requestPermissions": [
  {
    "name": "ohos.permission.CAMERA",
    "usedScene": {
      "abilities": [
        "FormAbility"
      ],
      "when": "always"
    },
    "reason": "$string:Camera_Permission_Request"
  }
],

2.接着使用requestPermissionsFromUser方法获取权:

let atManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(this.context,
  [
    'ohos.permission.CAMERA'
  ]
).then((data) => {
  console.info('data:' + JSON.stringify(data));
  console.info('data permissions:' + data.permissions);
  console.info('data authResults:' + data.authResults);
}).catch((err: BusinessError) => {
  console.info('data:' + JSON.stringify(err));
});
分享
微博
QQ
微信
回复
7天前
相关问题
怎样保持文件允许用户出来?
1950浏览 • 1回复 待解决
如何调用系统相机拍照?
1786浏览 • 1回复 待解决
HarmonyOS H5拉起系统相机的样例代码
376浏览 • 1回复 待解决
HarmonyOS 拉起相机拍照
486浏览 待解决
如何从app跳转到系统相机
5528浏览 • 1回复 已解决
如何调用系统相机,拍照、录视频?
476浏览 • 1回复 待解决
鸿蒙可以直接调用系统相机吗?
8778浏览 • 1回复 待解决
有哪位知道怎样调用系统相机拍照
1923浏览 • 1回复 待解决
HarmonyOS 相册,相机拍照裁剪
180浏览 • 1回复 待解决
相机拍照界面应该怎样拉起
581浏览 • 1回复 待解决
HarmonyOS h5调用系统相机进行拍照
137浏览 • 1回复 待解决
如何拉起相机界面,有人知道吗?
1901浏览 • 1回复 待解决
拉起相机或者图库的demo提供
278浏览 • 1回复 待解决