嗨,我是我的应用程序中的新手,我正在使用视频播放URL视频
但是使用下面的代码URL视频无法正确缓冲并坚持玩请帮助我如何完美地播放URL视频,而Out stuck
需要遵循异步过程,然后用一些代码向我解释
代码: -
public class MainActivity extends AppCompatActivity {
ProgressBar progressBar = null;
VideoView mVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressbar);
mVideoView = (VideoView) findViewById(R.id.videoView1);
progressBar.setVisibility(View.VISIBLE);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(mVideoView);
Uri video = Uri.parse("http://www.ebookfrenzy.com/android_book/movie.mp4");
mVideoView.setMediaController(mediaController);
mVideoView.setVideoURI(video);
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer arg0) {
progressBar.setVisibility(View.GONE);
mVideoView.start();
}
});
}
}
您可以尝试一下,您错过了请求focus
public class MainActivity extends AppCompatActivity {
ProgressBar progressBar = null;
VideoView mVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressbar);
mVideoView = (VideoView) findViewById(R.id.videoView1);
progressBar.setVisibility(View.VISIBLE);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(mVideoView);
Uri video = Uri.parse("http://www.ebookfrenzy.com/android_book/movie.mp4");
mVideoView.setMediaController(mediaController);
mVideoView.setVideoURI(video);
// Request focus was missing
videoview.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer arg0) {
progressBar.setVisibility(View.GONE);
mVideoView.start();
}
});
} }
我的建议是第一次下载视频,如下所示,
我的建议是第一次下载视频,如下所示,
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;
public class VideoSaveSDCARD extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ProgressBack PB = new ProgressBack();
PB.execute("");
}
private class ProgressBack extends AsyncTask<String,String,String> {
ProgressDialog PD;
@Override
protected void onPreExecute() {
PD= ProgressDialog.show(LoginPage.this,null, "Please Wait ...", true);
PD.setCancelable(true);
}
@Override
protected void doInBackground(String... arg0) {
downloadFile("http://beta-vidizmo.com/hilton.mp4","Sample.mp4");
}
protected void onPostExecute(Boolean result) {
PD.dismiss();
}
}
private void downloadFile(String fileURL, String fileName) {
try {
String rootDir = Environment.getExternalStorageDirectory()
+ File.separator + "Video";
File rootFile = new File(rootDir);
rootFile.mkdir();
URL url = new URL(fileURL);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
//Updated Code.
File videoFile = new File(rootFile, fileName); // always maintain single Video File.
if(videoFile.exists())//check already exists
videoFile.delete();// then delete it.
FileOutputStream f = new FileOutputStream();
InputStream in = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = in.read(buffer)) > 0) {
f.write(buffer, 0, len1);
}
f.close();
} catch (IOException e) {
Log.d("Error....", e.toString());
}
}
然后开始从外部存储播放