gpt4 book ai didi

android - 在android中从http服务器播放视频

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:37 24 4
gpt4 key购买 nike

我有一个 ListView ,其中我从服务器的特定文件夹加载所有视频。现在我要做的是单击一个列表项,它应该在视频 View 中播放该视频。一切似乎都很完美,但我面临的唯一问题是当我点击 ListView 项目时它没有播放该视频。

附言。我收到以下登录错误日志,但不幸的是我的应用程序没有停止,我的显示器一直显示视频正在加载我在 Asynctask 中设置的进度条,但是当我检查日志 cat 时我看到了这个错误。

当然,我在 google 和 SO 中都进行了搜索,但没有得到令人满意的结果。

Folowwing 是我的日志猫消息。

02-21 11:08:52.964: W/SurfaceFlinger(101):     nothing to do with mask 0x00000000
02-21 11:08:52.974: W/System.err(1992): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
02-21 11:08:52.976: W/System.err(1992): at android.os.Handler.<init>(Handler.java:121)
02-21 11:08:52.976: W/System.err(1992): at android.widget.MediaController$3.<init>(MediaController.java:474)
02-21 11:08:52.977: W/System.err(1992): at android.widget.MediaController.<init>(MediaController.java:474)
02-21 11:08:52.978: W/System.err(1992): at android.widget.MediaController.<init>(MediaController.java:210)
02-21 11:08:52.978: W/System.err(1992): at iqual.fidol_final.ServerFileList.playVideo(ServerFileList.java:225)
02-21 11:08:52.979: W/System.err(1992): at iqual.fidol_final.ServerFileList.access$3(ServerFileList.java:221)
02-21 11:08:52.979: W/System.err(1992): at iqual.fidol_final.ServerFileList$PlayVideo$1.run(ServerFileList.java:181)
02-21 11:08:52.979: W/System.err(1992): at java.lang.Thread.run(Thread.java:856)

下面是我的代码。

mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

String url1 = null;
Object o1 = myList.get(position);
url1 = o1.toString().replace(" ", "%20").trim();
playVideo = (PlayVideo) new PlayVideo(url1).execute();
}
});

这是我播放视频的异步任务

class PlayVideo extends AsyncTask<String, Void, Boolean> {

String baseURL;

public PlayVideo(String baseURL) {
this.baseURL = baseURL;
}

@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = ProgressDialog.show(ServerFileList.this,
" Buffering...", "please wait..", false);
pDialog.setCancelable(false);

}

@Override
protected Boolean doInBackground(String... urls) {

Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
playVideo(baseURL);
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();

return true;
}

@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
}
}

下面是我的 playVideo 方法。

private void playVideo(String baseURL) {
Uri myUri = Uri.parse(baseURL);
MediaController mc;

mc = new MediaController(this);
mVideoView.setMediaController(mc);
mVideoView.setVideoURI(myUri);
System.out.println("====Myuri=====" + myUri);
mVideoView.requestFocus();
mVideoView.start();
}

我也尝试在 doInbackground 方法中创建新线程并删除线程,但这个技巧对我不起作用。

还有一件事,它在第 225 行显示错误,即 mc = new MediaController(this);

最佳答案

您可以删除 AsyncTask 并使用以下代码直接播放视频,

String url1 = null; 
Object o1 = myList.get(position);
url1 = o1.toString().replace(" ", "%20").trim();
playVideo(url1);

关于android - 在android中从http服务器播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21926308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com