diff --git a/C5/app/src/main/AndroidManifest.xml b/C5/app/src/main/AndroidManifest.xml index 9d9c109..68ccff5 100644 --- a/C5/app/src/main/AndroidManifest.xml +++ b/C5/app/src/main/AndroidManifest.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" package="com.sunvote.xpadapp" android:versionCode="70" - android:versionName="1.4.0.3"> + android:versionName="1.4.0.5"> diff --git a/C5/app/src/main/java/com/sunvote/xpadapp/MainActivity.java b/C5/app/src/main/java/com/sunvote/xpadapp/MainActivity.java index 75c0e42..62e769c 100644 --- a/C5/app/src/main/java/com/sunvote/xpadapp/MainActivity.java +++ b/C5/app/src/main/java/com/sunvote/xpadapp/MainActivity.java @@ -1892,7 +1892,6 @@ public class MainActivity extends BaseActivity implements ComListener { if(isInVoteState()){ return; } - if(currBillInfo!=null) { if (currBillInfo.billmodel == 1) { //民事选举 if ((data[0] & 0xff) == 0xF2 && data[1] == 20) { diff --git a/C5/app/src/main/java/com/sunvote/xpadapp/fragments/AdminFragment.java b/C5/app/src/main/java/com/sunvote/xpadapp/fragments/AdminFragment.java index 03e9a56..47a177b 100644 --- a/C5/app/src/main/java/com/sunvote/xpadapp/fragments/AdminFragment.java +++ b/C5/app/src/main/java/com/sunvote/xpadapp/fragments/AdminFragment.java @@ -29,6 +29,7 @@ public class AdminFragment extends BaseFragment { private ImageButton btnBack; private Button btnConfig; private Button btnPowerOff; + private Button firmUpdate; private Button btnComTest; private Button match; @@ -40,9 +41,14 @@ public class AdminFragment extends BaseFragment { btnBack = view.findViewById(R.id.admin_btnback); btnConfig = view.findViewById(R.id.admin_config_mode); btnPowerOff = view.findViewById(R.id.admin_btnShutdown); + firmUpdate = view.findViewById(R.id.firm_update); match = view.findViewById(R.id.match); - tvModalInfo.setText(getString(R.string.app_version) + getVersionName()); + String msg = getString(R.string.app_version) + getVersionName() ; + if(mMainActivity.mModelInfo != null){ + msg += " 固件版本:" + mMainActivity.mModelInfo.sVer; + } + tvModalInfo.setText(msg); btnBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -127,6 +133,17 @@ public class AdminFragment extends BaseFragment { } }); + firmUpdate.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + FragmentManager fm = getFragmentManager(); + FragmentTransaction tx = fm.beginTransaction(); + tx.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out); + tx.replace(R.id.frame_content, new FirmUpdateFragment()); + tx.commit(); + } + }); + return view; } diff --git a/C5/app/src/main/java/com/sunvote/xpadapp/fragments/FirmUpdateFragment.java b/C5/app/src/main/java/com/sunvote/xpadapp/fragments/FirmUpdateFragment.java index 6284c25..1f50be0 100644 --- a/C5/app/src/main/java/com/sunvote/xpadapp/fragments/FirmUpdateFragment.java +++ b/C5/app/src/main/java/com/sunvote/xpadapp/fragments/FirmUpdateFragment.java @@ -66,20 +66,21 @@ public class FirmUpdateFragment extends BaseFragment { getActivity().registerReceiver(mBroadcastReceiver, filter); success = false; - firmUpdate(); + btnRetry = (Button)view.findViewById(R.id.firm_update_btn_retry); - btnRetry.setVisibility(View.INVISIBLE); btnRetry.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { LogUtil.i(TAG, "onClick: retry"); - appendLog("重试"); - firmUpdate(); btnRetry.setVisibility(View.INVISIBLE); + appendLog("重试"); + firmUpdate(checkFirmFile2()); + } }); + firmUpdate(checkFirmFile()); return view; } @@ -107,15 +108,45 @@ public class FirmUpdateFragment extends BaseFragment { return files[0]; } - private void firmUpdate() { + public static File checkFirmFile2() { + String filePath = Environment.getExternalStorageDirectory().getPath() + "/sunvote/system2/"; + File file = new File(filePath); + if (!file.exists()) { + LogUtil.i(TAG, "checkFirmFile: dir not exists"); + return null; + } + File[] files = file.listFiles(); + + if (files == null || files.length == 0) { + LogUtil.i(TAG, "checkFirmFile:bin not exists"); + return null; + } + return files[0]; + } + + private void firmUpdate(File file) { - File file = checkFirmFile(); if(file==null){ + appendLog("升级文件不存在"); + appendLog("升级文件路径:" + Environment.getExternalStorageDirectory().getPath() + "/sunvote/system2/"); Toast.makeText(mMainActivity, "升级文件不存在", Toast.LENGTH_LONG).show(); + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + btnRetry.setVisibility(View.VISIBLE); + } + }); + return; } - if(!file.getName().endsWith(".bin")){ + if(file != null && !file.getName().endsWith(".bin")){ tvInfo.setText("升级文件格式错误"); Toast.makeText(mMainActivity, "升级文件格式错误", Toast.LENGTH_LONG).show(); + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + btnRetry.setVisibility(View.VISIBLE); + } + }); return; } @@ -143,6 +174,7 @@ public class FirmUpdateFragment extends BaseFragment { LogUtil.i(TAG, "handleMessage: 固件更新成功"); tvInfo.setText("固件更新成功"); appendLog("固件更新成功"); + btnRetry.setVisibility(View.VISIBLE); Toast.makeText(mMainActivity, "固件更新成功", Toast.LENGTH_LONG).show(); } else { diff --git a/C5/app/src/main/java/com/sunvote/xpadcomm/XPadApi.java b/C5/app/src/main/java/com/sunvote/xpadcomm/XPadApi.java index bb5b399..336a612 100644 --- a/C5/app/src/main/java/com/sunvote/xpadcomm/XPadApi.java +++ b/C5/app/src/main/java/com/sunvote/xpadcomm/XPadApi.java @@ -100,15 +100,23 @@ public class XPadApi implements XPadApiInterface { e.printStackTrace(); } mBuffer = new byte[0x1F + 4]; - Arrays.fill(mBuffer, (byte) 0x0); - mBuffer[0] = (byte) 0xF5; - mBuffer[1] = (byte) 0xAA; - mBuffer[2] = (byte) 0xAA; - mBuffer[3] = (byte) 0x1F; - - mBuffer[4] = 0x70; - mBuffer[5] = 0x04; - writeToCom(mBuffer); + Arrays.fill(mBuffer, (byte) 0x0); + mBuffer[0] = (byte) 0xF5; + mBuffer[1] = (byte) 0xAA; + mBuffer[2] = (byte) 0xAA; + mBuffer[3] = (byte) 0x1F; + + mBuffer[4] = 0x70; + mBuffer[5] = 0x04; + writeToCom(mBuffer); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + getWorkMode(); + }else{ onLineInfo.onLine = 2 ; m_listener.onOnLineEvent(onLineInfo); @@ -1799,7 +1807,7 @@ public class XPadApi implements XPadApiInterface { byte packL = dt[8];// 数据片编号 LogUtil.d(TAG, "下载。。。msgId:" + msgid + " packH:" + packH + " apckL:" + packL); - if (downType == 40) {// 文件下载 + if (downType == 40) { // 文件下载 if (lastPackH != packH) { //新的packH LogUtil.i(TAG, "new packH......."); okBits = 0; diff --git a/C5/app/src/main/java/com/sunvote/xpadcomm/XPadApiInterface.java b/C5/app/src/main/java/com/sunvote/xpadcomm/XPadApiInterface.java index 2b164e3..2872528 100644 --- a/C5/app/src/main/java/com/sunvote/xpadcomm/XPadApiInterface.java +++ b/C5/app/src/main/java/com/sunvote/xpadcomm/XPadApiInterface.java @@ -193,7 +193,9 @@ public interface XPadApiInterface { lineInfo.rx = rx; lineInfo.baseId = baseId; lineInfo.keyId = keyId; - lineInfo.keySn = new String(keySn); + if(keySn != null){ + lineInfo.keySn = new String(keySn); + } lineInfo.comError = comError; return lineInfo; diff --git a/C5/app/src/main/res/layout/fragment_admin.xml b/C5/app/src/main/res/layout/fragment_admin.xml index 921c3a8..afd42eb 100644 --- a/C5/app/src/main/res/layout/fragment_admin.xml +++ b/C5/app/src/main/res/layout/fragment_admin.xml @@ -8,62 +8,87 @@ + android:orientation="vertical"> -