MediaPlayer功能搜索特定歌曲

时间:2014-02-27 03:16:07

标签: android eclipse media-player

我想创建一个mp3应用程序,用户在其中提供文本,然后播放该歌曲。到目前为止,我记住了这个功能:

public void searchSong(String x) {
    mp = MediaPlayer.create(MainActivity.this, R.raw.x);
mp.start();
}

其中x是存储的名称,但是当然这会产生错误,说“x无法解析或不是字段”。我该如何解决这个问题?非常感谢

1 个答案:

答案 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();
    }
}