android播放自己服务器视频教程,在android中从http服务器播放视频

在Android应用中,尝试点击列表项播放视频时遇到问题。错误日志显示`Can't create handler inside thread that has not called Looper.prepare()`。问题可能出在在非UI线程中创建了MediaController。解决方案可能涉及在正确的线程中初始化MediaController或使用Handler。
摘要由CSDN通过智能技术生成

我有一个列表视图,我从服务器的特定文件夹加载所有视频.现在我要做的是点击一个列表项,它应该在视频视图中播放该视频.一切似乎都很完美,但我遇到的唯一问题是,当我点击列表视图项目时,它不会播放该视频.

PS.我正在跟踪登录错误日志,但我的应用程序没有停止不幸,我的显示器继续向我显示视频正在加载进度栏我设置在Asynctask,但当我检查日志猫我看到这个错误.

当然我已经在谷歌搜索过以及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.(Handler.java:121)

02-21 11:08:52.976: W/System.err(1992): at android.widget.MediaController$3.(MediaController.java:474)

02-21 11:08:52.977: W/System.err(1992): at android.widget.MediaController.(MediaController.java:474)

02-21 11:08:52.978: W/System.err(1992): at android.widget.MediaController.(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();

}

});

这是我播放视频的Asynctask

class PlayVideo extends AsyncTask {

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值