Skip to content

Changes for android 11 and updating libs. #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 26 additions & 14 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.shashankpednekar.imagepickercompression"
minSdkVersion 21
targetSdkVersion 29
minSdkVersion 23
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
Expand All @@ -21,21 +18,36 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

viewBinding {
enabled true
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

kotlinOptions {
jvmTarget = "1.8"
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

// Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinerVer"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinerVer"

implementation "com.github.bumptech.glide:glide:4.10.0"
implementation "com.github.bumptech.glide:glide:4.12.0"
implementation 'androidx.activity:activity-ktx:1.3.0-alpha02'
implementation 'androidx.fragment:fragment-ktx:1.3.0'
}
10 changes: 9 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,15 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.shashankpednekar.imagepickercompression">

<uses-permission android:name="android.permission.CAMERA" />
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:mimeType="image/jpeg" />
</intent>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>

<application
android:allowBackup="true"
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,82 +2,53 @@ package com.shashankpednekar.imagepickercompression.activity

import android.Manifest
import android.app.Activity
import android.app.AlertDialog
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Bundle
import android.os.Environment
import android.os.Parcelable
import android.provider.MediaStore
import android.util.Log
import android.view.View
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.shashankpednekar.imagepickercompression.BuildConfig
import com.shashankpednekar.imagepickercompression.ParentActivity
import com.shashankpednekar.imagepickercompression.R
import com.shashankpednekar.imagepickercompression.databinding.ActivityMainBinding
import com.shashankpednekar.imagepickercompression.utils.compressImageFile
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.coroutines.*
import java.io.File
import java.util.ArrayList

private const val REQ_CAPTURE = 100
private const val RES_IMAGE = 100
class MainActivity : AppCompatActivity() {

class MainActivity : ParentActivity(R.layout.activity_main) {
private var queryImageUrl: String = ""
private val tag = javaClass.simpleName
private var imgPath: String = ""
private var imageUri: Uri? = null
private val permissions = arrayOf(Manifest.permission.CAMERA)
private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

btn_capture.setOnClickListener {
if (isPermissionsAllowed(permissions, true, REQ_CAPTURE)) {
chooseImage()
}
}
}
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)

override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
when (requestCode) {
REQ_CAPTURE -> {
if (isAllPermissionsGranted(grantResults)) {
binding.btnCapture.setOnClickListener {
chooseImage()
} else {
Toast.makeText(
this,
getString(R.string.permission_not_granted),
Toast.LENGTH_SHORT
).show()
}
}
}
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
RES_IMAGE -> {
if (resultCode == Activity.RESULT_OK) {
handleImageRequest(data)
}
}
}
}

private fun chooseImage() {
startActivityForResult(getPickImageIntent(), RES_IMAGE)
launchIntent.launch(getPickImageIntent())
}

private fun getPickImageIntent(): Intent? {
Expand Down Expand Up @@ -124,7 +95,6 @@ class MainActivity : ParentActivity(R.layout.activity_main) {
return imageUri!!
}


private fun addIntentsToList(
context: Context,
list: MutableList<Intent>,
Expand All @@ -143,7 +113,7 @@ class MainActivity : ParentActivity(R.layout.activity_main) {
private fun handleImageRequest(data: Intent?) {
val exceptionHandler = CoroutineExceptionHandler { _, t ->
t.printStackTrace()
progressBar.visibility = View.GONE
binding.progressBar.visibility = View.GONE
Toast.makeText(
this,
t.localizedMessage ?: getString(R.string.some_err),
Expand All @@ -152,14 +122,14 @@ class MainActivity : ParentActivity(R.layout.activity_main) {
}

GlobalScope.launch(Dispatchers.Main + exceptionHandler) {
progressBar.visibility = View.VISIBLE
binding.progressBar.visibility = View.VISIBLE

if (data?.data != null) { //Photo from gallery
imageUri = data.data
queryImageUrl = imageUri?.path!!
queryImageUrl = compressImageFile(queryImageUrl, false, imageUri!!)
} else {
queryImageUrl = imgPath ?: ""
queryImageUrl = imgPath
compressImageFile(queryImageUrl, uri = imageUri!!)
}
imageUri = Uri.fromFile(File(queryImageUrl))
Expand All @@ -171,11 +141,17 @@ class MainActivity : ParentActivity(R.layout.activity_main) {
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.load(queryImageUrl)
.into(iv_img)
.into(binding.ivImg)
}
progressBar.visibility = View.GONE
binding.progressBar.visibility = View.GONE
}

}

private val launchIntent =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
handleImageRequest(result.data)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import java.util.*

private const val tag = "FileUtils"

@Suppress("BlockingMethodInNonBlockingContext")
suspend fun Activity.compressImageFile(
path: String,
shouldOverride: Boolean = true,
Expand Down
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.3.50'
ext.coroutinerVer = "1.1.1"
ext.kotlin_version = '1.4.30'
ext.coroutinerVer = "1.4.2"
repositories {
google()
jcenter()

}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
classpath 'com.android.tools.build:gradle:4.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Wed Oct 23 14:59:16 IST 2019
#Mon Feb 22 21:42:00 IST 2021
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip