Höhepunkt mit Developer Vibrator

Ja Beate Uhse geht es schlecht und Online Shops wie Amoreli oder Eis sprießen aus dem Internet. Da wird es doch Zeit für eine App um mit Vibrationen stimulierend zu wirken. Das Device ist ein Wearable mit Windows IoT. Programmierbar mit UWP. Wenn wer noch ein WIndows mobile 10 Handy in der Schublade liegen haben sollte, lässt sich der Vibrator in der passenden API aktivieren. Um den Code Fehlerfrei in anderen Umgebungen zb auf dem Desktop auszuführen kann man den ApiContract auch abprüfen.

   1:   if (ApiInformation.IsApiContractPresent("Windows.Phone.PhoneContract", 1))
   2:                  Windows.Phone.Devices.Notification.VibrationDevice.GetDefault().
Vibrate(TimeSpan.FromSeconds(1));

 

Nicht nur das das UWP Projekt in Visual Studio als Compiler Target den passenden Build Target aufweisen, es braucht auch noch die API als Verweise

image

Wie man unschwer erkennen kann gibt es reichlich API Levels. Das Wearable Device ist leider erst auf dem Creators Update 15063.  Das reicht aber für unsere Zwecke. Die IoT Extensions beiten dafür einen Haptics Namensraum. Diese Vibrator Api scheint wesentlich mehr zu können.

Provides support for basic, non-directional haptic feedback such as clicks, buzzes, and rumbles that can be tuned through characteristics such as intensity and timing.

Ich denke das zielt auf Kontroller und Force Feedback. Aber auch das Surface Dial unterstützt haptisches Feedback. Darüber bin ich erst überhaupt auf die API gestoßen.

Ganz ohne Manifest per Code wird der Zugriff eingefordert und dann eine Instanz auf ein oder mehrere Vibrations Devices zugewiesen.

 

   1:   if (await VibrationDevice.RequestAccessAsync() != VibrationAccessStatus.Allowed)
   2:              {
   3:                  
   4:              }
   5:   vib = await VibrationDevice.GetDefaultAsync();

 

Soweit ganz easy. Etwas komplizierter wird es, wenn man die Vibrationsfähigkeiten einfordert. Es scheint verschiedenen Frequenzen geben, die mit for each durchlaufen werden. Meine Smartwatch kann nur eines und der Debugger meint Bufffeedback ist 4100, was die Frequenz sein könnte.

   1:   SimpleHapticsControllerFeedback BuzzFeedback = null;
   2:  foreach (var f in vib.SimpleHapticsController.SupportedFeedback)
   3:     {
   4:     if (f.Waveform == KnownSimpleHapticsControllerWaveforms.BuzzContinuous)
   5:         BuzzFeedback = f;
   6:     }
   7:     if (BuzzFeedback != null)
   8:       {
   9:         vib.SimpleHapticsController.SendHapticFeedbackForDuration(BuzzFeedback, 1, TimeSpan.FromMilliseconds(200));
  10:     }

Bin gespannt ob dieses Wissen außer mir noch wer benötigt. Die Dokumentation war jedenfalls unterirdisch und quasi nichts zu finden im Internet.

Kommentare sind geschlossen