/*
* This is the source code of DMPLayer for Android v. 1.0.0.
* You should have received a copy of the license in this archive (see LICENSE).
* Copyright @Dibakar_Mistry, 2015.
*/
package com.dmplayer;
import java.util.ArrayList;
import android.app.Application;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Point;
import android.os.Handler;
import android.view.Display;
import android.view.WindowManager;
import com.dmplayer.dbhandler.DMPLayerDBHelper;
import com.dmplayer.models.SongDetail;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
public class ApplicationDMPlayer extends Application {
public ArrayList<SongDetail> songsList = new ArrayList<SongDetail>();
public static Context applicationContext = null;
public static volatile Handler applicationHandler = null;
public static Point displaySize = new Point();
public static float density = 1;
@Override
public void onCreate() {
super.onCreate();
applicationContext = getApplicationContext();
applicationHandler = new Handler(applicationContext.getMainLooper());
/**
* Data base initialize
*/
initilizeDB();
/*
* Display Density Calculation so that Application not problem with All
* resolution.
*/
checkDisplaySize();
density = applicationContext.getResources().getDisplayMetrics().density;
/*
* Imageloader initialize
*/
initImageLoader(applicationContext);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
/**
* Initialize Image Loader.
*/
public static void initImageLoader(Context context) {
// This configuration tuning is custom. You can tune every option, you may tune some of them,
// or you can create default configuration by
// ImageLoaderConfiguration.createDefault(this);
// method.
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
config.threadPriority(Thread.NORM_PRIORITY - 2);
config.denyCacheImageMultipleSizesInMemory();
config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
config.tasksProcessingOrder(QueueProcessingType.LIFO);
config.writeDebugLogs(); // Remove for release app
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config.build());
}
public static int dp(float value) {
return (int) Math.ceil(density * value);
}
public static void checkDisplaySize() {
try {
WindowManager manager = (WindowManager) applicationContext.getSystemService(Context.WINDOW_SERVICE);
if (manager != null) {
Display display = manager.getDefaultDisplay();
if (display != null) {
if (android.os.Build.VERSION.SDK_INT < 13) {
displaySize.set(display.getWidth(), display.getHeight());
} else {
display.getSize(displaySize);
}
}
}
} catch (Exception e) {
}
}
/**
* Related to Data Base.
*/
public DMPLayerDBHelper DB_HELPER;
private void initilizeDB() {
if (DB_HELPER == null) {
DB_HELPER = new DMPLayerDBHelper(ApplicationDMPlayer.this);
}
try {
DB_HELPER.getWritableDatabase();
DB_HELPER.openDataBase();
} catch (Exception e) {
e.printStackTrace();
}
}
private void closeDB() {
try {
DB_HELPER.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}