android检测按钮down up,如何在Android onMediaButtonEvent中收听“ ACTION_DOWN”(按键)事件,以测量时间?...

本文介绍了如何通过event.getDownTime()来计算用户在Android应用中按下按键的反应时间,并展示了相关代码示例。作者通过日志输出展示了ACTION_DOWN和ACTION_UP事件的时间,从而获取了用户按下和释放按键的精确时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小编典典

我自己解决了这个问题。诀窍是使用 event.getDownTime() 以下示例对其进行解释:

audioSession = new MediaSession(getApplicationContext(), "TAG");

audioSession.setCallback(new MediaSession.Callback() {

@Override

public boolean onMediaButtonEvent(final Intent mediaButtonIntent) {

String intentAction = mediaButtonIntent.getAction();

if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {

KeyEvent event = mediaButtonIntent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);

if (event != null) {

stopTimeOfGame_millis = event.getDownTime();

double usersReactionTime = (event.getDownTime() - startTimeOfGame_millis) / 1000.0;

UtilsRG.info("event.getDownTime(): " + usersReactionTime);

double getEventTime = (event.getEventTime() - startTimeOfGame_millis) / 1000.0;

UtilsRG.info("event.getEventTime(): " + getEventTime);

int action = event.getAction();

if (action == KeyEvent.ACTION_DOWN) {

long action_down = android.os.SystemClock.uptimeMillis();

double actionDown = (action_down - startTimeOfGame_millis) / 1000.0;

UtilsRG.info("ACTION_DOWN: " + actionDown);

}

if (action == KeyEvent.ACTION_UP) {

long action_up = android.os.SystemClock.uptimeMillis();

double actionUp = (action_up - startTimeOfGame_millis) / 1000.0;

UtilsRG.info("ACTION_UP: " + actionUp);

}

}

}

return true;

}

});

PlaybackState state = new PlaybackState.Builder()

.setActions(PlaybackState.ACTION_PLAY_PAUSE)

.setState(PlaybackState.STATE_PLAYING, 0, 0, 0)

.build();

audioSession.setPlaybackState(state);

audioSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);

audioSession.setActive(true);

我得到以下日志:

event.getDownTime():0.281

event.getEventTime():0.421

ACTION_DOWN:0.47

ACTION_UP:0.471

因此,现在我得到了用户按下按键的瞬间。

特别感谢Balkrishna Rawool

2020-09-28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值