Reproducción de vídeo desde el servidor http en android

Tengo una lista de vista en la que estoy cargando todos los videos de la carpeta particular del servidor. Ahora lo que estoy tratando de hacer es haciendo clic en un elemento de lista que debe reproducir ese video en la vista de vídeo. Todo parece funcionar perfecto, pero sólo el problema que estoy enfrentando es cuando hago clic en el elemento de vista de lista que no está reproduciendo ese video.

PD. Estoy recibiendo después de iniciar sesión en el registro de errores, pero mi aplicación no se detiene por desgracia, mi pantalla es seguir mostrándome que el video está cargando en la barra de progreso que establecí en Asynctask, pero cuando me registré log cat vi este error.

Por supuesto que he buscado en google, así como SO, pero no obtuvo resultado satisfactorio.

Folowwing es mi mensaje del gato del registro.

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) 

Y el siguiente es mi código.

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

Y este es mi Asynctask para reproducir video

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

Y el siguiente es mi método 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(); } 

También intenté crear el nuevo hilo en método del doInbackground y quitando el hilo también, pero estos trucos no trabajaron para mí.

También una cosa que muestra error en la línea 225 que es mc = new MediaController(this);

Puedes quitar tu AsyncTask y reproducir tu video directamente usando el siguiente código,

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

U puede reproducir vídeo en VideoView Intente esto con Asynctask

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.playvideo); VideoView v=(VideoView)findViewById(R.id.videoview); new BackgroundAsyncTask().execute("Video Url"); } public class BackgroundAsyncTask extends AsyncTask<String, Uri, Void> { Integer track = 0; ProgressDialog dialog; protected void onPreExecute() { dialog = new ProgressDialog(PlayVideo.this); dialog.setMessage("Loading, Please Wait..."); dialog.setCancelable(true); dialog.show(); } protected void onProgressUpdate(final Uri... uri) { try { media = new MediaController(PlayVideo.this); v.setMediaController(media); media.setPrevNextListeners(new View.OnClickListener() { @Override public void onClick(View v) { // next button clicked } }, new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); media.show(10000); v.setVideoURI(uri[0]); v.requestFocus(); v.setOnPreparedListener(new OnPreparedListener() { public void onPrepared(MediaPlayer arg0) { v.start(); dialog.dismiss(); } }); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override protected Void doInBackground(String... params) { try { Uri uri = Uri.parse(params[0]); publishProgress(uri); } catch (Exception e) { e.printStackTrace(); } return null; } 
  • Android VideoView, reproducción perfecta durante el cambio de orientación
  • Tamaño máximo de vídeo se puede agregar en la carpeta sin procesar android compatible?
  • Error de MediaPlayer / VideoView de Android (1, -2147483648)
  • reproducir streaming en VideoView, convertir url a rtsp
  • Error de MediaPlayer de Android (1, -2147483648)
  • Xamarin Android Player - No se puede reproducir este vídeo
  • No se puede obtener Vitamio VideoView para reproducir archivos de vídeo que Android VideoView normal reproducirá
  • Obtener el camino real para Uri Android
  • Lista de vídeos de Android ListView
  • VideoView Flujo de carga insuficiente
  • Forzar el vídeo para que se reproduzca en Orientación vertical sólo con MediaPlayer y VideoView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.