作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我知道一首歌的 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 编程的新手,我正在尝试制作一个简单的媒体播放器应用程序,该应用程序可以从用户的 SD 卡中提取歌曲并使用户能够播放歌曲。我面临的问题是,当一首歌正在播放时,如果用户点击其他歌曲,
使用 AVAudioPlayer 我们可以使用这种方法循环播放多首歌曲: - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player suc
这是一道系统设计题。 假设我们有一个服务可以在听到歌曲时通知我们。让我们设计一个新服务,它能够返回过去 24 小时内听得最多的前 K 首歌曲。假设我们有大约 10 亿首歌曲和大约 2 亿用户。 将您的
由于我是 Flash CS6 actionscript 3 的新手,有人可以具体地举一个详细的例子,向我解释一下如何向我的播放器添加 2 首歌曲,并且仍然使用当前的播放和暂停按钮来控制它们吗? 非常感
我是一名优秀的程序员,十分优秀!