package com.ved.musicmapapp.utils; import java.util.ArrayList; import java.util.List; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicResponseHandler; import org.json.JSONArray; import org.json.JSONObject; import android.graphics.Bitmap; import android.net.http.AndroidHttpClient; import android.support.v4.util.LruCache; import android.util.Log; import com.ved.musicmapapp.Objects.LocalSong; public class UtilTask { public static LruCache<String, Bitmap> mMemoryCache; public static double distFrom(double lat1, double lng1, double lat2,double lng2) { double earthRadius = 3958.75; double dLat = Math.toRadians(lat2 - lat1); double dLng = Math.toRadians(lng2 - lng1); double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)+ Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng / 2) * Math.sin(dLng / 2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); double dist = earthRadius * c; return dist; } public static double distanceKm(double lat1, double lon1, double lat2, double lon2) { int EARTH_RADIUS_KM = 6371; double lat1Rad = Math.toRadians(lat1); double lat2Rad = Math.toRadians(lat2); double deltaLonRad = Math.toRadians(lon2 - lon1); return Math.acos(Math.sin(lat1Rad) * Math.sin(lat2Rad) + Math.cos(lat1Rad) * Math.cos(lat2Rad) * Math.cos(deltaLonRad)) * EARTH_RADIUS_KM; } public static double distanceMeter(double lat1, double lon1, double lat2, double lon2) { double theta = lon1 - lon2; double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); dist = Math.acos(dist); dist = rad2deg(dist); dist = dist * 60 * 1.1515; //Log.e("location", "...." + dist); double meter = (Math.round(dist / 0.62137)) * 1000; return (meter); } private static double deg2rad(double deg) { return (deg * Math.PI / 180.0); } private static double rad2deg(double rad) { return (rad * 180.0 / Math.PI); } public static List<LocalSong> getArtistList(List<LocalSong> songList) { List<LocalSong> artistArray = new ArrayList<LocalSong>(); for (int i = 0; i < songList.size(); i++) { int match = 1; LocalSong song = new LocalSong(); song = songList.get(i); String artist = song.getArtist(); if (i == 0) { artistArray.add(song); } else { for (int k = 0; k < artistArray.size(); k++) { match = 1; LocalSong meta = new LocalSong(); meta = artistArray.get(k); String artist1 = meta.getArtist(); if (artist.equals(artist1)) { match = 0; break; } } if (match == 1) { artistArray.add(song); } } } return artistArray; } /** * Saving image bitmap into memory * @param key * @param bitmap */ public static void addBitmapToMemoryCache(String key, Bitmap bitmap) { if (getBitmapFromMemCache(key) == null) { mMemoryCache.put(key, bitmap); } } /** * Getting image from Memory * @param key * @return */ public static Bitmap getBitmapFromMemCache(String key) { return mMemoryCache.get(key); } /** * Checking for song already exist in Parse or Not * @param songTitle * @param deviceID * @return */ public static boolean checkExist(String songTitle, List<LocalSong> currentUserArray) { boolean ok = false; for (int i = 0; i < currentUserArray.size(); i++) { LocalSong s = currentUserArray.get(i); if (s.getTitle().equals(songTitle)) { return !ok; } } return ok; } private static final AndroidHttpClient ANDROID_HTTP_CLIENT = AndroidHttpClient.newInstance(Statics.class.getName()); public static String fetchCityNameUsingGoogleMap(Double latitute, Double longitute) { String googleMapUrl = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitute + "," + longitute + "&sensor=false"; try { JSONObject googleMapResponse = new JSONObject(ANDROID_HTTP_CLIENT.execute(new HttpGet(googleMapUrl), new BasicResponseHandler())); // many nested loops.. not great -> use expression instead // loop among all results JSONArray results = (JSONArray) googleMapResponse.get("results"); for (int i = 0; i < results.length(); i++) { // loop among all addresses within this result JSONObject result = results.getJSONObject(i); if (result.has("address_components")) { JSONArray addressComponents = result.getJSONArray("address_components"); // loop among all address component to find a 'locality' or // 'sublocality' for (int j = 0; j < addressComponents.length(); j++) { JSONObject addressComponent = addressComponents.getJSONObject(j); if (result.has("types")) { JSONArray types = addressComponent.getJSONArray("types"); // search for locality and sublocality String cityName = null; for (int k = 0; k < types.length(); k++) { if ("locality".equals(types.getString(k)) && cityName == null) { if (addressComponent.has("long_name")) { cityName = addressComponent.getString("long_name"); Log.e("city name long_name", "..."+ cityName); } else if (addressComponent.has("short_name")) { cityName = addressComponent.getString("short_name"); Log.e("city name short_name", "..." + cityName); } } } if (cityName != null) { return cityName; } } } } } } catch (Exception ignored) { ignored.printStackTrace(); } return null; } }