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) {
                  
           run();
          //mp.stop();
         }
        
             lastX = event.values[DATA_X];
             lastY = event.values[DATA_Y];
             lastZ = event.values[DATA_Z];
                
         }
     }
 }
 public void run() {
  // TODO Auto-generated method stub
  while(true){           
   // Update 메시지 보냄            
   if (speed != SHAKE_THRESHOLD) {
                  
    count++;
          
         }
   
   handler.sendMessage(Message.obtain(handler, UPDATE));
  }
 }
 
 public final static int UPDATE = 0;
 Handler handler = new Handler(){
  @Override
  public void handleMessage(Message msg) {
   switch(msg.what) {
   case UPDATE:
    // 메시지 처리
    if(count > 20)
     mp.stop();
     finish();
    break;
    }
   };
  };

빨간부분이 흔들었음을 감지하는 부분입니다. 그런데 거기가 한번만 움직이면 처리가 되서 20번 흔들면 mp가 종료되게 했는데 폰에서 작동시키니까 그냥 뻗어 버립니다... 어디가 틀렸는지 어떻게해야대는지 아시는대로좀 가르켜 주세요