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 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("连接失败"); } @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().post(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); // } }