iOS 7のバックグラウンドで手順を取得します -- ios フィールド と iphone フィールド と objective-c フィールド と accelerometer フィールド 関連 問題

Get the steps in background with iOS 7












7
vote

問題

日本語

私は私が身体活動中に行ったステップの数を取得するアプリを開発しています。このコードを見つけました:

<事前> <コード> - (void)countSteps { [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0 / KUPDATEFREQUENCY]; [[UIAccelerometer sharedAccelerometer] setDelegate:self]; px = py = pz = 0; numSteps = 0; self.labelSteps.text = [NSString stringWithFormat:@"%d", numSteps]; } - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { float xx = acceleration.x; float yy = acceleration.y; float zz = acceleration.z; float dot = (px * xx) + (py * yy) + (pz * zz); float a = ABS(sqrt(px * px + py * py + pz * pz)); float b = ABS(sqrt(xx * xx + yy * yy + zz * zz)); dot /= (a * b); if (dot <= 0.82) { if (!isSleeping) { isSleeping = YES; [self performSelector:@selector(wakeUp) withObject:nil afterDelay:0.3]; numSteps += 1; self.labelSteps.text = [NSString stringWithFormat:@"%d", numSteps]; } } px = xx; py = yy; pz = zz; } - (void)wakeUp { isSleeping = NO; }

このコードでは、iPhoneのディスプレイが上にあるときには素晴らしい機能がありますが、表示をオフにするとうまくいきません。 iOS 7では、「背景モード」が機能しているのを見ました。この機能を使用すると、iPhoneの表示がオフになっているときに座標を取得できます。今、私はディスプレイがオフになっているときに加速度計の値を取得する必要があります。 IOSがバックグラウンドモードで加速度計を使用できないWeb上で読みました(ディスプレイがオフになったときにコプロセッサーM7を持つiPhone 5Sのみが加速度計の値を取得できます)、バックグラウンドモードで加速度計を使用してステップをカウントできるようにする方法?そうでなければ私はがアプリを動かすことができない方法があると思います。

英語

I'm developing an app in which I should get the number of steps I made during a physical activity. I found this code:

- (void)countSteps {     [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0 / KUPDATEFREQUENCY];     [[UIAccelerometer sharedAccelerometer] setDelegate:self];      px = py = pz = 0;     numSteps = 0;      self.labelSteps.text = [NSString stringWithFormat:@"%d", numSteps]; }  - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {     float xx = acceleration.x;     float yy = acceleration.y;     float zz = acceleration.z;      float dot = (px * xx) + (py * yy) + (pz * zz);     float a = ABS(sqrt(px * px + py * py + pz * pz));     float b = ABS(sqrt(xx * xx + yy * yy + zz * zz));      dot /= (a * b);      if (dot <= 0.82) {         if (!isSleeping) {             isSleeping = YES;             [self performSelector:@selector(wakeUp) withObject:nil afterDelay:0.3];             numSteps += 1;             self.labelSteps.text = [NSString stringWithFormat:@"%d", numSteps];         }     }     px = xx;     py = yy;     pz = zz; }  - (void)wakeUp {     isSleeping = NO; } 

With this code when the display of the iPhone is on it works great, but when I switch off the display it doesn't work anymore. To tracking the position I saw that in iOS 7 there's a function "background mode". With this function I can get the coordinates when the iPhone display is turned off. Now I've to get the accelerometer values when the display is turned off, how I can do that? I read on the web that iOS doesn't permit to use accelerometer in background mode (only iPhone 5s with the coprocessor M7 can get the accelerometer value when the display is turned off), how I can count the steps by using accelerometer in background mode? I guess there should be a way otherwise I can't understand how Moves app works.

</div
           
 
 

回答リスト

5
 
vote
vote
ベストアンサー
 

ディスプレイの電源が切れたときに加速度計にアクセスすることはできませんが、iPhoneモデルに関係なくディスプレイがオフになっても場所の変更を監視できます。私の推測によると、AppはGeolocationに基づく変更を使用して数を数えます。 cllocationmanger docsでは、私はこの

を読みました

IOS 6以降では、位置データの配信を延期することができます。 あなたのアプリは背景にあります。これを使用することをお勧めします アプリが後でデータを処理できる状況の機能 問題がありません。 たとえば、ユーザーの追跡アプリ ハイキングコースの場所は、ユーザーがHIKをHILにするまで更新を延期する可能性があります。 一定の距離を一度に点をすべて処理します。延期 アップデートは、アプリが眠っているようにすることで電力を節約するのに役立ちます。 より長い期間。

<事前> <コード> - (void)allowDeferredLocationUpdatesUntilTraveled:(CLLocationDistance)distance timeout:(NSTimeInterval)timeout

あなたのアプリがバックグラウンドにある場合、システムは最適化できます その電力使用量、Location ManagerはGPSハードウェアに保存するように指示します。 指定された距離またはタイムアウトまで内部的に新しい場所 条件が満たされます。一方または両方の基準が満たされると、場所 マネージャーを呼び出して遅延場所を終了します LocationManager:DidFinishDeferRedUpdatesWetherror:ITSの方法 キャッシュされた場所を委任して送達します LocationManager:DidUpdateLocations:メソッド。あなたのアプリがにある場合 前景、Location Managerはイベントの配信を延期しません しかし、指定された基準を監視します。あなたのアプリがに移動した場合 基準が満たされる前に、Location Managerが始めることがあります イベントの配信を延期する

