package com.lechange.demo.ui; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.common.openapi.ClassInstanceManager; import com.common.openapi.DeviceDetailService; import com.common.openapi.IGetDeviceInfoCallBack; import com.common.openapi.MethodConst; import com.common.openapi.entity.DeviceDetailListData; import com.common.openapi.entity.DeviceVersionListData; import com.lechange.demo.R; import com.lechange.demo.dialog.DeviceUpdateDialog; import com.lechange.demo.view.LcProgressBar; import com.mm.android.deviceaddmodule.mobilecommon.utils.LogUtil; public class DeviceDetailVersionFragment extends Fragment implements IGetDeviceInfoCallBack.IDeviceVersionCallBack, View.OnClickListener , IGetDeviceInfoCallBack.IDeviceUpdateCallBack { private static final String TAG = DeviceDetailVersionFragment.class.getSimpleName(); private Bundle arguments; private LcProgressBar pgUpodate; private TextView tvVersionTip; private LinearLayout llNewVersion; private TextView tvNewVersionTip; private TextView tvNewVersion; private TextView tvDeviceCurrentVersion; private DeviceDetailActivity deviceDetailActivity; private DeviceDetailService deviceDetailService; private DeviceDetailListData.ResponseData.DeviceListBean deviceListBean; public boolean upIsDone = false;//设备升级完成 private DeviceVersionListData deviceVersionListData; public Handler taskHandler; public static DeviceDetailVersionFragment newInstance() { DeviceDetailVersionFragment fragment = new DeviceDetailVersionFragment(); Bundle args = new Bundle(); fragment.setArguments(args); return fragment; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); deviceDetailActivity = (DeviceDetailActivity) getActivity(); deviceDetailActivity.llOperate.setVisibility(View.GONE); arguments = getArguments(); taskHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); checkDeviceVersion(); if(!upIsDone){ taskHandler.sendEmptyMessageDelayed(0,5000); } } }; } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_device_version, container, false); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); DeviceDetailActivity deviceDetailActivity = (DeviceDetailActivity) getActivity(); deviceDetailActivity.tvTitle.setText(getResources().getString(R.string.lc_demo_device_version_title)); initView(view); initData(); } private void initView(View view) { tvDeviceCurrentVersion = view.findViewById(R.id.tv_device_current_version); tvNewVersion = view.findViewById(R.id.tv_new_version); tvNewVersionTip = view.findViewById(R.id.tv_new_version_tip); llNewVersion = view.findViewById(R.id.ll_new_version); tvVersionTip = view.findViewById(R.id.tv_version_tip); pgUpodate = view.findViewById(R.id.pg_upodate); pgUpodate.setOnClickListener(this); } private void initData() { //获取设备版本信息 if (arguments == null) { return; } deviceListBean = (DeviceDetailListData.ResponseData.DeviceListBean) arguments.getSerializable(MethodConst.ParamConst.deviceDetail); if (deviceListBean == null) { return; } deviceDetailActivity.rlLoading.setVisibility(View.VISIBLE); deviceDetailService = ClassInstanceManager.newInstance().getDeviceDetailService(); deviceVersionListData = new DeviceVersionListData(); deviceVersionListData.data.deviceIds = deviceListBean.deviceId; checkDeviceVersion(); } private void checkDeviceVersion(){ deviceDetailService.deviceVersionList(deviceVersionListData, this); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } @Override public void deviceVersion(DeviceVersionListData.Response responseData) { if (!isAdded()){ return; } deviceDetailActivity.rlLoading.setVisibility(View.GONE); if (responseData.data == null || responseData.data.deviceVersionList == null || responseData.data.deviceVersionList.size() == 0) { return; } DeviceVersionListData.ResponseData.DeviceVersionListBean deviceVersionListBean = responseData.data.deviceVersionList.get(0); if (deviceVersionListBean == null) { return; } tvDeviceCurrentVersion.setText(deviceVersionListBean.version); if (deviceVersionListBean.getUpgradeInfo() == null) { //已是最新版本 llNewVersion.setVisibility(View.GONE); pgUpodate.setVisibility(View.GONE); tvVersionTip.setVisibility(View.VISIBLE); tvVersionTip.setText(getResources().getString(R.string.lc_demo_device_version_new_tip)); upIsDone = true; } else { //需要更新设备 llNewVersion.setVisibility(View.VISIBLE); pgUpodate.setVisibility(View.VISIBLE); tvVersionTip.setVisibility(View.GONE); tvNewVersion.setText(deviceVersionListBean.getUpgradeInfo().getVersion()); tvNewVersionTip.setText(deviceVersionListBean.getUpgradeInfo().getDescription()); upIsDone = false; } } @Override public void deviceUpdate(boolean result) { if (!isAdded()){ return; } if(result){ taskHandler.sendEmptyMessageDelayed(0,5000); }else{ deviceDetailActivity.rlLoading.setVisibility(View.GONE); Toast.makeText(getContext(), "Update is error", Toast.LENGTH_SHORT).show(); deviceDetailActivity.finish(); } } @Override public void onError(Throwable throwable) { if (!isAdded()){ return; } deviceDetailActivity.rlLoading.setVisibility(View.GONE); LogUtil.errorLog(TAG, "error", throwable); pgUpodate.setText(getResources().getString(R.string.lc_demo_device_update)); Toast.makeText(getContext(), throwable.getMessage(), Toast.LENGTH_SHORT).show(); } @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.pg_upodate) { if(pgUpodate.getText().equals(getResources().getString(R.string.lc_demo_device_updateing))){ Toast.makeText(getContext(),getResources().getString(R.string.lc_demo_device_updateing), Toast.LENGTH_SHORT).show(); return; } DeviceUpdateDialog deviceUpdateDialog = new DeviceUpdateDialog(getContext()); deviceUpdateDialog.setOnOkClickLisenter(new DeviceUpdateDialog.OnOkClickLisenter() { @Override public void OnOK() { // deviceDetailActivity.rlLoading.setVisibility(View.VISIBLE); pgUpodate.setText(getResources().getString(R.string.lc_demo_device_updateing)); if(deviceDetailService==null){ deviceDetailService = ClassInstanceManager.newInstance().getDeviceDetailService(); } deviceDetailService.upgradeDevice(deviceListBean.deviceId,DeviceDetailVersionFragment.this); } }); deviceUpdateDialog.show(); } } @Override public void onDestroy() { super.onDestroy(); taskHandler.removeMessages(0); } }