2017-10-28 7 views
0

私は目覚まし時計アプリケーションを使用しています。アプリはアラームを開始しますが、オフにすることはできません。システムのデフォルトのアラーム音でアラームがオンになります。しかし、オフにすることはできません。私が強制終了したときだけ、着信音が降りています。私はここでトグルボタンを使用しました。アラームがオンになった後、トグルボタンをクリックするとアラーム解除したい。alarmManagerをキャンセルしますが、着信音はオフになりません

MainActivity.java

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    alarmTimePicker = (TimePicker) findViewById(R.id.timePicker); 
    alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

} 
public void OnToggleClicked(View view) 
{ 
    long time; 
    if (((ToggleButton) view).isChecked()) 
    { 


     Toast.makeText(MainActivity.this, "ALARM ON", Toast.LENGTH_SHORT).show(); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour()); 
     calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute()); 
     Intent intent = new Intent(this, AlarmReceiver.class); 
     pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 

     time=(calendar.getTimeInMillis()-(calendar.getTimeInMillis()%60000)); 
     if(System.currentTimeMillis()>time) 
     { 
      if (calendar.AM_PM == 0) 
       time = time + (1000*60*60*12); 
      else 
       time = time + (1000*60*60*24); 
     } 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, 10000, pendingIntent); 
    } 
    else 
    { 
     alarmManager.cancel(pendingIntent); 

     Toast.makeText(MainActivity.this, "ALARM OFF", Toast.LENGTH_SHORT).show(); 
    } 
} 

AlarmReceiver.java

public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context, "Alarm! Wake up! Wake up!", Toast.LENGTH_LONG).show(); 
    Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
    if (alarmUri == null) 
    { 
     alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    } 
    Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri); 
    ringtone.play(); 
} 

答えて

0

これら二つのことは無関係ですので、あなたがプレイしている着信音を止めるつもりはないアラームをキャンセルする:私が使用するコードは以下の通りであります。受信機から着信音を開始しますが、アラームをキャンセルすると着信音を停止する必要があります。そうしないと着信音が鳴り続けます。

{ 
    alarmManager.cancel(pendingIntent); 
    // do something to stop the ringtone here 
    Toast.makeText(MainActivity.this, "ALARM OFF", Toast.LENGTH_SHORT).show(); 
} 
私も停止し、代わりにそれははるかに簡単にあなたがプレイを呼ば着メロオブジェクトの同じインスタンスを停止することができますので、警報受信機からそれを開始する着信音を起動するフォアグラウンドサービスを使用することをお勧めし
+0

()に – spaceman

関連する問題