Hi, although Sleep Tight is my first Android App, I want to share it because it can help someone or maybe somebody can help me to improve it. But this is NOT a tutorial nor a masterclass, it’s only a set of examples that maybe can help to understand some concepts.
Sleep Tight has several files:
- Sleep.java (main activity class)
- Reboot.java / Turnoff.java / Turnon.java (broadcast recivers)
- main.xml (layout)
- AndroidManifest.xml
AndroidManifest.xml
AndroidManisfest.xml declares one activity to handle the main class, and three broacast recivers to handle application reboot, turn on, and turn off of alarms.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.prog.sleep"
android:versionName="1.6.1" android:versionCode="12">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Sleep"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:process=":remote1" android:name="Turnoff"></receiver>
<receiver android:process=":remote2" android:name="Turnon"></receiver>
<receiver android:name="Reboot">
<intent-filter>
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
</intent-filter>
</receiver>
</application>
</manifest>
main.xml
This is the main layout, a basic TableLayout with buttons and TextViews.
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1">
<TableRow>
<Button
android:text="Setup Sleep time"
android:id="@+id/button_apagar"
android:layout_height="60px"
android:gravity="center">
</Button>
<TextView
android:text="Textview"
android:gravity="center"
android:padding="3dip"
android:id="@+id/sleepview" />
</TableRow>
<TableRow>
<Button
android:text="Setup awake time"
android:id="@+id/button_encender"
android:layout_height="60px"
android:gravity="center">
</Button>
<TextView
android:text="Textview"
android:gravity="center"
android:padding="3dip"
android:id="@+id/awakeview" />
</TableRow>
<TableRow>
<TextView
android:text=""
android:gravity="center"
android:padding="3dip" />
<Button
android:text="Remove all alarms"
android:id="@+id/removealarms"
android:layout_height="60px"
android:gravity="center">
</Button>
</TableRow>
<TableRow>
<TextView
android:text="Days:"
android:gravity="center"
android:padding="3dip" />
</TableRow>
<TableRow>
<Button
android:text="Monday"
android:id="@+id/button_monday"
android:layout_height="60px"
android:gravity="center">
</Button>
<TextView
android:text="Textview"
android:gravity="left"
android:padding="3dip"
android:id="@+id/mondayView" />
</TableRow>
<TableRow>
<Button
android:text="Tuesday"
android:id="@+id/button_tuesday"
android:layout_height="60px"
android:gravity="center">
</Button>
<TextView
android:text="Textview"
android:gravity="left"
android:padding="3dip"
android:id="@+id/tuesdayView" />
</TableRow>
<TableRow>
<Button
android:text="Wednesday"
android:id="@+id/button_wednesday"
android:layout_height="60px"
android:gravity="center">
</Button>
<TextView
android:text="Textview"
android:gravity="left"
android:padding="3dip"
android:id="@+id/wednesdayView" />
</TableRow>
<TableRow>
<Button
android:text="Thursday"
android:id="@+id/button_thursday"
android:layout_height="60px"
android:gravity="center">
</Button>
<TextView
android:text="Textview"
android:gravity="left"
android:padding="3dip"
android:id="@+id/thursdayView" />
</TableRow>
<TableRow>
<Button
android:text="Friday"
android:id="@+id/button_friday"
android:layout_height="60px"
android:gravity="center">
</Button>
<TextView
android:text="Textview"
android:gravity="left"
android:padding="3dip"
android:id="@+id/fridayView" />
</TableRow>
<TableRow>
<Button
android:text="Saturday"
android:id="@+id/button_saturday"
android:layout_height="60px"
android:gravity="center">
</Button>
<TextView
android:text="Textview"
android:gravity="left"
android:padding="3dip"
android:id="@+id/saturdayView" />
</TableRow>
<TableRow>
<Button
android:text="Sunday"
android:id="@+id/button_sunday"
android:layout_height="60px"
android:gravity="center">
</Button>
<TextView
android:text="Textview"
android:gravity="left"
android:padding="3dip"
android:id="@+id/sundayView" />
</TableRow>
</TableLayout>
Turnoff.java and Turnon.java
The Turnoff and turnon classes are triggered by AlarmManager. The main activity of those files are turn on or turn off the sounds of the phone via AudioManager.
package com.prog.sleep;
import java.util.Calendar;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.AudioManager;
public class Turnoff extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AudioManager aManager=(AudioManager)context.getSystemService(Sleep.AUDIO_SERVICE);
Calendar cal = Calendar.getInstance();
int diasetmana=cal.get(Calendar.DAY_OF_WEEK);
SharedPreferences settings_read = context.getSharedPreferences("sleep_prefs", 0);
// reboot tindra el contingut de si s'ha rebotat o no
//System.out.println(work);
//System.out.println(diasetmana);
String dilluns = settings_read.getString("dilluns", "no");
String dimarts = settings_read.getString("dimarts", "no");
String dimecres = settings_read.getString("dimecres", "no");
String dijous = settings_read.getString("dijous", "no");
String divendres = settings_read.getString("divendres", "no");
String dissabte = settings_read.getString("dissabte", "no");
String diumenge = settings_read.getString("diumenge", "no");
//System.out.println(work);
//System.out.println(diasetmana);
if (diasetmana==Calendar.MONDAY && dilluns.equals("yes")) {
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION ,0,0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,0,0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,0,0);
//aManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
if (diasetmana==Calendar.TUESDAY && dimarts.equals("yes")) {
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION ,0,0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,0,0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,0,0);
//aManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
if (diasetmana==Calendar.WEDNESDAY && dimecres.equals("yes")) {
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION ,0,0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,0,0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,0,0);
//aManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
if (diasetmana==Calendar.THURSDAY && dijous.equals("yes")) {
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION ,0,0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,0,0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,0,0);
//aManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
if (diasetmana==Calendar.FRIDAY && divendres.equals("yes")) {
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION ,0,0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,0,0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,0,0);
//aManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
if (diasetmana==Calendar.SATURDAY && dissabte.equals("yes")) {
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION ,0,0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,0,0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,0,0);
//aManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
if (diasetmana==Calendar.SUNDAY && diumenge.equals("yes")) {
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION ,0,0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,0,0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,0,0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,0,0);
//aManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
}
}
package com.prog.sleep;
import java.util.Calendar;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.AudioManager;
public class Turnon extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AudioManager aManager=(AudioManager)context.getSystemService(Sleep.AUDIO_SERVICE);
Calendar cal = Calendar.getInstance();
int diasetmana=cal.get(Calendar.DAY_OF_WEEK);
SharedPreferences settings_read = context.getSharedPreferences("sleep_prefs", 0);
// reboot tindra el contingut de si s'ha rebotat o no
String dilluns = settings_read.getString("dilluns", "no");
String dimarts = settings_read.getString("dimarts", "no");
String dimecres = settings_read.getString("dimecres", "no");
String dijous = settings_read.getString("dijous", "no");
String divendres = settings_read.getString("divendres", "no");
String dissabte = settings_read.getString("dissabte", "no");
String diumenge = settings_read.getString("diumenge", "no");
//System.out.println(work);
//System.out.println(diasetmana);
if (diasetmana==Calendar.MONDAY && dilluns.equals("yes")) {
//aManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,aManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM),0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,aManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION),0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,aManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC),0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,aManager.getStreamMaxVolume(AudioManager.STREAM_ALARM),0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,aManager.getStreamMaxVolume(AudioManager.STREAM_DTMF),0);
}
if (diasetmana==Calendar.TUESDAY && dimarts.equals("yes")) {
//aManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,aManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM),0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,aManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION),0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,aManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC),0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,aManager.getStreamMaxVolume(AudioManager.STREAM_ALARM),0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,aManager.getStreamMaxVolume(AudioManager.STREAM_DTMF),0);
}
if (diasetmana==Calendar.WEDNESDAY && dimecres.equals("yes")) {
//aManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,aManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM),0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,aManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION),0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,aManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC),0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,aManager.getStreamMaxVolume(AudioManager.STREAM_ALARM),0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,aManager.getStreamMaxVolume(AudioManager.STREAM_DTMF),0);
}
if (diasetmana==Calendar.THURSDAY && dijous.equals("yes")) {
//aManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,aManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM),0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,aManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION),0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,aManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC),0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,aManager.getStreamMaxVolume(AudioManager.STREAM_ALARM),0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,aManager.getStreamMaxVolume(AudioManager.STREAM_DTMF),0);
}
if (diasetmana==Calendar.FRIDAY && divendres.equals("yes")) {
//aManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,aManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM),0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,aManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION),0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,aManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC),0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,aManager.getStreamMaxVolume(AudioManager.STREAM_ALARM),0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,aManager.getStreamMaxVolume(AudioManager.STREAM_DTMF),0);
}
if (diasetmana==Calendar.SATURDAY && dissabte.equals("yes")) {
//aManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,aManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM),0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,aManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION),0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,aManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC),0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,aManager.getStreamMaxVolume(AudioManager.STREAM_ALARM),0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,aManager.getStreamMaxVolume(AudioManager.STREAM_DTMF),0);
}
if (diasetmana==Calendar.SUNDAY && diumenge.equals("yes")) {
//aManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
aManager.setStreamVolume(AudioManager.STREAM_SYSTEM,aManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM),0);
aManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,aManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION),0);
aManager.setStreamVolume(AudioManager.STREAM_MUSIC,aManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC),0);
aManager.setStreamVolume(AudioManager.STREAM_ALARM,aManager.getStreamMaxVolume(AudioManager.STREAM_ALARM),0);
aManager.setStreamVolume(AudioManager.STREAM_DTMF,aManager.getStreamMaxVolume(AudioManager.STREAM_DTMF),0);
}
}
}
Reboot.java
The Reboot class is called in case of a ‘reboot event’ and save the state on sharedPreferences.
package com.prog.sleep;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
public class Reboot extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences settings = context.getSharedPreferences("sleep_prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("reboot_string", "si");
// Commit the edits!
editor.commit();
}
}
Sleep.java
Sleep.java is the main class. That class create the Intents, controls all shadredPreferences and files, setup AlarmManager and implements the TimePickerDialog and button listeners.
package com.prog.sleep;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.Dialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
public class Sleep extends Activity {
//Saving awake/sleep time strings
String awake_file = "awake_file";
String sleep_file = "sleep_file";
String dilluns,dimarts,dimecres,dijous,divendres,dissabte,diumenge;
//TextViews from layout
TextView mostra_awake;
TextView mostra_sleep;
TextView dillunsView;
TextView dimartsView;
TextView dimecresView;
TextView dijousView;
TextView divendresView;
TextView dissabteView;
TextView diumengeView;
//Intents for awake/sleep
Intent intent_off;
PendingIntent sender_off;
Intent intent_on;
PendingIntent sender_on;
SharedPreferences settings;
SharedPreferences.Editor editor;
//SharedPreferences settings = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings.edit();
//Pad function to show times correctly
private static String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
//Read awake/sleep file
private String readFile(String FILENAME) {
try {
FileInputStream fin = openFileInput(FILENAME);
InputStreamReader isReader = new InputStreamReader(fin);
char[] buffer = new char[30];
// Fill the buffer with data from file
isReader.read(buffer);
return new String(buffer);
} catch (Exception e) {
//debug
//Log.i("ReadNWrite, readFile()", "Exception e = " + e);
if (FILENAME=="awake_file") return "No awake time available"; else return "No sleep time available";
}
}
private TimePickerDialog.OnTimeSetListener mTimeSetListener_off = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar cal = Calendar.getInstance();
Calendar horaidataactual = Calendar.getInstance();
if (horaidataactual.get(Calendar.HOUR_OF_DAY)>hourOfDay) {
cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.DAY_OF_YEAR,horaidataactual.get(Calendar.DAY_OF_YEAR)+1);
} else {
if (horaidataactual.get(Calendar.HOUR_OF_DAY)==hourOfDay && horaidataactual.get(Calendar.MINUTE)>=minute) {
cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.DAY_OF_YEAR,horaidataactual.get(Calendar.DAY_OF_YEAR)+1);
} else {
cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
}
}
intent_off = new Intent(Sleep.this, Turnoff.class);
sender_off = PendingIntent.getBroadcast(Sleep.this, 0, intent_off, 0);
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
//am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender_off);
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),AlarmManager.INTERVAL_DAY, sender_off);
Toast.makeText(Sleep.this, "Sound will be disabled at "+pad(hourOfDay)+":"+pad(minute), Toast.LENGTH_SHORT).show();
try {
OutputStream os = openFileOutput(sleep_file, MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(os);
osw.write("Sleep time at "+pad(hourOfDay)+":"+pad(minute)+"\n");
osw.close();
} catch (Exception e) {
//Debug
//Log.i("ReadNWrite, fileCreate()", "Exception e = " + e);
}
TextView mostra_sleep = (TextView) findViewById(R.id.sleepview);
mostra_sleep.setText(readFile(sleep_file));
}
};
private TimePickerDialog.OnTimeSetListener mTimeSetListener_on = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar cal = Calendar.getInstance();
Calendar horaidataactual = Calendar.getInstance();
//int hora;
//hora=horaidataactual.get(Calendar.HOUR_OF_DAY);
if (horaidataactual.get(Calendar.HOUR_OF_DAY)>hourOfDay) {
cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.DAY_OF_YEAR,horaidataactual.get(Calendar.DAY_OF_YEAR)+1);
} else {
if (horaidataactual.get(Calendar.HOUR_OF_DAY)==hourOfDay && horaidataactual.get(Calendar.MINUTE)>=minute) {
cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.DAY_OF_YEAR,horaidataactual.get(Calendar.DAY_OF_YEAR)+1);
} else {
cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
}
}
intent_on = new Intent(Sleep.this, Turnon.class);
sender_on = PendingIntent.getBroadcast(Sleep.this, 0, intent_on, 0);
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
//am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender_off);
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),AlarmManager.INTERVAL_DAY, sender_on);
am.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(), sender_on);
Toast.makeText(Sleep.this, "Sound will be enabled at "+pad(hourOfDay)+":"+pad(minute), Toast.LENGTH_SHORT).show();
try {
OutputStream os = openFileOutput(awake_file, MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(os);
osw.write("Awake time at "+pad(hourOfDay)+":"+pad(minute)+"\n");
osw.close();
} catch (Exception e) {
//Debug
//Log.i("ReadNWrite, fileCreate()", "Exception e = " + e);
}
TextView mostra_awake = (TextView) findViewById(R.id.awakeview);
mostra_awake.setText(readFile(awake_file));
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case 1:
// Dialog comes from 'off button'
return new TimePickerDialog(this,mTimeSetListener_off, 0, 0, true);
case 2:
// Dialog comes from 'on button'
return new TimePickerDialog(this,mTimeSetListener_on, 0, 0, true);
}
return null;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
settings = getSharedPreferences("sleep_prefs", 0);
editor = settings.edit();
mostra_awake = (TextView) findViewById(R.id.awakeview);
mostra_sleep = (TextView) findViewById(R.id.sleepview);
dillunsView = (TextView) findViewById(R.id.mondayView);
dimartsView = (TextView) findViewById(R.id.tuesdayView);
dimecresView = (TextView) findViewById(R.id.wednesdayView);
dijousView = (TextView) findViewById(R.id.thursdayView);
divendresView = (TextView) findViewById(R.id.fridayView);
dissabteView = (TextView) findViewById(R.id.saturdayView);
diumengeView = (TextView) findViewById(R.id.sundayView);
final Button button_off = (Button) findViewById(R.id.button_apagar);
final Button button_on = (Button) findViewById(R.id.button_encender);
final Button button_reset = (Button) findViewById(R.id.removealarms);
final Button button_dilluns = (Button) findViewById(R.id.button_monday);
final Button button_dimarts = (Button) findViewById(R.id.button_tuesday);
final Button button_dimecres = (Button) findViewById(R.id.button_wednesday);
final Button button_dijous = (Button) findViewById(R.id.button_thursday);
final Button button_divendres = (Button) findViewById(R.id.button_friday);
final Button button_dissabte = (Button) findViewById(R.id.button_saturday);
final Button button_diumenge = (Button) findViewById(R.id.button_sunday);
//final RadioButton radio_all = (RadioButton) findViewById(R.id.radio_all);
//final RadioButton radio_work = (RadioButton) findViewById(R.id.radio_work);
//radio_all.setOnClickListener(radio_listener_all);
//radio_work.setOnClickListener(radio_listener_work);
//SharedPreferences settings_read = getSharedPreferences("sleep_prefs", 0);
// reboot tindra el contingut de si s'ha rebotat o no
String reboot = settings.getString("reboot_string", "si");
if (reboot=="no") {
// en el cas que no s'hagi rebotat el sistema desde l'ultima execució
mostra_awake.setText(readFile(awake_file));
mostra_sleep.setText(readFile(sleep_file));
} else {
// en el cas que s'hagi rebotat el sistema desde l'ultima execució
deleteFile ("sleep_file");
deleteFile ("awake_file");
mostra_awake.setText("No awake time available");
mostra_sleep.setText("No sleep time available");
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings.edit();
editor.putString("reboot_string","no");
editor.putString("dilluns","no");
editor.putString("dimarts","no");
editor.putString("dimecres","no");
editor.putString("dijous","no");
editor.putString("divendres","no");
editor.putString("dissabte","no");
editor.putString("diumenge","no");
// Commit the edits!
editor.commit();
}
dilluns = settings.getString("dilluns", "no");
dimarts = settings.getString("dimarts", "no");
dimecres = settings.getString("dimecres", "no");
dijous = settings.getString("dijous", "no");
divendres = settings.getString("divendres", "no");
dissabte = settings.getString("dissabte", "no");
diumenge = settings.getString("diumenge", "no");
dillunsView.setText(dilluns);
dimartsView.setText(dimarts);
dimecresView.setText(dimecres);
dijousView.setText(dijous);
divendresView.setText(divendres);
dissabteView.setText(dissabte);
diumengeView.setText(diumenge);
button_dilluns.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dilluns.equals("no")) {
//
editor.putString("dilluns","yes");
editor.commit();
dilluns="yes";
dillunsView.setText(dilluns);
} else {
//SharedPreferences settings = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("dilluns","no");
editor.commit();
dilluns="no";
dillunsView.setText(dilluns);
}
}
});
button_dimarts.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dimarts.equals("no")) {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("dimarts","yes");
editor.commit();
dimarts="yes";
dimartsView.setText(dimarts);
} else {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("dimarts","no");
editor.commit();
dimarts="no";
dimartsView.setText(dimarts);
}
}
});
button_dimecres.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dimecres.equals("no")) {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("dimecres","yes");
editor.commit();
dimecres="yes";
dimecresView.setText(dimecres);
} else {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("dimecres","no");
editor.commit();
dimecres="no";
dimecresView.setText(dimecres);
}
}
});
button_dijous.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dijous.equals("no")) {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("dijous","yes");
editor.commit();
dijous="yes";
dijousView.setText(dijous);
} else {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("dijous","no");
editor.commit();
dijous="no";
dijousView.setText(dijous);
}
}
});
button_divendres.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (divendres.equals("no")) {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("divendres","yes");
editor.commit();
divendres="yes";
divendresView.setText(divendres);
} else {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("divendres","no");
editor.commit();
divendres="no";
divendresView.setText(divendres);
}
}
});
button_dissabte.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (dissabte.equals("no")) {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("dissabte","yes");
editor.commit();
dissabte="yes";
dissabteView.setText(dissabte);
} else {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("dissabte","no");
editor.commit();
dissabte="no";
dissabteView.setText(dissabte);
}
}
});
button_diumenge.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (diumenge.equals("no")) {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("diumenge","yes");
editor.commit();
diumenge="yes";
diumengeView.setText(diumenge);
} else {
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("diumenge","no");
editor.commit();
diumenge="no";
diumengeView.setText(diumenge);
}
}
});
button_off.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Open TimePicker for sound disable
showDialog(1);
}
});
button_on.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Open TimePicker for sound enable
showDialog(2);
}
});
button_reset.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// borra les alarmes
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.cancel(sender_off);
am.cancel(sender_on);
// borra els arxius
deleteFile ("sleep_file");
deleteFile ("awake_file");
mostra_awake.setText("No awake time available");
mostra_sleep.setText("No sleep time available");
//SharedPreferences settings_write = getSharedPreferences("sleep_prefs", 0);
//SharedPreferences.Editor editor = settings_write.edit();
editor.putString("reboot_string","no");
// Commit the edits!
editor.commit();
}
});
}
}