|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Actualizacion de aplicacion?
Hola buenas, estoy desarrollando una aplicacion para android y tengo un par de dudas, a ver si pueden resolvermelas...
La aplicacion es para reproduccion de videos, y las dudas son: Tengo la aplicacion con x videos (que no videos x Como digo tendria los videos en el telefono, como puedo hacer para reproducirlos? Hasta ahora utilizo un activity nuevo con un video view, pero un activity para cada video me parece muy mal... Hay alguna forma de reproducir el video con el reproductor preinstalado en el movil, de manera que al pinchar se reproduzca en el reproductor sin usar video views, ni activitys ni nada...? Como puedo hacer esto? Muchas gracias!
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
|
|
#2
|
||||
|
||||
|
Has probado a ejecutar un intent con action_view y un uri que sea el archivo de video?? En teoría te saldría una lista de todas la apps regristradas en el sistema que reproduzcan video para que escojas o simplemente se ejecutaría directamente con la app de vídeo por defecto.
|
|
#3
|
||||
|
||||
|
Has probado a ejecutar un intent con action_view y un uri que sea el archivo de video?? En teoría te saldría una lista de todas la apps regristradas en el sistema que reproduzcan video para que escojas o simplemente se ejecutaría directamente con la app de vídeo por defecto.
![]()
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
#4
|
||||
|
||||
|
¿Por qué no lo almacenas con un id especifico y cada vez que lo ejecutes que se te abra el activity de reproducción y pase por defecto la id de ese vídeo en cuestión? Al fin y al cabo solo necesitas un paso de parámetros entre activitis. Otra solución es una base de datos interna. Si te fuerza el cierre puede ser o cosa del manifestó o que estas reproduciendo mas de un vídeo a la vez y no lo permite.
¿Qué te pone en el Log cuando se te cierra? |
|
#5
|
||||
|
||||
|
¿Por qué no lo almacenas con un id especifico y cada vez que lo ejecutes que se te abra el activity de reproducción y pase por defecto la id de ese vídeo en cuestión? Al fin y al cabo solo necesitas un paso de parámetros entre activitis. Otra solución es una base de datos interna. Si te fuerza el cierre puede ser o cosa del manifestó o que estas reproduciendo mas de un vídeo a la vez y no lo permite.
¿Qué te pone en el Log cuando se te cierra? ![]() Ahora hago captura del error y lo pongo
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
#6
|
||||
|
||||
|
Cada vez que hagas una descarga, tienes que almacenar el nombre del vídeo como un recurso mas y con una id. Te creas un arraylist que beba de la carpeta vídeos(por ejemplo) que este en res. Cada vez que descargues un vídeo, que se añada como elemento al arraylist. Eso te va a servir de indice. Cuando luego pinches un vídeo en la lista desde la que accedas(El que sea) tienes que llamar a a la activiti reproducir pasándole por argumento el value(el id del que hemos hablado antes) del vídeo. Esta cargara el vídeo con dicho valor. Para que te hagas una idea, lo que haces es pasar por referencia el vídeo. Tu tienes una estantería de DVDs y un robot. tu lo que haces es decirle al robot la posición del DVD y este coge la peli y te la pone. No se si eso es a lo que te refieres. Si quieres hacer lo que he entendido este seria un método.
|
|
#7
|
||||
|
||||
|
Si, eso me serviria bastante...
Y como puedo hacer para descargar los videos nuevos?
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
#8
|
||||
|
||||
|
Depende de como lo quieras plantear. Imaginemos(Que no lo se) que te bajas vídeos mediante una lista en un activity. El principio es parecido a lo anterior: tienes unos botones que se van creando en una lista personalizada (arraylist personalizado) y los cuales tienen el nombre del vídeo pero en cambio tienen el value de la dirección de descarga. Tendrías que hacer dos métodos. Uno para que añada nuevos elementos a la lista personalizada desde donde estén los vídeos(una pag web, una base de datos...etc. En fin, el método que estés utilizando) y otro método que se llame descarga y que estará en el onclick de dichos botones. Este no solo debe descargarte el vídeo (Contando con que los vas a reproducir siguiendo el método que te dije) sino también añadirle a la lista de vídeos descargados que creaste anteriormente para con su nombre y su id de referencia para que el reproductor te lo coja.
No es por hacerte de menos pero te veo algo verde en temas de listas personalizadas y arraylist. Mi consejo es que primero y antes de meterte en faena te empapes bien de estos y de otros conceptos básicos. Sobre todo te lo comento ya que podrás ver mucho mas fácilmente como hacer diferentes cosas (aunque no sepas hacerlas directamente. Tendrás una idea mejor de lo que quieres) y sera mucho mas fácil para nosotros poder entender el problema exacto y echarte un cable
|
|
#9
|
||||
|
||||
|
Depende de como lo quieras plantear. Imaginemos(Que no lo se) que te bajas vídeos mediante una lista en un activity. El principio es parecido a lo anterior: tienes unos botones que se van creando en una lista personalizada (arraylist personalizado) y los cuales tienen el nombre del vídeo pero en cambio tienen el value de la dirección de descarga. Tendrías que hacer dos métodos. Uno para que añada nuevos elementos a la lista personalizada desde donde estén los vídeos(una pag web, una base de datos...etc. En fin, el método que estés utilizando) y otro método que se llame descarga y que estará en el onclick de dichos botones. Este no solo debe descargarte el vídeo (Contando con que los vas a reproducir siguiendo el método que te dije) sino también añadirle a la lista de vídeos descargados que creaste anteriormente para con su nombre y su id de referencia para que el reproductor te lo coja.
No es por hacerte de menos pero te veo algo verde en temas de listas personalizadas y arraylist. Mi consejo es que primero y antes de meterte en faena te empapes bien de estos y de otros conceptos básicos. Sobre todo te lo comento ya que podrás ver mucho mas fácilmente como hacer diferentes cosas (aunque no sepas hacerlas directamente. Tendrás una idea mejor de lo que quieres) y sera mucho mas fácil para nosotros poder entender el problema exacto y echarte un cable ![]() ![]()
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
#10
|
||||
|
||||
|
He estado avanzando en la aplicacion, al final voy a guardar los videos en un servidor y usare bases de datos para los videos, pero tengo un problema que no consigo resolver...
Tengo un activity video view al que le paso los videos por referencia como me aconsejasteis, pero da igual que video le pase, en que formato o lo que sea, en todos pone que no se puede reproducir... A que se debe esto? Habia trabajado antes con videoview y no me daban este problema... alguna ayuda? Dios en android estoy mas verde de lo que pensaba...
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
#11
|
||||
|
||||
|
Es muy poca información para poder ayudarte
a ver, puede ser por problemas con la consulta en el server, con los permisos al cargarlo, con el formato o el peso del video etc. No se que mas decirte. Yo en vídeos no controlo tanto como me gustaría. Lo siento Te he dicho todo lo que se tal y como lo haría yo. Intenta encontrar el error especifico en el log o probando a buscar videos de diferentes pesos, formatos y direcciones a ver me dices a ver si te puedo echar una mano.
|
|
#12
|
||||
|
||||
|
He probado con diversos videos, entre ellos algunos de tutoriales sacados de internet pero nada...
Este es mi codigo: Código:
if (v.getId()==R.id.tv1) {
Intent int1=new Intent(this,video.class);
String idn = "R.raw.y1b1w_bc.mp4";
Bundle id = new Bundle();
id.putString("id",idn);
int1.putExtras(id);
startActivity(int1);
}
if (v.getId()==R.id.tv2) {
Intent int1=new Intent(this,video.class);
String idn = "R.raw.y1b1w_6m";
Bundle id = new Bundle();
id.putString("id",idn);
int1.putExtras(id);
startActivity(int1);
}
v1 = (VideoView)findViewById(R.id.v1);
Bundle idR = getIntent().getExtras();
String id = idR.getString("id");
try {
String uri = ("android://com.example.marcos.proyecto1"+id);
v1.setVideoPath(uri);
MediaController mc = new MediaController(this);
v1.setMediaController(mc);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
v1.requestFocus();
v1.start();
No se que puede ser...
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
#13
|
||||
|
||||
|
pasa también lo que te ponga en el log cuando te da fallo en el vídeo por favor
.
|
|
#14
|
||||
|
||||
|
Es que en el emulador no lo puedo probar, y en el movil al ejecutarlo me pone:
Este video no se puede reproducir. Como miro el problema del log?
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
#15
|
||||
|
||||
|
He conseguido esto, no se si tendra algo que ver:
java.lang.IllegalStateException: Could not find a method Star(View) in the activity class com.example.marcos.proyecto1.weapons for onClick handler on view class android.widget.RelativeLayout at android.view.View$1.onClick(View.java:3816) at android.view.View.performClick(View.java:4444) at android.view.View$PerformClick.run(View.java:18457 ) at android.os.Handler.handleCallback(Handler.java:733 ) at android.os.Handler.dispatchMessage(Handler.java:95 ) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.jav a:5034) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:807) at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:623) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NoSuchMethodException: Star [class android.view.View] at java.lang.Class.getConstructorOrMethod(Class.java: 472) at java.lang.Class.getMethod(Class.java:857) at android.view.View$1.onClick(View.java:3809)
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
#16
|
||||
|
||||
|
He creado otro proyecto similar solo para ver si ejecutaba el video, y nada...
Este es el log: Código:
05-04 13:42:33.910 1751-1751/com.example.video D/dalvikvm﹕ Not late-enabling CheckJNI (already on) 05-04 13:42:34.280 1751-1751/com.example.video D/﹕ HostConnection::get() New Host Connection established 0xb78cc600, tid 1751 05-04 13:42:34.460 1751-1751/com.example.video W/EGL_emulation﹕ eglSurfaceAttrib not implemented 05-04 13:42:34.500 1751-1751/com.example.video D/OpenGLRenderer﹕ Enabling debug mode 0 05-04 13:42:34.580 1751-1751/com.example.video D/MediaPlayer﹕ Couldn't open file on client side, trying server side 05-04 13:42:34.610 1751-1762/com.example.video E/MediaPlayer﹕ error (1, -2147483648) 05-04 13:42:34.820 1751-1751/com.example.video D/dalvikvm﹕ GC_FOR_ALLOC freed 72K, 6% free 3155K/3336K, paused 6ms, total 7ms 05-04 13:42:34.860 1751-1751/com.example.video D/dalvikvm﹕ GC_FOR_ALLOC freed 2K, 6% free 3457K/3640K, paused 4ms, total 4ms 05-04 13:42:34.880 1751-1751/com.example.video D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 5% free 3761K/3944K, paused 14ms, total 14ms 05-04 13:42:34.880 1751-1751/com.example.video D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 5% free 4065K/4248K, paused 2ms, total 3ms 05-04 13:42:34.990 1751-1751/com.example.video I/Choreographer﹕ Skipped 43 frames! The application may be doing too much work on its main thread. 05-04 13:42:35.160 1751-1751/com.example.video E/MediaPlayer﹕ Error (1,-2147483648) 05-04 13:42:35.160 1751-1751/com.example.video D/VideoView﹕ Error: 1,-2147483648 05-04 13:42:35.260 1751-1751/com.example.video D/dalvikvm﹕ GC_FOR_ALLOC freed 17K, 4% free 4416K/4560K, paused 5ms, total 5ms 05-04 13:42:35.340 1751-1751/com.example.video I/dalvikvm-heap﹕ Grow heap (frag case) to 5.493MB for 1127532-byte allocation 05-04 13:42:35.350 1751-1760/com.example.video D/dalvikvm﹕ GC_FOR_ALLOC freed 2K, 3% free 5514K/5664K, paused 11ms, total 11ms 05-04 13:42:35.640 1751-1751/com.example.video W/EGL_emulation﹕ eglSurfaceAttrib not implemented Código:
package com.example.video;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.MediaController;
import android.widget.VideoView;
public class MainActivity extends Activity {
VideoView v1;
@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
v1 = (VideoView)findViewById(R.id.v1);
String uri = ("android://com.example.video/"+R.raw.y1b1w_bc);
Uri uric = Uri.parse(uri);
v1.setVideoURI(uric);
MediaController mc = new MediaController(this);
v1.setMediaController(mc);
v1.requestFocus();
v1.start();
}
@override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
#17
|
||||
|
||||
|
MediaPlayer﹕ Error (1,-2147483648) -> Concretamente ese error no da mucha información ya que se trata, digamos, de un error genérico. Un Unknown_Error.
Cuál es el formato del video? Has probado con otros formatos? |
|
#18
|
||||
|
||||
|
Si, he probado con varios formatos y videos, entre ellos algunos sacados de tutoriales que aseguran que funcionan... pues a mi nada...
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
#19
|
||||
|
||||
|
Ya lo he solucionado, no se lo que pasaba, pero cambiando la version del gradle se ha solucionado, muchas gracias!
__________________
"640K deberían ser suficientes para todo el mundo" (Bill Gates, 1981)
![]() |
|
|
|
#20
|
||||
|
||||
|
Me alegro de que lo hayas arreglado
|
![]() |
Estás aquí
|
||||||
|
||||||