Получить DISPLAY_NAME с помощью DATA в Android MediaStore

Я создаю приложение музыкального плеера в Android. При нажатии на элемент списка будет воспроизводиться соответствующая песня, и название песни будет отображаться над панелью поиска в TextView с идентификатором "selectedItem". Но привязка данных выполняется в MediaCursorAdapter.class, который возвращает MediaStore.MediaColumns.DATA в виде строки для метода onListItemClick() класса MainActivity.java. Здесь название текущей песни установлено в строку. Но это показывает весь путь песни в приложении, который выглядит довольно плохо. Есть ли способ получить DISPLAY_NAME в моем классе MainActivity.java или как-то сократить этот путь, чтобы он не выглядел так плохо в приложении?

MainActivity.java

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    currentFile = (String) v.getTag();
    startPlay(currentFile);
}

MediaCursorAdapter.java

@Override
public void bindView(View view, Context context, Cursor cursor) {
    //TextView title = (TextView) view.findViewById(R.id.title_name);
    TextView displayName = (TextView) view.findViewById(R.id.display_name);
    TextView duration = (TextView) view.findViewById(R.id.duration);
    String nameOfTheSong = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME));
    nameOfTheSong = nameOfTheSong.substring(0,nameOfTheSong.length()-4);
    displayName.setText(nameOfTheSong);
    //title.setText(cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.TITLE)));
    long durationInMS = Long.parseLong(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DURATION)));
    double durationInMin = ((double)durationInMS/1000.0)/60.0;
    BigDecimal bigDecimal = new BigDecimal(durationInMin);
    durationInMin = bigDecimal.setScale(2, RoundingMode.HALF_UP).doubleValue();
    duration.setText(""+durationInMin);
    //SETTING THE PATH WHICH IS THEN USED IN onListItemClick OF THE MAINACTIVITY.JAVA CLASS
    view.setTag(cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA)));
}

Ссылка на Github: https://github.com/vishwabhat19/PlayMusic.git

1 ответ

Вы не показываете, как вы получили курсор, но вы можете использовать:

    MediaStore.Audio.Media.TITLE

или если у вас есть полный путь

 String trackname = fullpath.substring(fullpath.lastIndexOf("/") + 1, fullpath.length());
Другие вопросы по тегам