diff options
author | Carey Metcalfe <carey@cmetcalfe.ca> | 2017-10-13 22:34:23 -0400 |
---|---|---|
committer | Carey Metcalfe <carey@cmetcalfe.ca> | 2017-10-13 23:02:15 -0400 |
commit | 28336265e822ab4b2ff1697fd5066fc0cfd88861 (patch) | |
tree | fff3daff98137c530a4d0eb2291acd5fc6709ef0 /app/src/google/java/github/daneren2005/dsub/util | |
parent | d0223c6eab8f58799c8c3ff0e67f5974c237e01c (diff) | |
download | dsub-28336265e822ab4b2ff1697fd5066fc0cfd88861.tar.gz dsub-28336265e822ab4b2ff1697fd5066fc0cfd88861.tar.bz2 dsub-28336265e822ab4b2ff1697fd5066fc0cfd88861.zip |
Use product flavours to enable builds without proprietary libraries
This commit uses build flavours to provide two different builds: A
'floss' build and a 'google' build.
- The 'floss' build builds a basic version of the app with no
dependencies on proprietary libraries.
- The 'google' build adds Chromecast support and a few other extras
provided by Google Play Services
Diffstat (limited to 'app/src/google/java/github/daneren2005/dsub/util')
-rw-r--r-- | app/src/google/java/github/daneren2005/dsub/util/compat/GoogleCompat.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/app/src/google/java/github/daneren2005/dsub/util/compat/GoogleCompat.java b/app/src/google/java/github/daneren2005/dsub/util/compat/GoogleCompat.java new file mode 100644 index 00000000..63992b0f --- /dev/null +++ b/app/src/google/java/github/daneren2005/dsub/util/compat/GoogleCompat.java @@ -0,0 +1,61 @@ +package github.daneren2005.dsub.util.compat; + +import android.content.Context; +import android.support.v7.media.MediaRouter; +import android.util.Log; + +import com.google.android.gms.cast.CastDevice; +import com.google.android.gms.cast.CastMediaControlIntent; +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.GoogleApiAvailability; +import com.google.android.gms.security.ProviderInstaller; + +import github.daneren2005.dsub.service.ChromeCastController; +import github.daneren2005.dsub.service.DownloadService; +import github.daneren2005.dsub.service.RemoteController; +import github.daneren2005.dsub.util.EnvironmentVariables; + +public final class GoogleCompat { + + private static final String TAG = GoogleCompat.class.getSimpleName(); + + public static boolean playServicesAvailable(Context context){ + int result = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context); + if(result != ConnectionResult.SUCCESS){ + Log.w(TAG, "No play services, failed with result: " + result); + return false; + } + return true; + } + + public static void installProvider(Context context) throws Exception{ + ProviderInstaller.installIfNeeded(context); + } + + public static boolean castAvailable() { + if (EnvironmentVariables.CAST_APPLICATION_ID == null) { + Log.w(TAG, "CAST_APPLICATION_ID not provided"); + return false; + } + try { + Class.forName("com.google.android.gms.cast.CastDevice"); + } catch (Exception ex) { + Log.w(TAG, "Chromecast library not available"); + return false; + } + return true; + } + + public static RemoteController getController(DownloadService downloadService, MediaRouter.RouteInfo info) { + CastDevice device = CastDevice.getFromBundle(info.getExtras()); + if(device != null) { + return new ChromeCastController(downloadService, device); + } else { + return null; + } + } + + public static String getCastControlCategory() { + return CastMediaControlIntent.categoryForCast(EnvironmentVariables.CAST_APPLICATION_ID); + } +} |