Я установил видео в качестве живых обоев, и оно отлично работает. Но когда я изменяю это видео, заменяя путь. В режиме предварительного просмотра оно показывает, что видео изменено, но после нажатия кнопки «НАСТРОЙКА ОБОИ» предыдущее видео не изменяется. Как я могу изменить текущее видео на новое, когда мои живые обои работают на телефоне. Исходный код для моих обоев ниже:
класс VideoLiveWallpaperService: WallpaperService () {
val PREFS_FILENAME = "com.billionaire.wallpaper.prefs"
val wall = "wall"
var prefs: SharedPreferences? = null
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 )")
// get pref for wallpapers
prefs = baseContext.getSharedPreferences(PREFS_FILENAME, 0)
val wall_path = prefs!!.getString(wall, "null")
val f = File(Environment.getExternalStorageDirectory().toString() + "/"+wall_path)
// System.out.println("Path >>>>>>>>>????? " + Environment.getExternalStorageDirectory().absolutePath+"ibad.mov");
if (wall_path.equals("null") && !f.isDirectory) {
mediaPlayer = MediaPlayer.create(baseContext,R.raw.test)
mediaPlayer.isLooping = true
} else{
val uri = Uri.parse(Environment.getExternalStorageDirectory().toString() + "/"+wall_path)
mediaPlayer = MediaPlayer()
mediaPlayer.setDataSource(baseContext, uri)
mediaPlayer.prepare()
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
}
}
Когда я изменяю ссылку в настройках, я вызываю живые обои по следующему коду:
try
{
val intent = Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
ComponentName(this@AnimattedViewpagerActivity, VideoLiveWallpaperService::class.java))
startActivity(intent)
}
catch (e:Exception) {
val intent = Intent()
intent.setAction(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER)
startActivity(intent)
}
Приведенный выше код открывает режим предварительного просмотра живых обоев. в этом режиме обои изменились, но после того, как я нажал кнопку «Установить обои» в этом предварительном просмотре, он не может изменить предыдущее видео. Пожалуйста, помогите мне.