Ich bin ein Anfänger in der Android -Entwicklung. Ich versuche, eine einfache Live-Wallpaper-App zu erstellen, die von
https://github.com/cyunrei/video-live-wallpaper inspiriert ist. Eine der Änderungen, die ich vornehmen möchte, besteht darin, das Dateisystem nicht zu verwenden, um die Präferenz zu speichern, die Video verwendet werden soll, da es sich hacky und nicht angemessen anfühlt. Ich habe jedoch für diesen Zweck nicht sowohl den DataStore als auch die SharedPreferences verwendet. Ich denke, dass ich etwas Basic vermisse, das habe ich eingerichtet und was ich erwartet habe:
[*] Eine Aktivität, bei der ein Video ausgewählt werden kann (ich bin noch in einer Testphase, und alle Videos sind in Res/RAW )
a Wallpaper. Workflow so wie folgt: < /p>
In der Aktivität habe ich die Präferenz mit:
festgelegt
Code: Select all
context.getSharedPreferences(VIDEO_PREFS, 0).edit().putInt(VIDEO_ID, res).commit()
wobei der Kontext localcontext.current der komponierbaren Funktion ist.
Code: Select all
Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER).apply {
putExtra(
WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
ComponentName(context, MyVideoWallpaperService::class.java)
)
}.also { context.startActivity(it) }
< /code>
Ich muss zugeben, dass ich diesen Teil nicht vollständig verstehe, er wird aus dem im obigen Text erwähnten Referenzrepository kopiert.applicationContext.getSharedPreferences(VIDEO_PREFS, 0).getInt(VIDEO_ID, R.raw.example)
Ich mache dies derzeit jedes Mal, wenn die Videooberfläche auf sichtbar ist. Nachdem ich ein anderes Video in der Aktivität für die zweite (oder nachfolgende) Zeiten ausgewählt habe, gibt Schritt 3 den alten Wert zurück. Gibt es eine korrektere Möglichkeit, das zu erreichen, was ich will?
Danke für Ihre Hilfe