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

}