android - onCreateEngine in Wallpaper Service not getting called -
i'm trying create simple android application create live wallpaper. have created activity , i'm starting wallpaper service oncreate method of activity.for now, i'm using logcat monitor if service has started. i'm facing problem oncreateengine of wallpaperservice not getting called due no instance of engine created. have checked existing posts no 1 seemed having same problem.
main activity
package com.example.rajeev.mylivewallpaperapplication; import android.app.activity; import android.app.wallpapermanager; import android.content.componentname; import android.content.intent; import android.os.build; import android.os.bundle; import android.service.wallpaper.wallpaperservice; import android.util.log; import android.view.menu; import android.view.menuitem; public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); log.d("tag","starting service"); intent = new intent(this, mywallpaperservice.class); if (build.version.sdk_int > 15) { i.setaction(wallpapermanager.action_change_live_wallpaper); string pkg = wallpaperservice.class.getpackage().getname(); string cls = wallpaperservice.class.getcanonicalname(); i.putextra(wallpapermanager.extra_live_wallpaper_component, new componentname(pkg, cls)); } else { i.setaction(wallpapermanager.action_live_wallpaper_chooser); } //startactivity(i); startservice(i); //startactivityforresult(i, 0); //startservice(); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } @override public void ondestroy(){ super.ondestroy(); stopservice(new intent(this, mywallpaperservice.class)); } }
mywallpaperservice class
package com.example.rajeev.mylivewallpaperapplication; import android.graphics.canvas; import android.os.handler; import android.service.wallpaper.wallpaperservice; import android.util.log; import android.view.surfaceholder; /** * created rajeev on 30/5/15. */ public class mywallpaperservice extends wallpaperservice{ private string tag = "my wallpaper application"; @override public void oncreate(){ super.oncreate(); log.d(tag,"inside oncreate"); } @override public engine oncreateengine() { log.d(tag,"creating engine"); return new myengine(); } @override public void ondestroy(){ super.ondestroy(); log.d(tag,"inside ondestroy"); } class myengine extends engine{ private handler handler; private surfaceholder holder; public myengine(){ log.d(tag,"inside constructor of engine"); handler = new handler(); handler.post(drawfigure); } @override public void oncreate(surfaceholder surfaceholder) { log.d(tag,"created engine"); super.oncreate(surfaceholder); this.holder = surfaceholder; } private runnable drawfigure = new runnable() { public void run() { draw(); } }; private void draw() { canvas canvas = holder.lockcanvas(); canvas.save(); // adjust size , position // image looks on screen canvas.scale(3f, 3f); canvas.drawrgb(0,0,0); canvas.restore(); holder.unlockcanvasandpost(canvas); handler.removecallbacks(drawfigure); handler.postdelayed(drawfigure, 100); } @override public void ondestroy() { super.ondestroy(); handler.removecallbacks(drawfigure); } @override public void onvisibilitychanged(boolean visible) { handler.removecallbacks(drawfigure); handler.postdelayed(drawfigure, 100); } } }
manifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.rajeev.mylivewallpaperapplication" > <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <uses-feature android:name="android.software.live_wallpaper" android:required="true" > </uses-feature> <activity android:name=".mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <service android:name=".mywallpaperservice" android:enabled="true" android:permission="android.permission.bind_wallpaper" > <intent-filter> <action android:name="android.service.wallpaper.wallpaperservice" /> </intent-filter> </service> </application> </manifest>
Comments
Post a Comment