# HG changeset patch # User Tomas Zeman # Date 1389354646 -3600 # Node ID a41c0d4e533c65706f177c1a6f40e9a53ecf34c2 # Parent 386a323f701625e26df1dae25a4990f0a31fd125 CaptureSignature: refactored signature into SignatureWidget (static inner class) diff -r 386a323f7016 -r a41c0d4e533c src/tz/signaturecapture/CaptureSignature.java --- a/src/tz/signaturecapture/CaptureSignature.java Fri Jan 10 12:24:20 2014 +0100 +++ b/src/tz/signaturecapture/CaptureSignature.java Fri Jan 10 12:50:46 2014 +0100 @@ -2,8 +2,10 @@ import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; import java.util.Calendar; - + import android.app.Activity; import android.content.Context; import android.content.ContextWrapper; @@ -16,13 +18,13 @@ import android.graphics.RectF; import android.os.Bundle; import android.os.Environment; -import android.provider.MediaStore.Images; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; +import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.widget.Button; @@ -33,12 +35,11 @@ public class CaptureSignature extends Activity { LinearLayout mContent; - signature mSignature; + SignatureWidget mSignature; Button mClear, mGetSign, mCancel; public static String tempDir; public int count = 1; public String current = null; - private Bitmap mBitmap; View mView; File mypath; @@ -63,8 +64,15 @@ mContent = (LinearLayout) findViewById(R.id.linearLayout); - mSignature = new signature(this, null); + mSignature = new SignatureWidget(this, null); mSignature.setBackgroundColor(Color.WHITE); + mSignature.setOnTouchListener(new OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + mGetSign.setEnabled(true); + return false; + } + }); mContent.addView(mSignature, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); mClear = (Button)findViewById(R.id.clear); mGetSign = (Button)findViewById(R.id.getsign); @@ -92,13 +100,20 @@ boolean error = captureSignature(); if(!error){ mView.setDrawingCacheEnabled(true); - mSignature.save(mView); - Bundle b = new Bundle(); - b.putString("status", "done"); - Intent intent = new Intent(); - intent.putExtras(b); - setResult(RESULT_OK,intent); - finish(); + try { + FileOutputStream os = new FileOutputStream(mypath); + mSignature.save(mView, os); + os.flush(); + os.close(); + setResult(RESULT_OK, new Intent().putExtra("status", + "done")); + finish(); + } catch (IOException e) { + Toast.makeText(CaptureSignature.this, String.format( + "Failed to save signature: %", e.getMessage()), + Toast.LENGTH_LONG).show(); + } + } } }); @@ -206,7 +221,7 @@ return (tempdir.isDirectory()); } - public class signature extends View + public static class SignatureWidget extends View { private static final float STROKE_WIDTH = 5f; private static final float HALF_STROKE_WIDTH = STROKE_WIDTH / 2; @@ -217,7 +232,7 @@ private float lastTouchY; private final RectF dirtyRect = new RectF(); - public signature(Context context, AttributeSet attrs) + public SignatureWidget(Context context, AttributeSet attrs) { super(context, attrs); paint.setAntiAlias(true); @@ -227,35 +242,14 @@ paint.setStrokeWidth(STROKE_WIDTH); } - public void save(View v) + public void save(View parent, OutputStream os) { - Log.v("log_tag", "Width: " + v.getWidth()); - Log.v("log_tag", "Height: " + v.getHeight()); - if(mBitmap == null) - { - mBitmap = Bitmap.createBitmap (mContent.getWidth(), mContent.getHeight(), Bitmap.Config.RGB_565);; - } - Canvas canvas = new Canvas(mBitmap); - try - { - FileOutputStream mFileOutStream = new FileOutputStream(mypath); - - v.draw(canvas); - mBitmap.compress(Bitmap.CompressFormat.PNG, 90, mFileOutStream); - mFileOutStream.flush(); - mFileOutStream.close(); - String url = Images.Media.insertImage(getContentResolver(), mBitmap, "title", null); - Log.v("log_tag","url: " + url); - //In case you want to delete the file - //boolean deleted = mypath.delete(); - //Log.v("log_tag","deleted: " + mypath.toString() + deleted); - //If you want to convert the image to string use base64 converter - - } - catch(Exception e) - { - Log.v("log_tag", e.toString()); - } + Log.v("log_tag", "Width: " + parent.getWidth()); + Log.v("log_tag", "Height: " + parent.getHeight()); + Bitmap bm = Bitmap.createBitmap(parent.getWidth(), parent.getHeight(), Bitmap.Config.RGB_565);; + Canvas canvas = new Canvas(bm); + parent.draw(canvas); + bm.compress(Bitmap.CompressFormat.PNG, 90, os); } public void clear() @@ -275,7 +269,6 @@ { float eventX = event.getX(); float eventY = event.getY(); - mGetSign.setEnabled(true); switch (event.getAction()) {