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.graphics.Color; import android.graphics.drawable.ColorDrawable; 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.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 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; 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!"); } 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); } } UpdateManager manager = new UpdateManager(MainActivity.this); private class checkUpdateTask extends AsyncTask { @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 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("连接失败"); EventMessage msg = new EventMessage(); msg.setType(AppConfig.GET_BLE_DISCONNECT); EventBus.getDefault().postSticky(msg); } @Override public void onDisConnected() { progressDialog.dismiss(); mToatUtils.showSingletonToast("孕妇哨连接断开"); EventMessage msg = new EventMessage(); msg.setType(AppConfig.GET_BLE_DISCONNECT); EventBus.getDefault().postSticky(msg); } @Override public void 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); } } }