diff --git a/app/src/main/java/org/y20k/transistor/MainActivityFragment.java b/app/src/main/java/org/y20k/transistor/MainActivityFragment.java index 4d781e15..a6373289 100644 --- a/app/src/main/java/org/y20k/transistor/MainActivityFragment.java +++ b/app/src/main/java/org/y20k/transistor/MainActivityFragment.java @@ -16,6 +16,7 @@ import android.Manifest; import android.app.Activity; +import android.app.Application; import android.app.Fragment; import android.content.BroadcastReceiver; import android.content.Context; @@ -77,6 +78,7 @@ public class MainActivityFragment extends Fragment { /* Main class variables */ + private Application mApplication; private Activity mActivity; private Collection mCollection; private CollectionAdapter mCollectionAdapter = null; @@ -98,8 +100,9 @@ public MainActivityFragment() { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // store context + // get activity and application contexts mActivity = getActivity(); + mApplication = mActivity.getApplication(); // set list state null mListState = null; @@ -377,7 +380,7 @@ public void onReceive(Context context, Intent intent) { } }; IntentFilter playbackStoppedIntentFilter = new IntentFilter(ACTION_PLAYBACK_STOPPED); - LocalBroadcastManager.getInstance(mActivity).registerReceiver(playbackStoppedReceiver, playbackStoppedIntentFilter); + LocalBroadcastManager.getInstance(mApplication).registerReceiver(playbackStoppedReceiver, playbackStoppedIntentFilter); // broadcast receiver: player service stopped playback BroadcastReceiver playbackStartedReceiver = new BroadcastReceiver() { @@ -387,7 +390,7 @@ public void onReceive(Context context, Intent intent) { } }; IntentFilter playbackStartedIntentFilter = new IntentFilter(ACTION_PLAYBACK_STARTED); - LocalBroadcastManager.getInstance(mActivity).registerReceiver(playbackStartedReceiver, playbackStartedIntentFilter); + LocalBroadcastManager.getInstance(mApplication).registerReceiver(playbackStartedReceiver, playbackStartedIntentFilter); // broadcast receiver: station added, deleted, or changed BroadcastReceiver collectionChangedReceiver = new BroadcastReceiver() { @@ -397,7 +400,7 @@ public void onReceive(Context context, Intent intent) { } }; IntentFilter collectionChangedIntentFilter = new IntentFilter(ACTION_COLLECTION_CHANGED); - LocalBroadcastManager.getInstance(mActivity).registerReceiver(collectionChangedReceiver, collectionChangedIntentFilter); + LocalBroadcastManager.getInstance(mApplication).registerReceiver(collectionChangedReceiver, collectionChangedIntentFilter); // broadcast receiver: listen for request to change station image BroadcastReceiver imageChangeRequestReceiver = new BroadcastReceiver() { @@ -410,7 +413,7 @@ public void onReceive(Context context, Intent intent) { } }; IntentFilter imageChangeRequesIntentFilter = new IntentFilter(ACTION_IMAGE_CHANGE_REQUESTED); - LocalBroadcastManager.getInstance(mActivity).registerReceiver(imageChangeRequestReceiver, imageChangeRequesIntentFilter); + LocalBroadcastManager.getInstance(mApplication).registerReceiver(imageChangeRequestReceiver, imageChangeRequesIntentFilter); } diff --git a/app/src/main/java/org/y20k/transistor/PlayerService.java b/app/src/main/java/org/y20k/transistor/PlayerService.java index 5641b0ff..f08f084c 100644 --- a/app/src/main/java/org/y20k/transistor/PlayerService.java +++ b/app/src/main/java/org/y20k/transistor/PlayerService.java @@ -348,7 +348,7 @@ private void startPlayback() { // send local broadcast (needed by MainActivityFragment) Intent i = new Intent(); i.setAction(ACTION_PLAYBACK_STARTED); - LocalBroadcastManager.getInstance(this).sendBroadcast(i); + LocalBroadcastManager.getInstance(this.getApplication()).sendBroadcast(i); } @@ -364,7 +364,7 @@ private void stopPlayback() { // send local broadcast (needed by PlayerActivityFragment and MainActivityFragment) Intent i = new Intent(); i.setAction(ACTION_PLAYBACK_STOPPED); - LocalBroadcastManager.getInstance(this).sendBroadcast(i); + LocalBroadcastManager.getInstance(this.getApplication()).sendBroadcast(i); // retrieve notification system service and cancel notification NotificationManager notificationManager = (NotificationManager) getApplication().getSystemService(Context.NOTIFICATION_SERVICE); diff --git a/app/src/main/java/org/y20k/transistor/helpers/CollectionAdapter.java b/app/src/main/java/org/y20k/transistor/helpers/CollectionAdapter.java index a89c1d7e..0dd1829b 100644 --- a/app/src/main/java/org/y20k/transistor/helpers/CollectionAdapter.java +++ b/app/src/main/java/org/y20k/transistor/helpers/CollectionAdapter.java @@ -14,6 +14,7 @@ package org.y20k.transistor.helpers; +import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; @@ -44,7 +45,7 @@ public class CollectionAdapter extends BaseAdapter { /* Main class variables */ private final LinkedList<String> mStationNames; private final LinkedList<Bitmap> mStationImages; - private final Context mContext; + private final Activity mActivity; private Collection mCollection; private CollectionChangedListener mCollectionChangedListener; private boolean mPlayback; @@ -58,14 +59,14 @@ public interface CollectionChangedListener { /* Constructor */ - public CollectionAdapter(Context context, LinkedList<String> stationNames, LinkedList<Bitmap> stationImage) { - mContext = context; + public CollectionAdapter(Activity activity, LinkedList<String> stationNames, LinkedList<Bitmap> stationImage) { + mActivity = activity; mStationNames = stationNames; mStationImages = stationImage; mCollection = null; mCollectionChangedListener = null; - loadPlaybackState(context); + loadPlaybackState(mActivity); } @@ -94,7 +95,7 @@ public View getView(final int position, View convertView, ViewGroup parent) { // create new view if no convertView available if (convertView == null) { - LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.list_item_collection, parent, false); holder = new ViewHolder(); @@ -128,7 +129,7 @@ public View getView(final int position, View convertView, ViewGroup parent) { @Override public void onClick(View view) { StationContextMenu menu = new StationContextMenu(); - menu.initialize(mContext, mCollection, view, position); + menu.initialize(mActivity, mCollection, view, position); // listen for changes invoked by StationContextMenu menu.setStationChangedListener(new StationContextMenu.StationChangedListener() { @@ -152,7 +153,7 @@ public void stationChanged() { @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); - loadPlaybackState(mContext); + loadPlaybackState(mActivity); } diff --git a/app/src/main/java/org/y20k/transistor/helpers/DialogAddStation.java b/app/src/main/java/org/y20k/transistor/helpers/DialogAddStation.java index 920c6a74..7a0943ab 100644 --- a/app/src/main/java/org/y20k/transistor/helpers/DialogAddStation.java +++ b/app/src/main/java/org/y20k/transistor/helpers/DialogAddStation.java @@ -14,8 +14,8 @@ package org.y20k.transistor.helpers; +import android.app.Activity; import android.app.AlertDialog; -import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; @@ -30,20 +30,20 @@ public class DialogAddStation { /* Main class variables */ - private final Context mContext; + private final Activity mActivity; /* Constructor */ - public DialogAddStation(Context context) { - mContext = context; + public DialogAddStation(Activity activity) { + mActivity = activity; } /* Construct and show dialog */ public void show() { // prepare dialog builder - LayoutInflater inflater = LayoutInflater.from(mContext); - final AlertDialog.Builder builder = new AlertDialog.Builder(mContext); + LayoutInflater inflater = LayoutInflater.from(mActivity); + final AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); // get input field View view = inflater.inflate(R.layout.dialog_add_station, null); @@ -61,7 +61,7 @@ public void onClick(DialogInterface dialog, int id) { final String input = inputField.getText().toString(); // download and add new station - StationDownloader stationDownloader = new StationDownloader(input, mContext); + StationDownloader stationDownloader = new StationDownloader(input, mActivity); stationDownloader.execute(); } } diff --git a/app/src/main/java/org/y20k/transistor/helpers/DialogDelete.java b/app/src/main/java/org/y20k/transistor/helpers/DialogDelete.java index 5d6bf5c2..c204534c 100644 --- a/app/src/main/java/org/y20k/transistor/helpers/DialogDelete.java +++ b/app/src/main/java/org/y20k/transistor/helpers/DialogDelete.java @@ -14,8 +14,8 @@ package org.y20k.transistor.helpers; +import android.app.Activity; import android.app.AlertDialog; -import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.support.v4.content.LocalBroadcastManager; @@ -35,7 +35,7 @@ public class DialogDelete { /* Main class variables */ - private final Context mContext; + private final Activity mActivity; private final Collection mCollection; private final int mStationID; private StationDeletedListener mStationDeletedListener; @@ -48,8 +48,8 @@ public interface StationDeletedListener { /* Constructor */ - public DialogDelete(Context context, Collection collection, int stationID) { - mContext = context; + public DialogDelete(Activity activity, Collection collection, int stationID) { + mActivity = activity; mStationID = stationID; mCollection = collection; mStationDeletedListener = null; @@ -58,7 +58,7 @@ public DialogDelete(Context context, Collection collection, int stationID) { /* Construct and show dialog */ public void show() { - AlertDialog.Builder deleteDialog = new AlertDialog.Builder(mContext); + AlertDialog.Builder deleteDialog = new AlertDialog.Builder(mActivity); // add message to dialog deleteDialog.setMessage(R.string.dialog_delete_station_message); @@ -70,12 +70,12 @@ public void onClick(DialogInterface arg0, int arg1) { boolean success = mCollection.delete(mStationID); if (success) { // notify the user - Toast.makeText(mContext, R.string.toastalert_delete_successful, Toast.LENGTH_LONG).show(); + Toast.makeText(mActivity, R.string.toastalert_delete_successful, Toast.LENGTH_LONG).show(); // send local broadcast Intent i = new Intent(); i.setAction(ACTION_COLLECTION_CHANGED); - LocalBroadcastManager.getInstance(mContext).sendBroadcast(i); + LocalBroadcastManager.getInstance(mActivity.getApplication()).sendBroadcast(i); // notify MainActivityFragment if (mStationDeletedListener != null) { diff --git a/app/src/main/java/org/y20k/transistor/helpers/DialogError.java b/app/src/main/java/org/y20k/transistor/helpers/DialogError.java index 8de170d9..486e7c64 100644 --- a/app/src/main/java/org/y20k/transistor/helpers/DialogError.java +++ b/app/src/main/java/org/y20k/transistor/helpers/DialogError.java @@ -14,8 +14,8 @@ package org.y20k.transistor.helpers; +import android.app.Activity; import android.app.AlertDialog; -import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; @@ -30,15 +30,15 @@ class DialogError { /* Main class variables */ - private final Context mContext; + private final Activity mActivity; private final String mErrorTitle; private final String mErrorMessage; private final String mErrorDetails; /* Constructor */ - public DialogError(Context context, String errorTitle, String errorMessage, String errorDetails) { - mContext = context; + public DialogError(Activity activity, String errorTitle, String errorMessage, String errorDetails) { + mActivity = activity; mErrorTitle = errorTitle; mErrorMessage = errorMessage; mErrorDetails = errorDetails; @@ -48,8 +48,8 @@ public DialogError(Context context, String errorTitle, String errorMessage, Stri /* Construct and show dialog */ public void show() { // prepare dialog builder - LayoutInflater inflater = LayoutInflater.from(mContext); - AlertDialog.Builder builder = new AlertDialog.Builder(mContext); + LayoutInflater inflater = LayoutInflater.from(mActivity); + AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); // get views View view = inflater.inflate(R.layout.dialog_error, null); diff --git a/app/src/main/java/org/y20k/transistor/helpers/DialogRename.java b/app/src/main/java/org/y20k/transistor/helpers/DialogRename.java index f06edb49..debcd66f 100644 --- a/app/src/main/java/org/y20k/transistor/helpers/DialogRename.java +++ b/app/src/main/java/org/y20k/transistor/helpers/DialogRename.java @@ -14,8 +14,8 @@ package org.y20k.transistor.helpers; +import android.app.Activity; import android.app.AlertDialog; -import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.preference.PreferenceManager; @@ -38,7 +38,7 @@ public class DialogRename { /* Main class variables */ - private final Context mContext; + private final Activity mActivity; private final Collection mCollection; private final int mStationID; private String mStationName; @@ -52,8 +52,8 @@ public interface StationRenamedListener { /* Constructor */ - public DialogRename(Context context, Collection collection, String stationName, int stationID) { - mContext = context; + public DialogRename(Activity activity, Collection collection, String stationName, int stationID) { + mActivity = activity; mStationName = stationName; mStationID = stationID; mCollection = collection; @@ -64,8 +64,8 @@ public DialogRename(Context context, Collection collection, String stationName, /* Construct and show dialog */ public void show() { // prepare dialog builder - LayoutInflater inflater = LayoutInflater.from(mContext); - AlertDialog.Builder builder = new AlertDialog.Builder(mContext); + LayoutInflater inflater = LayoutInflater.from(mActivity); + AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); // get input field View view = inflater.inflate(R.layout.dialog_rename_station, null); @@ -83,7 +83,7 @@ public void onClick(DialogInterface arg0, int arg1) { boolean success = mCollection.rename(mStationID, mStationName); if (!success) { // notify the user - Toast.makeText(mContext, R.string.toastalert_rename_unsuccessful, Toast.LENGTH_LONG).show(); + Toast.makeText(mActivity, R.string.toastalert_rename_unsuccessful, Toast.LENGTH_LONG).show(); } else { // notify MainActivityFragment if (mStationRenamedListener != null) { @@ -91,12 +91,12 @@ public void onClick(DialogInterface arg0, int arg1) { } // check for playback - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(mContext); + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(mActivity); boolean playback = settings.getBoolean(PLAYBACK, false); if (playback) { // put up changed notification - NotificationHelper notificationHelper = new NotificationHelper(mContext); + NotificationHelper notificationHelper = new NotificationHelper(mActivity); notificationHelper.setStationName(mStationName); notificationHelper.createNotification(); } diff --git a/app/src/main/java/org/y20k/transistor/helpers/ImageHelper.java b/app/src/main/java/org/y20k/transistor/helpers/ImageHelper.java index 7101e73e..f184d3ed 100644 --- a/app/src/main/java/org/y20k/transistor/helpers/ImageHelper.java +++ b/app/src/main/java/org/y20k/transistor/helpers/ImageHelper.java @@ -14,7 +14,7 @@ package org.y20k.transistor.helpers; -import android.content.Context; +import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; @@ -39,28 +39,28 @@ public class ImageHelper { /* Main class variables */ private final Bitmap mInputImage; private final Paint mBackgroundColor; - private final Context mContext; + private final Activity mActivity; /* Constructor when given a Bitmap*/ - public ImageHelper(Bitmap inputImage, Context context) { + public ImageHelper(Bitmap inputImage, Activity activity) { mInputImage = inputImage; - mContext = context; + mActivity = activity; // set default background color white - int backgroundColor = ContextCompat.getColor(mContext, R.color.transistor_white); + int backgroundColor = ContextCompat.getColor(mActivity, R.color.transistor_white); mBackgroundColor = new Paint(); mBackgroundColor.setColor(backgroundColor); } /* Constructor when given an Uri */ - public ImageHelper(Uri inputImageUri, Context context) { - mContext = context; + public ImageHelper(Uri inputImageUri, Activity activity) { + mActivity = activity; mInputImage = decodeSampledBitmapFromUri(inputImageUri, 72, 72); // set default background color white - int backgroundColor = ContextCompat.getColor(mContext, R.color.transistor_white); + int backgroundColor = ContextCompat.getColor(mActivity, R.color.transistor_white); mBackgroundColor = new Paint(); mBackgroundColor.setColor(backgroundColor); } @@ -68,7 +68,7 @@ public ImageHelper(Uri inputImageUri, Context context) { /* Setter for color of background */ public void setBackgroundColor(int color) { - int backgroundColor = ContextCompat.getColor(mContext, color); + int backgroundColor = ContextCompat.getColor(mActivity, color); mBackgroundColor.setColor(backgroundColor); } @@ -141,7 +141,7 @@ private Bitmap decodeSampledBitmapFromUri(Uri imageUri, int reqWidth, int reqHei ParcelFileDescriptor parcelFileDescriptor = null; try { - parcelFileDescriptor = mContext.getContentResolver().openFileDescriptor(imageUri, "r"); + parcelFileDescriptor = mActivity.getContentResolver().openFileDescriptor(imageUri, "r"); } catch (FileNotFoundException e) { // TODO handle error e.printStackTrace(); diff --git a/app/src/main/java/org/y20k/transistor/helpers/StationContextMenu.java b/app/src/main/java/org/y20k/transistor/helpers/StationContextMenu.java index 9ee9357b..c3eb3f35 100644 --- a/app/src/main/java/org/y20k/transistor/helpers/StationContextMenu.java +++ b/app/src/main/java/org/y20k/transistor/helpers/StationContextMenu.java @@ -14,8 +14,8 @@ package org.y20k.transistor.helpers; +import android.app.Activity; import android.app.DialogFragment; -import android.content.Context; import android.content.Intent; import android.support.v4.content.LocalBroadcastManager; import android.view.MenuItem; @@ -42,7 +42,7 @@ public class StationContextMenu extends DialogFragment { /* Main class variables */ private View mView; private int mStationID; - private Context mContext; + private Activity mActivity; private Collection mCollection; private StationChangedListener mStationChangedListener; @@ -66,8 +66,8 @@ public void setStationChangedListener(StationChangedListener stationChangedListe /* Initializer for main class variables */ - public void initialize(Context context, Collection collection, View view, int stationID) { - mContext = context; + public void initialize(Activity activity, Collection collection, View view, int stationID) { + mActivity = activity; mCollection = collection; mView = view; mStationID = stationID; @@ -77,7 +77,7 @@ public void initialize(Context context, Collection collection, View view, int st /* Displays context menu */ public void show() { - PopupMenu popup = new PopupMenu(mContext, mView); + PopupMenu popup = new PopupMenu(mActivity, mView); popup.inflate(R.menu.menu_main_list_item); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override @@ -92,7 +92,7 @@ public boolean onMenuItemClick(MenuItem item) { Intent i = new Intent(); i.setAction(ACTION_IMAGE_CHANGE_REQUESTED); i.putExtra(STATION_ID, mStationID); - LocalBroadcastManager.getInstance(mContext.getApplicationContext()).sendBroadcast(i); + LocalBroadcastManager.getInstance(mActivity.getApplication()).sendBroadcast(i); return true; @@ -101,7 +101,7 @@ public boolean onMenuItemClick(MenuItem item) { // get name of station String stationName = mCollection.getStations().get(mStationID).getStationName(); // construct rename dialog - DialogRename dialogRename = new DialogRename(mContext, mCollection, stationName, mStationID); + DialogRename dialogRename = new DialogRename(mActivity, mCollection, stationName, mStationID); dialogRename.setStationRenamedListener(new DialogRename.StationRenamedListener() { @Override public void stationRenamed() { @@ -117,7 +117,7 @@ public void stationRenamed() { // CASE DELETE case R.id.menu_delete: // construct delete dialog - DialogDelete dialogDelete = new DialogDelete(mContext, mCollection, mStationID); + DialogDelete dialogDelete = new DialogDelete(mActivity, mCollection, mStationID); // run dialog dialogDelete.show(); return true; diff --git a/app/src/main/java/org/y20k/transistor/helpers/StationDownloader.java b/app/src/main/java/org/y20k/transistor/helpers/StationDownloader.java index ba009a30..136bd528 100644 --- a/app/src/main/java/org/y20k/transistor/helpers/StationDownloader.java +++ b/app/src/main/java/org/y20k/transistor/helpers/StationDownloader.java @@ -14,7 +14,7 @@ package org.y20k.transistor.helpers; -import android.content.Context; +import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.support.v4.content.LocalBroadcastManager; @@ -43,7 +43,7 @@ public class StationDownloader extends AsyncTask<Void, Void, Station> { private static final String ACTION_COLLECTION_CHANGED = "org.y20k.transistor.action.COLLECTION_CHANGED"; /* Main class variables */ - private final Context mContext; + private final Activity mActivity; private Collection mCollection; private File mFolder; private String mStationURLString; @@ -52,8 +52,8 @@ public class StationDownloader extends AsyncTask<Void, Void, Station> { /* Constructor */ - public StationDownloader(String stationURLString, Context context) { - mContext = context; + public StationDownloader(String stationURLString, Activity activity) { + mActivity = activity; mStationURLString = stationURLString; // get mFolder and mStationURL @@ -62,8 +62,8 @@ public StationDownloader(String stationURLString, Context context) { // load collection mCollection = new Collection(mFolder); // notify user - String toastMessage = mContext.getString(R.string.toastmessage_add_download_started); - Toast.makeText(mContext, toastMessage + mStationURLString, Toast.LENGTH_LONG).show(); + String toastMessage = mActivity.getString(R.string.toastmessage_add_download_started); + Toast.makeText(mActivity, toastMessage + mStationURLString, Toast.LENGTH_LONG).show(); } else { // something is wrong with external storage or url mErrors = true; @@ -90,8 +90,8 @@ protected void onPostExecute(Station station) { if (mErrors || station.getDownloadError()) { // construct error message - String errorTitle = mContext.getResources().getString(R.string.dialog_error_title_download); - String errorMessage = mContext.getResources().getString(R.string.dialog_error_message_download); + String errorTitle = mActivity.getResources().getString(R.string.dialog_error_title_download); + String errorMessage = mActivity.getResources().getString(R.string.dialog_error_message_download); // construct details string StringBuilder sb = new StringBuilder(""); @@ -107,7 +107,7 @@ protected void onPostExecute(Station station) { String errorDetails = sb.toString(); // show error dialog - DialogError dialogError = new DialogError(mContext, errorTitle, errorMessage, errorDetails); + DialogError dialogError = new DialogError(mActivity, errorTitle, errorMessage, errorDetails); dialogError.show(); } else { @@ -116,7 +116,7 @@ protected void onPostExecute(Station station) { // send local broadcast Intent i = new Intent(); i.setAction(ACTION_COLLECTION_CHANGED); - LocalBroadcastManager.getInstance(mContext).sendBroadcast(i); + LocalBroadcastManager.getInstance(mActivity.getApplication()).sendBroadcast(i); } } @@ -125,11 +125,11 @@ protected void onPostExecute(Station station) { /* Get collection folder from external storage */ private boolean getFolder() { try { - mFolder = new File(mContext.getExternalFilesDir("Collection").toString()); + mFolder = new File(mActivity.getExternalFilesDir("Collection").toString()); return true; } catch (NullPointerException e) { // notify user and log exception - Toast.makeText(mContext, R.string.toastalert_no_external_storage, Toast.LENGTH_LONG).show(); + Toast.makeText(mActivity, R.string.toastalert_no_external_storage, Toast.LENGTH_LONG).show(); Log.e(LOG_TAG, "Unable to access external storage."); return false; }