public class Stop extends Activity implements SensorEventListener {  
 
 
 
 private MediaPlayer mp;
  
 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);
     setContentView(R.layout.st);
         
     mp = MediaPlayer.create(this, R.raw.in_call_alarm); // 사운드 파일 설정      
     //mp.seekTo(0);
  mp.setLooping(true);
  mp.start(); // 사운드 파일 재생
    
     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); 
 } 
  
 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); 
         int count = 0;
         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) { 
                 for(int i=0; i >=20; i++) {
                    count++;
                 }
                     if(count >= 18)
                     mp.stop();
                 
                      
         }
             lastX = event.values[DATA_X]; 
             lastY = event.values[DATA_Y]; 
             lastZ = event.values[DATA_Z]; 
         } 
     } 
 }   
}

여기서 휴대폰을 흔들면 mp가 멈춥니다. 횟수없이 한번만 할땐 잘되는데 for문 쓰는과정에서 종료가 되지않네요.
원인을 몰라서 올립니다. 그리구 지금 위의 액티비티가 종료되는 화면인데 백버튼이나 홈버튼이 눌리면 화면이 바뀌면서 이화면이 없어집니다. 그럴때는 mp를 멈출수가 없네요... 아시는분은 좀 알려주세요.
화면 전환을 막아도 되고 키를 안먹히게해두 되고 됩니다.
다른 좋은 방법도 아시는대로 알려주세요

감사합니다. 꾸벅!