.NET Xamarin中CameraCharacteristics.Get(ControlAeAvailableTargetFpsRanges)返回类型咨询
Xamarin .NET中Camera2的CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES返回类型问题
在Xamarin .NET的Camera2 API中,CameraCharacteristics.Get(CameraCharacteristics.ControlAeAvailableTargetFpsRanges)的等效返回类型是Android.Util.Range<Java.Lang.Integer>[],但不能直接通过强制类型转换获取,需要借助Xamarin提供的JavaCast<T>()扩展方法来完成类型转换,否则会触发运行时错误。
正确的调用代码示例:
// 获取支持的FPS范围数组 var fpsRanges = CameraCharacteristics.Get(CameraCharacteristics.ControlAeAvailableTargetFpsRanges) ?.JavaCast<Android.Util.Range<Java.Lang.Integer>[]>(); // 遍历并转换为.NET原生int类型使用 if (fpsRanges != null) { foreach (var range in fpsRanges) { int minFps = range.Lower.IntValue(); int maxFps = range.Upper.IntValue(); } }
关键说明:
- Java中的
Range<Integer>对应Xamarin中的Android.Util.Range<Java.Lang.Integer>,这里必须使用Java.Lang.Integer而非.NET原生int,因为Xamarin绑定的Java API保留了原有的Java类型体系。 - 直接强制转换(如
(Android.Util.Range<Java.Lang.Integer>[]))会因Java泛型类型擦除的机制导致运行时类型不匹配错误,JavaCast<T>()方法专门用于处理这类跨JVM与.NET的类型转换问题。
内容的提问来源于stack exchange,提问作者user11500484
相关产品推荐
相关产品推荐

