获取歌曲的确切路径并构建URI

时间:2017-09-26 21:39:12

标签: java android exoplayer

我正在使用Exo Player为Android制作音频播放器。到目前为止,我正在使用此代码并从手机中获取以下信息。数据,名称,艺术家。

public void getMp3Songs() {
    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";
    Cursor cursor = getContentResolver().query(uri, null, selection, null, null);
    if (cursor != null) {
        if (cursor.moveToFirst()) {
            do {
                String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
                String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
                String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
                int songId = cursor.getColumnIndex(MediaStore.Audio.Media._ID);
                arrayList.add(new Songs(songId, name, url));


            } while (cursor.moveToNext());

        }

        cursor.close();
    }
}

我需要的下一件事是这些曲目的确切路径。 为此我正在使用此代码。

private void initializePlayer(){
    player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(this), new DefaultTrackSelector()
                , new DefaultLoadControl());

    simpleExoPlayerView.setPlayer(player);
    player.setPlayWhenReady(playWhenReady);
    player.seekTo(currentWindow,playbackPosition);

    Uri uri = Uri.parse(url);
    MediaSource mediaSource = buildMediaSource(uri);
    player.prepare(mediaSource, true, false);
}

private MediaSource buildMediaSource(Uri uri) {
    return new ExtractorMediaSource(uri,
            new DefaultHttpDataSourceFactory("ua"),
            new DefaultExtractorsFactory(), null, null);
}

问题在于,当我启动播放器时,没有任何反应。它只是一个空白的球员而且没有打任何东西。我想我在这里弄乱文件路径。请帮忙。

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了解决方案,如果有人需要他可以使用它。问题不在于获取地址或构建Uri。这是在这个特定的部分。 new DefaultHttpDataSourceFactory("ua")将此更改为:

DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(this,
            Util.getUserAgent(this, "idk"), new DefaultBandwidthMeter());

现在在返回MediaSource时使用此实例。