1

我正在开发一个android应用程序,我想在按下音量调低按钮时启动一个计时器,并在按下音量调高按钮时停止计时器,并在再次降低音量时重新启动计时器等等。

问题是,即使在我清除并取消它之后,时间也没有停止。它不断地循环自己。

请检查下面的代码,让我看看可能有什么问题。

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

}
4

1 回答 1

0

您可以尝试使用此代码段:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
   if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { 
       // On Volume DOWN
       return true;
   }
else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){
       // On Volume UP
       return true;
}
else {
       return super.onKeyDown(keyCode, event); 
}

这样你就可以确定这些按钮被按下了。如果问题仍然存在,则可能与按钮按下无关。}

于 2013-07-01T12:50:23.900 回答