如何在具有不可聚焦视图的系统覆盖中获取硬键事件?

时间:2015-11-25 19:52:15

标签: java android view overlays

正如我在标题中所描述的,我的问题是有一个不可聚焦的视图。所以现在我不知道如何从视图中获取KeyEvent ...

修改 如果可能,可以从服务

收听事件

2 个答案:

答案 0 :(得分:0)

我已在片段中使用此代码来关闭全屏寻呼机视图并且它可以正常工作

View v = inflater.inflate(R.layout.fragment_addetails, container1,
            false);
    v.setFocusableInTouchMode(true);
    v.requestFocus();
    v.setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK
                    && pager.getVisibility() == View.VISIBLE) {
                pager.setVisibility(View.GONE);
                return true;
            }
            return false;
        }
    });

或者

public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
           //do code
            return true
}
        return false;
} 

也许这会有所帮助 如果没有,请描述您想要实现的目标的完整场景

答案 1 :(得分:0)

好的,我发现,我可以使用MediaButton获取我想要的KeyEvent。我只需要声明一个BroadcastReceiver并注册它。多数民众赞成!