有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java视频实时墙纸更新视频源不工作

我将视频设置为实时壁纸,效果很好。但是当我通过替换路径来更改视频时。在预览中显示视频已更改,但单击“设置墙纸”后,上一个视频未更改。当我的实时壁纸在手机上运行时,如何用新视频更改当前视频。我的壁纸的源代码如下:

类VideoLiveWallperService:WallperService(){

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
}

}

当我更改首选链接时,我通过以下代码调用live Wallper:

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

以上代码打开实时壁纸的预览模式。在此模式下,墙纸已更改,但在我单击此预览中的“设置墙纸”按钮后,它无法更改以前的视频。请帮帮我


共 (0) 个答案