From f9a6bc40f354eb964333b9e8121f22cb322891c3 Mon Sep 17 00:00:00 2001 From: damomos Date: Wed, 18 Oct 2017 15:53:14 +0100 Subject: [PATCH] Fixed Camera Source access and Improved the Camera UI --- app/build.gradle | 8 ++--- app/src/main/AndroidManifest.xml | 4 ++- .../android/barcode_scanner/MainActivity.java | 23 ++++++++++++++ app/src/main/res/layout/activity_main.xml | 31 +++++++++++-------- app/src/main/res/values/colors.xml | 5 +-- app/src/main/res/values/strings.xml | 1 + build.gradle | 4 ++- gradle/wrapper/gradle-wrapper.properties | 4 +-- 8 files changed, 57 insertions(+), 23 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a84c0d4..b67b5f4 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.android.support:appcompat-v7:26.1.0' compile 'com.google.android.gms:play-services:7.8+' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cf1464b..bccb8db 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,8 @@ + @@ -12,7 +14,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" - android:theme="@style/AppTheme" > + android:theme="@style/AppTheme"> 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..70d1ff8 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,7 +1,12 @@ package com.example.android.barcode_scanner; +import android.Manifest; import android.app.Activity; +import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; import android.os.Bundle; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; import android.util.Log; import android.util.SparseArray; import android.view.SurfaceHolder; @@ -17,11 +22,23 @@ public class MainActivity extends Activity { + private static final int CAMERA_PERMISSION_CAMERA = 0x000000; @Override protected void onCreate(Bundle savedInstanceState) { + setRequestedOrientation(ActivityInfo + .SCREEN_ORIENTATION_PORTRAIT); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + + //Check for Camera Permission + if (ContextCompat.checkSelfPermission(MainActivity.this, + Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { + + ActivityCompat.requestPermissions(MainActivity.this, + new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_CAMERA); + } + final SurfaceView cameraView = (SurfaceView) findViewById(R.id.camera_view); final TextView barcodeInfo = (TextView) findViewById(R.id.code_info); BarcodeDetector barcodeDetector = @@ -33,10 +50,16 @@ protected void onCreate(Bundle savedInstanceState) { .Builder(this, barcodeDetector) .setRequestedPreviewSize(640, 480) .build(); + cameraView.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { try { + if (ActivityCompat.checkSelfPermission(MainActivity.this, + Manifest.permission.CAMERA) + != PackageManager.PERMISSION_GRANTED) { + return; + } cameraSource.start(cameraView.getHolder()); } catch (IOException ie) { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index f8d6ba8..ea1c3bb 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,25 +1,30 @@ - + + android:layout_width="300dp" + android:layout_height="300dp" + android:layout_marginTop="16dp" + android:layout_centerHorizontal="true"/> + android:layout_marginRight="16dp" + android:layout_marginBottom="10dp"/> + + + + - \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 3ab3e9c..218a90a 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,6 +1,7 @@ - #3F51B5 - #303F9F + #8e8d8d + #434242 #FF4081 + #d7d6d6 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 62f6530..443561d 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..6de1f56 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 +#Wed Oct 18 13:36:45 WAT 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