установить видео как SET WALLPAPER в андроиде? - PullRequest
0 голосов
/ 01 января 2019

Я хочу установить видео в качестве обоев так же, как ZEDGE Wallpaper и другие приложения обоев делают в игровом магазине.Ниже приведен снимок экрана приложения ZEDGE Wallpaper, которое устанавливает видео в качестве обоев в Android.enter image description here

я использую ниже код для изображения в качестве обоев:

  val intentt = Intent(Intent.ACTION_ATTACH_DATA)
                    .setDataAndType(uri, "image/*")
                    .putExtra("mimeType", "image/*")
                    .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)


            startActivityForResult(Intent.createChooser(intentt, getString(R.string.setas)), 1)

что я могу сделать для видео, чтобы установить в качестве обоев?

1 Ответ

0 голосов
/ 02 января 2019

Здравствуйте, я нашел решение для моей проблемы:

в Kotlin Android:

класс VideoLiveWallpaperService: WallpaperService () {

override fun onCreateEngine(): WallpaperService.Engine {
    return VideoEngine()
}

internal inner class VideoEngine : WallpaperService.Engine() {

    private val TAG = javaClass.simpleName
    private val mediaPlayer: MediaPlayer

    init {
        Log.i(TAG, "( VideoEngine )")
        mediaPlayer = MediaPlayer.create(baseContext, R.raw.video1)
        mediaPlayer.isLooping = true
    }

    override fun onSurfaceCreated(holder: SurfaceHolder) {
        Log.i(TAG, "onSurfaceCreated")
        mediaPlayer.setSurface(holder.surface)
        mediaPlayer.start()
    }

    override fun onSurfaceDestroyed(holder: SurfaceHolder) {
        Log.i(TAG, "( INativeWallpaperEngine ): onSurfaceDestroyed")
        playheadTime = mediaPlayer.currentPosition
        mediaPlayer.reset()
        mediaPlayer.release()
    }
}

companion object {
    protected var playheadTime = 0
}

}

в Java:

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

}

в манифесте: <service android:name=".VideoLiveWallpaperService" android:label="Video live wallpaper" android:permission="android.permission.BIND_WALLPAPER"> <intent-filter> <action android:name="android.service.wallpaper.WallpaperService" /> </intent-filter> <meta-data android:name="android.service.wallpaper" android:resource="@xml/wallpaper" /> </service>

в разрешении / xml / wallpaper.xml:

<?xml version="1.0" encoding="utf-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...