| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package com.wasp.cardash_launcher
- import android.media.AudioManager
- import android.view.KeyEvent
- import io.flutter.embedding.android.FlutterActivity
- import io.flutter.embedding.engine.FlutterEngine
- class MainActivity : FlutterActivity() {
- private var launcherBridge: LauncherBridge? = null
- private var systemBridge: SystemBridge? = null
- override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
- super.configureFlutterEngine(flutterEngine)
- launcherBridge = LauncherBridge(this).also {
- it.attach(flutterEngine.dartExecutor.binaryMessenger)
- }
- systemBridge = SystemBridge(this).also {
- it.attach(flutterEngine.dartExecutor.binaryMessenger)
- }
- }
- /**
- * While the dashboard is visible, the hardware volume keys should change
- * the same media stream as the on-screen control. Without this, Android
- * falls back to the ring stream when nothing is playing and the dashboard
- * and the keys disagree.
- */
- override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
- if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
- adjustMediaVolume(if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) 1 else -1)
- return true
- }
- return super.onKeyDown(keyCode, event)
- }
- override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
- if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
- return true
- }
- return super.onKeyUp(keyCode, event)
- }
- private fun adjustMediaVolume(direction: Int) {
- try {
- val audio = getSystemService(AudioManager::class.java)
- audio.adjustStreamVolume(
- AudioManager.STREAM_MUSIC,
- if (direction > 0) AudioManager.ADJUST_RAISE else AudioManager.ADJUST_LOWER,
- 0,
- )
- } catch (_: Throwable) {
- // Never let a volume-key edge case take down the launcher.
- }
- }
- override fun onDestroy() {
- launcherBridge?.dispose()
- systemBridge?.dispose()
- launcherBridge = null
- systemBridge = null
- super.onDestroy()
- }
- }
|