upload UI

chengzhenyu 8 years ago
parent
commit
9bf6663737

+ 8 - 7
app/src/main/java/ai/pai/lensman/db/DBService.java

@@ -226,14 +226,15 @@ public class DBService {
226 226
                         + DBHelper.PHOTO_INFO_COLUMNS.CAPTURE_TIME + " desc limit 1 ", null);
227 227
                 if (c.moveToNext()) {
228 228
                     photoBean = cursor2PhotoBean(c);
229
-                }else {
230
-                    c = db.rawQuery("select * from " + DBHelper.PHOTO_INFO_TABLE +  " where "
231
-                            + DBHelper.PHOTO_INFO_COLUMNS.UPLOADED_STATUS + " = '" + -1 + "'"+"  order by "
232
-                            + DBHelper.PHOTO_INFO_COLUMNS.CAPTURE_TIME + " desc limit 1 ", null);
233
-                    if (c.moveToNext()) {
234
-                        photoBean = cursor2PhotoBean(c);
235
-                    }
236 229
                 }
230
+//                else {
231
+//                    c = db.rawQuery("select * from " + DBHelper.PHOTO_INFO_TABLE +  " where "
232
+//                            + DBHelper.PHOTO_INFO_COLUMNS.UPLOADED_STATUS + " = '" + -1 + "'"+"  order by "
233
+//                            + DBHelper.PHOTO_INFO_COLUMNS.CAPTURE_TIME + " desc limit 1 ", null);
234
+//                    if (c.moveToNext()) {
235
+//                        photoBean = cursor2PhotoBean(c);
236
+//                    }
237
+//                }
237 238
                 db.setTransactionSuccessful();
