package test.Shake;

import android.app.Activity; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.widget.EditText;
   

public class ShakeActivity extends Activity implements SensorEventListener { 
   

EditText vi;
int count = 0;
String str = String.format("%d", count);
    private long lastTime; 
    private float speed; 
    private float lastX; 
    private float lastY; 
    private float lastZ; 
   

    private float x, y, z; 
    private static final int SHAKE_THRESHOLD = 800; 
   

    private static final int DATA_X = SensorManager.DATA_X; 
    private static final int DATA_Y = SensorManager.DATA_Y; 
    private static final int DATA_Z = SensorManager.DATA_Z; 
   

    private SensorManager sensorManager; 
    private Sensor accelerormeterSensor; 
   

    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
   

        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
        accelerormeterSensor = sensorManager 
                .getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
        vi = (EditText)findViewById(R.id.tv);
   

    } 
   

    @Override 
    public void onStart() { 
        super.onStart(); 
   

        if (accelerormeterSensor != null) 
            sensorManager.registerListener(this, accelerormeterSensor, 
                    SensorManager.SENSOR_DELAY_GAME); 
    } 
   

    @Override 
    public void onStop() { 
        super.onStop(); 
   

        if (sensorManager != null) 
            sensorManager.unregisterListener(this); 
    } 
   

  
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    } 
   


    public void onSensorChanged(SensorEvent event) { 
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 
            long currentTime = System.currentTimeMillis(); 
            long gabOfTime = (currentTime - lastTime); 
   

            if (gabOfTime > 100) { 
                lastTime = currentTime; 
   

                x = event.values[SensorManager.DATA_X]; 
                y = event.values[SensorManager.DATA_Y]; 
                z = event.values[SensorManager.DATA_Z]; 
   

                speed = Math.abs(x + y + z - lastX - lastY - lastZ) /

                        gabOfTime * 10000;

   

                if (speed > SHAKE_THRESHOLD) { 
                count ++;
                str = String.format("%d", count);
                vi.setText(str);
                    //이벤트 발생!! 
                } 
                lastX = event.values[DATA_X]; 
                lastY = event.values[DATA_Y]; 
                lastZ = event.values[DATA_Z]; 
            } 
        } 
    }   

}
 
소스 전체입니다.
인터넷에서 제공되는 소스를 기반으로 단순히 가속도 변화시에 count를 확인하고 싶어서
EditText 를 사용해보려고 하는데요, 이를 위해 위젯을 import 하면
이클립스 내에서는 아무런 오류가 없지만 가상머신이나 기기에 실제로 올려서 실행해보면
예기치못한 오류발생이라는 메세지와 함께 강제종료가 되버립니다.

다른 위젯사용 소스들은 그냥 돼는데 왜 이럴까요?