5秒、10秒、20秒などの時間間隔でGPSデータを取得するアプリを作成中なのですが、
前回測定時刻から、時間間隔以上経過したら、緯度・経度を取得する処理をしたいと考えています。変数式は以下です。
currentTime:現在時刻
oldTime:前回測定時刻、初期値はゼロに設定し、GPSデータ取得後、currentTimeの値を入れます。
interval:ピッカーで設定する時間間隔(秒)
式:
if (currentTime >= oldTime + interval) {緯度、経度取得処理}
本やWebで調べると、時刻の形式で現在時刻を取得する方法などは載っていますが、この計算式に即適用できる形式で取得する方法があれば教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
そのタイミングの時刻は[NSDate date]で取得できます。
まず、比較したい過去の時刻をoldTimeに一旦入れておきます。
次に時間が経ってか新たにら[NSDate date]でその時刻を取得します。
最後にNSDate同士の差分を比較するには、timeIntervalSinceDateというメソッドを使います。
これで何秒経っているのか比較出来ます。
oldTime = [NSDate date];
....
currentTime = [NSDate date];
timeInteval = [currentTime timeIntervalSinceDate:oldTime];
if (timeInteval >= 5) NSLog (@"5秒以上経過");
投稿2015/06/16 23:56
総合スコア153
0
時刻の比較・差分については以下が参考になります。
[Objective-C] NSDate周りのまとめメモ
ただし、通常一定時間ごとに処理を行う場合、タイマー(NSTimerクラス)を用いて処理を行います。
投稿2015/06/16 05:50
総合スコア3541
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
現在時刻というわけでなく、ただ単に秒数を数えたいだけなら、CFAbsoluteTimeGetCurrent()を使ってください。
lang
1CFAbsoluteTime oldTime = CFAbsoluteTimeGetCurrent(); 2 3CFAbsoluteTime currentTime = CFAbsoluteTimeGetCurrent(); 4CFAbsoluteTime interval = 10.0; 5if (currentTime >= oldTime + interval) { 6 // 緯度、経度取得処理 7} 8
投稿2015/06/16 10:55
総合スコア2183
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/16 11:17
2015/06/16 11:23
2015/06/16 12:29
0
if (currentTime >= oldTime + interval) {
// 緯度、経度取得処理
oldTime = currentTime; 更新するだけで良いと思います。
}
定期的に更新するなら、インターバル使った方が楽ですよ。
-(void) viewDidload{
[NSTimer scheduledTimerWithTimeInterval:60.0f ←指定した秒数で呼ばれる
target:self selector:@selector(run:) userInfo:nil repeats:YES];
}
-(void)run:(NSTimer*)timer{
経度、緯度取得
}
投稿2015/06/16 05:49
総合スコア1021
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/16 07:13
2015/06/16 10:09
2015/06/16 11:14
2015/06/16 11:31
2015/06/16 12:31
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/17 00:52
2015/06/17 09:42