2012-02-10 2 views
0

나는 왜 내 앱이 계속 진동합니까?

Vibrator v = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);   

long milliseconds = 500; 

v.vibrate(milliseconds); 

는 때때로 확인했다 아래로 안드로이드 및 설정 시간 = 500ms로 진동 서비스를 사용하지만 때로는 내가 그것을 지속적으로 진동 이유를 모르는 나는 화면을 켜 경우에만 중지합니다. 내 애플 리케이션은 안드로이드 2.2에서 작동합니다.

도와주세요.

고마워요.

/**편집 귀하의 답변에 대한 */

덕분에,

나는 알람 서비스 내부에 진동 시작합니다. 알람이 울릴 때마다 나는 소리를 내고이 서비스 안에서 진동하기 시작합니다. 여기에 문제가 때로는 작품을 좋아한다는 것입니다 내 코드

Vibrator v = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE); 
long milliseconds = 500; 
v.vibrate(milliseconds); 

MediaPlayer mp = MediaPlayer.create(this, R.raw.normal); 
mp.start(); 
mp.setOnCompletionListener(new OnCompletionListener() { 
    public void onCompletion(MediaPlayer mp) { 
     // TODO Auto-generated method stub 
     mp.release(); 
    } 
}); 
PowerManager pm = (PowerManager) this 
      .getSystemService(Context.POWER_SERVICE); 
mWakelock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK 
      | PowerManager.ACQUIRE_CAUSES_WAKEUP, "AlarmScreen"); 
mWakelock.acquire(120000); 

이지만, 경우에 따라서는 지속적으로 진동하고 난 화면을 켜 경우에만 중지합니다. 시도는 같은 방법으로 사용하는

답변

1

...

Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); 
    v.vibrate(2000); 

제거 :

this. 

및 모든 거 문제는 당신이 사용하고있는 코드가 아닙니다

+0

'이'여기에 서비스 객체 자체를 사용하여 진동을 강제로 정지 할 수 있습니다. 나는 이것이 내 문제의 문제라고 생각하지 않는다. – MichaelP

+0

mediaplayer를 호출 할 때마다 mp.start() 전에 mp.release()를 시도하십시오 ... – timonvlad

+0

감사합니다.하지만 mp.start() 전에 mp.release()를 호출하면 IllegalStateException 예외가 발생합니다. – MichaelP

0

괜찮을 장치를 진동시키기 위해 아마도 진동을 불러 일으키는 코드 일 것입니다. 진동을 유발하는 일종의 루프가 있다고 생각합니다. 진동을 시작하는 데 사용 된 코드를 표시 할 수 있습니까?

+0

방금 ​​제 질문을 편집했습니다. , 당신은 그것을 위에 볼 수 있습니다. – MichaelP

0

당신은 지연

final Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
v.vibrate(2000); 

final Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
@Override 
public void run() { 
    //Do something after 2000ms (avoid random vibrations) 
    v.cancel(); 
    } 
}, 2000); 
관련 문제