【问题标题】:How to get song title? Android如何获得歌曲名称?安卓
【发布时间】:2012-12-08 00:38:51
【问题描述】:

我在 SD 卡上有歌曲,我正在尝试获取该歌曲的标题:

File f = new File(filename);

String[] projection = { MediaStore.Audio.Media._ID, 
                        MediaStore.Audio.Media.ARTIST,
                        MediaStore.Audio.Media.TITLE,
                        MediaStore.Audio.Media.DATA, 
                        MediaStore.Audio.Media.DISPLAY_NAME,
                        MediaStore.Audio.Media.DURATION};

Cursor musiccursor = managedQuery(Uri.fromFile(f), 
                        projection, null, null, null);
musicTV.setText(musiccursor.getString(3));

但在最后一行我得到了NullPointerException。 感谢您的建议。

【问题讨论】:

  • 阅读光标文档,开始
  • musiccursor.getColumnIndex(MediaStore.Audio.Media.TITLE) 在哪里?您假设索引应该具有值 3。这是一个糟糕的假设和事件,如果它是一个好的假设,那么在 java 中索引从 0 开始而不是从 1。
  • 就我个人而言,我在我的投影中使用了 null(所以我得到了所有的列),直到我弄清楚如何去做。然后我减少了我的查询内容。
  • 嘿,如果可能的话,你能分享一下答案吗?

标签: android mediastore


【解决方案1】:

如果您使用光标,当您获取一些内容时,您必须将光标移动到第一个元素,因为光标指向第一个元素之前。 尝试使用:

Cursor musiccursor = managedQuery(Uri.fromFile(f),  projection, null, null, null);
cursor.moveToFirst();
musicTV.setText(musiccursor.getString(3));

【讨论】:

    【解决方案2】:

    你有没有看到this 让你达到 90%,然后this 会让你走完剩下的路。

    1. 查询设备
    2. 初始化光标
    3. 遍历光标

    困难的部分是理解列的抽象性质。请记住,它是一个数据库表,可以可视化为电子表格。不要忘记 Catch 声明!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      相关资源
      最近更新 更多