だからあなたがキャッシュされた場所のセットを受け取るとき、起こったステップのおおよその数を計算することができます。私はただ私のすべての野生の考えを与えて、あなた次第です!

これもまた面白いようです https://www.cocoacontrols.com/controls/somotiondetector

 

You cannot access the accelerometer when the display is turned off but you can monitor for location changes even when the display is off regardless of the iPhone model. According to my guess Moves app uses geolocation based changes to count steps. In the CLLocationManger docs, I read this

In iOS 6 and later, you can defer the delivery of location data when your app is in the background. It is recommended that you use this feature in situations where your app could process the data later without any problems. For example, an app that tracks the user’s location on a hiking trail could defer updates until the user hikes a certain distance and then process the points all at once. Deferring updates helps save power by allowing your app to remain asleep for longer periods of time.

- (void)allowDeferredLocationUpdatesUntilTraveled:(CLLocationDistance)distance timeout:(NSTimeInterval)timeout 

If your app is in the background and the system is able to optimize its power usage, the location manager tells the GPS hardware to store new locations internally until the specified distance or timeout conditions are met. When one or both criteria are met, the location manager ends deferred locations by calling the locationManager:didFinishDeferredUpdatesWithError: method of its delegate and delivers the cached locations to the locationManager:didUpdateLocations: method. If your app is in the foreground, the location manager does not defer the deliver of events but does monitor for the specified criteria. If your app moves to the background before the criteria are met, the location manager may begin deferring the delivery of events.

So when you get a set of cached locations you could calculate the approximate number of steps that happened. I am just giving all my wild thoughts, its up to you!

See this also, seems interesting https://www.cocoacontrols.com/controls/somotiondetector

</div
 
 
       
       

関連する質問

342  誰かがiPhoneを揺れたときにどのように検出しますか?  ( How do i detect when someone shakes an iphone ) 
誰かがiPhoneを振ると反応したいです。私は彼らがそれをぶつけする方法を特に注意していません。誰もがこれを検出する方法を知っていますか? ...

0  重力センサーが面取り精度を向上させるための傾斜センサーであるかどうかを誰も教えてください。  ( Can anyone tell me whether gravity sensor is as a tilt sensor to improve heading ) 
xおよびy磁力計を使用して、電話が地元の地面へのレベルのレベルであるときに北の見出しを計算することができます。しかし、電話機を圧倒または投球するときは、ロールとピッチの度合いを使用して傾斜誤差を排除する必要があります。 今、私は重力センサーを傾斜センサーと...

3  加速度計とキャリブレーション - iPhone SDK  ( Accelerometer and calibration iphone sdk ) 
私は私のiPhoneゲームで加速度計の機能を使用する必要があります。デバイスを傾けることで画像を移動するだけです。しかし、YouTubeのほとんどのビデオは、どういうわけか反転して校正を含めることを忘れているチルト機能を表示します。 私はユーザーに彼らのデバイ...

10  加速度計とジャイロデータを使用した相対位置を決定する方法  ( How to determine relative position using accelerometer and gyro data ) 
私はロボットを設計し、ロボットの動きの距離と方向を追跡する必要があります。3Dでは何もない、X Y平面のX、Y、角度は必要ありません。 私の質問: カルマンフィルタリングまたは他の方法でジャイロと加速度計を使用することは可能です。 これを追跡する? (モータ...

1  iPhone 4ジャイロスコープ/ GPS対加速度計/ GPS /コンパス  ( Iphone 4 gyroscope gps versus accelerometer gps compass ) 
回転と翻訳を検出するために、ゲームでiPhone 4のジャイロスコープ/ GPSを使用しようとしています。私が知っている限りでは、ジャイロスコープを使用して3軸すべての回転を検出できます。 しかし、少なくとも水平面上の回転をコンパスで検出することができ、加速...

0  チルト補償コンパス  ( Tilt compensated compass ) 
私はArduinoを使って私の9DOF IMUを補償することに成功しました。私はこれがいつもの構文の問題ではなく、むしろ1つの数学ではなく、誰かが助けることができますか? 問題は、同じヨー方向を維持しながらロールやピッチにセンサを動かすと、ヨー角は一定のまま...

0  iOSのバックグラウンドからユーザーにメッセージを表示します  ( Ios display message to user from background ) 
私のクライアントは私に要件を与えました。私のアプリは背景からの加速度計データを監視しています。データに応じてバックグラウンドからユーザーにメッセージを表示したいです。ローカル通知のようになります。必要な値がセンサーを介して受信された場合、このメッセージは削除さ...

0  加速度計と磁力計のAndroidチルトの問題  ( Android tilt issue with accelerometer and magnetometer ) 
ヨー、ピッチ&アンプを検出しようとしています。次のコードを使用してロール: <事前> <コード> @Override public void onSensorChanged(SensorEvent event) { if (e...

1  iPhone加速度計> CSV> Eメール  ( Iphone accelerometer csv email ) 
私が取り組んでいる機械学習プロジェクトのためのデータを収集しようとしています。私がやりたいことはiPhoneから加速度計データを収集し、それをCSVに保存して自分に電子メールで送ってください。私のアプリは現在加速度計からのデータを取得することができますが、進行...

0  特定のアプリのためにGoogle Playサービスが必要ですか  ( Do i need google play services for a specific app ) 
加速度計のイベントを数ヶ月監視するアプリを書いています。バッテリー使用量を最小限に抑えるために、アプリは以下のサービスを使用してブラックスクリーンのみを表示します。 加速度計イベント HTTPリクエストサービス加速度計のイベントに基づいてデータを送信する(...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有