OverviewPrzegląd

The Haptics module provides a simple, unified API for haptic feedback (vibrations) across all Android versions. It handles the complexity of different APIs and provides predefined patterns for common use cases. Moduł Haptics zapewnia prosty, zunifikowany API do wibracji haptic dla wszystkich wersji Androida. Obsługuje złożoność różnych API i udostępnia predefiniowane wzorce dla popularnych przypadków użycia.

Basic UsagePodstawowe użycie

// Simple vibration / Prosta wibracja
ADict.Haptics.vibrate(100) // 100ms

// With intensity / Z intensywnością
ADict.Haptics.vibrate(200, Haptics.Intensity.STRONG)

// Predefined feedback / Predefiniowany feedback
ADict.Haptics.click()
ADict.Haptics.success()
ADict.Haptics.error()
ADict.Haptics.warning()

Predefined PatternsPredefiniowane wzorce

MethodMetoda DescriptionOpis Use CaseZastosowanie
click() Light click feedbackLekkie kliknięcie Button tapsTapnięcia przycisków
doubleClick() Double tap feedbackPodwójne tapnięcie Double tap actionsAkcje podwójnego tapnięcia
tick() Very light tickBardzo lekkie tknięcie Scrolling, selectionsScrollowanie, zaznaczanie
success() Success patternWzorzec sukcesu Completed actionsUkończone akcje
error() Error patternWzorzec błędu Failed actionsNieudane akcje
warning() Warning patternWzorzec ostrzeżenia Alerts, warningsAlerty, ostrzeżenia
notification() Notification patternWzorzec powiadomienia New notificationsNowe powiadomienia
heartbeat() Heartbeat patternWzorzec bicia serca Timers, countdownsTimery, odliczanie
longPress() Long press feedbackFeedback długiego naciśnięcia Long press actionsAkcje długiego naciśnięcia

View ExtensionsRozszerzenia widoków

import rip.nerd.adictlibrary.modules.setOnClickWithHaptic
import rip.nerd.adictlibrary.modules.hapticClick

// Extension function for click with haptic
button.setOnClickWithHaptic {
    doSomething()
}

// Manual haptic on view
button.setOnClickListener { view ->
    view.hapticClick()
    doSomething()
}

// Long press with haptic
button.setOnLongClickWithHaptic {
    doLongPressAction()
    true
}

Custom PatternsWłasne wzorce

// Custom vibration pattern
// timings: [delay, vibrate, pause, vibrate, ...]
ADict.Haptics.pattern(
    timings = longArrayOf(0, 100, 50, 100, 50, 200),
    amplitudes = intArrayOf(0, 150, 0, 200, 0, 255) // API 26+
)

// Play predefined pattern enum
ADict.Haptics.play(Haptics.Pattern.HEARTBEAT)

System Effects (API 29+)Efekty systemowe (API 29+)

// Use system predefined effects for best quality
ADict.Haptics.systemClick()
ADict.Haptics.systemDoubleClick()
ADict.Haptics.systemHeavyClick()
ADict.Haptics.systemTick()

ConfigurationKonfiguracja

// Configure global settings / Konfiguracja globalna
ADict.Haptics.configure(
    enabled = true,
    defaultIntensity = Haptics.Intensity.MEDIUM
)

// Enable/disable haptics / Włącz/wyłącz
ADict.Haptics.setEnabled(false)

// Check if available / Sprawdź dostępność
if (ADict.Haptics.isAvailable()) {
    ADict.Haptics.click()
}

Intensity LevelsPoziomy intensywności

LevelPoziom AmplitudeAmplituda DescriptionOpis
LIGHT 50 Subtle feedbackSubtelny feedback
MEDIUM 128 Standard feedback (default)Standardowy feedback (domyślny)
STRONG 255 Strong feedbackSilny feedback

Integration with Other ModulesIntegracja z innymi modułami

// With Achievements / Z osiągnięciami
ADict.Achievements.unlock("first_win") { achievement ->
    ADict.Haptics.success()
    showAchievementPopup(achievement)
}

// With Timer / Z timerem
ADict.Timer.countdown("game", 10_000) {
    onTick = { remaining ->
        if (remaining <= 3000) {
            ADict.Haptics.tick()
        }
    }
    onFinish = {
        ADict.Haptics.notification()
    }
}

// With ReviewTrap / Z ReviewTrap
ADict.ReviewTrap.prompt(activity) { event ->
    when (event) {
        is ReviewTrap.Event.LikedYes -> ADict.Haptics.success()
        is ReviewTrap.Event.DislikedNo -> ADict.Haptics.error()
    }
}