2014-05-18 65 views
0

中使用此android應用程序我想確定是否有人按了音量調高按鈕或音量調低按鈕超過2秒鐘。這是我迄今爲止所實施的。如何識別按下音量按鈕在android

MainActivity.java文件

package com.example.hardwarebuttton2; 

import android.os.Bundle; 
import android.app.Activity; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 



@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN && event.getEventTime()>2000){ 
     Toast.makeText(getBaseContext(), "volume down button pressed for 2 seconds", Toast.LENGTH_SHORT).show(); 
     return true; 

    } 

    if(keyCode==KeyEvent.KEYCODE_VOLUME_UP && event.getEventTime()>2000){ 
     Toast.makeText(getBaseContext(), "volume up button pressed for 2 seconds", Toast.LENGTH_SHORT).show(); 
     return true; 
    } 


    return super.onKeyDown(keyCode, event); 
} 


} 

這段代碼的作用是不計2秒它給人的輸出,一旦一個我按音量向上或向下按鈕。那麼,這個代碼有什麼問題。如果有人能告訴我如何解決這個問題,我非常感激。

+0

請參閱此鏈接(http://stackoverflow.com/a/22371161/3168859) – Lal

回答

0

event.getEventTime返回上或下的時間,而不是自上次事件以來的時間。你想要做的是存儲事件時間,當你看到一個下降,當你看到一個上漲從事件時間減去存儲的值。這給你時間的流逝。如果經過的時間超過2秒,那麼請做你想做的事情。

+0

謝謝。使用,long time = event.getEventTime();我可以確定事件的開始時間。那麼我怎樣才能確定事件完成時間。 –

+0

事件開始時間是當您在onKeyDown中看到密鑰時。結束時間是在onKeyUp中看到的時間。 –