title: How to Draw something with your finger in an Android App.... And save it to the web
body: <p>**<a href="http://wiki.nofolder.com/how-to-draw-something-with-your-finger-in-an-android-app-and-save-it-to-the-web" rel="noreferrer">THIS QUESTION WAS SUCCESSFULLY ANSWERED AND HAS BECOME A BLOG POST &lt;- click</a> **</p>
  
  <p>Hi I am a PHP developer I want to do a simple thing - I want to draw something drawn on a blank page on an Android Phone (with a finger with a largeish "emulated pen nib") and store the bitmap as a jpeg on a server by http post.</p>
  
  <p>Here is what I have so far but this is taken from <a href="http://www.youtube.com/watch?v=LHRDeDHW5zI&amp;feature=relmfu" rel="noreferrer">a tutorial</a> that is involved with writing sprites for a game.. And I cant' adapt it</p>
  
  <pre><code>package com.my.example;
  
  import android.app.Activity;
  import android.content.Context;
  import android.graphics.Bitmap;
  import android.graphics.BitmapFactory;
  import android.graphics.Canvas;
  import android.os.Bundle;
  import android.view.MotionEvent;
  import android.view.SurfaceHolder;
  import android.view.SurfaceView;
  import android.view.View;
  import android.view.View.OnTouchListener;
  
  public class DrawCapture extends Activity implements OnTouchListener{
  
      OurView v;
      Bitmap ball;
      float x,y;
  
      @Override
      protected void onCreate(Bundle savedInstanceState){
          super.onCreate(savedInstanceState);
          setContentView(R.layout.draw_capture);
          v = new OurView(this);
          v.setOnTouchListener(this);
          ball = BitmapFactory.decodeResource(getResources(), R.drawable.blueball);
          x = y = 0;
          setContentView(v);
      }
  
      @Override
      protected void onPause(){
          super.onPause();
          v.pause();
      }
  
      protected void onResume(){
          super.onResume();
          v.resume();
      }
  
      public class OurView extends SurfaceView implements Runnable{
          Thread t = null;
          SurfaceHolder holder;
          boolean isItOK = false;
  
          public OurView(Context context) {
              super(context);
              holder = getHolder();
          }
  
          public void run() {
              while (isItOK == true){
  
                  try {
                      Thread.sleep(50);
                  } catch (InterruptedException e) {
                      e.printStackTrace();
                  }
  
                  //perform canvas drawing
                  if (!holder.getSurface().isValid()){
                      continue;
                  }
                  Canvas c = holder.lockCanvas();
                  onDraw(c);
                  holder.unlockCanvasAndPost(c);
              }       
          }
  
          public void onDraw(Canvas c){
              c.drawARGB(255, 210, 210, 210);
              c.drawBitmap(ball, x - (ball.getWidth()/2), y - (ball.getHeight()/2), null);
          }
  
          public void pause(){
              isItOK = false;
              while(true){
                  try{
                      t.join();
                  } catch(InterruptedException e){
                      e.printStackTrace();
                  }
                  break;
              }
              t = null;
          }
  
          public void resume(){
              isItOK = true;
              t = new Thread(this);
              t.start();
          }
      }
  
      public boolean onTouch(View v, MotionEvent me){
  
          switch (me.getAction()){
              case MotionEvent.ACTION_DOWN : 
                  x = me.getX();
                  y = me.getY();              
                  break;
              case MotionEvent.ACTION_UP : 
                  x = me.getX();
                  y = me.getY();              
                  break;
              case MotionEvent.ACTION_MOVE : 
                  x = me.getX();
                  y = me.getY();              
                  break;
          }
          return true;
      }
  }
  </code></pre>
  
  <p>and here is the XML</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;SurfaceView xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent" &gt;
  
  
  &lt;/SurfaceView&gt;
  </code></pre>
  
  <p>Can someone please help me? I feel I am close - I use the <code>blueball</code> as a pen nib I just want to "save" this and possibly I'll need to have a button (or menu) on the XML page to do this ? I know it's a bit of a beg but there are <strong>a lot</strong> of people online asking how to draw with your finger and save something to the "cloud" if people could respond with examples of the code (not references) I promise I will compile this into a proper tutorial piece of code for the eventual benefit of all. Including the PHP server side code that I already am really happy with.</p>