Browse Source

1.修改Apex Drivers从后台到前台时返回到Home。
2.修改Apex Drivers拍照后获取到的图像是空。

Pen Li 7 năm trước cách đây
mục cha
commit
8babcc1fb3

+ 4 - 1
ApexDrivers/app/src/main/AndroidManifest.xml

@@ -9,6 +9,9 @@
     <!-- 调用硬件相机权限 -->
     <uses-feature android:name="android.hardware.camera"/>
     <uses-feature android:name="android.hardware.camera.autofocus"/>
+    <!-- 文件读写权限 -->
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 
     <application
         android:name=".ApexDriverApplication"
@@ -20,7 +23,7 @@
         android:theme="@style/AppTheme">
         <activity
             android:name=".MainActivity"
-            android:launchMode="singleTask">
+            android:launchMode="singleTop">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
 

+ 1 - 0
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Detail/DetailActivity.java

@@ -124,6 +124,7 @@ public class DetailActivity extends AppCompatActivity implements DetailAdapter.D
 
     private void goHome() {
         Intent intent = new Intent(self, MainActivity.class);
+        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         self.startActivity(intent);
 
         sendBroadcast(new Intent(HomeFragment.HomeReloadBroadcastAction));

+ 20 - 3
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Update/Model/UpdatePhotoModel.java

@@ -3,13 +3,19 @@ package com.usai.redant.apexdrivers.Update.Model;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 
+import java.io.File;
+
 public class UpdatePhotoModel extends UpdateBaseModel {
 
-    public Bitmap photo;
+    private Bitmap photo;
     public String photoPath;
 
     public String getPhotoName() {
-        return key + ".jpg";
+        if (photoPath == null) {
+            return null;
+        }
+        File tmpFile = new File(photoPath);
+        return tmpFile.getName();
     }
 
     public void setPhoto(Bitmap photo) {
@@ -19,12 +25,23 @@ public class UpdatePhotoModel extends UpdateBaseModel {
         }
     }
 
+    public Bitmap getPhoto() {
+        if (photo != null) {
+            return photo;
+        }
+        if (photoPath != null) {
+            photo = BitmapFactory.decodeFile(photoPath);
+            return photo;
+        }
+        return null;
+    }
+
     public void setPhotoPath(String photoPath) {
         this.photoPath = photoPath;
         if (photoPath == null) {
             setPhoto(null);
         } else {
-            setPhoto(BitmapFactory.decodeFile(photoPath));
+            setPhoto(BitmapFactory.decodeFile(photoPath)); // 拍照成功后,立即获取Bitmap可能会取到null
         }
     }
 

+ 6 - 7
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Update/UpdateActivity.java

@@ -91,7 +91,6 @@ public class UpdateActivity extends AppCompatActivity implements UpdateAdapter.U
     private UpdatePhotoModel mPhotoModel;
 
     private File photoFile = null;
-    public String LastFileName = "";
 
     private ProgressDialog mProgressDialog;
 
@@ -186,7 +185,7 @@ public class UpdateActivity extends AppCompatActivity implements UpdateAdapter.U
 //                        photoFile = scaleFile;
 //                    }
 
-                    ImageUtil.updateGallery(mCtx,photoFile.toString());
+                    ImageUtil.updateGallery(mCtx,photoFile.getAbsolutePath());
                     if (mPhotoModel != null) {
                         mPhotoModel.setPhotoPath(photoFile.getAbsolutePath());
                     }
@@ -398,6 +397,7 @@ public class UpdateActivity extends AppCompatActivity implements UpdateAdapter.U
 
     private void goHome() {
         Intent intent = new Intent(self, MainActivity.class);
+        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         self.startActivity(intent);
 
         sendBroadcast(new Intent(HomeFragment.HomeReloadBroadcastAction));
@@ -540,8 +540,8 @@ public class UpdateActivity extends AppCompatActivity implements UpdateAdapter.U
     private File createImageFile() throws IOException
     {
         // Create an image file name
-//        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmSS").format(new Date());
-//        String imageFileName = "JPEG_" + timeStamp + "_";
+        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmSS").format(new Date());
+        String imageFileName = "JPEG_" + timeStamp + "_";
         File storageDir = new File(Environment.getExternalStorageDirectory().getPath() + "/Apex Driver/photo/temp/");
 
         File dir1 = new File(Environment.getExternalStorageDirectory().getPath() + "/Apex Driver");
@@ -562,10 +562,9 @@ public class UpdateActivity extends AppCompatActivity implements UpdateAdapter.U
             boolean b = dir3.mkdir();
         }
 
-        LastFileName = storageDir + mPhotoModel.getPhotoName();
 
-        File image = File.createTempFile(mPhotoModel.getPhotoName(), /* prefix */
-                "", /* suffix */
+        File image = File.createTempFile(imageFileName, /* prefix */
+                ".jpg", /* suffix */
                 storageDir /* directory */
         );
 

+ 3 - 1
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Update/UpdateAdapter.java

@@ -399,6 +399,8 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
             if (model != null) {
                 weakPhoto = new WeakReference<>(model);
                 weakPhoto.get().setDelegate(this);
+            } else {
+                weakPhoto = null;
             }
 
             refresh();
@@ -409,7 +411,7 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
 
             if (weakPhoto != null) {
                 titleTv.setText(weakPhoto.get().title);
-                photoBtn.setImageBitmap(weakPhoto.get().photo);
+                photoBtn.setImageBitmap(weakPhoto.get().getPhoto());
             } else {
                 titleTv.setText(null);
                 photoBtn.setImageBitmap(null);