2015-01-10 3 views
0

Я бы выполнил проверку свойства proximityState, которое говорит мне, если у пользователя есть телефон рядом с ухом. Как будто он делает телефонный звонок. В iOS 7 работает, но потом мне пришлось удалить этот механизм из-за других причин. Теперь на iOS 8 я добавлю эту функцию в приложение и после того, как близость изменит ее состояние на YES в первый раз, оставаясь ДА навсегда. Он не переключается на NO даже тогда, когда вы удаляете устройство из ушей. Похоже, это какая-то ошибка в ios, у кого-то еще такая же проблема.Непосредственный датчик iPhones дает неверные данные

Спасибо.

ответ

0

Так что я нашел проблему. self.device.proximityState следует читать в основной теме. Вся работа была выполнена в фоновом режиме, и если я проверю proximityState на основной поток, это сработает.

2

У меня не было этой проблемы, и следующий код ниже работает в iOS 8. Помните, что приложение не поддерживает портретный режим, датчик приближения не будет контролироваться. Делегат моего приложения:

#import "AppDelegate.h" 

@interface AppDelegate() 
@end 

@implementation AppDelegate 
{ 
    UIDevice *currentDevice; 
} 

- (BOOL) application: (UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions 
{ 
    NSLog(@"Application finished launching!"); 
    currentDevice = [UIDevice currentDevice]; 
    [currentDevice setProximityMonitoringEnabled:YES]; 
    if (currentDevice.proximityMonitoringEnabled) 
    { 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onProximitySensorStateChanged:) name:UIDeviceProximityStateDidChangeNotification object:nil]; 
     NSLog(@"Monitoring proximity sensor!"); 
    } 
    else 
    { 
     NSLog(@"Device does not have a proximity sensor!"); 
    } 
    return YES; 
} 

- (void) onProximitySensorStateChanged: (NSNotification*) notification 
{ 
    if (currentDevice.proximityState) 
    { 
     NSLog(@"User is now close to the proximity sensor!"); 
    } 
    else 
    { 
     NSLog(@"User is now away from the proximity sensor!"); 
    } 
} 
@end 
+0

Я как-то узнал, что если я установил proximityMonitoring ON во время разговора, то после звонка он получит значение rignt. –

+0

Странно. Я позвонил себе с другого телефона, чтобы проверить код, и он, похоже, правильно понял значения. –

+1

Да, потому что ваш мониторинг всегда включен, если во время телефонного звонка монитор отключен, он возвращает неверное состояние proximity после его возврата в приложение. Я оставляю его включенным во время разговора, и все. В моем приложении я не хочу, чтобы проверка близости всегда включалась, потому что если пользователь по ошибке закрывает датчик приближения, он вычеркивает экран, который является плохим пользовательским экспериментом. Спасибо за вашу помощь и ваше время, я уважаю это, правда. –

Смежные вопросы