forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
@ -0,0 +1,165 @@
|
||||
package tech.kinc
|
||||
|
||||
import android.app.NativeActivity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.ApplicationInfo
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Message
|
||||
import android.os.Vibrator
|
||||
import android.os.VibrationEffect
|
||||
import android.os.Build
|
||||
import android.view.KeyEvent
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
class KincActivity: NativeActivity(), KeyEvent.Callback {
|
||||
companion object {
|
||||
var instance: KincActivity? = null
|
||||
|
||||
@JvmStatic
|
||||
fun showKeyboard() {
|
||||
instance!!.inputManager!!.showSoftInput(instance!!.window.decorView, 0)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun hideKeyboard() {
|
||||
instance!!.inputManager!!.hideSoftInputFromWindow(instance!!.window.decorView.windowToken, 0)
|
||||
instance!!.delayedHideSystemUI()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun loadURL(url: String) {
|
||||
val i = Intent(Intent.ACTION_VIEW, Uri.parse(url))
|
||||
instance!!.startActivity(i)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getLanguage(): String {
|
||||
return java.util.Locale.getDefault().language
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun vibrate(ms: Int) {
|
||||
val v: Vibrator = instance!!.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
v.vibrate(VibrationEffect.createOneShot(ms.toLong(), VibrationEffect.DEFAULT_AMPLITUDE))
|
||||
}
|
||||
else {
|
||||
// deprecated in API 26
|
||||
v.vibrate(ms.toLong())
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getRotation(): Int {
|
||||
val context: Context = instance!!.applicationContext
|
||||
val manager: WindowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
|
||||
return manager.defaultDisplay.rotation
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getScreenDpi(): Int {
|
||||
val context: Context = instance!!.applicationContext
|
||||
val manager: WindowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
|
||||
val metrics: android.util.DisplayMetrics = android.util.DisplayMetrics()
|
||||
manager.defaultDisplay.getMetrics(metrics)
|
||||
return metrics.xdpi.toInt()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getRefreshRate(): Int {
|
||||
val context: Context = instance!!.applicationContext
|
||||
val manager: WindowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
|
||||
return manager.defaultDisplay.refreshRate.toInt()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getDisplayWidth(): Int {
|
||||
val context: Context = instance!!.applicationContext
|
||||
val manager: WindowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
|
||||
val size: android.graphics.Point = android.graphics.Point()
|
||||
manager.defaultDisplay.getRealSize(size)
|
||||
return size.x
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getDisplayHeight(): Int {
|
||||
val context: Context = instance!!.applicationContext
|
||||
val manager: WindowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
|
||||
val size: android.graphics.Point = android.graphics.Point()
|
||||
manager.defaultDisplay.getRealSize(size)
|
||||
return size.y
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun stop() {
|
||||
instance!!.runOnUiThread {
|
||||
fun run() {
|
||||
instance!!.finish()
|
||||
exitProcess(0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MyHandler(private val kincActivity: KincActivity) : Handler() {
|
||||
override fun handleMessage(msg: Message) {
|
||||
kincActivity.hideSystemUI()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var inputManager: InputMethodManager? = null
|
||||
private var isDisabledStickyImmersiveMode = false
|
||||
|
||||
private val hideSystemUIHandler = MyHandler(this)
|
||||
|
||||
override fun onCreate(state: Bundle?) {
|
||||
super.onCreate(state)
|
||||
hideSystemUI()
|
||||
instance = this
|
||||
inputManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||
isDisabledStickyImmersiveMode = try {
|
||||
val ai: ApplicationInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
|
||||
val bundle: Bundle = ai.metaData
|
||||
bundle.getBoolean("disableStickyImmersiveMode")
|
||||
} catch (e: PackageManager.NameNotFoundException) {
|
||||
false
|
||||
} catch (e: NullPointerException) {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
private fun hideSystemUI() {
|
||||
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
||||
}
|
||||
|
||||
private fun delayedHideSystemUI() {
|
||||
hideSystemUIHandler.removeMessages(0)
|
||||
if (!isDisabledStickyImmersiveMode) {
|
||||
hideSystemUIHandler.sendEmptyMessageDelayed(0, 300)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onWindowFocusChanged(hasFocus: Boolean) {
|
||||
super.onWindowFocusChanged(hasFocus)
|
||||
if (hasFocus) {
|
||||
delayedHideSystemUI()
|
||||
}
|
||||
else {
|
||||
hideSystemUIHandler.removeMessages(0)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onKeyMultiple(keyCode: Int, count: Int, event: KeyEvent): Boolean {
|
||||
this.nativeKincKeyPress(event.characters)
|
||||
return false
|
||||
}
|
||||
|
||||
private external fun nativeKincKeyPress(chars: String)
|
||||
}
|
Reference in New Issue
Block a user