Browse Source

6.0相机启动权限检测

liuyuqi-dellpc 6 years ago
parent
commit
1793f8c5e3

+ 1 - 1
app/proguard-project.txt

@@ -15,7 +15,7 @@
 -keep 	class com.lidroid.xutils.** 	 {*;}
 -keep 	class com.lidroid.xutils.** 	 {*;}
 
 
 # 保留所有具有公有访问权限的类和其公共成员
 # 保留所有具有公有访问权限的类和其公共成员
--keepclasseswithmembers 	class *{	    public *;	}
+#-keepclasseswithmembers 	class *{	    public *;	}
 
 
 # 删除Log代码
 # 删除Log代码
 -assumenosideeffects 	class android.util.Log 	{
 -assumenosideeffects 	class android.util.Log 	{

+ 2 - 2
app/src/main/AndroidManifest.xml

@@ -2,8 +2,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="me.yoqi.qrcode"
     package="me.yoqi.qrcode"
     android:installLocation="auto"
     android:installLocation="auto"
-    android:versionCode="1"
-    android:versionName="1.0" >
+    android:versionCode="2"
+    android:versionName="1.0.1" >
 
 
     <uses-permission android:name="android.permission.CAMERA" />
     <uses-permission android:name="android.permission.CAMERA" />
    <!-- <uses-permission android:name="android.permission.INTERNET" />-->
    <!-- <uses-permission android:name="android.permission.INTERNET" />-->

+ 2 - 2
app/src/main/java/com/google/zxing/client/android/camera/CameraManager.java

@@ -87,7 +87,7 @@ public final class CameraManager
         Camera theCamera = camera;
         Camera theCamera = camera;
         if (theCamera == null)
         if (theCamera == null)
         {
         {
-            theCamera = new OpenCameraManager ().build ().open ();
+            theCamera = new OpenCameraManager().build().open();
             if (theCamera == null) { throw new IOException (); }
             if (theCamera == null) { throw new IOException (); }
             camera = theCamera;
             camera = theCamera;
         }
         }
@@ -184,7 +184,7 @@ public final class CameraManager
     }
     }
 
 
     /**
     /**
-     * Convenience method for {@link com.google.me.yoqi.qrcode.CaptureActivity}
+     * Convenience method for {@link me.yoqi.qrcode.CaptureActivity}
      */
      */
     public synchronized void setTorch(boolean newSetting){
     public synchronized void setTorch(boolean newSetting){
         if (camera != null)
         if (camera != null)

+ 24 - 20
app/src/main/java/me/yoqi/qrcode/CaptureActivity.java

@@ -1,24 +1,13 @@
 package me.yoqi.qrcode;
 package me.yoqi.qrcode;
 
 
-import java.io.IOException;
-import java.util.Collection;
-
-import com.google.zxing.BarcodeFormat;
-import com.google.zxing.Result;
-import com.google.zxing.ResultPoint;
-import com.google.zxing.client.android.camera.CameraManager;
-import com.google.zxing.client.android.decode.BeepManager;
-import com.google.zxing.client.android.decode.CaptureActivityHandler;
-import com.google.zxing.client.android.decode.InactivityTimer;
-import com.google.zxing.client.android.decode.ViewfinderView;
-import com.google.zxing.client.android.result.ResultHandler;
-import com.google.zxing.client.android.result.ResultHandlerFactory;
-
+import android.Manifest;
 import android.app.Activity;
 import android.app.Activity;
 import android.content.Intent;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Paint;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Handler;
 import android.os.Message;
 import android.os.Message;
@@ -33,6 +22,20 @@ import android.view.WindowManager;
 import android.widget.ImageView;
 import android.widget.ImageView;
 import android.widget.Toast;
 import android.widget.Toast;
 
 
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.Result;
+import com.google.zxing.ResultPoint;
+import com.google.zxing.client.android.camera.CameraManager;
+import com.google.zxing.client.android.decode.BeepManager;
+import com.google.zxing.client.android.decode.CaptureActivityHandler;
+import com.google.zxing.client.android.decode.InactivityTimer;
+import com.google.zxing.client.android.decode.ViewfinderView;
+import com.google.zxing.client.android.result.ResultHandler;
+import com.google.zxing.client.android.result.ResultHandlerFactory;
+
+import java.io.IOException;
+import java.util.Collection;
+
 /**
 /**
  * 识别二维码 CaptureActivity
  * 识别二维码 CaptureActivity
  * 
  * 
@@ -53,11 +56,6 @@ public final class CaptureActivity extends Activity implements SurfaceHolder.Cal
 	private String characterSet;
 	private String characterSet;
 	private BeepManager beepManager;
 	private BeepManager beepManager;
 
 
-	final static String profix1 = "?appid=";
-	final static String profix2 = "-title=";
-	final static String action = "muzhiwan.action.detail";
-	final static String bundle_key = "detail";
-
 	ImageView opreateView;
 	ImageView opreateView;
 
 
 	ViewfinderView getViewfinderView() {
 	ViewfinderView getViewfinderView() {
@@ -152,7 +150,7 @@ public final class CaptureActivity extends Activity implements SurfaceHolder.Cal
 		inactivityTimer.onPause();
 		inactivityTimer.onPause();
 		cameraManager.closeDriver();
 		cameraManager.closeDriver();
 		if (!hasSurface) {
 		if (!hasSurface) {
-			SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view);
+			SurfaceView surfaceView = findViewById(R.id.preview_view);
 			SurfaceHolder surfaceHolder = surfaceView.getHolder();
 			SurfaceHolder surfaceHolder = surfaceView.getHolder();
 			surfaceHolder.removeCallback(this);
 			surfaceHolder.removeCallback(this);
 		}
 		}
@@ -297,6 +295,12 @@ public final class CaptureActivity extends Activity implements SurfaceHolder.Cal
 	}
 	}
 
 
 	private void initCamera(SurfaceHolder surfaceHolder) {
 	private void initCamera(SurfaceHolder surfaceHolder) {
+		//		权限检测
+		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+			if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
+				requestPermissions(new String[]{Manifest.permission.CAMERA}, 1);
+			}
+		}
 		if (surfaceHolder == null) {
 		if (surfaceHolder == null) {
 			throw new IllegalStateException("No SurfaceHolder provided");
 			throw new IllegalStateException("No SurfaceHolder provided");
 		}
 		}