remote-camera.md 2.8 KB
Newer Older
J
jiangminyang 已提交
1 2 3 4 5 6 7
# 分布式相机开发指导

## 场景介绍

分布式相机模块支持相机相关基础功能介绍说明。

## 开发步骤
J
jiangminyang 已提交
8
在计算器中连接分布式设备,在获取相机列表时getCameras(),遍历返回的列表,判断对应Camera对象中的ConnctionType是否等于CAMERA_CONNECTION_REMOTE,若等于则使用此对象创建camerainput,之后调用与本地相机使用一样。参考:[相机开发指导](./camera.md)
J
jiangminyang 已提交
9 10 11

详细API含义请参考:[相机管理API文档](../reference/apis/js-apis-camera.md)

J
jiangminyang 已提交
12
### 连接分布式相机
J
jiangminyang 已提交
13 14 15

打开设置->WLAN,将需要连接分布式相机的两台设备连入同一局域网。

16
打开计算器,点击右上角小图标,出现新的窗口,按提示输入验证码,连接成功。
J
jiangminyang 已提交
17

J
jiangminyang 已提交
18
### 创建实例
J
jiangminyang 已提交
19 20 21 22 23 24 25

```js
import camera from '@ohos.multimedia.camera'
import image from '@ohos.multimedia.image'
import media from '@ohos.multimedia.media'
import featureAbility from '@ohos.ability.featureAbility'

26
// 创建CameraManager对象
J
jiangminyang 已提交
27 28 29 30 31 32 33 34 35 36
let cameraManager
await camera.getCameraManager(globalThis.Context, (err, manager) => {
    if (err) {
        console.error('Failed to get the CameraManager instance ${err.message}');
        return;
    }
    console.log('Callback returned with the CameraManager instance');
    cameraManager = manager
})

37
// 注册回调函数监听相机状态变化,获取状态变化的相机信息
J
jiangminyang 已提交
38 39 40 41 42
cameraManager.on('cameraStatus', (cameraStatusInfo) => {
    console.log('camera : ' + cameraStatusInfo.camera.cameraId);
    console.log('status: ' + cameraStatusInfo.status);
})

43
// 获取相机列表
J
jiangminyang 已提交
44 45 46 47 48 49 50 51 52 53 54
let cameraArray
let remoteCamera
await cameraManager.getCameras((err, cameras) => {
    if (err) {
        console.error('Failed to get the cameras. ${err.message}');
        return;
    }
    console.log('Callback returned with an array of supported cameras: ' + cameras.length);
    cameraArray = cameras
})

55
for(let cameraIndex = 0; cameraIndex < cameraArray.length; cameraIndex++) {
56 57 58 59
    console.log('cameraId : ' + cameraArray[cameraIndex].cameraId)                          // 获取相机ID
    console.log('cameraPosition : ' + cameraArray[cameraIndex].cameraPosition)              // 获取相机位置
    console.log('cameraType : ' + cameraArray[cameraIndex].cameraType)                      // 获取相机类型
    console.log('connectionType : ' + cameraArray[cameraIndex].connectionType)              // 获取相机连接类型
J
jiangminyang 已提交
60 61 62 63 64
    if (cameraArray[cameraIndex].connectionType == CAMERA_CONNECTION_REMOTE) {
        remoteCamera = cameraArray[cameraIndex].cameraId
    }
}

65
// 创建相机输入流
J
jiangminyang 已提交
66 67 68 69 70
let cameraInput
await cameraManager.createCameraInput(remoteCamera).then((input) => {
    console.log('Promise returned with the CameraInput instance');
    cameraInput = input
})
J
jiangminyang 已提交
71
```
J
jiangminyang 已提交
72
剩余步骤参照[相机开发指导](./camera.md)