summaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorDomingos Lopes <domingos86lopes@gmail.com>2016-03-19 12:42:26 -0400
committerDomingos Lopes <domingos86lopes+github@gmail.com>2016-04-23 21:39:52 -0400
commit6224f80c898e5cf78719e266fb719d424295ec83 (patch)
treecccdd8c5e2658d50592c7e3a1fb1924144533404 /app/src/main/java
parentafbae2a7ef8b0466e8e89e82708c2fcb9f77ff35 (diff)
downloadAntennaPod-6224f80c898e5cf78719e266fb719d424295ec83.zip
add cast button to important activities
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java97
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java3
3 files changed, 99 insertions, 4 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java
new file mode 100644
index 000000000..497247ad4
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java
@@ -0,0 +1,97 @@
+package de.danoeh.antennapod.activity;
+
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.support.v7.app.AppCompatActivity;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager;
+
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.preferences.UserPreferences;
+
+/**
+ * Activity that allows for showing the MediaRouter button whenever there's a cast device in the
+ * network.
+ */
+public abstract class CastEnabledActivity extends AppCompatActivity
+ implements SharedPreferences.OnSharedPreferenceChangeListener {
+
+ protected VideoCastManager mCastManager;
+ private int castUICounter;
+ protected MenuItem mMediaRouteMenuItem;
+ protected boolean isCastEnabled;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ PreferenceManager.getDefaultSharedPreferences(this).
+ registerOnSharedPreferenceChangeListener(this);
+
+ castUICounter = 0;
+ mCastManager = VideoCastManager.getInstance();
+ isCastEnabled = UserPreferences.isCastEnabled();
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ getMenuInflater().inflate(R.menu.cast_enabled, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ super.onPrepareOptionsMenu(menu);
+ mMediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
+ mMediaRouteMenuItem.setEnabled(isCastEnabled);
+ mMediaRouteMenuItem = mCastManager.addMediaRouterButton(menu, R.id.media_route_menu_item);
+ return true;
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ castUICounter++;
+ if (isCastEnabled) {
+ mCastManager.incrementUiCounter();
+ castUICounter++;
+ }
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ castUICounter--;
+ if (isCastEnabled) {
+ mCastManager.decrementUiCounter();
+ castUICounter--;
+ }
+ }
+
+ //This whole method might just be useless because it's assumed that the cast button
+ //won't show where the user actually has the power to change the preference.
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ if (key.equals(UserPreferences.PREF_CAST_ENABLED)) {
+ isCastEnabled = UserPreferences.isCastEnabled();
+ mMediaRouteMenuItem.setEnabled(isCastEnabled);
+ if (isCastEnabled) {
+ //Test if activity is resumed but without UI counter incremented
+ if (castUICounter==1) {
+ mCastManager.incrementUiCounter();
+ castUICounter++;
+ }
+ } else {
+ if (castUICounter > 1) {
+ mCastManager.decrementUiCounter();
+ castUICounter--;
+ }
+ //TODO disable any current casting (or possibly do it within the PlaybackService)
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
index 8599eb4f4..beaea0fb9 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
@@ -17,7 +17,6 @@ import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.util.TypedValue;
@@ -70,7 +69,7 @@ import rx.schedulers.Schedulers;
/**
* The activity that is shown when the user launches the app.
*/
-public class MainActivity extends AppCompatActivity implements NavDrawerActivity {
+public class MainActivity extends CastEnabledActivity implements NavDrawerActivity {
private static final String TAG = "MainActivity";
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
index 4911f61bc..3f8cfc557 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
@@ -12,7 +12,6 @@ import android.os.Build;
import android.os.Bundle;
import android.support.v4.view.ViewCompat;
import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
@@ -58,7 +57,7 @@ import rx.schedulers.Schedulers;
* Provides general features which are both needed for playing audio and video
* files.
*/
-public abstract class MediaplayerActivity extends AppCompatActivity implements OnSeekBarChangeListener {
+public abstract class MediaplayerActivity extends CastEnabledActivity implements OnSeekBarChangeListener {
private static final String TAG = "MediaplayerActivity";
private static final String PREFS = "MediaPlayerActivityPreferences";
private static final String PREF_SHOW_TIME_LEFT = "showTimeLeft";