2012-03-07 13 views
0


私は拡張現実感でアプリを作っています。
基本的に私が持っているのは、カメラからの画像、レーダーの視界、およびスクリーン上のいくつかのマーカーである。
CLLocationManagerを使用して、見出しと場所の更新を取得しています。
レーダーの回転がそれに依存しているため、常に見出しの更新がオンになっている必要があります。私は自分の位置を取得するために位置更新を使用しており、それに基づいて私は表示するマーカーを探しています。
問題は、私が両方の電源をオンにしたときに、少し時間が過ぎてiPhoneが過熱しているということです(10分 - 分)。私は精度を100メートルごとに設定し、距離フィルタを100に設定しました。
タイマーを設定して過熱を防止するために位置を更新し始める必要がありますか?これには他の方法がありますか?
アドバイスをいただきありがとうございます。CLLocationManager iPhoneオーバーヒート

+0

どうやらCPUを何とかしすぎているようですね。私は以前、Nokiaの携帯電話のCPUループにアプリがぶつかり、スクリーンを一緒に保持している接着剤を柔らかくするためにアプリが過熱していました。あなたのアプリがイベントを待っていなければならないときに、どこかの "スピンループ"にいないことを確認してください。 –

+0

@HotLicks私はそれが悪いとは思わない:)私はそれが暖かい(私はそれが暖かく見るために私のために奇妙なので、iPhoneは本当に頻繁に発熱しない)ことを意味する右上の角がカメラがある場所も)。私はKendallが提案し、何が起こるかを見て、時間プロファイラをチェックします – haluzak

答えて

1

これは「タイムプロファイラ」楽器ユーザーには本当に良い時間です。私はGPSを使用して熱の一部を担当していると確信していますが、CPUやGPUをあまりにも多用しているコードの他の部分を簡単に持つことができます。

また、OpenGLのパフォーマンスツールもあります。GPUに課税している部品が見つからないかどうかを調べるために、私はそれを見ていきます。

もう1つの可能性は、AVFoundationを使用してカメラ画像を取得し、オーバーレイしているビデオ画像にあまり高価でないプレビューパラメータを指定できるかどうかを調べることです。

-1
- (id) init 
    { 
self = [super init]; 
if (self != nil) 
{ 
    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.delegate = self; 

} 
return self; 
    } 
    - (void)locationManager:(CLLocationManager *)manager 
didUpdateToLocation:(CLLocation *)newLocation 
     fromLocation:(CLLocation *)oldLocation 
{ 
NSLog(@"Location: %@", [newLocation description]); 
[self.delegate locationUpdate:newLocation]; 
} 
- (void)locationManager:(CLLocationManager *)managerdidFailWithError:(NSError *)error; 

{  
[self.delegate locationError:error]; 
NSLog(@"Error Error: %@",[error description]); 
} 

これらの代理関数は、MyCLConrolleer.mクラスを呼び出します。

このクラスをこのようなViewControllerクラスに割り当てます。ビューコントローラクラスの

 locationController = [[MyCLController alloc] init]; 
locationController.delegate = self; 
[locationController.locationManager startUpdatingLocation]; 
locationManager = [[CLLocationManager alloc] init]; 
locationManager.delegate = self; 
[locationManager startUpdatingLocation]; 
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; 
showCurrentLocation = NO; 

委任機能

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    [self getLocationNameWithLatitude:newLocation.coordinate.latitude longitude:newLocation.coordinate.longitude]; 
    } 
関連する問題