[Pyto] Betreibe die Taptic Engine des iPhone mit Python

Einführung

Einige iPhones sind mit einem Gerät namens Taptic Engine ausgestattet. Dies ist ein Gerät, das das Gefühl erzeugt, die Home-Taste zu drücken, anstatt eine physische Taste zu sein. Ein Klickgefühl tritt auf, wenn Sie etwas anderes als die Home-Taste gedrückt halten oder wenn die Zahlung abgeschlossen ist.

Ich habe versucht, diese Taptic Engine mit einer App namens Pyto zu betreiben.

Umgebung

iPhone SE (2020)(iOS13.4.1) Pyto(11.9)

Taptic Engine und Haptic Feedback

Ich verstehe, dass Taptic Engine ein Gerät ist, das ein Klickgefühl erzeugt, und dieses Klickgefühl wird als haptisches Feedback bezeichnet.

Arten von haptischem Feedback

Es gibt drei Arten von haptischem Feedback auf dem iPhone. Hier Ich habe auf die Website von [1] verwiesen. Hier Es wird auch auf der Website [2] ausführlich beschrieben.

Art Funktion
UIImpactFeedbackGenerator Einmal reagieren. Es können 3 Stärkestufen ausgewählt werden
UISelectionFeedbackGenerator Zur Auswahl der Benutzeroberfläche. Die schwächste Reaktion
UINotificationFeedbackGenerator Zur Benachrichtigung über Erfolg oder Misserfolg. Es gibt drei Arten

Wie man in Pyto schreibt

Sie können UIKit mit Pyto verwenden. Dies ist eine Funktion, mit der Sie Objective-C berühren können, z. B. "objc_util" in Pythonista. Tatsächlich handelt es sich um eine Bibliothek namens "rubicon-objc", und es scheint, dass dies zur Bedienung von Objective-C verwendet wird. Pyto UIKit-Quellcode

Es scheint, dass Sie die Verzögerung minimieren können, indem Sie vor dem Aufruf prepare () setzen, dies ist jedoch optional. So wie ich es ausprobiert habe, konnte ich den Unterschied mit oder ohne nicht erkennen. Dokumentation vorbereiten

UIImpactFeedbackGenerator

Sie können die Stärke in 3 Schritten einstellen. 0 ist die schwächste.

import UIKit

generator = UIKit.UIImpactFeedbackGenerator.alloc().init()
generator.prepare()

power = 0  # 0~3 Stufen von 2
generator.initWithStyle(power)  #Stärke einstellen
generator.impactOccurred()  #aktivieren Sie

UISelectionFeedbackGenerator Die Stärke kann nicht eingestellt werden.

import UIKit

generator = UIKit.UISelectionFeedbackGenerator.alloc().init()
generator.prepare()
generator.selectionChanged()  #aktivieren Sie

UINotificationFeedbackGenerator Sie können aus 3 Arten von Reaktionen wählen. Erfolg (Tonne ** Tonne ) = 0, Warnung ( Tonne Tonne ) = 1, Fehler ( tocoton **) = 2.

import UIKit

generator = UIKit.UINotificationFeedbackGenerator.alloc().init()
generator.prepare()
mode = 0  # 0~3 Arten von 2.
generator.notificationOccurred(mode)  #aktivieren Sie

Programm, um 3 auf einmal zu versuchen

Dies ist ein Code, der alle Stärken der oben genannten drei Typen gleichzeitig testet.

import UIKit
import time

generator = UIKit.UIImpactFeedbackGenerator.alloc().init()
generator2 = UIKit.UISelectionFeedbackGenerator.alloc().init()
generator3 = UIKit.UINotificationFeedbackGenerator.alloc().init()

print("impact start")
generator.prepare()
for i in range(3):
    print(f"-{i}")
    for j in range(3):
        generator.initWithStyle(i)
        generator.impactOccurred()
        time.sleep(0.3)
print("finished")
time.sleep(1)

print("selection start")
generator2.prepare()
for i in range(10):
    generator2.selectionChanged()
    time.sleep(0.1)
print("finished")
time.sleep(1)

print("notification start")
generator3.prepare()
for i in range(3):
    print(f"-{i}")
    generator3.notificationOccurred(i)
    time.sleep(1)
print("finished")

abschließend

Es dauerte einige Zeit, bis mir klar wurde, dass ich .alloc (). Init () schreiben sollte.

Referenzseite

[1] https://qiita.com/WorldDownTown/items/2b5a72e41a95763727bb (Verwendung von UIFeedbackGenerator und einer praktischen Bibliothek) [2] https://note.com/tdksk/n/nb4498e59dcad (Effektive Mikrointeraktion mit haptischem Feedback in der iPhone-App) [3] https://qiita.com/griffin_stewie/items/298f57ca3f1714ebe45c (Ich habe das iPhone 7 erhalten und habe sofort die Taptic Engine-API ausprobiert.) [4] https://developer.apple.com/documentation/uikit/uifeedbackgenerator?language=objc#2555399 (UIFeedbackGenerator) [5] https://rubicon-objc.readthedocs.io/en/latest/tutorial/tutorial-2.html (Rubicon Tutorial 2)

Recommended Posts

[Pyto] Betreibe die Taptic Engine des iPhone mit Python
Kinesis mit Python betreiben
Betreiben Sie Blender mit Python
Betreiben Sie Excel mit Python (1)
Betreiben Sie Excel mit Python (2)
Betreiben Sie Excel mit Python Open Pyxl
Betreiben Sie TwitterBot mit Lambda, Python
[Hinweis] Betreiben Sie MongoDB mit Python
[Python] [SQLite3] Betreiben Sie SQLite mit Python (Basic)
Suchmaschinen arbeiten mit Python
Bedienen Sie den Belegdrucker mit Python
Versuchen Sie, Facebook mit Python zu betreiben
Betreiben Sie ECHONET Lite-Haushaltsgeräte mit Python
Betreiben Sie das Smartlife-Netzteil mit Python (de-IFTTT).
[GCP] Betreiben Sie Google Cloud Storage mit Python
[Python] Betreiben Sie den Browser automatisch mit Selenium
Betreiben Sie Haushaltsgeräte mit Python und IRKit
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
Spielen Sie mit 2016-Python
Getestet mit Python
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
PIL in Python unter Windows8 (für Google App Engine)
Erste Schritte mit Google App Engine für Python und PHP
So bedienen Sie die Discord API mit Python (Bot-Registrierung)
[Automatisierung] Betreiben Sie GitLab mit Python, um die Verwaltung von Anfragen zu vereinfachen
Lassen Sie uns GPIO von Raspeye mit Python CGI betreiben
Python + Selen + Safari - Führen Sie die iPhone Safari vom Mac mit dem Webdriver aus
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Bearbeiten Sie Redmine mit Python Redmine
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
Bedienen Sie Filemaker von Python aus
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
1.1 Erste Schritte mit Python