按电源按钮两次发送短信

时间:2014-03-10 10:45:17

标签: android keyevent background-service

我编写了一个应用程序,用户可以在按下活动中给出的按钮时发送消息,它对我来说很好,但现在我的目标是通过使用双按电源按钮发送短信

但我不知道,该怎么做?

   Send SMS by using double press on power button

下面是我用来发送短信的代码:

 btnPanic.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String message = "My current location is:" + "\t" + currentLocation ;

            String phoneNo = editContacts.getText().toString();

            StringTokenizer st=new StringTokenizer(phoneNo,",");
            while (st.hasMoreElements())
            {
                String tempMobileNumber = (String)st.nextElement();
                if(tempMobileNumber.length()>0 && message.trim().length()>0) {
                    sendSMS(tempMobileNumber, message);
            }
            else 
            {
              Toast.makeText(getBaseContext(), 
                "Please enter both phone number and message.", 
                 Toast.LENGTH_SHORT).show();
            }
        }
    }
});

3 个答案:

答案 0 :(得分:3)

我可以给你一个关于如何很好地实现它硬编码的想法。

如果我出错了,请原谅我。!!

这是将关键事件转换为双击。

所以这里我正在考虑按两次键击双击

首先看电源按钮的关键事件。

<强> 1

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(KeyEvent.KEYCODE_POWER == event.getKeyCode()){
      if(time interval is less)//Consider as double click
       //code to send messages
        else            //Consider as single click
       //nothing to do   
    }
    return super.onKeyDown(keyCode, event);
}

<强> 2 您应该使用System.currentTimeMillis()查找两次点击的时间,其中可以验证双击。

尝试Doubleclick并记录时间并多次执行,因为您将获得精确的时间。

因此,简而言之,您必须首先找到两次点击之间允许的最长时间,这被视为doubleClick。

这样我们就可以在点击和双击之间区分。

第3 所以在关键事件中你需要这样做

long l=0;//at start not in key event handler

if(l=0){l=System.currentTimeMillis();}//clicked first time
else{l=System.currentTimeMillis()-l;}//second time

你完成了使用这个长值来决定是点击还是双击

答案 1 :(得分:1)

    public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) {
    // do what you want with the power button

        String message = "My current location is:" + "\t" + currentLocation ;

        String phoneNo = editContacts.getText().toString();

        StringTokenizer st=new StringTokenizer(phoneNo,",");
        while (st.hasMoreElements())
        {
            String tempMobileNumber = (String)st.nextElement();
            if(tempMobileNumber.length()>0 && message.trim().length()>0) {
                sendSMS(tempMobileNumber, message);
        }
        else 
        {
          Toast.makeText(getBaseContext(), 
            "Please enter both phone number and message.", 
             Toast.LENGTH_SHORT).show();
        }
    return true;
}
return super.onKeyDown(keyCode, event);

}

答案 2 :(得分:1)

这可能就是你要找的东西 http://www.nkonecny.com/blog/2012/02/16/capture-power-button-keypress/

同样的事情,你可以检查两次,因为你想要按两次电源按钮所以我认为它将满足你的目的。