Android Live Wallpaper using Processing in Android Studio
We've recently wanted to create an Android Live Wallpaper using Processing, which is an ideal language for writing these as it makes it easy to create exciting animations using a Java-like language
As it turns out, creating a live wallpaper from some existing Processing code is surprisingly simple
You can, of course, do this using the Processing environment as shown in the tutorial over on processing.org. This covers the basics but we wanted to incorporate this into our Android Studio app which took a few extra steps
import processing.core.PApplet;
public class YourSketch extends PApplet {
// your processing code
}
import processing.core.PWallpaper;
public class YourWallpaper extends PWallpaper {
@override
public PApplet createSketch() {
return new YourSketch();
}
}
This tells the wallpaper service to run your sketch when the wallpaper is accessed
<service
android:label="@string/short_app_name"
android:name="<package.class of your wallpaper>"
android:permission="android.permission.BIND_WALLPAPER">
<intent-filter>
<action android:name=
"android.service.wallpaper.WallpaperService" />
</intent-filter>
<meta-data android:name="android.service.wallpaper"
android:resource="@xml/wallpaper" />
</service>
This tells Android that you want to create a wallpaper service and that you'll define it inside another xml file which we'll create in step 4
You need to bind the wallpaper permission using BIND_WALLPAPER. You also need tell Android what to display when the user views the list of wallpapers which we have done using a string resource called short_app_name but you can also just type the name in here
To do this
1. create a folder (if it doesn't exist) in your Android res folder called xml
2. create a file called wallpaper.xml
3. add the below to the file
<?xml version="1.0" encoding="utf-8"?>
<wallpaper
xmlns:android="http://schemas.android.com/apk/res/android"
android:thumbnail="@drawable/icon"
android:description="@string/short_app_name"
/>
This tells Android the name of the wallpaper and the icon to display in the wallpaper list. This is also where you would add any wallpaper settings if you want them
And you're done!
As it turns out, creating a live wallpaper from some existing Processing code is surprisingly simple
You can, of course, do this using the Processing environment as shown in the tutorial over on processing.org. This covers the basics but we wanted to incorporate this into our Android Studio app which took a few extra steps
Step 1 - Create a Processing sketch in your Android app
If you don't already have a Processing sketch, now's the time to write one! If you've written this using the Processing environment, you'll need to create a new class that extends processing.core.PApplet and import the processing-android library, similarly to the processing.org tutorial on creating a processing app in Android Studioimport processing.core.PApplet;
public class YourSketch extends PApplet {
// your processing code
}
Step 2 - Create a Wallpaper Class
Next you need to create an Android wallpaper class that extends PWallpaper, a Processing wallpaper class. Tell your class to create a new instance of the sketch you create in Step 1import processing.core.PWallpaper;
public class YourWallpaper extends PWallpaper {
@override
public PApplet createSketch() {
return new YourSketch();
}
}
This tells the wallpaper service to run your sketch when the wallpaper is accessed
Step 3 - Add your Wallpaper to the Manifest
Inside your AndroidManifest.xml, which you should have created as part if step 1, you need to add the wallpaper as a service<service
android:label="@string/short_app_name"
android:name="<package.class of your wallpaper>"
android:permission="android.permission.BIND_WALLPAPER">
<intent-filter>
<action android:name=
"android.service.wallpaper.WallpaperService" />
</intent-filter>
<meta-data android:name="android.service.wallpaper"
android:resource="@xml/wallpaper" />
</service>
This tells Android that you want to create a wallpaper service and that you'll define it inside another xml file which we'll create in step 4
You need to bind the wallpaper permission using BIND_WALLPAPER. You also need tell Android what to display when the user views the list of wallpapers which we have done using a string resource called short_app_name but you can also just type the name in here
Step 4 - Define the Wallpaper
In step 3 we told the manifest that we'd define the wallpaper in another file under @xml/wallpaperTo do this
1. create a folder (if it doesn't exist) in your Android res folder called xml
2. create a file called wallpaper.xml
3. add the below to the file
<?xml version="1.0" encoding="utf-8"?>
<wallpaper
xmlns:android="http://schemas.android.com/apk/res/android"
android:thumbnail="@drawable/icon"
android:description="@string/short_app_name"
/>
This tells Android the name of the wallpaper and the icon to display in the wallpaper list. This is also where you would add any wallpaper settings if you want them
And you're done!
Comments
Post a Comment