Explorar o código

RA Image Android

去掉 自动清空列表,自动上传设置
增加 重试等待
增加 app crash写入文件日志
修改 文件日志逻辑,增加权限检查
修改 默认重试次数
修复 连接失败后不会重试上传的bug
Ray Zhang %!s(int64=8) %!d(string=hai) anos
pai
achega
398312c15c

+ 7 - 8
RA Image/app/app.iml

@@ -62,13 +62,6 @@
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -76,6 +69,13 @@
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
@@ -84,7 +84,6 @@
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />

+ 2 - 0
RA Image/app/src/main/java/com/usai/redant/raimage/FullScreenLoginActivity.java

@@ -356,6 +356,8 @@ public class FullScreenLoginActivity extends Activity {
     @Override
     protected void onCreate(Bundle savedInstanceState)
     {
+
+
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_full_screen_login);
 

+ 165 - 47
RA Image/app/src/main/java/com/usai/redant/raimage/MainActivity.java

@@ -25,7 +25,6 @@ import android.text.InputType;
 import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.util.Log;
-import android.view.Gravity;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
@@ -34,13 +33,11 @@ import android.widget.EditText;
 import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.TextView;
-import android.widget.Toast;
 
 import com.usai.redant.raimage.Model.ManufactureListActivity;
 import com.usai.redant.raimage.Model.ModelActivity;
 import com.usai.redant.raimage.POP.PopActivity;
 import com.usai.redant.raimage.PhotoList.PhotoGridActivity;
-import com.usai.redant.raimage.PhotoList.PhotoListActivity;
 import com.usai.util.AES;
 import com.usai.util.MD5;
 import com.usai.util.Network;
@@ -70,6 +67,7 @@ public class MainActivity extends AppCompatActivity
     private QueryManufacturer qmtask=null;
     private JSONArray manufacture_arr=null;
     private AlertDialog qmdialog =null;
+    private AlertDialog vfdialog =null;
     public void verifyandupload(Bundle params)
     {
         if (verifytask != null)
@@ -78,6 +76,17 @@ public class MainActivity extends AppCompatActivity
         }
 
 
+        String title = "Verifying PIID";
+
+        if (MainActivity.this.getClass().equals(ModelActivity.class)) {
+            title = "Verifying Model";
+        }
+
+        vfdialog=new AlertDialog.Builder(MainActivity.this)
+                .setTitle(title)
+                .setMessage("Please Wait")
+
+                .show();
 
         verifytask = new VerifyCodeTask();
         verifytask.execute(params);
@@ -146,11 +155,24 @@ public class MainActivity extends AppCompatActivity
                     {
                         if(manufacture_arr.length()==0)
                     {
-                        Toast toast = Toast.makeText(getApplicationContext(),
-                                "No manufacturer found, wrong model?",
-                                Toast.LENGTH_LONG);
-                        toast.setGravity(Gravity.CENTER, 0, 0);
-                        toast.show();
+//                        Toast toast = Toast.makeText(getApplicationContext(),
+//                                "No manufacturer found, wrong model?",
+//                                Toast.LENGTH_LONG);
+//                        toast.setGravity(Gravity.CENTER, 0, 0);
+//                        toast.show();
+
+
+                        new AlertDialog.Builder(MainActivity.this)
+                                .setTitle("Warning")
+                                .setMessage("No manufacturer found, wrong model?")
+                                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+
+                                    }
+                                })
+                                .show();
+
                     }
                         setManufacture("");
                     }
@@ -236,11 +258,23 @@ public class MainActivity extends AppCompatActivity
 //                        if (MainActivity.this.getClass().equals(ModelActivity.class)) {
 //                            msg = "Model does not exist.";
 //                        }
-                        Toast toast = Toast.makeText(getApplicationContext(),
-                                msg,
-                                Toast.LENGTH_LONG);
-                        toast.setGravity(Gravity.CENTER, 0, 0);
-                        toast.show();
+//                        Toast toast = Toast.makeText(getApplicationContext(),
+//                                msg,
+//                                Toast.LENGTH_LONG);
+//                        toast.setGravity(Gravity.CENTER, 0, 0);
+//                        toast.show();
+//                        break;
+
+                        new AlertDialog.Builder(MainActivity.this)
+                                .setTitle("Warning")
+                                .setMessage(msg)
+                                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+
+                                    }
+                                })
+                                .show();
                         break;
                     }
 //                    case 1:
