Skip to content
Merged
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
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@ android {
dependencies {
implementation "androidx.appcompat:appcompat:1.2.0"
implementation "androidx.constraintlayout:constraintlayout:2.0.4"
implementation "androidx.activity:activity-ktx:1.2.4"
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.work:work-runtime-ktx:$versions.work"
implementation "com.github.bumptech.glide:glide:4.12.0"
implementation "com.jakewharton.timber:timber:4.7.1"
implementation "org.jetbrains.kotlin:kotlin-stdlib:$versions.kotlin"
}
4 changes: 1 addition & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,20 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
android:name=".BlurApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<activity android:name=".SelectImageActivity">
<activity android:name=".BlurActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".BlurActivity" />

</application>

Expand Down
Binary file added app/src/main/ic_launcher-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 6 additions & 13 deletions app/src/main/java/com/example/background/BlurActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,31 +18,24 @@ package com.example.background

import android.os.Bundle
import android.view.View
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProviders
import com.bumptech.glide.Glide
import com.example.background.databinding.ActivityBlurBinding

class BlurActivity : AppCompatActivity() {

private lateinit var viewModel: BlurViewModel
private val viewModel: BlurViewModel by viewModels {
BlurViewModel.BlurViewModelFactory(
application
)
}
private lateinit var binding: ActivityBlurBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityBlurBinding.inflate(layoutInflater)
setContentView(binding.root)

// Get the ViewModel
viewModel = ViewModelProviders.of(this).get(BlurViewModel::class.java)

// Image uri should be stored in the ViewModel; put it there then display
val imageUriExtra = intent.getStringExtra(KEY_IMAGE_URI)
viewModel.setImageUri(imageUriExtra)
viewModel.imageUri?.let { imageUri ->
Glide.with(this).load(imageUri).into(binding.imageView)
}

binding.goButton.setOnClickListener { viewModel.applyBlur(blurLevel) }
}

Expand Down
30 changes: 0 additions & 30 deletions app/src/main/java/com/example/background/BlurApplication.kt

This file was deleted.

37 changes: 30 additions & 7 deletions app/src/main/java/com/example/background/BlurViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,21 @@
package com.example.background

import android.app.Application
import android.content.ContentResolver
import android.content.Context
import android.net.Uri
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider


class BlurViewModel(application: Application) : AndroidViewModel(application) {
class BlurViewModel(application: Application) : ViewModel() {

internal var imageUri: Uri? = null
internal var outputUri: Uri? = null

init {
imageUri = getImageUri(application.applicationContext)
}
/**
* Create the WorkRequest to apply the blur and save the resulting image
* @param blurLevel The amount to blur the image
Expand All @@ -40,14 +46,31 @@ class BlurViewModel(application: Application) : AndroidViewModel(application) {
}
}

/**
* Setters
*/
internal fun setImageUri(uri: String?) {
imageUri = uriOrNull(uri)
private fun getImageUri(context: Context): Uri {
val resources = context.resources

val imageUri = Uri.Builder()
.scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
.authority(resources.getResourcePackageName(R.drawable.android_cupcake))
.appendPath(resources.getResourceTypeName(R.drawable.android_cupcake))
.appendPath(resources.getResourceEntryName(R.drawable.android_cupcake))
.build()

return imageUri
}

internal fun setOutputUri(outputImageUri: String?) {
outputUri = uriOrNull(outputImageUri)
}

class BlurViewModelFactory(private val application: Application) : ViewModelProvider.Factory {

override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return if (modelClass.isAssignableFrom(BlurViewModel::class.java)) {
BlurViewModel(application) as T
} else {
throw IllegalArgumentException("Unknown ViewModel class")
}
}
}
}
158 changes: 0 additions & 158 deletions app/src/main/java/com/example/background/SelectImageActivity.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import android.content.Context
import android.graphics.Bitmap
import android.net.Uri
import android.os.Build
import android.util.Log
import androidx.annotation.WorkerThread
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
Expand All @@ -39,13 +40,14 @@ import com.example.background.OUTPUT_PATH
import com.example.background.R
import com.example.background.VERBOSE_NOTIFICATION_CHANNEL_DESCRIPTION
import com.example.background.VERBOSE_NOTIFICATION_CHANNEL_NAME
import timber.log.Timber
import java.io.File
import java.io.FileNotFoundException
import java.io.FileOutputStream
import java.io.IOException
import java.util.UUID

private const val TAG = "WorkerUtils"

/**
* Create a Notification that is shown as a heads-up notification if possible.
*
Expand Down Expand Up @@ -87,13 +89,13 @@ fun makeStatusNotification(message: String, context: Context) {
}

/**
* Method for sleeping for a fixed about of time to emulate slower work
* Method for sleeping for a fixed amount of time to emulate slower work
*/
fun sleep() {
try {
Thread.sleep(DELAY_TIME_MILLIS, 0)
} catch (e: InterruptedException) {
Timber.e(e.message)
Log.e(TAG, e.message)
}

}
Expand Down
Loading