2011-05-25 113 views

回答

1
+0

谢谢你,我知道我已经建立了相应的ikaruga2教程。关键是,教程,这实际上是非常非常好的,留下了一些问题打开,其中之一是音频... LISA – 2014-01-19 19:14:30

+0

你还需要音频?这是一个很大的挑战。阅读文档(我知道音频有点不稳定),你可能会有想法。 您必须认为,例如,音频可能也会被其他资源使用,并且这对于管理它来说是相当复杂的任务。祝你好运,我希望你成功。 P.S.我想你知道这将是非常耗电的应用程序,对吧? – MayTheSchwartzBeWithYou 2014-01-20 19:27:10

+0

是的,这是一个挑战......这就是为什么我正在寻找替代方法。不管怎么说,还是要谢谢你! LISA – 2014-01-20 19:59:57

0

只是想在盒子外面,是否有可能采取工作的视频播放器,并重新在Android的Java窗口下它?我没有在Linux或Android上这样做过,但是在Windows下,可以获得正在运行的应用程序的窗口句柄,并使其成为Java框架的子句,其结果是其他应用程序的窗口看起来像是它的Java部分应用。

+0

真的不知道... – 2014-01-25 10:02:10

2

只需使用MediaPlayer而不是VideoView,并使用MediaPlayer.setSurface而不是MediaPlayer.setDisplay。如果使用setDisplay,则MediaPlayer会尝试告诉SurfaceHolder保持LiveWallpapers不允许的屏幕,并且会引发错误。

我用的WebM/vpx8视频但这应该与任何MediaPlayer的支持工作(只是把资源的视频文件/ RAW)

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

}