--- 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())
{