如何提示停止响铃并启动alertdialog

时间:2012-12-04 09:28:43

标签: android alertdialog alarm

先生,我如何提示停止闹钟响铃然后在其他课程中启动alertdialog?这段代码总是强制关闭。如果我删除提示部分以停止时钟,警报将不会停止响铃并且警报对话仅显示一次。如果收到另一条消息,则不会再次触发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

1 个答案:

答案 0 :(得分:0)

我完全不了解你,只能理解我的理解:

  1. Dialog中的“r.stop()”是闹钟停止的原因。如果您不希望警报停止,请将其从那里移开。

  2. 只有当“消息”为“提醒”(如果)时,对话框才会打开并且仅响铃,因此如果您希望它以不同的消息发生,则必须创建自己的“if-elseif”

  3. 如果你想在另一个不同的消息中停止闹钟(所以点1.和2.)你必须在“if”句子之外移动“铃声r = ....”和/或取决于什么你想做的,在'for'陈述之前。

  4. -

    要在另一个Activity中执行此操作,请使用Ringtone变量创建静态类,并在创建铃声时将var传递给静态类以存储它。然后当新的Activity打开时,从StaticClass获取var以停止响铃。 希望它有所帮助。