@@ -255,12 +289,24 @@ public class MainActivity extends AppCompatActivity
 //                    }
                     default:
                     {
-                        // net error.
-                        Toast toast = Toast.makeText(getApplicationContext(),
-                                "Can not get manufacturer information.",
-                                Toast.LENGTH_LONG);
-                        toast.setGravity(Gravity.CENTER, 0, 0);
-                        toast.show();
+//                        // net error.
+//                        Toast toast = Toast.makeText(getApplicationContext(),
+//                                "Can not get manufacturer information.",
+//                                Toast.LENGTH_LONG);
+//                        toast.setGravity(Gravity.CENTER, 0, 0);
+//                        toast.show();
+//                        return;
+
+                        new AlertDialog.Builder(MainActivity.this)
+                                .setTitle("Warning")
+                                .setMessage("Can not get manufacturer information.")
+                                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+
+                                    }
+                                })
+                                .show();
                         return;
                     }
 
@@ -305,6 +351,8 @@ public class MainActivity extends AppCompatActivity
             verifytask = null;
 //            showProgress(false);
 
+            vfdialog.hide();
+
             if (success)
             {
                //验证成功
@@ -378,37 +426,79 @@ public class MainActivity extends AppCompatActivity
                         // model , piid not exist
 
 
-                        String msg = "Piid does not exist";
+                        String msg = "PIID does not exist";
 
                         if (MainActivity.this.getClass().equals(ModelActivity.class)) {
                             msg = "Model does not exist.";
                         }
-                        Toast toast = Toast.makeText(getApplicationContext(),
-                                msg,
-                                Toast.LENGTH_LONG);
-                        toast.setGravity(Gravity.CENTER, 0, 0);
-                        toast.show();
+//                        Toast toast = Toast.makeText(getApplicationContext(),
+//                                msg,
+//                                Toast.LENGTH_LONG);
+//                        toast.setGravity(Gravity.CENTER, 0, 0);
+//                        toast.show();
+//                        break;
+
+
+                        new AlertDialog.Builder(MainActivity.this)
+                                .setTitle("Warning")
+                                .setMessage(msg)
+                                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+
+                                    }
+                                })
+                                .show();
                         break;
+
+
+
                     }
                     case 1:
                     {
                         //model / manufacturer not match
-                        Toast toast = Toast.makeText(getApplicationContext(),
-                                "Model/Manufacturer does not match.",
-                                Toast.LENGTH_LONG);
-                        toast.setGravity(Gravity.CENTER, 0, 0);
-                        toast.show();
+//                        Toast toast = Toast.makeText(getApplicationContext(),
+//                                "Model/Manufacturer does not match.",
+//                                Toast.LENGTH_LONG);
+//                        toast.setGravity(Gravity.CENTER, 0, 0);
+//                        toast.show();
+//                        break;
+
+
+                        new AlertDialog.Builder(MainActivity.this)
+                                .setTitle("Warning")
+                                .setMessage("Model/Manufacturer does not match.")
+                                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+
+                                    }
+                                })
+                                .show();
                         break;
                     }
                     default:
                     {
                         // net error.
-                        Toast toast = Toast.makeText(getApplicationContext(),
-                                "can not verify input information.",
-                                Toast.LENGTH_LONG);
-                        toast.setGravity(Gravity.CENTER, 0, 0);
-                        toast.show();
+//                        Toast toast = Toast.makeText(getApplicationContext(),
+//                                "can not verify input information.",
+//                                Toast.LENGTH_LONG);
+//                        toast.setGravity(Gravity.CENTER, 0, 0);
+//                        toast.show();
+//                        return;
+
+                        new AlertDialog.Builder(MainActivity.this)
+                                .setTitle("Warning")
+                                .setMessage("can not verify input information.")
+                                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+
+                                    }
+                                })
+                                .show();
                         return;
+
                     }
 
                 }
