有没有一种方法可以在没有上下文的情况下监听按键?

时间:2018-02-08 11:11:58

标签: android

供应商给了我一个API,它构造了一个我提供的对象,用于监听硬件按钮按键,如:

interface ButtonListener {
    void onButton(String buttonName);
}

interface ButtonApi {
    void addListener(ButtonListener);
}

class MyButtonApi implements {
    ButtonListener listener;

    public void addListener(ButtonListener listener) {
        listener = listener;
    }

    public void whatCallsThisMethod(void) {
        listener.onButton("a button");
    }
}

构建MyButtonApi对象后,按下任何硬件按钮都会导致调用侦听器onButton方法。

所以我遇到的问题是我无法想到一种方法来监听创建对象中的按钮,因为我没有引用Context(或者Activity或Service,基本上没有侦听器之外的对象)。

在这种情况下有没有办法听按钮按下?

我能想到的方式:

  • 活动onKey方法 - 不可能,我没有活动
  • 意图 - 不可能AFAIK,因为我需要一个Context来创建BroadcastReceiver
  • Binder - 我再次相信我需要一个上下文才能绑定或绑定到

我还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

因此,只需为您的API类提供上下文:

class MyButtonApi {
    public MyButtonApi(Context context, ButtonListener listener);
}

答案 1 :(得分:0)

如果我第三次理解你,你试图通过另一个API(而不是android)获得一些关键的压力; 所以我可以假设下一个方法:

class MyActivity implements ButtonListener {
    MyButtonApi api = new MyButtonApi(this);
    List<String> buttonEvents = new ArrayList();
    @Override
    void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        api.whatCallsThisMethod();            
    }
    @Override
    void onButton(String buttonName) {
        buttonEvents.add(buttonName);
    }
}

//So now you have buttons that were pressed, i think you don't need context in this case