When I click my live wallpaper, it crashes. I can't see what is wrong.
Here is my code.

package com.puinyuu.umasaka;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.content.res.Resources;
import android.os.Handler;
import android.service.wallpaper.WallpaperService;
import android.view.SurfaceHolder;

public class UmasakaWallpaper extends WallpaperService {

    private final Handler mHandler = new Handler();

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @Override
    public Engine onCreateEngine() {
        return new UmasakaEngine();
    }

    class UmasakaEngine extends Engine {

        private Resources res;
        private Bitmap mUmasakaFrame0;
        private Bitmap mUmasakaFrame1;
        private Bitmap mUmasakaFrame2;
        private Bitmap mUmasakaFrame3;
        private Bitmap mUmasakaFrame4;
        private Bitmap mUmasakaFrame5;
        private Bitmap mUmasakaFrame6;
        private Bitmap mUmasakaFrame7;
        private int mFrameNum = 0;

        private final Runnable mGetFrame = new Runnable() {
            public void run() {
                drawFrame();
            }
        };
        private boolean mVisible;

        UmasakaEngine() {
            mUmasakaFrame0 = BitmapFactory.decodeResource(res,
R.drawable.umasaka0);
            mUmasakaFrame1 = BitmapFactory.decodeResource(res,
R.drawable.umasaka1);
            mUmasakaFrame2 = BitmapFactory.decodeResource(res,
R.drawable.umasaka2);
            mUmasakaFrame3 = BitmapFactory.decodeResource(res,
R.drawable.umasaka3);
            mUmasakaFrame4 = BitmapFactory.decodeResource(res,
R.drawable.umasaka4);
            mUmasakaFrame5 = BitmapFactory.decodeResource(res,
R.drawable.umasaka5);
            mUmasakaFrame6 = BitmapFactory.decodeResource(res,
R.drawable.umasaka6);
            mUmasakaFrame7 = BitmapFactory.decodeResource(res,
R.drawable.umasaka7);
            mUmasakaFrame0 = Bitmap.createBitmap(mUmasakaFrame0);
            mUmasakaFrame1 = Bitmap.createBitmap(mUmasakaFrame1);
            mUmasakaFrame2 = Bitmap.createBitmap(mUmasakaFrame2);
            mUmasakaFrame3 = Bitmap.createBitmap(mUmasakaFrame3);
            mUmasakaFrame4 = Bitmap.createBitmap(mUmasakaFrame4);
            mUmasakaFrame5 = Bitmap.createBitmap(mUmasakaFrame5);
            mUmasakaFrame6 = Bitmap.createBitmap(mUmasakaFrame6);
            mUmasakaFrame7 = Bitmap.createBitmap(mUmasakaFrame7);
        }

        @Override
        public void onCreate(SurfaceHolder surfaceHolder) {
            super.onCreate(surfaceHolder);
        }

        @Override
        public void onDestroy() {
            super.onDestroy();
            mHandler.removeCallbacks(mGetFrame);
        }

        @Override
        public void onVisibilityChanged(boolean visible) {
            mVisible = visible;
            if (visible) {
                drawFrame();
            } else {
            mHandler.removeCallbacks(mGetFrame);
            }
        }

        @Override
        public void onSurfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
            super.onSurfaceChanged(holder, format, width, height);
            drawFrame();
        }

        @Override
        public void onSurfaceCreated(SurfaceHolder holder) {
            super.onSurfaceCreated(holder);
        }

        @Override
        public void onSurfaceDestroyed(SurfaceHolder holder) {
            super.onSurfaceDestroyed(holder);
            mVisible = false;
            mHandler.removeCallbacks(mGetFrame);
        }

        void drawFrame() {
            final SurfaceHolder holder = getSurfaceHolder();

            Canvas c = null;
            try {
                c = holder.lockCanvas();
                if (c != null) {
                    getFrame(c);
                }
            } finally {
                if (c != null) holder.unlockCanvasAndPost(c);
            }

            // Reschedule the next redraw
            mHandler.removeCallbacks(mGetFrame);
            if (mVisible && mFrameNum == 0) {
                mHandler.postDelayed(mGetFrame, 90);
            }
            if (mVisible && mFrameNum == 1) {
                mHandler.postDelayed(mGetFrame, 60);
            }
            if (mVisible && mFrameNum == 2) {
                mHandler.postDelayed(mGetFrame, 140);
            }
            if (mVisible && mFrameNum == 3) {
                mHandler.postDelayed(mGetFrame, 60);
            }
            if (mVisible && mFrameNum == 4) {
                mHandler.postDelayed(mGetFrame, 90);
            }
            if (mVisible && mFrameNum == 5) {
                mHandler.postDelayed(mGetFrame, 60);
            }
            if (mVisible && mFrameNum == 6) {
                mHandler.postDelayed(mGetFrame, 130);
            }
            if (mVisible && mFrameNum == 7) {
                mHandler.postDelayed(mGetFrame, 60);
            }
        }

        void getFrame(Canvas c) {
                c.save();
                if (mFrameNum == 0) {
                    c.drawBitmap(mUmasakaFrame0, 100, 100, null);
                }
                if (mFrameNum == 1) {
                    c.drawBitmap(mUmasakaFrame1, 100, 100, null);
                }
                if (mFrameNum == 2) {
                    c.drawBitmap(mUmasakaFrame2, 100, 100, null);
                }
                if (mFrameNum == 3) {
                    c.drawBitmap(mUmasakaFrame3, 100, 100, null);
                }
                if (mFrameNum == 4) {
                    c.drawBitmap(mUmasakaFrame4, 100, 100, null);
                }
                if (mFrameNum == 5) {
                    c.drawBitmap(mUmasakaFrame5, 100, 100, null);
                }
                if (mFrameNum == 6) {
                    c.drawBitmap(mUmasakaFrame6, 100, 100, null);
                }
                if (mFrameNum == 7) {
                    c.drawBitmap(mUmasakaFrame7, 100, 100, null);
                }
             mFrameNum = mFrameNum + 1;
             c.restore();
        }
    }
}

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

To unsubscribe from this group, send email to 
android-developers+unsubscribegooglegroups.com or reply to this email with the 
words "REMOVE ME" as the subject.

Reply via email to