我想创建一个mp3应用程序,用户在其中提供文本,然后播放该歌曲。到目前为止,我记住了这个功能:
public void searchSong(String x) {
mp = MediaPlayer.create(MainActivity.this, R.raw.x);
mp.start();
}
其中x是存储的名称,但是当然这会产生错误,说“x无法解析或不是字段”。我该如何解决这个问题?非常感谢
答案 0 :(得分:0)
如果您的歌曲已经存储在SD卡的特定位置,您可以获取歌曲文件的uri,然后使用mp.setDataSource()来绑定将要播放的内容。
如果您想按特定歌曲名称搜索歌曲,可以使用android.provider.MediaStore。媒体提供程序包含内部和外部存储设备上所有可用媒体的元数据,包括歌曲名称。
一个简单的查询代码段如下:
public void searchSong(String songName) {
final String[] projections = new String[] {
android.provider.MediaStore.Audio.Media.ARTIST,
android.provider.MediaStore.Audio.Media.DATA };
final String selection = Media.TITLE + " = ?";
final String[] selectionArgs = new String[] { songName };
Cursor cursor = mContentResolver
.query(android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projections, selection, selectionArgs,
Media.DEFAULT_SORT_ORDER);
if (cursor != null) {
int indexFilePath = cursor.getColumnIndex(Media.DATA);
int indexArtist = cursor.getColumnIndex(Media.ARTIST);
while (cursor.moveToNext()) {
// Get the informations of the song
cursor.getString(indexArtist);
cursor.getString(indexFilePath);
// Then do what you want
}
cursor.close();
}
}