Problema con Webrowser y reproducción mp3 y vídeo

283 views
Skip to first unread message

benjaminrc78

unread,
May 16, 2012, 1:09:21 PM5/16/12
to desarrolladores-android
Buenas tardes.

Tengo un problemilla con una app y escribo a ver si me podéis echar un
cable.

Resulta que cargo en una parte de la app un webrowser y accedo a una
web online preparada para detectar si se accede con dispositivo móvil.
El caso es que en dicha web, tengo un reproductor que en algún caso
tiene un mp3 y en otros un vídeo tipo streaming.

El caso es que en la app, el webrowser, por alguna razón no lo
reproduce, pero en cambio si se accede directamente por navegador web,
si que se reproduce.

Que estoy haciendo mal ?

Y hay alguna manera para que por ejemplo en un enlace en la web, lo
abra con una app del móvil ?
Es decir, por ejemplo si pongo un enlace a un mp3, me abra el
reproductor de mp3 por defecto del móvil de alguna manera?

Un Saludo.

ROBERTO ANGUITA MARTIN

unread,
May 17, 2012, 3:13:17 AM5/17/12
to desarrollad...@googlegroups.com
Que settings le estas poniendo al webview, estas activando java?

Cuando te refieres a "pero en cambio si se accede directamente por navegador web, si que se reproduce." supongo que te refieres al navegador del android no del ordenador.

En cuanto a la pregunta que indicas para abrir con el reproductor, no hay una forma directa, debes crear un WebViewClient y dentro de el capturar el touch del link, analizar el link y si la URL acaba un mp3 abrirlo con el reproductor de android por ejemplo

--
 
Un saludo
Roberto Anguita 

(puedes seguirme en @ranguita78)
-------------------------------------------------------------------
coto - App del Restaurante el Coto del Casar
lightwidget - Widget que permiter convertir tu terminal en una linter 
sensores - Muestra los sensores disponibles en tu terminal así como los valores que toma
El Rincon de Luckesky - Blog der noticias Android

Antes de imprimir este e-mail piense bien si es necesario hacerlo. El medioambiente es cosa de todos.



--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.




Benjamin

unread,
May 17, 2012, 3:49:16 AM5/17/12
to desarrollad...@googlegroups.com
Por lo que leo desprendo que me he explicado fatal, lo siento.
A ver si puedo explicarme bien ahora..jeje

El código que uso es el siguiente:

WebView myWebView = (WebView) findViewById(R.id.webView1);
myWebView.setWebViewClient(new WebViewClient());    
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginsEnabled(true);
myWebView.loadUrl("http://www.web.com");

Me refiero a que el navegador de android por defecto o cualquier otro (como dolphin) si lo muestra, pero el navegador del webview no.

En concreto los ficheros a los que se accede son de formato mp3, flashch y aac plus.

En principio quería que se reprodujese dentro del webview, pero sino, no esta mal la opción que indicas de detectar el fichero cuando le presionen y que lo abra en el reproductor de android.
Algún ejemplo de esto por probar ?

También he probado a ponerlo como WebChromeClient, para que abra el navegador de android, pero el problema es que me abre la ventana de un navegador y se me va el foco de la app .. y aunque así funciona, para eso se accede directamente por el navegador, pero el objetivo es que se mantenga dentro de la app, ya que esto es solo una pequeña parte de la funcionalidad de la app.

Espero haberme explicado ahora mejor.

Un Saludo y gracias por la ayuda.
--
--------------------------------------------------------------------------------


Antes de imprimir este e-mail piense bien si es necesario hacerlo

NOTA: Los acentos han sido omitidos en su mayor parte para evitar errores en el envio.

Este mensaje y los documentos que, en su caso, lleve anexos, pueden contener informacion confidencial. Por ello, se informa a quien lo reciba por error, que la informacion contenida en el mismo es reservada y su no autorizado esta prohibido legalmente por la Ley Organica 15/1999 de Proteccion de Datos de Caracter Personal, por lo que en tal caso, debe abstenerse de realizar copia, remitirlo o entregarlo a otra persona y proceda a borrarlo de inmediato.
Si el receptor de la comunicacion no fuera el destinatario le informamos que cualquier divulgacion, copia, reproduccion ,distribucion o utilizacion no autorizada de la informacion contenida en la misma esta prohibida por la legislacion vigente y podra desencadenar acciones legales.

ROBERTO ANGUITA MARTIN

unread,
May 17, 2012, 4:20:53 AM5/17/12
to desarrollad...@googlegroups.com
Buenas Benjamin
un ejemplo que puedes encontrar navegando en developer.android.com

 public boolean shouldOverrideUrlLoading(WebView view, String url) {
       
if (url.endsWith(".mp3")) {
           
Intent intent = new Intent(Intent.ACTION_VIEW);
            intent
.setDataAndType(Uri.parse(url), "audio/*");
            view
.getContext().startActivity(intent);  
           
return true;
       
} else if (url.endsWith(".mp4") || url.endsWith(".3gp")) {
               
Intent intent = new Intent(Intent.ACTION_VIEW);
                intent
.setDataAndType(Uri.parse(url), "video/*");
                view
.getContext().startActivity(intent);  
               
return true;
       
} else {
           
return super.shouldOverrideUrlLoading(view, url);
       
}
     
}



En cuanto lo que indicas que te pasa al usar wl WebClientChrome es el comportamiento normal, para evitar no perder el foco, se debe hacer lo que haces en el codigo instanciar un WebClient y ponerlo por defecto como navegador.

