This is my Service.

It's a simple service which use Handler to invoke "setWallpaper()"
every 2 seconds.
[code]
package com.mseer.testservice;

import java.io.IOException;
import java.io.InputStream;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.util.Log;

public class MyService extends Service{

  public IBinder onBind(Intent intent) {
    return null;
  }


  protected static Service sv;
  protected static InputStream bg01, bg02, bg03, bg04, bg05, bg06;

  protected static int index=0;

  protected static final int SECONDPASSED = 0x1234;

  protected boolean running = false;

  Thread counterThread = null;

  static Handler myWallpaperHandler = new Handler(){
       public void handleMessage(Message msg) {
            switch (msg.what) {
                 case MyService.SECONDPASSED:

                     updateWallpaper();

                      break;
            }
            super.handleMessage(msg);
       }
  };





  protected static void updateWallpaper(){

      try {
            if(index==0){
                sv.setWallpaper(bg01);
            }else if(index==1){
                sv.setWallpaper(bg02);
            }else if(index==2){
                sv.setWallpaper(bg03);
            }else if(index==3){
                sv.setWallpaper(bg04);
            }else if(index==4){
                sv.setWallpaper(bg05);
            }else if(index==5){
                sv.setWallpaper(bg06);
            }

            index++;
            if(index>5){
                index = 0;
            }


        } catch (IOException e) {

            e.printStackTrace();
        }




  }



  public void onCreate(){
      sv = this;
      super.onCreate();
      running = true;
      bg01 = sv.getResources().openRawResource(R.drawable.night01w);
      bg02 = sv.getResources().openRawResource(R.drawable.night02w);
      bg03 = sv.getResources().openRawResource(R.drawable.night03w);
      bg04 = sv.getResources().openRawResource(R.drawable.night04w);
      bg05 = sv.getResources().openRawResource(R.drawable.night05w);
      bg06 = sv.getResources().openRawResource(R.drawable.night06w);

      this.counterThread = new Thread(new secondCountDownRunner());
      this.counterThread.start();

  }

  public void onDestroy() {
    super.onDestroy();
    running = false;
    counterThread.interrupt();
  }


}



class secondCountDownRunner implements Runnable{
    public void run() {
         while(!Thread.currentThread().isInterrupted()){
              Message m = new Message();
              m.what = MyService.SECONDPASSED;
              MyService.myWallpaperHandler.sendMessage(m);
              try {
                   Thread.sleep(2000);
              } catch (InterruptedException e) {
                   Thread.currentThread().interrupt();
              }
         }
    }
}[/code]My problem:

The wallpaper changes for 4-5 frames, then stopped...


Solutions I've tried:

1. I tried Logging like this:


[code]if(index==0){
                Log.e("BM WALLPAPER","Wallpaper set to WP1 | " +
bg01);
                sv.setWallpaper(bg01);
            }else if(index==1){
                Log.e("BM WALLPAPER","Wallpaper set to WP2 | "  +
bg02);
                sv.setWallpaper(bg02);
// and so on...
[/code]And I can still see the Log message every 2 seconds (but the
wallpaper dont change anymore)



2. I tried creating the InputStream every cycle. It works. But it
greatly slow down the phone to an unacceptable level.

[code]if(index==0){
                              bg01 = sv.getResources().openRawResource
(R.drawable.night01w);
                sv.setWallpaper(bg01);
            }else if(index==1){
                                bg02 = sv.getResources
().openRawResource(R.drawable.night02w);
                sv.setWallpaper(bg02);
// and so on...[/code]3. I've tried all of the above solutions but use
setWallpaper(Bitmap); instead. The result is even slower...



My requests to experts in this forum:
1. I wonder why my wallpaper animated for only 4-5 frames, then
stopped. (using the first code snippet posted above)

2. If anyone happen to know how to efficiently create an animated
wallpaper, please let me know.


Thank you in advance. =)

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

Reply via email to