Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
From 27adec28b9535629350d19f232aa6a86c1a7768b Mon Sep 17 00:00:00 2001
From: Tad <tad@spotco.us>
Date: Mon, 29 Aug 2016 06:01:01 -0400
Subject: [PATCH] Freedom
---
app/build.gradle | 7 -
app/proguard.cfg | 4 +-
app/src/main/AndroidManifest.xml | 12 -
.../dsub/service/ChromeCastController.java | 548 ---------------------
.../daneren2005/dsub/util/MediaRouteManager.java | 36 +-
.../daneren2005/dsub/util/compat/CastCompat.java | 57 ---
gradlew | 0
7 files changed, 4 insertions(+), 660 deletions(-)
delete mode 100644 app/src/main/java/github/daneren2005/dsub/service/ChromeCastController.java
delete mode 100644 app/src/main/java/github/daneren2005/dsub/util/compat/CastCompat.java
mode change 100644 => 100755 gradlew
diff --git a/app/build.gradle b/app/build.gradle
index 85bd439..99e7114 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -32,12 +32,6 @@ android {
lintOptions {
checkReleaseBuilds false
}
-
- signingConfigs {
- debug {
- storeFile file('../debug.keystore')
- }
- }
}
dependencies {
@@ -48,7 +42,6 @@ dependencies {
compile 'com.android.support:mediarouter-v7:23.4.+'
compile 'com.android.support:recyclerview-v7:23.4.+'
compile 'com.android.support:design:23.4.+'
- compile 'com.google.android.gms:play-services-cast:8.1.0'
compile 'com.sothree.slidinguppanel:library:3.0.0'
compile 'de.hdodenhof:circleimageview:1.2.1'
compile group: 'org.fourthline.cling', name: 'cling-core', version:'2.1.0'
diff --git a/app/proguard.cfg b/app/proguard.cfg
index a18ae91..ad3b907 100644
--- a/app/proguard.cfg
+++ b/app/proguard.cfg
@@ -1,5 +1,5 @@
-dontobfuscate
--optimizationpasses 5
+-optimizationpasses 2
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
@@ -59,4 +59,4 @@
-dontwarn org.seamless.**
-dontwarn org.eclipse.**
-dontwarn java.**
--keepattributes *Annotation*, InnerClasses
\ No newline at end of file
+-keepattributes *Annotation*, InnerClasses
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 999fb15..c1af254 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -240,18 +240,6 @@
<meta-data android:name="android.app.default_searchable"
android:value="github.daneren2005.dsub.activity.QueryReceiverActivity"/>
-
- <meta-data android:name="com.google.android.backup.api_key"
- android:value="AEdPqrEAAAAIUhOMtwa_eG-f0oYUHnetl_Cz7cO9zae8ZXOK5w"/>
-
- <meta-data
- android:name="com.google.android.gms.version"
- android:value="@integer/google_play_services_version" />
-
- <meta-data android:name="com.google.android.gms.car.application"
- android:resource="@xml/auto_app_description"/>
- <meta-data android:name="com.google.android.gms.car.notification.SmallIcon"
- android:resource="@drawable/stat_notify_playing" />
</application>
</manifest>
diff --git a/app/src/main/java/github/daneren2005/dsub/service/ChromeCastController.java b/app/src/main/java/github/daneren2005/dsub/service/ChromeCastController.java
deleted file mode 100644
index c200713..0000000
--- a/app/src/main/java/github/daneren2005/dsub/service/ChromeCastController.java
+++ /dev/null
@@ -1,548 +0,0 @@
-/*
- This file is part of Subsonic.
- Subsonic is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- Subsonic is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
- Copyright 2014 (C) Scott Jackson
-*/
-
-package github.daneren2005.dsub.service;
-
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.google.android.gms.cast.ApplicationMetadata;
-import com.google.android.gms.cast.Cast;
-import com.google.android.gms.cast.CastDevice;
-import com.google.android.gms.cast.MediaInfo;
-import com.google.android.gms.cast.MediaMetadata;
-import com.google.android.gms.cast.MediaStatus;
-import com.google.android.gms.cast.RemoteMediaPlayer;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.api.GoogleApiClient;
-import com.google.android.gms.common.api.ResultCallback;
-import com.google.android.gms.common.api.Status;
-import com.google.android.gms.common.images.WebImage;
-
-import java.io.File;
-import java.io.IOException;
-
-import github.daneren2005.dsub.R;
-import github.daneren2005.dsub.domain.MusicDirectory;
-import github.daneren2005.dsub.domain.PlayerState;
-import github.daneren2005.dsub.domain.RemoteControlState;
-import github.daneren2005.dsub.util.Constants;
-import github.daneren2005.dsub.util.FileUtil;
-import github.daneren2005.dsub.util.Util;
-import github.daneren2005.dsub.util.compat.CastCompat;
-import github.daneren2005.serverproxy.FileProxy;
-import github.daneren2005.serverproxy.ServerProxy;
-import github.daneren2005.serverproxy.WebProxy;
-
-/**
- * Created by owner on 2/9/14.
- */
-public class ChromeCastController extends RemoteController {
- private static final String TAG = ChromeCastController.class.getSimpleName();
-
- private CastDevice castDevice;
- private GoogleApiClient apiClient;
-
- private boolean applicationStarted = false;
- private boolean waitingForReconnect = false;
- private boolean error = false;
- private boolean ignoreNextPaused = false;
- private String sessionId;
- private boolean isStopping = false;
- private Runnable afterUpdateComplete = null;
-
- private ServerProxy proxy;
- private String rootLocation;
- private RemoteMediaPlayer mediaPlayer;
- private double gain = 0.5;
-
- public ChromeCastController(DownloadService downloadService, CastDevice castDevice) {
- this.downloadService = downloadService;
- this.castDevice = castDevice;
-
- SharedPreferences prefs = Util.getPreferences(downloadService);
- rootLocation = prefs.getString(Constants.PREFERENCES_KEY_CACHE_LOCATION, null);
- }
-
- @Override
- public void create(boolean playing, int seconds) {
- downloadService.setPlayerState(PlayerState.PREPARING);
-
- ConnectionCallbacks connectionCallbacks = new ConnectionCallbacks(playing, seconds);
- ConnectionFailedListener connectionFailedListener = new ConnectionFailedListener();
- Cast.Listener castClientListener = new Cast.Listener() {
- @Override
- public void onApplicationStatusChanged() {
- if (apiClient != null && apiClient.isConnected()) {
- Log.i(TAG, "onApplicationStatusChanged: " + Cast.CastApi.getApplicationStatus(apiClient));
- }
- }
-
- @Override
- public void onVolumeChanged() {
- if (apiClient != null && applicationStarted) {
- try {
- gain = Cast.CastApi.getVolume(apiClient);
- } catch (Exception e) {
- Log.w(TAG, "Failed to get volume");
- }
- }
- }
-
- @Override
- public void onApplicationDisconnected(int errorCode) {
- shutdownInternal();
- }
-
- };
-
- Cast.CastOptions.Builder apiOptionsBuilder = Cast.CastOptions.builder(castDevice, castClientListener).setVerboseLoggingEnabled(true);
- apiClient = new GoogleApiClient.Builder(downloadService).useDefaultAccount()
- .addApi(Cast.API, apiOptionsBuilder.build())
- .addConnectionCallbacks(connectionCallbacks)
- .addOnConnectionFailedListener(connectionFailedListener)
- .build();
-
- apiClient.connect();
- }
-
- @Override
- public void start() {
- if(error) {
- error = false;
- Log.w(TAG, "Attempting to restart song");
- startSong(downloadService.getCurrentPlaying(), true, 0);
- return;
- }
-
- try {
- mediaPlayer.play(apiClient);
- } catch(Exception e) {
- Log.e(TAG, "Failed to start");
- }
- }
-
- @Override
- public void stop() {
- try {
- mediaPlayer.pause(apiClient);
- } catch(Exception e) {
- Log.e(TAG, "Failed to pause");
- }
- }
-
- @Override
- public void shutdown() {
- try {
- if(mediaPlayer != null && !error) {
- mediaPlayer.stop(apiClient);
- }
- } catch(Exception e) {
- Log.e(TAG, "Failed to stop mediaPlayer", e);
- }
-
- try {
- if(apiClient != null) {
- Cast.CastApi.stopApplication(apiClient);
- Cast.CastApi.removeMessageReceivedCallbacks(apiClient, mediaPlayer.getNamespace());
- mediaPlayer = null;
- applicationStarted = false;
- }
- } catch(Exception e) {
- Log.e(TAG, "Failed to shutdown application", e);
- }
-
- if(apiClient != null && apiClient.isConnected()) {
- apiClient.disconnect();
- }
- apiClient = null;
-
- if(proxy != null) {
- proxy.stop();
- proxy = null;
- }
- }
-
- private void shutdownInternal() {
- // This will call this.shutdown() indirectly
- downloadService.setRemoteEnabled(RemoteControlState.LOCAL, null);
- }
-
- @Override
- public void updatePlaylist() {
- if(downloadService.getCurrentPlaying() == null) {
- startSong(null, false, 0);
- }
- }
-
- @Override
- public void changePosition(int seconds) {
- try {
- mediaPlayer.seek(apiClient, seconds * 1000L);
- } catch(Exception e) {
- Log.e(TAG, "FAiled to seek to " + seconds);
- }
- }
-
- @Override
- public void changeTrack(int index, DownloadFile song) {
- startSong(song, true, 0);
- }
-
- @Override
- public void setVolume(int volume) {
- gain = volume / 10.0;
-
- try {
- Cast.CastApi.setVolume(apiClient, gain);
- } catch(Exception e) {
- Log.e(TAG, "Failed to the volume");
- }
- }
- @Override
- public void updateVolume(boolean up) {
- double delta = up ? 0.1 : -0.1;
- gain += delta;
- gain = Math.max(gain, 0.0);
- gain = Math.min(gain, 1.0);
-
- try {
- Cast.CastApi.setVolume(apiClient, gain);
- } catch(Exception e) {
- Log.e(TAG, "Failed to the volume");
- }
- }
- @Override
- public double getVolume() {
- return Cast.CastApi.getVolume(apiClient);
- }
-
- @Override
- public int getRemotePosition() {
- if(mediaPlayer != null) {
- return (int) (mediaPlayer.getApproximateStreamPosition() / 1000L);
- } else {
- return 0;
- }
- }
-
- @Override
- public int getRemoteDuration() {
- if(mediaPlayer != null) {
- return (int) (mediaPlayer.getStreamDuration() / 1000L);
- } else {
- return 0;
- }
- }
-
- void startSong(final DownloadFile currentPlaying, final boolean autoStart, final int position) {
- if(currentPlaying == null) {
- try {
- if (mediaPlayer != null && !error && !isStopping) {
- isStopping = true;
- mediaPlayer.stop(apiClient).setResultCallback(new ResultCallback<RemoteMediaPlayer.MediaChannelResult>() {
- @Override
- public void onResult(RemoteMediaPlayer.MediaChannelResult mediaChannelResult) {
- isStopping = false;
-
- if(afterUpdateComplete != null) {
- afterUpdateComplete.run();
- afterUpdateComplete = null;
- }
- }
- });
- }
- } catch(Exception e) {
- // Just means it didn't need to be stopped
- }
- downloadService.setPlayerState(PlayerState.IDLE);
- return;
- } else if(isStopping) {
- afterUpdateComplete = new Runnable() {
- @Override
- public void run() {
- startSong(currentPlaying, autoStart, position);
- }
- };
- return;
- }
-
- downloadService.setPlayerState(PlayerState.PREPARING);
- MusicDirectory.Entry song = currentPlaying.getSong();
-
- try {
- MusicService musicService = MusicServiceFactory.getMusicService(downloadService);
- String url;
- // Offline, use file proxy
- if(Util.isOffline(downloadService) || song.getId().indexOf(rootLocation) != -1) {
- if(proxy == null) {
- proxy = new FileProxy(downloadService);
- proxy.start();
- }
-
- // Offline song
- if(song.getId().indexOf(rootLocation) != -1) {
- url = proxy.getPublicAddress(song.getId());
- } else {
- // Playing online song in offline mode
- url = proxy.getPublicAddress(currentPlaying.getCompleteFile().getPath());
- }
- } else {
- // Check if we want a proxy going still
- if(Util.isCastProxy(downloadService)) {
- if(proxy instanceof FileProxy) {
- proxy.stop();
- proxy = null;
- }
-
- if(proxy == null) {
- proxy = createWebProxy();
- proxy.start();
- }
- } else if(proxy != null) {
- proxy.stop();
- proxy = null;
- }
-
- if(song.isVideo()) {
- url = musicService.getHlsUrl(song.getId(), currentPlaying.getBitRate(), downloadService);
- } else {
- url = musicService.getMusicUrl(downloadService, song, currentPlaying.getBitRate());
- }
-
- // If proxy is going, it is a WebProxy
- if(proxy != null) {
- url = proxy.getPublicAddress(url);
- }
- }
-
- // Setup song/video information
- MediaMetadata meta = new MediaMetadata(song.isVideo() ? MediaMetadata.MEDIA_TYPE_MOVIE : MediaMetadata.MEDIA_TYPE_MUSIC_TRACK);
- meta.putString(MediaMetadata.KEY_TITLE, song.getTitle());
- if(song.getTrack() != null) {
- meta.putInt(MediaMetadata.KEY_TRACK_NUMBER, song.getTrack());
- }
- if(!song.isVideo()) {
- meta.putString(MediaMetadata.KEY_ARTIST, song.getArtist());
- meta.putString(MediaMetadata.KEY_ALBUM_ARTIST, song.getArtist());
- meta.putString(MediaMetadata.KEY_ALBUM_TITLE, song.getAlbum());
-
- if(castDevice.hasCapability(CastDevice.CAPABILITY_VIDEO_OUT)) {
- if (proxy == null || proxy instanceof WebProxy) {
- String coverArt = musicService.getCoverArtUrl(downloadService, song);
-
- // If proxy is going, it is a web proxy
- if (proxy != null) {
- coverArt = proxy.getPublicAddress(coverArt);
- }
-
- meta.addImage(new WebImage(Uri.parse(coverArt)));
- } else {
- File coverArtFile = FileUtil.getAlbumArtFile(downloadService, song);
- if (coverArtFile != null && coverArtFile.exists()) {
- String coverArt = proxy.getPublicAddress(coverArtFile.getPath());
- meta.addImage(new WebImage(Uri.parse(coverArt)));
- }
- }
- }
- }
-
- String contentType;
- if(song.isVideo()) {
- contentType = "application/x-mpegURL";
- }
- else if(song.getTranscodedContentType() != null) {
- contentType = song.getTranscodedContentType();
- } else if(song.getContentType() != null) {
- contentType = song.getContentType();
- } else {
- contentType = "audio/mpeg";
- }
-
- // Load it into a MediaInfo wrapper
- MediaInfo mediaInfo = new MediaInfo.Builder(url)
- .setContentType(contentType)
- .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
- .setMetadata(meta)
- .build();
-
- if(autoStart) {
- ignoreNextPaused = true;
- }
-
- ResultCallback callback = new ResultCallback<RemoteMediaPlayer.MediaChannelResult>() {
- @Override
- public void onResult(RemoteMediaPlayer.MediaChannelResult result) {
- if (result.getStatus().isSuccess()) {
- // Handled in other handler
- } else {
- Log.e(TAG, "Failed to load: " + result.getStatus().toString());
- failedLoad();
- }
- }
- };
-
- if(position > 0) {
- mediaPlayer.load(apiClient, mediaInfo, autoStart, position * 1000L).setResultCallback(callback);
- } else {
- mediaPlayer.load(apiClient, mediaInfo, autoStart).setResultCallback(callback);
- }
- } catch (IllegalStateException e) {
- Log.e(TAG, "Problem occurred with media during loading", e);
- failedLoad();
- } catch (Exception e) {
- Log.e(TAG, "Problem opening media during loading", e);
- failedLoad();
- }
- }
-
- private void failedLoad() {
- Util.toast(downloadService, downloadService.getResources().getString(R.string.download_failed_to_load));
- downloadService.setPlayerState(PlayerState.STOPPED);
- error = true;
- }
-
-
- private class ConnectionCallbacks implements GoogleApiClient.ConnectionCallbacks {
- private boolean isPlaying;
- private int position;
- private ResultCallback<Cast.ApplicationConnectionResult> resultCallback;
-
- ConnectionCallbacks(boolean isPlaying, int position) {
- this.isPlaying = isPlaying;
- this.position = position;
-
- resultCallback = new ResultCallback<Cast.ApplicationConnectionResult>() {
- @Override
- public void onResult(Cast.ApplicationConnectionResult result) {
- Status status = result.getStatus();
- if (status.isSuccess()) {
- ApplicationMetadata applicationMetadata = result.getApplicationMetadata();
- sessionId = result.getSessionId();
- String applicationStatus = result.getApplicationStatus();
- boolean wasLaunched = result.getWasLaunched();
-
- applicationStarted = true;
- setupChannel();
- } else {
- shutdownInternal();
- }
- }
- };
- }
-
- @Override
- public void onConnected(Bundle connectionHint) {
- if (waitingForReconnect) {
- Log.i(TAG, "Reconnecting");
- reconnectApplication();
- } else {
- launchApplication();
- }
- }
-
- @Override
- public void onConnectionSuspended(int cause) {
- Log.w(TAG, "Connection suspended");
- isPlaying = downloadService.getPlayerState() == PlayerState.STARTED;
- position = getRemotePosition();
- waitingForReconnect = true;
- }
-
- void launchApplication() {
- try {
- Cast.CastApi.launchApplication(apiClient, CastCompat.APPLICATION_ID, false).setResultCallback(resultCallback);
- } catch (Exception e) {
- Log.e(TAG, "Failed to launch application", e);
- }
- }
- void reconnectApplication() {
- try {
- Cast.CastApi.joinApplication(apiClient, CastCompat.APPLICATION_ID, sessionId).setResultCallback(resultCallback);
- } catch (Exception e) {
- Log.e(TAG, "Failed to reconnect application", e);
- }
- }
- void setupChannel() {
- if(!waitingForReconnect) {
- mediaPlayer = new RemoteMediaPlayer();
- mediaPlayer.setOnStatusUpdatedListener(new RemoteMediaPlayer.OnStatusUpdatedListener() {
- @Override
- public void onStatusUpdated() {
- MediaStatus mediaStatus = mediaPlayer.getMediaStatus();
- if (mediaStatus == null) {
- return;
- }
-
- switch (mediaStatus.getPlayerState()) {
- case MediaStatus.PLAYER_STATE_PLAYING:
- if (ignoreNextPaused) {
- ignoreNextPaused = false;
- }
- downloadService.setPlayerState(PlayerState.STARTED);
- break;
- case MediaStatus.PLAYER_STATE_PAUSED:
- if (!ignoreNextPaused) {
- downloadService.setPlayerState(PlayerState.PAUSED);
- }
- break;
- case MediaStatus.PLAYER_STATE_BUFFERING:
- downloadService.setPlayerState(PlayerState.PREPARING);
- break;
- case MediaStatus.PLAYER_STATE_IDLE:
- if (mediaStatus.getIdleReason() == MediaStatus.IDLE_REASON_FINISHED) {
- downloadService.onSongCompleted();
- } else if (mediaStatus.getIdleReason() == MediaStatus.IDLE_REASON_INTERRUPTED) {
- if (downloadService.getPlayerState() != PlayerState.PREPARING) {
- downloadService.setPlayerState(PlayerState.PREPARING);
- }
- } else if (mediaStatus.getIdleReason() == MediaStatus.IDLE_REASON_ERROR) {
- Log.e(TAG, "Idle due to unknown error");
- downloadService.onSongCompleted();
- } else {
- Log.w(TAG, "Idle reason: " + mediaStatus.getIdleReason());
- downloadService.setPlayerState(PlayerState.IDLE);
- }
- break;
- }
- }
- });
- }
-
- try {
- Cast.CastApi.setMessageReceivedCallbacks(apiClient, mediaPlayer.getNamespace(), mediaPlayer);
- } catch (Exception e) {
- Log.e(TAG, "Exception while creating channel", e);
- }
-
- if(!waitingForReconnect) {
- DownloadFile currentPlaying = downloadService.getCurrentPlaying();
- startSong(currentPlaying, isPlaying, position);
- }
- if(waitingForReconnect) {
- waitingForReconnect = false;
- }
- }
- }
-
- private class ConnectionFailedListener implements GoogleApiClient.OnConnectionFailedListener {
- @Override
- public void onConnectionFailed(ConnectionResult result) {
- shutdownInternal();
- }
- }
-}
diff --git a/app/src/main/java/github/daneren2005/dsub/util/MediaRouteManager.java b/app/src/main/java/github/daneren2005/dsub/util/MediaRouteManager.java
index 9aa54c4..1bfcd53 100644
--- a/app/src/main/java/github/daneren2005/dsub/util/MediaRouteManager.java
+++ b/app/src/main/java/github/daneren2005/dsub/util/MediaRouteManager.java
@@ -21,9 +21,6 @@ import android.support.v7.media.MediaRouteSelector;
import android.support.v7.media.MediaRouter;
import android.util.Log;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GooglePlayServicesUtil;
-
import java.util.ArrayList;
import java.util.List;
@@ -32,7 +29,6 @@ import github.daneren2005.dsub.provider.DLNARouteProvider;
import github.daneren2005.dsub.provider.JukeboxRouteProvider;
import github.daneren2005.dsub.service.DownloadService;
import github.daneren2005.dsub.service.RemoteController;
-import github.daneren2005.dsub.util.compat.CastCompat;
import static android.support.v7.media.MediaRouter.RouteInfo;
@@ -49,25 +45,11 @@ public class MediaRouteManager extends MediaRouter.Callback {
private List<MediaRouteProvider> providers = new ArrayList<MediaRouteProvider>();
private List<MediaRouteProvider> onlineProviders = new ArrayList<MediaRouteProvider>();
- static {
- try {
- CastCompat.checkAvailable();
- castAvailable = true;
- } catch(Throwable t) {
- castAvailable = false;
- }
- }
-
public MediaRouteManager(DownloadService downloadService) {
this.downloadService = downloadService;
router = MediaRouter.getInstance(downloadService);
- // Check if play services is available
- int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(downloadService);
- if(result != ConnectionResult.SUCCESS){
- Log.w(TAG, "No play services, failed with result: " + result);
- castAvailable = false;
- }
+ castAvailable = false;
addProviders();
buildSelector();
@@ -81,13 +63,6 @@ public class MediaRouteManager extends MediaRouter.Callback {
@Override
public void onRouteSelected(MediaRouter router, RouteInfo info) {
- if(castAvailable) {
- RemoteController controller = CastCompat.getController(downloadService, info);
- if(controller != null) {
- downloadService.setRemoteEnabled(RemoteControlState.CHROMECAST, controller);
- }
- }
-
if(downloadService.isRemoteEnabled()) {
downloadService.registerRoute(router);
}
@@ -135,11 +110,7 @@ public class MediaRouteManager extends MediaRouter.Callback {
return null;
}
public RemoteController getRemoteController(RouteInfo info) {
- if(castAvailable) {
- return CastCompat.getController(downloadService, info);
- } else {
- return null;
- }
+ return null;
}
public void addOnlineProviders() {
@@ -170,9 +141,6 @@ public class MediaRouteManager extends MediaRouter.Callback {
if(UserUtil.canJukebox()) {
builder.addControlCategory(JukeboxRouteProvider.CATEGORY_JUKEBOX_ROUTE);
}
- if(castAvailable) {
- builder.addControlCategory(CastCompat.getCastControlCategory());
- }
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
builder.addControlCategory(DLNARouteProvider.CATEGORY_DLNA);
}
diff --git a/app/src/main/java/github/daneren2005/dsub/util/compat/CastCompat.java b/app/src/main/java/github/daneren2005/dsub/util/compat/CastCompat.java
deleted file mode 100644
index ab64bca..0000000
--- a/app/src/main/java/github/daneren2005/dsub/util/compat/CastCompat.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- This file is part of Subsonic.
- Subsonic is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- Subsonic is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
- Copyright 2014 (C) Scott Jackson
-*/
-
-package github.daneren2005.dsub.util.compat;
-
-import android.support.v7.media.MediaRouter;
-
-import com.google.android.gms.cast.CastDevice;
-import com.google.android.gms.cast.CastMediaControlIntent;
-
-import github.daneren2005.dsub.service.ChromeCastController;
-import github.daneren2005.dsub.service.DownloadService;
-import github.daneren2005.dsub.service.RemoteController;
-
-/**
- * Created by owner on 2/9/14.
- */
-public final class CastCompat {
- public static final String APPLICATION_ID = "5F85EBEB";
-
- static {
- try {
- Class.forName("com.google.android.gms.cast.CastDevice");
- } catch (Exception ex) {
- throw new RuntimeException(ex);
- }
- }
-
- public static void checkAvailable() throws Throwable {
- // Calling here forces class initialization.
- }
-
- 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(APPLICATION_ID);
- }
-}
diff --git a/gradlew b/gradlew
old mode 100644
new mode 100755
--
2.9.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment