mirror of
https://github.com/markqvist/Sideband.git
synced 2024-12-14 18:34:33 -05:00
56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
|
'''
|
||
|
iOS Gyroscope
|
||
|
---------------------
|
||
|
'''
|
||
|
|
||
|
from plyer.facades import Gyroscope
|
||
|
from pyobjus import autoclass
|
||
|
|
||
|
from pyobjus.dylib_manager import load_framework
|
||
|
|
||
|
load_framework('/System/Library/Frameworks/UIKit.framework')
|
||
|
UIDevice = autoclass('UIDevice')
|
||
|
|
||
|
device = UIDevice.currentDevice()
|
||
|
|
||
|
|
||
|
class IosGyroscope(Gyroscope):
|
||
|
|
||
|
def __init__(self):
|
||
|
super().__init__()
|
||
|
self.bridge = autoclass('bridge').alloc().init()
|
||
|
|
||
|
if int(device.systemVersion.UTF8String().split('.')[0]) <= 4:
|
||
|
self.bridge.motionManager.setGyroscopeUpdateInterval_(0.1)
|
||
|
else:
|
||
|
self.bridge.motionManager.setGyroUpdateInterval_(0.1)
|
||
|
|
||
|
self.bridge.motionManager.setDeviceMotionUpdateInterval_(0.1)
|
||
|
|
||
|
def _enable(self):
|
||
|
self.bridge.startGyroscope()
|
||
|
self.bridge.startDeviceMotion()
|
||
|
|
||
|
def _disable(self):
|
||
|
self.bridge.stopGyroscope()
|
||
|
self.bridge.stopDeviceMotion()
|
||
|
|
||
|
def _get_orientation(self):
|
||
|
return (
|
||
|
self.bridge.rotation_rate_x,
|
||
|
self.bridge.rotation_rate_y,
|
||
|
self.bridge.rotation_rate_z)
|
||
|
|
||
|
def _get_rotation_uncalib(self):
|
||
|
return (
|
||
|
self.bridge.gy_x,
|
||
|
self.bridge.gy_y,
|
||
|
self.bridge.gy_z,
|
||
|
self.bridge.gy_x - self.bridge.rotation_rate_x,
|
||
|
self.bridge.gy_y - self.bridge.rotation_rate_y,
|
||
|
self.bridge.gy_z - self.bridge.rotation_rate_z)
|
||
|
|
||
|
|
||
|
def instance():
|
||
|
return IosGyroscope()
|