Az alkalmazás manifest állományában az élő háttérkép alkalmazáshoz meg kell adni az élő háttérkép jogosultságot android:permission="android.permission.BIND_WALLPAPER", illetve a market felé az élő háttérkép alkalmazást jelezni kell
node -ban. A service node-ban az android:name=".OwnWallpaper" rész tartalmazza annak az osztálynak a nevét, ami megvalósítja az élő háttérkép osztályt. Az élő háttérkép alkalmazáshoz létre kell hozni egy XML állományt is, aminek az alábbi módon kell kinéznie (erre a manifest állományban is hivatkozni kell android:resource="@xml/own"):
Az own.xml állományt a /res/xml/own.xml útvonalon kell létrehozni
Az OwnWallpaper osztály pedig az alábbiak szerint kell megcsinálni:
package hu.globomax.wallpaperdemo; import java.util.Date; import android.graphics.Canvas; import android.graphics.Paint; import android.service.wallpaper.WallpaperService; import android.view.MotionEvent; import android.view.SurfaceHolder; public class OwnWallpaper extends WallpaperService { @Override public Engine onCreateEngine() { return new CubeEngine(); } class CubeEngine extends Engine { private final Paint mPaint = new Paint(); private float mTouchX = 0; private float mTouchY = 0; CubeEngine() { final Paint paint = mPaint; paint.setColor(0xffffffff); paint.setTextSize(25); } @Override public void onCreate(SurfaceHolder surfaceHolder) { super.onCreate(surfaceHolder); // Érintés eseményre kezelés jelzése setTouchEventsEnabled(true); } @Override public void onTouchEvent(MotionEvent event) { super.onTouchEvent(event); if (event.getAction() == MotionEvent.ACTION_UP) { mTouchX = -1; mTouchY = -1; } else { mTouchX = event.getX(); mTouchY = event.getY(); } drawFrame(); } @SuppressWarnings("deprecation") void drawFrame() { final SurfaceHolder holder = getSurfaceHolder(); Canvas c = null; try { c = holder.lockCanvas(); if (c != null) { c.save(); c.drawColor(0xff000000); c.drawText(new Date(System.currentTimeMillis()) .toLocaleString(), mTouchX, mTouchY, mPaint); c.restore(); } } finally { if (c != null) holder.unlockCanvasAndPost(c); } } } }
Az így elkészült alkalmazás pedig az alábbiak szerint viselkedik:
Fontos eseménykezelő metódusok:
onCreateEngine()
- WallpaperService.Engine létrehozása
A létrehozott Engine fontosabb eseménykezelő metódusai:
onVisibilityChanged():
- ha háttérbe kerül az alkalmazás
onOffsetChanged()
- a home screen-ek közötti váltáskor üt be
onTouchEvent():
- érintéskor bekövetkező eseménykezelő
onCommand():
- más alkalmazás által küldött üzenetek érkezésekor üt be