Android Open Source - ColorWallpaper Base Wallpaper Service






From Project

Back to project page ColorWallpaper.

License

The source code is released under:

Licensed under the Expat License. Copyright (C) 2013 Peter Occil Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the...

If you think the Android project ColorWallpaper listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

* Modified by Peter O. from public domain code written
 * in 2012 by Markus Fisch <mf@markusfisch.de>
 * /*from  w  w  w  . j a va2 s.c o m*/
 * In the public domain.
 * 
 */
package com.upokecenter.android.wallpaper;

import android.annotation.TargetApi;
import android.graphics.Canvas;
import android.os.Build;
import android.os.Handler;
import android.os.SystemClock;
import android.service.wallpaper.WallpaperService;
import android.view.SurfaceHolder;


@TargetApi(Build.VERSION_CODES.ECLAIR_MR1)
public abstract class BaseWallpaperService extends WallpaperService
{
  @TargetApi(Build.VERSION_CODES.ECLAIR_MR1)
  protected abstract class Engine extends WallpaperService.Engine
  {
    protected int getDelay(){
      return 40;
    }

    final private Handler handler = new Handler();
    final private Runnable runnable = new Runnable()
    {
      @Override
      public void run()
      {
        nextFrame();
      }
    };

    private boolean visible = false;
    private long time = 0;

    @TargetApi(Build.VERSION_CODES.ECLAIR_MR1)
    @Override
    public void onDestroy()
    {
      super.onDestroy();

      stopRunnable();
    }

    @Override
    public void onVisibilityChanged( boolean v )
    {
      visible = v;

      if( visible )
      {
        time = SystemClock.elapsedRealtime();
        nextFrame();
      } else {
        stopRunnable();
      }
    }

    /**
     * @inheritDoc
     
    @Override
    public void onSurfaceChanged(
        SurfaceHolder holder,
        int format,
        int width,
        int height )
    {
      super.onSurfaceChanged( holder, format, width, height );

      nextFrame();
    }

    @TargetApi(Build.VERSION_CODES.ECLAIR_MR1)
    @Override
    public void onSurfaceDestroyed( SurfaceHolder holder )
    {
      visible = false;
      stopRunnable();

      super.onSurfaceDestroyed( holder );
    }

    @Override
    public void onOffsetsChanged(
        float xOffset,
        float yOffset,
        float xOffsetStep,
        float yOffsetStep,
        int xPixelOffset,
        int yPixelOffset )
    {
      nextFrame();
    }

    protected abstract void drawFrame( final Canvas c, final long e );

    protected abstract void onFrame();

    @TargetApi(Build.VERSION_CODES.ECLAIR_MR1)
    protected void nextFrame()
    {
      stopRunnable();

      if( !visible )
        return;

      onFrame();
      handler.postDelayed( runnable, getDelay() );

      final SurfaceHolder h = getSurfaceHolder();
      Canvas c = null;

      try
      {
        if( (c = h.lockCanvas()) != null )
        {
          final long now = SystemClock.elapsedRealtime();
          drawFrame( c, now-time );
          time = now;
        }
      }
      finally
      {
        if(c!=null && h!=null){
          try {
            h.unlockCanvasAndPost(c);
          } catch(IllegalArgumentException e){

          }
        }
      }
    }

    private void stopRunnable()
    {
      handler.removeCallbacks( runnable );
    }
  }
}




Java Source Code List

com.upokecenter.android.colorwallpaper.ColorWallpaperService.java
com.upokecenter.android.colorwallpaper.LauncherActivity.java
com.upokecenter.android.colorwallpaper.SettingsActivity.java
com.upokecenter.android.location.DummyLocationHelper.java
com.upokecenter.android.location.ILocationHelper.java
com.upokecenter.android.location.ISimpleLocationListener.java
com.upokecenter.android.location.LocationHelper.java
com.upokecenter.android.net.ConnectivityHelper.java
com.upokecenter.android.net.DownloadService.java
com.upokecenter.android.net.IConnectionListener.java
com.upokecenter.android.ui.AlertDialogActivity.java
com.upokecenter.android.ui.AlertDialogPreference.java
com.upokecenter.android.ui.BaseSettingsActivity.java
com.upokecenter.android.ui.ChoosePicturePreference.java
com.upokecenter.android.ui.ColorPickerDialog.java
com.upokecenter.android.ui.ContinuousValuePreference.java
com.upokecenter.android.ui.DialogUtility.java
com.upokecenter.android.ui.GetContentActivity.java
com.upokecenter.android.ui.IChoiceListener.java
com.upokecenter.android.ui.IDialogUpdater.java
com.upokecenter.android.ui.IntentPreference.java
com.upokecenter.android.ui.PreferenceState.java
com.upokecenter.android.ui.ShareActivity.java
com.upokecenter.android.ui.UriPreference.java
com.upokecenter.android.util.AppManager.java
com.upokecenter.android.util.BitmapUtility.java
com.upokecenter.android.util.StorageUtility.java
com.upokecenter.android.wallpaper.BaseWallpaperService.java
com.upokecenter.util.XmlHelper.java