feat(app-glasses): жесты RayNeo SDK (TempleAction) + отключение звуков трекпада
Перенос из pair-view (проверено на железе): RayNeoARSDK V0.1.3 (aar в libs/, MercurySDK.init в GlassesApp), MainActivity → BaseEventActivity, templeActionViewModel.state → команды (Click=пауза/плей, SlideForward/ Backward=±30с), dispatchTouchEvent→onTouchEvent + toggleSoundEffect(0..3, false) — системные щелчки трекпада отключены. Фиксы по ходу (железо): - applyMediaCommand(msg, onDone) — sendPlaybackPositionNow после seekTo (иначе телефон получал позицию ДО seek) - догонка seekTo через 1с на телефоне (первый seekTo в ogg неточен) - playbackPosition: isPlaying → playWhenReady — ложное playing=false при буферизации после seekTo паузило звук на телефоне (~5с «пропажи»); pauseIfPlaying тоже по playWhenReady Тесты: glasses 59+5, phone 71. Железо: клик пауза/плей ✓, свайпы ±30с ✓, звук при seek не пропадает ✓ (подтверждено пользователем)
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package pw.binom.viewmate.glasses.gestures
|
||||
|
||||
import com.rayneo.arsdk.android.touch.TempleAction
|
||||
import pw.binom.viewmate.core.MediaCommand
|
||||
import pw.binom.viewmate.core.protocol.MediaCommandMsg
|
||||
|
||||
/**
|
||||
* Маппинг жестов SDK на команды просмотра (как пульт телефона).
|
||||
* DoubleClick/LongClick/TripleClick/MoveUp/ActionUp/Idle — резерв (null).
|
||||
*/
|
||||
fun templeActionToCommand(
|
||||
action: TempleAction,
|
||||
seekStepMs: Long = 30_000,
|
||||
): MediaCommandMsg? = when (action) {
|
||||
is TempleAction.Click -> MediaCommandMsg(MediaCommand.TOGGLE)
|
||||
is TempleAction.SlideForward -> MediaCommandMsg(MediaCommand.SEEK_FORWARD, seekStepMs)
|
||||
is TempleAction.SlideBackward -> MediaCommandMsg(MediaCommand.SEEK_BACKWARD, seekStepMs)
|
||||
else -> null
|
||||
}
|
||||
|
||||
/** Человекочитаемое имя жеста для логов (SDK actionName() — только для MotionEvent). */
|
||||
fun actionName(action: TempleAction): String = when (action) {
|
||||
is TempleAction.Click -> "Click"
|
||||
is TempleAction.DoubleClick -> "DoubleClick"
|
||||
is TempleAction.LongClick -> "LongClick"
|
||||
is TempleAction.TripleClick -> "TripleClick"
|
||||
is TempleAction.SlideForward -> "SlideForward"
|
||||
is TempleAction.SlideBackward -> "SlideBackward"
|
||||
is TempleAction.SlideContinuous -> "SlideContinuous"
|
||||
is TempleAction.MoveUp -> "MoveUp"
|
||||
is TempleAction.ActionUp -> "ActionUp"
|
||||
TempleAction.Idle -> "Idle"
|
||||
}
|
||||
Reference in New Issue
Block a user