diff --git a/app/build.gradle b/app/build.gradle index a84c0d4..3a69052 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 24 - buildToolsVersion "24.0.0" + compileSdkVersion 26 + buildToolsVersion '26.0.2' defaultConfig { applicationId "com.example.android.barcode_scanner" minSdkVersion 21 - targetSdkVersion 24 + targetSdkVersion 26 versionCode 1 versionName "1.0" } @@ -22,6 +22,6 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:24.1.1' - compile 'com.google.android.gms:play-services:7.8+' + compile 'com.android.support:appcompat-v7:26.1.0' + compile 'com.google.android.gms:play-services:11.0.2' } diff --git a/app/src/main/java/com/example/android/barcode_scanner/MainActivity.java b/app/src/main/java/com/example/android/barcode_scanner/MainActivity.java index 7194e9b..3e0bfb4 100644 --- a/app/src/main/java/com/example/android/barcode_scanner/MainActivity.java +++ b/app/src/main/java/com/example/android/barcode_scanner/MainActivity.java @@ -1,12 +1,18 @@ package com.example.android.barcode_scanner; +import android.Manifest; import android.app.Activity; +import android.content.pm.PackageManager; +import android.os.Build; import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.ActivityCompat; import android.util.Log; import android.util.SparseArray; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.widget.TextView; +import android.widget.Toast; import com.google.android.gms.vision.CameraSource; import com.google.android.gms.vision.Detector; @@ -17,19 +23,22 @@ public class MainActivity extends Activity { + private CameraSource cameraSource; + private SurfaceView cameraView; + private int CAMERA_REQUEST_CODE=334; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - final SurfaceView cameraView = (SurfaceView) findViewById(R.id.camera_view); - final TextView barcodeInfo = (TextView) findViewById(R.id.code_info); + cameraView = findViewById(R.id.camera_view); + final TextView barcodeInfo = findViewById(R.id.code_info); BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(this) .setBarcodeFormats(Barcode.QR_CODE) .build(); - final CameraSource cameraSource = new CameraSource + cameraSource = new CameraSource .Builder(this, barcodeDetector) .setRequestedPreviewSize(640, 480) .build(); @@ -37,6 +46,12 @@ protected void onCreate(Bundle savedInstanceState) { @Override public void surfaceCreated(SurfaceHolder holder) { try { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { + requestPermissions(new String[]{Manifest.permission.CAMERA}, CAMERA_REQUEST_CODE); + return; + } + } cameraSource.start(cameraView.getHolder()); } catch (IOException ie) { @@ -75,4 +90,27 @@ public void run() { } }); } + + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + + if (requestCode == CAMERA_REQUEST_CODE) { + if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) + == PackageManager.PERMISSION_GRANTED) { + if (cameraSource != null) { + try { + cameraSource.start(cameraView.getHolder()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + } else { + Toast.makeText(this, "Need camera permission", Toast.LENGTH_LONG).show(); + } + + } + } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index f8d6ba8..d433551 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,25 +1,22 @@ + android:layout_width="match_parent" + android:layout_height="match_parent"> + + + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_alignParentLeft="true" + android:layout_centerVertical="true" /> - + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textColor="@android:color/white" + android:text="@string/str_nothing_to_read" + android:textSize="@dimen/text_size_medium" /> \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 47c8224..0a8eba9 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -2,4 +2,7 @@ 16dp 16dp + 14sp + 16sp + 18sp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 62f6530..90fbb51 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ Barcode_Scanner + Nothing to read. diff --git a/build.gradle b/build.gradle index c20bca1..92d45f7 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,10 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.2' + classpath 'com.android.tools.build:gradle:3.0.0-beta7' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -15,6 +16,7 @@ buildscript { allprojects { repositories { jcenter() + google() } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a2a2950..bada4b9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Aug 21 00:53:27 IST 2016 +#Sat Oct 14 10:43:32 IST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip