I'm having an orientation issue with a Live Wallpaper that I wrote. Basically the canvas will rotate depending on the application opened above it. I tested this and realized that the onSurfaceChanged() method is firing when I return to the home screen from a previously opened application who's orientation was changed.
I suppose a better question would be, why does my Live Wallpaper Surface Change when an application is opened and it's orientation changed? Is there a way to prevent my Live Wallpaper orientation from ever changing? Thanks, hope that makes sense?
Android application restarts the activity when the orientation changes.
You can either use
- android:configChanges in your manifest. The activity is shut down and restarted by default, when a configuration change occurs at runtime, but declaring a configuration with this attribute will prevent the activity from being restarted. Instead, the activity remains running and its
onConfigurationChanged()
method is called.
- use android:screenOrientatin = "portrait" or "landscape" it will force the app to run in the mode you specify. However it will not prevent the activity from being shut down and restarted.
You can handle screen orientation from within the android.service.wallpaper.WallpaperService.Engine class with the following method:
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height)
... just handle the event accordingly.
You CANNOT add android:configChanges nor android:screenOrientation to a WallpaperService!
(Which you are using when creating a live wallpaper)
I would have added this as a comment to "Anirudha"'s answer, but I don't have enough reputation to do so.