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 perms) { if (requestCode == WRITE_EXTERNAL_STORAGE) { manager.showNoticeDialog(); } } @Override public void onPermissionsDenied(int requestCode, List 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 { @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 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); } } }