2012-12-04 8 views
0

선생님, 알람을 멈추고 다른 클래스에서 경고 대화를 시작하려면 어떻게해야합니까? 이 코드는 항상 닫습니다. 내가 시계를 멈추기 위해 프롬프트 부분을 제거하면 알람이 울리지 않고 경고 대화 상자가 한 번만 표시됩니다. 다른 메시지를 받으면 경고 대화 상자를 다시 트리거하지 않습니다. 도와주세요. 나는 모든하지만에서 내가 이해를 이해하지 못하는알림을 울리고 멈추고 알림을 시작하는 방법

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 

답변

0

사전에 도움을 주셔서 감사합니다 :

  1. 은 "r.stop을()"를 대화 상자 내부의 알람 정지를 만드는 것입니다 . 알람을 중지하지 않으려면 거기에서 이동하십시오.

  2. '메시지'가 '알림'(있는 경우)에서만 대화 상자가 열리 며 알람이 울리기 때문에 다른 메시지에서 문제가 발생하게하려면 자체 'if-elseif'를 만들어야합니다.

  3. 다른 메시지 (지점 1과 2)에서 알람을 중지하려면 '벨소리 r = ....'을 'if'문장 바깥으로 이동해야하며/또는 'for'문 앞에하기를 원합니다.

-

다른 활동에서 작업을 수행하려면, 벨소리 변수와 정적 클래스를 작성하고 당신이 벨소리를 만들 때 그것을 저장하는 정적 클래스에 VAR를 전달합니다. 그런 다음 새 활동이 열리면 StaticClass에서 var를 가져 와서 벨소리를 중지하십시오. 도움이 되길 바랍니다.

+0

내 코드가 실행 중이 지 않습니다. r.stop()을 그대로두면 강제로 닫힙니다. –

+0

'r.stop()'다음에 'dialog.cancel()'및/또는 'dialog.dismiss()'를 시도 했습니까? – Jordi

관련 문제