reorg
This commit is contained in:
8
AutoPlayer/.classpath
Normal file
8
AutoPlayer/.classpath
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" path="gen"/>
|
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||
<classpathentry kind="output" path="bin/classes"/>
|
||||
</classpath>
|
||||
40
AutoPlayer/.project
Normal file
40
AutoPlayer/.project
Normal file
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>AutoPlayer</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
<linkedResources>
|
||||
<link>
|
||||
<name>ExceptionHandlerLib_src</name>
|
||||
<type>2</type>
|
||||
<locationURI>_android_ExceptionHandlerLib_7d68b46a/src</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
</projectDescription>
|
||||
53
AutoPlayer/AndroidManifest.xml
Normal file
53
AutoPlayer/AndroidManifest.xml
Normal file
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.TwentyCodes.android.AutoPlayer"
|
||||
android:versionCode="3"
|
||||
android:versionName="1.0" >
|
||||
|
||||
<uses-sdk android:minSdkVersion="7" />
|
||||
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >
|
||||
</uses-permission>
|
||||
<uses-permission android:name="android.permission.INTERNET" >
|
||||
</uses-permission>
|
||||
|
||||
<application
|
||||
android:icon="@drawable/icon"
|
||||
android:label="@string/app_name" >
|
||||
<activity
|
||||
android:name=".AutoPlayerActivity"
|
||||
android:label="@string/app_name" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name="com.TwentyCodes.android.exception.ExceptionReportActivity" >
|
||||
</activity>
|
||||
|
||||
<receiver android:name="HeadPhoneReceiver" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.HEADSET_PLUG" >
|
||||
</action>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver android:name="BootReceiver" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" >
|
||||
</action>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<service android:name="HeadphoneListenerService" >
|
||||
</service>
|
||||
|
||||
<activity
|
||||
android:name="ConfirmDialog"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation"
|
||||
android:launchMode="singleInstance"
|
||||
android:theme="@android:style/Theme.Dialog" >
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
18
AutoPlayer/assets/exceptionhandler.properties
Normal file
18
AutoPlayer/assets/exceptionhandler.properties
Normal file
@@ -0,0 +1,18 @@
|
||||
# exceptionhandler.properties
|
||||
# This is the default Twenty Codes, LLC Exception Handler properties file
|
||||
#
|
||||
# @author Twenty Codes, LLC
|
||||
# @author ricky barrette
|
||||
|
||||
|
||||
# The following is for using our custom server based exception handler web application
|
||||
# server is the physical web address for your server
|
||||
# file is the path to your filing script
|
||||
# get is the path to your json retrieval script
|
||||
server = http://powers.doesntexist.com:666
|
||||
file = /index.php?post=1
|
||||
#get = /index.php?get=1
|
||||
|
||||
# uncomment the following if you want your application to use email to file reports.
|
||||
# if this is uncommented, email will always be used.
|
||||
#email = twentycodes@gmail.com
|
||||
59
AutoPlayer/gen/com/TwentyCodes/android/AutoPlayer/R.java
Normal file
59
AutoPlayer/gen/com/TwentyCodes/android/AutoPlayer/R.java
Normal file
@@ -0,0 +1,59 @@
|
||||
/* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||
*
|
||||
* This class was automatically generated by the
|
||||
* aapt tool from the resource data it found. It
|
||||
* should not be modified by hand.
|
||||
*/
|
||||
|
||||
package com.TwentyCodes.android.AutoPlayer;
|
||||
|
||||
public final class R {
|
||||
public static final class attr {
|
||||
}
|
||||
public static final class drawable {
|
||||
public static final int icon=0x7f020000;
|
||||
}
|
||||
public static final class id {
|
||||
public static final int about=0x7f05000e;
|
||||
public static final int activty_picker_button=0x7f05000a;
|
||||
public static final int app_icon=0x7f050001;
|
||||
public static final int body=0x7f050002;
|
||||
public static final int confirmCheckBox=0x7f05000d;
|
||||
public static final int description=0x7f050006;
|
||||
public static final int exception_text=0x7f050008;
|
||||
public static final int exception_title=0x7f050007;
|
||||
public static final int linearLayout1=0x7f050000;
|
||||
public static final int music_volume=0x7f05000c;
|
||||
public static final int music_volume_tag=0x7f05000b;
|
||||
public static final int okButton=0x7f050004;
|
||||
public static final int progressBar=0x7f050003;
|
||||
public static final int send=0x7f050005;
|
||||
public static final int toggleButton=0x7f050009;
|
||||
public static final int version=0x7f05000f;
|
||||
}
|
||||
public static final class layout {
|
||||
public static final int confirm_dialog=0x7f030000;
|
||||
public static final int exception_activity=0x7f030001;
|
||||
public static final int exception_list_item=0x7f030002;
|
||||
public static final int list=0x7f030003;
|
||||
public static final int main=0x7f030004;
|
||||
}
|
||||
public static final class string {
|
||||
public static final int about=0x7f04000b;
|
||||
public static final int app_name=0x7f040007;
|
||||
public static final int build=0x7f04000f;
|
||||
public static final int confirm=0x7f04000d;
|
||||
public static final int crash=0x7f040000;
|
||||
public static final int description=0x7f040004;
|
||||
public static final int enable=0x7f04000c;
|
||||
public static final int hello=0x7f040006;
|
||||
public static final int loading=0x7f04000a;
|
||||
public static final int music_volume=0x7f040008;
|
||||
public static final int pick_an_activity=0x7f040009;
|
||||
public static final int send=0x7f040003;
|
||||
public static final int sending=0x7f040002;
|
||||
public static final int sorry=0x7f040001;
|
||||
public static final int start=0x7f04000e;
|
||||
public static final int version=0x7f040005;
|
||||
}
|
||||
}
|
||||
59
AutoPlayer/gen/com/TwentyCodes/android/exception/R.java
Normal file
59
AutoPlayer/gen/com/TwentyCodes/android/exception/R.java
Normal file
@@ -0,0 +1,59 @@
|
||||
/* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||
*
|
||||
* This class was automatically generated by the
|
||||
* aapt tool from the resource data it found. It
|
||||
* should not be modified by hand.
|
||||
*/
|
||||
|
||||
package com.TwentyCodes.android.exception;
|
||||
|
||||
public final class R {
|
||||
public static final class attr {
|
||||
}
|
||||
public static final class drawable {
|
||||
public static final int icon=0x7f020000;
|
||||
}
|
||||
public static final class id {
|
||||
public static final int about=0x7f05000e;
|
||||
public static final int activty_picker_button=0x7f05000a;
|
||||
public static final int app_icon=0x7f050001;
|
||||
public static final int body=0x7f050002;
|
||||
public static final int confirmCheckBox=0x7f05000d;
|
||||
public static final int description=0x7f050006;
|
||||
public static final int exception_text=0x7f050008;
|
||||
public static final int exception_title=0x7f050007;
|
||||
public static final int linearLayout1=0x7f050000;
|
||||
public static final int music_volume=0x7f05000c;
|
||||
public static final int music_volume_tag=0x7f05000b;
|
||||
public static final int okButton=0x7f050004;
|
||||
public static final int progressBar=0x7f050003;
|
||||
public static final int send=0x7f050005;
|
||||
public static final int toggleButton=0x7f050009;
|
||||
public static final int version=0x7f05000f;
|
||||
}
|
||||
public static final class layout {
|
||||
public static final int confirm_dialog=0x7f030000;
|
||||
public static final int exception_activity=0x7f030001;
|
||||
public static final int exception_list_item=0x7f030002;
|
||||
public static final int list=0x7f030003;
|
||||
public static final int main=0x7f030004;
|
||||
}
|
||||
public static final class string {
|
||||
public static final int about=0x7f04000b;
|
||||
public static final int app_name=0x7f040007;
|
||||
public static final int build=0x7f04000f;
|
||||
public static final int confirm=0x7f04000d;
|
||||
public static final int crash=0x7f040000;
|
||||
public static final int description=0x7f040004;
|
||||
public static final int enable=0x7f04000c;
|
||||
public static final int hello=0x7f040006;
|
||||
public static final int loading=0x7f04000a;
|
||||
public static final int music_volume=0x7f040008;
|
||||
public static final int pick_an_activity=0x7f040009;
|
||||
public static final int send=0x7f040003;
|
||||
public static final int sending=0x7f040002;
|
||||
public static final int sorry=0x7f040001;
|
||||
public static final int start=0x7f04000e;
|
||||
public static final int version=0x7f040005;
|
||||
}
|
||||
}
|
||||
3
AutoPlayer/lint.xml
Normal file
3
AutoPlayer/lint.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<lint>
|
||||
</lint>
|
||||
36
AutoPlayer/proguard.cfg
Normal file
36
AutoPlayer/proguard.cfg
Normal file
@@ -0,0 +1,36 @@
|
||||
-optimizationpasses 5
|
||||
-dontusemixedcaseclassnames
|
||||
-dontskipnonpubliclibraryclasses
|
||||
-dontpreverify
|
||||
-verbose
|
||||
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
|
||||
|
||||
-keep public class * extends android.app.Activity
|
||||
-keep public class * extends android.app.Application
|
||||
-keep public class * extends android.app.Service
|
||||
-keep public class * extends android.content.BroadcastReceiver
|
||||
-keep public class * extends android.content.ContentProvider
|
||||
-keep public class * extends android.app.backup.BackupAgentHelper
|
||||
-keep public class * extends android.preference.Preference
|
||||
-keep public class com.android.vending.licensing.ILicensingService
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
public <init>(android.content.Context, android.util.AttributeSet);
|
||||
}
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
public <init>(android.content.Context, android.util.AttributeSet, int);
|
||||
}
|
||||
|
||||
-keepclassmembers enum * {
|
||||
public static **[] values();
|
||||
public static ** valueOf(java.lang.String);
|
||||
}
|
||||
|
||||
-keep class * implements android.os.Parcelable {
|
||||
public static final android.os.Parcelable$Creator *;
|
||||
}
|
||||
5663
AutoPlayer/proguard/dump.txt
Normal file
5663
AutoPlayer/proguard/dump.txt
Normal file
File diff suppressed because it is too large
Load Diff
106
AutoPlayer/proguard/mapping.txt
Normal file
106
AutoPlayer/proguard/mapping.txt
Normal file
@@ -0,0 +1,106 @@
|
||||
com.TwentyCodes.android.AutoPlayer.AutoPlayerActivity -> com.TwentyCodes.android.AutoPlayer.AutoPlayerActivity:
|
||||
android.content.SharedPreferences mSettings -> a
|
||||
android.widget.ImageView mAppIcon -> b
|
||||
android.app.ProgressDialog mProgress -> c
|
||||
void onCreate(android.os.Bundle) -> onCreate
|
||||
void onClick(android.view.View) -> onClick
|
||||
void onActivityResult(int,int,android.content.Intent) -> onActivityResult
|
||||
void onProgressChanged(android.widget.SeekBar,int,boolean) -> onProgressChanged
|
||||
void onStartTrackingTouch(android.widget.SeekBar) -> onStartTrackingTouch
|
||||
void onStopTrackingTouch(android.widget.SeekBar) -> onStopTrackingTouch
|
||||
void onCheckedChanged(android.widget.CompoundButton,boolean) -> onCheckedChanged
|
||||
com.TwentyCodes.android.AutoPlayer.BootReceiver -> com.TwentyCodes.android.AutoPlayer.BootReceiver:
|
||||
void onReceive(android.content.Context,android.content.Intent) -> onReceive
|
||||
com.TwentyCodes.android.AutoPlayer.ConfirmDialog -> com.TwentyCodes.android.AutoPlayer.ConfirmDialog:
|
||||
android.media.AudioManager mAudioManager -> a
|
||||
android.content.SharedPreferences mSettings -> b
|
||||
android.widget.ProgressBar mProgressBar -> c
|
||||
android.os.Handler mHandler -> d
|
||||
java.lang.Thread mTimer -> e
|
||||
void onClick(android.view.View) -> onClick
|
||||
void onCreate(android.os.Bundle) -> onCreate
|
||||
android.os.Handler access$0(com.TwentyCodes.android.AutoPlayer.ConfirmDialog) -> a
|
||||
android.content.SharedPreferences access$1(com.TwentyCodes.android.AutoPlayer.ConfirmDialog) -> b
|
||||
android.media.AudioManager access$2(com.TwentyCodes.android.AutoPlayer.ConfirmDialog) -> c
|
||||
void access$3$243a77b3(com.TwentyCodes.android.AutoPlayer.ConfirmDialog,int) -> a
|
||||
android.widget.ProgressBar access$4(com.TwentyCodes.android.AutoPlayer.ConfirmDialog) -> d
|
||||
com.TwentyCodes.android.AutoPlayer.ConfirmDialog$1 -> com.TwentyCodes.android.AutoPlayer.c:
|
||||
com.TwentyCodes.android.AutoPlayer.ConfirmDialog this$0 -> a
|
||||
void run() -> run
|
||||
com.TwentyCodes.android.AutoPlayer.ConfirmDialog$1$1 -> com.TwentyCodes.android.AutoPlayer.a:
|
||||
com.TwentyCodes.android.AutoPlayer.ConfirmDialog$1 this$1 -> a
|
||||
void run() -> run
|
||||
com.TwentyCodes.android.AutoPlayer.ConfirmDialog$2 -> com.TwentyCodes.android.AutoPlayer.b:
|
||||
com.TwentyCodes.android.AutoPlayer.ConfirmDialog this$0 -> a
|
||||
void handleMessage(android.os.Message) -> handleMessage
|
||||
com.TwentyCodes.android.AutoPlayer.HeadPhoneReceiver -> com.TwentyCodes.android.AutoPlayer.HeadPhoneReceiver:
|
||||
android.media.AudioManager mAudioManager -> a
|
||||
android.content.SharedPreferences mSettings -> b
|
||||
android.content.Context mContext -> c
|
||||
void onReceive(android.content.Context,android.content.Intent) -> onReceive
|
||||
void setStreamVolume$255f295(int) -> a
|
||||
com.TwentyCodes.android.AutoPlayer.HeadphoneListenerService -> com.TwentyCodes.android.AutoPlayer.HeadphoneListenerService:
|
||||
void onCreate() -> onCreate
|
||||
int onStartCommand(android.content.Intent,int,int) -> onStartCommand
|
||||
android.os.IBinder onBind(android.content.Intent) -> onBind
|
||||
com.TwentyCodes.android.exception.ExceptionHandler -> com.TwentyCodes.android.exception.f:
|
||||
java.lang.Thread$UncaughtExceptionHandler mDefaultUEH -> a
|
||||
android.app.Activity mApp -> b
|
||||
android.app.Service mService -> c
|
||||
android.content.BroadcastReceiver mBroadcastReceiver -> d
|
||||
android.content.Context mContext -> e
|
||||
com.TwentyCodes.android.exception.Report mReport -> f
|
||||
java.lang.String mURL -> g
|
||||
java.lang.String mEmail -> h
|
||||
void displayEmailNotification() -> a
|
||||
void displayNotification(android.content.Intent) -> a
|
||||
void parseProperties() -> b
|
||||
void run() -> run
|
||||
void uncaughtException(java.lang.Thread,java.lang.Throwable) -> uncaughtException
|
||||
com.TwentyCodes.android.exception.ExceptionReportActivity -> com.TwentyCodes.android.exception.ExceptionReportActivity:
|
||||
com.TwentyCodes.android.exception.Report mReport -> a
|
||||
void onCreate(android.os.Bundle) -> onCreate
|
||||
void onClick(android.view.View) -> onClick
|
||||
com.TwentyCodes.android.exception.Report access$0(com.TwentyCodes.android.exception.ExceptionReportActivity) -> a
|
||||
com.TwentyCodes.android.exception.ExceptionReportActivity$1 -> com.TwentyCodes.android.exception.e:
|
||||
com.TwentyCodes.android.exception.ExceptionReportActivity this$0 -> a
|
||||
android.app.ProgressDialog val$progress -> b
|
||||
void run() -> run
|
||||
com.TwentyCodes.android.exception.Report -> com.TwentyCodes.android.exception.Report:
|
||||
java.lang.String mUrl -> a
|
||||
java.util.ArrayList mReport -> b
|
||||
android.os.Parcelable$Creator CREATOR -> CREATOR
|
||||
int describeContents() -> describeContents
|
||||
java.lang.String file() -> a
|
||||
com.TwentyCodes.android.exception.Report generateReport(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String) -> a
|
||||
java.util.ArrayList getNameValuePairs() -> c
|
||||
java.util.ArrayList getReport() -> b
|
||||
com.TwentyCodes.android.exception.Report setDescription(java.lang.String) -> a
|
||||
java.lang.String toString() -> toString
|
||||
void writeToParcel(android.os.Parcel,int) -> writeToParcel
|
||||
com.TwentyCodes.android.exception.Report$1 -> com.TwentyCodes.android.exception.b:
|
||||
java.lang.Object createFromParcel(android.os.Parcel) -> createFromParcel
|
||||
java.lang.Object[] newArray(int) -> newArray
|
||||
com.TwentyCodes.android.exception.ReportAdapter -> com.TwentyCodes.android.exception.c:
|
||||
java.util.ArrayList mReport -> a
|
||||
android.view.LayoutInflater mInflater -> b
|
||||
int getCount() -> getCount
|
||||
org.apache.http.NameValuePair getItem(int) -> a
|
||||
long getItemId(int) -> getItemId
|
||||
android.view.View getView(int,android.view.View,android.view.ViewGroup) -> getView
|
||||
java.lang.Object getItem(int) -> getItem
|
||||
com.TwentyCodes.android.exception.ReportAdapter$ViewHolder -> com.TwentyCodes.android.exception.d:
|
||||
android.widget.TextView title -> a
|
||||
android.widget.TextView body -> b
|
||||
com.TwentyCodes.android.exception.ReportAdapter this$0 -> c
|
||||
com.TwentyCodes.android.exception.ReportItem -> com.TwentyCodes.android.exception.ReportItem:
|
||||
android.os.Parcelable$Creator CREATOR -> CREATOR
|
||||
java.lang.String mKey -> a
|
||||
java.lang.String mValue -> b
|
||||
int describeContents() -> describeContents
|
||||
void writeToParcel(android.os.Parcel,int) -> writeToParcel
|
||||
java.lang.String getKey() -> a
|
||||
java.lang.String getValue() -> b
|
||||
com.TwentyCodes.android.exception.ReportItem$1 -> com.TwentyCodes.android.exception.a:
|
||||
java.lang.Object createFromParcel(android.os.Parcel) -> createFromParcel
|
||||
java.lang.Object[] newArray(int) -> newArray
|
||||
10
AutoPlayer/proguard/seeds.txt
Normal file
10
AutoPlayer/proguard/seeds.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
com.TwentyCodes.android.exception.ExceptionReportActivity
|
||||
com.TwentyCodes.android.AutoPlayer.ConfirmDialog
|
||||
com.TwentyCodes.android.AutoPlayer.AutoPlayerActivity
|
||||
com.TwentyCodes.android.AutoPlayer.HeadphoneListenerService
|
||||
com.TwentyCodes.android.AutoPlayer.HeadPhoneReceiver
|
||||
com.TwentyCodes.android.AutoPlayer.BootReceiver
|
||||
com.TwentyCodes.android.exception.ReportItem
|
||||
com.TwentyCodes.android.exception.ReportItem: android.os.Parcelable$Creator CREATOR
|
||||
com.TwentyCodes.android.exception.Report
|
||||
com.TwentyCodes.android.exception.Report: android.os.Parcelable$Creator CREATOR
|
||||
35
AutoPlayer/proguard/usage.txt
Normal file
35
AutoPlayer/proguard/usage.txt
Normal file
@@ -0,0 +1,35 @@
|
||||
com.TwentyCodes.android.AutoPlayer.AutoPlayerActivity:
|
||||
public static final java.lang.String SETTINGS
|
||||
public static final java.lang.String KEY_APP
|
||||
public static final java.lang.String KEY_VOLUME
|
||||
public static final java.lang.String KEY_CONFIRM
|
||||
public static final java.lang.String KEY_ENABLED
|
||||
com.TwentyCodes.android.AutoPlayer.ConfirmDialog:
|
||||
private static final byte PERIOD
|
||||
protected static final int COUNT
|
||||
com.TwentyCodes.android.AutoPlayer.HeadPhoneReceiver:
|
||||
private static final java.lang.String TAG
|
||||
private static final java.lang.String LOG
|
||||
private static final java.lang.String MUSIC_VOLUME
|
||||
com.TwentyCodes.android.AutoPlayer.R
|
||||
com.TwentyCodes.android.AutoPlayer.R$attr
|
||||
com.TwentyCodes.android.AutoPlayer.R$drawable
|
||||
com.TwentyCodes.android.AutoPlayer.R$id
|
||||
com.TwentyCodes.android.AutoPlayer.R$layout
|
||||
com.TwentyCodes.android.AutoPlayer.R$string
|
||||
com.TwentyCodes.android.exception.ExceptionHandler:
|
||||
private static final java.lang.String MSG_SUBJECT_TAG
|
||||
private static final java.lang.String MSG_BODY
|
||||
protected static final int SIMPLE_NOTFICATION_ID
|
||||
private static final java.lang.String TAG
|
||||
82:87:public ExceptionHandler(android.app.Service)
|
||||
com.TwentyCodes.android.exception.ExceptionReportActivity:
|
||||
private static final java.lang.String TAG
|
||||
com.TwentyCodes.android.exception.R
|
||||
com.TwentyCodes.android.exception.R$attr
|
||||
com.TwentyCodes.android.exception.R$drawable
|
||||
com.TwentyCodes.android.exception.R$id
|
||||
com.TwentyCodes.android.exception.R$layout
|
||||
com.TwentyCodes.android.exception.R$string
|
||||
com.TwentyCodes.android.exception.Report:
|
||||
111:117:public com.TwentyCodes.android.exception.Report generateReport(org.json.JSONObject)
|
||||
13
AutoPlayer/project.properties
Normal file
13
AutoPlayer/project.properties
Normal file
@@ -0,0 +1,13 @@
|
||||
# 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,
|
||||
# "ant.properties", and override values to adapt the script to your
|
||||
# project structure.
|
||||
|
||||
android.library.reference.1=../ExceptionHandlerLib
|
||||
# Project target.
|
||||
target=android-15
|
||||
#proguard.config=proguard.cfg
|
||||
BIN
AutoPlayer/res/drawable-hdpi/icon.png
Normal file
BIN
AutoPlayer/res/drawable-hdpi/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.6 KiB |
BIN
AutoPlayer/res/drawable-ldpi/icon.png
Normal file
BIN
AutoPlayer/res/drawable-ldpi/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
BIN
AutoPlayer/res/drawable-mdpi/icon.png
Normal file
BIN
AutoPlayer/res/drawable-mdpi/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
54
AutoPlayer/res/layout/confirm_dialog.xml
Normal file
54
AutoPlayer/res/layout/confirm_dialog.xml
Normal file
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignTop="@+id/app_icon"
|
||||
android:layout_centerHorizontal="true" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/body"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@android:dimen/app_icon_size"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="10dip"
|
||||
android:gravity="center"
|
||||
android:text="@string/start"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/app_icon"
|
||||
android:layout_width="@android:dimen/app_icon_size"
|
||||
android:layout_height="@android:dimen/app_icon_size"
|
||||
android:layout_gravity="center|center_vertical"
|
||||
android:layout_marginRight="11dip"
|
||||
android:layout_toRightOf="@id/body"
|
||||
android:scaleType="fitCenter" />
|
||||
</LinearLayout>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progressBar"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/linearLayout1"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="10dip"
|
||||
android:layout_marginRight="10dip"
|
||||
android:layout_marginTop="10dip" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/okButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/progressBar"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="@android:string/cancel" />
|
||||
|
||||
</RelativeLayout>
|
||||
95
AutoPlayer/res/layout/main.xml
Normal file
95
AutoPlayer/res/layout/main.xml
Normal file
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent" >
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/toggleButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_marginLeft="10dip"
|
||||
android:layout_marginRight="10dip"
|
||||
android:checked="true"
|
||||
android:text="@string/enable" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/app_icon"
|
||||
android:layout_width="@android:dimen/app_icon_size"
|
||||
android:layout_height="@android:dimen/app_icon_size"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_below="@id/toggleButton"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="10dip"
|
||||
android:layout_marginRight="11dip"
|
||||
android:layout_marginTop="10dip"
|
||||
android:background="@drawable/icon"
|
||||
android:scaleType="fitCenter" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/activty_picker_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/toggleButton"
|
||||
android:layout_marginRight="10dip"
|
||||
android:layout_marginTop="10dip"
|
||||
android:layout_toRightOf="@id/app_icon"
|
||||
android:text="@string/pick_an_activity" >
|
||||
</Button>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/music_volume_tag"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/activty_picker_button"
|
||||
android:layout_marginTop="10dip"
|
||||
android:text="@string/music_volume" />
|
||||
|
||||
<SeekBar
|
||||
android:id="@+id/music_volume"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/music_volume_tag"
|
||||
android:layout_marginLeft="10dip"
|
||||
android:layout_marginRight="10dip" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/confirmCheckBox"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_below="@+id/music_volume"
|
||||
android:layout_marginLeft="10dip"
|
||||
android:layout_marginTop="10dip"
|
||||
android:text="@string/confirm" />
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/confirmCheckBox"
|
||||
android:layout_marginLeft="10dip"
|
||||
android:layout_marginRight="10dip"
|
||||
android:layout_marginTop="10dip" >
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/about"
|
||||
android:text="@string/about"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<TextView
|
||||
android:layout_marginTop="10dip"
|
||||
android:id="@+id/version"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center" />
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
</RelativeLayout>
|
||||
20
AutoPlayer/res/values/strings.xml
Normal file
20
AutoPlayer/res/values/strings.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="hello">Hello World, AutoPlayerActivity!</string>
|
||||
<string name="app_name">AutoPlayer</string>
|
||||
<string name="music_volume">Music Volume</string>
|
||||
<string name="pick_an_activity">Pick an Activity</string>
|
||||
<string name="loading">Loading...</string>
|
||||
<string name="about">Welcome to AutoPlayer \n\n
|
||||
|
||||
AutoPlayer allows you to program your Android powered device to start a specific application and set the music volume level upon plugging in your headphones, speakers, ect.\n\n
|
||||
|
||||
To start, simply select which application you want to start, and set your desired volume level. The next time you plug something into your headphone jack, AutoPlayer will apply your desired settings.\n\n</string>
|
||||
<string name="enable">Enable</string>
|
||||
<string name="confirm">Use Confirmation Dialog</string>
|
||||
<string name="start">Starting...</string>
|
||||
<string name="version">Version</string>
|
||||
<string name="build">build</string>
|
||||
|
||||
</resources>
|
||||
@@ -0,0 +1,206 @@
|
||||
/**
|
||||
* AutoPlayerActivity.java
|
||||
* @author ricky barrette
|
||||
* @author Twenty Codes, LLC
|
||||
* @date July 20, 2011
|
||||
*/
|
||||
package com.TwentyCodes.android.AutoPlayer;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.CompoundButton.OnCheckedChangeListener;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.SeekBar.OnSeekBarChangeListener;
|
||||
import android.widget.TextView;
|
||||
import android.widget.ToggleButton;
|
||||
|
||||
import com.TwentyCodes.android.exception.ExceptionHandler;
|
||||
import com.TwentyCodes.android.exception.R;
|
||||
|
||||
/**
|
||||
* This activity will be used to allow the user to pick an activity, and a set a volume level to be started/applied when a headphone is pluged in
|
||||
* @author ricky
|
||||
*/
|
||||
public class AutoPlayerActivity extends Activity implements OnClickListener, OnSeekBarChangeListener, OnCheckedChangeListener {
|
||||
public static final String SETTINGS = "setings";
|
||||
public static final String KEY_APP = "app";
|
||||
public static final String KEY_VOLUME = "volume";
|
||||
public static final String KEY_CONFIRM = "confirm";
|
||||
public static final String KEY_ENABLED = "enabled";
|
||||
private SharedPreferences mSettings;
|
||||
private ImageView mAppIcon;
|
||||
private ProgressDialog mProgress;
|
||||
|
||||
/** Called when the activity is first created. */
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.main);
|
||||
this.mSettings = this.getSharedPreferences(SETTINGS, Context.MODE_WORLD_WRITEABLE);
|
||||
|
||||
/*
|
||||
* toggle button
|
||||
*/
|
||||
ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton);
|
||||
toggle.setChecked(mSettings.getBoolean(KEY_ENABLED, true));
|
||||
toggle.setOnCheckedChangeListener(this);
|
||||
|
||||
/*
|
||||
* confirmation check box
|
||||
*/
|
||||
CheckBox confimationCheckBox = (CheckBox) findViewById(R.id.confirmCheckBox);
|
||||
confimationCheckBox.setOnCheckedChangeListener(this);
|
||||
confimationCheckBox.setChecked(mSettings.getBoolean(KEY_CONFIRM, false));
|
||||
|
||||
/*
|
||||
* start the service if enabled
|
||||
*/
|
||||
if(toggle.isChecked());
|
||||
this.startService(new Intent(this, HeadphoneListenerService.class));
|
||||
|
||||
/*
|
||||
* music volume
|
||||
*/
|
||||
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
|
||||
SeekBar volume = (SeekBar) findViewById(R.id.music_volume);
|
||||
volume.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
|
||||
volume.setProgress(mSettings.getInt(KEY_VOLUME, audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)));
|
||||
volume.setOnSeekBarChangeListener(this);
|
||||
|
||||
/*
|
||||
* application icon
|
||||
*/
|
||||
mAppIcon = (ImageView) findViewById(R.id.app_icon);
|
||||
try {
|
||||
mAppIcon.setBackgroundDrawable(getPackageManager().getActivityIcon(Intent.getIntent(this.mSettings.getString(AutoPlayerActivity.KEY_APP, null))));
|
||||
} catch (NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (URISyntaxException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NullPointerException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
/*
|
||||
* application picker button
|
||||
*/
|
||||
findViewById(R.id.activty_picker_button).setOnClickListener(this);
|
||||
|
||||
/*
|
||||
* Version information textview
|
||||
*/
|
||||
TextView version = (TextView) findViewById(R.id.version);
|
||||
PackageManager pm = getPackageManager();
|
||||
PackageInfo pi;
|
||||
try {
|
||||
pi = pm.getPackageInfo(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 = 1;
|
||||
}
|
||||
version.setText(getText(R.string.version)+" "+pi.versionName+" "+getString(R.string.build)+" "+pi.versionCode);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the application picker button is clicked
|
||||
* (non-Javadoc)
|
||||
* @see android.view.View.OnClickListener#onClick(android.view.View)
|
||||
*/
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mProgress = ProgressDialog.show(this, "", getString(R.string.loading), true, true);
|
||||
|
||||
findViewById(R.id.activty_picker_button).setEnabled(false);
|
||||
/// Pick an application
|
||||
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
|
||||
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
|
||||
Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
|
||||
pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);
|
||||
startActivityForResult(pickIntent, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the application picker is finished
|
||||
* (non-Javadoc)
|
||||
* @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
|
||||
*/
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if(mProgress != null)
|
||||
if(mProgress.isShowing())
|
||||
mProgress.dismiss();
|
||||
|
||||
findViewById(R.id.activty_picker_button).setEnabled(true);
|
||||
if (data != null) {
|
||||
this.mSettings.edit().putString(KEY_APP, data.toURI()).commit();
|
||||
|
||||
try {
|
||||
mAppIcon.setBackgroundDrawable(getPackageManager().getActivityIcon(data));
|
||||
} catch (NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NullPointerException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the music volume setting is adjusted
|
||||
* (non-Javadoc)
|
||||
* @see android.widget.SeekBar.OnSeekBarChangeListener#onProgressChanged(android.widget.SeekBar, int, boolean)
|
||||
*/
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
this.mSettings.edit().putInt(KEY_VOLUME, progress).commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartTrackingTouch(SeekBar seekBar) {
|
||||
// NOT USED
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStopTrackingTouch(SeekBar seekBar) {
|
||||
// NOT USED
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the main toggle or the confirmation check box is un/checked
|
||||
* (non-Javadoc)
|
||||
* @see android.widget.CompoundButton.OnCheckedChangeListener#onCheckedChanged(android.widget.CompoundButton, boolean)
|
||||
*/
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
switch(buttonView.getId()){
|
||||
case R.id.confirmCheckBox:
|
||||
this.mSettings.edit().putBoolean(KEY_CONFIRM, isChecked).commit();
|
||||
break;
|
||||
case R.id.toggleButton:
|
||||
this.mSettings.edit().putBoolean(KEY_ENABLED, isChecked).commit();
|
||||
if(!isChecked)
|
||||
this.stopService(new Intent(this, HeadphoneListenerService.class));
|
||||
else
|
||||
this.startService(new Intent(this, HeadphoneListenerService.class));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* BootReceiver.java
|
||||
* @date Jul 20, 2011
|
||||
* @author Twenty Codes, LLC
|
||||
* @author ricky barrette
|
||||
*/
|
||||
package com.TwentyCodes.android.AutoPlayer;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
/**
|
||||
* This receiver will register HeadPhoneReceiver at boot
|
||||
* @author ricky
|
||||
*/
|
||||
public class BootReceiver extends BroadcastReceiver {
|
||||
|
||||
/**
|
||||
* (non-Javadoc)
|
||||
* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
|
||||
* @author ricky barrette
|
||||
*/
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if(context.getSharedPreferences(AutoPlayerActivity.SETTINGS, Context.MODE_WORLD_WRITEABLE).getBoolean(AutoPlayerActivity.KEY_ENABLED, true));
|
||||
context.startService(new Intent(context, HeadphoneListenerService.class));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
/**
|
||||
* ConfirmDialog.java
|
||||
* @date Oct 7, 2011
|
||||
* @author ricky barrette
|
||||
* @author Twenty Codes, LLC
|
||||
*/
|
||||
package com.TwentyCodes.android.AutoPlayer;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import com.TwentyCodes.android.exception.ExceptionHandler;
|
||||
import com.TwentyCodes.android.exception.R;
|
||||
|
||||
/**
|
||||
* This is the confirmation dialog. it will allow the user to cancel auto player's actions for a specified amount of time.
|
||||
* @author ricky barrette
|
||||
*/
|
||||
public class ConfirmDialog extends Activity implements OnClickListener {
|
||||
|
||||
/**
|
||||
* Total period of this confirmation dialog
|
||||
* This value is in seconds
|
||||
*/
|
||||
private static final byte PERIOD = 5;
|
||||
|
||||
/**
|
||||
* Handler message code for the current count of elapsed seconds
|
||||
*/
|
||||
protected static final int COUNT = 0;
|
||||
|
||||
private AudioManager mAudioManager;
|
||||
private SharedPreferences mSettings;
|
||||
private ProgressBar mProgressBar;
|
||||
private Handler mHandler;
|
||||
|
||||
/**
|
||||
* This thread will be used as a timer. it will update the UI and apply the settings
|
||||
*/
|
||||
private Thread mTimer = new Thread(new Runnable(){
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
int count = 0;
|
||||
boolean isCanceled = false;
|
||||
|
||||
/*
|
||||
* this is the timer function of this thread.
|
||||
* it will wait for the period to elapse before continuing.
|
||||
* it will update the UI every second
|
||||
*/
|
||||
while (count < PERIOD){
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
/*
|
||||
* If this is caught, then the thread has been interrupted,
|
||||
* we want to log this so we can handle it.
|
||||
*/
|
||||
e.printStackTrace();
|
||||
isCanceled = true;
|
||||
}
|
||||
count++;
|
||||
mHandler.sendMessage(mHandler.obtainMessage(COUNT, count));
|
||||
}
|
||||
|
||||
if(!isCanceled){
|
||||
|
||||
try {
|
||||
setStreamVolume(mSettings.getInt(AutoPlayerActivity.KEY_VOLUME, mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)), AudioManager.STREAM_MUSIC);
|
||||
getApplicationContext().startActivity(Intent.getIntent(mSettings.getString(AutoPlayerActivity.KEY_APP, null)).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
|
||||
} catch (URISyntaxException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NullPointerException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
/*
|
||||
* the following is performed on the UI thread
|
||||
*/
|
||||
ConfirmDialog.this.runOnUiThread(new Runnable(){
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
ConfirmDialog.this.finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mTimer.interrupt();
|
||||
this.finish();
|
||||
}
|
||||
|
||||
/**
|
||||
* (non-Javadoc)
|
||||
* @see android.app.Activity#onCreate(android.os.Bundle)
|
||||
*/
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
|
||||
this.setContentView(R.layout.confirm_dialog);
|
||||
this.mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
|
||||
this.mSettings = this.getSharedPreferences(AutoPlayerActivity.SETTINGS, Context.MODE_WORLD_WRITEABLE);
|
||||
this.setTitle(R.string.app_name);
|
||||
|
||||
/*
|
||||
* cancel button
|
||||
*/
|
||||
findViewById(R.id.okButton).setOnClickListener(this);
|
||||
|
||||
/*
|
||||
* displays the icon of the application to be started
|
||||
*/
|
||||
ImageView appIcon = (ImageView) findViewById(R.id.app_icon);
|
||||
try {
|
||||
appIcon.setBackgroundDrawable(getPackageManager().getActivityIcon(Intent.getIntent(this.mSettings.getString(AutoPlayerActivity.KEY_APP, null))));
|
||||
} catch (NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (URISyntaxException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NullPointerException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
/*
|
||||
* displays the count down progress bar
|
||||
*/
|
||||
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
|
||||
mProgressBar.setMax(PERIOD);
|
||||
mProgressBar.setProgress(PERIOD);
|
||||
|
||||
/*
|
||||
* prepare UI handler to handle updates from the timer thread.
|
||||
* once this is complete, start the timer thread
|
||||
*/
|
||||
setUiHandler();
|
||||
mTimer.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* set the volume of a particular stream
|
||||
* @param volume
|
||||
* @param stream
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private void setStreamVolume(int volume, int stream) {
|
||||
/*
|
||||
* 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 (volume > mAudioManager.getStreamVolume(stream)) {
|
||||
int adjust = volume - mAudioManager.getStreamVolume(stream);
|
||||
for (int i = 0; i < adjust; i++) {
|
||||
mAudioManager.adjustSuggestedStreamVolume(AudioManager.ADJUST_RAISE, stream, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 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 (volume < mAudioManager.getStreamVolume(stream)) {
|
||||
int adjust = mAudioManager.getStreamVolume(stream) - volume;
|
||||
for (int i = 0; i < adjust; i++) {
|
||||
mAudioManager.adjustSuggestedStreamVolume(AudioManager.ADJUST_LOWER, stream, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up the UI handler to receive updates from the timer thread
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private void setUiHandler() {
|
||||
mHandler = new Handler(){
|
||||
@Override
|
||||
public void handleMessage(Message msg){
|
||||
if(msg.what == COUNT){
|
||||
mProgressBar.setProgress( PERIOD - (Integer) msg.obj);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
/**
|
||||
* HeadPhoneReceiver.java
|
||||
* @author ricky barrette
|
||||
* @author Twenty Codes, LLC
|
||||
* @date July 20, 2011
|
||||
*/
|
||||
package com.TwentyCodes.android.AutoPlayer;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import com.TwentyCodes.android.exception.ExceptionHandler;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.media.AudioManager;
|
||||
import android.util.Log;
|
||||
|
||||
/**
|
||||
* This receiver will handle head phone events
|
||||
* @author ricky
|
||||
*/
|
||||
public class HeadPhoneReceiver extends BroadcastReceiver {
|
||||
|
||||
private static final String TAG = "HeadPhoneReceiver";
|
||||
private static final String LOG = "HeadPhoneReceiverLog";
|
||||
private static final String MUSIC_VOLUME = "music_volume";
|
||||
private AudioManager mAudioManager;
|
||||
private SharedPreferences mSettings;
|
||||
private Context mContext;
|
||||
|
||||
/**
|
||||
* (non-Javadoc)
|
||||
* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
|
||||
*/
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this, context));
|
||||
|
||||
this.mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
||||
mSettings = context.getSharedPreferences(AutoPlayerActivity.SETTINGS, Context.MODE_WORLD_WRITEABLE);
|
||||
mContext = context;
|
||||
|
||||
if(intent != null){
|
||||
Log.v(TAG,"Headphone event");
|
||||
if(intent.hasExtra("state")){
|
||||
Log.v(TAG,"Headphone event: "+ intent.getIntExtra("state", 0));
|
||||
if(intent.getIntExtra("state", 0) == 1){
|
||||
|
||||
//check the event log, if this is the first event then continue
|
||||
if(! mSettings.getBoolean(LOG, false)) {
|
||||
|
||||
//log the event and current music volume
|
||||
mSettings.edit().putBoolean(LOG, true).putInt(MUSIC_VOLUME, this.mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC)).commit();
|
||||
|
||||
//Perform user's settings
|
||||
if(mSettings.getBoolean(AutoPlayerActivity.KEY_CONFIRM, false))
|
||||
context.startActivity(new Intent(context, ConfirmDialog.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
|
||||
else
|
||||
applySettings();
|
||||
}
|
||||
} else {
|
||||
//restore previous volume
|
||||
setStreamVolume(mSettings.getInt(MUSIC_VOLUME, this.mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)), AudioManager.STREAM_MUSIC);
|
||||
mSettings.edit().putBoolean(LOG, false).commit();
|
||||
/*
|
||||
* TODO stop music activity
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the music stream volume, and starts the user specified activity
|
||||
*
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private void applySettings() {
|
||||
try {
|
||||
setStreamVolume(mSettings.getInt(AutoPlayerActivity.KEY_VOLUME, this.mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)), AudioManager.STREAM_MUSIC);
|
||||
mContext.getApplicationContext().startActivity(Intent.getIntent(mSettings.getString(AutoPlayerActivity.KEY_APP, null)).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
|
||||
} catch (URISyntaxException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NullPointerException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* set the volume of a particular stream
|
||||
* @param volume
|
||||
* @param stream
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private void setStreamVolume(int volume, int stream) {
|
||||
/*
|
||||
* 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 (volume > mAudioManager.getStreamVolume(stream)) {
|
||||
int adjust = volume - mAudioManager.getStreamVolume(stream);
|
||||
for (int i = 0; i < adjust; i++) {
|
||||
mAudioManager.adjustSuggestedStreamVolume(AudioManager.ADJUST_RAISE, stream, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 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 (volume < mAudioManager.getStreamVolume(stream)) {
|
||||
int adjust = mAudioManager.getStreamVolume(stream) - volume;
|
||||
for (int i = 0; i < adjust; i++) {
|
||||
mAudioManager.adjustSuggestedStreamVolume(AudioManager.ADJUST_LOWER, stream, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/**
|
||||
* HeadphoneListenerService.java
|
||||
* @date Jul 20, 2011
|
||||
* @author Twenty Codes, LLC
|
||||
* @author ricky barrette
|
||||
*/
|
||||
package com.TwentyCodes.android.AutoPlayer;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.IBinder;
|
||||
|
||||
/**
|
||||
* This only purpose of this service is to keep HeadPhoneReceiver.java a registered reciever
|
||||
* @author ricky
|
||||
*/
|
||||
public class HeadphoneListenerService extends Service {
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
this.registerReceiver(new HeadPhoneReceiver(), new IntentFilter(Intent.ACTION_HEADSET_PLUG));
|
||||
super.onCreate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
// TODO Auto-generated method stub
|
||||
return START_STICKY;
|
||||
}
|
||||
|
||||
/**
|
||||
* (non-Javadoc)
|
||||
* @see android.app.Service#onBind(android.content.Intent)
|
||||
* @author ricky barrette
|
||||
*/
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user