【发布时间】:2021-03-24 15:46:22
【问题描述】:
首先,这不是一个重复的问题:How to override Android keyboard
我的问题和上面的有点不同。
我正在我的应用程序的后台播放音乐,如果用户在任何片段或活动(我只有 1 个活动)上按下 Enter 或 Space 键,我想播放/暂停它带有 @ 987654324@。我已经实现了这个,它工作得很好。但是有一个问题:当用户专注于一个按钮(例如:打开 X 片段)时,Space 或 Enter 键会触发按钮的单击事件。所以我想覆盖它。
这是我尝试过的:
主要活动
public class MainActivity extends AppCompatActivity {
....
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SPACE || keyCode == KeyEvent.KEYCODE_ENTER) {
BackingTrackFragment.newInstance().onKeyUp(keyCode, event);
return true;
}
return super.onKeyUp(keyCode, event);
}
}
我的片段
public class SomeFragment extends BaseFragment implements KeyboardKeyEventListener {
...
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// play/pause the song
return true;
}
}
界面
public interface KeyboardKeyEventListener {
boolean onKeyUp(int keyCode, KeyEvent event);
}
【问题讨论】: