Я делаю приложение с дополненной реальностью.
В принципе, у меня есть экран с изображением с камеры, радар и некоторые маркеры на экране.
Я использую CLLocationManager для получения обновлений по моему заголовку и местоположению.
Мне нужны заголовочные обновления, которые всегда включаются, потому что вращение радара зависит от него. Я использую обновления местоположения, чтобы получить свою позицию и основываясь на том, что я ищу маркеры для показа.
Проблема в том, что когда у меня есть оба iPhone, перегрев немного через некоторое время (10 + - минут). У меня есть точность, установленная на каждые 100 метров и расстояние фильтра до 100.
Должен ли я настроить таймер для остановки и начать обновление местоположения, чтобы предотвратить перегрев (и, вероятно, сэкономить некоторое время автономной работы)? Есть ли другой подход для этого?
Спасибо за советы.CLLocationManager Перегрев iPhone
ответ
Это действительно хорошее время, чтобы пользователь инструмента "Time Profiler". Я уверен, что использование GPS связано с некоторой теплотой, но вы можете легко получить какую-то часть кода, которая слишком сильно использует процессор или графический процессор.
Существует также инструмент для работы с OpenGL, я бы посмотрел на это, чтобы увидеть, можете ли вы найти какие-либо части, которые слишком сильно облагают GPU.
Другая возможность - изучить использование AVFoundation, чтобы получить изображение камеры, и посмотреть, можете ли вы указать более дешевые параметры предварительного просмотра для видеоизображения, которое вы накладываете.
- (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;
Делегирование функции View Controller класса
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
[self getLocationNameWithLatitude:newLocation.coordinate.latitude longitude:newLocation.coordinate.longitude];
}
- 1. iPhone: время от CLLocationManager
- 2. iPhone CLLocationManager TrueHeading iPhoneSimulator
- 3. CLLocationManager singleton iphone пример
- 4. Разработка iPhone - CLLocationManager против MapKit
- 5. iPhone - CLLocationManager init возвращает nil
- 6. Перегрев стекла на видеопотоке
- 7. Google Перегрев стекла
- 8. Перегрев поколения MD5 - Веб-API
- 9. iPhone Core Location CLLocationManager update rate
- 10. Где разместить общий код для iPhone, CLLocationManager
- 11. CLLocationManager заголовок проблемы на iPhone 5
- 12. CLLocationManager обеспечивает лучшую точность для iphone
- 13. CLLocationManager не работает в iphone 4 ios
- 14. CLLocationManager не запускается на симуляторе iPhone
- 15. iPhone CLLocationManager обновляется каждые 0,5 секунды
- 16. CLLocationManager Делегировать изменения в iPhone OS 4.0
- 17. CLLocationManager и степени заголовка в iPhone
- 18. CLLocationManager
- 19. CLLocationManager отзывчивость
- 20. CLLocationManager timestamp и координаты
- 21. Перегрев процессора из-за Delphi IDE
- 22. ПЕРЕГРЕВ ПО СЕРВЕРУ SQL Бизнес-кейс
- 23. CLLocationManager trueHeading is -1
- 24. CLLocationmanager setAuthorizationStatus не работает (джейлбрейк)
- 25. CLLocationManager reverseGeocodeLocation Language
- 26. - [CLLocationManager requestWhenInUseAuthorization] или - [CLLocationManager requestAlwaysAuthorization] Ошибка
- 27. CLLocationManager crashing app
- 28. Использование класса CLLocationManager в iPad?
- 29. CLLocationManager - kCLErrorDomain
- 30. CLLocationManager class
Это, безусловно, звучит так, будто вы как-то перегружаете процессор. У меня когда-то было приложение попало в петлю процессора на телефоне Nokia и перегрело его, чтобы смягчить склеивание экрана. Убедитесь, что ваше приложение не находится в «цикле вращения» где-то, когда оно должно ожидать событий. –
@HotLicks Я не думаю, что это так плохо :), я имею в виду, что это тепло (iphone не очень часто нагревается, поэтому мне странно видеть, что он теплый) в верхнем правом углу, где находится камера (возможно, что-то с сердечником место также). Я проверю профилировщик времени, как предложил Кендалл, и посмотрим, что произойдет – haluzak