Skip to content

Commit 16c67c6

Browse files
committed
- Updated to latest version of Google Play Services
- Added permissions check
1 parent 9a98adc commit 16c67c6

File tree

5 files changed

+53
-29
lines changed

5 files changed

+53
-29
lines changed

AndroidVisionQRReader/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ android {
2020
dependencies {
2121
compile fileTree(dir: 'libs', include: ['*.jar'])
2222

23-
compile 'com.android.support:appcompat-v7:23.0.+'
24-
compile 'com.google.android.gms:play-services-vision:7.8.+'
23+
compile 'com.android.support:appcompat-v7:23.1.+'
24+
compile 'com.google.android.gms:play-services-vision:8.1.+'
2525
}

AndroidVisionQRReader/src/main/AndroidManifest.xml

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.gnzlt.AndroidVisionQRReader">
2+
<manifest
3+
package="com.gnzlt.AndroidVisionQRReader"
4+
xmlns:android="http://schemas.android.com/apk/res/android">
45

5-
<uses-permission android:name="android.permission.CAMERA" />
6+
<uses-permission android:name="android.permission.CAMERA"/>
67

78
<meta-data
89
android:name="com.google.android.gms.vision.DEPENDENCIES"
9-
android:value="barcode" />
10+
android:value="barcode"/>
1011

1112
<application
1213
android:label="@string/app_name">
1314
<activity
1415
android:name=".QRActivity"
15-
android:label="@string/app_name" >
16-
<intent-filter>
17-
<action android:name="android.intent.action.MAIN" />
18-
19-
<category android:name="android.intent.category.LAUNCHER" />
20-
</intent-filter>
16+
android:label="@string/app_name"
17+
android:launchMode="singleTask">
2118
</activity>
2219
</application>
2320

AndroidVisionQRReader/src/main/java/com/gnzlt/AndroidVisionQRReader/QRActivity.java

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
package com.gnzlt.AndroidVisionQRReader;
22

3+
import android.Manifest;
34
import android.content.Intent;
5+
import android.content.pm.PackageManager;
46
import android.media.AudioManager;
57
import android.media.ToneGenerator;
8+
import android.os.Build;
69
import android.os.Bundle;
10+
import android.support.v4.app.ActivityCompat;
11+
import android.support.v4.content.ContextCompat;
712
import android.support.v7.app.AppCompatActivity;
813
import android.util.Log;
914
import android.util.SparseArray;
15+
import android.widget.Toast;
1016

1117
import com.gnzlt.AndroidVisionQRReader.camera.CameraSourcePreview;
1218
import com.google.android.gms.vision.CameraSource;
@@ -20,6 +26,7 @@ public class QRActivity extends AppCompatActivity {
2026

2127
private static final String TAG = "QRActivity";
2228
public static final String EXTRA_QR_RESULT = "EXTRA_QR_RESULT";
29+
private static final int PERMISSIONS_REQUEST = 100;
2330

2431
private BarcodeDetector mBarcodeDetector;
2532
private CameraSource mCameraSource;
@@ -32,14 +39,41 @@ protected void onCreate(Bundle savedInstanceState) {
3239

3340
mPreview = (CameraSourcePreview) findViewById(R.id.cameraSourcePreview);
3441

35-
setupBarcodeDetector();
36-
setupCameraSource();
42+
if (isPermissionGranted()) {
43+
setupBarcodeDetector();
44+
setupCameraSource();
45+
} else {
46+
requestPermission();
47+
}
3748
}
3849

3950
@Override
4051
protected void onResume() {
4152
super.onResume();
42-
startCameraSource();
53+
if (isPermissionGranted())
54+
startCameraSource();
55+
}
56+
57+
private boolean isPermissionGranted() {
58+
return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED;
59+
}
60+
61+
private void requestPermission() {
62+
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, PERMISSIONS_REQUEST);
63+
}
64+
65+
@Override
66+
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
67+
if (requestCode == PERMISSIONS_REQUEST) {
68+
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
69+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
70+
recreate();
71+
}
72+
} else {
73+
Toast.makeText(this, "This application needs Camera permission to read QR codes", Toast.LENGTH_SHORT).show();
74+
finish();
75+
}
76+
}
4377
}
4478

4579
private void setupBarcodeDetector() {
@@ -50,7 +84,7 @@ private void setupBarcodeDetector() {
5084
mBarcodeDetector.setProcessor(new Detector.Processor<Barcode>() {
5185
@Override
5286
public void release() {
53-
87+
5488
}
5589

5690
@Override
@@ -81,6 +115,7 @@ private void setupCameraSource() {
81115
}
82116

83117
private void startCameraSource() {
118+
Log.d(TAG, "Camera Source started");
84119
if (mCameraSource != null) {
85120
try {
86121
mPreview.start(mCameraSource);

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ android {
2121

2222
dependencies {
2323
compile fileTree(dir: 'libs', include: ['*.jar'])
24-
compile 'com.android.support:appcompat-v7:23.0.+'
24+
compile 'com.android.support:appcompat-v7:23.1.+'
2525
compile project(':AndroidVisionQRReader')
2626
}

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.example.qrtest">
2+
<manifest package="com.example.qrtest"
3+
xmlns:android="http://schemas.android.com/apk/res/android">
44

55
<application
66
android:icon="@mipmap/ic_launcher"
@@ -10,19 +10,11 @@
1010
android:name=".MainActivity"
1111
android:label="@string/app_name">
1212
<intent-filter>
13-
<action android:name="android.intent.action.MAIN" />
13+
<action android:name="android.intent.action.MAIN"/>
1414

15-
<category android:name="android.intent.category.LAUNCHER" />
15+
<category android:name="android.intent.category.LAUNCHER"/>
1616
</intent-filter>
1717
</activity>
18-
19-
<activity
20-
android:name="com.gnzlt.AndroidVisionQRReader.QRActivity"
21-
android:parentActivityName=".MainActivity">
22-
<meta-data
23-
android:name="android.support.PARENT_ACTIVITY"
24-
android:value="com.example.qrtest.MainActivity" />
25-
</activity>
2618
</application>
2719

2820
</manifest>

0 commit comments

Comments
 (0)