android - 按两次电源按钮发送短信

标签 android keyevent background-service

我写了一个应用程序,用户可以在其中按下 Activity 中给定的按钮时发送消息,它对我来说工作正常,但现在我的目标是通过使用双击电源按钮发送短信.

但我不知道该怎么做?

   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

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

关于android - 按两次电源按钮发送短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22298018/

相关文章:

android - 扫描二维码时将按钮设为不可点击

c# - 如何手动取消 ASP.net 核心中的 BackgroundService

Android Periodic Work Request 在应用程序启动和关闭时启动和停止

android - 回收 View 中的 Admob

java - setOnClickListener() 不起作用

android - 设置ImageResource时ImageView变慢

javascript - android上的keyCode总是229

android - TabActivities 中的关键事件?

android - picasso :2个 fragment 之间的共享元素过渡

android - 如何在我的应用程序的软键盘上使用 Enter?