Android 如何从已知的 URI 获取单首歌曲的 ID 信息

标签 android media-player uri

我知道一首歌的 URI。如何获取歌曲的信息、主打曲等。

抱歉,我能找到的所有帖子都提供了一种索引整个库的方法,而不是如何获取单个已知 URI 歌曲信息的方法。这就是我用来获取 URI 的方法。 audioID 存储在 SharedPrefs 中。谢谢

int REQUEST_MEDIA = 0;
String audioID;

Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(i, REQUEST_MEDIA);//REQUEST_MEDIA is some const int to operate with in onActivityResult
 if (requestCode == REQUEST_MEDIA && resultCode == RESULT_OK) {
        audioID = data.getDataString();

最佳答案

我回答了我自己的问题,希望这对将来的其他人有帮助。

int REQUEST_MEDIA = 0;


SharedPreferences prefs;
String prefName = "MyPref";
String audioID, artist_name, artist_band;
Uri MyUri;



private OnClickListener startListener = new OnClickListener() {
    public void onClick(View v) {
        Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(i, REQUEST_MEDIA);//REQUEST_MEDIA is some const int to operate with in onActivityResult

    }
};


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_MEDIA && resultCode == RESULT_OK) {
        audioID = data.getDataString();
        MyUri = Uri.parse(audioID);
        String[] proj = { MediaStore.Audio.Media._ID,
                MediaStore.Audio.Media.DATA,
                MediaStore.Audio.Media.TITLE,
                MediaStore.Audio.Artists.ARTIST };

                Cursor tempCursor = managedQuery(MrUri,
                                            proj, null, null, null);

                tempCursor.moveToFirst(); //reset the cursor
                int col_index=-1;
                int numSongs=tempCursor.getCount();
                int currentNum=0;
                do{
                  col_index = tempCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
                  artist_name = tempCursor.getString(col_index);
                  col_index = tempCursor.getColumnIndexOrThrow(MediaStore.Audio.Artists.ARTIST);
                  artist_band = tempCursor.getString(col_index);
                  //do something with artist name here
                  //we can also move into different columns to fetch the other values

                  currentNum++;
                }while(tempCursor.moveToNext());


  prefs = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("alarm_selected", audioID);
editor.putString("alarm_name", artist_name);
editor.putString("alarm_band", artist_band);
editor.commit();    

    }
}

关于Android 如何从已知的 URI 获取单首歌曲的 ID 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11705692/

相关文章:

Android MediaPlayer 的播放状态

c# - 在 .NET 3.5 中使用 URI 类时保持 url 编码

uri - Uri 和 Url 在语义网中的使用

android - 如何在Android中实现三向滑动按钮

Android 媒体播放器服务最佳实践

Android:用mediaplayer播放本地视频

Android 内容 uri id 作为字符串

android - NFC卡模拟Android

android - 如何最小化按钮中文本和图像之间的空间?

android - 在 GLSL 中混合不同大小/坐标的纹理