czujnik zbliżeniowy iPhone

Czy iPhone SDK może korzystać z czujników zbliżeniowych iPhone ' a? Jeśli tak, to dlaczego nikt ich nie wykorzystał? Mógłbym sobie wyobrazić kilka przyzwoitych zastosowań.

Na przykład w grze wyścigowej można położyć palec na czujniku zbliżeniowym, aby przejść zamiast zajmować ekran nieruchomości kciukiem. Oczywiście, gdyby to była twoja jedyna opcja, użytkownicy iPoda touch nie mogliby korzystać z aplikacji.

Czy czujnik zbliżeniowy mówi jak blisko jesteś, czy tylko że coś jest przed nim?

Author: Greg, 2008-10-03

13 answers

Zakładając, że masz na myśli czujnik, który wyłącza ekran, gdy trzymasz go przy uchu, jestem prawie pewien, że to tylko czujnik podczerwieni wewnątrz głośnika. Jeśli uruchomisz aplikację na telefon (nie musisz wykonywać połączenia) i przytrzymasz coś, aby rzucić cień na głośnik w uchu, możesz wyłączyć wyświetlacz.

Kiedy zadałeś to pytanie, nie było ono dostępne za pośrednictwem publicznego API. Możesz teraz uzyskać dostęp do stanu czujnika za pomocą właściwości UIDevice proximityState. Jednak nie byłoby to przydatne w grach, ponieważ jest to tylko włączanie/wyłączanie, a nie środek Bliski / daleki. Plus, jest dostępny tylko na iPhone, a nie iPod touch.

 17
Author: benzado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-13 01:51:28

There is a public API for this. -[UIApplication setProximitySensingEnabled: (BOOL)] włącza funkcję. BTW, nie wydaje się, aby używać czujnika światła, ponieważ czujnik zbliżeniowy podrasowałby się w ciemnym pomieszczeniu.

Jednak wywołanie API w zasadzie zamyka ekran, gdy trzymasz telefon przy twarzy. Niestety nie przydatna do interakcji.

 32
Author: Brendan Berg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-19 18:56:36

Widocznie Czujnik zbliżeniowy nigdy się nie włączy, jeśli pasek stanu znajduje się w orientacji poziomej. tj. jeśli zadzwonisz:

