2015-07-07 33 views
6

Po pewnym przeszukaniu, mogę zrozumieć, że "czujnik zbliżeniowy" służy do włączania/wyłączania ekranu, gdy urządzenie znajduje się/blisko użytkownika. Oglądałem this video (oglądaj z 30 sek.) I zdziwiłem się z tego fajnego materiału. Chcę go zaimplementować w mojej aplikacji.Jak programować czujnik zbliżeniowy za pomocą oprogramowania iOS?

Ale wiem, że nie ma publicznego interfejsu API, który może chronić blokadę ekranu, gdy proximityMonitoringEnabled jest YES. Jak mogła to zrobić powyższa aplikacja?

Dla jasnego zrozumienia, kopiuję kod.

Włącz czujnik zbliżeniowy:

[[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; 

konfiguracji obserwatorem zmian czujnika:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sensorStateMonitor:) name:@"UIDeviceProximityStateDidChangeNotification" object:nil]; 

Wreszcie można znaleźć stan czujnik zbliżeniowy z tej metody:

- (void)sensorStateMonitor:(NSNotificationCenter *)notification 
{ 
    if ([[UIDevice currentDevice] proximityState] == YES) 
    { 
     NSLog(@"Device is close to user."); 
    } 

    else 
    { 
     NSLog(@"Device is not closer to user."); 
    } 
} 

Pytanie:

chcę pokazać jakiś pogląd, gdy „Urządzenie jest blisko użytkownika” stan nazywano. I chcesz usunąć widok, jeśli został wywołany stan "Urządzenie nie jest bliżej użytkownika".

Dodałem więc widok i usunięto go wewnątrz metody sensorStateMonitor:. Ale widok był widoczny tylko przez ułamek sekundy, a ekran gaśnie.

Czy mogę zapobiec automatycznemu wyłączaniu ekranu?

Po prostu mylić!

+0

Hi @Confused, w jaki sposób można zapobiec masce auto off jest jakieś rozwiązanie? jeśli tak, czy możesz mi pomóc w tym. –

Odpowiedz

1

Blokadę ekranu można włączyć/wyłączyć.

[UIApplication sharedApplication].idleTimerDisabled = YES;

+0

Nawet włączając ten kod obok NSLog (@ "Urządzenie jest bliskie użytkownikowi."); nie działa. Mimo to ekran zostanie automatycznie zablokowany. – Confused

+0

Wygląda na to, że mógł wystąpić błąd. Spróbuj ustawić go w 'applicationDidFinishLaunching' lub po' [[UIDevice currentDevice] setProximityMonitoringEnabled: YES]; 'najpierw na NIE, a następnie na YES. Sprawdź ten link: http://iosskill.blogspot.ro/2013/08/disable-sleep-mode-programmatically.html – Templar

+0

Próbowałem go przed moim poprzednim komentarzem. To też nie pomoże :( – Confused