0

我对 Android 开发和 Java 开发完全陌生,所以请原谅我的愚蠢问题 :)

我想设置一个在按下按钮时停止 SMS 声音的应用程序。

到目前为止,我能够设置一个 SMSReceiver 来查看何时收到 SMS 并执行它所告知的操作。这是代码:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;

public class SMSReceiver extends BroadcastReceiver {
    @Override
public void onReceive(Context context, Intent intent) {
    AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    switch (audioManager.getRingerMode()) {
    case AudioManager.RINGER_MODE_VIBRATE:
        audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
    break;
    case AudioManager.RINGER_MODE_NORMAL:
        audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
    break;
    }
  }
}

现在,我需要的是仅在按下音量减小按钮(或任何其他按钮)时才在 onReceive 中执行操作。

我试图添加一个 onKeyDown 方法......但我无法解决它:(。

有人可以帮忙吗?

4

3 回答 3

1

据我了解,您可以使用以下方式:当按钮更改其状态时 - 在用户首选项中写入布尔标志。当 SMS 到来时,您可以从首选项中检查标志。

于 2013-02-25T13:22:15.280 回答
1

编码:

if(buttonPressed){
    //your code
}

实际上应该是:

if(currentActivity.buttonPressed){
    //your code
}

因为它无法从另一个类解析 buttonPressed

于 2013-09-25T03:44:44.710 回答
1

编辑:做了一些改变

public static Boolean buttonPressed = false; 

 //put these 2 methods inside your current activity

@Override //important!
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){
            buttonPressed = true;
        }
         return super.onKeyDown(keyCode, event);;
    }

@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){
            buttonPressed = false;
        }
         return super.onKeyUp(keyCode, event);;
    }
//This inside your receiver class
public void onReceive(Context context, Intent intent) 
{
    if(buttonPressed){
        //your code
    }
}
于 2013-02-25T13:17:52.130 回答