This Android Java Program lets you create an Activity to Capture Motion Event on Android screen.
The program output is also shown below.
Main Activity
package com.example.motion_event;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
 
public class MainActivity extends Activity implements OnTouchListener {
    Ourview v;
    Bitmap bm;
    float x, y;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        v = new Ourview(this);
        v.setOnTouchListener(this);
        bm = BitmapFactory.decodeResource(getResources(), R.drawable.image4);
        x = 0;
        y = 0;
        setContentView(v);
    }
 
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        v.pause();
    }
 
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        v.resume();
    }
 
    // surface view is going to be a thread now
    class Ourview extends SurfaceView implements Runnable {
 
        Thread th = null;
        SurfaceHolder holder;
        boolean var = false;
 
        public Ourview(Context context) {
            super(context);
            // TODO Auto-generated constructor stub
            holder = getHolder();
        }
 
        @Override
        public void run() {
            // TODO Auto-generated method stub
            while (var = true) {
                // do stuff
                if (!holder.getSurface().isValid()) {
                    continue;
                }
                Canvas c = holder.lockCanvas();
                /*
                 * while drawing on a canvas we lock it and after drawing on it
                 * we unlock it
                 */
 
                c.drawARGB(255, 250, 150, 20);// rgb values
                c.drawBitmap(bm, x - (bm.getWidth() / 2), y
                        - (bm.getHeight() / 2), null);
                holder.unlockCanvasAndPost(c);
            }
        }
 
        public void pause() {
 
            var = false;
            while (true) {
                try {
                    th.join();
                    /*
                     * would pause the currently executing thread till the user
                     * finishes its job
                     */
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                break;
            }
            th = null;
        }
 
        public void resume() {
            var = true;
            th = new Thread(this);
            th.start();
        }
    }
 
    @Override
    public boolean onTouch(View v, MotionEvent me) {
        // TODO Auto-generated method stub
 
        try {
            Thread.sleep(80);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        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;
 
        default:
            break;
        }
 
        return true;
    }
 
} 
 
Post a Comment