我是Android开发和Java开发的新手,所以请原谅我的愚蠢问题:)
我想设置一个应用程序,在按下按钮时停止短信声音。
到目前为止,我能够设置一个SMSReceiver,它可以看到收到短信的时间并执行所述操作。这是代码:
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方法......但我无法将其排序:(。
有人可以帮忙吗?
答案 0 :(得分: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
}
}
答案 1 :(得分:1)
正如我所理解的那样,您可以使用以下方式:当按钮更改其状态时 - 在用户首选项中写入布尔标志。当SMS到来时,您可以检查首选项中的标志。
答案 2 :(得分:1)
代码:
if(buttonPressed){
//your code
}
实际应该是:
if(currentActivity.buttonPressed){
//your code
}
因为它无法从另一个类解析buttonPressed