我正在製作一個庫,用於跟蹤應用中的用戶事件。當用戶在應用程序的主屏幕上向我的圖書館按兩次音量按鈕時,我想要回叫。如何在不擴展活動的情況下獲得回調。 onKeyDown僅適用於活動。
我試圖音量按鈕按鍵事件的監聽器
public class SettingsContentObserver extends ContentObserver
{
int previousVolume;
Context context;
public SettingsContentObserver(Context c, Handler handler)
{
super(handler);
context = c;
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
previousVolume = audio.getStreamVolume(AudioManager.RINGER_MODE_NORMAL);
Log.i("myTag", "SettingsContentObserver previousVolume = " + previousVolume);
}
@Override
public boolean deliverSelfNotifications()
{
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange)
{
super.onChange(selfChange);
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audio.getStreamVolume(AudioManager.RINGER_MODE_NORMAL);
Log.d("myTag", currentVolume + " currentVolume");
int delta = previousVolume - currentVolume;
if (delta > 0)
{
Log.i("myTag", delta + " Decreased");
previousVolume = currentVolume;
}
else if (delta < 0)
{
Log.i("myTag", delta + " Increased");
previousVolume = currentVolume;
}
}
}
這不是要求的onChange時,有沒有體積變化。例如,如果用戶按下音量增大按鈕時音量已滿,則不會被調用。同樣,當音量爲0時,如果用戶按下音量,它將不會被調用。如何獲得回調?
可你們在課堂上使用dispatchKeyEvent? –
不,我們不能。它的相同像onKeyDown –