【发布时间】:2016-09-16 10:32:52
【问题描述】:
此代码同步surfaceview和媒体播放器用于在线流媒体
我的代码:
static SurfaceView videoSurface;
static SurfaceHolder videoHolder;
static MediaPlayer mediaPlayer;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.page);
videoSurface = (SurfaceView) findViewById(R.id.surfView);
videoHolder = videoSurface.getHolder();
videoHolder.addCallback((Callback) this);
mediaPlayer = new MediaPlayer();
new Thread(new Runnable() {
@Override
public void run() {
String link = "link.m3u8";
imgPlay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
play(link);
}
});
}
}).start();
}
public static void play(final String link) {
new Thread(new Runnable() {
@Override
public void run() {
try {
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
mediaPlayer.setDisplay(videoHolder);
mediaPlayer.setDataSource(link);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
这段代码可以工作,但几秒钟后
如果加载完成后我点击imgPlay,错误正在播放0
但如果我等待几秒钟,然后点击 imgPlay 播放没有问题!
【问题讨论】:
-
你正在启动线程,就像它们是烟花一样
-
好的,我在 UI 中使用它,但不起作用
标签: android android-mediaplayer surfaceview