Skip to content

Commit

Permalink
resolves #9 -- user selected background working
Browse files Browse the repository at this point in the history
  • Loading branch information
maroslaw committed Apr 23, 2014
1 parent 44d43c6 commit ff796cb
Showing 1 changed file with 53 additions and 5 deletions.
58 changes: 53 additions & 5 deletions src/pl/miniti/android/blooba/BloobaForeground.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

import pl.miniti.android.blooba.base.BloobaPreferencesWrapper;
import pl.miniti.android.blooba.base.Preferences;
Expand All @@ -20,13 +21,15 @@
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Path;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
Expand Down Expand Up @@ -140,9 +143,6 @@ public void onItemClick(AdapterView<?> parent, View view, int position,

if (mini.getType() == Miniature.Type.GALLERY) {

// Intent cropIntent = new Intent("com.android.camera.action.CROP");
// TODO check available

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
Expand Down Expand Up @@ -191,6 +191,53 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
cropIntent.putExtra("outputY", 400);
cropIntent.putExtra("return-data", true);

List<ResolveInfo> list = getPackageManager().queryIntentActivities(
cropIntent, 0);
if (list.size() == 0) {

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(fileName, options);

final int h = options.outHeight;
final int w = options.outWidth;
int inSampleSize = 1;

if (h > 400 || w > 400) {
final int halfHeight = h / 2;
final int halfWidth = w / 2;
while ((halfHeight / inSampleSize) > 400
&& (halfWidth / inSampleSize) > 400) {
inSampleSize *= 2;
}
}

options = new BitmapFactory.Options();
options.inSampleSize = inSampleSize;
Bitmap picBitmap = BitmapFactory.decodeFile(fileName, options);

Bitmap finalBitmap = cropToCircle(picBitmap);

FileOutputStream stream = null;

try {
stream = openFileOutput(FOREGROUND_JPG,
Context.MODE_PRIVATE);
finalBitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);

picBitmap.recycle();

storeForegroundPreference(
String.valueOf(System.currentTimeMillis()),
Miniature.Type.GALLERY.ordinal());
} catch (IOException e) {
Toast.makeText(this, R.string.error_crop, Toast.LENGTH_LONG)
.show();
}

return;
}

startActivityForResult(cropIntent, CROP_IMAGE);

return;
Expand Down Expand Up @@ -297,11 +344,12 @@ private static Bitmap cropToCircle(Bitmap bitmap) {

final Path path = new Path();
path.addCircle((float) (width / 2), (float) (height / 2),
(float) Math.min(width, (height / 2)), Path.Direction.CCW);
(float) Math.min(width / 2, height / 2), Path.Direction.CCW);

final Canvas canvas = new Canvas(outputBitmap);
canvas.clipPath(path);
canvas.drawBitmap(bitmap, 0, 0, null);
canvas.drawBitmap(bitmap, new Rect(0, 0, width, height), new Rect(0, 0,
width, height), null);

return outputBitmap;
}
Expand Down

0 comments on commit ff796cb

Please sign in to comment.