Matikan suara alarm lewat klik notifikasi
Halo, saya ingin menanyakan source code untuk aplikasi single alarm saya. saya sudah membuat alarm + suara + notifikasi. namun ada kendala ketika saya ingin mematikan suara alarm melalui klik atau tap notifikasi. untuk bisa mematikan suara alarm melalui notifikasi, saya harus menambahkan kode dimana ya?
saya sudah menyiapkan code untuk set + cancel alarm, alert reciever, notification dan ringtone playing.
ini adalah code untuk set dan cancel alarm
public class AlarmActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alarm); mTextView = findViewById(R.id.text_view); Button buttonTimePicker = findViewById(R.id.set_alarm); buttonTimePicker.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DialogFragment timePicker = new TimePickerFragment(); timePicker.show(getSupportFragmentManager(), "Time Picker"); } }); Button buttonCancelAlarm = findViewById(R.id.cancel_alarm); buttonCancelAlarm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { cancelAlarm(); } }); } @Override public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) { Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, hourOfDay); c.set(Calendar.MINUTE, minute); c.set(Calendar.SECOND, 0); updateTimeText(c); startAlarm(c); } private void updateTimeText(Calendar c) { String timeText = "Alarm diatur pada : "; timeText += DateFormat.getTimeInstance(DateFormat.SHORT).format(c.getTime()); mTextView.setText(timeText); } private void startAlarm(Calendar c) { AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(this, AlertReciever.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, 0); if (c.before(Calendar.getInstance())) { c.add(Calendar.DATE,1); } alarmManager.setExact(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent); } private void cancelAlarm() { AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(this, AlertReciever.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, 0); alarmManager.cancel(pendingIntent); mTextView.setText("Alarm Dibatalkan"); }ini adalah code Alert Reciever
public class AlertReciever extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { NotificationHelper notificationHelper = new NotificationHelper(context); NotificationCompat.Builder nb = notificationHelper.getChannelNotification(); notificationHelper.getManager().notify(1, nb.build()); Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); vibrator.vibrate(3000); // intent to ringtone service Intent service_intent = new Intent(context, RingtonePlayingService.class); // start ringtone service context.startService(service_intent); // stop ringtone service context.stopService(service_intent); }ini adalah code Notifikasi
public class NotificationHelper extends ContextWrapper { public static final String channelID = "channelID"; public static final String channelName = "Channel Name"; private NotificationManager mManager; public NotificationHelper(Context base) { super(base); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { createChannel(); } } @TargetApi(Build.VERSION_CODES.O) private void createChannel() { NotificationChannel channel = new NotificationChannel(channelID, channelName, NotificationManager.IMPORTANCE_HIGH); getManager() .createNotificationChannel(channel); } public NotificationManager getManager() { if (mManager == null) { mManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); } return mManager; } public NotificationCompat.Builder getChannelNotification () { Intent resultIntent = new Intent(this, OlahragaActivity.class); PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 1, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); return new NotificationCompat.Builder(getApplicationContext(), channelID) .setContentTitle("Alarm menyala!") .setContentText("Waktunya anda untuk berolahraga!") .setContentIntent(resultPendingIntent) .setAutoCancel(true) .setSmallIcon(R.mipmap.logo_icon); }dan terakhir ini adalah code untuk ringtone playing service
public class RingtonePlayingService extends Service { MediaPlayer alarm_song; @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand (Intent intent, int flags, int startId) { Log.i("LocalService", "Received start id " + startId + ": " + intent); alarm_song = MediaPlayer.create(this, R.raw.alarm_sound); alarm_song.setLooping(true); alarm_song.start(); return START_NOT_STICKY; } @Override public void onDestroy () { alarm_song.stop(); }
1 Kontribusi 0 Poin
Jawaban
Belum ada Jawaban, jadi yang pertama
Login untuk gabung berdiskusiPertanyaan Lainnya
Top Kontributor
- @ahanafi
813 Kontribusi 551 Poin
- @Nandar
647 Kontribusi 204 Poin
- @dianarifr
642 Kontribusi 316 Poin
- @Saputroandhi
509 Kontribusi 162 Poin
- @dodipsitorus
412 Kontribusi 145 Poin