Por ultimo con respecto a lo de que no te muestre el audio
segun he leido con esta configuracion deberia mostrartelo

web.getSettings().setJavaScriptEnabled(true); 
    web
.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    web
.getSettings().setPluginsEnabled(true);
    web
.getSettings().setSupportMultipleWindows(true);
    web
.getSettings().setSupportZoom(true);
    web
.getSettings().setBuiltInZoomControls(true);
    web
.getSettings().setAllowFileAccess(true);
    web
.setVerticalScrollBarEnabled(false);
    web
.setHorizontalScrollBarEnabled(false);

Si esto no te funciona, la pagina origen tiene que tener algun meta tag mal o incompatible,y el navegador lo ignora pero el webview no, con lo que te tocaria parsear y reescribir la pagina dinamicamente.

--
 
Un saludo
Roberto Anguita 

(puedes seguirme en @ranguita78)
-------------------------------------------------------------------
coto - App del Restaurante el Coto del Casar
lightwidget - Widget que permiter convertir tu terminal en una linter 
sensores - Muestra los sensores disponibles en tu terminal así como los valores que toma
El Rincon de Luckesky - Blog der noticias Android

Antes de imprimir este e-mail piense bien si es necesario hacerlo. El medioambiente es cosa de todos.

Benjamin

unread,
May 17, 2012, 5:04:00 AM5/17/12
to desarrollad...@googlegroups.com
Muchas gracias,
Lo pruebo y os digo a ver.

Un Saludo.


--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.

Benjamin

unread,
May 17, 2012, 9:35:26 AM5/17/12
to desarrollad...@googlegroups.com
Buenas tardes,

Ya he probado el código:

web.getSettings().setJavaScriptEnabled(true); 
    web
.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    web
.getSettings().setPluginsEnabled(true);
    web
.getSettings().setSupportMultipleWindows(true);
    web
.getSettings().setSupportZoom(true);
    web
.getSettings().setBuiltInZoomControls(true);
    web
.getSettings().setAllowFileAccess(true);
    web
.setVerticalScrollBarEnabled(false);
    web
.setHorizontalScrollBarEnabled(false);

Y nada, me sigue pasando lo mismo.
No reproduce nada.
El caso es que parece que lo descarga, pero al final no lo reproduce, puesto que en la cache del navegador aumenta los MB que ocupa el fichero.

Alguna idea nueva que aplicar para que funcione ?

Lo raro es que navegando desde el propio navegador por defecto funcione y lo reproduzca, pero en un webview, que se supone que es una instancia del navegador por defecto no funcione.
Habrá que añadir alguna opción mas ?

Un Saludo.

ROBERTO ANGUITA MARTIN

unread,
May 18, 2012, 2:59:23 AM5/18/12
to desarrollad...@googlegroups.com
Haz una simple prueba
crea una pagina HTML simple que muestre un audio, siguiendo el estandard de HTML5 y le indicas en los parametros del audio los tipos de audios soportados.
ya que en funcion del navegador se soportan unos u otros, aunque supongo que el webview deribara del Chrome que si aceptaba mp3.

Sube el html y el mp3 al telefono y carga la pagina en el webview, si funciona es cuestion de la compatibilidad de la pagina, por lo que te tocaria parsearla.


--
 
Un saludo
Roberto Anguita 

(puedes seguirme en @ranguita78)
-------------------------------------------------------------------
coto - App del Restaurante el Coto del Casar
lightwidget - Widget que permiter convertir tu terminal en una linter 
sensores - Muestra los sensores disponibles en tu terminal así como los valores que toma
El Rincon de Luckesky - Blog der noticias Android

Antes de imprimir este e-mail piense bien si es necesario hacerlo. El medioambiente es cosa de todos.


Benjamin

unread,
May 18, 2012, 5:43:01 AM5/18/12
to desarrollad...@googlegroups.com
Voy a probarlo a ver.

En cuanto a lo de parsearla, que significa eso ?

Un Saludo y gracias por la pronta respuesta.


--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.

ROBERTO ANGUITA MARTIN

unread,
May 18, 2012, 6:34:15 AM5/18/12
to desarrollad...@googlegroups.com
Parsear significa leer line a linea la pagina y darle un significado. Lo que viene a ser un analizador semantico.

Benjamin

unread,
May 18, 2012, 6:37:28 AM5/18/12
to desarrollad...@googlegroups.com
okok.
es decir ir leyendo hasta que salga algo que termine en mp3 para poder procesarlo.

De todas formas voy a probar primero lo otro que comentabas.

Un Saludo.

Benjamin

unread,
May 18, 2012, 7:42:32 AM5/18/12
to desarrollad...@googlegroups.com
He estado mirando por internet y he topado con una cosilla.
Yo estoy usando la API 7 .. es posible que si pongo una mayor podría llegar a funcionar ?
O no tiene nada que ver esto ?

De todas formas probare a poner una api superior a ver !
Si funciona os comento !

Benjamin

unread,
May 18, 2012, 10:33:38 AM5/18/12
to desarrollad...@googlegroups.com
Nada. Imposible.
Ni cambiando a api 14 funciona !

Se me ha ocurrido hacer una trampa, abrir el navegador web por defecto usando WebChromeClient().
Que se que en el navegador web si que funciona o que no funciona en el webview.

Lo malo que me sale la barra de direcciones del navegador.
Hay algún parámetro para que no salga ? (no encuentro nada de como quitarla)

Un Saludo.
Reply all
Reply to author
Forward
0 new messages