package com.basic.security.fragment; import android.content.Intent; import android.content.pm.PackageInfo; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Outline; import android.net.Uri; import android.os.Build; import android.os.Bundle; 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.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewOutlineProvider; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.basic.security.base.BaseApplication; import com.basic.security.base.BaseFragment; import com.basic.security.manager.LogManager; 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.RUtils; import com.basic.security.utils.ResolutionAdaptation; 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 public class HomeFragment extends BaseFragment { @ViewById public ImageView weather_image_view; @ViewById TextView temp, address, wind, wind_class; @ViewById ImageView weather_icon; Handler mHandler = new Handler(); @ViewById Button test1, test2, test3; private boolean isFirst = true; private int number = 0; Runnable runnable = new Runnable() { public void run() { LogManager.saveWeather("{\"now\":{\"cloud\":\"0\",\"cond_code\":\"100\",\"cond_txt\":\"晴\",\"fl\":\"-5\",\"hum\":\"27\",\"pcpn\":\"0.0\",\"pres\":\"1037\",\"tmp\":\"-1\",\"vis\":\"16\",\"wind_deg\":\"65\",\"wind_dir\":\"东北风\",\"wind_sc\":\"2\",\"wind_spd\":\"11\"},\"basic\":{\"admin_area\":\"北京\",\"cid\":\"CN101010300\",\"cnty\":\"中国\",\"lat\":\"39.92148972\",\"location\":\"朝阳\",\"lon\":\"116.48641205\",\"parent_city\":\"北京\",\"tz\":\"+8.00\"},\"status\":\"ok\",\"update\":{\"loc\":\"2019-11-25 09:12\",\"utc\":\"2019-11-25 01:12\"}}"); String jsonStr = LogManager.findWeather(); // System1.out.println("HomeFragment.run jsonStr" + jsonStr); if (!TextUtils.isEmpty(jsonStr)) { Gson gson = new Gson(); LogManager.saveWeather(jsonStr); // System1.out.println("HomeFragment.onSuccess " + jsonStr); WeatherData data = gson.fromJson(jsonStr, WeatherData.class); Bitmap bitmap = null; try { InputStream in; in = mainActivity().getAssets().open("weather_icon/" + data.now.cond_code + ".png"); bitmap = BitmapFactory.decodeStream(in); in.close(); } catch (Exception e) { e.printStackTrace(); } SetWeatherData(data, bitmap); mHandler.postDelayed(runnable, 12 * 60 * 60 * 1000); return; } // System1.out.println("HomeFragment.run 1 "); HeWeather.getWeatherNow(mainActivity(), "CN101010300", Lang.CHINESE_SIMPLIFIED, Unit.METRIC, new HeWeather.OnResultWeatherNowBeanListener() { public void onError(Throwable e) { System1.out.println("HomeFragment.onError " + e.getMessage()); number += 1; if (number < 5) { // mHandler.postDelayed(runnable, 5000); } else { } mHandler.postDelayed(runnable, 12 * 60 * 60 * 1000); } public void onSuccess(List dataObject) { Gson gson = new Gson(); String jsonStr = gson.toJson(dataObject.get(0)); LogManager.saveWeather(jsonStr); // System1.out.println("HomeFragment.onSuccess " + jsonStr); //jsonStr {"now":{"cloud":"0","cond_code":"100","cond_txt":"晴","fl":"-5","hum":"27","pcpn":"0.0","pres":"1037","tmp":"-1","vis":"16","wind_deg":"65","wind_dir":"东北风","wind_sc":"2","wind_spd":"11"},"basic":{"admin_area":"北京","cid":"CN101010300","cnty":"中国","lat":"39.92148972","location":"朝阳","lon":"116.48641205","parent_city":"北京","tz":"+8.00"},"status":"ok","update":{"loc":"2019-11-25 09:12","utc":"2019-11-25 01:12"}} WeatherData data = gson.fromJson(jsonStr, WeatherData.class); Bitmap bitmap = null; try { InputStream in; in = mainActivity().getAssets().open("weather_icon/" + data.now.cond_code + ".png"); bitmap = BitmapFactory.decodeStream(in); in.close(); } catch (Exception e) { e.printStackTrace(); } SetWeatherData(data, bitmap); mHandler.postDelayed(runnable, 12 * 60 * 60 * 1000); } }); } }; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(ResolutionAdaptation.fragment_home(), container, false); } public void show() { super.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() { super.hide(); } @AfterViews public void afterViews() { weather_image_view.setOutlineProvider(new ViewOutlineProvider() { public void getOutline(View view, Outline outline) { outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), getActivity().getResources().getDimension(com.basic.security.utils.RUtils.R_dimen_corner_radius)); } }); weather_image_view.setClipToOutline(true); mHandler.postDelayed(runnable, 5000); } @UiThread public void SetWeatherData(WeatherData data, Bitmap bitmap) { 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 + "级"); weather_icon.setImageBitmap(bitmap); if ("100".equals(data.now.cond_code)) { // 晴天 weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_sunny); } else if (data.now.cond_code.startsWith("1")) {// 多云 weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_cloudy); } else if (data.now.cond_code.startsWith("2")) { // 有风 weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_wind); } else if (data.now.cond_code.startsWith("3")) { // 雨 weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_rainy); } else if (data.now.cond_code.startsWith("4")) { // 雪 weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_snow); } else if (data.now.cond_code.startsWith("5")) { // 雾和霾 weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_smoggy); } else { // 默认图片 weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_sunny); } } catch (Exception e) { e.printStackTrace(); } try { // System1.out.println("HomeFragment.SetWeatherData"); // mainActivity().secondaryDisplay.temp.setTextColor(Color.parseColor("#feb739")); // mainActivity().secondaryDisplay.temp.setText(data.now.tmp + "°C"); // mainActivity().secondaryDisplay.address.setText("地点:" + data.basic.admin_area + data.basic.location); // mainActivity().secondaryDisplay.wind.setText("风向:" + data.now.wind_dir); // mainActivity().secondaryDisplay.wind_class.setText("风力:" + data.now.wind_sc + "级"); // mainActivity().secondaryDisplay.weather_icon.setImageBitmap(bitmap); // if ("100".equals(data.now.cond_code)) { // 晴天 // mainActivity().secondaryDisplay.weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_sunny); // } else if (data.now.cond_code.startsWith("1")) {// 多云 // mainActivity().secondaryDisplay.weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_cloudy); // } else if (data.now.cond_code.startsWith("2")) { // 有风 // mainActivity().secondaryDisplay.weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_wind); // } else if (data.now.cond_code.startsWith("3")) { // 雨 // mainActivity().secondaryDisplay.weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_rainy); // } else if (data.now.cond_code.startsWith("4")) { // 雪 // mainActivity().secondaryDisplay.weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_snow); // } else if (data.now.cond_code.startsWith("5")) { // 雾和霾 // mainActivity().secondaryDisplay.weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_smoggy); // } else { // 默认图片 // mainActivity().secondaryDisplay.weather_image_view.setImageResource(com.basic.security.utils.RUtils.R_drawable_sunny); // } } catch (Exception e) { e.printStackTrace(); } } public void check() { BaseApplication.getApplication().executorService.execute(() -> { FastDFSUtil.testUpload("/dsf/dsf/cdfgg", "jpg"); }); } @Click void test2() { check(); } @Click void test3() { } public void checkCardService() { if (!Constants.indoorOutdoorInOne) { 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() { 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(), RUtils.applicationID + ".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("安装失败"); } } public void doCancel() { confirmDialog.dismiss(); } }); } }