我们正在为 Android TV 设备构建 Unity 应用程序,并尝试访问 Unity 内的 USB 网络摄像头。
设备能够识别相机并在内置相机应用程序中显示其源。然而,当运行我们的统一应用程序时(在它请求相机权限之后),可用相机设备的列表是空的 - 无论是在启动时还是在应用程序运行时。
WebCamTexture.devices
来访问可用的摄像头,但此属性返回一个空列表。
在 Android 手机上运行相同的软件(相同的目标 api 和所有内容)并且一切都完美运行 - 尽管它自然会检测到其内置摄像头,因为没有 USB 端口可将 USB 网络摄像头连接到它。
这可能是什么原因造成的?据我所知,Android TV 操作系统实际上与 Android 相同,这应该可行。
测试代码相当于
var devices = WebCamTexture.devices;
Debug.Log( $"Length: {devices.Length}" )
foreach ( var device in devices )
{
Debug.Log( $"Device: {device.name}" );
}
输出:
长度:0
如果需要规格:
Android 启动器清单:
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.unity3d.player" android:installLocation="preferExternal">
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true"/>
<application android:extractNativeLibs="true" android:label="@string/app_name" android:icon="@mipmap/app_icon"/>
</manifest>
使用开源的Unity Native Camera Plugin,您可以做您想做的事情。从前面提到的 github 下载插件后,请使用 Camera.getCameraInfo() API。
如果这确实有效,请投票,我可以投票你的帖子以消除反对票。你不值得这样。