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">
-
-
-
+ android:orientation="horizontal">
+
+
-
-
-
@@ -71,12 +96,12 @@
android:id="@+id/admin_modal_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
android:layout_above="@id/middle_line"
+ android:layout_centerHorizontal="true"
android:layout_marginBottom="48dp"
android:text="@string/admin_setting"
- android:textSize="@dimen/big_text_p2"
android:textColor="@color/white"
+ android:textSize="@dimen/big_text_p2"
android:textStyle="bold" />
-
diff --git a/C5/app/src/main/res/layout/fragment_firm_update.xml b/C5/app/src/main/res/layout/fragment_firm_update.xml
index 10a7896..c2c5953 100644
--- a/C5/app/src/main/res/layout/fragment_firm_update.xml
+++ b/C5/app/src/main/res/layout/fragment_firm_update.xml
@@ -9,8 +9,9 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
- android:layout_marginTop="30dp"
- android:textSize="48sp" />
+ android:layout_marginTop="10dp"
+ android:textSize="48sp"
+ />