SplashActivity.java 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. package com.xzjmyk.pm.activity.ui;
  2. import android.annotation.SuppressLint;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.os.Handler;
  6. import android.text.TextUtils;
  7. import android.view.View;
  8. import android.view.animation.Animation;
  9. import android.view.animation.AnimationUtils;
  10. import android.widget.Button;
  11. import android.widget.RelativeLayout;
  12. import com.alibaba.fastjson.JSON;
  13. import com.android.volley.Response;
  14. import com.android.volley.VolleyError;
  15. import com.xzjmyk.pm.activity.AppConfig;
  16. import com.xzjmyk.pm.activity.MyApplication;
  17. import com.xzjmyk.pm.activity.R;
  18. import com.xzjmyk.pm.activity.bean.ConfigBean;
  19. import com.xzjmyk.pm.activity.bean.LoginRegisterResult;
  20. import com.xzjmyk.pm.activity.bean.User;
  21. import com.xzjmyk.pm.activity.db.dao.UserDao;
  22. import com.xzjmyk.pm.activity.helper.LoginHelper;
  23. import com.xzjmyk.pm.activity.sp.UserSp;
  24. import com.xzjmyk.pm.activity.ui.account.LoginActivity;
  25. import com.xzjmyk.pm.activity.ui.account.RegisterActivity;
  26. import com.xzjmyk.pm.activity.ui.base.BaseActivity;
  27. import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
  28. import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
  29. import com.xzjmyk.pm.activity.util.DeviceInfoUtil;
  30. import com.xzjmyk.pm.activity.util.Md5Util;
  31. import com.xzjmyk.pm.activity.volley.ObjectResult;
  32. import com.xzjmyk.pm.activity.volley.Result;
  33. import com.xzjmyk.pm.activity.volley.StringJsonObjectRequest;
  34. import java.util.HashMap;
  35. /**
  36. * 启动页
  37. *
  38. * @author Dean Tao
  39. * @version 1.0
  40. */
  41. public class SplashActivity extends BaseActivity {
  42. private RelativeLayout mSelectLv;
  43. private Button mSelectLoginBtn;
  44. private Button mSelectRegBtn;
  45. private long mStartTimeMs;// 记录进入该界面时间,保证至少在该界面停留3秒
  46. private boolean mConfigReady = false;// 配置获取成功
  47. @Override
  48. protected void onCreate(Bundle savedInstanceState) {
  49. super.onCreate(savedInstanceState);
  50. setContentView(R.layout.activity_splash);
  51. mStartTimeMs = System.currentTimeMillis();
  52. mSelectLv = (RelativeLayout) findViewById(R.id.select_lv);
  53. mSelectLoginBtn = (Button) findViewById(R.id.select_login_btn);
  54. mSelectRegBtn = (Button) findViewById(R.id.select_register_btn);
  55. // mSelectLoginBtn.setOnClickListener(new View.OnClickListener() {
  56. // @Override
  57. // public void onClick(View v) {
  58. // startActivity(new Intent(mContext, LoginActivity.class));
  59. // }
  60. // });
  61. mSelectRegBtn.setOnClickListener(new View.OnClickListener() {
  62. @Override
  63. public void onClick(View v) {
  64. startActivity(new Intent(mContext, RegisterActivity.class));
  65. }
  66. });
  67. mSelectLv.setVisibility(View.INVISIBLE);
  68. initConfig();// 初始化配置
  69. }
  70. @Override
  71. protected void onResume() {
  72. super.onResume();
  73. LogUtil.d("onResume()");
  74. }
  75. /**
  76. * 配置参数初始化
  77. */
  78. private void initConfig() {
  79. if (!MyApplication.getInstance().isNetworkActive()) {// 没有网络的情况下
  80. setConfig(new ConfigBean());
  81. return;
  82. }
  83. StringJsonObjectRequest<ConfigBean> request = new StringJsonObjectRequest<ConfigBean>(AppConfig.CONFIG_URL, new Response.ErrorListener() {
  84. @Override
  85. public void onErrorResponse(VolleyError arg0) {
  86. LogUtil.d("读取网络配置失败!"+AppConfig.CONFIG_URL);
  87. LogUtil.d(JSON.toJSONString(arg0));
  88. setConfig(new ConfigBean());// 读取网络配置失败,使用默认配置
  89. }
  90. }, new StringJsonObjectRequest.Listener<ConfigBean>() {
  91. @Override
  92. public void onResponse(ObjectResult<ConfigBean> result) {
  93. LogUtil.d(JSON.toJSONString(result));
  94. ConfigBean configBean = null;
  95. if (result == null || result.getResultCode() != Result.CODE_SUCCESS || result.getData() == null) {
  96. configBean = new ConfigBean();// 读取网络配置失败,使用默认配置
  97. } else {
  98. configBean = result.getData();
  99. }
  100. setConfig(configBean);
  101. }
  102. }, ConfigBean.class, null);
  103. addShortRequest(request);
  104. }
  105. private void setConfig(ConfigBean configBean) {
  106. MyApplication.getInstance().setConfig(AppConfig.initConfig(this, configBean));// 初始化配置
  107. mConfigReady = true;
  108. ready();
  109. }
  110. private void ready() {
  111. if (!mConfigReady) {
  112. return;
  113. }
  114. long currentTimeMs = System.currentTimeMillis();
  115. int useTime = (int) (currentTimeMs - mStartTimeMs);
  116. int delayTime = useTime > 2000 ? 0 : 2000 - useTime;
  117. new Handler().postDelayed(new Runnable() {
  118. @Override
  119. public void run() {
  120. jump2();
  121. }
  122. }, delayTime);
  123. }
  124. @SuppressLint("NewApi")
  125. private void jump() {
  126. if (isDestroyed()) {
  127. return;
  128. }
  129. int userStatus = LoginHelper.prepareUser(mContext);
  130. Intent intent = new Intent();
  131. switch (userStatus) {
  132. case LoginHelper.STATUS_USER_FULL://5
  133. case LoginHelper.STATUS_USER_NO_UPDATE://3
  134. intent.setClass(mContext, MainActivity.class);
  135. break;
  136. case LoginHelper.STATUS_USER_TOKEN_OVERDUE://2
  137. case LoginHelper.STATUS_USER_SIMPLE_TELPHONE:
  138. intent.setClass(mContext, LoginActivity.class);
  139. break;
  140. case LoginHelper.STATUS_NO_USER://0
  141. default:
  142. stay();
  143. return;// must return
  144. }
  145. startActivity(intent);
  146. finish();
  147. }
  148. private void jump2() {
  149. boolean idIsEmpty = TextUtils.isEmpty(UserSp.getInstance(this).getUserId(""));
  150. boolean telephoneIsEmpty = TextUtils.isEmpty(UserSp.getInstance(this).getTelephone(null));
  151. if (!idIsEmpty && !telephoneIsEmpty) {// 用户标识都不为空,那么就能代表一个完整的用户
  152. // 进入之前,加载本地已经存在的数据
  153. String userId = UserSp.getInstance(this).getUserId("");
  154. User user = UserDao.getInstance().getUserByUserId(userId);
  155. if (!LoginHelper.isUserValidation(user)) {// 用户数据错误,那么就认为是一个游客
  156. jump();
  157. } else {
  158. MyApplication.getInstance().mLoginUser = user;
  159. MyApplication.getInstance().mAccessToken = UserSp.getInstance(this).getAccessToken(null);
  160. MyApplication.getInstance().mExpiresIn = UserSp.getInstance(this).getExpiresIn(0);
  161. login(user.getTelephone(), user.getPassword());
  162. }
  163. } else {
  164. jump();
  165. }
  166. }
  167. //登陆
  168. private void login(final String phoneNumber, final String password) {
  169. if (TextUtils.isEmpty(phoneNumber)) {
  170. jump();
  171. return;
  172. }
  173. if (TextUtils.isEmpty(password)) {
  174. jump();
  175. return;
  176. }
  177. // 加密之后的密码
  178. final String requestTag = "login";
  179. HashMap<String, String> params = new HashMap<String, String>();
  180. params.put("telephone", Md5Util.toMD5(phoneNumber));// 账号登陆的时候需要MD5加密,服务器需求
  181. params.put("password", password);
  182. // 附加信息
  183. params.put("model", DeviceInfoUtil.getModel());
  184. params.put("osVersion", DeviceInfoUtil.getOsVersion());
  185. params.put("serial", DeviceInfoUtil.getDeviceId(mContext));
  186. // 地址信息
  187. double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
  188. double longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
  189. if (latitude != 0)
  190. params.put("latitude", String.valueOf(latitude));
  191. if (longitude != 0)
  192. params.put("longitude", String.valueOf(longitude));
  193. final StringJsonObjectRequest<LoginRegisterResult> request = new StringJsonObjectRequest<LoginRegisterResult>(mConfig.USER_LOGIN,
  194. new Response.ErrorListener() {
  195. @Override
  196. public void onErrorResponse(VolleyError arg0) {
  197. jump();
  198. }
  199. }, new StringJsonObjectRequest.Listener<LoginRegisterResult>() {
  200. @Override
  201. public void onResponse(ObjectResult<LoginRegisterResult> result) {
  202. if (result == null) {
  203. jump();
  204. return;
  205. }
  206. boolean success = false;
  207. if (result.getResultCode() == Result.CODE_SUCCESS) {
  208. success = LoginHelper.setLoginUser(mContext, phoneNumber, password, result);// 设置登陆用户信息
  209. }
  210. if (success) {// 登陆IM成功
  211. startActivity(new Intent(SplashActivity.this, MainActivity.class));
  212. } else {// 登录失败
  213. jump();
  214. }
  215. }
  216. }, LoginRegisterResult.class, params);
  217. request.setTag(requestTag);
  218. addDefaultRequest(request);
  219. }
  220. private void login_manage(String phone, String password) {
  221. if (TextUtils.isEmpty(phone)) {
  222. return;
  223. }
  224. if (TextUtils.isEmpty(password)) {
  225. return;
  226. }
  227. ViewUtil.LoginTask(phone, password, mContext);
  228. }
  229. // 停留在此界面
  230. private void stay() {
  231. mSelectLv.setVisibility(View.GONE);
  232. startActivity(new Intent(mContext, LoginActivity.class));
  233. Animation anim = AnimationUtils.loadAnimation(this, R.anim.alpha_in);
  234. mSelectLv.startAnimation(anim);
  235. }
  236. }