0

私は Android 開発と Java 開発にまったく慣れていないので、私のばかげた質問を許してください :)

ボタンを押すとSMSの音を止めるアプリを設定したい。

これまでのところ、SMS がいつ受信されたかを確認し、指示されたアクションを実行する 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 メソッドを追加しようとしました...しかし、整理できません:(。

誰か助けてくれませんか?

4

3 に答える 3

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 に答える
1

問題を理解したので、次の方法を使用できます。ボタンの状態が変化したとき-ユーザー設定にブール値フラグを書き込みます。SMS が来ると、設定からフラグを確認できます。

于 2013-02-25T13:22:15.280 に答える