SplashActivity.java 9.2 KB

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