web-dev-qa-db-ja.com

Apple Watchから加速度計にアクセスする方法はありますか?

本日リリースされたWatchKitにそのようなAPIが含まれているようには見えません。

18

いいえ。Apple時計センサー(加速度計を含む)に直接アクセスすることはできません。

いつものように、これが必要な場合は、 https://bugreport.Apple.com でリクエストを提出してください。

9
Dave DeLong

センサーデータ情報は、Watchkit for watchOS 2.0現在利用可能です。

この情報は、合計30分のプレゼンテーションである次のセッションで確認できます。セッション全体を視聴したくない場合は、その間にあるCoreMotion機能とHealthKit機能に直接ジャンプします。 22〜28分:

WWDC2015でのwatchOS2.0セッション用のWatchKit

心拍数の実装

https://developer.Apple.com/documentation/healthkit/hkworkout

加速度計の実装

これがWatchKitExtensionでの加速度計の実装です。これが 参照: です。

import WatchKit
import Foundation
import CoreMotion

class InterfaceController: WKInterfaceController {


    @IBOutlet weak var labelX: WKInterfaceLabel!
    @IBOutlet weak var labelY: WKInterfaceLabel!
    @IBOutlet weak var labelZ: WKInterfaceLabel!
    let motionManager = CMMotionManager()


    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)

        motionManager.accelerometerUpdateInterval = 0.1
    }

    override func willActivate() {
        super.willActivate()

        if (motionManager.accelerometerAvailable == true) {
            let handler:CMAccelerometerHandler = {(data: CMAccelerometerData?, error: NSError?) -> Void in
                self.labelX.setText(String(format: "%.2f", data!.acceleration.x))
                self.labelY.setText(String(format: "%.2f", data!.acceleration.y))
                self.labelZ.setText(String(format: "%.2f", data!.acceleration.z))
            }
            motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: handler)
        }
        else {
            self.labelX.setText("not available")
            self.labelY.setText("not available")
            self.labelZ.setText("not available")
        }
    }

    override func didDeactivate() {
        super.didDeactivate()

        motionManager.stopAccelerometerUpdates()
    }
}
25
casillas

watchOS4およびiOS11のアップデート:ジャイロスコープデータ(回転速度)も利用可能になり、時計からのすべてのセンサーデータにアクセスできます。更新 CoreMotion インターフェース。

より具体的には CMDeviceMotion はあなたを取得します:

  • 姿勢と回転速度
  • 重力とユーザーの加速
  • 校正された磁場
  • .。

CMDeviceMotionを使用した加速度計の実装

class InterfaceController: WKInterfaceController {

let motionManager = CMMotionManager()

override func awake(withContext context: Any?) {
    super.awake(withContext: context)
    motionManager.deviceMotionUpdateInterval = 0.1
}

override func willActivate() {
    super.willActivate()
    if motionManager.isDeviceMotionAvailable {
        let coreMotionHandler : CMDeviceMotionHandler = {(data: CMDeviceMotion?, error: Error?) -> Void in
            // do something with data!.userAcceleration
            // data!. can be used to access all the other properties mentioned above. Have a look in Xcode for the suggested variables or follow the link to CMDeviceMotion I have provided
        }
        motionManager.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: coreMotionHandler)
    } else {
        //notify user that no data is available
    }
}

override func didDeactivate() {
    super.didDeactivate()
    motionManager.stopDeviceMotionUpdates()
}
}

上記の実装に関する注意:

この方法では、Apple Watchからリアルタイムのデータを取得するという点で、AからBに移動しますが、これには、はるかに優れた、間違いなくより多くの製品対応バージョンがあります official = Appleチュートリアル 、別のモデルなどでInterfaceControllerからセンサーロジックを分離する方法を説明しています。私の意見では非常に便利です。

5
tech4242

来年、Appleで完全なアプリケーションを構築できるようになると、それが実現する可能性が最も高くなります。これまでは、UI、Glance、Notificationsのみでした。

Update:Appleは開発者APIを提供していますカシージャスの答えを確認してください。

2
Sebyddd