Просмотр исходного кода

RA Image Android

去掉一些旧逻辑,修复部分bug。列表刷新仍然有问题。
Ray Zhang 8 лет назад
Родитель
Сommit
579197ef5b

+ 8 - 9
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/builds" />
@@ -89,7 +89,6 @@
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
       <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/reload-dex" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
@@ -101,7 +100,7 @@
       <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
       <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
     </content>
-    <orderEntry type="inheritedJdk" />
+    <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="library" exported="" name="core-2.3.0" level="project" />
     <orderEntry type="library" exported="" name="constraint-layout-solver-1.0.2" level="project" />

+ 0 - 19
RA Image/app/src/main/AndroidManifest.xml

@@ -70,20 +70,6 @@
             </intent-filter>
             -->
         </activity>
-        <activity
-            android:name=".LoginActivity"
-            android:label="@string/app_name"
-            android:screenOrientation="portrait"
-            android:windowSoftInputMode="stateHidden|adjustResize">
-
-            <!--
-                <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-            -->
-        </activity>
         <activity
             android:name=".UploadQueueActivity"
             android:label="Upload queue"
@@ -98,11 +84,6 @@
             android:label="Photo preview"
             android:screenOrientation="sensorLandscape"
             android:windowSoftInputMode="stateHidden|adjustResize" />
-        <activity
-            android:name=".LockerActivity"
-            android:label="@string/title_activity_locker"
-            android:screenOrientation="portrait"
-            android:windowSoftInputMode="adjustResize|stateVisible" />
 
         <receiver android:name=".BootReceiver">
             <intent-filter android:priority="2147483647">

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

