2 changed files with 62 additions and 28 deletions
@ -0,0 +1,61 @@ |
|||
/* |
|||
* ************************************************************************ |
|||
* DefaultTvActivity.kt |
|||
* ************************************************************************* |
|||
* Copyright © 2025 VLC authors and VideoLAN |
|||
* Author: Nicolas POMEPUY |
|||
* This program 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 2 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program 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. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program; if not, write to the Free Software |
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. |
|||
* ************************************************************************** |
|||
* |
|||
* |
|||
*/ |
|||
|
|||
package org.videolan.television.ui |
|||
|
|||
import android.os.Bundle |
|||
import android.os.PersistableBundle |
|||
import android.view.KeyEvent |
|||
import androidx.appcompat.app.AppCompatActivity |
|||
import org.videolan.television.util.EventThrottler |
|||
|
|||
open class DefaultTvActivity : AppCompatActivity() { |
|||
private val horizontalThrottler = EventThrottler(75L) |
|||
private val verticalThrottler = EventThrottler(100L) |
|||
private val selectThrottler = EventThrottler(500L) |
|||
|
|||
override fun dispatchKeyEvent(event: KeyEvent): Boolean { |
|||
if (event.action != KeyEvent.ACTION_DOWN) return super.dispatchKeyEvent(event) |
|||
|
|||
val isThrottled = when (event.keyCode) { |
|||
KeyEvent.KEYCODE_DPAD_LEFT, |
|||
KeyEvent.KEYCODE_DPAD_RIGHT -> { |
|||
horizontalThrottler.throttleEvent() |
|||
} |
|||
|
|||
KeyEvent.KEYCODE_DPAD_UP, |
|||
KeyEvent.KEYCODE_DPAD_DOWN -> { |
|||
verticalThrottler.throttleEvent() |
|||
} |
|||
|
|||
KeyEvent.KEYCODE_DPAD_CENTER -> { |
|||
selectThrottler.throttleEvent() |
|||
} |
|||
|
|||
else -> false |
|||
} |
|||
|
|||
return isThrottled || super.dispatchKeyEvent(event) |
|||
} |
|||
} |
|||
Loading…
Reference in new issue