Я попытался использовать видеофайл MP4 в качестве обоев.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Я попытался использовать видеофайл MP4 в качестве обоев.

Сообщение Anonymous »

Я только начинаю изучать Android Studio. Я попытался использовать видеофайл MP4 в качестве обоев. Это работает очень хорошо в предварительном просмотре обоев. Однако после завершения настройки и возврата на рабочий стол обои были приостановлены. Я пробовал много способов любить, но пока никакого прогресса. Версия Android: 15
Вот мой код:
публичный класс MyWallpaperService расширяет WallpaperService {

Код: Выделить всё

private MediaPlayer mediaPlayer;

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

class VideoWallpaperEngine extends Engine {

@Override
public void onSurfaceCreated(SurfaceHolder holder) {
super.onSurfaceCreated(holder);

if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setLooping(true);

try {
String uri = "android.resource://" + getPackageName() + "/" + R.raw.my_test;
mediaPlayer.setDataSource(getApplicationContext(), Uri.parse(uri));
mediaPlayer.prepareAsync();

mediaPlayer.setOnPreparedListener(mp -> {
Log.d("MyWallpaperService", "MediaPlayer is prepared.");
if (holder.getSurface() != null) {
mediaPlayer.setSurface(holder.getSurface());
mediaPlayer.start();
}
});

mediaPlayer.setOnCompletionListener(mp -> {
Log.d("MyWallpaperService", "MediaPlayer completed playing.");
});

mediaPlayer.setOnErrorListener((mp, what, extra) -> {
Log.e("MyWallpaperService", "MediaPlayer error: what=" + what + ", extra=" + extra);
return true;
});

} catch (IOException e) {
Log.e("MyWallpaperService", "Error setting data source", e);
}
} else {
mediaPlayer.setSurface(holder.getSurface());
}
}

@Override
public void onSurfaceDestroyed(SurfaceHolder holder) {
super.onSurfaceDestroyed(holder);
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
}
}

@Override
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
super.onSurfaceChanged(holder, format, width, height);
if (mediaPlayer != null) {

mediaPlayer.setSurface(holder.getSurface());

mediaPlayer.start();
}
}

}
}
В logcat:
Когда я щелкаю настройку обоев, выдается эта ошибка:
java.lang.IllegalArgumentException : поверхностьТекстура не должна иметь значение null
в android.view.Surface.(Surface.java:372)
в com.example.luming.MyWallpaperService$MyWallpaperEngine.startVideo(MyWallpaperService.java:59)
в com.example.luming.MyWallpaperService$MyWallpaperEngine.onSurfaceCreated(MyWallpaperService.java:44)
в android.service.wallpaper.WallpaperService$Engine.updateSurface(WallpaperService.java:1410)
в android. service.wallpaper.WallpaperService$Engine.attach(WallpaperService.java:1592)
в android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.doAttachEngine(WallpaperService.java:2627)
в android.service.wallpaper. WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:2666)
на com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:44)
на android.os.Handler.dispatchMessage( Handler.java:107)
в android.os.Looper.loopOnce(Looper.java:232)
в android.os.Looper.loop(Looper.java:317)
в android .app.ActivityThread.main(ActivityThread.java:8705)
в java.lang.reflect.Method.invoke(собственный метод)
в com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run( RuntimeInit.java:580)
на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
Я хочу, чтобы видеофайл mp4 можно было успешно воспроизвести как обои, циклично

Подробнее здесь: https://stackoverflow.com/questions/791 ... -wallpaper
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»