java소스에서


package exam.sensor;


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 SensorActivity extends Activity implements SensorEventListener {


EditText vi;

int count;

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;


   


    public void onCreate(Bundle savedInstanceState) {

    

     vi = (EditText)findViewById(R.id.tv);

     vi.setText(str);

    

        super.onCreate(savedInstanceState);


   


        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);


        accelerormeterSensor = sensorManager


                .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);


   


    }


   


    @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);


    }


   


    @Override


    public void onAccuracyChanged(Sensor sensor, int accuracy) {


    }


   


    @Override


    public void onSensorChanged(SensorEvent event) {

     int count=0;

     if(speed>SHAKE_THRESHOLD) {

     count++;

     str = String.format("%d",count);

     vi.setText(str);

    

    

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


                    // 이벤트 발생!!


                }


                lastX = event.values[DATA_X];


                lastY = event.values[DATA_Y];


                lastZ = event.values[DATA_Z];


             }

            }


        }


    }  


}



main.xml소스에서..


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

   android:background="#FFFFFF"

    >

    <EditText

    android:layout_width="wrap_content" 

    android:layout_height="wrap_content"

     android:id="@+id/tv"

     />

     <TextView

     android:layout_width="wrap_content"

     android:layout_height="wrap_content"

     android:id="@+id/count"/>

     <TextView

     android:id="@+id/vi"

     android:layout_width="wrap_content"

     android:layout_height="wrap_content"/>

</LinearLayout>




이런식으로 만들었는데.... 


실행시키면 Sensor 응용프로그램(exam.sensor프로세스)이 예상치 않게 중지되었습니다.다시 시도해 주세요.

라고 에러가 떠요... 소스에서 에러는 안뜨는데....

왜이런거죠,...


저가  진짜 초보라 소스도 완벽히 이해 못햇지만 실행되면 찾아보면서 이해하려고 노력하고 있는데...

이렇게 에러가뜨니 어떻게 해야할지 모르겟네요....

제발 도와주세요...