From e34ff6ff2b5143857f313094236ec0d8f3608b00 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Wed, 6 Nov 2019 20:19:55 +0530 Subject: [PATCH] WIP for profile loading --- .../retromusic/activities/UserInfoActivity.kt | 4 +- .../name/monkey/retromusic/util/ImageSaver.kt | 101 ++++++++++++++++++ 2 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/code/name/monkey/retromusic/util/ImageSaver.kt diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/UserInfoActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/UserInfoActivity.kt index a4117541..baa667ae 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/UserInfoActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/UserInfoActivity.kt @@ -237,7 +237,7 @@ class UserInfoActivity : AbsBaseActivity() { .compressToBitmapAsFlowable(File(profileImagePath, USER_BANNER)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe { bitmap -> bannerImage.setImageBitmap(bitmap) }) + .subscribe({ bitmap -> bannerImage.setImageBitmap(bitmap) }, { t -> println() })) } private fun loadImageFromStorage(path: String) { @@ -249,7 +249,7 @@ class UserInfoActivity : AbsBaseActivity() { .compressToBitmapAsFlowable(File(path, USER_PROFILE)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe { bitmap -> userImage!!.setImageBitmap(bitmap) }) + .subscribe({ bitmap -> userImage!!.setImageBitmap(bitmap) }, { t -> println() })) } private fun saveToInternalStorage(bitmapImage: Bitmap, userBanner: String): String { diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ImageSaver.kt b/app/src/main/java/code/name/monkey/retromusic/util/ImageSaver.kt new file mode 100644 index 00000000..265c057a --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/util/ImageSaver.kt @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2019 Hemanth Savarala. + * + * Licensed under the GNU General Public License v3 + * + * This is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by + * the Free Software Foundation either version 3 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + */ + +package code.name.monkey.retromusic.util + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.os.Environment +import java.io.File +import java.io.FileInputStream +import java.io.FileOutputStream +import java.io.IOException + +/** + * Created by hemanths on 2019-11-05. + */ + +class ImageSaver(val context: Context) { + private var external: Boolean = false + private var directoryName: String = "RetroMusic" + private var fileName: String = "profile.png" + + fun setFileName(fileName: String): ImageSaver { + this.fileName = fileName + return this + } + + fun setDirectoryName(directoryName: String): ImageSaver { + this.directoryName = directoryName + return this + } + + fun setStoreType(external: Boolean): ImageSaver { + this.external = external + return this + } + + fun save(bitmap: Bitmap) { + var fileOutputStream: FileOutputStream? = null + try { + fileOutputStream = FileOutputStream(createFile()) + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream) + } catch (er: Exception) { + println(er) + } finally { + try { + fileOutputStream?.close() + } catch (er: IOException) { + println(er) + } + } + } + + fun getFile(): File { + return createFile() + } + + private fun createFile(): File { + val directory: File = if (external) { + getFileStorePlace(directoryName) + } else { + context.getDir(directoryName, Context.MODE_PRIVATE) + } + if (!directory.exists() && !directory.mkdirs()) { + println("Error in creating folders $directory") + } + println("Create file -> $directory/$fileName") + return File(directory, fileName) + } + + private fun getFileStorePlace(directoryName: String): File { + return File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), directoryName) + } + + fun load(): Bitmap? { + var inputStream: FileInputStream? = null + return try { + inputStream = FileInputStream(createFile()) + BitmapFactory.decodeStream(inputStream) + } catch (er: Exception) { + try { + inputStream?.close() + } catch (e: IOException) { + e.printStackTrace() + } + null + } + } +} \ No newline at end of file