@@ -472,7 +472,7 @@ public class FullScreenLoginActivity extends Activity {
                     public boolean onEditorAction(TextView textView, int id,
                                                   KeyEvent keyEvent)
                     {
-                        if (id == R.id.login
+                        if (id == R.id.bt_login
                                 || id == EditorInfo.IME_ACTION_DONE)
                         {
                             InputMethodManager inputMethodManager = (InputMethodManager) getApplicationContext()

+ 13 - 8
RA Image/app/src/main/java/com/usai/redant/raimage/MainActivity.java

@@ -169,16 +169,19 @@ public class MainActivity extends AppCompatActivity
             @Override
             public void onClick(View v) {
                 final EditText edit = new EditText(MainActivity.this);
-                String msg = "Please enter PIID code";
-                if (MainActivity.this.getClass().equals(ModelActivity.class)) { // model
-                    msg = "Please enter Model code";
-
-                }
-                else if (MainActivity.this.getClass().equals(PopActivity.class))
+                String msg = "Please enter Model code";
+//                if (MainActivity.this.getClass().equals(ModelActivity.class)) { // model
+//
+//
+//                }
+//                else
+                    if (MainActivity.this.getClass().equals(PopActivity.class))
                 {
                     edit.setInputType(InputType.TYPE_CLASS_NUMBER);
+                    msg = "Please enter PIID code";
                 }
 
+                edit.setSingleLine(true);
 
 				new AlertDialog.Builder(MainActivity.this)
 						.setIconAttribute(android.R.attr.alertDialogIcon)
@@ -324,7 +327,7 @@ public class MainActivity extends AppCompatActivity
 						params.putString("barcode",pidval.getText().toString());
 						params.putString("_operate","upload");
 						params.putString("platform","android");
-						params.putString("md5","md5");
+						params.putString("md5",md5);
 
 
 						if (MainActivity.this.getClass().equals(ModelActivity.class)) {
@@ -835,6 +838,8 @@ public class MainActivity extends AppCompatActivity
 	public void onActivityResult(int requestCode, int resultCode, Intent data)
 	{
 
+        super.onActivityResult(requestCode, resultCode, data);
+
 		if (requestCode == REQUEST_TAKE_PHOTO)
 			// ������������յ�ͼƬ
 			if (resultCode == Activity.RESULT_OK) // ��������
@@ -939,7 +944,7 @@ public class MainActivity extends AppCompatActivity
 				setManufacture(manufacture);
 			}
 		}
-		super.onActivityResult(requestCode, resultCode, data);
+
 	}
 
 	public void saveMyBitmap(String bitName, Bitmap mBitmap)

+ 275 - 198
RA Image/app/src/main/java/com/usai/redant/raimage/UploadList/UploadListActivity.java

@@ -5,8 +5,6 @@ import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.ServiceConnection;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.support.annotation.NonNull;
@@ -16,31 +14,31 @@ import android.support.v7.app.AlertDialog;
 import android.support.v7.app.AppCompatActivity;
 import android.util.Log;
 import android.util.TypedValue;
-import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
 import android.widget.BaseAdapter;
+import android.widget.ImageButton;
 import android.widget.ListView;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
 import com.usai.redant.raimage.R;
-import com.usai.redant.raimage.UploadList.swipemenulistview.SwipeMenu;
-import com.usai.redant.raimage.UploadList.swipemenulistview.SwipeMenuCreator;
-import com.usai.redant.raimage.UploadList.swipemenulistview.SwipeMenuItem;
-import com.usai.redant.raimage.UploadList.swipemenulistview.SwipeMenuListView;
 import com.usai.redant.raimage.UploadService;
 import com.usai.util.RAUploadManager;
 
 import java.util.ArrayList;
-import java.util.List;
+
+//import com.usai.redant.raimage.UploadList.swipemenulistview.SwipeMenu;
+//import com.usai.redant.raimage.UploadList.swipemenulistview.SwipeMenuCreator;
+//import com.usai.redant.raimage.UploadList.swipemenulistview.SwipeMenuItem;
+//import com.usai.redant.raimage.UploadList.swipemenulistview.SwipeMenuListView;
 
 public class UploadListActivity extends AppCompatActivity {
 
-    private SwipeMenuListView uploadList;
+//    private SwipeMenuListView uploadList;
+    private ListView uploadList;
     private uploadAdapter adapter;
     private ArrayList<Bundle> arr;
 
@@ -50,39 +48,64 @@ public class UploadListActivity extends AppCompatActivity {
     private boolean serviceConnectionFlag = false; // 绑定服务标识
     private ServiceConnection serviceConnection;
     private RAUploadManager.UIUpdateListener uiUpdateListener = new RAUploadManager.UIUpdateListener() {
+//        @Override
+//        public void onProgress(long index, double percentage) {
+//
+//
+//            if(true)
+//            return;
+//
+//            final int position = (int)index;
+//            final double progress = percentage;
+//            runOnUiThread(new Runnable() {
+//                @Override
+//                public void run() {
+//                    Log.d("_LIST", "UploadImage onProgress: " + progress);
+//                    long timeStart = System.currentTimeMillis();
+////            Object item = uploadList.getItemAtPosition((int) index);
+//                    int startShowIndex = uploadList.getFirstVisiblePosition();
+//                    int lastShowIndex = uploadList.getLastVisiblePosition();
+//
+//                    if (position >= startShowIndex && position <= lastShowIndex) {
+//                        View cell = uploadList.getChildAt((int)position - startShowIndex);
+//                        uploadAdapter.ViewHolder holder= (uploadAdapter.ViewHolder)cell.getTag();
+//                        holder.progressBar.setProgress((int) (100 * progress));
+//                        holder.progress_tv.setText(String.format("%.1f%%",progress * 100));
+//                    }
+//
+//                    Log.d("_LIST", "UploadImage onProgress: end" + (System.currentTimeMillis() - timeStart));
+//                }
+//            });
+//
+//        }
+
         @Override
-        public void onProgress(long index, double percentage) {
+        public void updateCell(long index, final Bundle taskinfo)
+        {
 
-            final int position = (int)index;
-            final double progress = percentage;
-            runOnUiThread(new Runnable() {
-                @Override
-                public void run() {
-                    Log.d("Upload Progress", " " + progress);
-//            Object item = uploadList.getItemAtPosition((int) index);
-                    int startShowIndex = uploadList.getFirstVisiblePosition();
-                    int lastShowIndex = uploadList.getLastVisiblePosition();
+            if(true) {
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
 
-                    if (position >= startShowIndex && position <= lastShowIndex) {
-                        View cell = uploadList.getChildAt((int)position - startShowIndex);
-                        uploadAdapter.ViewHolder holder= (uploadAdapter.ViewHolder)cell.getTag();
-                        holder.progressBar.setProgress((int) (100 * progress));
-                        holder.progress_tv.setText(String.format("%.1f%%",progress * 100));
+                        adapter.notifyDataSetChanged();
                     }
-                }
-            });
+                });
 
-        }
+                return;
+            }
 
-        @Override
-        public void updateCell(long index, final Bundle taskinfo)
-        {
             final int position = (int)index;
-            final double progress = arr.get(position).getDouble("progress");
+//            final double progress = arr.get(position).getDouble("progress");
             runOnUiThread(new Runnable() {
                 @Override
                 public void run() {
-                    Log.d("Upload Progress", " " + progress);
+
+                    double percent = taskinfo.getDouble("progress",0);
+
+//                    Log.d("_synchronized", "UploadImage onProgress: " + percent);
+                    long timeStart = System.currentTimeMillis();
+
 //            Object item = uploadList.getItemAtPosition((int) index);
                     int startShowIndex = uploadList.getFirstVisiblePosition();
                     int lastShowIndex = uploadList.getLastVisiblePosition();
@@ -105,7 +128,7 @@ public class UploadListActivity extends AppCompatActivity {
                                 status="stop";
                                 break;
                             case TaskStatusError:
-                                status="warring";
+                                status="warning";
                                 break;
                             case TaskStatusWait:
                                 status="waiting";
@@ -115,26 +138,56 @@ public class UploadListActivity extends AppCompatActivity {
                                 break;
 
                             default:
-                                status="warring";
+                                status="warning";
                                 break;
                         }
-                        double percent = taskinfo.getDouble("progress",0);
+
+
+                        Log.d("_LIST", "uploadlist UI update POSITION"+position +"    PROGRESS"+ percent*100);
+
                         String err = taskinfo.getString("msg");
                         String name = taskinfo.getString("file","");
                         holder.name_tv.setText(name);
-                        holder.progressBar.setProgress(100 *(int)percent);
+                        holder.progressBar.setProgress((int)(100 *percent));
                         holder.state_tv.setText(status);
-                        holder.progress_tv.setText(100*percent+"%");
+
+                        holder.progress_tv.setText(String.format("%.2f%%",100*percent));
                         holder.err_tv.setText(err);
                     }
+
+                    Log.d("_LIST", "uploadlist UI: COST" + (System.currentTimeMillis() - timeStart));
                 }
             });
         }
+
         @Override
-        public void updateList()
-        {
-            adapter.notifyDataSetChanged();
+        public void listAdd(ArrayList<Bundle> tasks) {
+
+        }
+
+        @Override
+        public void listRemove(final ArrayList<Bundle> tasks) {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+//                    uploadManager.arr_queue.removeAll(tasks);
+                    uploadManager.saveTasks();
+                    adapter.notifyDataSetChanged();
+                }
+            });
         }
+//        @Override
+//        public void updateList()
+//        {
+//
+//            runOnUiThread(new Runnable() {
+//                @Override
+//                public void run() {
+//                    adapter.notifyDataSetChanged();
+//                }
+//            });
+//
+//        }
     };
 
     @Override
@@ -149,7 +202,8 @@ public class UploadListActivity extends AppCompatActivity {
 
 
         // 初始化视图
-        uploadList = (SwipeMenuListView)findViewById(R.id.upload_list);
+//        uploadList = (SwipeMenuListView)findViewById(R.id.upload_list);
+        uploadList = (ListView)findViewById(R.id.upload_list);
 
         serviceConnection = new ServiceConnection() {
             @Override
@@ -181,120 +235,120 @@ public class UploadListActivity extends AppCompatActivity {
 
         bindService();
 
-        SwipeMenuCreator creator = new SwipeMenuCreator() {
-
-            @Override
-            public void create(SwipeMenu menu) {
-                // Create different menus depending on the view type
-                switch (menu.getViewType()) {
-                    case 0: {
-                        createRemoveMenuItem(menu);
-                    }
-                    break;
-                    case 1: {
-                        createStartMenuItem(menu);
-                        createRemoveMenuItem(menu);
-                    }
-                    break;
-                    case 2: {
-                        createStartMenuItem(menu);
-                    }
-                    break;
-                    case 3: {
-
-                    }
-                    break;
-                }
-            }
-        };
-
-        uploadList.setMenuCreator(creator);
-
-        uploadList.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
-            @Override
-            public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
-                // action
-                Bundle item = arr.get(position);
-                int type = taskSwipeType(position);
-                switch (type) {
-                    case 0: {
-                        if (index == 0) {
-                            // remove
-                            if (serviceConnectionFlag == true && uploadServiceservice != null) {
-                                uploadManager.removeTask(item);
-                            }
-
-                        }
-                    }
-                    break;
-                    case 1: {
-                        if (index == 0) {
-                            // start
-                            if (serviceConnectionFlag == true && uploadServiceservice != null) {
-                                uploadManager.startTask(item);
-                            }
-
-                        } else if (index == 1) {
-                            // remove
-                            if (serviceConnectionFlag == true && uploadServiceservice != null) {
-                                uploadManager.removeTask(item);
-                            }
-
-                        }
-                    }
-                    break;
-                    case 2: {
-                        if (index == 0) {
-                            // start
-                            if (serviceConnectionFlag == true && uploadServiceservice != null) {
-                                uploadManager.startTask(item);
-                            }
-
-                        }
-                    }
-                    break;
-                    case 3: {
-
-                    }
-                    break;
-                }
-
-                return false;
-            }
-        });
-    }
-
-    private void createRemoveMenuItem(SwipeMenu menu) {
-        SwipeMenuItem openItem = new SwipeMenuItem(getApplicationContext());
-        // set item background
-        openItem.setBackground(new ColorDrawable(Color.rgb(0x9b, 0xbf,0x5a)));
-        // set item width
-        openItem.setWidth(dp2px(90));
-        // set item title
-        openItem.setTitle("Remove");
-        // set item title fontsize
-        openItem.setTitleSize(18);
-        // set item title font color
-        openItem.setTitleColor(Color.WHITE);
-        // add to menu
-        menu.addMenuItem(openItem);
+//        SwipeMenuCreator creator = new SwipeMenuCreator() {
+//
+//            @Override
+//            public void create(SwipeMenu menu) {
+//                // Create different menus depending on the view type
+//                switch (menu.getViewType()) {
+//                    case 0: {
+//                        createRemoveMenuItem(menu);
+//                    }
+//                    break;
+//                    case 1: {
+//                        createStartMenuItem(menu);
+//                        createRemoveMenuItem(menu);
+//                    }
+//                    break;
+//                    case 2: {
+//                        createStartMenuItem(menu);
+//                    }
+//                    break;
+//                    case 3: {
+//
+//                    }
+//                    break;
+//                }
+//            }
+//        };
+//
+//        uploadList.setMenuCreator(creator);
+//
+//        uploadList.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
+//            @Override
+//            public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
+//                // action
+//                Bundle item = arr.get(position);
+//                int type = taskSwipeType(position);
+//                switch (type) {
+//                    case 0: {
+//                        if (index == 0) {
+//                            // remove
+//                            if (serviceConnectionFlag == true && uploadServiceservice != null) {
+//                                uploadManager.removeTask(item);
+//                            }
+//
+//                        }
+//                    }
+//                    break;
+//                    case 1: {
+//                        if (index == 0) {
+//                            // start
+//                            if (serviceConnectionFlag == true && uploadServiceservice != null) {
+//                                uploadManager.startTask(item);
+//                            }
+//
+//                        } else if (index == 1) {
+//                            // remove
+//                            if (serviceConnectionFlag == true && uploadServiceservice != null) {
+//                                uploadManager.removeTask(item);
+//                            }
+//
+//                        }
+//                    }
+//                    break;
+//                    case 2: {
+//                        if (index == 0) {
+//                            // start
+//                            if (serviceConnectionFlag == true && uploadServiceservice != null) {
+//                                uploadManager.startTask(item);
+//                            }
+//
+//                        }
+//                    }
+//                    break;
+//                    case 3: {
+//
+//                    }
+//                    break;
+//                }
+//
+//                return false;
+//            }
+//        });
     }
 
-    private void createStartMenuItem(SwipeMenu menu) {
-        SwipeMenuItem openItem = new SwipeMenuItem(getApplicationContext());
-        // set item background
-        openItem.setBackground(new ColorDrawable(Color.rgb(0xff, 0x99,0x33)));
-        // set item width
-        openItem.setWidth(dp2px(90));
-        // set item title
-        openItem.setTitle("Restart");
-        // set item title fontsize
-        openItem.setTitleSize(18);
-        // set item title font color
-        openItem.setTitleColor(Color.WHITE);
-        // add to menu
-        menu.addMenuItem(openItem);
-    }
+//    private void createRemoveMenuItem(SwipeMenu menu) {
+//        SwipeMenuItem openItem = new SwipeMenuItem(getApplicationContext());
+//        // set item background
+//        openItem.setBackground(new ColorDrawable(Color.rgb(0x9b, 0xbf,0x5a)));
+//        // set item width
+//        openItem.setWidth(dp2px(90));
+//        // set item title
+//        openItem.setTitle("Remove");
+//        // set item title fontsize
+//        openItem.setTitleSize(18);
+//        // set item title font color
+//        openItem.setTitleColor(Color.WHITE);
+//        // add to menu
+//        menu.addMenuItem(openItem);
+//    }
+//
+//    private void createStartMenuItem(SwipeMenu menu) {
+//        SwipeMenuItem openItem = new SwipeMenuItem(getApplicationContext());
+//        // set item background
+//        openItem.setBackground(new ColorDrawable(Color.rgb(0xff, 0x99,0x33)));
+//        // set item width
+//        openItem.setWidth(dp2px(90));
+//        // set item title
+//        openItem.setTitle("Restart");
+//        // set item title fontsize
+//        openItem.setTitleSize(18);
+//        // set item title font color
+//        openItem.setTitleColor(Color.WHITE);
+//        // add to menu
+//        menu.addMenuItem(openItem);
+//    }
 
     @Override
     protected void onDestroy() {
@@ -344,6 +398,7 @@ public class UploadListActivity extends AppCompatActivity {
                         // clear
                         if (serviceConnectionFlag == true && uploadServiceservice != null) {
                             uploadManager.clearTask();
+//                            adapter.notifyDataSetChanged();
                         }
 
                     }
@@ -359,32 +414,32 @@ public class UploadListActivity extends AppCompatActivity {
     }
 
 
-    private int taskSwipeType(int position) {
-        Bundle item = arr.get(position);
-//        Bundle taskinfo = item.getBundle("params");
-        RAUploadManager.TaskStatus istatus = RAUploadManager.TaskStatus.values()[item.getInt("status",0)];
-        int type = 3;
-        switch(istatus)
-        {
-            case TaskStatusWait:
-            case TaskStatusStart:
-                type = 3;
-                break;
-            case TaskStatusStop:
-                type = 2;
-                break;
-            case TaskStatusError:
-                type = 1;
-                break;
-            case TaskStatusFinish:
-                type = 0;
-                break;
-            default:
-                type = 3;
-                break;
-        }
-        return type;
-    }
+//    private int taskSwipeType(int position) {
+//        Bundle item = arr.get(position);
+////        Bundle taskinfo = item.getBundle("params");
+//        RAUploadManager.TaskStatus istatus = RAUploadManager.TaskStatus.values()[item.getInt("status",0)];
+//        int type = 3;
+//        switch(istatus)
+//        {
+//            case TaskStatusWait:
+//            case TaskStatusStart:
+//                type = 3;
+//                break;
+//            case TaskStatusStop:
+//                type = 2;
+//                break;
+//            case TaskStatusError:
+//                type = 1;
+//                break;
+//            case TaskStatusFinish:
+//                type = 0;
+//                break;
+//            default:
+//                type = 3;
+//                break;
+//        }
+//        return type;
+//    }
 
     private class uploadAdapter extends BaseAdapter {
         private int resourceId;
@@ -408,27 +463,27 @@ public class UploadListActivity extends AppCompatActivity {
             return position;
         }
 
-        @Override
-        public int getViewTypeCount() {
-            return 4;
-        }
-
-        @Override
-        public int getItemViewType(int position) {
-            /**
-             * 0. <finish>      remove              </finish>
-             * 1. <error>       start  remove       </error>
-             * 2. <stop>        start               </stop>
-             * 3. <start\wait>  none                </start\wait>
-             * */
-            return taskSwipeType(position);
-        }
+//        @Override
+//        public int getViewTypeCount() {
+//            return 4;
+//        }
+
+//        @Override
+//        public int getItemViewType(int position) {
+//            /**
+//             * 0. <finish>      remove              </finish>
+//             * 1. <error>       start  remove       </error>
+//             * 2. <stop>        start               </stop>
+//             * 3. <start\wait>  none                </start\wait>
+//             * */
+//            return taskSwipeType(position);
+//        }
 
         @NonNull
         @Override
         public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
 
-            Bundle item = arr.get(position);
+            final Bundle item = arr.get(position);
 //            Bundle taskinfo = item.getBundle("params");
 //            String barcode = taskinfo.getString("barcode");
 
@@ -477,14 +532,35 @@ public class UploadListActivity extends AppCompatActivity {
                 holder.state_tv = (TextView)cell.findViewById(R.id.upload_state_tv);
                 holder.progress_tv = (TextView)cell.findViewById(R.id.upload_progress_tv);
                 holder.err_tv = (TextView)cell.findViewById(R.id.upload_err_tv);
+                holder.btn_reload=(ImageButton) cell.findViewById(R.id.btn_reload);
 
+
+                holder.btn_reload.setImageResource(R.drawable.ic_action_reload);
+                if(istatus!= RAUploadManager.TaskStatus.TaskStatusError)
+                {
+                    holder.btn_reload.setVisibility(View.GONE);
+                }
+                else
+                {
+                    holder.btn_reload.setVisibility(View.VISIBLE);
+                    holder.btn_reload.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View v) {
+
+                            uploadManager.startTask(item);
+
+                        }
+                    });
+                }
                 cell.setTag(holder);
             }
 
             holder.name_tv.setText(name);
-            holder.progressBar.setProgress(100 *(int)percent);
+//            holder.progressBar.setProgress(100 *(int)percent);
+            holder.progressBar.setProgress((int) (100 * percent));
             holder.state_tv.setText(status);
-            holder.progress_tv.setText(100*percent+"%");
+//            holder.progress_tv.setText(100*percent+"%");
+            holder.progress_tv.setText(String.format("%.2f%%",100*percent));
             holder.err_tv.setText(err);
 
             return cell;
@@ -496,6 +572,7 @@ public class UploadListActivity extends AppCompatActivity {
             public TextView state_tv;
             public TextView progress_tv;
             public TextView err_tv;
+            public ImageButton btn_reload;
         }
     }
 

