如何在没有 MediaStore.ALBUM_ARTIST 的情况下获取专辑艺术家数据
How to get album artist data without MediaStore.ALBUM_ARTIST
在我正在开发的应用程序中,我试图从歌曲文件中获取专辑艺术家。我使用游标进行了查询并提取了 album_artist
列 (),但是带有此字符串 (MediaStore.Audio.AudioColumns.ALBUM_ARTIST
) 的常量阻止我的应用程序编译导致 Unresolved reference
异常.
常量在其 JavaDoc 中有一个 @hide
,它似乎 "hide" 来自外部的字段(在这里找不到合法的来源来支持我,我可能是非常错误的)。
MediaStore source-code
困扰我的是SDK中存在常量,列存在(手动传递字符串有效)并且常量在代码中,为什么我不能使用它?如果有更好的方法是什么?代码中没有任何指示,MediaStore.Audio.Albums.ARTIST
没有给我我想要的数据(给我 "artist" 而不是 "album artist")。
有人知道获取这些数据的正确方法是什么吗?
(现在我要离开硬编码字符串)
一个解决方案是 answer
做你想做的可能不靠谱,为了保证album_artist标签的读取,你必须通过mediaMetadataRetriever.
手动读取标签
您正在尝试访问非 sdk 接口,这些都是 android 文档中未引用的所有方法、常量、类 等。
在android pie(api 28)之前,你可以尝试通过反射来使用和引用这些方法,但是从那时起google已经将所有非sdk接口的使用列入黑名单。唯一的例外是在特定 api 级别使用非 SDK 接口时,但您的应用不得支持以下任何 api 级别。
进行此类更改的原因是非 sdk 接口是 android 生态系统的一部分,由于某些内部原因必须在 AOSP 上可用,但不是最终的或可用于 public。 Google 不保证任何非 sdk 接口不会改变行为或被删除,从而破坏您的应用程序。由于开发人员坚持在生产 apps 中使用此类接口,他们决定严格执行限制。
javadoc中的@hide注解将代码从编译后的javaDoc中排除。因此,当 google 构建其文档时,不在 android 文档中的常量是预期的行为。
你可以参考这个问题
and the documentation
ps:你要访问的常量会在android R
后成为androidsdk的一部分
在我正在开发的应用程序中,我试图从歌曲文件中获取专辑艺术家。我使用游标进行了查询并提取了 album_artist
列 (),但是带有此字符串 (MediaStore.Audio.AudioColumns.ALBUM_ARTIST
) 的常量阻止我的应用程序编译导致 Unresolved reference
异常.
常量在其 JavaDoc 中有一个 @hide
,它似乎 "hide" 来自外部的字段(在这里找不到合法的来源来支持我,我可能是非常错误的)。
MediaStore source-code
困扰我的是SDK中存在常量,列存在(手动传递字符串有效)并且常量在代码中,为什么我不能使用它?如果有更好的方法是什么?代码中没有任何指示,MediaStore.Audio.Albums.ARTIST
没有给我我想要的数据(给我 "artist" 而不是 "album artist")。
有人知道获取这些数据的正确方法是什么吗?
(现在我要离开硬编码字符串)
一个解决方案是 answer 做你想做的可能不靠谱,为了保证album_artist标签的读取,你必须通过mediaMetadataRetriever.
手动读取标签您正在尝试访问非 sdk 接口,这些都是 android 文档中未引用的所有方法、常量、类 等。 在android pie(api 28)之前,你可以尝试通过反射来使用和引用这些方法,但是从那时起google已经将所有非sdk接口的使用列入黑名单。唯一的例外是在特定 api 级别使用非 SDK 接口时,但您的应用不得支持以下任何 api 级别。
进行此类更改的原因是非 sdk 接口是 android 生态系统的一部分,由于某些内部原因必须在 AOSP 上可用,但不是最终的或可用于 public。 Google 不保证任何非 sdk 接口不会改变行为或被删除,从而破坏您的应用程序。由于开发人员坚持在生产 apps 中使用此类接口,他们决定严格执行限制。
javadoc中的@hide注解将代码从编译后的javaDoc中排除。因此,当 google 构建其文档时,不在 android 文档中的常量是预期的行为。
你可以参考这个问题
ps:你要访问的常量会在android R
后成为androidsdk的一部分