It would help to include the stack crawl of the crash.

On Sun, Mar 28, 2010 at 1:19 PM, Ryan <ryan.ber...@gmail.com> wrote:

> 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<android-developers%2bunsubscr...@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.
>



-- 
Dianne Hackborn
Android framework engineer
hack...@android.com

Note: please don't send private questions to me, as I don't have time to
provide private support, and so won't reply to such e-mails.  All such
questions should be posted on public forums, where I and others can see and
answer them.

-- 
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