小编Eug*_*ene的帖子

如何使用自定义android.media.MediaDataSource和android.media.MediaPlayer?

我知道Android MediaPlayer是一件好事.它允许我们播放本地文件和媒体流.它很容易使用(例如):

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("http://streaming.shoutcast.com/80sPlanet"); // this steam broadcasts audio/mpeg
mediaPlayer.prepareAsync();
mediaPlayer.start();
Run Code Online (Sandbox Code Playgroud)

可以通过调用setDataSource()带有不同参数集的重载来设置不同类型的DataSource .这个函数有一个有趣的原型:

void setDataSource(MediaDataSource dataSource) 
Run Code Online (Sandbox Code Playgroud)

看起来可以完全覆盖DataSource您自己的实现.它确实有效:

import android.media.MediaDataSource;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.net.URL;
import java.net.HttpURLConnection;

public class UrlMediaDataSource extends MediaDataSource {
    URL url;
    HttpURLConnection connection;
    BufferedInputStream stream;

    public UrlMediaDataSource(URL url) throws IOException {
        this.url = url;
        connection = (HttpURLConnection) url.openConnection();
    }

    @Override
    public long getSize() {
        return 0;
    }

    @Override
    public int readAt(long position, byte[] buffer, int offset, int …
Run Code Online (Sandbox Code Playgroud)

java android url-scheme android-mediaplayer

7
推荐指数
1
解决办法
2509
查看次数

标签 统计

android ×1

android-mediaplayer ×1

java ×1

url-scheme ×1