package com.diandi.demo.ui.activity;
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.baidu.mapapi.SDKInitializer;
import com.diandi.demo.CustomApplication;
import com.diandi.demo.R;
import com.diandi.demo.config.Config;
import cn.bmob.im.BmobChat;
import cn.bmob.v3.Bmob;
/**
* *******************************************************************************
* ********* Author : klob(kloblic@gmail.com) .
* ********* Date : 2014-11-29 .
* ********* Time : 11:46 .
* ********* Project name : Diandi1.18 .
* ********* Version : 1.0
* ********* Copyright @ 2014, klob, All Rights Reserved
* *******************************************************************************
*/
public class SplashActivity extends BaseActivity {
private static final int GO_HOME = 100;
private static final int GO_LOGIN = 200;
private static final int GO_GUIDE = 300;
@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case GO_HOME:
SplashActivity.this.startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
break;
case GO_LOGIN:
startAnimActivity(LoginActivity.class);
finish();
break;
case GO_GUIDE:
startAnimActivity(GuideActivity.class);
finish();
break;
}
}
};
// 定位获取当前用户的地理位置
private LocationClient mLocationClient;
private BaiduReceiver mReceiver;// 注册广播接收器,用于监听网络以及验证key
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Bmob.initialize(this, Config.applicationId);
BmobChat.getInstance(this).init(Config.applicationId);
initLocClient();
IntentFilter iFilter = new IntentFilter();
iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);
iFilter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);
mReceiver = new BaiduReceiver();
registerReceiver(mReceiver, iFilter);
if (CustomApplication.getInstance().getSpUtil().isFirstStart()) {
mHandler.sendEmptyMessageDelayed(GO_GUIDE, 2000);
} else if (mUserManager.getCurrentUser() != null) {
// 每次自动登陆的时候就需要更新下当前位置和好友的资料,因为好友的头像,昵称啥的是经常变动的
updateUserInfos();
mHandler.sendEmptyMessageDelayed(GO_HOME, 2000);
} else {
mHandler.sendEmptyMessageDelayed(GO_LOGIN, 2000);
}
CustomApplication.getInstance().getSpUtil().checkUpdate();
}
@Override
void findView() {
}
@Override
void initView() {
}
@Override
void bindEvent() {
}
/**
* 开启定位,更新当前用户的经纬度坐标
*
* @param
* @return void
* @throws
* @Title: initLocClient
* @Description: TODO
*/
private void initLocClient() {
mLocationClient = CustomApplication.getInstance().mLocationClient;
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);// 设置定位模式:高精度模式
option.setCoorType("bd09ll"); // 设置坐标类型:百度经纬度
option.setScanSpan(1000);// 设置发起定位请求的间隔时间为1000ms:低于1000为手动定位一次,大于或等于1000则为定时定位
option.setIsNeedAddress(false);// 不需要包含地址信息
mLocationClient.setLocOption(option);
mLocationClient.start();
}
@Override
protected void onDestroy() {
// 退出时销毁定位
if (mLocationClient != null && mLocationClient.isStarted()) {
mLocationClient.stop();
}
unregisterReceiver(mReceiver);
super.onDestroy();
}
/**
* 构造广播监听类,监听 SDK key 验证以及网络异常广播
*/
public class BaiduReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String s = intent.getAction();
if (s.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) {
ShowToast("key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置");
} else if (s
.equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) {
ShowToast("当前网络连接不稳定,请检查您的网络设置!");
}
}
}
}