2017-03-18 23:05:20 +01:00
package com.example.yink.amadeus ;
2017-03-19 14:00:15 +01:00
import android.annotation.TargetApi ;
2017-03-18 23:05:20 +01:00
import android.app.Activity ;
import android.app.AlarmManager ;
import android.app.PendingIntent ;
import android.content.Intent ;
import android.content.SharedPreferences ;
import android.os.Build ;
import android.os.Bundle ;
import android.preference.PreferenceManager ;
import android.util.Log ;
import android.view.View ;
import android.widget.TimePicker ;
2017-03-19 01:16:41 +01:00
import android.widget.Toast ;
2017-03-18 23:05:20 +01:00
import android.widget.ToggleButton ;
import java.util.Calendar ;
public class AlarmActivity extends Activity {
final String TAG = " Amadeus.Alarm " ;
AlarmManager alarmManager ;
PendingIntent pendingIntent ;
TimePicker alarmTimePicker ;
ToggleButton alarmToggle ;
public static final int alarmCode = 104856 ;
SharedPreferences settings ;
SharedPreferences . Editor editor ;
@Override
public void onStart ( ) {
super . onStart ( ) ;
}
@Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState ) ;
setContentView ( R . layout . activity_alarm ) ;
settings = PreferenceManager . getDefaultSharedPreferences ( getApplicationContext ( ) ) ;
alarmTimePicker = ( TimePicker ) findViewById ( R . id . alarmTimePicker ) ;
alarmToggle = ( ToggleButton ) findViewById ( R . id . alarmToggle ) ;
alarmManager = ( AlarmManager ) getSystemService ( ALARM_SERVICE ) ;
2017-03-19 14:00:15 +01:00
Intent alarmIntent = new Intent ( this , AlarmReceiver . class ) ;
2017-03-18 23:05:20 +01:00
pendingIntent = PendingIntent . getBroadcast ( this , alarmCode , alarmIntent , PendingIntent . FLAG_NO_CREATE ) ;
if ( settings . getBoolean ( " alarm_toggle " , false ) ) {
alarmToggle . setChecked ( true ) ;
} else {
alarmToggle . setChecked ( false ) ;
}
}
public void onToggleClicked ( View view ) {
editor = settings . edit ( ) ;
if ( alarmToggle . isChecked ( ) ) {
editor . putBoolean ( " alarm_toggle " , true ) ;
Calendar calendar = Calendar . getInstance ( ) ;
2017-03-19 14:00:15 +01:00
if ( Build . VERSION . SDK_INT > = Build . VERSION_CODES . M ) {
Log . d ( TAG , " Current API functions have been executed " ) ;
calendar . set ( Calendar . HOUR_OF_DAY , getCurrentHour ( alarmTimePicker ) ) ;
calendar . set ( Calendar . MINUTE , getCurrentMinute ( alarmTimePicker ) ) ;
Toast . makeText ( this , " Alarm has been set for " + getCurrentHour ( alarmTimePicker ) + " hour(s) " + getCurrentMinute ( alarmTimePicker ) + " minute(s) " , Toast . LENGTH_SHORT ) . show ( ) ;
} else {
Log . d ( TAG , " Legacy API functions have been executed " ) ;
calendar . set ( Calendar . HOUR_OF_DAY , getCurrentHourLegacy ( alarmTimePicker ) ) ;
calendar . set ( Calendar . MINUTE , getCurrentMinuteLegacy ( alarmTimePicker ) ) ;
Toast . makeText ( this , " Alarm has been set for " + getCurrentHourLegacy ( alarmTimePicker ) + " hour(s) " + getCurrentMinuteLegacy ( alarmTimePicker ) + " minute(s) " , Toast . LENGTH_SHORT ) . show ( ) ;
}
2017-03-18 23:05:20 +01:00
alarmManager . set ( AlarmManager . RTC_WAKEUP , calendar . getTimeInMillis ( ) , pendingIntent ) ;
2017-03-19 01:16:41 +01:00
Log . d ( TAG , " Alarm On " ) ;
2017-03-18 23:05:20 +01:00
} else {
2017-03-20 00:55:44 +01:00
AlarmReceiver . stopRingtone ( this ) ;
2017-03-19 01:16:41 +01:00
editor . putBoolean ( " alarm_toggle " , false ) ;
alarmManager . cancel ( pendingIntent ) ;
Log . d ( TAG , " Alarm Off " ) ;
2017-03-18 23:05:20 +01:00
}
editor . apply ( ) ;
}
2017-03-19 14:00:15 +01:00
@SuppressWarnings ( " deprecation " )
public int getCurrentHourLegacy ( TimePicker tp ) {
return tp . getCurrentHour ( ) ;
}
@SuppressWarnings ( " deprecation " )
public int getCurrentMinuteLegacy ( TimePicker tp ) {
return tp . getCurrentMinute ( ) ;
}
@TargetApi ( Build . VERSION_CODES . M )
public int getCurrentHour ( TimePicker tp ) {
return tp . getHour ( ) ;
}
@TargetApi ( Build . VERSION_CODES . M )
public int getCurrentMinute ( TimePicker tp ) {
return tp . getMinute ( ) ;
}
2017-03-18 23:05:20 +01:00
}