HarmonyOS 鸿蒙Next外接装置USB线连接手机

HarmonyOS 鸿蒙Next外接装置USB线连接手机 【问题描述】:现在卡在了使用UVC相机这块上面,我们的应用有部分重要功能需要手机通过OTG连接外设通过UVC协议获取图像,但是目前我们所了解到的,在鸿蒙5.0+上没有合适的库来实现,目前有个 https://ohpm.openharmony.cn/#/cn/detail/uvc_camera 但是只适配了openharmony

【问题现象】:如果需要完全要从底层驱动和协议开始开发,目前确实成本有点高,系统层面或者内部有没有相关SDK

【版本信息】:NA

【复现代码】:NA

【尝试解决方案】:NA


更多关于HarmonyOS 鸿蒙Next外接装置USB线连接手机的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

【解决方案】

开发者你好,USB外接相机的能力现已支持,接口参考:getSupportedCameras,选择ConnectionType为CAMERA_CONNECTION_USB_PLUGIN的相机即可,使用方式与正常系统相机使用方式一致,可参考相机管理开发相机应用文档。

更多关于HarmonyOS 鸿蒙Next外接装置USB线连接手机的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


尝试结论

getSupportedCameras 获取不到 ConnectionTypeCAMERA_CONNECTION_USB_PLUGIN(USB 连接的相机)的相机;仅能获取到 ConnectionTypeCAMERA_CONNECTION_BUILT_IN(内置相机)。

API版本

5.0.5(17)

getSupportedCameras返回

[
    {
        "cameraId": "device/0",
        "hostDeviceType": 0,
        "cameraType": 0,
        "connectionType": 0,
        "cameraPosition": 1,
        "hostDeviceName": "",
        "cameraOrientation": 90
    },
    {
        "cameraId": "device/1",
        "hostDeviceType": 0,
        "cameraType": 0,
        "connectionType": 0,
        "cameraPosition": 2,
        "hostDeviceName": "",
        "cameraOrientation": 270
    }
]

usbManager.getDevices可获取usb相机

{"name":"2-2","serial":"","manufacturerName":"Generic","productName":"USB Camera","version":"0200","vendorId":3034,"productId":22624,"clazz":239,"subClass":2,"protocol":1,"devAddress":2,"busNum":2,"configs":[{"id":1,"attributes":128,"isRemoteWakeup":false,"isSelfPowered":true,"maxPower":1000,"name":"USB Camera","interfaces":[{"id":0,"protocol":0,"clazz":14,"subClass":1,"alternateSetting":0,"name":"USB Camera","endpoints":[{"address":131,"attributes":3,"interval":6,"maxPacketSize":32,"direction":128,"number":3,"type":3,"interfaceId":0}]},{"id":1,"protocol":0,"clazz":14,"subClass":2,"alternateSetting":0,"name":" ","endpoints":[]},{"id":1,"protocol":0,"clazz":14,"subClass":2,"alternateSetting":1,"name":" ","endpoints":[{"address":129,"attributes":5,"interval":1,"maxPacketSize":128,"direction":128,"number":1,"type":1,"interfaceId":1}]},{"id":1,"protocol":0,"clazz":14,"subClass":2,"alternateSetting":2,"name":" ","endpoints":[{"address":129,"attributes":5,"interval":1,"maxPacketSize":512,"direction":128,"number":1,"type":1,"interfaceId":1}]},{"id":1,"protocol":0,"clazz":14,"subClass":2,"alternateSetting":3,"name":" ","endpoints":[{"address":129,"attributes":5,"interval":1,"maxPacketSize":1024,"direction":128,"number":1,"type":1,"interfaceId":1}]},{"id":1,"protocol":0,"clazz":14,"subClass":2,"alternateSetting":4,"name":" ","endpoints":[{"address":129,"attributes":5,"interval":1,"maxPacketSize":2816,"direction":128,"number":1,"type":1,"interfaceId":1}]},{"id":1,"protocol":0,"clazz":14,"subClass":2,"alternateSetting":5,"name":" ","endpoints":[{"address":129,"attributes":5,"interval":1,"maxPacketSize":3072,"direction":128,"number":1,"type":1,"interfaceId":1}]},{"id":1,"protocol":0,"clazz":14,"subClass":2,"alternateSetting":6,"name":" ","endpoints":[{"address":129,"attributes":5,"interval":1,"maxPacketSize":4992,"direction":128,"number":1,"type":1,"interfaceId":1}]},{"id":1,"protocol":0,"clazz":14,"subClass":2,"alternateSetting":7,"name":" ","endpoints":[{"address":129,"attributes":5,"interval":1,"maxPacketSize":5120,"direction":128,"number":1,"type":1,"interfaceId":1}]}]}]}

开发者您好,请升级手机系统至6.0.1(21)版本测试一下是否可以获取到USB连接的相机,

开发者您好,您测试使用的手机不支持USB相机,您可以根据getSupportedCameras接口去查寻,找到里面类型为USB的相机设备,如果能查到就说明手机支持USB相机,如果查不到就说明USB相机不可用。

HarmonyOS Next支持USB外接设备连接手机,需使用OTG转接线。连接后可在通知栏查看USB设备状态,通过文件管理器访问存储设备内容。部分USB设备需安装对应驱动或应用才能正常使用。

针对您在HarmonyOS Next上通过USB OTG连接UVC相机的问题,目前确实存在挑战。

核心情况是:HarmonyOS Next(即您提到的鸿蒙5.0+)与OpenHarmony在架构和API层面已明确区分。 您找到的uvc_camera三方库(ohpm链接)是为OpenHarmony社区版本设计的,其底层依赖的驱动框架、HDF(硬件驱动框架)接口以及@ohos.driver等相关API,与HarmonyOS Next的商用系统不兼容,因此无法直接使用。

关于系统支持,截至当前信息,HarmonyOS Next的公开SDK中尚未提供直接面向应用层、开箱即用的UVC协议或USB Video Class标准API。这意味着,实现此类功能通常需要涉及系统底层能力,而这部分能力目前并未开放给普通应用开发者。

对于您“从底层驱动开始开发成本高”的顾虑,这是完全合理的。目前可行的路径非常有限:

  1. 关注官方动态:此类涉及核心外设连接的功能,最可行的方式是等待华为官方在未来版本的HarmonyOS Next SDK中,提供相应的硬件访问或USB视频类支持。这是解决该问题的根本途径。
  2. 评估备选方案:如果项目周期紧急,需要评估是否可采用其他图像获取方案作为临时替代。

总结来说,在HarmonyOS Next的当前公开能力范围内,尚无直接支持应用层调用UVC相机的标准方案。建议将开发计划与官方SDK的更新路线图进行对齐。

回到顶部