package com.smartdot.cgt.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.lang.Thread.UncaughtExceptionHandler; import java.text.DecimalFormat; import java.text.MessageFormat; import java.text.NumberFormat; import java.util.Date; import java.util.Set; import org.apache.http.util.EncodingUtils; import android.app.Activity; import android.app.Application; import android.content.Context; import android.os.IBinder; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.Toast; import cn.jpush.android.api.JPushInterface; import cn.jpush.android.api.TagAliasCallback; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.MKGeneralListener; import com.baidu.mapapi.map.MKEvent; import com.smartdot.cgt.BuildConfig; import com.smartdot.cgt.activity.BaseActivity; import com.smartdot.cgt.activity.FrmMain; import com.smartdot.cgt.model.UserModel; import com.smartdot.cgt.util.config.CgtConfig; import com.smartdot.cgt.util.config.ConfigLoader; public class ApplicationMain extends Application implements UncaughtExceptionHandler { private static ApplicationMain instance; private CgtConfig cgtConfig; private UserModel userModel; // TODO 地图相关 public boolean m_bKeyRight = true; public BMapManager mBMapManager = null; public CgtConfig getCgtConfig() { return cgtConfig; } public void setUserModel(UserModel userModel) { this.userModel = userModel; } public UserModel getUserModel() { return userModel; } public static ApplicationMain getInstance() { return instance; } @Override public void onCreate() { super.onCreate(); //initEngineManager(this); instance = this; cgtConfig = new ConfigLoader().getConfig(); Thread.setDefaultUncaughtExceptionHandler(this); // 极光推送相关 JPushInterface.setDebugMode(BuildConfig.DEBUG); // 设置是否开启日志 JPushInterface.init(this);// 初始化 JPush String userId=""; if(ApplicationMain.getInstance()!=null&&ApplicationMain.getInstance().getUserModel()!=null&&ApplicationMain.getInstance().getUserModel().getBgAdminId()!=null) { userId=ApplicationMain.getInstance().getUserModel().getBgAdminId(); }else{ LoginVo vo= PerformanceUtil.getUser(ApplicationMain.this); userId=vo.getBgadminid(); } //设置别名Alia JPushInterface.setAlias(this, userId, new TagAliasCallback() { @Override public void gotResult(int i, String s, Set<String> set) { } }); } @Override public void uncaughtException(Thread thread, Throwable ex) { Msg.showInfo(this, "程序意外终止退出"); Log.e("CgtApplicationExit", "程序意外终止退出", ex); StringBuffer buffer = new StringBuffer(); buffer.append("\r\n\r\n"); buffer.append(new Date().toString()); buffer.append("\r\n"); buffer.append(ex.toString()); buffer.append("\r\n"); for (StackTraceElement traceElement : ex.getStackTrace()) { buffer.append(traceElement.toString()); buffer.append("\r\n"); } File configFolder = new File(this.getCgtConfig().getSystemConfigPath()); if (!configFolder.exists()) { configFolder.mkdirs(); } File errLog = new File(configFolder, "error.log"); try { if (!errLog.exists()) { errLog.createNewFile(); } OutputStream os = new FileOutputStream(errLog, true); os.write(EncodingUtils.getBytes(buffer.toString(), "UTF-8")); os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); } for (Activity activity : BaseActivity.activedActivity) { activity.finish(); } // 结束进程 android.os.Process.killProcess(android.os.Process.myPid()); } public String getConfigPath(String fileName) { File cgtPath = new File(this.getCgtConfig().getSystemConfigPath()); if (!cgtPath.exists()) { cgtPath.mkdirs(); } return MessageFormat.format("{0}{1}", this.getCgtConfig() .getSystemConfigPath(), fileName); } public File getConfigTempPath(String fileName) { String tmpPath = getConfigPath("temp"); File tmpDir = new File(tmpPath); if (!tmpDir.exists()) { tmpDir.mkdirs(); } File tmpFile = new File(tmpPath, fileName); if (!tmpFile.exists()) { try { tmpFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } return tmpFile; } public String getAudioTempPath() { return getAudioTempFile().getAbsolutePath(); } public File getAudioTempFile() { return getConfigTempPath("tmpAudio.wav"); } public String getImageTempPath() { return getImageTempFile().getAbsolutePath(); } public File getImageTempFile() { File tmpImage = getConfigTempPath("tmpImage.jpg"); if (!tmpImage.exists()) { try { tmpImage.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } return tmpImage; } /** * 获取指定资源ID的VIEW * * @param resource * @return */ public View inflateView(int resource) { return inflateView(resource, null); } public View inflateView(int resource, ViewGroup root) { LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); return vi.inflate(resource, root); } public String setDotPosition(double from, int position) { DecimalFormat format = (DecimalFormat) NumberFormat.getInstance(); StringBuilder sb = new StringBuilder("0."); while (position > 0) { sb.append("0"); position--; } format.applyPattern(sb.toString()); return format.format(from); } public String getTwoNumber(int from) { DecimalFormat format = (DecimalFormat) NumberFormat.getInstance(); format.applyPattern("00"); return format.format(from); } public void hideSoftInputFromWindow(IBinder windowToken) { InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(windowToken, 0); } // TODO 地图相关 public void initEngineManager(Context context) { if (mBMapManager == null) { mBMapManager = new BMapManager(context); } if (!mBMapManager.init(new MyGeneralListener())) { Toast.makeText( ApplicationMain.getInstance().getApplicationContext(), "BMapManager 初始化错误!", Toast.LENGTH_LONG).show(); } } // 常用事件监听,用来处理通常的网络错误,授权验证错误等 public static class MyGeneralListener implements MKGeneralListener { @Override public void onGetNetworkState(int iError) { if (iError == MKEvent.ERROR_NETWORK_CONNECT) { Toast.makeText( ApplicationMain.getInstance().getApplicationContext(), "您的网络出错啦!", Toast.LENGTH_LONG).show(); } else if (iError == MKEvent.ERROR_NETWORK_DATA) { Toast.makeText( ApplicationMain.getInstance().getApplicationContext(), "输入正确的检索条件!", Toast.LENGTH_LONG).show(); } // ... } @Override public void onGetPermissionState(int iError) { // 非零值表示key验证未通过 if (iError != 0) { // 授权Key错误: // Toast.makeText( // ApplicationMain.getInstance().getApplicationContext(), // "请在 DemoApplication.java文件输入正确的授权Key,并检查您的网络连接是否正常!error: " // + iError, Toast.LENGTH_LONG).show(); ApplicationMain.getInstance().m_bKeyRight = false; } else { ApplicationMain.getInstance().m_bKeyRight = true; Toast.makeText( ApplicationMain.getInstance().getApplicationContext(), "key认证成功", Toast.LENGTH_LONG).show(); } } } }