Android getSupportedVideoSizes 总是返回 null

Posted

技术标签:

【中文标题】Android getSupportedVideoSizes 总是返回 null【英文标题】:Android getSupportedVideoSizes always returns null 【发布时间】:2012-12-25 04:06:05 【问题描述】:

我需要一些关于 android 上的 MediaRecorder 类的帮助。

我尝试使用getSupportedVideoSizes 来获取支持的视频尺寸列表,但它总是返回 null。

在测试中,以下设备在查询getSupportedVideoSizes时返回null

Galaxy Nexus (Android 4.2) HTC One Mini (Android 4.4.2) HTCEVOV4G (Android 4.0.3)

【问题讨论】:

这里有一些关于主题***.com/questions/5934829/…的讨论。 您好,感谢您的帮助,但不幸的是我看到了那个帖子。但是如何设置单独的预览和视频输出?这就是我无法理解的......因为他们都使用该函数 getSupportedVideoSizes 但对我来说它一直返回 null ... 你看到 YShinkarev 留下的最后一条评论了吗?有人提到,在某些情况下,getSupportedVideoSizes 按设计返回 null。 那么你的意思是这取决于手机? 不幸的是,如果我正确理解文档,这是一个与硬件相关的决定是否默认返回 null。 【参考方案1】:

The documentation for Camera.getSupportedVideoSizes() 读取,

退货 如果相机具有单独的预览和视频输出,则为 Size 对象列表;否则返回null。

并不完全清楚。但是,这意味着如果Camera.getSupportedVideoSizes()返回null,那么相机支持的预览尺寸和视频尺寸是一样的;在这种情况下,要获取支持的视频尺寸列表,请使用Camera.getSupportedPreviewSizes()

示例代码:

public List<Size> getSupportedVideoSizes(Camera camera) 
    if (camera.getParameters().getSupportedVideoSizes() != null) 
        return camera.getParameters().getSupportedVideoSizes();
     else 
        // Video sizes may be null, which indicates that all the supported 
        // preview sizes are supported for video recording.
        return camera.getParameters().getSupportedPreviewSizes();
    

【讨论】:

android 文档中的描述简直荒谬! 很好的答案和解释...这是一个很容易被忽视的小问题,尤其是当您的开发设备返回 getSupportedVideoSizes() 列表时。结果是三星和其他人返回 null,所以我的应用程序不得不猜测要使用的图片大小,这导致所有设备都不支持设置。现在,当使用 getSupportedPreviewSizes() 处理 null 情况时,它工作得很好。 荒谬的文档需要这种令人敬畏的挖掘。谢谢+1 ;)【参考方案2】:

或者直接使用

mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));

自动设置最佳分辨率。

【讨论】:

以上是关于Android getSupportedVideoSizes 总是返回 null的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

android 21 是啥版本

Android逆向-Android基础逆向(2-2)

【Android笔记】android Toast

图解Android - Android核心机制

Android游戏开发大全的目录