【问题标题】:Android: how the unknown album, artist, genre of music will be displayed?Android:未知的专辑、艺术家、音乐流派将如何显示?
【发布时间】:2012-09-28 14:09:20
【问题描述】:

我正在 Android 中开发一个音乐应用程序,在检索歌曲的专辑、艺术家、流派名称时,我得到了一些未知名称。

对于专辑,未知专辑名称显示为“音乐”。 对于艺术家,未知艺术家名称显示为“” 对于流派,未知流派显示为“”

这些默认名称在所有设备上都相同吗?因为我想将那些未知名称重命名为更易读-例如:“未知艺术家”或“未知专辑”

我只在 2 台设备上尝试过,发现未知专辑名称显示为“音乐”,但未知艺术家名称在两种设备中的显示方式不同。

我想知道如何处理这些未知名称。

【问题讨论】:

标签: android android-mediaplayer audio-player


【解决方案1】:

看来你需要UNKNOWN_STRING:

当媒体属性未知时使用的字符串。例如,如果音频文件没有任何元数据,则艺术家和专辑列将设置为此值。

我在这里检查了 MediaPlayer android 代码,实际上默认情况下它执行以下步骤:

  • 检查来自 ContentProvider 的字符串是否为 UNKNOWN_STRING;
  • 如果是这样,它会被资源中的一些字符串更改(我怀疑您是否真的需要这些字符串);

因此,您只需检查 ContentProvider 返回的数据是否为 ​​MediaStore.UNKNOWN_STRING 并按您喜欢的方式处理它。 (例如,在所有设备上提供相同的字符串)。
比如checkoutcom.android.music.MediaPlaybackActivitysource,代码如下:

if (MediaStore.UNKNOWN_STRING.equals(albumName)) {
    albumName = getString(R.string.unknown_album_name);
    albumid = -1;
}

【讨论】:

  • 在我手机里的一首歌中,我有一首空专辑名称的歌曲(在元数据中)。但是在检索时,Android系统本身将专辑名称显示为“音乐”。
  • 对,因为我提到的UNKNOWN_STRING目前是“”(空字符串)。请参阅我的回答,我提供了有关处理逻辑的更多详细信息。
  • 我看过你的代码。 MediaStore.UNKNOWN_STRING 来自 api level-8,但我正在 api level-7 中开发它。所以我检查了声明 - if (albumName.equals(""))。但它甚至没有通过这个声明。
  • “它甚至没有通过这个声明”是什么意思?您是否编译过它并提供了它可能有机会执行的“某处”?或者albumName 是否等于null(这种情况可以很容易地被视为“”)?还有一些坏消息:基于developer.android.com/about/dashboards/index.html,现在只有 3.7% 的设备拥有 API 7(而且数量每天都在减少)。
  • 我已经在 API-8 中尝试过,if(MediaStore.UNKNOWN_STRING.equals(albumName))albumName = "Other"; 但未知的专辑名称仍然没有显示为“其他”它以默认名称“音乐”显示。
【解决方案2】:

如果您的音频媒体没有专辑元数据,那么 android 扫描仪会将专辑名称设置为包含您的媒体的文件夹的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    相关资源
    最近更新 更多