2017-05-04 2 views
0

Bonjour Je cherchais des questions sur la façon d'éteindre le réveil dans mon application, mais rien ne m'a aidé. J'ai deux boutons on et off et l'alarme peut normalement commencer mais je ne peux pas l'éteindre.Comment désactiver alarmClock

Mon AlarmActivity

public class AlarmActivity extends Activity { 

AlarmManager alarmManager; 
private PendingIntent pendingIntent; 
private TimePicker alarmTimePicker; 
private static AlarmActivity inst; 
private TextView alarmTextView; 
Button on, off; 

public static AlarmActivity instance() { 
    return inst; 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    inst = this; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 
    alarmTimePicker = (TimePicker) findViewById(R.id.alarmTimePicker); 
    alarmTextView = (TextView) findViewById(R.id.alarmText); 
    Button on = (Button) findViewById(R.id.zapni); 
    Button off = (Button) findViewById(R.id.vypni); 
    alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 


    on.setOnClickListener(new View.OnClickListener() { 
     @TargetApi(Build.VERSION_CODES.M) 

     @Override 
     public void onClick(View v) { 

      Log.d("MyActivity", "Alarm On"); 
      Calendar calendar = Calendar.getInstance(); 
      calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour()); 
      calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute()); 
      Intent myIntent = new Intent(AlarmActivity.this, AlarmReceiver.class); 
      pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this, 0, myIntent, 0); 
      alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 


     } 

    }); 

    off.setOnClickListener(new View.OnClickListener() { 
     @TargetApi(Build.VERSION_CODES.M) 



     @Override 
     public void onClick(View v) { 

      Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); 

      PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(), 1253, intent,0); 
      AlarmManager aManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      aManager.cancel(pIntent); 

      Log.d("MyActivity", "Alarm Off"); 

     } 

    }); 


} 

Mon AlarmReciever classe

public class AlarmReceiver extends WakefulBroadcastReceiver { 

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

    AlarmActivity inst = AlarmActivity.instance(); 
    inst.setAlarmText("Alarm! Wake up! Wake up!"); 


    Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
    if (alarmUri == null) { 
     alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    } 
    Ringtone ringtone = RingtoneManager.getRingtone(context, alarmUri); 
    ringtone.play(); 


    ComponentName comp = new ComponentName(context.getPackageName(), 
      AlarmService.class.getName()); 
    startWakefulService(context, (intent.setComponent(comp))); 
    setResultCode(Activity.RESULT_OK); 
} 

}

Mon AlarmService classe

public class AlarmService extends IntentService { 
private NotificationManager alarmNotificationManager; 

public AlarmService() { 
    super("AlarmService"); 
} 

@Override 
public void onHandleIntent(Intent intent) { 
    sendNotification("Wake Up! Wake Up!"); 
} 

private void sendNotification(String msg) { 
    Log.d("AlarmService", "Preparing to send notification...: " + msg); 
    alarmNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); 

    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, AlarmActivity.class), 0); 

    NotificationCompat.Builder alamNotificationBuilder = new NotificationCompat.Builder(this) 
      .setContentTitle("Alarm") 
      .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) 
      .setContentText(msg) 
      .setSmallIcon(R.mipmap.ic_launcher); 

    alamNotificationBuilder.setContentIntent(contentIntent); 
    alarmNotificationManager.notify(1, alamNotificationBuilder.build()); 
    Log.d("AlarmService", "Notification sent."); 
} 

}

Il y a quelque chose de mal à mon avis

off.setOnClickListener(new View.OnClickListener() { 
    @TargetApi(Build.VERSION_CODES.M) 



    @Override 
    public void onClick(View v) { 

     Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); 

     PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(), 1253, intent,0); 
     AlarmManager aManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     aManager.cancel(pIntent); 

     Log.d("MyActivity", "Alarm Off"); 

    } 

}); 

Répondre

0

Essayez cet extrait de code,

Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 1253, intent, PendingIntent.FLAG_UPDATE_CURRENT| Intent.FILL_IN_DATA); 
    AlarmManager aManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
    aManager.cancel(pendingIntent); 
+0

'PendingIntent pendingIntent = PendingIntent.getBroadcast (getApplicationContext(), 1253, intention, PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_DATA); 'J'ai utilisé ce code sans cela. parce qu'il jetait une erreur mais toujours rien – erikkockar

+0

envoyer l'erreur afin que nous puissions voir ce qui ne va pas –

+0

Quand j'écris là this.getApplicationContext() il lance cette erreur Impossible de résoudre la méthode 'getApplicationContext()' Mais quand je le supprime. cela fonctionne mais l'alarme ne veut toujours pas s'éteindre – erikkockar

0
PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(),1253, intent,0); 
AlarmManager aManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
aManager.cancel(pIntent); 
stopService(new Intent(AlarmActivity.this, AlarmReceiver.class)); 

vous plateau que comme son peut être aider autres énumèrent sages this.

+0

toujours rien, mais merci – erikkockar

+0

alarme est toujours en cours de lecture, mais je ne peux pas l'éteindre – erikkockar