package com.itap.voiceemoticon;
import java.util.ArrayList;
import org.tadpoleframework.thread.ForegroundThread;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
import com.itap.voiceemoticon.api.Voice;
import com.itap.voiceemoticon.api.VoiceEmoticonApi;
import com.itap.voiceemoticon.api.impl.VoiceEmoticonApiImpl;
import com.itap.voiceemoticon.db.DaoFactory;
import com.itap.voiceemoticon.db.VoiceDao;
import com.itap.voiceemoticon.media.MusicPlayer;
import com.itap.voiceemoticon.third.WeixinHelper;
import com.itap.voiceemoticon.weibo.WeiboLoginAcountManager;
import com.itap.voiceemoticon.weibo.TPAccountManager;
import com.itap.voiceemoticon.weibo.WeiboLoginListener;
import com.tencent.tauth.Tencent;
import com.weibo.sdk.android.Oauth2AccessToken;
import com.zenip.weibo.sdk.android.api.UsersAPI;
public class VEApplication extends Application {
public static Context sContext = null;
public static final String TAG = "VEApplication";
public static VoiceEmoticonApi getVoiceEmoticonApi() {
return new VoiceEmoticonApiImpl();
}
public static final String PREF_NAME = "voiceemoticon";
public static final String PREF_KEY_HIDE_TITLE = "hidetitle";
private static SharedPreferences sPrefs;
private static Oauth2AccessToken sSinaToken = null;
public static void setSinaToken(Oauth2AccessToken token) {
sSinaToken = token;
}
public static UsersAPI getUsersAPI() {
return new UsersAPI(sSinaToken);
}
@Override
public void onCreate() {
super.onCreate();
sPrefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
sContext = this;
WeiboLoginAcountManager.init(this);
TPAccountManager.init(this);
ForegroundThread.startRun();
}
public static boolean getHideTitle() {
return sPrefs.getBoolean(PREF_KEY_HIDE_TITLE, false);
}
public static void setHideTitle(boolean flag) {
Editor editor = sPrefs.edit();
editor.putBoolean(PREF_KEY_HIDE_TITLE, flag);
editor.commit();
}
private static MusicPlayer mMusicPlayer;
private static Tencent sInstance;
public static synchronized MusicPlayer getMusicPlayer(Context context) {
if (mMusicPlayer == null) {
mMusicPlayer = new MusicPlayer(context.getApplicationContext());
}
return mMusicPlayer;
}
public static void runOnThread(Runnable runnable) {
new Thread(runnable).start();
}
// -------------------------------------------------------------
// Music Collected Cache
// -------------------------------------------------------------
private static ArrayList<String> sMusicCollectedCached = null;
/**
* 是否已经被收藏 instruction。
*/
public static boolean isCollected(Context context, String path) {
if (sMusicCollectedCached == null) {
reloadVoiceCollectedCache(context);
}
return sMusicCollectedCached.contains(path);
}
public static void reloadVoiceCollectedCache(Context context) {
sMusicCollectedCached = new ArrayList<String>();
VoiceDao dao = DaoFactory.getInstance(context).getVoiceDao();
ArrayList<Voice> list = dao.allVoices();
for (int i = 0, len = list.size(); i < len; i++) {
Voice voice = list.get(i);
sMusicCollectedCached.add(voice.url);
}
}
private static final Handler sHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
if (MsgDef.MSG_TOAST == msg.what) {
Toast.makeText(sContext, (String) msg.obj, Toast.LENGTH_LONG)
.show();
}
return false;
}
});
public static void toast(String msg) {
if (null == sContext) {
return;
}
Message.obtain(sHandler, MsgDef.MSG_TOAST, msg).sendToTarget();
}
}