Android 按两次电源按钮发送短信

Android 按两次电源按钮发送短信,android,keyevent,background-service,Android,Keyevent,Background Service,我已经编写了一个应用程序,用户可以在每次按下活动中给定的按钮时发送消息,对我来说效果很好,但现在我的目标是使用双击电源按钮发送短信 但我不知道怎么做 Send SMS by using double press on power button 下面是我用来发送短信的代码: btnPanic.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {

我已经编写了一个应用程序,用户可以在每次按下活动中给定的按钮时发送消息,对我来说效果很好,但现在我的目标是使用双击电源按钮发送短信

但我不知道怎么做

   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();
            }
        }
    }
});

}

我可以告诉您如何才能很好地实现这一点—它是硬编码的

如果我做错了,请原谅

这是按键事件到双击的一种转换

所以这里我考虑按两次键作为双击

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

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()
查找可以验证双击的两次单击时间

尝试双击并记录时间,并多次这样做,因为您将获得精确的时间

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

这样我们就可以区分点击和双击

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

您已经完成了使用这个长值来决定是单击还是双击

这可能就是您要查找的内容


同样的事情,你可以检查两次,因为你希望电源按钮被按下两次,所以我认为它会满足你的目的。

duplicate@AlexvandenHoogen这不是解决方案。我不喜欢在编写移动应用程序时在活动中使用电源按钮。你在电脑上也看不到……不,但它是复制品。然而,这应该是一个解决方案:-卡雷尔是正确的。这是应用程序的意外行为,当然不推荐。你不能说这是重复的,因为其他人提出的问题也不包含解决方案@AlexvandenHoogen我想你应该理解这一点
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