package com.tencent.hq.qq;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import android.app.Application;
import android.app.NotificationManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.preference.PreferenceManager;
import cn.bmob.im.BmobChat;
import cn.bmob.im.BmobUserManager;
import cn.bmob.im.bean.BmobChatUser;
import cn.bmob.im.db.BmobDB;
import cn.bmob.v3.datatype.BmobGeoPoint;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.mapapi.SDKInitializer;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.utils.StorageUtils;
import com.tencent.hq.qq.util.CollectionUtils;
import com.tencent.hq.qq.util.SharePreferenceUtil;
public class CustomApplcation extends Application {
public static CustomApplcation mInstance;
public LocationClient mLocationClient;
public MyLocationListener mMyLocationListener;
public static BmobGeoPoint lastPoint = null;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
BmobChat.DEBUG_MODE = true;
mInstance = this;
init();
}
private void init() {
mMediaPlayer = MediaPlayer.create(this, R.raw.notify);
mNotificationManager = (NotificationManager) getSystemService(android.content.Context.NOTIFICATION_SERVICE);
initImageLoader(getApplicationContext());
if (BmobUserManager.getInstance(getApplicationContext())
.getCurrentUser() != null) {
contactList = CollectionUtils.list2map(BmobDB.create(getApplicationContext()).getContactList());
}
initBaidu();
}
/**
* sdk initBaidumap
* @Title: initBaidumap
* @Description: TODO
* @param
* @return void
* @throws
*/
private void initBaidu() {
SDKInitializer.initialize(this);
initBaiduLocClient();
}
/**
*
* @Title: initBaiduLocClient
* @Description: TODO
* @param
* @return void
* @throws
*/
private void initBaiduLocClient() {
mLocationClient = new LocationClient(this.getApplicationContext());
mMyLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(mMyLocationListener);
}
/**
*
*/
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// Receive Location
double latitude = location.getLatitude();
double longtitude = location.getLongitude();
if (lastPoint != null) {
if (lastPoint.getLatitude() == location.getLatitude()
&& lastPoint.getLongitude() == location.getLongitude()) {
//
mLocationClient.stop();
return;
}
}
lastPoint = new BmobGeoPoint(longtitude, latitude);
}
}
public static void initImageLoader(Context context) {
File cacheDir = StorageUtils.getOwnCacheDirectory(context,
"hq/qq/Cache");//
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
context)
.threadPoolSize(3).threadPriority(Thread.NORM_PRIORITY - 2)
.memoryCache(new WeakMemoryCache())
.denyCacheImageMultipleSizesInMemory()
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.discCache(new UnlimitedDiscCache(cacheDir))
// .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.writeDebugLogs() // Remove for release app
.build();
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config);//
public static CustomApplcation getInstance() {
return mInstance;
}
SharePreferenceUtil mSpUtil;
public static final String PREFERENCE_NAME = "_sharedinfo";
public synchronized SharePreferenceUtil getSpUtil() {
if (mSpUtil == null) {
String currentId = BmobUserManager.getInstance(
getApplicationContext()).getCurrentUserObjectId();
String sharedName = currentId + PREFERENCE_NAME;
mSpUtil = new SharePreferenceUtil(this, sharedName);
}
return mSpUtil;
}
NotificationManager mNotificationManager;
public NotificationManager getNotificationManager() {
if (mNotificationManager == null)
mNotificationManager = (NotificationManager) getSystemService(android.content.Context.NOTIFICATION_SERVICE);
return mNotificationManager;
}
MediaPlayer mMediaPlayer;
public synchronized MediaPlayer getMediaPlayer() {
if (mMediaPlayer == null)
mMediaPlayer = MediaPlayer.create(this, R.raw.notify);
return mMediaPlayer;
}
public final String PREF_LONGTITUDE = "longtitude";
private String longtitude = "";
/**
*
*
* @return
*/
public String getLongtitude() {
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(this);
longtitude = preferences.getString(PREF_LONGTITUDE, "");
return longtitude;
}
/**
*
*
* @param pwd
*/
public void setLongtitude(String lon) {
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
if (editor.putString(PREF_LONGTITUDE, lon).commit()) {
longtitude = lon;
}
}
public final String PREF_LATITUDE = "latitude";// ����
private String latitude = "";
/**
*
*
* @return
*/
public String getLatitude() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
latitude = preferences.getString(PREF_LATITUDE, "");
return latitude;
}
/**
*
*
* @param pwd
*/
public void setLatitude(String lat) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
if (editor.putString(PREF_LATITUDE, lat).commit()) {
latitude = lat;
}
}
private Map<String, BmobChatUser> contactList = new HashMap<String, BmobChatUser>();
/**
* user list
*
* @return
*/
public Map<String, BmobChatUser> getContactList() {
return contactList;
}
/**
*
* @param contactList
*/
public void setContactList(Map<String, BmobChatUser> contactList) {
if (this.contactList != null) {
this.contactList.clear();
}
this.contactList = contactList;
}
/**
*
*/
public void logout() {
BmobUserManager.getInstance(getApplicationContext()).logout();
setContactList(null);
setLatitude(null);
setLongtitude(null);
}
}