1
나는 안드로이드 애플 리케이션을 개발 중이다. 볼륨 다운 버튼을 누르면 타이머가 시작되고, 볼륨 업 버튼을 누르면 타이머가 멈추고, 다시 볼륨을 낮추면 타이머가 다시 시작된다.반복적으로 호출되는 타이머
문제는 내가 퍼지하고 취소 한 후에도 멈추지 않는 문제입니다. 그것 자체가 반복적으로 반복됩니다.
아래 코드를 확인하고 잘못된 부분이 있는지 알려주십시오.
@Override
public void onChange(boolean selfChange)
{
super.onChange(selfChange);
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING);
int delta=initialVolume-currentVolume;
//if down pressed
if(delta>0)
{
Log.e("delta","down");
downpress = "yes";
downpressdonefirsttime = "yes";
timer = new Timer();
}
//if up pressed
else if(delta < 0)
{
Log.e("delta","up");
}
//if down + up pressed
else if(delta == 0)
{
if(downpress.equalsIgnoreCase("yes"))
{
Log.e("inisde","delta is 0 , shake it!!");
}
}
if(downpressdonefirsttime.equalsIgnoreCase("yes"))
{
if(downpress.equalsIgnoreCase("yes"))
{
timer.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
time = ++time;
Log.e("inside","time run , time is" + time);
if(time <= 5)
{
Log.e("inside","time less than 5");
downpressdonefirsttime = "no";
}
if(time > 5)
{
Log.e("inside","time greater than 5");
downpress = "no";
time = 0;
timer.cancel();
timer.purge();
}
}
}, 0, 1000);
}
}
}
감사합니다.이 클래스는 ContentObserver를 확장했지만이 메서드는 정의되지 않았습니다. 사용하지 못했습니다. – Dave
그렇다면'initialVolume'은 어떻게 얻어지며 어떤 시점에서'delta' 변수는 null이 될 수 있습니까? – g00dy
AudioManager audio = (AudioManager) context.getSystemService (Context.AUDIO_SERVICE); \t \t initialVolume = audio.getStreamVolume (AudioManager.STREAM_RING); – Dave