package com.basic.security.fragment; import android.content.Intent; import android.content.pm.PackageInfo; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Outline; import android.net.Uri; import android.os.Build; import android.os.Environment; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.content.FileProvider; import android.util.Log; import android.view.View; import android.view.ViewOutlineProvider; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.basic.security.BuildConfig; import com.basic.security.R; import com.basic.security.base.BaseApplication; import com.basic.security.base.BaseFragment; import com.basic.security.manager.RecognizeManager; import com.basic.security.utils.Constants; import com.basic.security.utils.FastDFSUtil; import com.basic.security.utils.FileUtil; import com.basic.security.utils.SystemUtils; import com.basic.security.utils.ToastUtil; import com.basic.security.utils.WeatherData; import com.basic.security.widget.ConfirmDialog; import com.google.gson.Gson; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.UiThread; import org.androidannotations.annotations.ViewById; import java.io.File; import java.io.InputStream; import java.util.List; import interfaces.heweather.com.interfacesmodule.bean.Lang; import interfaces.heweather.com.interfacesmodule.bean.Unit; import interfaces.heweather.com.interfacesmodule.view.HeWeather; import static com.basic.security.utils.Constants.isNewIDCardReader; @EFragment(R.layout.fragment_home) public class HomeFragment extends BaseFragment { @ViewById public ImageView weather_image_view; @ViewById TextView temp, address, wind, wind_class; @ViewById ImageView weather_icon; @ViewById Button test1, test2, test3; Handler mHandler = new Handler(); private boolean isFirst = true; private int number = 0; Runnable runnable = new Runnable() { @Override public void run() { try { HeWeather.getWeatherNow(mainActivity(), "CN101010300", Lang.CHINESE_SIMPLIFIED, Unit.METRIC, new HeWeather.OnResultWeatherNowBeanListener() { @Override public void onError(Throwable e) { // ToastUtil.show(e.getMessage()); Log.e("getWeatherNow", e.getMessage() + number); number += 1; if (number < 5) { // System.out.println("HomeFragment.onError 1"); // mHandler.postDelayed(runnable, 60 * 60 * 5000); } else { System.out.println("HomeFragment.onError 2"); mHandler.postDelayed(runnable, 6*60 * 60 * 1000); } } @Override public void onSuccess(List dataObject) { System.out.println("HomeFragment.onSuccess 3"); Gson gson = new Gson(); // Log.e("successWeather", gson.toJson(dataObject.get(0))); WeatherData data = gson.fromJson(gson.toJson(dataObject.get(0)), WeatherData.class); SetWeatherData(data); mHandler.postDelayed(runnable, 6*60 * 60 * 1000); } }); } catch (Exception e) { e.printStackTrace(); } } }; @Override public void show() { RecognizeManager.restartWaitFace(); if (isFirst) { isFirst = false; checkCardService(); } // 解决如果菜单栏显示,长时间不操作返回首页,菜单栏显示的问题 Fragment fragment_menu = mainActivity().fragment_menu; if (fragment_menu.isVisible()) { FragmentManager fm = getFragmentManager(); fm.beginTransaction() .hide(fragment_menu) .commitAllowingStateLoss(); } } public void hide() { } @AfterViews public void afterViews() { weather_image_view.setOutlineProvider(new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), getActivity().getResources().getDimension(R.dimen.corner_radius)); } }); weather_image_view.setClipToOutline(true); mHandler.postDelayed(runnable, 5000); temp.setVisibility(View.GONE); } @UiThread public void SetWeatherData(WeatherData data) { try { temp.setTextColor(Color.parseColor("#feb739")); temp.setText(data.now.tmp + "°C"); address.setText("地点:" + data.basic.admin_area + data.basic.location); wind.setText("风向:" + data.now.wind_dir); wind_class.setText("风力:" + data.now.wind_sc + "级"); InputStream in = mainActivity().getAssets().open("weather_icon/" + data.now.cond_code + ".png"); weather_icon.setImageBitmap(BitmapFactory.decodeStream(in)); in.close(); if ("100".equals(data.now.cond_code)) { // 晴天 weather_image_view.setImageResource(R.drawable.sunny); } else if (data.now.cond_code.startsWith("1")) {// 多云 weather_image_view.setImageResource(R.drawable.cloudy); } else if (data.now.cond_code.startsWith("2")) { // 有风 weather_image_view.setImageResource(R.drawable.wind); } else if (data.now.cond_code.startsWith("3")) { // 雨 weather_image_view.setImageResource(R.drawable.rainy); } else if (data.now.cond_code.startsWith("4")) { // 雪 weather_image_view.setImageResource(R.drawable.snow); } else if (data.now.cond_code.startsWith("5")) { // 雾和霾 weather_image_view.setImageResource(R.drawable.smoggy); } else { // 默认图片 weather_image_view.setImageResource(R.drawable.sunny); } } catch (Exception e) { e.printStackTrace(); } } // @Click // void test1() { // TestSubscribe.getTestDoGet(new VisitRecordTO(), new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() { // @Override // public void onSuccess(String result) { // Log.e("networktag", result); // } // // @Override // public void onFault(String errorMsg) { // Log.e("networktag", errorMsg); // } // })); // } public void check() { BaseApplication.getApplication().executorService.execute(() -> { FastDFSUtil.testUpload("/dsf/dsf/cdfgg", "jpg"); }); } @Click void test2() { check(); } @Click void test3() { // Expression expression = Expression.property("table").equalTo(Expression.string("base_setting")); //// Expression expression = Expression.property("table").equalTo(Expression.string("user")); // List list = BaseSettingManager.findBaseSettingList(expression); // // for (int i = 1; i < list.size(); i++) { // BaseSettingManager.deleteBaseSetting(list.get(i)); // } } public void checkCardService() { if (Constants.needIdCardModule) { boolean hasService; if (!isNewIDCardReader) { hasService = SystemUtils.checkHaveApp(mainActivity(), "com.basic.project.idcardservice"); if (!hasService) { showInstallDialog("IDCardReader.apk", "尚未安装身份证模块,是否安装"); } else { List listPackageInfo = mainActivity().getPackageManager().getInstalledPackages(0); for (int i = 0; i < listPackageInfo.size(); i++) { if (listPackageInfo.get(i).packageName.equalsIgnoreCase("com.basic.project.idcardservice")) { if (listPackageInfo.get(i).versionCode < 2) { showInstallDialog("IDCardReader.apk", "身份证模块有更新可用,是否安装"); } else { break; } } } } } else { hasService = SystemUtils.checkHaveApp(mainActivity(), "com.alfeye.readcardserver"); if (!hasService) { showInstallDialog("AlfeyeReadCardServer.apk", "尚未安装身份证模块,是否安装"); } } } } private void showInstallDialog(String fileName, String title) { final ConfirmDialog confirmDialog = new ConfirmDialog(mainActivity(), title, "安装", "取消"); confirmDialog.show(); confirmDialog.setClickListener(new ConfirmDialog.ClickListenerInterface() { @Override public void doConfirm() { confirmDialog.dismiss(); if (FileUtil.copyApkFromAssets(mainActivity(), fileName, Environment.getExternalStorageDirectory().getAbsolutePath())) { File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + fileName); if (file.exists()) { try { Intent intent = new Intent(Intent.ACTION_VIEW); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri contentUri = null; try { contentUri = FileProvider.getUriForFile(mainActivity(), BuildConfig.APPLICATION_ID + ".fileProvider", file); } catch (Exception e) { e.printStackTrace(); } intent.setDataAndType(contentUri, "application/vnd.android.package-archive"); } else { intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(Uri.parse(file.getAbsolutePath()), "application/vnd.android.package-archive"); } startActivity(intent); } catch (Exception e) { e.printStackTrace(); ToastUtil.show("安装失败" + e.getMessage()); } } else { ToastUtil.show("文件出错"); } } else { ToastUtil.show("安装失败"); } } @Override public void doCancel() { confirmDialog.dismiss(); } }); } }