[Pyto] Faites fonctionner le Taptic Engine de l'iPhone avec Python

introduction

Certains iPhones sont équipés d'un appareil appelé Taptic Engine. Il s'agit d'un appareil qui crée la sensation d'appuyer sur le bouton d'accueil au lieu d'être un bouton physique. Une sensation de clic se produit lorsque vous appuyez et maintenez autre chose que le bouton d'accueil ou lorsque le paiement est terminé.

J'ai essayé de faire fonctionner ce Taptic Engine en utilisant une application appelée Pyto.

environnement

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

Moteur Taptic et retour haptique

Je comprends que Taptic Engine est un appareil qui génère une sensation de clic, et cette sensation de clic s'appelle Haptic Feedback.

Types de rétroaction haptique

Il existe trois types de commentaires haptiques sur l'iPhone. Ici J'ai fait référence au site de [1]. Ici Il est également décrit en détail sur le site [2].

type une fonction
UIImpactFeedbackGenerator Réagissez une fois. 3 niveaux de force peuvent être sélectionnés
UISelectionFeedbackGenerator Pour la sélection UI. La réaction la plus faible
UINotificationFeedbackGenerator Pour notification de réussite ou d'échec. Il existe trois types

Comment écrire en Pyto

Vous pouvez utiliser ʻUIKit dans Pyto. C'est une fonction qui vous permet de toucher Objective-C, comme ʻobjc_util dans Pythonista. En fait, c'est une bibliothèque appelée rubicon-objc, et il semble qu'elle soit utilisée pour faire fonctionner Objective-C. Code source Pyto UIKit

Il semble que vous puissiez minimiser le délai en mettant prepare () avant d'appeler, mais c'est facultatif. Le sentiment que j'ai essayé ne faisait aucune différence avec ou sans lui. préparer la documentation

UIImpactFeedbackGenerator

Vous pouvez régler la force en 3 étapes. 0 est le plus faible.

import UIKit

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

power = 0  # 0~3 étapes de 2
generator.initWithStyle(power)  #Définir la force
generator.impactOccurred()  #Activer

UISelectionFeedbackGenerator La force ne peut pas être ajustée.

import UIKit

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

UINotificationFeedbackGenerator Vous pouvez choisir parmi 3 types de réactions. Succès (tonne ** tonne ) = 0, avertissement ( tonne tonne ) = 1, erreur ( tocoton **) = 2.

import UIKit

generator = UIKit.UINotificationFeedbackGenerator.alloc().init()
generator.prepare()
mode = 0  # 0~3 types de 2.
generator.notificationOccurred(mode)  #Activer

Programme pour essayer trois à la fois

Ceci est un code qui teste toutes les forces des trois types ci-dessus à la fois.

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")

en conclusion

Il m'a fallu un certain temps pour réaliser que je devais écrire .alloc (). Init ().

Site de référence

[1] https://qiita.com/WorldDownTown/items/2b5a72e41a95763727bb (Comment utiliser UIFeedbackGenerator et une bibliothèque pratique) [2] https://note.com/tdksk/n/nb4498e59dcad (micro-interaction efficace avec Haptic Feedback dans l'application iPhone) [3] https://qiita.com/griffin_stewie/items/298f57ca3f1714ebe45c (j'ai eu l'iPhone 7, j'ai donc immédiatement essayé l'API Taptic Engine) [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] Faites fonctionner le Taptic Engine de l'iPhone avec Python
Utiliser Kinesis avec Python
Faire fonctionner Blender avec Python
Utiliser Excel avec Python (1)
Utiliser Excel avec Python (2)
Exploitez Excel avec Python open pyxl
Exploitez TwitterBot avec Lambda, Python
[Note] Faites fonctionner MongoDB avec Python
[Python] [SQLite3] Exploiter SQLite avec Python (basique)
Les moteurs de recherche fonctionnent avec python
Faites fonctionner l'imprimante de reçus avec python
Essayez d'exploiter Facebook avec Python
Faites fonctionner les appareils électroménagers ECHONET Lite avec Python
Faire fonctionner l'alimentation smartlife avec python (de-IFTTT)
[GCP] Exploitez Google Cloud Storage avec Python
[Python] Utiliser automatiquement le navigateur avec Selenium
Faites fonctionner des appareils électroménagers avec Python et IRKit
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Jouez avec 2016-Python
Testé avec Python
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
PIL en Python sur Windows8 (pour Google App Engine)
Premiers pas avec Google App Engine pour Python et PHP
Comment faire fonctionner l'API Discord avec Python (enregistrement de bot)
[Automatisation] Utilisez GitLab avec Python pour faciliter la gestion des requêtes
Exploitons GPIO de Raspeye avec Python CGI
python + sélénium + safari-run iphone safari de mac avec webdriver
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Manipuler Redmine à l'aide de Python Redmine
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
Exploitez Filemaker depuis Python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
1.1 Premiers pas avec Python