238 239
             } catch (Exception e) {
239 240
                 LogHelper.d(TAG, "dbservice getNextUploadPhotoBean error happen " + e);

+ 26 - 24
app/src/main/java/ai/pai/lensman/service/UploadTask.java

@@ -25,33 +25,35 @@ public class UploadTask extends AsyncTask<Void, Integer, Boolean> {
25 25
 
26 26
     @Override
27 27
     protected Boolean doInBackground(Void... params) {
28
-        try {
29
-            String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator + bean.sessionId
30
-                    + File.separator + ai.pai.lensman.utils.Constants.THUMBNAIL_DIR_NAME;
31
-            File dir = new File(dirPath);
32
-            dir.mkdirs();
33
-            File photo = new File(dir, bean.photoName);
34
-            LogHelper.d(TAG, "上传照片 " + bean);
35
-            if (photo.exists() && photo.isFile()) {
36
-                PhotoUploadUtils photoUploadUtils = new PhotoUploadUtils(UrlContainer.PHOTO_UPLOAD_URL + "?timestamp=" + System.currentTimeMillis());
37
-                photoUploadUtils.addFileParameter("photo", photo);
38
-                photoUploadUtils.addTextParameter("user_id", bean.lensmanId);
39
-                photoUploadUtils.addTextParameter("session_id", bean.sessionId);
40
-                photoUploadUtils.addTextParameter("photo_id", String.valueOf(bean.photoId));
41
-                photoUploadUtils.addTextParameter("nickname",Preferences.getInstance().getUserName());
28
+        for(int k = 0 ; k< 5;k++){
29
+            try {
30
+                String dirPath = ai.pai.lensman.utils.Constants.APP_IMAGE_DIR + File.separator + bean.sessionId
31
+                        + File.separator + ai.pai.lensman.utils.Constants.THUMBNAIL_DIR_NAME;
32
+                File dir = new File(dirPath);
33
+                dir.mkdirs();
34
+                File photo = new File(dir, bean.photoName);
35
+                LogHelper.d(TAG, "上传照片 第"+k+"次尝试"+ bean);
36
+                if (photo.exists() && photo.isFile()) {
37
+                    PhotoUploadUtils photoUploadUtils = new PhotoUploadUtils(UrlContainer.PHOTO_UPLOAD_URL + "?timestamp=" + System.currentTimeMillis());
38
+                    photoUploadUtils.addFileParameter("photo", photo);
39
+                    photoUploadUtils.addTextParameter("user_id", bean.lensmanId);
40
+                    photoUploadUtils.addTextParameter("session_id", bean.sessionId);
41
+                    photoUploadUtils.addTextParameter("photo_id", String.valueOf(bean.photoId));
42
+                    photoUploadUtils.addTextParameter("nickname",Preferences.getInstance().getUserName());
42 43
 
43
-                String result = new String(photoUploadUtils.send(), "UTF-8");
44
-                JSONObject resultObj = new JSONObject(result);
45
-                if (resultObj.getInt("status") == 200) {
46
-                    LogHelper.d(TAG, "上传 UploadTask upload result ok ");
47
-                    return true;
44
+                    String result = new String(photoUploadUtils.send(), "UTF-8");
45
+                    JSONObject resultObj = new JSONObject(result);
46
+                    if (resultObj.getInt("status") == 200) {
47
+                        LogHelper.d(TAG, "上传 UploadTask upload result ok ");
48
+                        return true;
49
+                    }
50
+                } else {
51
+                    return false;
48 52
                 }
49
-            } else {
50
-                return false;
51
-            }
52 53
 
53
-        } catch (Exception e) {
54
-            LogHelper.d(TAG, "上传发生异常 UploadTask :" + bean + " error:" + e);
54
+            } catch (Exception e) {
55
+                LogHelper.d(TAG, "上传发生异常 UploadTask :" + bean + " error:" + e);
56
+            }
55 57
         }
56 58
         return false;
57 59
     }

+ 5 - 1
app/src/main/java/ai/pai/lensman/upload/SessionRecyclerAdapter.java

@@ -98,14 +98,18 @@ public class SessionRecyclerAdapter extends RecyclerView.Adapter<SessionRecycler
98 98
                     error++;
99 99
                 }
100 100
             }
101
+            holder.uploadProgressBar.setProgressDrawable(context.getResources().getDrawable(R.drawable.progress_upload_bg));
101 102
             if(error>0){
102 103
                 holder.uploadStatus.setText(R.string.upload_error);
104
+                holder.uploadProgressBar.setProgressDrawable(context.getResources().getDrawable(R.drawable.progress_upload_fail_bg));
103 105
             }else if(uploaded<photoList.size()){
104 106
                 holder.uploadStatus.setText(R.string.upload_processing);
105 107
             }else{
106 108
                 holder.uploadStatus.setText(R.string.upload_success);
107 109
             }
108
-            holder.uploadProgressBar.setProgress(100*uploaded/photoList.size());
110
+            holder.uploadProgressBar.setMax(photoList.size());
111
+            holder.uploadProgressBar.setProgress(uploaded);
112
+
109 113
         }
110 114
         holder.itemView.setOnClickListener(new View.OnClickListener(){
111 115
             @Override

+ 2 - 2
app/src/main/java/ai/pai/lensman/upload/UploadPresenter.java

@@ -111,10 +111,10 @@ public class UploadPresenter implements UploadContract.Presenter,BaseInteractor.
111 111
     @Override
112 112
     public synchronized void onPhotoUploaded(PhotoBean bean) {
113 113
         int position = sessionList.size()-bean.sessionSeq;
114
-        LogHelper.d("czy","onPhotoUploaded and notify UI change at "+position);
115 114
         if(position < 0 || position>=sessionList.size()){
116 115
             return;
117 116
         }
117
+        LogHelper.d("czy","onPhotoUploaded and notify UI change at "+position);
118 118
         SessionBean sessionBean = sessionList.get(position);
119 119
         ArrayList<PhotoBean> photoList = sessionBean.sessionPhotos;
120 120
         if(photoList==null || photoList.size()==0){
@@ -136,10 +136,10 @@ public class UploadPresenter implements UploadContract.Presenter,BaseInteractor.
136 136
     @Override
137 137
     public synchronized void onPhotoUploadError(PhotoBean bean) {
138 138
         int position = sessionList.size()-bean.sessionSeq;
139
-        LogHelper.d("czy","onPhotoUploadError and notify UI change at "+position);
140 139
         if(position < 0 || position>=sessionList.size()){
141 140
             return;
142 141
         }
142
+        LogHelper.d("czy","onPhotoUploadError and notify UI change at "+position);
143 143
         SessionBean sessionBean = sessionList.get(position);
144 144
         ArrayList<PhotoBean> photoList = sessionBean.sessionPhotos;
145 145
         if(photoList==null || photoList.size()==0){

BIN
app/src/main/res/drawable-xhdpi/progress_bg.png


BIN
app/src/main/res/drawable-xhdpi/progress_drawable.png


BIN
app/src/main/res/drawable-xhdpi/progress_fail_drawable.png


+ 26 - 0
app/src/main/res/drawable/progress_upload_bg.xml

@@ -0,0 +1,26 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
3
+    <item android:id="@android:id/background">
4
+        <shape>
5
+            <corners android:radius="1px" />
6
+            <solid android:color="@color/dark_grey" />
7
+        </shape>
8
+    </item>
9
+    <item android:id="@android:id/secondaryProgress">
10
+        <clip>
11
+            <shape>
12
+                <corners android:radius="1px" />
13
+                <solid android:color="@color/light_blue" />
14
+            </shape>
15
+        </clip>
16
+    </item>
17
+    <item android:id="@android:id/progress">
18
+        <clip>
19
+            <shape>
20
+                <corners android:radius="1px" />
21
+                <solid android:color="@color/light_blue" />
22
+            </shape>
23
+        </clip>
24
+    </item>
25
+
26
+</layer-list>

+ 26 - 0
app/src/main/res/drawable/progress_upload_fail_bg.xml

@@ -0,0 +1,26 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
3
+    <item android:id="@android:id/background">
4
+        <shape>
5
+            <corners android:radius="1px" />
6
+            <solid android:color="@color/dark_grey" />
7
+        </shape>
8
+    </item>
9
+    <item android:id="@android:id/secondaryProgress">
10
+        <clip>
11
+            <shape>
12
+                <corners android:radius="1px" />
13
+                <solid android:color="@color/red" />
14
+            </shape>
15
+        </clip>
16
+    </item>
17
+    <item android:id="@android:id/progress">
18
+        <clip>
19
+            <shape>
20
+                <corners android:radius="1px" />
21
+                <solid android:color="@color/red" />
22
+            </shape>
23
+        </clip>
24
+    </item>
25
+
26
+</layer-list>

+ 1 - 0
app/src/main/res/layout/activity_upload.xml

@@ -47,6 +47,7 @@
47 47
         android:id="@+id/recycler_view_sessions"
48 48
         android:layout_width="match_parent"
49 49
         android:layout_height="match_parent"
50
+        android:layout_marginBottom="50dp"
50 51
         android:layout_below="@id/title_layout"/>
51 52
 
52 53
 

+ 1 - 2
app/src/main/res/layout/session_item.xml

@@ -39,9 +39,8 @@
39 39
             android:id="@+id/pb_session_upload"
40 40
             android:layout_width="match_parent"
41 41
             android:layout_height="4dp"
42
-            android:progressDrawable="@drawable/progress_drawable"
42
+            android:progressDrawable="@drawable/progress_upload_bg"
43 43
             style="?android:attr/progressBarStyleHorizontal"
44
-            android:background="@drawable/progress_bg"
45 44
             android:layout_marginLeft="10dp"
46 45
             android:layout_marginRight="10dp"
47 46
             android:layout_marginBottom="8dp"

+ 2 - 0
app/src/main/res/values/colors.xml

@@ -4,10 +4,12 @@
4 4
     <color name="colorPrimaryDark">#2E78E5</color>
5 5
     <color name="colorAccent">#0BBE06</color>
6 6
 
7
+    <color name="light_blue">#1E90FF</color>
7 8
     <color name="white">#ffffffff</color>
8 9
     <color name="transparent">#00000000</color>
9 10
     <color name="black">#000000</color>
10 11
     <color name="grey">#999999</color>
12
+    <color name="red">#FF0000</color>
11 13
     <color name="text_white">#FFFFFF</color>
12 14
     <color name="background_white">#FFFFFF</color>
13 15
     <color name="background_light_grey_color">#F0F0F0</color>