[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;

Nie będziesz już otrzymywać powiadomień proximity:ON.

To zdecydowanie dzieje się na OS 3.0, nie mogę przetestować go na 2.Urządzenie X, ponieważ nie mam takiego z czujnikiem zbliżeniowym.

To wygląda na pluskwę.
 7
Author: Agent Chocks.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-17 06:46:47

Czujnik zbliżeniowy działa poprzez pomiar odbicia podczerwieni. Jeśli przytrzymasz iPhone ' a do kamery internetowej, zobaczysz małą, pulsującą diodę podczerwieni.

 5
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-28 21:38:58

Jest wiele nieporozumień między czujnikiem zbliżeniowym a czujnikiem światła otoczenia. IPhone ma oba. Dotyk nie ma czujnika zbliżeniowego, co czyni go złym wyborem dla wejścia użytkownika. I tak byłby to zły pomysł, ponieważ Apple nie jest zobowiązany do lokalizowania go w tym samym miejscu w przyszłych urządzeniach; nie powinieneś wiedzieć ani dbać o to, gdzie jest.

Czujnik zbliżeniowy działa poprzez pulsowanie diody LED na podczerwień i pomiar współczynnika odbicia. Możesz to zobaczyć za pomocą iSight aparat fotograficzny (większość aparatów cyfrowych jest wrażliwa na podczerwień.) Wystarczy uruchomić Photo Booth, zainicjować połączenie (lub odtworzyć pocztę głosową) w telefonie i skierować go na aparat iSight. Zwróć uwagę na migające światło obok słuchawki; przykryj ją palcem, a ekran stanie się czarny.

Interfejs API Czujnika Światła Otoczenia jest ewidentnie prywatny w tym momencie.

 5
Author: David Gish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-17 23:21:24

/ Align = "left" /

device = [UIDevice currentDevice];

// Turn on proximity monitoring
[device setProximityMonitoringEnabled:YES];

// To determine if proximity monitoring is available, attempt to enable it.
// If the value of the proximityMonitoringEnabled property remains NO, proximity
// monitoring is not available.

// Detect whether device supports proximity monitoring
proxySupported = [device isProximityMonitoringEnabled];

// Register for proximity notifications
[notificationCenter addObserver:self selector:@selector(proximityChanged:) name:UIDeviceProximityStateDidChangeNotification object:device];

Jak wskazuje benzado, możesz użyć:

// Returns a BOOL, YES if device is proximate
[device proximityState];
 5
Author: Ben Flynn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-30 12:17:42

Nie ma do tego publicznego API.

 2
Author: Chris Lundie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-03 03:09:22

[[1]}w iPhone 3.0 jest oficjalne wsparcie dla czujnika zbliżeniowego. Zajrzyj do UIDevice proximityMonitoringEnabled W docs.

 2
Author: Brian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 17:59:32

Jeśli nie dążysz do AppStore, możesz przeczytać moje artykuły na temat uzyskiwania dostępu do nich:

Czujnik zbliżeniowy: http://iphonedevwiki.net/index.php/AppleProxShim

Czujnik Światła Otoczenia: http://iphonedevwiki.net/index.php/AppleISL29003

 2
Author: Elias Limneos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-02 01:52:15

widocznie Czujnik zbliżeniowy nigdy się nie włączy, jeśli pasek stanu jest w orientacji poziomej. tzn. jeśli zadzwonisz: [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft; Nie będziesz już otrzymywać powiadomień o zbliżeniach. To zdecydowanie dzieje się na OS 3.0, nie mogę przetestować go na 2.Urządzenie X, ponieważ nie mam takiego z czujnikiem zbliżeniowym. To wygląda na pluskwę. odpowiedział (A): Jul 22 '09, 17: 49 Kevin Lambert


I ' ve encouted this problem też. Zajęło mi dużo czasu, aby dowiedzieć się prawdziwy powód, dlaczego Czujnik zbliżeniowy nie działa. Gdy orientacja jest UIInterfaceOrientationLandscapeLeft lub UIInterfaceOrientationLandscapeRight, Czujnik zbliżeniowy nie działa; podczas gdy w trybie portretowym działa dobrze. Mój iPhone to iPhone 4s (iOS SDK 5.0).

 2
Author: wave_1102,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-30 08:50:56

Te czujniki zbliżeniowe są w zasadzie matrycą przewodników. Pionowe "przewody" to tory po jednej stronie cienkiego arkusza izolatora, poziome są po drugiej stronie. Przecięcia funkcjonują jako Kondensatory. Twój palec przenosi ładunek elektrostatyczny, więc pojemność każdego złącza zmienia się w zależności od bliskości. Fety wzmacniają sygnał, a biasing wyznacza próg. W praktyce układ jest bardziej złożony, ponieważ musi wykryć względną zmianę i odrzucić hałas.

Ale tak czy inaczej, siatka czujników mówi, że został wyczuwony efekt pola, a ten efekt pola jest charakterystyczny dla obiektu o wielkości palca i spoczywa na powierzchni wyświetlacza. Centroid zakłócenia pojemnościowego jest obliczany (prawdopodobnie przez sprzęt), a współrzędne są (prawdopodobnie) zgłaszane jako liczby na porcie, najprawdopodobniej zwracane na system operacyjny urządzenia przez przerwanie. W czymś tak seksownym jak iPhone jest prawdopodobnie bufor ostatnich kilkunastu pozycji, dzięki czemu może wypracowywać kierunek i prędkość. Prawdopodobnie są one również obliczane przez sprzęt i prezentowane jako liczby na tym samym porcie.

 1
Author: Peter Wone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-03 05:11:34

@ Dipak Patel & @ Coderer

Kod roboczy można pobrać pod adresem http://spazout.com/google_cheats_independent_iphone_developers_screwed

MA działającą implementację proximityStateChanged nieudokumentowaną metodę w UIApplication.

Mam nadzieję, że to pomoże.

 0
Author: chews,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-20 04:38:56

Aby wyłączyć ekran, można użyć więcej niż jednego czujnika, aby dowiedzieć się, czy ekran powinien być wyłączony, czy nie. Czujnik zbliżeniowy na podczerwień opisany przez Cryptognome w połączeniu z czujnikiem ekranu dotykowego opisanym przez Petera Wone może sprawdzić, czy iphone jest trzymany blisko twarzy (lub coś innego z niewielkim ładunkiem elektrycznym) lub jeśli jest po prostu bardzo blisko czegoś w animacji.

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-03 12:07:38