2017-05-28 6 views
0

アラームアプリがあります...アラームが鳴ったら通知とアラーム音を鳴らすボタンが付いた通知が表示されます...他のボタンは同じ機能を実行しますそして5分間アラームを居眠りすることになっている他の機能スヌーズを呼び出します...しかし、スヌーズをクリックしたときにアラームが再び右away..iが通知ボタンの特定のスヌーズ機能

が、これは私の受信機である理由を知らないトリガー

public class AlarmReceiver extends BroadcastReceiver { 


@Override 
public void onReceive(Context context, Intent arg1) { 

    Toast.makeText(context, ALARM RECEIVED, Toast.LENGTH_LONG).show(); 
createNotification(context); 
} 
    public void createNotification(Context context){ 

    NotificationCompat.Builder mBuilder = 
      (NotificationCompat.Builder) new NotificationCompat.Builder(context) 
        .setSmallIcon(R.drawable.mini) 
        .setContentTitle(context.getResources().getString(R.string.message_box_title)) 
        .setContentText(context.getResources().getString(R.string.message2)) 
        .setSubText(context.getResources().getString(R.string.message)) 
        .setPriority(NotificationCompat.PRIORITY_HIGH); 

    Intent intent = new Intent(context,MainActivity.class); 
    PendingIntent pendingIntent=PendingIntent.getActivity(context,123,intent,PendingIntent.FLAG_UPDATE_CURRENT); 
    mBuilder.setContentIntent(pendingIntent); 


    Intent dismiss_intent=new Intent(context, MediaPlayingService.class); 
    dismiss_intent.setAction(MediaPlayingService.ACTION_DISMISS); 
Intent dismissing_intent=new Intent(context, MediaPlayingService.class); 
    dismissing_intent.setAction(MediaPlayingService.DISMISSING_ACTION); 

    PendingIntent pending=PendingIntent.getService(context,123,dismiss_intent,PendingIntent.FLAG_UPDATE_CURRENT); 
    PendingIntent pending2=PendingIntent.getService(context,123,dismissing_intent,PendingIntent.FLAG_UPDATE_CURRENT); 

    PendingIntent pending=PendingIntent.getService(context,123,dismiss_intent,PendingIntent.FLAG_UPDATE_CURRENT); 
    NotificationCompat.Action action= new NotificationCompat.Action(android.R.drawable.ic_lock_idle_alarm, 
      "DISMISS",pending); 
    mBuilder.addAction(action); 
    NotificationCompat.Action action2= new NotificationCompat.Action(R.drawable.bell,"SNOOZE",pending); 
    mBuilder.addAction(action2); 


    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification=mBuilder.build(); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    mNotificationManager.notify(321,notification); 
} 

これは私のサービスクラスです

public class MediaPlayingService extends Service { 
private MediaPlayer mp; 
public static final String URI_BASE=MediaPlayingService.class.getName() + "."; 
public static final String ACTION_DISMISS = URI_BASE + "ACTION_DISMISS"; 
public static final String DISMISSING_ACTION = URI_BASE + "DISMISSING_ACTION"; 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

public int onStartCommand(Intent intent, int flags, int startId) { 


    String action = intent.getAction(); 
    if (ACTION_DISMISS.equals(action)) { 
dismiss(); 
}else if(DISMISSING_ACTION.equals(action)){ 

     dismiss(); 
     snooze(); 
    } 
      return START_NOT_STICKY; 
    } 


private void dismiss() { 

    Intent intent=new Intent(this,MediaPlayingService.class); 
    stopService(intent); 

    intent = new Intent(this, AlarmReceiver.class); 
    PendingIntent pendingIntent= PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT); 
    AlarmManager alarmM= (AlarmManager)getSystemService(ALARM_SERVICE); 
    alarmM.cancel(pendingIntent); 

    NotificationManager notiMana= (NotificationManager) getSystemService(getApplicationContext().NOTIFICATION_SERVICE); 
    notiMana.cancel(321); 

} 
    public void snooze(){ Intent intent = new Intent(this, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP, 5*60*1000, pendingIntent);} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
mp.stop(); 
} 
} 

isnt 5 * 60 * 1000は5分としますか?なぜ私はそれを即座に取得するのですか?

答えて

0

あなたのスヌーズ方法は、次のようになりますので、あなたは、ミリ秒単位でエポック時間を入力する必要があります:

public void snooze(){ 
    Intent intent = new Intent(this, AlarmReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.add(Calendar.MINUTE, 5); 
    Date date = calendar.getTime(); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, date.getTime(), pendingIntent); 
    } 

は、このことができますなら、私に教えてください。

関連する問題