ClassCastException:无法将 MediaMetadataRetriever 转换为 AutoCloseable

ClassCastException: MediaMetadataRetriever cannot be cast to AutoCloseable

我尝试将 MediaMetadataRetriever 与 Kotlin use 一起使用:

MediaMetadataRetriever().apply {
    setDataSource(context, uri)
}.use {
    ...
}

但它在 Android 6 Marshmallow (23 API) 上给了我一个错误:

java.lang.ClassCastException: android.media.MediaMetadataRetriever cannot be cast to java.lang.AutoCloseable

为什么会这样?

MediaMetadataRetriever 实施 AutoCloseable since API level 29.

Android 是开源项目,您可以查看每个版本的来源。好像是不久前开始实现AutoClosable

API 28:

public class MediaMetadataRetriever
{

API 30

public class MediaMetadataRetriever implements AutoCloseable {