@@ -762,7 +852,7 @@ public class MainActivity extends AppCompatActivity
 					boolean
 							wifi_only
 							=pref.getBoolean("wifi_only",
-							true);
+                            false);
 					if(wifi_only == true
 							&& iconntype !=
 							ConnectivityManager.TYPE_WIFI
@@ -774,12 +864,25 @@ public class MainActivity extends AppCompatActivity
 				}
 				if(!canstart)
 				{
-					Toast toast = Toast.makeText(getApplicationContext(),
-							"App is set to upload via WIFI only. Please change your setting or try upload manually later.",
-							Toast.LENGTH_LONG);
-					toast.setGravity(Gravity.CENTER, 0, 0);
-					toast.show();
-					return;
+
+
+                    new AlertDialog.Builder(MainActivity.this)
+                            .setTitle("Warning")
+                            .setMessage("App is set to upload via WIFI only. Please change your setting or try upload later.")
+                            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+                                @Override
+                                public void onClick(DialogInterface dialog, int which) {
+
+                                }
+                            })
+                            .show();
+                    return;
+//					Toast toast = Toast.makeText(getApplicationContext(),
+//							"App is set to upload via WIFI only. Please change your setting or try upload later.",
+//							Toast.LENGTH_LONG);
+//					toast.setGravity(Gravity.CENTER, 0, 0);
+//					toast.show();
+//					return;
 				}
 				try {
 
@@ -1495,12 +1598,27 @@ public class MainActivity extends AppCompatActivity
                     {
                         if(!RAUtil.isNumeric(pid))
                         {
-                            Toast toast = Toast.makeText(getApplicationContext(),
-                                    "Piid must be a number",
-                                    Toast.LENGTH_LONG);
-                            toast.setGravity(Gravity.CENTER, 0, 0);
-                            toast.show();
+
+                            new AlertDialog.Builder(MainActivity.this)
+                                    .setTitle("Warning")
+                                    .setMessage("PIID must be a number")
+                                    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+                                        @Override
+                                        public void onClick(DialogInterface dialog, int which) {
+
+                                        }
+                                    })
+                                    .show();
                             return;
+
+
+
+//                            Toast toast = Toast.makeText(getApplicationContext(),
+//                                    "Piid must be a number",
+//                                    Toast.LENGTH_LONG);
+//                            toast.setGravity(Gravity.CENTER, 0, 0);
+//                            toast.show();
+//                            return;
                         }
 
                     }

+ 1 - 1
RA Image/app/src/main/java/com/usai/redant/raimage/TaskActivity.java

