Как и в других вопросах android-video-as-a-live-wallpaper, единственный способ воспроизвести видео на живых обоях - это его декодировать самостоятельно?
VideoView в живых обоях?
Ответ 1
Просто используйте MediaPlayer вместо VideoView и используйте MediaPlayer.setSurface вместо MediaPlayer.setDisplay. Если вы используете setDisplay, MediaPlayer пытается сообщить SurfaceHolder, чтобы экран, на котором не разрешен для LiveWallpapers, выдает ошибку.
Я использую видео WebM/vpx8, но это должно работать с любым поддерживающим MediaPlayer (просто поместите видеофайл в res/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();
}
}
}
Ответ 2
Короткий ответ - да. Длинный ответ http://ikaruga2.wordpress.com/2011/06/15/video-live-wallpaper-part-1/
Ответ 3
Просто подумать нестандартно, можно ли взять рабочий видеопроигрыватель и переименовать его под java-окном в Android? Я не делал этого в Linux или Android, но под Windows можно получить дескриптор окна запущенного приложения и сделать его дочерним элементом Java-фрейма, в результате чего другое окно приложения выглядит как его часть вашей Java приложение.
Ответ 4
Я пробовал решение Justin Buser, и он не работает (протестирован на устройстве API 16), также нашел аналогичный код на https://github.com/thorikawa/AndroidExample/tree/master/MovieLiveWallpaper/; он тоже не работает. Единственное решение, похоже, заключается в использовании FFMPEG с NDK. например: https://github.com/frankandrobot