0

我在android中构建音乐播放器应用程序。在单击listItem时,相应的歌曲将播放,歌曲的名称将显示在搜索栏上方的TextView中,其ID为“selectedItem”。但是数据绑定是在MediaCursorAdapter.class中完成的,它将MediaStore.MediaColumns.DATA作为字符串返回到MainActivity.java类的onListItemClick()方法。这里当前歌曲的名字被设置为字符串。但是这显示了App中歌曲的整个路径,看起来很糟糕。有没有办法在我的MainActivity.java类中获取DISPLAY_NAME,或者以某种方式缩短此路径,以便在应用程序中看起来不那么糟糕?在Android MediaStore中使用DATA获取DISPLAY_NAME

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

回答

0

你不告诉你如何让你的光标,但你可以使用:

MediaStore.Audio.Media.TITLE 

或者如果您有完整路径

String trackname = fullpath.substring(fullpath.lastIndexOf("/") + 1, fullpath.length()); 
相关问题