@@ -364,7 +364,7 @@ public class TaskActivity extends AppCompatActivity {
                                 boolean
                                         wifi_only
                                         =pref.getBoolean("wifi_only",
-                                        true);
+                                        false);
                                 if(wifi_only == true
                                         && iconntype !=
                                         ConnectivityManager.TYPE_WIFI

+ 7 - 1
RA Image/app/src/main/java/com/usai/redant/raimage/UploadService.java

@@ -77,6 +77,12 @@ public class UploadService extends Service
 
 			@Override
 			public void handleCrashInfo(String deviceInfo, String exception) {
+				dbgUtil.fileLog("============================ app crash ============================");
+				dbgUtil.fileLog("DEVICE");
+				dbgUtil.fileLog(deviceInfo);
+				dbgUtil.fileLog("EXCEPTION");
+				dbgUtil.fileLog(exception);
+				dbgUtil.fileLog("=============================== end ===============================");
 				Log.d("_SERVICE", "Device Info: " + deviceInfo);
 				Log.d("_SERVICE", "Crash Info: " + exception);
 			}
@@ -654,7 +660,7 @@ public class UploadService extends Service
 															 boolean
 																	 wifi_only
 															 =pref.getBoolean("wifi_only",
-															 true);
+															 false);
 
 															 if
 															 (wifi_only

+ 38 - 27
RA Image/app/src/main/java/com/usai/redant/raimage/uploadSettingActivity.java

@@ -18,12 +18,13 @@ import com.usai.util.RAUploadManager;
 
 public class uploadSettingActivity extends AppCompatActivity {
 
-    private Switch auto_start_swt;
-    private Switch auto_rm_fs_swt;
-    private Switch auto_rm_er_swt;
+//    private Switch auto_start_swt;
+//    private Switch auto_rm_fs_swt;
+//    private Switch auto_rm_er_swt;
     private Switch compress_swt;
     private Switch sw_wifiOnly;
     private EditText retry_count_et;
+    private EditText retry_waiting_et;
 
     private ServiceConnection serviceConnection;
     private boolean serviceConnectionFlag = false; // 绑定服务标识
@@ -31,25 +32,27 @@ public class uploadSettingActivity extends AppCompatActivity {
     private UploadService uploadServiceservice;
 
     public void initSetting() {
-        boolean auto_upload = true;
-        boolean auto_rm_fs = true;
-        boolean auto_rm_er = false;
+//        boolean auto_upload = true;
+//        boolean auto_rm_fs = true;
+//        boolean auto_rm_er = false;
         boolean compress = true;
 
         boolean wifionly = true;
-        int retry_count = 2;
+        int retry_count = 5;
 
+        int retry_waiting = 300;
 //        SharedPreferences preferences = getSharedPreferences("uploadSetting", Context.MODE_PRIVATE);
         SharedPreferences preferences = RedAntApplication.getInstance().getSharedPreferences("UploadManager", 0);
         if (preferences != null) {
 
-            auto_upload = preferences.getBoolean("auto_upload",true);
-            auto_rm_fs = preferences.getBoolean("auto_rm_finish",true);
-            auto_rm_er = preferences.getBoolean("auto_rm_error",false);
+//            auto_upload = preferences.getBoolean("auto_upload",true);
+//            auto_rm_fs = preferences.getBoolean("auto_rm_finish",true);
+//            auto_rm_er = preferences.getBoolean("auto_rm_error",false);
 
-            wifionly = preferences.getBoolean("wifi_only",true);
+            wifionly = preferences.getBoolean("wifi_only",false);
             compress = preferences.getBoolean("compress",true);
-            retry_count = preferences.getInt("retry_count",2);
+            retry_count = preferences.getInt("retry_count",5);
+            retry_waiting = preferences.getInt("retry_waiting",300);
 
         } else  {
 
@@ -57,13 +60,17 @@ public class uploadSettingActivity extends AppCompatActivity {
 
 
         sw_wifiOnly.setChecked(wifionly);
-        auto_start_swt.setChecked(auto_upload);
-        auto_rm_fs_swt.setChecked(auto_rm_fs);
-        auto_rm_er_swt.setChecked(auto_rm_er);
+//        auto_start_swt.setChecked(auto_upload);
+//        auto_rm_fs_swt.setChecked(auto_rm_fs);
+//        auto_rm_er_swt.setChecked(auto_rm_er);
         compress_swt.setChecked(compress);
         retry_count_et.setText(String.valueOf(retry_count));
         // 移动光标到末尾
         retry_count_et.setSelection(retry_count_et.getText().length());
+
+        retry_waiting_et.setText(String.valueOf(retry_waiting));
+        // 移动光标到末尾
+        retry_waiting_et.setSelection(retry_waiting_et.getText().length());
     }
 
     /** Service */
@@ -79,29 +86,32 @@ public class uploadSettingActivity extends AppCompatActivity {
         SharedPreferences preferences = RedAntApplication.getInstance().getSharedPreferences("UploadManager", 0);
         SharedPreferences.Editor editor = preferences.edit();
 
-        final boolean auto_upload = auto_start_swt.isChecked();
-        final boolean auto_rm_fs = auto_rm_fs_swt.isChecked();
-        final boolean auto_rm_er = auto_rm_er_swt.isChecked();
+//        final boolean auto_upload = auto_start_swt.isChecked();
+//        final boolean auto_rm_fs = auto_rm_fs_swt.isChecked();
+//        final boolean auto_rm_er = auto_rm_er_swt.isChecked();
 
         final boolean wifi_only = sw_wifiOnly.isChecked();
         boolean compress = compress_swt.isChecked();
         final int retry_count = Integer.parseInt(retry_count_et.getText().toString());
+        final int retry_waiting = Integer.parseInt(retry_waiting_et.getText().toString());
 
-        editor.putBoolean("auto_upload",auto_upload);
-        editor.putBoolean("auto_rm_finish",auto_rm_fs);
-        editor.putBoolean("auto_rm_error",auto_rm_er);
+//        editor.putBoolean("auto_upload",auto_upload);
+//        editor.putBoolean("auto_rm_finish",auto_rm_fs);
+//        editor.putBoolean("auto_rm_error",auto_rm_er);
         editor.putBoolean("compress",compress);
         editor.putInt("retry_count",retry_count);
+        editor.putInt("retry_waiting",retry_waiting);
         editor.putBoolean("wifi_only",wifi_only);
 
         editor.commit();
 
         if (serviceConnectionFlag == true && uploadServiceservice != null) {
             RAUploadManager uploadManager = uploadServiceservice.uploadManager;
-            uploadManager.autoStart = auto_upload;
-            uploadManager.removeFinish = auto_rm_fs;
-            uploadManager.removeError = auto_rm_er;
+//            uploadManager.autoStart = auto_upload;
+//            uploadManager.removeFinish = auto_rm_fs;
+//            uploadManager.removeError = auto_rm_er;
             uploadManager.maxRetry = retry_count;
+            uploadManager.retryWaiting = retry_waiting;
             uploadManager.wifiOnly = wifi_only;
         }
 
@@ -133,11 +143,12 @@ public class uploadSettingActivity extends AppCompatActivity {
 
 
         sw_wifiOnly = (Switch)findViewById(R.id.sw_wifyonly);
-        auto_start_swt = (Switch)findViewById(R.id.auto_start_swt);
-        auto_rm_fs_swt = (Switch)findViewById(R.id.auto_rm_fs_swt);
-        auto_rm_er_swt = (Switch)findViewById(R.id.auto_rm_er_swt);
+//        auto_start_swt = (Switch)findViewById(R.id.auto_start_swt);
+//        auto_rm_fs_swt = (Switch)findViewById(R.id.auto_rm_fs_swt);
+//        auto_rm_er_swt = (Switch)findViewById(R.id.auto_rm_er_swt);
         compress_swt = (Switch)findViewById(R.id.compress_swt);
         retry_count_et = (EditText)findViewById(R.id.retry_et);
+        retry_waiting_et = (EditText)findViewById(R.id.waiting_et);
 
         initSetting();
 

+ 2 - 0
RA Image/app/src/main/java/com/usai/util/Network.java

@@ -235,6 +235,8 @@ public class Network
 			URL _url;
 			_url = new URL(url);
 			connection = (HttpURLConnection) _url.openConnection();
+			connection.setReadTimeout(SO_TIMEOUT);
+			connection.setConnectTimeout(SO_TIMEOUT);
 			// 设置请求方式
 			connection.setRequestMethod("POST");
 			// 设置编码格式

+ 40 - 18
RA Image/app/src/main/java/com/usai/util/RAUploadManager.java

@@ -31,14 +31,14 @@ import static com.usai.util.Network.URL_UPLOAD;
 public class RAUploadManager {
     public int maxThread=3;
     public int activeThread;
-    public int maxRetry=2;
+    public int maxRetry=5;
+    public int retryWaiting=300;
 
 
-
-    public Boolean wifiOnly=true;
-    public Boolean autoStart=true;
-    public Boolean removeFinish=true;
-    public Boolean removeError=false;
+    public Boolean wifiOnly=false;
+//    public Boolean autoStart=true;
+//    public Boolean removeFinish=true;
+//    public Boolean removeError=false;
     public QueueStatus queue_status;
 
 
@@ -109,15 +109,15 @@ public class RAUploadManager {
 
         if(UMSetting!=null)
         {
-            autoStart = UMSetting.getBoolean("auto_upload",true);
-            removeFinish = UMSetting.getBoolean("auto_rm_finish",true);
-            removeError = UMSetting.getBoolean("auto_rm_error",false);
-            maxRetry = UMSetting.getInt("retry_count",2);
+//            autoStart = UMSetting.getBoolean("auto_upload",false);
+//            removeFinish = UMSetting.getBoolean("auto_rm_finish",false);
+//            removeError = UMSetting.getBoolean("auto_rm_error",false);
+            maxRetry = UMSetting.getInt("retry_count",5);
             newtaskStatus = TaskStatus.values()[UMSetting.getInt("newtask_status",TaskStatus.TaskStatusWait.ordinal())];
 
             maxThread = UMSetting.getInt("max_thread",3);
 
-            wifiOnly = UMSetting.getBoolean("wifi_only",true);
+            wifiOnly = UMSetting.getBoolean("wifi_only",false);
 
         }
         operation_queue = new RAOperationQueue();
@@ -197,6 +197,24 @@ public class RAUploadManager {
                 taskinfo.putInt("status",TaskStatus.TaskStatusStart.ordinal());
                 String url=taskinfo.getString("url")+""+URL_UPLOAD;
 
+                int waiting=taskinfo.getInt("retry_waiting",0);
+
+                int newwaiting = waiting;
+                if(newwaiting/60.0<20)
+                    newwaiting+=retryWaiting;
+                if(newwaiting>1200)
+                    newwaiting = 1200;
+                taskinfo.putInt("retry_waiting",newwaiting);
+
+                //                try{
+                try {
+                    Thread.currentThread().sleep(waiting*1000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+//                }catch(InterruptedException ie){
+//                    ie.printStackTrace();
+//                }
                 JSONObject result=Network.UploadImage(path, taskinfo.getBundle("params"), url, new Network.FileUploadListener() {
                     @Override
                     public double percent_step() {
@@ -240,15 +258,17 @@ public class RAUploadManager {
                 int r = 0;
                 try {
                     r = result.getInt("result");
-                    String rmsg=result.getString("msg");
+
 
                     if(r==2|| r==RESULT_BARCODE_ERROR)
                     {
                         taskinfo.putInt("status",TaskStatus.TaskStatusFinish.ordinal());
                         if(r==2)
                             taskinfo.putString("msg","upload successful");
-                        else
-                            taskinfo.putString("msg","warning: "+rmsg );
+                        else {
+                            String rmsg=result.getString("msg");
+                            taskinfo.putString("msg", "warning: " + rmsg);
+                        }
                     }
                     else
                     {
@@ -256,6 +276,7 @@ public class RAUploadManager {
                         {
                             taskinfo.putInt("status",TaskStatus.TaskStatusError.ordinal());
                             taskinfo.putDouble("progress",0.0);
+                            String rmsg=result.getString("msg");
                             taskinfo.putString("msg",rmsg);
                         }
                         else
@@ -317,10 +338,10 @@ public class RAUploadManager {
 
                 TaskStatus status= TaskStatus.values()[taskinfo.getInt("status",0)];
                 boolean removefromlist=false;
-                if (status==TaskStatus.TaskStatusFinish&&removeFinish)
-                    removefromlist=true;
-                else if (status==TaskStatus.TaskStatusError&&removeError)
-                    removefromlist=true;
+//                if (status==TaskStatus.TaskStatusFinish&&removeFinish)
+//                    removefromlist=true;
+//                else if (status==TaskStatus.TaskStatusError&&removeError)
+//                    removefromlist=true;
 
                 synchronized (this)
                 {
@@ -525,6 +546,7 @@ public class RAUploadManager {
 
         if(canstart) {
 
+            task.putInt("retry_waiting",0);
             task.putInt("status", TaskStatus.TaskStatusWait.ordinal());
             operation_queue.addOperation(task);
         }

+ 23 - 0
RA Image/app/src/main/java/com/usai/util/RAUtil.java

@@ -1,6 +1,7 @@
 package com.usai.util;
 
 import android.app.Activity;
+import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Matrix;
@@ -11,6 +12,8 @@ import android.support.v4.app.ActivityCompat;
 import android.support.v4.content.PermissionChecker;
 import android.util.Log;
 
+import com.usai.redant.raimage.RedAntApplication;
+
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -66,6 +69,26 @@ public class RAUtil {
 //            return checkPermissions_23(activity,permissions);
         }
     }
+
+    public static Boolean checkPermissions_23(String[] permissions)
+    {
+        Log.d("_RAIMAGE", "checkPermissions23:==================================== ");
+        ArrayList<String> request_list = new ArrayList<String>();
+        Context context = RedAntApplication.getInstance().getApplicationContext();
+        for(String permission : permissions) {
+
+            boolean pc = PermissionChecker.checkSelfPermission(context,permission)==PermissionChecker.PERMISSION_GRANTED;
+            if(!pc)
+                return false;
+        }
+        Log.d("_RAIMAGE", "checkPermissions23:==================================== ");
+
+
+
+        return true;
+
+    }
+
     public static Boolean checkPermissions_23(Activity activity, String[] permissions)
     {
         Log.d("_RAIMAGE", "checkPermissions23:==================================== ");

+ 26 - 6
RA Image/app/src/main/java/com/usai/util/dbgUtil.java

@@ -1,5 +1,13 @@
 package com.usai.util;
 
+import android.Manifest;
+import android.content.Context;
+import android.database.Cursor;
+import android.os.Environment;
+import android.util.Log;
+
+import com.usai.redant.raimage.RedAntApplication;
+
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
@@ -9,15 +17,13 @@ import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 
-import com.usai.redant.raimage.RedAntApplication;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.os.Environment;
-import android.util.Log;
+//import java.util.Calendar;
 
 public class dbgUtil
 {
+
+
+
 	// static boolean ENABLE_DEBUG = true;
 	// static boolean ENABLE_SQL_DEBUG = true;
 	// final int DEBUG_LEVEL_NONE = 8;
@@ -37,6 +43,20 @@ public class dbgUtil
 	 */
 	public static void fileLog(String content)
 	{
+
+
+		String[] permissions = {
+				Manifest.permission.WRITE_EXTERNAL_STORAGE,
+				Manifest.permission.READ_EXTERNAL_STORAGE,
+		};
+
+
+
+
+		boolean result= RAUtil.checkPermissions_23(permissions);
+
+		if(!result)
+			return;
 		
 		File dir = new File(Environment.getExternalStorageDirectory().getPath()
 				+ "/redant/pop");

+ 79 - 108
RA Image/app/src/main/res/layout/activity_upload_setting.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
@@ -7,132 +7,103 @@
     android:visibility="visible"
     tools:context="com.usai.redant.raimage.uploadSettingActivity">
 
-    <TextView
-        android:id="@+id/auto_start_txt"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:layout_alignParentTop="true"
-        android:layout_marginLeft="10dp"
-        android:layout_marginStart="20dp"
-        android:layout_marginTop="45dp"
-        android:text="Auto Start Upload"
-        android:textSize="17sp" />
-
     <Switch
-        android:id="@+id/auto_start_swt"
-        android:layout_width="wrap_content"
+        android:id="@+id/compress_swt"
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_alignBaseline="@+id/auto_start_txt"
-        android:layout_alignParentEnd="true"
-        android:layout_alignParentRight="true"
         android:layout_marginEnd="10dp"
-        android:layout_marginRight="10dp" />
-
-    <TextView
-        android:id="@+id/auto_rm_fs_txt"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:layout_below="@id/auto_start_txt"
-        android:layout_marginLeft="10dp"
-        android:layout_marginStart="20dp"
-        android:layout_marginTop="20dp"
-        android:text="Auto Remove Finish"
-        android:textSize="17sp" />
-
-    <Switch
-        android:id="@+id/auto_rm_fs_swt"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignBaseline="@+id/auto_rm_fs_txt"
-        android:layout_alignBottom="@+id/auto_rm_fs_txt"
-        android:layout_alignLeft="@+id/auto_start_swt"
-        android:layout_alignStart="@+id/auto_start_swt" />
+        android:layout_marginLeft="16dp"
+        android:layout_marginRight="16dp"
+        android:layout_marginTop="32dp"
+        android:text="Compress Image"
+        android:textSize="18sp"
+        app:layout_constraintHorizontal_bias="0.0"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:layout_constraintRight_creator="1"
+        tools:layout_constraintTop_creator="1" />
 
     <TextView
-        android:id="@+id/auto_rm_er_txt"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:layout_below="@id/auto_rm_fs_txt"
-        android:layout_marginLeft="10dp"
-        android:layout_marginStart="20dp"
-        android:layout_marginTop="20dp"
-        android:text="Auto Remove Error"
-        android:textSize="17sp" />
-
-    <Switch
-        android:id="@+id/auto_rm_er_swt"
+        android:id="@+id/retry_text"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_alignBaseline="@+id/auto_rm_er_txt"
-        android:layout_alignBottom="@+id/auto_rm_er_txt"
-        android:layout_alignLeft="@+id/auto_rm_fs_swt"
-        android:layout_alignStart="@+id/auto_rm_fs_swt" />
+        android:layout_marginLeft="0dp"
+        android:layout_marginTop="24dp"
+        android:text="Max Retry Count"
+        android:textColor="@android:color/black"
+        android:textSize="18sp"
+        app:layout_constraintLeft_toLeftOf="@+id/compress_swt"
+        app:layout_constraintTop_toBottomOf="@+id/compress_swt"
+        tools:layout_constraintBottom_creator="1"
+        tools:layout_constraintLeft_creator="1"
+        tools:layout_constraintTop_creator="1" />
 
     <TextView
-        android:id="@+id/compress_txt"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:layout_below="@id/auto_rm_er_txt"
-        android:layout_marginLeft="10dp"
-        android:layout_marginStart="20dp"
-        android:layout_marginTop="20dp"
-        android:text="Compress Image"
-        android:textSize="17sp" />
-
-    <Switch
-        android:id="@+id/compress_swt"
+        android:id="@+id/retry_waiting"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_alignBaseline="@+id/compress_txt"
-        android:layout_alignParentEnd="true"
-        android:layout_alignParentRight="true"
-        android:layout_marginEnd="10dp"
-        android:layout_marginRight="10dp" />
+        android:layout_marginLeft="0dp"
+        android:layout_marginStart="10dp"
+        android:layout_marginTop="24dp"
+        android:text="Retry waiting"
+        android:textColor="@android:color/black"
+        android:textSize="18sp"
+        app:layout_constraintLeft_toLeftOf="@+id/compress_swt"
+        app:layout_constraintTop_toBottomOf="@+id/retry_text"
+        tools:layout_constraintLeft_creator="1"
+        tools:layout_constraintTop_creator="1" />
 
-    <TextView
-        android:id="@+id/retry_text"
-        android:layout_width="wrap_content"
+    <EditText
+        android:id="@+id/retry_et"
+        android:layout_width="50dp"
         android:layout_height="wrap_content"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:layout_below="@id/compress_txt"
-        android:layout_marginLeft="10dp"
-        android:layout_marginStart="20dp"
-        android:layout_marginTop="20dp"
-        android:text="Max Retry Count"
-        android:textSize="17sp" />
+        android:layout_marginRight="-1dp"
+        android:inputType="number"
+        app:layout_constraintRight_toRightOf="@+id/compress_swt"
+        tools:layout_constraintLeft_creator="1"
+        tools:layout_constraintRight_creator="1"
+        tools:layout_constraintTop_creator="1"
+        android:layout_marginTop="0dp"
+        android:layout_marginBottom="0dp"
+        app:layout_constraintTop_toTopOf="@+id/retry_text"
+        app:layout_constraintBottom_toBottomOf="@+id/retry_text" />
 
     <EditText
-        android:id="@+id/retry_et"
-        android:layout_width="wrap_content"
+        android:id="@+id/waiting_et"
+        android:layout_width="50dp"
         android:layout_height="wrap_content"
-        android:layout_alignBaseline="@+id/retry_text"
-        android:layout_alignBottom="@+id/retry_text"
-        android:layout_alignEnd="@+id/compress_swt"
-        android:layout_alignLeft="@+id/compress_swt"
-        android:layout_alignRight="@+id/compress_swt"
-        android:layout_alignStart="@+id/compress_swt"
-        android:inputType="number" />
+        android:layout_marginBottom="0dp"
+        android:layout_marginEnd="30dp"
+        android:layout_marginRight="0dp"
+        android:layout_marginTop="0dp"
+        android:inputType="number"
+        app:layout_constraintBottom_toBottomOf="@+id/retry_waiting"
+        app:layout_constraintRight_toRightOf="@+id/compress_swt"
+        app:layout_constraintTop_toTopOf="@+id/retry_waiting"
+        tools:layout_constraintRight_creator="1"
+        tools:layout_constraintTop_creator="1"
+        app:layout_constraintVertical_bias="0.517" />
 
     <Switch
         android:id="@+id/sw_wifyonly"
-        android:layout_width="match_parent"
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_alignEnd="@+id/retry_et"
-        android:layout_alignLeft="@+id/retry_text"
-        android:layout_alignRight="@+id/retry_et"
-        android:layout_alignStart="@+id/retry_text"
-        android:layout_below="@+id/retry_et"
-        android:layout_marginTop="23dp"
-        android:text="Only upload via WIFI" />
+        android:layout_marginEnd="8dp"
+        android:layout_marginLeft="0dp"
+        android:layout_marginRight="0dp"
+        android:layout_marginStart="8dp"
+        android:layout_marginTop="24dp"
+        android:text="Only upload via WIFI"
+        android:textSize="18sp"
+        app:layout_constraintHorizontal_bias="0.0"
+        app:layout_constraintLeft_toLeftOf="@+id/compress_swt"
+        app:layout_constraintRight_toRightOf="@+id/compress_swt"
+        app:layout_constraintTop_toBottomOf="@+id/retry_waiting"
+        tools:layout_constraintBottom_creator="1"
+        tools:layout_constraintLeft_creator="1"
+        tools:layout_constraintRight_creator="1"
+        tools:layout_constraintTop_creator="1" />
 
 
-</RelativeLayout>
+</android.support.constraint.ConstraintLayout>