2011-05-25 12 views

Respuesta

1

La respuesta breve es sí. La respuesta larga es http://ikaruga2.wordpress.com/2011/06/15/video-live-wallpaper-part-1/

+0

gracias, me di cuenta y he creado el tutorial de ikaruga2. El punto es que el tutorial, que en realidad es muy bueno, deja algunos problemas abiertos, uno de ellos es el audio ... ¿LISA –

+0

también necesita audio? Eso es todo un desafío. Lea la documentación (es un poco inestable en el audio que conozco) y puede hacerse una idea. Tiene que pensar que, por ejemplo, el audio también puede ser utilizado por otros recursos y que es una tarea bastante compleja administrarlo. Buena suerte y espero que tengas éxito. P.S. Supongo que sabes que esta va a ser una aplicación que consume mucha batería, ¿verdad? – MayTheSchwartzBeWithYou

+0

sí, es un desafío ... es por eso que estoy buscando un enfoque alternativo. ¡Gracias de cualquier manera! LISA –

0

Solo para pensar fuera de la caja, ¿es posible tomar un reproductor de video en funcionamiento y volver a protegerlo en una ventana de Java en Android? No he hecho esto en Linux o Android, pero en Windows es posible obtener el identificador de ventana de una aplicación en ejecución y convertirla en un elemento secundario de un marco Java, con el resultado de que la ventana de la otra aplicación parece ser parte de su Java solicitud.

+0

realmente no sé ... –

2

Simplemente use MediaPlayer en lugar de VideoView y use MediaPlayer.setSurface en lugar de MediaPlayer.setDisplay. Si usa setDisplay, MediaPlayer intenta decirle al SurfaceHolder que mantenga la pantalla activada para LiveWallpapers y arrojará un error.

utilizo WebM de video/vpx8 pero esto debe trabajar con soportes lo MediaPlayer (sólo hay que poner el archivo de vídeo en res/prima)

package com.justinbuser.nativecore; 

import android.media.MediaPlayer; 
import android.service.wallpaper.WallpaperService; 
import android.view.SurfaceHolder; 
import com.justinbuser.android.Log; 

public class VideoWallpaperService extends WallpaperService 
    { 
     protected static int    playheadTime = 0; 

     @Override 
     public Engine onCreateEngine() 
      { 
       return new VideoEngine(); 
      } 

     class VideoEngine extends Engine 
      { 

       private final String  TAG  = getClass().getSimpleName(); 
       private final MediaPlayer mediaPlayer; 
       public VideoEngine() 
        { 
         super(); 
         Log.i(TAG, "(VideoEngine)"); 
         mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.wallpapervideo); 
         mediaPlayer.setLooping(true); 
        } 

       @Override 
       public void onSurfaceCreated(SurfaceHolder holder) 
        { 
         Log.i(TAG, "onSurfaceCreated"); 
         mediaPlayer.setSurface(holder.getSurface()); 
         mediaPlayer.start(); 
        } 

       @Override 
       public void onSurfaceDestroyed(SurfaceHolder holder) 
        { 
         Log.i(TAG, "(INativeWallpaperEngine): onSurfaceDestroyed"); 
         playheadTime = mediaPlayer.getCurrentPosition(); 
         mediaPlayer.reset(); 
         mediaPlayer.release(); 
        } 
     } 

} 
Cuestiones relacionadas