• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package js.kbars;
2 
3 import android.app.Activity;
4 import android.content.Intent;
5 import android.graphics.Bitmap;
6 import android.graphics.Bitmap.CompressFormat;
7 import android.graphics.BitmapFactory;
8 import android.graphics.drawable.BitmapDrawable;
9 import android.view.Menu;
10 import android.view.MenuItem;
11 import android.view.MenuItem.OnMenuItemClickListener;
12 import android.view.View;
13 import java.io.File;
14 import java.io.FileNotFoundException;
15 import java.io.FileOutputStream;
16 import java.io.IOException;
17 
18 public final class CameraBackgroundMenuItem implements OnMenuItemClickListener {
19     public static final int REQUEST_CODE = 123;
20     private final Activity mActivity;
21     private final View mTarget;
22 
CameraBackgroundMenuItem(Menu menu, Activity activity, View target)23     public CameraBackgroundMenuItem(Menu menu, Activity activity, View target) {
24         this.mActivity = activity;
25         this.mTarget = target;
26         menu.add("Camera image background...").setOnMenuItemClickListener(this);
27         loadBitmap();
28     }
29 
onMenuItemClick(MenuItem item)30     public boolean onMenuItemClick(MenuItem item) {
31         chooseBackground();
32         return true;
33     }
34 
onActivityResult(int resultCode, Intent data)35     public void onActivityResult(int resultCode, Intent data) {
36         if (resultCode == -1) {
37             Bitmap bitmap = (Bitmap) data.getParcelableExtra("data");
38             if (bitmap != null) {
39                 setTargetBackground(bitmap);
40                 saveBitmap(bitmap);
41             }
42         }
43     }
44 
chooseBackground()45     private void chooseBackground() {
46         this.mActivity.startActivityForResult(new Intent("android.media.action.IMAGE_CAPTURE"), REQUEST_CODE);
47     }
48 
bitmapFile()49     private File bitmapFile() {
50         return new File(this.mActivity.getCacheDir(), "background.png");
51     }
52 
saveBitmap(Bitmap bitmap)53     private void saveBitmap(Bitmap bitmap) {
54         FileNotFoundException e;
55         Throwable th;
56         File f = bitmapFile();
57         if (f.exists()) {
58             f.delete();
59         }
60         if (bitmap != null) {
61             FileOutputStream out = null;
62             try {
63                 FileOutputStream out2 = new FileOutputStream(f);
64                 bitmap.compress(CompressFormat.PNG, 100, out2);
65                 out2.close();
66             } catch (FileNotFoundException e1) {
67                 e1.printStackTrace();
68             } catch (IOException e1) {
69                 e1.printStackTrace();
70             }
71         }
72     }
73 
loadBitmap()74     private void loadBitmap() {
75         Bitmap bitmap = loadBitmapFromCache();
76         if (bitmap == null) {
77             bitmap = loadBitmapFromAssets();
78         }
79         setTargetBackground(bitmap);
80     }
81 
loadBitmapFromCache()82     private Bitmap loadBitmapFromCache() {
83         File f = bitmapFile();
84         return f.exists() ? BitmapFactory.decodeFile(f.getAbsolutePath()) : null;
85     }
86 
loadBitmapFromAssets()87     private Bitmap loadBitmapFromAssets() {
88         try {
89             return BitmapFactory.decodeStream(this.mActivity.getAssets().open("background.png"));
90         } catch (IOException e) {
91             throw new RuntimeException(e);
92         }
93     }
94 
setTargetBackground(Bitmap bitmap)95     private void setTargetBackground(Bitmap bitmap) {
96         if (bitmap == null) {
97             this.mTarget.setBackground(null);
98         } else {
99             this.mTarget.setBackground(new BitmapDrawable(this.mActivity.getResources(), bitmap));
100         }
101     }
102 }
103