0

サー、アラームの鳴動を停止してから他のクラスでアラートダイアログを開始するようにプロンプ​​トを表示するにはどうすればよいですか?このコードは常に強制的に閉じます。プロンプト部分を削除して時計を停止すると、アラームの鳴りが止まらず、アラートダイアログが1回だけ表示されます。別のメッセージを受信した場合、alertdialogは再度トリガーされません。私を助けてください。事前に助けてくれてありがとう

for (SmsMessage msg : messages) {
        if (msg.getMessageBody().contains("alert")) {

            Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
             if(alert == null){
                 // alert is null, using backup
                 alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
                 if(alert == null){  
                     // alert backup is null, using 2nd backup
                     alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);               
                 }
             }
             Ringtone r = RingtoneManager.getRingtone(context.getApplicationContext(), alert);
             AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
             int maxVolumeAlarm = audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM);

             audioManager.setStreamVolume(AudioManager.STREAM_ALARM, maxVolumeAlarm,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

             r.play();

//prompt
alertDialogBuilder = new AlertDialog.Builder(
            context);
    alertDialogBuilder.setTitle("Alarm Received");

            alertDialogBuilder
            .setMessage("Stop alarm")
            .setCancelable(false)
            .setPositiveButton("OK",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    r.stop();
                    Toast.makeText(getApplicationContext(), "alarm stopped", Toast.LENGTH_LONG).show();
                }
              });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();
                Toast.makeText(context.getApplicationContext(), "alarm started", Toast.LENGTH_LONG).show();

//open alertdialog in other activity        
Intent openInterface = new Intent("proj.receiver.RECEIVERINTERFACE");
            openInterface.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(openInterface);

        }//end if
    }//end for
4

1 に答える 1

0

私はあなたをまったく理解していませんが、私が理解していることから:

  1. ダイアログ内の「r.stop()」は、アラームを停止させるものです。アラームを止めたくない場合は、そこから移動してください。

  2. 「メッセージ」が「アラート」(if) の場合にのみ、ダイアログが開き、アラームが鳴ります。そのため、別のメッセージで発生させたい場合は、独自の「if-elseif」を作成する必要があります。

  3. 別の別のメッセージでアラームを停止したい場合 (ポイント 1. と 2.)、「Ringtone r =....」を「if」文の外に移動するか、何をしたいかによって、前に移動する必要があります。 「for」ステートメント。

--

別のアクティビティでこれを行うには、着信音変数を使用して静的クラスを作成し、着信音を作成するときに変数を静的クラスに渡して格納します。次に、新しいアクティビティが開いたら、StaticClass から var を取得して呼び出し音を止めます。それが役に立てば幸い。

于 2012-12-04T10:05:49.107 に答える