** ** THIS QUESTION WAS SUCCESSFULLY ANSWERED AND HAS BECOME A BLOG POST <- clickcómo dibujar algo con el dedo en una aplicación de Android .... y guardarlo en la web
Hola soy un desarrollador de PHP quiero hacer una cosa simple - Quiero dibuje algo dibujado en una página en blanco en un teléfono con Android (con un dedo con una "plumilla de pluma emulada" más grande) y almacene el mapa de bits como un jpeg en un servidor por http post.
Esto es lo que tengo hasta ahora, pero esto se toma de a tutorial que está involucrado con los sprites de escritura para un juego .. Y yo no puede adaptarlo
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;
}
}
y aquí está el código XML
<?xml version="1.0" encoding="utf-8"?>
<SurfaceView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</SurfaceView>
¿Alguien puede ayudarme? Siento que estoy cerca: uso el blueball
como una pluma. Solo quiero "guardar" esto y posiblemente tendré que tener un botón (o menú) en la página XML para hacer esto. Sé que es un poco pesado pero hay mucho de personas en línea que me preguntan cómo dibujar con el dedo y guardar algo en la "nube" si las personas pueden responder con ejemplos del código (no referencias). Prometo que lo haré compilar esto en una pieza de código tutorial adecuado para el beneficio final de todos. Incluyendo el código del lado del servidor PHP con el que ya estoy muy contento.
gracias, lo investigaré mañana y me pondré en contacto contigo, parece que estás sugiriendo que vuelva a escribir, pero está bien. Te actualizaré pronto (~ 24 horas) – conners
No tengo tiempo para probar el código para verificar qué está mal, pero sé que he usado mi solución para guardar la firma del cliente en una aplicación de Android y funciona como un encanto :). Así que te lo comparto si puede ser útil. – grattmandu03
* STOP * PRENSA * Lo tengo funcionando como lo necesito (con cambios sustanciales pero básicamente usando su código) pude eliminar completamente "Activity2" y usar el oyente click para hacer una publicación de la imagen del gesto a través de un interno almacenamiento. Publicaré el "howto" una vez que lo haya ordenado. – conners