android 媒体按钮,java – 如何在Android onMediaButtonEvent中收听“...

我自己解决了这个问题.诀窍是使用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值