Improve Application Choosing

This commit is contained in:
Finn M Glas 2020-05-15 07:56:25 +02:00
parent 20f2c6ccab
commit e2915dcfe7
2 changed files with 60 additions and 39 deletions

View file

@ -13,7 +13,21 @@ import kotlinx.android.synthetic.main.activity_choose.*
class ChooseActivity : AppCompatActivity() { class ChooseActivity : AppCompatActivity() {
private fun listApps() { @SuppressLint("SetTextI18n") // I do not care
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
setContentView(R.layout.activity_choose)
val bundle = intent.extras
val action = bundle!!.getString("action") // why choose an app
val forApp = bundle.getString("forApp") // which app we choose
// Build Layout
val mainIntent = Intent(Intent.ACTION_MAIN, null) val mainIntent = Intent(Intent.ACTION_MAIN, null)
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER) mainIntent.addCategory(Intent.CATEGORY_LAUNCHER)
@ -47,20 +61,25 @@ class ChooseActivity : AppCompatActivity() {
tvdynamic.text = app.loadLabel(pm).toString() tvdynamic.text = app.loadLabel(pm).toString()
tvdynamic.setTextColor(Color.parseColor("#cccccc")) tvdynamic.setTextColor(Color.parseColor("#cccccc"))
tvdynamic.setOnClickListener { startActivity(pm.getLaunchIntentForPackage(app.packageName)) } if (action == "run"){
tvdynamic.setOnClickListener { startActivity(pm.getLaunchIntentForPackage(app.packageName)) }
}
else if (action == "pick"){
tvdynamic.setOnClickListener {
val returnIntent = Intent()
returnIntent.putExtra("value", app.packageName)
returnIntent.putExtra("forApp", forApp)
setResult(
5000,
returnIntent
)
finish()
}
}
apps_list.addView(tvdynamic) apps_list.addView(tvdynamic)
} }
} }
@SuppressLint("SetTextI18n") // I do not care
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
setContentView(R.layout.activity_choose)
listApps()
}
} }

View file

