Neigung des iPhones

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.3.2023 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Neigung des iPhones

    Neu

    Hallo,

    ich hab schon wieder ein Problem.
    Ich will analog zu "Pokemon GO" den Inhalt der App ausblenden, wenn das Geräte einen bestimmten Neigungswinkel erreicht hat.
    z.B. wenn es liegt oder kopfüber um den Hals hängt.

    Ich habe mich dem Thema mit dem CMMotionManager genähert. Ich habe hier mein Code mit acceleration, rotationRate und magneticField habe ich auch schon versucht:

    Quellcode

    1. import SwiftUI
    2. import CoreMotion
    3. class Inclinometer: ObservableObject {
    4. private var motionManager: CMMotionManager
    5. @Published var x: Double = 0.0
    6. @Published var y: Double = 0.0
    7. @Published var z: Double = 0.0
    8. init() {
    9. motionManager = CMMotionManager()
    10. motionManager.accelerometerUpdateInterval = 0.5
    11. motionManager.startAccelerometerUpdates(to: .main) { (data, error) in
    12. guard error == nil else {
    13. print(error!)
    14. return
    15. }
    16. if let data {
    17. self.x = data.acceleration.x
    18. self.y = data.acceleration.y
    19. self.z = data.acceleration.z
    20. }
    21. }
    22. }
    23. }
    Alles anzeigen
    Mein Ergebnis bleibt aber immer das gleich, wenn das Gerät auf dem Kopf steht, wir der gleich Z-Wert geliefert, wie wenn es korrekt gehalten wird.
    Wie kann ich nun feststellen, wann das Gerät verkehrtherum gehalten wird?

    Ich hoffe Ihr habt noch eine Idee.
  • Neu

    Heruhaundo schrieb:


    Mein Ergebnis bleibt aber immer das gleich, wenn das Gerät auf dem Kopf steht, wir der gleich Z-Wert geliefert, wie wenn es korrekt gehalten wird.
    Wie kann ich nun feststellen, wann das Gerät verkehrtherum gehalten wird?
    Hast du dir mal die einzelnen Neigungs - / Drehungswerte ausgeben lassen um nachzuvollziehen wie das iPhone die Neigung auswertet?

    Das iPhone wird wohl bei +/- 0 in der Neigung starten.
    Wie kannst du jetzt auswerten, dass der Neigungswinkel auf dem Kopf steht? Naja, du verfolgst die Neigungsbewegung bis zu Winkel -180 (oder -170 / -160). Und sobald du diesen Winkel erreicht hast, blendest du den Inhalt aus / cancelst den Inhalt.

    Wie genau das funktioniert kann ich dir nicht sagen - die Doku hilft dir aber sicherlich weiter.
    CMMotionManager Doku
    ''Ich stelle immer Getränke auf meinen PC, da ist noch nie etwas passiert..''
    - 'Aber.. dieses mal ist es dir doch in den Lüfter gelaufen?!'
    ''Ja, aber sonst nicht''
    8| :thumbsup:
  • Neu

    Du wertest aktuell auch die acceleration aus, also die Beschleunigung des Geräts... Du willst ja aber eigentlich nciht die Beschleunigung, sondern die Rotation haben.

    Da verweise ich gerne auf die CMMotionManager Doku, die sagt..


    Apple schrieb:


    Use a CMMotionManager object to start the services that report movement detected by the device's onboard sensors. Use this object to receive four types of motion data:
    • Accelerometer data, indicating the instantaneous acceleration of the device in three dimensional space.
    • Gyroscope data, indicating the instantaneous rotation around the device's three primary axes.
    • Magnetometer data, indicating the device's orientation relative to Earth's magnetic field.
    • Device-motion data, indicating key motion-related attributes such as the device's user-initiated acceleration, its attitude, rotation rates, orientation relative to calibrated magnetic fields, and orientation relative to gravity. This data is provided by Core Motion’s sensor fusion algorithms.

    ''Ich stelle immer Getränke auf meinen PC, da ist noch nie etwas passiert..''
    - 'Aber.. dieses mal ist es dir doch in den Lüfter gelaufen?!'
    ''Ja, aber sonst nicht''
    8| :thumbsup: