diff --git a/SweetDreamsLite/.classpath b/SweetDreamsLite/.classpath deleted file mode 100644 index 207072c..0000000 --- a/SweetDreamsLite/.classpath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/SweetDreamsLite/.project b/SweetDreamsLite/.project deleted file mode 100644 index c74788a..0000000 --- a/SweetDreamsLite/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - SweetSoundsLite - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/SweetDreamsLite/AndroidManifest.xml b/SweetDreamsLite/AndroidManifest.xml deleted file mode 100644 index e73c040..0000000 --- a/SweetDreamsLite/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SweetDreamsLite/ChangeLog b/SweetDreamsLite/ChangeLog deleted file mode 100644 index e69de29..0000000 diff --git a/SweetDreamsLite/default.properties b/SweetDreamsLite/default.properties deleted file mode 100644 index 0b9250e..0000000 --- a/SweetDreamsLite/default.properties +++ /dev/null @@ -1,11 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "build.properties", and override values to adapt the script to your -# project structure. - -# Project target. -target=android-8 diff --git a/SweetDreamsLite/libs/admob-sdk-android.jar b/SweetDreamsLite/libs/admob-sdk-android.jar deleted file mode 100644 index e186671..0000000 Binary files a/SweetDreamsLite/libs/admob-sdk-android.jar and /dev/null differ diff --git a/SweetDreamsLite/res/drawable/pasusenormal.png b/SweetDreamsLite/res/drawable/pasusenormal.png deleted file mode 100644 index 0d9d870..0000000 Binary files a/SweetDreamsLite/res/drawable/pasusenormal.png and /dev/null differ diff --git a/SweetDreamsLite/res/drawable/pause_button.xml b/SweetDreamsLite/res/drawable/pause_button.xml deleted file mode 100644 index 5e2bb38..0000000 --- a/SweetDreamsLite/res/drawable/pause_button.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/SweetDreamsLite/res/drawable/pausedisabled.png b/SweetDreamsLite/res/drawable/pausedisabled.png deleted file mode 100644 index 93b493f..0000000 Binary files a/SweetDreamsLite/res/drawable/pausedisabled.png and /dev/null differ diff --git a/SweetDreamsLite/res/drawable/pausehot.png b/SweetDreamsLite/res/drawable/pausehot.png deleted file mode 100644 index b7f277e..0000000 Binary files a/SweetDreamsLite/res/drawable/pausehot.png and /dev/null differ diff --git a/SweetDreamsLite/res/drawable/pausenormalred.png b/SweetDreamsLite/res/drawable/pausenormalred.png deleted file mode 100644 index 4c9fe16..0000000 Binary files a/SweetDreamsLite/res/drawable/pausenormalred.png and /dev/null differ diff --git a/SweetDreamsLite/res/drawable/pausepressed.png b/SweetDreamsLite/res/drawable/pausepressed.png deleted file mode 100644 index 515ae97..0000000 Binary files a/SweetDreamsLite/res/drawable/pausepressed.png and /dev/null differ diff --git a/SweetDreamsLite/res/drawable/play_button.xml b/SweetDreamsLite/res/drawable/play_button.xml deleted file mode 100644 index db6e291..0000000 --- a/SweetDreamsLite/res/drawable/play_button.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/SweetDreamsLite/res/drawable/playdisabled.png b/SweetDreamsLite/res/drawable/playdisabled.png deleted file mode 100644 index ea21cda..0000000 Binary files a/SweetDreamsLite/res/drawable/playdisabled.png and /dev/null differ diff --git a/SweetDreamsLite/res/drawable/playhot.png b/SweetDreamsLite/res/drawable/playhot.png deleted file mode 100644 index bb665c8..0000000 Binary files a/SweetDreamsLite/res/drawable/playhot.png and /dev/null differ diff --git a/SweetDreamsLite/res/drawable/playnormal.png b/SweetDreamsLite/res/drawable/playnormal.png deleted file mode 100644 index 8249cd9..0000000 Binary files a/SweetDreamsLite/res/drawable/playnormal.png and /dev/null differ diff --git a/SweetDreamsLite/res/drawable/playpressed.png b/SweetDreamsLite/res/drawable/playpressed.png deleted file mode 100644 index 93aca27..0000000 Binary files a/SweetDreamsLite/res/drawable/playpressed.png and /dev/null differ diff --git a/SweetDreamsLite/res/layout/main.xml b/SweetDreamsLite/res/layout/main.xml deleted file mode 100644 index 291bef8..0000000 --- a/SweetDreamsLite/res/layout/main.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/SweetDreamsLite/res/raw/ac.mp3 b/SweetDreamsLite/res/raw/ac.mp3 deleted file mode 100644 index 9f54d88..0000000 Binary files a/SweetDreamsLite/res/raw/ac.mp3 and /dev/null differ diff --git a/SweetDreamsLite/res/raw/beach.mp3 b/SweetDreamsLite/res/raw/beach.mp3 deleted file mode 100644 index ef5a85a..0000000 Binary files a/SweetDreamsLite/res/raw/beach.mp3 and /dev/null differ diff --git a/SweetDreamsLite/res/raw/crickets.mp3 b/SweetDreamsLite/res/raw/crickets.mp3 deleted file mode 100644 index 8facaca..0000000 Binary files a/SweetDreamsLite/res/raw/crickets.mp3 and /dev/null differ diff --git a/SweetDreamsLite/res/raw/falls.mp3 b/SweetDreamsLite/res/raw/falls.mp3 deleted file mode 100644 index acc0cb8..0000000 Binary files a/SweetDreamsLite/res/raw/falls.mp3 and /dev/null differ diff --git a/SweetDreamsLite/res/raw/river.mp3 b/SweetDreamsLite/res/raw/river.mp3 deleted file mode 100644 index dd6eb50..0000000 Binary files a/SweetDreamsLite/res/raw/river.mp3 and /dev/null differ diff --git a/SweetDreamsLite/res/values/attrs.xml b/SweetDreamsLite/res/values/attrs.xml deleted file mode 100644 index 68a68fc..0000000 --- a/SweetDreamsLite/res/values/attrs.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/SweetDreamsLite/res/values/sounds.xml b/SweetDreamsLite/res/values/sounds.xml deleted file mode 100644 index 65da885..0000000 --- a/SweetDreamsLite/res/values/sounds.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - Rainy River - Beach - Crickets - Water Falls - Air Conditioner - - diff --git a/SweetDreamsLite/res/values/strings.xml b/SweetDreamsLite/res/values/strings.xml deleted file mode 100644 index 572bbd5..0000000 --- a/SweetDreamsLite/res/values/strings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - Hello World, WhiteNoise! - Sweet Sounds - diff --git a/SweetDreamsLite/res/xml/settings.xml b/SweetDreamsLite/res/xml/settings.xml deleted file mode 100644 index 571760e..0000000 --- a/SweetDreamsLite/res/xml/settings.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/PostMortemReportExceptionHandler.java b/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/PostMortemReportExceptionHandler.java deleted file mode 100644 index ea87ba4..0000000 --- a/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/PostMortemReportExceptionHandler.java +++ /dev/null @@ -1,215 +0,0 @@ -/** - * @author Twenty Codes - * @author ricky barrette - */ -package com.TwentyCodes.android.SweetSoundsLite; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.lang.Thread.UncaughtExceptionHandler; -import java.lang.reflect.Field; -import java.text.SimpleDateFormat; -import java.util.Date; - -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.os.Build; - -/** - * dont forget the manifest tag - * - * @author ricky - */ -public class PostMortemReportExceptionHandler implements UncaughtExceptionHandler, Runnable { - public static final String ExceptionReportFilename = "postmortem.trace"; - - private static final String MSG_SUBJECT_TAG = "Exception Report"; //"app title + this tag" = email subject - private static final String MSG_SENDTO = "twentycodes@gmail.com"; //email will be sent to this account - //the following may be something you wish to consider localizing - private static final String MSG_BODY = "Just click send to help make this application better. "+ - "No personal information is being sent (you can check by reading the rest of the email)."; - - private Thread.UncaughtExceptionHandler mDefaultUEH; - private Activity mApp = null; - - public PostMortemReportExceptionHandler(Activity aApp) { - mDefaultUEH = Thread.getDefaultUncaughtExceptionHandler(); - mApp = aApp; - } - - public void uncaughtException(Thread t, Throwable e) { - submit(e); - //do not forget to pass this exception through up the chain - mDefaultUEH.uncaughtException(t,e); - } - - public String getDebugReport(Throwable aException) { - -// NumberFormat theFormatter = new DecimalFormat("#0."); - //stack trace - StackTraceElement[] theStackTrace = aException.getStackTrace(); - - StringBuffer report = new StringBuffer(); - - report.append("--------- Application ---------\n\n"); - - report.append(mApp.getPackageName()+" generated the following exception:\n\n"); - - report.append(aException.toString() + "\n\n"); - - report.append("-------------------------------\n\n"); - - report.append("--------- Stack trace ---------\n\n"); - for (int i = 0; i < theStackTrace.length; i++) { - report.append(" " + theStackTrace[i].toString() + "\n"); - } - report.append("-------------------------------\n\n"); - - //app environment - PackageManager pm = mApp.getPackageManager(); - PackageInfo pi; - try { - pi = pm.getPackageInfo(mApp.getPackageName(), 0); - } catch (NameNotFoundException eNnf) { - //doubt this will ever run since we want info about our own package - pi = new PackageInfo(); - pi.versionName = "unknown"; - pi.versionCode = 69; - } - - Date theDate = new Date(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd_HH.mm.ss_zzz"); - report.append("-------- Environment --------\n"); - report.append("Time\t="+sdf.format(theDate)+"\n"); - report.append("Device\t="+Build.FINGERPRINT+"\n"); - try { - Field theMfrField = Build.class.getField("MANUFACTURER"); - report.append("Make\t="+theMfrField.get(null)+"\n"); - } catch (SecurityException e) { - } catch (NoSuchFieldException e) { - } catch (IllegalArgumentException e) { - } catch (IllegalAccessException e) { - } - report.append("Device: " + Build.DEVICE + "\n"); - report.append("Brand: " + Build.BRAND + "\n"); - report.append("Model: "+Build.MODEL+"\n"); - report.append("Product: "+Build.PRODUCT+"\n"); - report.append("App:\t "+mApp.getPackageName()+", version "+pi.versionName+" (build "+pi.versionCode+")\n"); - report.append("Locale: "+mApp.getResources().getConfiguration().locale.getDisplayName()+"\n"); - report.append("-----------------------------\n\n"); - - report.append("--------- Firmware ---------\n\n"); - report.append("SDK: " + Build.VERSION.SDK + "\n"); - report.append("Release: " + Build.VERSION.RELEASE + "\n"); - report.append("Incremental: " + Build.VERSION.INCREMENTAL + "\n"); - report.append("Build Id: " + Build.ID + "\n"); - report.append("-------------------------------\n\n"); - - // If the exception was thrown in a background thread inside - // AsyncTask, then the actual exception can be found with getCause - report.append("--------- Cause ---------\n\n"); - Throwable cause = aException.getCause(); - if (cause != null) { - report.append(cause.toString() + "\n\n"); - theStackTrace = cause.getStackTrace(); - for (int i = 0; i < theStackTrace.length; i++) { - report.append(" " + theStackTrace[i].toString() + "\n"); - } - } - report.append("-------------------------------\n\n"); - - report.append("--------- Complete Logcat ---------\n\n"); - report.append(getLog().toString()); - report.append("-------------------------------\n\n"); - - report.append("END REPORT"); - - return report.toString(); - } - - protected void saveDebugReport(String aReport) { - //save report to file - try { - FileOutputStream theFile = mApp.openFileOutput(ExceptionReportFilename, Context.MODE_PRIVATE); - theFile.write(aReport.getBytes()); - theFile.close(); - } catch(IOException ioe) { - //error during error report needs to be ignored, do not wish to start infinite loop - } - } - - public void sendDebugReportToAuthor() { - String theLine = ""; - StringBuffer theTrace = new StringBuffer(); - try { - BufferedReader theReader = new BufferedReader( - new InputStreamReader(mApp.openFileInput(ExceptionReportFilename))); - while ((theLine = theReader.readLine())!=null) { - theTrace.append(theLine+"\n"); - } - if (sendDebugReportToAuthor(theTrace.toString())) { - mApp.deleteFile(ExceptionReportFilename); - } - } catch (FileNotFoundException eFnf) { - // nothing to do - } catch(IOException eIo) { - // not going to report - } - } - - public Boolean sendDebugReportToAuthor(String aReport) { - if (aReport!=null) { - Intent theIntent = new Intent(Intent.ACTION_SEND); - String theSubject = mApp.getTitle()+" "+MSG_SUBJECT_TAG; - String theBody = "\n"+MSG_BODY+"\n\n"+aReport+"\n\n"; - theIntent.putExtra(Intent.EXTRA_EMAIL,new String[] {MSG_SENDTO}); - theIntent.putExtra(Intent.EXTRA_TEXT, theBody); - theIntent.putExtra(Intent.EXTRA_SUBJECT, theSubject); - theIntent.setType("message/rfc822"); - Boolean hasSendRecipients = (mApp.getPackageManager().queryIntentActivities(theIntent,0).size()>0); - if (hasSendRecipients) { - mApp.startActivity(theIntent); - return true; - } else { - return false; - } - } else { - return true; - } - } - - public void run() { - sendDebugReportToAuthor(); - } - - public void submit(Throwable e) { - String theErrReport = getDebugReport(e); - saveDebugReport(theErrReport); - //try to send file contents via email (need to do so via the UI thread) - mApp.runOnUiThread(this); - } - - protected StringBuilder getLog(){ - final StringBuilder log = new StringBuilder(); - try{ - Process process = Runtime.getRuntime().exec("logcat -d"); - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); - - String line; - while ((line = bufferedReader.readLine()) != null){ - log.append(line); - log.append("\n"); - } - } - catch (IOException e){ - } - return log; - } -} \ No newline at end of file diff --git a/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/Settings.java b/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/Settings.java deleted file mode 100644 index e7adcf8..0000000 --- a/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/Settings.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * @author Twenty Codes - * @author ricky barrette - */ -package com.TwentyCodes.android.SweetSoundsLite; - - -import android.content.SharedPreferences; -import android.os.Bundle; -import android.preference.Preference; -import android.preference.PreferenceActivity; -import android.preference.Preference.OnPreferenceChangeListener; - -/** - * this is a settings activity for WhiteNoise. it handles user changeable settings and saves them - * @author ricky barrette - */ -public class Settings extends PreferenceActivity implements OnPreferenceChangeListener { - - //shared_prefs file name - protected static final String SETTINGS = "settings"; - - //the following strings are for sound track selection - protected static final String SOUNDS = "sounds"; - protected static final String SOUND_RIVER = "Rainy River"; - protected static final String SOUND_BEACH = "Beach"; - protected static final String SOUND_CRICKETS = "Crickets"; - protected static final String SOUND_FALLS = "Water Falls"; - protected static final String SOUND_AC = "Air Conditioner"; - - //the following strings are for saving volume level from the audiomanager.STREAM_MUSIC so we can restore them back when the app quits - protected static final String MUSIC_VOLUME = "music_volume"; - - //the following strings are for timer preference - protected static final String TIMER_ENABLED = "timer_enabled"; - protected static final String TIMER_LENGTH = "timer_length"; - protected static final String TIMER_EXIT_ON_FINISH = "timer_exit_on_finish"; - - /** - * Called when the activity is first created. - */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - //set shared_prefs name - getPreferenceManager().setSharedPreferencesName(SETTINGS); - - //load preferences xml - this.addPreferencesFromResource(R.xml.settings); - - //get shared_prefs - SharedPreferences settings = getPreferenceManager().getSharedPreferences(); - - /* - * Initialize preference sound - * set OnPreferenceChangeListener - * and set summary to current settings - */ - Preference pSounds = findPreference(SOUNDS); - pSounds.setOnPreferenceChangeListener(this); - pSounds.setSummary(settings.getString(SOUNDS, SOUND_RIVER)); - - /* - * Initialize preference timerLength - * set OnPreferenceChangeListener - * and set summary to current settings - */ - Preference timerLength = findPreference(TIMER_LENGTH); - timerLength.setOnPreferenceChangeListener(this); - try { - timerLength.setSummary(settings.getInt(TIMER_LENGTH, 5)); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * called when a preference is changed - * @param preference - * @param newValue - * @return - * @author ricky barrette - */ - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - preference.setSummary(newValue.toString()); - return true; - } -} \ No newline at end of file diff --git a/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/SweetSounds.java b/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/SweetSounds.java deleted file mode 100644 index a050276..0000000 --- a/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/SweetSounds.java +++ /dev/null @@ -1,413 +0,0 @@ -/** - * @author Twenty Codes - * @author ricky barrette - */ -package com.TwentyCodes.android.SweetSoundsLite; - -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.media.AudioManager; -import android.media.MediaPlayer; -import android.os.Bundle; -import android.os.CountDownTimer; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.ImageButton; -import android.widget.SeekBar; -import android.widget.TextView; -import android.widget.SeekBar.OnSeekBarChangeListener; - -/** - * this class is responsible for setting up the ui and handling ui events - * @author ricky - */ -public class SweetSounds extends Activity implements OnClickListener, OnSeekBarChangeListener{ - - private boolean isPlaying; - private ImageButton play_pause; - private AudioManager mAudioManager; - private final int STREAM = AudioManager.STREAM_MUSIC; - protected static MediaPlayer mp; - private PostMortemReportExceptionHandler mDamageReport; - private final int SETTINGS = Menu.FIRST; - private final int QUIT = Menu.FIRST +1; - private SharedPreferences settings; - protected static final String TAG = "WhiteNoise"; - private Timer timer; - protected static TextView timeLeft; - - /** - * adjusts the provided Stream volume to the provided level - * @param stream - * @param level - * @author ricky barrette - */ - private void adjustVolume(int stream, int level) { - - /* - * if the seek bar is set to a value that is higher than what the the stream value is set for - * then subtract the seek bar's value from the current volume of the stream, and then - * raise the stream by that many times - */ - if (level > mAudioManager.getStreamVolume(stream)) { - int adjust = level - mAudioManager.getStreamVolume(stream); - for (int i = 0; i < adjust; i++) { - mAudioManager.adjustSuggestedStreamVolume(AudioManager.ADJUST_RAISE, stream, AudioManager.FLAG_VIBRATE); - } - } - - /* - * if the seek bar is set to a value that is lower than what the the stream value is set for - * then subtract the current volume of the stream from the seek bar's value, and then - * lower the stream by that many times - */ - if (level < mAudioManager.getStreamVolume(stream)) { - int adjust = mAudioManager.getStreamVolume(stream) - level; - for (int i = 0; i < adjust; i++) { - mAudioManager.adjustSuggestedStreamVolume(AudioManager.ADJUST_LOWER, stream, AudioManager.FLAG_VIBRATE); - } - } - } - - /** - * loads the sound from shared_prefs that the user wants, and set the mediaplayer to loop - * loads river sound track by default. - * - * @author ricky barrette - */ - private void loadSound(){ - Log.i(TAG,"loadSound()"); - try { - mp.reset(); - } catch (Exception e) { - e.printStackTrace(); - } - String sound = settings.getString("sounds", Settings.SOUND_RIVER); - Log.v(TAG,"sound = "+ sound); - if (sound != null){ - if (sound.equals(Settings.SOUND_BEACH)){ - mp = MediaPlayer.create(this, R.raw.beach); - mp.setLooping(true); - } - if (sound.equals(Settings.SOUND_AC)){ - mp = MediaPlayer.create(this, R.raw.ac); - mp.setLooping(true); - } - if (sound.equals(Settings.SOUND_CRICKETS)){ - mp = MediaPlayer.create(this, R.raw.crickets); - mp.setLooping(true); - } - if (sound.equals(Settings.SOUND_FALLS)){ - mp = MediaPlayer.create(this, R.raw.falls); - mp.setLooping(true); - } - if (sound.equals(Settings.SOUND_RIVER)){ - mp = MediaPlayer.create(this, R.raw.river); - mp.setLooping(true); - } - } - } - - /** - * called when the user clicks on a view that has been registered with this onClickListener - * @author ricky barrette - */ - @Override - public void onClick(View v) { - /* - * if the sound track is no playing then - * change the button background from a play symbol to a pause symbol, set isPlaying to true, load the user preferred sound track, and play it - * else - * change the button background from a pause symbol to a play symbol, set isPlaying to false, and stop playing the sound track - */ - if (!isPlaying){ - play_pause.setBackgroundDrawable(getResources().getDrawable(R.drawable.pause_button)); - isPlaying = true; - loadSound(); - mp.start(); - if (settings.getBoolean(Settings.TIMER_ENABLED, false)){ - Log.v(TAG,"Starting timer"); - long time = settings.getInt("timer_length_hour", 0) * 3600000; - time = time + (settings.getInt("timer_length_minute", 5) * 60000); - Log.v(TAG,"time = " + time); - timer = new Timer(time); - timer.start(); - } - } else { - stopPlaying(); - } - } - - /** - * called when the activity is first created - * (non-Javadoc) - * @see android.app.Activity#onCreate(android.os.Bundle) - * @param savedInstanceState - * @author ricky barrette - */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.main); - Log.i(TAG,"onCreate()"); - - // setup crash report handler - mDamageReport = new PostMortemReportExceptionHandler(this); - mDamageReport.run(); - Thread.setDefaultUncaughtExceptionHandler(mDamageReport); - - //initialize the play_pause button and set onClickListener - play_pause = (ImageButton) findViewById(R.id.play_pause_button); - play_pause.setOnClickListener(this); - - //initialize audio manager so we can control stream volumes - mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); - - //initialize the volume seekbar and set - SeekBar sbVolume = (SeekBar) findViewById(R.id.volume); - sbVolume.setOnSeekBarChangeListener(this); - sbVolume.setMax(mAudioManager.getStreamMaxVolume(STREAM)); - sbVolume.setProgress(mAudioManager.getStreamVolume(STREAM)); - - //load shared_prefs - settings = getSharedPreferences(Settings.SETTINGS, 0); - - loadSound(); - - saveStreamVolume(STREAM); - } - - /** - * creates a menu - * @author ricky barrette 3-30-2010 - */ - @Override - public boolean onCreateOptionsMenu (Menu menu) { - menu.add(1, SETTINGS, 0, "Options"); - menu.add(1, QUIT, 0, "Quit"); - return true; - } - - /** - * here we set the Stream volume back to what ever it was when the activity started - * (non-Javadoc) - * @see android.app.Activity#onDestroy() - * @author ricky barrette - */ - @Override - public void onDestroy(){ - adjustVolume(STREAM,settings.getInt(Settings.MUSIC_VOLUME, 0)); - super.onDestroy(); - } - - /** - * handles menu selection - * @author ricky barrette 3-30-2010 - */ - @Override - public boolean onOptionsItemSelected (MenuItem item) { - switch (item.getItemId()){ - case SETTINGS: - Intent intent = new Intent().setClass(this, Settings.class); - startActivity(intent); - stopPlaying(); - return true; - - case QUIT: - stopPlaying(); - finish(); - return true; - } - return false; - } - - @Override - public void onPause(){ - super.onPause(); - } - - /** - * called when the seekbar progress is changed - * @param seekbar that was changed - * @param progress of the seekbar - * @param fromUser - */ - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - /* - * if the change was cause by the user then - * set the output stream the the desired level - */ - if(fromUser){ - adjustVolume(STREAM, progress); - } - } - - @Override - public void onRestart(){ - super.onRestart(); - } - - /** - * we load the track title textview in onResume so it will update every time the activity loads - * (non-Javadoc) - * @see android.app.Activity#onResume() - * @author ricky barrette - */ - @Override - public void onResume(){ - super.onResume(); - TextView trackTitle = (TextView) findViewById(R.id.track_title); - trackTitle.setText(settings.getString(Settings.SOUNDS,"Rainy River")); - } - - @Override - public void onStart(){ - super.onStart(); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - /* - * NOT YET IMPLEMENTED - * needed for OnSeekBarChangeListener - */ - } - - /** - * we stop the music from playing and release the media player - * (non-Javadoc) - * @see android.app.Activity#onStop() - * @author ricky barrette - */ - @Override - public void onStop(){ - stopPlaying(); - try { - mp.release(); - } catch (Exception e) { - e.printStackTrace(); - } - super.onStop(); - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - /* - * NOT YET IMPLEMENTED - * needed for OnSeekBarChangeListener - */ - } - - /** - * saves the current volume levels for the supplied audio stream - * @param stream to be saved - * @return true id save was successful - * @author ricky barrette - */ - private boolean saveStreamVolume(int stream){ - Editor edit = settings.edit(); - edit.putInt(Settings.MUSIC_VOLUME, mAudioManager.getStreamVolume(stream)); - return edit.commit(); - } - - /** - * stops music from playing, sets the pay_pause button background to a play symbol, and if the time is enabled, cancels the timer - * - * @author ricky barrette - */ - private void stopPlaying(){ - play_pause.setBackgroundDrawable(getResources().getDrawable(R.drawable.play_button)); - isPlaying = false; - try { - mp.stop(); - } catch (IllegalStateException e) { - e.printStackTrace(); - Log.e(TAG,"failed to stop media player"); - } - if (timer != null) { - timer.cancel(); - timer = null; - timeLeft.setText(""); - } - } - - /** - * this internal class will handle timing functions such as a timer that stops play back of a sound track & updates timeLeft textview every second - * @author ricky barrette - */ - class Timer extends CountDownTimer { - - /** - * creates a new count down timer that stops play back of a sound track after specified time, and - * updates timeLeft textview every second - * @param millisInFuture - */ - public Timer(long millisInFuture) { - super(millisInFuture, 1000l); - Log.i(TAG,"Timer()"); - Log.v(TAG,"millisInFuture = "+ millisInFuture); - timeLeft = (TextView) findViewById(R.id.time_left); - int hours = (int) (millisInFuture / 3600000); - millisInFuture = millisInFuture - (hours * 3600000); - int minutes = (int) ( millisInFuture / 60000); - int seconds = (int) (millisInFuture % 60000); - seconds = seconds / 1000; - timeLeft.setText(hours +" : "+ padTime(minutes) +" : "+ padTime(seconds)); - } - - /** - * stops the sound track being played by the media player - * (non-Javadoc) - * @see android.os.CountDownTimer#onFinish() - * @author ricky barrette - */ - @Override - public void onFinish() { - Log.i(TAG,"onFinish()"); - timeLeft.setText(""); - stopPlaying(); - //if the user enables exit on finish, then kill the application - if(settings.getBoolean(Settings.TIMER_EXIT_ON_FINISH, false)){ - Log.v(TAG,"exit on finish enabled, calling finish()"); - finish(); - } - } - - /** - * updates the timeLeft textView to display the current time left till sound stops - * @see android.os.CountDownTimer#onTick(long) - * @param millisUntilFinished - * @author ricky barrette - */ - @Override - public void onTick(long millisUntilFinished) { - Log.i(TAG,"onTick()"); - int hours = (int) (millisUntilFinished / 3600000); - millisUntilFinished = millisUntilFinished - (hours * 3600000); - int minutes = (int) ( millisUntilFinished / 60000); - int seconds = (int) (millisUntilFinished % 60000); - seconds = seconds / 1000; - timeLeft.setText(hours +" : "+ padTime(minutes) +" : "+ padTime(seconds)); - } - - /** - * convince method for formating the seconds string - * @param seconds - * @return formated string - * @author ricky barrette - */ - private String padTime(int seconds){ - if (seconds <= 9) - return "0"+ seconds; - return ""+ seconds; - } - - } -} \ No newline at end of file diff --git a/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/TimePickerPreference.java b/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/TimePickerPreference.java deleted file mode 100644 index 38cd0a2..0000000 --- a/SweetDreamsLite/src/com/TwentyCodes/android/SweetSoundsLite/TimePickerPreference.java +++ /dev/null @@ -1,142 +0,0 @@ -/** - * @author Twenty Codes - * @author ricky barrette - */ -package com.TwentyCodes.android.SweetSoundsLite; - -import android.content.Context; -import android.content.SharedPreferences; -import android.graphics.Typeface; -import android.preference.Preference; -import android.util.AttributeSet; -import android.util.Log; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.TextView; -import android.widget.TimePicker; -import android.widget.TimePicker.OnTimeChangedListener; - -/** - * creates a time picker preference that saves the hour and minutes preferred as getKey()+"_hour" and getKey()+"_minute" - * NOTE: it might be better to save the combined hour and minutes saves as minutes (1 hour + 30 minutes would be saved as 90 minutes) - * @author ricky barrette - */ -public class TimePickerPreference extends Preference implements OnTimeChangedListener{ - -// private TimePicker timePicker; - private final String TAG = "TimePickerPreference"; - private SharedPreferences settings; - - /** - * creates a time picker preference that saves the hour and minutes preferred as getKey()+"_hour" and getKey()+"_minute" - * NOTE: it might be better to save the combined hour and minutes saves as minutes (1 hour + 30 minutes would be saved as 90 minutes) - * @param context - */ - public TimePickerPreference(Context context) { - super(context); -// timePicker = new TimePicker(getContext()); - } - - /** - * creates a time picker preference that saves the hour and minutes preferred as getKey()+"_hour" and getKey()+"_minute" - * NOTE: it might be better to save the combined hour and minutes saves as minutes (1 hour + 30 minutes would be saved as 90 minutes) - * @param context - * @param attrs - */ - public TimePickerPreference(Context context, AttributeSet attrs) { - super(context, attrs); -// timePicker = new TimePicker(getContext()); - } - - /** - * creates a time picker preference that saves the hour and minutes preferred as getKey()+"_hour" and getKey()+"_minute" - * NOTE: it might be better to save the combined hour and minutes saves as minutes (1 hour + 30 minutes would be saved as 90 minutes) - * @param context - * @param attrs - * @param defStyle - */ - public TimePickerPreference(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); -// timePicker = new TimePicker(getContext()); - } - - /** - * saves the current time selected by the user into the shared_prefs keys of getKey()+"_hour" and getKey()+"_minute" - * NOTE: it might be better to save the combined hour and minutes saves as minutes (1 hour + 30 minutes would be saved as 90 minutes) - * (non-Javadoc) - * @see android.widget.TimePicker.OnTimeChangedListener#onTimeChanged(android.widget.TimePicker, int, int) - * @param view - * @param hourOfDay - * @param minute - * @author ricky barrette - */ - @Override - public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { - Log.i(TAG,"onTimeChanged"); - SharedPreferences.Editor editor = getEditor(); - editor.putInt(getKey()+"_hour", hourOfDay); - editor.putInt(getKey()+"_minute", minute); - editor.commit(); - } - - /** - * creates a linear layout the contains only a textview (for title) and a time picker dialog for user input. - * (non-Javadoc) - * @see android.preference.Preference#onCreateView(android.view.ViewGroup) - * @param parent - * @return - * @author ricky barrette - */ - @Override - protected View onCreateView(ViewGroup parent){ - Log.i(TAG, "onCreateView"); - - /* - * create a vertical linear layout that width and height that wraps content - */ - LinearLayout layout = new LinearLayout(getContext()); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); - params.gravity = Gravity.CENTER; - layout.setPadding(15, 5, 10, 5); - layout.setOrientation(LinearLayout.VERTICAL); - - layout.removeAllViews(); - - /* - * create a textview that will be used to display the title provided in xml - * and add it to the lay out - */ - TextView title = new TextView(getContext()); - title.setText(getTitle()); - title.setTextSize(18); - title.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD); - title.setGravity(Gravity.LEFT); - title.setLayoutParams(params); - - /* - * add the time picker to the layout - * set the time picker to be 24 hour style - * load saved time preference from shared_prefs, then set - * onTimeChangedListener - */ - TimePicker timePicker = new TimePicker(getContext()); - timePicker.setLayoutParams(params); - timePicker.setIs24HourView(true); - settings = getSharedPreferences(); - timePicker.setCurrentHour(settings.getInt(getKey() + "_hour", 0)); - timePicker.setCurrentMinute(settings.getInt(getKey() + "_minute", 5)); - timePicker.setOnTimeChangedListener(this); - - /* - * add the title and the time picker views to the layout - */ - layout.addView(title); - layout.addView(timePicker); - layout.setId(android.R.id.widget_frame); - - return layout; - } - -}