You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Android中如何正确转换获取MandatoryStreamCombination数组?

Xamarin Android获取MandatoryStreamCombination列表的正确类型转换

在Xamarin Android中,直接将CameraCharacteristics.ScalerMandatoryStreamCombinations的返回值强制转换为MandatoryStreamCombination[]、Java.Lang.Object[]或单个MandatoryStreamCombination都会报错,原因是Xamarin对Java数组的绑定采用了专用包装类型,而非直接映射为C#数组。

正确转换方式

你需要先将返回值转换为Android.Runtime.JavaArray<MandatoryStreamCombination>,再转换为C#数组:

var manager = (CameraManager?)Application.Context.GetSystemService(Context.CameraService);
var cameraId = "0";

var characteristics = manager.GetCameraCharacteristics(cameraId);
// 先转为Xamarin的Java数组包装类型
var javaArray = characteristics.Get(CameraCharacteristics.ScalerMandatoryStreamCombinations) as Android.Runtime.JavaArray<MandatoryStreamCombination>;

// 转换为C#可直接操作的数组
var mandatoryCombinations = javaArray?.ToArray<MandatoryStreamCombination>();

补充说明

  • Android.Runtime.JavaArray<T>是Xamarin用来封装Java原生数组的类型,对应Android官方文档中提到的MandatoryStreamCombination[]
  • 如果不需要完整数组,也可以直接遍历JavaArray<T>实例:
    if (javaArray != null)
    {
        foreach (var combination in javaArray)
        {
            // 处理每个MandatoryStreamCombination对象
        }
    }
    

内容的提问来源于stack exchange,提问作者Softlion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:02:08