Возможно, пост уже немного устарел, но сегодня я столкнулся с той же проблемой и нашел лучшее (или, по крайней мере, более "элегантное") решение вместо использования общих настроек.
ОбъявитеГлобальные переменные как статические в вашей MainActivity:
static final long DOUBLE_CLICK_DELAY = 150;
static long lastButtonClick = 0; // oldValue
static long currentButtonClick = System.currentTimeMillis();
Теперь из вашего класса RemoteControlReceiver сделайте следующее:
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int action = event.getAction();
if (action == KeyEvent.ACTION_DOWN) {
// Do something for action down
}
else if(action == KeyEvent.ACTION_UP){
MainActivity.lastPressTime = MainActivity.newPressTime;
MainActivity.newPressTime = System.currentTimeMillis();
long delta = MainActivity.newPressTime - MainActivity.lastPressTime;
// Case for double click
if(delta < MainActivity.DOUBLE_CLICK_DELAY){
// Do something for double click
}
}
}