@ -2,24 +2,28 @@ package com.finnmglas.launcher
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.content.pm.ResolveInfo
import android.os.Bundle import android.os.Bundle
import android.os.CountDownTimer
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.view.KeyEvent import android.view.KeyEvent
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.MotionEventCompat import androidx.core.view.MotionEventCompat
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
import kotlin.math.abs
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
import kotlin.concurrent.fixedRateTimer import kotlin.concurrent.fixedRateTimer
import kotlin.math.abs
var upApp = "org.mozilla.firefox"
var downApp = "com.samsung.android.app.galaxyfinder"
var rightApp = "com.samsung.android.email.provider"
var leftApp = "com.google.android.calendar"
var volumeUpApp = "com.whatsapp"
var volumeDownApp = "com.sec.android.app.popupcalculator"
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
// get device dimensions // get device dimensions
@ -50,30 +54,22 @@ class MainActivity : AppCompatActivity() {
} }
} }
fun launchInstagram(v: View){ launchApp("com.instagram.android") }
fun launchWhatsapp(v: View){ launchApp("com.whatsapp") }
fun launchFinder(v: View){ launchApp("com.samsung.android.app.galaxyfinder") }
fun launchMail(v: View){ launchApp("com.samsung.android.email.provider", "com.google.android.gm") }
fun launchCalendar(v: View){ launchApp("com.google.android.calendar", "com.samsung.android.calendar") } fun launchCalendar(v: View){ launchApp("com.google.android.calendar", "com.samsung.android.calendar") }
fun launchClock(v: View){ launchApp("com.sec.android.app.clockpackage") } fun launchClock(v: View){ launchApp("com.sec.android.app.clockpackage") }
fun launchBrowser(v: View){ launchApp("org.mozilla.firefox", "com.sec.android.app.sbrowser") }
fun launchUpApp() { launchBrowser(container) } fun launchUpApp() { launchApp(upApp) }
fun launchDownApp() { launchFinder(container) } fun launchDownApp() { launchApp(downApp) }
fun lauchLeftApp() { launchCalendar(container) } fun lauchLeftApp() { launchApp(leftApp) }
fun lauchRightApp() { launchMail(container) } fun lauchRightApp() { launchApp(rightApp) }
fun lauchVolumeUpApp() { } fun lauchVolumeUpApp() { launchApp(volumeUpApp) }
fun lauchVolumeDownApp() { fun lauchVolumeDownApp() { launchApp(volumeDownApp) }
val intent = Intent(this, ChooseActivity::class.java)
startActivity(intent)
}
// Overrides /* Overrides */
var touchX : Float = 0F var touchX : Float = 0F
var touchY : Float = 0F var touchY : Float = 0F
var touchT : Long = 0L
override fun onTouchEvent(event: MotionEvent): Boolean { override fun onTouchEvent(event: MotionEvent): Boolean {
@ -81,6 +77,8 @@ class MainActivity : AppCompatActivity() {
MotionEvent.ACTION_DOWN -> { MotionEvent.ACTION_DOWN -> {
touchX = event.x touchX = event.x
touchY = event.y touchY = event.y
touchT = System.currentTimeMillis()
true true
} }
MotionEvent.ACTION_MOVE -> { MotionEvent.ACTION_MOVE -> {
@ -94,15 +92,17 @@ class MainActivity : AppCompatActivity() {
val diffX = touchX - event.x val diffX = touchX - event.x
val diffY = touchY - event.y val diffY = touchY - event.y
val diffT = System.currentTimeMillis() - touchT
val strictness = 4 // of direction val strictness = 4 // of direction
// Decide which one to open /* Decide for an action */
if (diffY > height/8 if (diffY > height/8
&& abs(diffY) > strictness * abs(diffX)) && abs(diffY) > strictness * abs(diffX))
launchUpApp() launchUpApp()
// Only open if the swipe was not from the phone edge
else if (diffY < -height/8 else if (diffY < -height/8
&& abs(diffY) > strictness * abs(diffX) && abs(diffY) > strictness * abs(diffX)
&& touchY > 100) && touchY > 100)
@ -116,6 +116,12 @@ class MainActivity : AppCompatActivity() {
&& abs(diffX) > strictness * abs(diffY)) && abs(diffX) > strictness * abs(diffY))
lauchRightApp() lauchRightApp()
// Open Settings on LongPress
else if (abs(diffX) < 10
&& abs(diffX) < 10 && diffT > 750){
startActivity(Intent(this, SettingsActivity::class.java))
}
true true
} }
MotionEvent.ACTION_CANCEL -> { MotionEvent.ACTION_CANCEL -> {
@ -129,7 +135,7 @@ class MainActivity : AppCompatActivity() {
} }
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) { return true } if (keyCode == KeyEvent.KEYCODE_BACK) return true
else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) lauchVolumeUpApp() else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) lauchVolumeUpApp()
else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) lauchVolumeDownApp() else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) lauchVolumeDownApp()
return true return true
@ -145,9 +151,6 @@ class MainActivity : AppCompatActivity() {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
val timeFormat = SimpleDateFormat("HH:mm:ss", Locale.getDefault()) val timeFormat = SimpleDateFormat("HH:mm:ss", Locale.getDefault())
//dateFormat.timeZone = TimeZone.getTimeZone("GMT")
//timeFormat.timeZone = TimeZone.getTimeZone("GMT")
fixedRateTimer("timer", false, 0L, 1000) { fixedRateTimer("timer", false, 0L, 1000) {
this@MainActivity.runOnUiThread { this@MainActivity.runOnUiThread {
dateView.text = dateFormat.format(Date()) dateView.text = dateFormat.format(Date())
@ -156,6 +159,5 @@ class MainActivity : AppCompatActivity() {
} }
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
} }
} }