NVRSettingDiskInfoActivity.java 源代码


package main.NVR.Setting;

import activity.cloud.bean.PieData;
import activity.cloud.utils.DesUtils;
import activity.cloud.view.MyChart;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import base.HiActivity;
import bean.MyCamera;
import com.hichip.NVR.content.HiChipNVRDefines;
import com.hichip.base.HiLog;
import com.hichip.callback.ICameraIOSessionCallback;
import com.hichip.campro.R;
import com.hichip.control.HiCamera;
import com.hichip.tools.Packet;
import com.xiaomi.mipush.sdk.Constants;
import common.ConstantCommand;
import common.HiDataValue;
import common.TitleView;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import main.MainActivity;
import utils.DialogUtilsCamHiPro;
import utils.HiLogcatUtil;
import utils.HiTools;
import utils.MyToast;
import utils.SharePreUtils;

public class NVRSettingDiskInfoActivity extends HiActivity implements ICameraIOSessionCallback {
    private TextView available_isdiskmount;
    private TextView available_space_size;
    private TextView format_sd_card;
    private LinearLayout ll_chart;
    private LinearLayout ll_normal;
    private MyCamera mCamera;
    private String oldResolution;
    private boolean percentageShow;
    private MyChart pieChart;
    private HiChipNVRDefines.PLATFORM_S_DISKINFO sd_info;
    Spinner spinner;
    private TextView storage_space_size;
    private TextView storage_type;
    private TextView tvLastSpacePre;
    private TextView tvUseSpacePer;
    private DecimalFormat numberFormat = new DecimalFormat("#0.00");
    private boolean showEditText = false;
    SpinnerAdapter adapter = null;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message message) {
            MyCamera myCamera = (MyCamera) message.obj;
            switch (message.what) {
                case HiDataValue.HANDLE_MESSAGE_SESSION_STATE:
                    NVRSettingDiskInfoActivity.this.handSessionState(message, myCamera);
                    return;
                case HiDataValue.HANDLE_MESSAGE_RECEIVE_IOCTRL:
                    if (message.arg2 == 0) {
                        byte[] byteArray = message.getData().getByteArray("data");
                        if (message.arg1 == 268435490 && !NVRSettingDiskInfoActivity.this.isformatSDCard) {
                            NVRSettingDiskInfoActivity.this.dismissjuHuaDialog();
                            if (byteArray.length >= 32) {
                                NVRSettingDiskInfoActivity.this.sd_info = new HiChipNVRDefines.PLATFORM_S_DISKINFO(byteArray);
                                HiLogcatUtil.e("HI_NVR_P2P_PLATFORM_DISKINFO" + NVRSettingDiskInfoActivity.this.sd_info.u32UsbDisk + Constants.COLON_SEPARATOR + NVRSettingDiskInfoActivity.this.sd_info.u32Mount + Constants.COLON_SEPARATOR + NVRSettingDiskInfoActivity.this.sd_info.u32Saturation + Constants.COLON_SEPARATOR + NVRSettingDiskInfoActivity.this.sd_info.u64AvailSize);
                                HiLogcatUtil.e("HI_NVR_P2P_PLATFORM_DISKINFO" + NVRSettingDiskInfoActivity.this.sd_info.u32UsbDisk + Constants.COLON_SEPARATOR + NVRSettingDiskInfoActivity.this.sd_info.u32Mount + Constants.COLON_SEPARATOR + Packet.byteArrayToInt_Little(byteArray, 8) + Constants.COLON_SEPARATOR + Packet.byteArrayToInt_Little(byteArray, 16));
                                HiLogcatUtil.e("HI_NVR_P2P_PLATFORM_DISKINFO" + NVRSettingDiskInfoActivity.this.sd_info.u32UsbDisk + Constants.COLON_SEPARATOR + NVRSettingDiskInfoActivity.this.sd_info.u32Mount + Constants.COLON_SEPARATOR + Packet.byteArrayToLong_Little(byteArray, 8) + Constants.COLON_SEPARATOR + Packet.byteArrayToLong_Little(byteArray, 16));
                                HiLogcatUtil.e("HI_NVR_P2P_PLATFORM_DISKINFO" + NVRSettingDiskInfoActivity.this.sd_info.u32UsbDisk + Constants.COLON_SEPARATOR + NVRSettingDiskInfoActivity.this.sd_info.u32Mount + Constants.COLON_SEPARATOR + Packet.readUnsignedInt(byteArray, 8) + Constants.COLON_SEPARATOR + Packet.readUnsignedInt(byteArray, 16));
                                NVRSettingDiskInfoActivity.this.sd_info.u32Saturation = Packet.readUnsignedInt(byteArray, 8);
                                NVRSettingDiskInfoActivity.this.sd_info.u64AvailSize = Packet.readUnsignedInt(byteArray, 16);
                                NVRSettingDiskInfoActivity.this.sd_info.u32Saturation = (long) Math.ceil((double) (NVRSettingDiskInfoActivity.this.sd_info.u32Saturation / 996000));
                                NVRSettingDiskInfoActivity.this.sd_info.u64AvailSize = (long) Math.ceil((double) (NVRSettingDiskInfoActivity.this.sd_info.u64AvailSize / 996000));
                                NVRSettingDiskInfoActivity.this.storage_space_size.setText("" + NVRSettingDiskInfoActivity.this.sd_info.u32Saturation + "GB");
                                NVRSettingDiskInfoActivity.this.available_space_size.setText("" + NVRSettingDiskInfoActivity.this.sd_info.u64AvailSize + "GB");
                                return;
                            }
                            return;
                        }
                        return;
                    }
                    NVRSettingDiskInfoActivity.this.dismissjuHuaDialog();
                    return;
                case ConstantCommand.HI_P2P_GET_DEVICE_WORKING_MODE:
                    NVRSettingDiskInfoActivity.this.dismissjuHuaDialog();
                    NVRSettingDiskInfoActivity.this.dismissLoadDialog();
                    MyToast.showToast(NVRSettingDiskInfoActivity.this.getApplicationContext(), NVRSettingDiskInfoActivity.this.getString(R.string.netword_abnormal));
                    NVRSettingDiskInfoActivity.this.startActivity(new Intent(NVRSettingDiskInfoActivity.this, (Class<?>) MainActivity.class), true);
                    return;
                case ConstantCommand.HI_P2P_SET_DEVICE_WORKING_MODE:
                    NVRSettingDiskInfoActivity.this.dismissjuHuaDialog();
                    NVRSettingDiskInfoActivity.this.dismissLoadDialog();
                    HiDataValue.isNeedkillNoMain = false;
                    NVRSettingDiskInfoActivity.this.startActivity(new Intent(NVRSettingDiskInfoActivity.this, (Class<?>) MainActivity.class), true);
                    return;
                default:
                    return;
            }
        }
    };
    private boolean isformatSDCard = false;

    @Override
    protected int setLayoutId() {
        return R.layout.activity_nvr_diskinfosetting;
    }

    @Override
    protected void init(Bundle bundle) {
        String stringExtra = getIntent().getStringExtra(HiDataValue.EXTRAS_KEY_UID);
        Iterator<MyCamera> it = HiDataValue.CameraList.iterator();
        while (true) {
            if (!it.hasNext()) {
                break;
            }
            MyCamera next = it.next();
            if (stringExtra.equals(next.getUid())) {
                this.mCamera = next;
                break;
            }
        }
        initView();
        initSpinner();
        initSpinnerSelect();
    }

    private void initView() {
        TitleView titleView = (TitleView) findViewById(R.id.title_top);
        titleView.setTitle(getResources().getString(R.string.nvrsetting_diskfun));
        titleView.setButton(0);
        titleView.setNavigationBarButtonListener(new TitleView.NavigationBarButtonListener() {
            @Override
            public void OnNavigationButtonClick(int i) {
                if (i != 0) {
                    return;
                }
                NVRSettingDiskInfoActivity.this.finish();
            }
        });
        this.available_space_size = (TextView) findViewById(R.id.available_space_size);
        this.storage_space_size = (TextView) findViewById(R.id.storage_space_size);
        this.storage_type = (TextView) findViewById(R.id.storage_type);
        this.available_isdiskmount = (TextView) findViewById(R.id.available_isdiskmount);
        this.ll_normal = (LinearLayout) findViewById(R.id.ll_normal);
        this.ll_chart = (LinearLayout) findViewById(R.id.ll_chart);
        this.pieChart = (MyChart) findViewById(R.id.pie_chart);
        this.tvUseSpacePer = (TextView) findViewById(R.id.tv_use_space_per);
        this.tvLastSpacePre = (TextView) findViewById(R.id.tv_last_space_pre);
        TextView textView = (TextView) findViewById(R.id.format_sd_card);
        this.format_sd_card = textView;
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                NVRSettingDiskInfoActivity.this.formatSDCard();
            }
        });
    }

    private void initSpinner() {
        this.spinner.setDropDownVerticalOffset(HiTools.dip2px(this, 40.0f));
        ArrayAdapter<CharSequence> createFromResource = ArrayAdapter.createFromResource(this, R.array.Disk_array, android.R.layout.simple_spinner_dropdown_item);
        this.adapter = createFromResource;
        this.spinner.setAdapter((SpinnerAdapter) createFromResource);
        this.spinner.setSelection(0, false);
        this.oldResolution = getResources().getStringArray(R.array.Disk_array)[0];
    }

    private void initSpinnerSelect() {
        this.spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
            }

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long j) {
                if (NVRSettingDiskInfoActivity.this.spinner.getSelectedItem().toString().equals(NVRSettingDiskInfoActivity.this.oldResolution)) {
                    return;
                }
                NVRSettingDiskInfoActivity.this.setDiskResolution(1);
            }
        });
    }

    public void setDiskResolution(int i) {
        String[] stringArray = getResources().getStringArray(R.array.Disk_array);
        HiLog.e(this.mCamera.getUid() + Constants.COLON_SEPARATOR + this.spinner.getSelectedItem().toString() + "::" + this.oldResolution + "::" + i);
        if (this.sd_info == null) {
            return;
        }
        if (this.spinner.getSelectedItem().toString().equals(stringArray[0])) {
            this.sd_info.u32UsbDisk = 1;
            this.oldResolution = stringArray[0];
        } else if (this.spinner.getSelectedItem().toString().equals(stringArray[1])) {
            this.sd_info.u32UsbDisk = 2;
            this.oldResolution = stringArray[1];
        } else {
            this.sd_info.u32UsbDisk = 1;
            this.oldResolution = stringArray[0];
        }
        this.sd_info.u8mode = 0;
        showjuHuaDialog();
        this.mCamera.sendIOCtrl(HiChipNVRDefines.HI_NVR_P2P_PLATFORM_DISKINFO, this.sd_info.parseContent());
    }

    public void formatSDCard() {
        new DialogUtilsCamHiPro(this).title(getText(R.string.tips_warning)).message(getText(R.string.nvrtips_format_disk)).sureText(getString(R.string.sure)).cancelText(getString(R.string.cancel)).setSureOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view) {
                NVRSettingDiskInfoActivity.this.lambda$formatSDCard$0$NVRSettingDiskInfoActivity(view);
            }
        }).build().show();
    }

    public void lambda$formatSDCard$0$NVRSettingDiskInfoActivity(View view) {
        showPwd();
    }

    public void handSessionState(Message message, MyCamera myCamera) {
        if (message.arg1 == 0 && myCamera != null) {
            HiLogcatUtil.i("--CameraFragment p2p DISCONNECTED--:" + myCamera.getUid());
            this.handler.sendEmptyMessageDelayed(ConstantCommand.HI_P2P_GET_DEVICE_WORKING_MODE, 1000L);
        }
    }

    private void initPieChart(int i, int i2) {
        ArrayList arrayList = new ArrayList();
        arrayList.add(new PieData(i, R.color.use_color));
        arrayList.add(new PieData(i2, R.color.color_state_onling));
        this.pieChart.setmStartAngle(270.0f);
        this.pieChart.setData(arrayList);
        HiLogcatUtil.i("usedSpace: " + i, "   u32LeftSpace: " + i2);
        double doubleValue = new BigDecimal(i).divide(new BigDecimal(i + i2), 4, 4).doubleValue();
        double d = 1.0d - doubleValue;
        HiLogcatUtil.d("d: " + doubleValue, "   c: " + d);
        String str = this.numberFormat.format(doubleValue * 100.0d) + "%";
        String str2 = this.numberFormat.format(d * 100.0d) + "%";
        this.tvUseSpacePer.setText(str);
        this.tvLastSpacePre.setText(str2);
    }

    @Override
    public void onResume() {
        super.onResume();
        MyCamera myCamera = this.mCamera;
        if (myCamera != null) {
            myCamera.registerIOSessionListener(this);
            this.mCamera.sendIOCtrl(HiChipNVRDefines.HI_NVR_P2P_PLATFORM_DISKINFO, HiChipNVRDefines.PLATFORM_S_DISKINFO.parseContent(0, 1, 1, 24));
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        MyCamera myCamera = this.mCamera;
        if (myCamera != null) {
            myCamera.unregisterIOSessionListener(this);
        }
    }

    @Override
    public void receiveIOCtrlData(HiCamera hiCamera, int i, byte[] bArr, int i2) {
        if (hiCamera != this.mCamera) {
            return;
        }
        Bundle bundle = new Bundle();
        bundle.putByteArray("data", bArr);
        Message obtainMessage = this.handler.obtainMessage();
        obtainMessage.what = HiDataValue.HANDLE_MESSAGE_RECEIVE_IOCTRL;
        obtainMessage.obj = hiCamera;
        obtainMessage.arg1 = i;
        obtainMessage.arg2 = i2;
        obtainMessage.setData(bundle);
        this.handler.sendMessage(obtainMessage);
    }

    @Override
    public void receiveSessionState(HiCamera hiCamera, int i) {
        Message obtainMessage = this.handler.obtainMessage();
        obtainMessage.what = HiDataValue.HANDLE_MESSAGE_SESSION_STATE;
        obtainMessage.arg1 = i;
        obtainMessage.obj = hiCamera;
        this.handler.sendMessage(obtainMessage);
    }

    private void showPwd() {
        this.isformatSDCard = false;
        final DialogUtilsCamHiPro dialogUtilsCamHiPro = new DialogUtilsCamHiPro(this);
        dialogUtilsCamHiPro.setVisibilityMessage(8);
        dialogUtilsCamHiPro.title(getString(R.string.nvraccount_input_pwd)).message("").showEditText(true).cancelText(getString(R.string.cancel)).sureText(getString(R.string.sure)).setSureOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view) {
                NVRSettingDiskInfoActivity.this.lambda$showPwd$1$NVRSettingDiskInfoActivity(dialogUtilsCamHiPro, view);
            }
        }).build().show();
    }

    public void lambda$showPwd$1$NVRSettingDiskInfoActivity(DialogUtilsCamHiPro dialogUtilsCamHiPro, View view) {
        String trim = SharePreUtils.getString(HiDataValue.CACHEACC, this, HiDataValue.gAccountPsw1).trim();
        String trim2 = DesUtils.EncryptAsDoNet(DesUtils.desKey, dialogUtilsCamHiPro.getResult()).trim();
        HiLogcatUtil.e(trim2 + "::::" + trim + "::");
        if (trim2.equalsIgnoreCase(trim) || trim2.equals(trim)) {
            if (this.sd_info != null) {
                this.handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        NVRSettingDiskInfoActivity.this.showjuHuaDialog(false);
                    }
                }, 10L);
                this.sd_info.u8mode = 1;
                this.isformatSDCard = true;
                byte[] bArr = new byte[32];
                System.arraycopy(Packet.intToByteArray_Little(1), 0, bArr, 0, 4);
                bArr[24] = 1;
                this.mCamera.sendIOCtrl(HiChipNVRDefines.HI_NVR_P2P_PLATFORM_DISKINFO, bArr);
                this.handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        NVRSettingDiskInfoActivity.this.finish();
                    }
                }, 10000L);
                return;
            }
            return;
        }
        MyToast.showToast(getApplicationContext(), getString(R.string.account_pass_error));
    }
}