package com.moral.yunfushao;
|
|
import android.Manifest;
|
import android.content.ComponentName;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.ServiceConnection;
|
import android.os.AsyncTask;
|
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.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.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.model.EventMessage;
|
import com.moral.yunfushao.model.User;
|
import com.moral.yunfushao.update.UpdateManager;
|
|
import org.greenrobot.eventbus.EventBus;
|
|
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;
|
|
private 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 onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
bindService();
|
}
|
|
@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!");
|
}
|
}
|
|
@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);
|
}
|
}
|
|
UpdateManager manager = new UpdateManager(MainActivity.this);
|
|
private class checkUpdateTask extends AsyncTask<String, Void, String> {
|
@Override
|
protected String doInBackground(String... params) {
|
Looper.prepare();
|
// 检查软件更新
|
manager.checkUpdate();
|
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();
|
if(!TextUtils.isEmpty(mac)){
|
mBluetoothService.scanAndConnect5(mac);
|
}
|
}
|
|
@Override
|
public void onServiceDisconnected(ComponentName name) {
|
mBluetoothService = null;
|
}
|
|
|
};
|
|
private BluetoothService.Callback callback = new BluetoothService.Callback() {
|
@Override
|
public void onStartScan() {
|
|
}
|
|
@Override
|
public void onScanning(ScanResult result) {
|
|
}
|
|
@Override
|
public void onScanComplete() {
|
|
}
|
|
@Override
|
public void onConnecting() {
|
progressDialog.setTitleText("正在连接...");
|
progressDialog.show();
|
}
|
|
@Override
|
public void onConnectFail() {
|
progressDialog.dismiss();
|
mToatUtils.showSingletonToast("连接失败");
|
|
}
|
|
@Override
|
public void onDisConnected() {
|
progressDialog.dismiss();
|
mToatUtils.showSingletonToast("连接断开");
|
EventMessage msg = new EventMessage();
|
msg.setType(AppConfig.GET_BLE_DISCONNECT);
|
EventBus.getDefault().post(msg);
|
}
|
|
@Override
|
public void onServicesDiscovered() {
|
progressDialog.dismiss();
|
EventMessage msg = new EventMessage();
|
msg.setType(AppConfig.GET_BLE_SERVICE);
|
EventBus.getDefault().postSticky(msg);
|
}
|
};
|
|
// private void registerBoradcastReceiver() {
|
// IntentFilter stateChangeFilter = new IntentFilter(
|
// BluetoothAdapter.ACTION_STATE_CHANGED);
|
// IntentFilter connectedFilter = new IntentFilter(
|
// BluetoothDevice.ACTION_ACL_CONNECTED);
|
// IntentFilter disConnectedFilter = new IntentFilter(
|
// BluetoothDevice.ACTION_ACL_DISCONNECTED);
|
// registerReceiver(stateChangeReceiver, stateChangeFilter);
|
// registerReceiver(stateChangeReceiver, connectedFilter);
|
// registerReceiver(stateChangeReceiver, disConnectedFilter);
|
// }
|
//
|
// private BroadcastReceiver stateChangeReceiver = new BroadcastReceiver() {
|
// @Override
|
// public void onReceive(Context context, Intent intent) {
|
// String action = intent.getAction();
|
// if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
|
// mToatUtils.showSingletonToast("xxx连接OK");
|
// }
|
// if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
|
// mToatUtils.showSingletonToast("xxx连接断开");
|
// }
|
// if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
|
// mToatUtils.showSingletonToast("xxx连接变化");
|
// }
|
// }
|
// };
|
|
// private boolean isFinish = false;
|
// Timer timer;
|
//
|
// private void bleHeart() {
|
// timer = new Timer();
|
// timer.schedule(new TimerTask() {
|
// @Override
|
// public void run() {
|
// if (!isFinish) {
|
// if(!MainApp.theApp.bleManager.isConnected()){
|
// runOnUiThread(new Runnable() {
|
// @Override
|
// public void run() {
|
// mToatUtils.showSingletonToast("TMD连接断了");
|
// }
|
// });
|
// }
|
// }
|
// }
|
// }, 0, 10000);
|
// }
|
}
|