package com.moral.yunfushao;
|
|
import android.Manifest;
|
import android.app.AlertDialog;
|
import android.content.ComponentName;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.ServiceConnection;
|
import android.content.pm.PackageManager;
|
import android.graphics.Color;
|
import android.graphics.drawable.ColorDrawable;
|
import android.os.AsyncTask;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.os.IBinder;
|
import android.os.Looper;
|
import android.support.v4.app.FragmentTabHost;
|
import android.text.TextUtils;
|
import android.view.KeyEvent;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.Window;
|
import android.widget.Button;
|
import android.widget.ImageView;
|
import android.widget.TabHost;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.clj.fastble.data.ScanResult;
|
import com.lzy.okgo.cache.CacheMode;
|
import com.moral.andbrickslib.utils.FastJsonTools;
|
import com.moral.andbrickslib.utils.NetworkUtil;
|
import com.moral.andbrickslib.utils.TimeUtil;
|
import com.moral.yunfushao.base.BaseActivity;
|
import com.moral.yunfushao.ble.BluetoothService;
|
import com.moral.yunfushao.common.API;
|
import com.moral.yunfushao.common.AppConfig;
|
import com.moral.yunfushao.fragment.FragmentMonitor;
|
import com.moral.yunfushao.fragment.FragmentSettings;
|
import com.moral.yunfushao.fragment.FragmentShoppongMall;
|
import com.moral.yunfushao.httputils.HttpCallBack;
|
import com.moral.yunfushao.httputils.HttpUtils;
|
import com.moral.yunfushao.imageload.ImageLoader;
|
import com.moral.yunfushao.model.EventMessage;
|
import com.moral.yunfushao.model.User;
|
import com.moral.yunfushao.update.UpdateManager;
|
import com.moral.yunfushao.utils.PermissionUtil;
|
|
import org.greenrobot.eventbus.EventBus;
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import pub.devrel.easypermissions.AfterPermissionGranted;
|
import pub.devrel.easypermissions.EasyPermissions;
|
|
|
public class MainActivity extends BaseActivity implements EasyPermissions.PermissionCallbacks {
|
//定义FragmentTabHost对象
|
private FragmentTabHost mTabHost;
|
//定义一个布局
|
private LayoutInflater mLayoutInfater;
|
//定义fragments
|
private Class fragments[] = {FragmentMonitor.class, FragmentShoppongMall.class, FragmentSettings.class};
|
//定义底部按钮图标数组
|
private int mIcons[] = {R.drawable.menu1, R.drawable.menu2, R.drawable.menu3};
|
//Tab选项卡文字
|
private String mTextArray[] = {"辐射监测", "商城", "设置"};
|
private int index = 0;
|
private boolean islogin = false;
|
|
public static BluetoothService mBluetoothService;
|
|
@Override
|
protected void getBundleExtras(Bundle extras) {
|
islogin = extras.getBoolean("islogin", false);
|
}
|
|
@Override
|
protected int getLayoutId() {
|
return R.layout.activity_main;
|
}
|
|
@Override
|
protected void onStart() {
|
super.onStart();
|
bindService();
|
PermissionUtil.verifyStoragePermissions(this);
|
}
|
|
@Override
|
protected void onStop() {
|
super.onStop();
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
if (mBluetoothService != null)
|
mBluetoothService.closeConnect();
|
unbindService();
|
}
|
|
@Override
|
protected void initViews() {
|
//实例化布局对象
|
mLayoutInfater = LayoutInflater.from(this);
|
//实例化TabHost对象,得到TabHost
|
mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
|
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
|
mTabHost.setDrawingCacheEnabled(false);
|
|
//得到fragment的个数
|
int count = fragments.length;
|
|
for (int i = 0; i < count; i++) {
|
//为每一个Tab按钮设置图标、文字和内容
|
TabHost.TabSpec tabSpec = mTabHost.newTabSpec(mTextArray[i]).setIndicator(getTabItemView(i));
|
//将Tab按钮添加进Tab选项卡中
|
mTabHost.addTab(tabSpec, fragments[i], null);
|
//设置Tab按钮的背景
|
mTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.mipmap.bg_bottom);
|
mTabHost.getTabWidget().setDividerPadding(0);
|
mTabHost.getTabWidget().setDividerDrawable(null);
|
}
|
mTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
|
@Override
|
public void onTabChanged(String s) {
|
}
|
});
|
mTabHost.setCurrentTab(index);
|
}
|
|
@Override
|
protected void initListener() {
|
// registerBoradcastReceiver();
|
// bleHeart();
|
}
|
|
@Override
|
protected void initData() {
|
prepare();
|
if (MainApp.theApp.bleManager != null) {
|
if (MainApp.theApp.bleManager.isSupportBle()) {
|
MainApp.theApp.bleManager.enableBluetooth();
|
} else {
|
mToatUtils.showSingletonToast("对不起,您的手机不支持BLE!");
|
}
|
} else {
|
mToatUtils.showSingletonToast("对不起,您的手机不支持BLE!");
|
}
|
getAd();
|
}
|
|
@Override
|
protected void processClick(View view) {
|
|
}
|
|
@Override
|
protected void onErrorPageClick() {
|
|
}
|
|
/**
|
* 给Tab按钮设置图标和文字
|
*/
|
private View getTabItemView(int indexs) {
|
View view = mLayoutInfater.inflate(R.layout.main_tab_item_view, null);
|
ImageView imageView = (ImageView) view.findViewById(R.id.icon);
|
TextView textView = (TextView) view.findViewById(R.id.tv_text);
|
imageView.setImageResource(mIcons[indexs]);
|
textView.setText(mTextArray[indexs]);
|
return view;
|
}
|
|
private long clickTime = 0;
|
|
@Override
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
if (keyCode == KeyEvent.KEYCODE_BACK) {
|
if ((System.currentTimeMillis() - clickTime) > 2000) {
|
Toast.makeText(getApplicationContext(), "再按一次后退键退出程序", Toast.LENGTH_SHORT).show();
|
clickTime = System.currentTimeMillis();
|
} else {
|
finish();
|
}
|
return true;
|
}
|
return super.onKeyDown(keyCode, event);
|
}
|
|
|
@Override
|
public void onPermissionsGranted(int requestCode, List<String> perms) {
|
if (requestCode == WRITE_EXTERNAL_STORAGE) {
|
manager.showNoticeDialog();
|
}
|
}
|
|
@Override
|
public void onPermissionsDenied(int requestCode, List<String> perms) {
|
|
}
|
|
private final static int WRITE_EXTERNAL_STORAGE = 0x01;
|
|
@AfterPermissionGranted(WRITE_EXTERNAL_STORAGE)
|
public void updateAPP() {
|
String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
if (EasyPermissions.hasPermissions(this, perms)) {
|
// Already have permission, do the thing
|
manager.showNoticeDialog();
|
} else {
|
// Do not have permissions, request them now
|
EasyPermissions.requestPermissions(this, "温馨提示,版本升级需要写存储权限!",
|
WRITE_EXTERNAL_STORAGE, perms);
|
}
|
}
|
|
@Override
|
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
if (requestCode == 1) {
|
for (int i = 0; i < permissions.length; i++) {
|
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
|
//申请失败
|
PermissionUtil.verifyStoragePermissions(this);
|
}
|
}
|
}
|
}
|
|
UpdateManager manager = new UpdateManager(MainActivity.this);
|
|
private class checkUpdateTask extends AsyncTask<String, Void, String> {
|
@Override
|
protected String doInBackground(String... params) {
|
Looper.prepare();
|
// 检查软件更新
|
manager.checkUpdateJson();
|
Looper.loop();
|
return null;
|
}
|
|
@Override
|
protected void onPostExecute(String result) {
|
}
|
|
@Override
|
protected void onPreExecute() {
|
}
|
|
@Override
|
protected void onProgressUpdate(Void... values) {
|
}
|
}
|
|
|
private void prepare() {
|
if (!NetworkUtil.isAvailable(this)) {
|
mToatUtils.showSingletonToast("网络连接异常");
|
} else {
|
/**
|
* 版本更新
|
*/
|
if (Build.VERSION.SDK_INT >= 11) {
|
new checkUpdateTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
} else {
|
new checkUpdateTask().execute();
|
}
|
if (islogin)
|
return;
|
String url = API.GET_INFO;
|
Map<String, String> params = new HashMap<>();
|
params.put("phone", MainApp.theApp.sharedPreferencesUtil.getLoginInfo().getPhone());
|
HttpUtils.doPost(url, params, CacheMode.DEFAULT, false, new HttpCallBack() {
|
@Override
|
public void onSuccess(String res, String msg) {
|
User user = FastJsonTools.getJson(res, User.class);
|
if (user != null) {
|
MainApp.theApp.sharedPreferencesUtil.saveLoginInfo(user);
|
MainApp.theApp.userId = user.get_id();
|
}
|
}
|
|
@Override
|
public void showLoadingDialog() {
|
|
}
|
|
@Override
|
public void onFail(int errno, String s) {
|
|
}
|
});
|
}
|
}
|
|
public BluetoothService getBluetoothService() {
|
return mBluetoothService;
|
}
|
|
private void bindService() {
|
Intent bindIntent = new Intent(this, BluetoothService.class);
|
this.bindService(bindIntent, mFhrSCon, Context.BIND_AUTO_CREATE);
|
}
|
|
private void unbindService() {
|
this.unbindService(mFhrSCon);
|
}
|
|
private ServiceConnection mFhrSCon = new ServiceConnection() {
|
@Override
|
public void onServiceConnected(ComponentName name, IBinder service) {
|
mBluetoothService = ((BluetoothService.BluetoothBinder) service).getService();
|
mBluetoothService.setScanCallback(callback);
|
String mac = MainApp.theApp.sharedPreferencesUtil.getBLE();
|
System.out.println("BleGattCallback init");
|
if (!TextUtils.isEmpty(mac)) {
|
mBluetoothService.scanAndConnect5(mac);
|
}
|
}
|
|
@Override
|
public void onServiceDisconnected(ComponentName name) {
|
System.out.println("BleGattCallback onServiceDisconnected");
|
mBluetoothService = null;
|
}
|
};
|
|
private BluetoothService.Callback callback = new BluetoothService.Callback() {
|
@Override
|
public void onStartScan() {
|
System.out.println("MainActivity onStartScan");
|
}
|
|
@Override
|
public void onScanning(ScanResult result) {
|
System.out.println("MainActivity onScanning");
|
}
|
|
@Override
|
public void onScanComplete() {
|
System.out.println("MainActivity onScanComplete");
|
}
|
|
@Override
|
public void onConnecting() {
|
System.out.println("MainActivity onConnecting");
|
|
progressDialog.setTitleText("正在连接...");
|
progressDialog.show();
|
}
|
|
@Override
|
public void onConnectFail() {
|
System.out.println("MainActivity onConnectFail");
|
progressDialog.dismiss();
|
mBluetoothService.closeConnect();
|
EventMessage msg = new EventMessage();
|
msg.setType(AppConfig.GET_BLE_DISCONNECT);
|
EventBus.getDefault().postSticky(msg);
|
}
|
|
@Override
|
public void onDisConnected() {
|
System.out.println("MainActivity onDisConnected");
|
progressDialog.dismiss();
|
mToatUtils.showSingletonToast("孕妇哨连接断开");
|
EventMessage msg = new EventMessage();
|
msg.setType(AppConfig.GET_BLE_DISCONNECT);
|
EventBus.getDefault().postSticky(msg);
|
}
|
|
@Override
|
public void onServicesDiscovered() {
|
System.out.println("MainActivity onServicesDiscovered");
|
progressDialog.dismiss();
|
EventMessage msg = new EventMessage();
|
msg.setType(AppConfig.GET_BLE_SERVICE);
|
EventBus.getDefault().postSticky(msg);
|
}
|
};
|
|
private AlertDialog adDialog;
|
private View adView;
|
private TextView tv_content, tv_name;
|
private ImageView iv_logo;
|
private Button bt_cancel, bt_ok;
|
|
private void showAd(String content, String logo, String name) {
|
adView = LayoutInflater.from(this).inflate(R.layout.dialog_ad_layout, null);
|
tv_content = (TextView) adView.findViewById(R.id.tv_content);
|
tv_name = (TextView) adView.findViewById(R.id.tv_name);
|
bt_cancel = (Button) adView.findViewById(R.id.bt_cancel);
|
bt_ok = (Button) adView.findViewById(R.id.bt_ok);
|
iv_logo = (ImageView) adView.findViewById(R.id.iv_logo);
|
tv_content.setText(content);
|
tv_name.setText(name);
|
ImageLoader.setCircleImageView(this, logo, iv_logo, R.mipmap.circle);
|
bt_cancel.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
adDialog.dismiss();
|
}
|
});
|
adDialog = new AlertDialog.Builder(this).setView(adView).create();
|
Window window = adDialog.getWindow();
|
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
adDialog.show();
|
}
|
|
|
private void getAd() {
|
HttpUtils.doPost(API.GETAD, null, CacheMode.DEFAULT, false, new HttpCallBack() {
|
@Override
|
public void onSuccess(String res, String msg) {
|
if (TextUtils.isEmpty(res)) {
|
return;
|
}
|
try {
|
JSONObject json = new JSONObject(res);
|
String time = MainApp.theApp.sharedPreferencesUtil.getShowAd();
|
if (TextUtils.isEmpty(time)) {
|
showAd(json.optString("content"), json.optString("logo"), json.optString("name"));
|
MainApp.theApp.sharedPreferencesUtil.saveShowAd(TimeUtil.getCurrentDate("yyyy-MM-dd"));
|
} else {
|
if (time.equals(TimeUtil.getCurrentDate("yyyy-MM-dd"))) {
|
return;
|
} else {
|
showAd(json.optString("content"), json.optString("logo"), json.optString("name"));
|
MainApp.theApp.sharedPreferencesUtil.saveShowAd(TimeUtil.getCurrentDate("yyyy-MM-dd"));
|
}
|
}
|
} catch (JSONException e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
@Override
|
public void showLoadingDialog() {
|
|
}
|
|
@Override
|
public void onFail(int errno, String s) {
|
|
}
|
});
|
}
|
|
public void resetBLECallBack() {
|
if (mBluetoothService != null) {
|
mBluetoothService.setScanCallback(callback);
|
}
|
}
|
|
}
|