Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Naučte se používat haptickou zpětnou vazbu u digitálních per k vytvoření přirozenějších a taktilnějších interakcí ve své aplikaci Windows App SDK.
Windows 11 zavedli haptickou zpětnou vazbu pro digitální pera, aby uživatelé cítili, že jejich pero komunikuje s uživatelským rozhraním aplikace. Při odkazování na tuto funkci se v rozhraních API pro vývojáře a v dokumentaci používá označení haptický, zatímco taktilní je název určený pro uživatele, který se zobrazuje v Nastavení Windows.
Klíčová rozhraní API
- PenDevice
- SimpleHapticsController
- KnownSimpleHapticsControllerWaveforms
- PenDeviceInterop (Windows App SDK)
Typy haptické zpětné vazby
K dispozici jsou dva typy haptické zpětné vazby:
- Rukopisná zpětná vazba – Simuluje pocit psaní nebo kreslicích nástrojů (pero, značka, tužka, zvýrazňovač) průběžnými kmitáními, zatímco se pero dotkne obrazovky.
- Zpětná vazba při interakci — Krátké hmatové signály při akcích uživatele, jako je najetí myší na tlačítko, kliknutí nebo potvrzení dokončení akce.
Detekce vstupu pera
Zaregistrujte událost PointerEntered a zkontrolujte, jestli je typ zařízení ukazatele perem:
private void InputObserver_PointerEntered(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Pen)
{
return;
}
// Pen detected — check for haptic support.
}
Získání PenDevice v Windows App SDK
V aplikaci Windows App SDK použijte PenDeviceInterop — třídu interoperability Windows App SDK — k získání objektu WinRT PenDevice z bodu ukázání.
PenDevice, SimpleHapticsController a KnownSimpleHapticsControllerWaveforms jsou typy WinRT z oborů názvů Windows.Devices.Input a Windows.Devices.Haptics; pouze samotné volání interoperability pochází z oboru názvů Microsoft.UI.Input.Interop sady Windows App SDK:
using Microsoft.UI.Input.Interop;
using Windows.Devices.Haptics;
using Windows.Devices.Input;
using Windows.Foundation.Metadata;
private void InputObserver_PointerEntered(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Pen)
{
return;
}
var penDevice = PenDeviceInterop.FromPointerPoint(e.GetCurrentPoint(null));
if (penDevice == null)
{
return; // Pen does not support advanced features.
}
// SimpleHapticsController requires Windows 11. Check for API presence
// before accessing it so the app doesn't throw on Windows 10.
if (!ApiInformation.IsPropertyPresent(
"Windows.Devices.Input.PenDevice", "SimpleHapticsController"))
{
return; // Haptic feedback requires Windows 11.
}
var hapticsController = penDevice.SimpleHapticsController;
if (hapticsController == null)
{
return; // Pen does not support haptic feedback.
}
// Configure haptic feedback (see examples below).
}
Poznámka:
V aplikacích pro UPW použijte PenDevice.GetFromPointerId místo toho. Třída PenDeviceInterop je specifická pro Windows App SDK.
Inkovací vlnové tvary
Vlnové průběhy rukopisu probíhají nepřetržitě, když je pero v kontaktu s obrazovkou. Podpora požadovaných vlnových tvarů je zaručena u každého haptického pera.
| Tvar vlny | Description | Povinné |
|---|---|---|
| InkNepřetržitě | Výchozí pocit z kuličkového pera. Náhradní pro nepodporované vlnové tvary. | Ano |
| BrushContinuous | Nástroj štětec | Ne |
| PencilContinuous | Nástroj tužka | Ne |
| Nepřetržitý značkovač | Nástroj značky | Ne |
| ChiselMarkerContinuous | Značka chiselu / zvýrazňovač | Ne |
| Guma nepřetržitá | Nástroj Guma | Ne |
| GalaxyPenContinuous | Speciální inkoust (vícebarevný štětec) | Ne |
Vlnové tvary interakce
Vlnové křivky interakce poskytují krátkou přímou zpětnou vazbu pro akce uživatelského rozhraní.
| Tvar vlny | Description | Povinné |
|---|---|---|
| Klikněte | Výchozí krátké kliknutí Náhradní řešení pro nepodporované interakce | Ano |
| Error | Akce selhala nebo došlo k chybě | Ne |
| Vznášet | Začínáme najetím myší na interaktivní prvek | Ne |
| Stiskněte | Stisknutí interaktivního prvku | Ne |
| Release | Byl vydán interaktivní prvek | Ne |
| Success | Akce byla úspěšná. | Ne |
| BuzzContinuous | Nepřetržité bzučení | Ne |
| RumbleContinuous | Nepřetržité dunění | Ne |
Odeslání haptické zpětné vazby
Projděte SupportedFeedback, vyhledejte požadovaný vlnový tvar a poté zavolejte SendHapticFeedback:
SimpleHapticsControllerFeedback currentWaveform = null;
// Try to use BrushContinuous, fall back to InkContinuous.
foreach (var waveform in hapticsController.SupportedFeedback)
{
if (waveform.Waveform == KnownSimpleHapticsControllerWaveforms.BrushContinuous)
{
currentWaveform = waveform;
break;
}
}
if (currentWaveform == null)
{
foreach (var waveform in hapticsController.SupportedFeedback)
{
if (waveform.Waveform == KnownSimpleHapticsControllerWaveforms.InkContinuous)
{
currentWaveform = waveform;
break;
}
}
}
if (currentWaveform != null)
{
hapticsController.SendHapticFeedback(currentWaveform);
}
Zastavení haptické zpětné vazby
Vždy zastavte haptickou zpětnou vazbu, když ukazatel opustí prvek. Zaregistrujte pro PointerExited na stejném prvku:
private void Canvas_PointerExited(object sender, PointerRoutedEventArgs e)
{
hapticsController?.StopFeedback();
}
Poznámka:
Některá pera automaticky zastaví haptickou odezvu, když se pero přestane dotýkat obrazovky. Ale ne všechna pera to dělají, takže vždy volejte StopFeedback explicitně.
Přizpůsobení haptické zpětné vazby
Některá pera podporují další přizpůsobení. Než ji začnete používat, zkontrolujte podporu:
| Vlastnictví | Zkontrolujte podporu pomocí |
|---|---|
| Intenzita | IsIntensitySupported |
| Počet přehrávání | IsPlayCountSupported |
| Doba přehrávání | IsPlayDurationSupported |
| Interval pauzy opakování | IsReplayPauseIntervalSupported |
if (hapticsController.IsIntensitySupported)
{
hapticsController.SendHapticFeedback(currentWaveform, 0.75); // 75% intensity
}
Související články
Windows developer