aboutsummaryrefslogtreecommitdiff
path: root/src/github/daneren2005/dsub/util/Util.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/github/daneren2005/dsub/util/Util.java')
-rw-r--r--src/github/daneren2005/dsub/util/Util.java106
1 files changed, 81 insertions, 25 deletions
diff --git a/src/github/daneren2005/dsub/util/Util.java b/src/github/daneren2005/dsub/util/Util.java
index ceeb6ade..5dd639c4 100644
--- a/src/github/daneren2005/dsub/util/Util.java
+++ b/src/github/daneren2005/dsub/util/Util.java
@@ -38,6 +38,7 @@ import android.media.AudioManager;
import android.media.AudioManager.OnAudioFocusChangeListener;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
+import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Environment;
@@ -65,6 +66,7 @@ import github.daneren2005.dsub.receiver.MediaButtonIntentReceiver;
import github.daneren2005.dsub.service.DownloadFile;
import github.daneren2005.dsub.service.DownloadService;
import github.daneren2005.dsub.service.DownloadServiceImpl;
+
import org.apache.http.HttpEntity;
import java.io.ByteArrayOutputStream;
@@ -359,9 +361,12 @@ public final class Util {
String serverUrl = prefs.getString(Constants.PREFERENCES_KEY_SERVER_URL + instance, null);
if(allowAltAddress && Util.isWifiConnected(context)) {
- String internalUrl = prefs.getString(Constants.PREFERENCES_KEY_SERVER_INTERNAL_URL + instance, null);
- if(internalUrl != null && !"".equals(internalUrl) && !"http://".equals(internalUrl)) {
- serverUrl = internalUrl;
+ String SSID = prefs.getString(Constants.PREFERENCES_KEY_SERVER_LOCAL_NETWORK_SSID + instance, "");
+ if("".equals(SSID) || SSID.equals(Util.getSSID(context))) {
+ String internalUrl = prefs.getString(Constants.PREFERENCES_KEY_SERVER_INTERNAL_URL + instance, null);
+ if(internalUrl != null && !"".equals(internalUrl) && !"http://".equals(internalUrl)) {
+ serverUrl = internalUrl;
+ }
}
}
@@ -424,7 +429,14 @@ public final class Util {
}
public static String parseOfflineIDSearch(Context context, String id, String cacheLocation) {
- String name = id.replace(cacheLocation, "");
+ // Try to get this info based off of tags first
+ String name = parseOfflineIDSearch(id);
+ if(name != null) {
+ return name;
+ }
+
+ // Otherwise go nuts trying to parse from file structure
+ name = id.replace(cacheLocation, "");
if(name.startsWith("/")) {
name = name.substring(1);
}
@@ -461,6 +473,31 @@ public final class Util {
return name;
}
+ public static String parseOfflineIDSearch(String id) {
+ MusicDirectory.Entry entry = new MusicDirectory.Entry();
+ File file = new File(id);
+
+ if(file.exists()) {
+ entry.loadMetadata(file);
+
+ if(entry.getArtist() != null) {
+ String title = file.getName();
+ int index = title.lastIndexOf(".");
+ title = index == -1 ? title : title.substring(0, index);
+ title = title.substring(title.indexOf('-') + 1);
+
+ String query = "artist:\"" + entry.getArtist() + "\"" +
+ " AND title:\"" + title + "\"";
+
+ return query;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
public static String getContentType(HttpEntity entity) {
if (entity == null || entity.getContentType() == null) {
return null;
@@ -855,6 +892,16 @@ public final class Util {
boolean connected = networkInfo != null && networkInfo.isConnected();
return connected && (networkInfo.getType() == ConnectivityManager.TYPE_WIFI);
}
+ public static String getSSID(Context context) {
+ if (isWifiConnected(context)) {
+ WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ if (wifiManager.getConnectionInfo() != null && wifiManager.getConnectionInfo().getSSID() != null) {
+ return wifiManager.getConnectionInfo().getSSID().replace("\"", "");
+ }
+ return null;
+ }
+ return null;
+ }
public static boolean isExternalStoragePresent() {
return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
@@ -1208,32 +1255,13 @@ public final class Util {
File albumArtFile = FileUtil.getAlbumArtFile(context, song);
intent.putExtra("coverart", albumArtFile.getAbsolutePath());
-
- avrcpIntent.putExtra("playing", true);
- avrcpIntent.putExtra("track", song.getTitle());
- avrcpIntent.putExtra("artist", song.getArtist());
- avrcpIntent.putExtra("album", song.getAlbum());
- avrcpIntent.putExtra("ListSize",(long) downloadService.getSongs().size());
- avrcpIntent.putExtra("id", (long) downloadService.getCurrentPlayingIndex()+1);
- avrcpIntent.putExtra("duration", (long) downloadService.getPlayerDuration());
- avrcpIntent.putExtra("position", (long) downloadService.getPlayerPosition());
- avrcpIntent.putExtra("coverart", albumArtFile.getAbsolutePath());
} else {
intent.putExtra("title", "");
intent.putExtra("artist", "");
intent.putExtra("album", "");
intent.putExtra("coverart", "");
-
- avrcpIntent.putExtra("playing", false);
- avrcpIntent.putExtra("track", "");
- avrcpIntent.putExtra("artist", "");
- avrcpIntent.putExtra("album", "");
- avrcpIntent.putExtra("ListSize",(long)0);
- avrcpIntent.putExtra("id", (long) 0);
- avrcpIntent.putExtra("duration", (long )0);
- avrcpIntent.putExtra("position", (long) 0);
- avrcpIntent.putExtra("coverart", "");
}
+ addTrackInfo(context, song, avrcpIntent);
context.sendBroadcast(intent);
context.sendBroadcast(avrcpIntent);
@@ -1242,7 +1270,7 @@ public final class Util {
/**
* <p>Broadcasts the given player state as the one being set.</p>
*/
- public static void broadcastPlaybackStatusChange(Context context, PlayerState state) {
+ public static void broadcastPlaybackStatusChange(Context context, MusicDirectory.Entry song, PlayerState state) {
Intent intent = new Intent(EVENT_PLAYSTATE_CHANGED);
Intent avrcpIntent = new Intent(AVRCP_PLAYSTATE_CHANGED);
@@ -1266,11 +1294,39 @@ public final class Util {
default:
return; // No need to broadcast.
}
+ addTrackInfo(context, song, avrcpIntent);
context.sendBroadcast(intent);
context.sendBroadcast(avrcpIntent);
}
+ private static void addTrackInfo(Context context, MusicDirectory.Entry song, Intent intent) {
+ if (song != null) {
+ DownloadService downloadService = (DownloadServiceImpl)context;
+ File albumArtFile = FileUtil.getAlbumArtFile(context, song);
+
+ intent.putExtra("playing", true);
+ intent.putExtra("track", song.getTitle());
+ intent.putExtra("artist", song.getArtist());
+ intent.putExtra("album", song.getAlbum());
+ intent.putExtra("ListSize", (long) downloadService.getSongs().size());
+ intent.putExtra("id", (long) downloadService.getCurrentPlayingIndex() + 1);
+ intent.putExtra("duration", (long) downloadService.getPlayerDuration());
+ intent.putExtra("position", (long) downloadService.getPlayerPosition());
+ intent.putExtra("coverart", albumArtFile.getAbsolutePath());
+ } else {
+ intent.putExtra("playing", false);
+ intent.putExtra("track", "");
+ intent.putExtra("artist", "");
+ intent.putExtra("album", "");
+ intent.putExtra("ListSize", (long) 0);
+ intent.putExtra("id", (long) 0);
+ intent.putExtra("duration", (long) 0);
+ intent.putExtra("position", (long) 0);
+ intent.putExtra("coverart", "");
+ }
+ }
+
/**
* Resolves the default text color for notifications.
*