首先,您必须记住 4k 只是一个分辨率,但您还必须记住比特率。
以下是测试在特定设备上是否可以实现分辨率/比特率组合的方法:
boolean areSizeAndRateSupported (int width, int height, double frameRate)
https://developer.android.com/reference/android/media/MediaCodecInfo.VideoCapability.html#areSizeAndRateSupported(int,%20 int,%20 double)
还有:
isSizeSupported(int width, int height)
这些方法的唯一缺点是 API 级别 21 才支持它。
您还可以使用此方法检查编解码器功能:
MediaCodecInfo.VideoCapabilities.getVideoCapabilities()
https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities.html#getVideoCapabilities()
但据我所知,它们返回的分辨率可能低于实际支持的分辨率。
另一方面,在您的情况下,低于 android lollipop 的设备很可能速度不够快,无法播放 4k 视频。或者即使他们可以,他们的分辨率也太低,无法真正从 4k 分辨率中获得任何好处。
因此,在我看来,最优雅的解决方案是假设 android 5.0 以下不支持 4k,并使用上面的方法检查 android 5.0+ 是否支持它。