NiceFotoAppWidgetProvider.java :  » App » appcamp-nicefoto » org » me » nicefotoappcamp » Android Open Source

Android Open Source » App » appcamp nicefoto 
appcamp nicefoto » org » me » nicefotoappcamp » NiceFotoAppWidgetProvider.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.me.nicefotoappcamp;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.widget.RemoteViews;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.me.nicefotoappcamp.MainActivity;
import org.me.nicefotoappcamp.R;
import org.me.nicefotoappcamp.core.Picture;
import org.me.nicefotoappcamp.provider.Provider;
import org.me.nicefotoappcamp.provider.fotokudra.FotoKudraProvider;

/**
 *
 * @author Tautvydas
 */
public class NiceFotoAppWidgetProvider extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        final int N = appWidgetIds.length;
        for (int i = 0; i < N; i++) {
            int appWidgetId = appWidgetIds[i];

            Intent intent = new Intent(context, MainActivity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

            Provider kudra = new FotoKudraProvider();
            ArrayList<Picture> pictures = kudra.getPictures();
            int num = (int)Math.random()*(pictures.size()-1);
            Picture pic = pictures.get(i);


            //ImageView g = (ImageView) findViewById(R.id.frame);
            // Get the layout for the App Widget and attach an on-click listener to the button
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.nicefoto_appwidget);
            System.out.println("labas");
            views.setOnClickPendingIntent(R.id.frame, createOnClickIntent(context, appWidgetId));            //views.setImageViewBitmap(R.id.frame, pic.getBitmap());
            System.out.println("gogo");
            try {
                //views.setImageViewBitmap(R.id.frame, frameBitmap(context, "geras", pic.getBitmap(), "vel", "data"));
                views.setImageViewBitmap(R.id.frame, pic.getBitmap());
                //views.set
            } catch (Exception ex) {
                Logger.getLogger(NiceFotoAppWidgetProvider.class.getName()).log(Level.SEVERE, null, ex);
            }

            // Tell the AppWidgetManager to perform an update on the current App Widget
            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }

    private PendingIntent createOnClickIntent(Context context, int appWidgetId) {
      Intent intent = new Intent(context, MainActivity.class);
      intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    }

    private Bitmap frameBitmap(Context context, String frame, Bitmap bitmap, String summaryOrTitle, String published) throws Exception {
      final int SPACE = 5;
      final int TEXT_SIZE_SUMMARY_OR_TITLE = 18;
      final int TEXT_SIZE_PUBLISHED = 15;
      final float FRAME_WIDTH = 294;
      final float FRAME_HEIGHT = 220;
    Bitmap leftAbove = BitmapFactory.decodeResource(context.getResources(), R.drawable.class.getField(String.format("frame_%s_left_above", frame)).getInt(null));
    Bitmap rightAbove = BitmapFactory.decodeResource(context.getResources(), R.drawable.class.getField(String.format("frame_%s_right_above", frame)).getInt(null));
    Bitmap leftBottom = BitmapFactory.decodeResource(context.getResources(), R.drawable.class.getField(String.format("frame_%s_left_bottom", frame)).getInt(null));
    Bitmap rightBottom = BitmapFactory.decodeResource(context.getResources(), R.drawable.class.getField(String.format("frame_%s_right_bottom", frame)).getInt(null));
    Bitmap above = BitmapFactory.decodeResource(context.getResources(), R.drawable.class.getField(String.format("frame_%s_above", frame)).getInt(null));
    Bitmap bottom = BitmapFactory.decodeResource(context.getResources(), R.drawable.class.getField(String.format("frame_%s_bottom", frame)).getInt(null));
    Bitmap left = BitmapFactory.decodeResource(context.getResources(), R.drawable.class.getField(String.format("frame_%s_left", frame)).getInt(null));
    Bitmap right = BitmapFactory.decodeResource(context.getResources(), R.drawable.class.getField(String.format("frame_%s_right", frame)).getInt(null));
      Bitmap ixonosLogo = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_image);
      Bitmap output = Bitmap.createBitmap(bitmap.getWidth() + leftAbove.getWidth() + rightAbove.getWidth(),
                        bitmap.getHeight() + leftAbove.getHeight() + leftBottom.getHeight(),
                        Config.ARGB_8888);
      // draw photo frame
      Canvas canvas = new Canvas(output);
      canvas.drawBitmap(bitmap, leftAbove.getWidth(), leftAbove.getHeight(), null);
      canvas.drawBitmap(leftAbove, 0, 0, null);
      canvas.drawBitmap(rightAbove, left.getWidth() + bitmap.getWidth(), 0, null);
      canvas.drawBitmap(leftBottom, 0, above.getHeight() + bitmap.getHeight(), null);
      canvas.drawBitmap(rightBottom, left.getWidth() + bitmap.getWidth(), above.getHeight() + bitmap.getHeight(), null);
      canvas.drawBitmap(above, new Rect(0, 0, bitmap.getWidth(), above.getHeight()),
                new Rect(left.getWidth(), 0, bitmap.getWidth() + left.getWidth(), above.getHeight()), null);
      canvas.drawBitmap(bottom, new Rect(0, 0, bitmap.getWidth(), bottom.getHeight()),
              new Rect(left.getWidth(), above.getHeight() + bitmap.getHeight(),
                     left.getWidth() + bitmap.getWidth(), output.getHeight()), null);
      canvas.drawBitmap(left, new Rect(0, 0, left.getWidth(), bitmap.getHeight()),
                new Rect(0, above.getHeight(), left.getWidth(), above.getHeight() + bitmap.getHeight()), null);
      canvas.drawBitmap(right, new Rect(0, 0, right.getWidth(), bitmap.getHeight()),
                new Rect(left.getWidth() + bitmap.getWidth(), above.getHeight(), output.getWidth(),
                    above.getHeight() + bitmap.getHeight()), null);
      // draw summary or title
      Paint paintSummaryOrTitle = new Paint();
      paintSummaryOrTitle.setColor(context.getResources().getColor(R.color.ixonos_color));
      paintSummaryOrTitle.setTypeface(Typeface.DEFAULT_BOLD);
      paintSummaryOrTitle.setTextSize(TEXT_SIZE_SUMMARY_OR_TITLE);
      canvas.drawText(summaryOrTitle, left.getWidth() + SPACE, above.getHeight() + TEXT_SIZE_SUMMARY_OR_TITLE, paintSummaryOrTitle);
      // draw published
      Paint paintPublished = new Paint();
      paintPublished.setColor(context.getResources().getColor(R.color.ixonos_color));
      paintPublished.setTypeface(Typeface.DEFAULT_BOLD);
      paintPublished.setTextSize(TEXT_SIZE_PUBLISHED);
      canvas.drawText(published, left.getWidth() + SPACE, above.getHeight() + TEXT_SIZE_SUMMARY_OR_TITLE + TEXT_SIZE_PUBLISHED, paintPublished);
      // draw Ixonos logo
      canvas.drawBitmap(ixonosLogo, left.getWidth() + SPACE, above.getHeight() + bitmap.getHeight() - ixonosLogo.getHeight() - SPACE, null);
      // scale image
      if (output.getWidth() > FRAME_WIDTH && output.getHeight() > FRAME_HEIGHT) {
        if (output.getWidth() >= output.getHeight()) {
          float ratio = (float)output.getWidth() / FRAME_WIDTH;
          output = Bitmap.createScaledBitmap(output, (int)FRAME_WIDTH, (int)((float)output.getHeight() / ratio), true);
        } else {
          float ratio = (float)output.getHeight() / FRAME_HEIGHT;
          output = Bitmap.createScaledBitmap(output, (int)((float)output.getWidth() / ratio), (int)FRAME_HEIGHT, true);
        }
      }
      return output;
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.