Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megtudhatja, hogyan használhatja a tolleszközökről érkező haptikus visszajelzéseket, hogy természetesebb és tapinthatóbb interakciókat biztosítson a Windows App SDK alkalmazásban.
Windows 11 bevezettük a digitális tollakra vonatkozó haptikus visszajelzéseket, így a felhasználók érezhetik, hogy a tolluk interakcióba lép az alkalmazás felhasználói felületével. Amikor erre a funkcióra hivatkozunk, a haptic kifejezést használják a fejlesztői API-kban és a dokumentációban, míg a taktilis a felhasználók számára megjelenített elnevezés a Windows Beállításokban.
Fő API-k
- PenDevice
- SimpleHapticsController
- KnownSimpleHapticsControllerWaveforms
- PenDeviceInterop (Windows App SDK)
Az érintéses visszajelzés típusai
Kétféle haptikus visszajelzés érhető el:
- Szabadkézi visszajelzés – Az írási vagy rajzeszközök (toll, jelölő, ceruza, kiemelő) hangulatát szimulálja folyamatos rezgésekkel, miközben a toll megérinti a képernyőt.
- Interakciós visszajelzés – Rövid tapintható jelek felhasználói műveletekhez, például rámutatás egy gombra, kattintás vagy egy befejezett művelet megerősítése.
Stylusbemenet észlelése
Regisztráljon az PointerEntered eseményre, és ellenőrizze, hogy a mutatóeszköz típusa toll-e:
private void InputObserver_PointerEntered(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Pen)
{
return;
}
// Pen detected — check for haptic support.
}
A PenDevice beszerzése a Windows App SDK-ban
Egy Windows App SDK alkalmazásban használjon PenDeviceInterop egy Windows App SDK interop osztályt a WinRT-objektum PenDevice mutatópontról való lekéréséhez.
PenDevice, SimpleHapticsControllerés KnownSimpleHapticsControllerWaveforms WinRT-típusok a Windows.Devices.Input névterekbőlWindows.Devices.Haptics; csak az interop hívás maga a Windows App SDK névteréből Microsoft.UI.Input.Interop származik:
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).
}
Megjegyzés:
Az UWP-alkalmazásokban használja PenDevice.GetFromPointerId helyette. Az PenDeviceInterop osztály a Windows App SDK jellemző.
Tintázási hullámformák
A kézírási hullámformák folyamatosan láthatók, amíg a toll érintkezik a képernyővel. A szükséges hullámformákat minden haptikus toll támogatja.
| Hullámforma | Description | Kötelező |
|---|---|---|
| InkContinuous | Alapértelmezett golyóstollérzet. Tartalék megoldás nem támogatott hullámformákhoz. | Igen |
| BrushContinuous | Kefe eszköz | No |
| PencilContinuous | Ceruza eszköz | No |
| FolyamatosJelző | Jelölőeszköz | No |
| ChiselMarkerContinuous | Vésőjelölő / kiemelő | No |
| EraserContinuous | Radír eszköz | No |
| GalaxyPenContinuous | Speciális tinta (többszínű ecset) | No |
Interakciós hullámformák
Az interakciós hullámformák rövid, közvetlen visszajelzést nyújtanak a felhasználói felületi műveletekről.
| Hullámforma | Description | Kötelező |
|---|---|---|
| Kattints | Alapértelmezett rövid kattintás. Tartalék a nem támogatott interakciókhoz. | Igen |
| Error | A művelet meghiúsult vagy hiba történt | No |
| Rámutat | A kurzort egy interaktív elem fölé vitte | No |
| Sajtó | Interaktív elem lenyomása | No |
| Release | Interaktív elem kiadása | No |
| Success | A művelet sikeres volt | No |
| BuzzContinuous | Folyamatos zümmögés | No |
| RumbleContinuous | Folyamatos dübörgés | No |
Tapintásos visszajelzés küldése
SupportedFeedback végigiterálásával keresse meg a kívánt hullámformát, majd hívja meg a(z) SendHapticFeedback függvényt:
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);
}
Haptikus visszajelzés leállítása
Mindig állítsa le a haptikus visszajelzést, amikor a mutató kilép az elemből. Regisztráljon PointerExited ugyanarra az elemre:
private void Canvas_PointerExited(object sender, PointerRoutedEventArgs e)
{
hapticsController?.StopFeedback();
}
Megjegyzés:
Egyes tollak automatikusan leállítják a haptikus visszajelzést, amikor elhagyják a képernyőt. Azonban nem minden toll teszi ezt, ezért mindig hívja StopFeedback explicit módon.
Haptic-visszajelzés testreszabása
Egyes tollak további testreszabási lehetőségeket is kínálnak. Használat előtt ellenőrizze a támogatási szolgálatot:
| Property | Támogatás ellenőrzése ezzel |
|---|---|
| Intenzitás | IsIntensitySupported |
| Lejátszások száma | IsPlayCountSupported |
| Lejátszási időtartam | IsPlayDurationSupported |
| Visszajátszási szünet időköze | IsReplayPauseIntervalSupported |
if (hapticsController.IsIntensitySupported)
{
hapticsController.SendHapticFeedback(currentWaveform, 0.75); // 75% intensity
}
Kapcsolódó cikkek
Windows developer