summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorTanuj M <thetanuj@hotmail.com>2020-08-11 16:37:56 +0530
committerTanuj M <thetanuj@hotmail.com>2020-08-11 16:37:56 +0530
commit028abf4bb731b5d6dcb77d2b893071a6eb2797ae (patch)
treee828a52915633eac913486d45b112b14858ba5cd /app
parent942b843fe11e7fd5316be74a3480c6a53eaaf168 (diff)
downloadSidePhOnelauncher-028abf4bb731b5d6dcb77d2b893071a6eb2797ae.tar.gz
SidePhOnelauncher-028abf4bb731b5d6dcb77d2b893071a6eb2797ae.tar.bz2
SidePhOnelauncher-028abf4bb731b5d6dcb77d2b893071a6eb2797ae.zip
Setting up wallpaper from url
Diffstat (limited to 'app')
-rw-r--r--app/src/main/AndroidManifest.xml1
-rw-r--r--app/src/main/java/app/olauncher/MainActivity.kt3
-rw-r--r--app/src/main/java/app/olauncher/helper/MainViewModel.kt19
-rw-r--r--app/src/main/java/app/olauncher/helper/Utils.kt44
-rw-r--r--app/src/main/java/app/olauncher/ui/MainFragment.kt8
-rw-r--r--app/src/main/res/layout/main_fragment.xml8
6 files changed, 81 insertions, 2 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 903a184..580bd70 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
+ <uses-permission android:name="android.permission.INTERNET" />
<!--For device lock feature-->
<uses-permission android:name="android.permission.CALL_PHONE" />
diff --git a/app/src/main/java/app/olauncher/MainActivity.kt b/app/src/main/java/app/olauncher/MainActivity.kt
index 51008b8..29325ba 100644
--- a/app/src/main/java/app/olauncher/MainActivity.kt
+++ b/app/src/main/java/app/olauncher/MainActivity.kt
@@ -62,6 +62,9 @@ class MainActivity : AppCompatActivity() {
viewModel.launcherResetFailed.observe(this, Observer {
openLauncherChooser(it)
})
+ viewModel.refreshWallpaper.observe(this, Observer {
+ setWallpaper()
+ })
}
private fun setWallpaper() {
diff --git a/app/src/main/java/app/olauncher/helper/MainViewModel.kt b/app/src/main/java/app/olauncher/helper/MainViewModel.kt
index a2de944..7a14c96 100644
--- a/app/src/main/java/app/olauncher/helper/MainViewModel.kt
+++ b/app/src/main/java/app/olauncher/helper/MainViewModel.kt
@@ -1,6 +1,7 @@
package app.olauncher.helper
import android.app.Application
+import android.app.WallpaperManager
import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatDelegate
@@ -23,6 +24,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
val isOlauncherDefault = MutableLiveData<Boolean>()
val launcherResetFailed = MutableLiveData<Boolean>()
val isDarkModeOn = MutableLiveData<Boolean>()
+ val refreshWallpaper = MutableLiveData<Any>()
fun selectedApp(appModel: AppModel, flag: Int) {
when (flag) {
@@ -110,6 +112,23 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
else AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
isDarkModeOn.value = prefs.darkModeOn
}
+
+ fun setWallpaper(width: Int, height: Int, url: String) {
+ viewModelScope.launch {
+ val originalImageBitmap = getBitmapFromURL(url)
+ val wallpaperManager = WallpaperManager.getInstance(appContext)
+ val scaledBitmap = getWallpaperBitmap(originalImageBitmap, width, height)
+
+ try {
+ wallpaperManager.setBitmap(scaledBitmap)
+ originalImageBitmap.recycle()
+ scaledBitmap.recycle()
+ refreshWallpaper.value = Unit
+ } catch (e: Exception) {
+
+ }
+ }
+ }
}
data class AppModelWithFlag(
diff --git a/app/src/main/java/app/olauncher/helper/Utils.kt b/app/src/main/java/app/olauncher/helper/Utils.kt
index b87a0b9..308707e 100644
--- a/app/src/main/java/app/olauncher/helper/Utils.kt
+++ b/app/src/main/java/app/olauncher/helper/Utils.kt
@@ -5,7 +5,7 @@ import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
-import android.graphics.Bitmap
+import android.graphics.*
import android.net.Uri
import android.provider.Settings
import android.widget.Toast
@@ -14,6 +14,9 @@ import app.olauncher.R
import app.olauncher.data.AppModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
+import java.io.InputStream
+import java.net.HttpURLConnection
+import java.net.URL
import java.util.*
fun showToastLong(context: Context, message: String) {
@@ -111,4 +114,41 @@ fun openAppInfo(context: Context, packageName: String) {
intent.addCategory(Intent.CATEGORY_DEFAULT)
intent.data = Uri.parse("package:$packageName")
context.startActivity(intent)
-} \ No newline at end of file
+}
+
+suspend fun getBitmapFromURL(src: String?): Bitmap {
+ return withContext(Dispatchers.IO) {
+ val url = URL(src)
+ val connection: HttpURLConnection = url
+ .openConnection() as HttpURLConnection
+ connection.doInput = true
+ connection.connect()
+ val input: InputStream = connection.inputStream
+ BitmapFactory.decodeStream(input)
+ }
+}
+
+suspend fun getWallpaperBitmap(originalImage: Bitmap, width: Int, height: Int): Bitmap {
+ return withContext(Dispatchers.IO) {
+ val background = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
+
+ val originalWidth: Float = originalImage.width.toFloat()
+ val originalHeight: Float = originalImage.height.toFloat()
+
+ val canvas = Canvas(background)
+ val scale: Float = height / originalHeight
+
+ val xTranslation: Float = (width - originalWidth * scale) / 2.0f
+ val yTranslation = 0.0f
+
+ val transformation = Matrix()
+ transformation.postTranslate(xTranslation, yTranslation)
+ transformation.preScale(scale, scale)
+
+ val paint = Paint()
+ paint.isFilterBitmap = true
+ canvas.drawBitmap(originalImage, transformation, paint)
+
+ background
+ }
+}
diff --git a/app/src/main/java/app/olauncher/ui/MainFragment.kt b/app/src/main/java/app/olauncher/ui/MainFragment.kt
index 80152fa..8b3c6ac 100644
--- a/app/src/main/java/app/olauncher/ui/MainFragment.kt
+++ b/app/src/main/java/app/olauncher/ui/MainFragment.kt
@@ -5,6 +5,7 @@ import android.app.admin.DevicePolicyManager
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
+import android.content.res.Resources
import android.os.Bundle
import android.provider.AlarmClock
import android.provider.MediaStore
@@ -137,6 +138,7 @@ class MainFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
}
private fun initClickListeners() {
+ wallpaper.setOnClickListener(this)
homeApp1.setOnClickListener(this)
homeApp2.setOnClickListener(this)
homeApp3.setOnClickListener(this)
@@ -172,6 +174,12 @@ class MainFragment : Fragment(), View.OnClickListener, View.OnLongClickListener
override fun onClick(view: View) {
when (view.id) {
+ R.id.wallpaper -> {
+ val width = Resources.getSystem().displayMetrics.widthPixels
+ val height = Resources.getSystem().displayMetrics.heightPixels
+ viewModel.setWallpaper(width, height, "https://images.unsplash.com/photo-1516410529446-2c777cb7366d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1834&q=80")
+ }
+
R.id.homeApp1 -> if (prefs.appPackage1.isEmpty()) onLongClick(view)
else launchAppEvent(prefs.appName1, prefs.appPackage1)
diff --git a/app/src/main/res/layout/main_fragment.xml b/app/src/main/res/layout/main_fragment.xml
index 9d595f1..4f8a770 100644
--- a/app/src/main/res/layout/main_fragment.xml
+++ b/app/src/main/res/layout/main_fragment.xml
@@ -119,4 +119,12 @@
android:text="@string/set_as_default_launcher"
android:visibility="gone" />
+ <TextView
+ android:id="@+id/wallpaper"
+ style="@style/TextSmallLight"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="24dp"
+ android:text="Wallpaper" />
+
</LinearLayout> \ No newline at end of file