+ 45 - 49
RA Image/app/src/main/java/com/usai/redant/raimage/UploadQueueActivity.java

@@ -1,15 +1,5 @@
 package com.usai.redant.raimage;
 
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Timer;
-import java.util.TimerTask;
-
-import com.usai.util.Network;
-import com.usai.util.dbUtil;
-import com.usai.util.dbgUtil;
-
 import android.app.AlertDialog;
 import android.app.ListActivity;
 import android.content.BroadcastReceiver;
@@ -21,13 +11,19 @@ import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.graphics.Color;
 import android.os.Bundle;
-import android.os.Environment;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.SimpleCursorAdapter;
 import android.widget.TextView;
 
+import com.usai.util.Network;
+import com.usai.util.dbgUtil;
+
+import java.io.File;
+import java.util.Timer;
+import java.util.TimerTask;
+
 public class UploadQueueActivity extends ListActivity
 {
 	private SQLiteDatabase m_db = null;
@@ -123,7 +119,7 @@ public class UploadQueueActivity extends ListActivity
 	protected void onDestroy()
 	{
 		unregisterReceiver(UploadQueueReceiver);
-		dbUtil.CloseDB(m_db);
+//		dbUtil.CloseDB(m_db);
 		super.onDestroy();
 	}
 	@Override
@@ -162,42 +158,42 @@ public class UploadQueueActivity extends ListActivity
 											int whichButton)
 									{
 										
-										SQLiteDatabase dbr = dbUtil.OpenDB(UploadQueueActivity.this, null, false);
-										Cursor cursor = dbr.query("pics", new String[] { "_id", 
-												"local_path" }, "try_count>=3", null, null, null, "_id", null);
-										while (cursor.moveToNext())
-										{
-											int _id = cursor.getInt(0);
-											String path = cursor.getString(1);
-											
-											
-											RedAntApplication.writeLock.lock();
-
-											// write sql process
-											SQLiteDatabase dbw = dbUtil.OpenDB(UploadQueueActivity.this,
-													null, true);
-											dbw.execSQL("delete from pics where _id= "+_id);
-
-											String timeStamp = new SimpleDateFormat("yyyy_MM_dd")
-													.format(new Date());
-
-											File storageDir = new File(Environment
-													.getExternalStorageDirectory().getPath()
-													+ "/redant/pop/done/" + timeStamp);
-
-											if (!storageDir.exists())
-												storageDir.mkdirs();
-
-											File pic = new File(path);
-											
-											pic.delete();
-											dbUtil.CloseDB(dbw);
-											RedAntApplication.writeLock.unlock();
-											
-										}
-										
-										dbUtil.CloseCursor(cursor);
-										dbUtil.CloseDB(dbr);
+//										SQLiteDatabase dbr = dbUtil.OpenDB(UploadQueueActivity.this, null, false);
+//										Cursor cursor = dbr.query("pics", new String[] { "_id",
+//												"local_path" }, "try_count>=3", null, null, null, "_id", null);
+//										while (cursor.moveToNext())
+//										{
+//											int _id = cursor.getInt(0);
+//											String path = cursor.getString(1);
+//
+//
+//											RedAntApplication.writeLock.lock();
+//
+//											// write sql process
+//											SQLiteDatabase dbw = dbUtil.OpenDB(UploadQueueActivity.this,
+//													null, true);
+//											dbw.execSQL("delete from pics where _id= "+_id);
+//
+//											String timeStamp = new SimpleDateFormat("yyyy_MM_dd")
+//													.format(new Date());
+//
+//											File storageDir = new File(Environment
+//													.getExternalStorageDirectory().getPath()
+//													+ "/redant/pop/done/" + timeStamp);
+//
+//											if (!storageDir.exists())
+//												storageDir.mkdirs();
+//
+//											File pic = new File(path);
+//
+//											pic.delete();
+//											dbUtil.CloseDB(dbw);
+//											RedAntApplication.writeLock.unlock();
+//
+//										}
+//
+//										dbUtil.CloseCursor(cursor);
+//										dbUtil.CloseDB(dbr);
 
 										sendBroadcast(new Intent("REDANT.POP.UPDATE_QUEUE_VIEW"));
 										sendBroadcast(new Intent("REDANT.POP.CLEAR_UPLOAD_QUEUE"));
@@ -233,7 +229,7 @@ public class UploadQueueActivity extends ListActivity
 //		password = ApexTrackingApplication.get_pass();
 //		function_name = getIntent().getStringExtra("function_name");
 		setContentView(R.layout.activity_search);
-		m_db = dbUtil.OpenDB(this, null, true);
+//		m_db = dbUtil.OpenDB(this, null, true);
 		// m_TextView = (TextView) findViewById(R.id.summarytext);
 		// m_TextView.setText(getString(m_Activityinfo.TextViewValue));
 		// m_ListView = (ListView) findViewById(android.R.id.list);

+ 20 - 1
RA Image/app/src/main/java/com/usai/util/Network.java

@@ -1071,6 +1071,13 @@ public class Network
 
 
 		File file = new File(path);
+		if(!file.exists())
+		{
+			String result="{\"result\":0,\"msg\":\"file does not exist\"}";
+			listener.onFinish(200,result);
+
+			return result;
+		}
 		String TAG = "net_dbg@UploadFile";
 		   String CHARSET = "utf-8"; //设置编码
 		   String PREFIX = "--";
@@ -1142,6 +1149,7 @@ public class Network
 				long curbytes = 0;
 				Log.i("cky","total="+totalbytes);
 				int len = 0;
+				double oldprogress=0.0;
 				while((len=is.read(bytes))!=-1){
 					if(listener.interupt())
 					{
@@ -1155,7 +1163,13 @@ public class Network
 					}
 					curbytes += len;
 					dos.write(bytes, 0, len);
-					listener.onProgress(curbytes,1.0d*curbytes/totalbytes);
+					double newprogress =1.0d*curbytes/totalbytes;
+					if(newprogress-oldprogress>=listener.percent_step()/100.0||newprogress>=100.0)
+					{
+						listener.onProgress(curbytes,newprogress);
+						oldprogress = newprogress;
+					}
+
 				}
 				is.close();
 				dos.write(LINE_END.getBytes());//一定还有换行
@@ -1205,6 +1219,11 @@ public class Network
 	}
 
 	public interface FileUploadListener {
+
+//		void FileUploadListener(double percent_step);
+
+		double percent_step();
+
 		boolean interupt();
 		void onProgress(long pro, double percentage);
 

+ 95 - 25
RA Image/app/src/main/java/com/usai/util/RAUploadManager.java

@@ -17,7 +17,6 @@ import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.ArrayList;
-import java.util.List;
 
 import static com.usai.util.Network.URL_UPLOAD;
 
@@ -65,9 +64,11 @@ public class RAUploadManager {
     public UIUpdateListener uiUpdateListener;
 
     public interface UIUpdateListener {
-        void onProgress(long index, double percentage);
+//        void onProgress(long index, double percentage);
         void updateCell(long index, Bundle taskinfo);
-        void updateList();
+        void listAdd(ArrayList<Bundle> tasks);
+        void listRemove(ArrayList<Bundle> tasks);
+//        void updateList();
 
 //        void onFinish(int code, String res/*, HashMap<String, List<String>> headers*/);
     }
@@ -112,9 +113,16 @@ public class RAUploadManager {
 
                 boolean ret=false;
                 String path=taskinfo.getString("path");
+                taskinfo.putInt("status",TaskStatus.TaskStatusStart.ordinal());
                 String url=taskinfo.getString("url")+""+URL_UPLOAD;
 
                 JSONObject result=Network.UploadImage(path, taskinfo.getBundle("params"), url, new Network.FileUploadListener() {
+                    @Override
+                    public double percent_step() {
+                        //进度刷新步进 3%
+                        return 3.0;
+                    }
+
                     @Override
                     public boolean interupt() {
 //                        if(taskinfo.getBoolean("iscancel",false))
@@ -127,7 +135,8 @@ public class RAUploadManager {
 
 
                         synchronized(this){
-                            Log.d("", "onProgress: " + percentage);
+                            Log.d("_synchronized", "UploadImage onProgress: " + percentage);
+                            long timeStart = System.currentTimeMillis();
                             taskinfo.putDouble("progress",percentage);
                             if (uiUpdateListener!=null) {
                                 int index = arr_queue.indexOf(taskinfo);
@@ -135,6 +144,7 @@ public class RAUploadManager {
 
                                 uiUpdateListener.updateCell(index,taskinfo);
                             }
+                            Log.d("_synchronized", "UploadImage onProgress: end" + (System.currentTimeMillis() - timeStart));
                         }
 
 
@@ -193,11 +203,16 @@ public class RAUploadManager {
                 finally {
                     synchronized (this)
                     {
+                        Log.d("_synchronized", "UploadImage finally " );
+
+                        long timeStart = System.currentTimeMillis();
                         if (uiUpdateListener!=null) {
                             int index = arr_queue.indexOf(taskinfo);
 
                             uiUpdateListener.updateCell(index,taskinfo);
                         }
+                        Log.d("_synchronized", "UploadImage finally finish" + (System.currentTimeMillis() - timeStart));
+
                     }
                 }
 
@@ -226,21 +241,27 @@ public class RAUploadManager {
                 else if (status==TaskStatus.TaskStatusError&&removeError)
                     removefromlist=true;
 
-                synchronized (this)
+//                synchronized (this)
                 {
 
+                    Log.d("_synchronized", "OperationCallback operateFinish: " );
+                    long timeStart = System.currentTimeMillis();
                     if(removefromlist)
                     {
-                            arr_queue.remove(taskinfo);
-                        if(uiUpdateListener!=null)
-                            uiUpdateListener.updateList();
+
+                        removeTask(taskinfo);
+//                            arr_queue.remove(taskinfo);
+//                        if(uiUpdateListener!=null)
+//                            uiUpdateListener.updateList();
 
 
                     }
 
+                    Log.d("_synchronized", "OperationCallback operateFinish: end" + (System.currentTimeMillis() - timeStart));
 
 
-                        saveTasks();
+
+//                        saveTasks();
 
 
                 }
@@ -330,11 +351,14 @@ public class RAUploadManager {
 
     public void addTask(Bundle task)
     {
-        arr_queue.add(task);
+
         synchronized (this)
         {
-
+            Log.d("_synchronized", "addTask: ");
+            long timeStart = System.currentTimeMillis();
+            arr_queue.add(task);
             saveTasks();
+            Log.d("_synchronized", "addTask: end" + (System.currentTimeMillis() - timeStart));
         }
         if(newtaskStatus== TaskStatus.TaskStatusWait)
         {
@@ -343,11 +367,16 @@ public class RAUploadManager {
     };
     public void addTasks(ArrayList<Bundle> tasks)
     {
-        arr_queue.addAll(tasks);
+
         synchronized (this)
         {
-
+            Log.d("_synchronized", "addTasks: ");
+            long timeStart = System.currentTimeMillis();
+            arr_queue.addAll(tasks);
             saveTasks();
+
+            Log.d("_synchronized", "addTasks: end" + (System.currentTimeMillis() - timeStart));
+
         }
         if(newtaskStatus== TaskStatus.TaskStatusWait)
         {
@@ -362,11 +391,13 @@ public class RAUploadManager {
     public void startTask(Bundle task)
     {
 
+        task.putInt("status",TaskStatus.TaskStatusWait.ordinal());
         operation_queue.addOperation(task);
 
 
 
     };
+
     public void clearTask()
     {
         ArrayList<Bundle> remove = new ArrayList<Bundle>();
@@ -381,16 +412,14 @@ public class RAUploadManager {
 
 
 
+
     }
     public void removeTask(Bundle task)
     {
 
-        arr_queue.remove(task);
-        synchronized (this)
-        {
-            saveTasks();
-        }
-
+        long timeStart = System.currentTimeMillis();
+//            arr_queue.remove(task);
+//            saveTasks();
         String path = filePath(task);
         File file = new File(path);
         if(file.exists())
@@ -398,14 +427,35 @@ public class RAUploadManager {
             file.delete();
         }
 
+
+
+
+            if(uiUpdateListener!=null) {
+                ArrayList<Bundle> remove = new ArrayList<Bundle>();
+                remove.add(task);
+                uiUpdateListener.listRemove(remove);
+            }
+            else
+            {
+                synchronized (this)
+                {
+                Log.d("_synchronized", "removeTask");
+                    arr_queue.remove(task);
+
+                    saveTasks();
+                Log.d("_synchronized", "removeTask: end" + (System.currentTimeMillis() - timeStart));
+                }
+            }
+
+
+
+
     };
-    public void removeTasks(List<Bundle> tasks)
+    public void removeTasks(ArrayList<Bundle> tasks)
     {
-        arr_queue.removeAll(tasks);
-        synchronized (this)
-        {
-            saveTasks();
-        }
+
+
+        long timeStart = System.currentTimeMillis();
         for(Bundle task:tasks)
         {
 
@@ -416,6 +466,26 @@ public class RAUploadManager {
                 file.delete();
             }
         }
+
+
+
+            if(uiUpdateListener!=null) {
+                uiUpdateListener.listRemove(tasks);
+            }
+            else
+            {
+                synchronized (this)
+            {
+                Log.d("_synchronized", "removeTasks: " );
+                            arr_queue.removeAll(tasks);
+            saveTasks();
+                Log.d("_synchronized", "removeTasks: end" + (System.currentTimeMillis() - timeStart));
+            }
+            }
+
+
+
+
     };
     public void stopAllTasks()
     {

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

@@ -238,7 +238,7 @@ public class RAUtil {
         int degree = RAUtil.readPictureDegree(sourceFile.getAbsolutePath());
 
         BitmapFactory.Options opts=new BitmapFactory.Options();//获取缩略图显示到屏幕上
-        opts.inSampleSize=2;
+        opts.inSampleSize=1;
         Bitmap cbitmap=BitmapFactory.decodeFile(sourceFile.getAbsolutePath(),opts);
 
         /**
@@ -254,7 +254,7 @@ public class RAUtil {
         try {
 
             FileOutputStream outputStream = new FileOutputStream(routedFile);
-            newbitmap.compress(Bitmap.CompressFormat.JPEG, 95, outputStream);
+            newbitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
 
             outputStream.flush();
             outputStream.close();

BIN
RA Image/app/src/main/res/drawable-hdpi/ic_action_reload.png


BIN
RA Image/app/src/main/res/drawable-mdpi/ic_action_reload.png


BIN
RA Image/app/src/main/res/drawable-xhdpi/ic_action_reload.png


BIN
RA Image/app/src/main/res/drawable-xxhdpi/ic_action_reload.png


+ 2 - 1
RA Image/app/src/main/res/layout-land/activity_model.xml

@@ -90,6 +90,7 @@
         android:gravity="center_vertical"
         android:inputType="none"
         android:textSize="17sp"
+        android:editable="false"
         app:layout_constraintBottom_toBottomOf="@+id/barcode_tv"
         app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintLeft_toRightOf="@+id/barcode_tv"
@@ -110,7 +111,7 @@
         android:background="@drawable/black_border"
         android:gravity="left"
         android:inputType="textMultiLine"
-        android:text="Note:"
+        android:hint="Note:"
         android:textColor="#000000"
         android:textSize="15sp"
         app:layout_constraintBottom_toTopOf="@+id/scan_btn"

+ 1 - 0
RA Image/app/src/main/res/layout-land/activity_pop.xml

@@ -69,6 +69,7 @@
         android:layout_marginTop="0dp"
         android:background="@null"
         android:gravity="center_vertical"
+        android:editable="false"
         android:inputType="none"
         android:textSize="17sp"
         app:layout_constraintBottom_toBottomOf="@+id/barcode_tv"

+ 2 - 1
RA Image/app/src/main/res/layout/activity_model.xml

@@ -91,6 +91,7 @@
         android:background="@null"
         android:gravity="center_vertical"
         android:inputType="none"
+        android:editable="false"
         android:textSize="17sp"
         app:layout_constraintBottom_toBottomOf="@+id/barcode_tv"
         app:layout_constraintHorizontal_bias="0.0"
@@ -110,7 +111,7 @@
         android:background="@drawable/black_border"
         android:gravity="left"
         android:inputType="textMultiLine"
-        android:text="Note:"
+        android:hint="Note:"
         android:textColor="#000000"
         android:textSize="15sp"
         app:layout_constraintBottom_toTopOf="@+id/camera_btn"

+ 3 - 2
RA Image/app/src/main/res/layout/activity_pop.xml

@@ -65,15 +65,16 @@
         android:layout_marginLeft="8dp"
         android:layout_marginRight="8dp"
         android:layout_marginTop="0dp"
-        android:editable="false"
         android:background="@null"
+        android:editable="false"
         android:gravity="center_vertical"
-        android:inputType="none"
         android:textSize="17sp"
         app:layout_constraintBottom_toBottomOf="@+id/barcode_tv"
+        app:layout_constraintHorizontal_bias="0.636"
         app:layout_constraintLeft_toRightOf="@+id/barcode_tv"
         app:layout_constraintRight_toLeftOf="@+id/btn_type"
         app:layout_constraintTop_toTopOf="@+id/barcode_tv"
+        app:layout_constraintVertical_bias="0.0"
         tools:layout_constraintBottom_creator="1"
         tools:layout_constraintLeft_creator="1" />
 

+ 91 - 52
RA Image/app/src/main/res/layout/upload_list_cell.xml

@@ -1,61 +1,100 @@
 <?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:id="@+id/upload_percent_tv"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <TextView
-        android:id="@+id/upload_name_tv"
-        android:layout_width="match_parent"
+    <android.support.constraint.ConstraintLayout
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_marginEnd="10dp"
-        android:layout_marginLeft="10dp"
-        android:layout_marginRight="10dp"
-        android:layout_marginStart="10dp"
-        android:layout_marginTop="5dp"
-        android:hint="QS885555464784613654" />
-
-    <ProgressBar
-        android:id="@+id/upload_progressBar"
-        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
-        android:layout_width="match_parent"
-        android:layout_height="5dp"
-        android:layout_alignLeft="@id/upload_name_tv"
-        android:layout_alignRight="@id/upload_name_tv"
-        android:layout_below="@id/upload_name_tv"
-        android:layout_marginTop="5dp"
-        android:max="100"
-        android:progress="0" />
-
-    <TextView
-        android:id="@+id/upload_state_tv"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignLeft="@id/upload_progressBar"
-        android:layout_below="@id/upload_progressBar"
-        android:layout_marginEnd="10dp"
-        android:layout_marginRight="10dp"
-        android:layout_marginTop="5dp"
-        android:text="Waiting" />
-
-    <TextView
-        android:id="@+id/upload_progress_tv"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignRight="@id/upload_progressBar"
-        android:layout_alignTop="@id/upload_state_tv"
-        android:layout_below="@id/upload_progressBar"
-        android:text="" />
+        android:layout_marginBottom="8dp"
+        android:layout_marginLeft="8dp"
+        android:layout_marginRight="0dp"
+        android:layout_marginTop="0dp"
+        app:layout_constraintBottom_toBottomOf="@+id/btn_reload"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toLeftOf="@+id/btn_reload"
+        app:layout_constraintTop_toTopOf="@+id/btn_reload">
+
+        <TextView
+            android:id="@+id/upload_name_tv"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="8dp"
+            android:layout_marginLeft="8dp"
+            android:layout_marginRight="8dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginTop="8dp"
+            android:hint="QS885555464784613654"
+            app:layout_constraintHorizontal_bias="0.165"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            tools:layout_constraintLeft_creator="1"
+            tools:layout_constraintRight_creator="1" />
 
-    <TextView
-        android:id="@+id/upload_err_tv"
+        <TextView
+            android:id="@+id/upload_err_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Error:"
+            app:layout_constraintLeft_toLeftOf="@+id/upload_progressBar"
+            app:layout_constraintTop_toBottomOf="@+id/upload_state_tv"
+            tools:layout_constraintLeft_creator="1"
+            tools:layout_constraintTop_creator="1" />
+
+        <ProgressBar
+            android:id="@+id/upload_progressBar"
+            style="@style/Widget.AppCompat.ProgressBar.Horizontal"
+            android:layout_width="0dp"
+            android:layout_height="16dp"
+            android:layout_marginLeft="8dp"
+            android:layout_marginRight="8dp"
+            android:layout_marginTop="0dp"
+            android:max="100"
+            android:progress="0"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/upload_name_tv" />
+
+        <TextView
+            android:id="@+id/upload_progress_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="8dp"
+            android:layout_marginTop="8dp"
+            android:text="progress"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/upload_progressBar"
+            tools:layout_constraintRight_creator="1" />
+
+        <TextView
+            android:id="@+id/upload_state_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dp"
+            android:layout_marginTop="8dp"
+            android:text="finished"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/upload_progressBar" />
+    </android.support.constraint.ConstraintLayout>
+
+    <ImageButton
+        android:id="@+id/btn_reload"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_alignLeft="@id/upload_state_tv"
-        android:layout_below="@id/upload_state_tv"
-        android:layout_marginEnd="10dp"
-        android:layout_marginRight="10dp"
-        android:layout_marginTop="5dp"
-        android:text="Error:" />
-
-</RelativeLayout>
+        android:layout_marginTop="8dp"
+        android:tint="@color/blue"
+        app:layout_constraintTop_toTopOf="parent"
+        app:srcCompat="@drawable/ic_action_reload"
+        tools:layout_constraintRight_creator="1"
+        tools:layout_constraintTop_creator="1"
+        android:layout_marginRight="7dp"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_marginBottom="8dp"
+        android:layout_marginEnd="7dp" />
+
+</android.support.constraint.ConstraintLayout>