Подтвердить что ты не робот

Датчик приближения iPhone

Может ли iPhone SDK использовать сенсорные датчики iPhone? Если да, то почему никто не воспользовался ими? Я мог бы представить несколько достойных приложений.

Например, в гоночной игре вы можете перенести свой палец на датчик приближения, вместо того, чтобы захватывать экранную недвижимость большим пальцем. Конечно, хотя, если это был ваш единственный вариант, пользователи iPod touch не смогут использовать приложение.

Дает ли датчик близости, насколько вы близки, или просто что-то перед ним?

4b9b3361

Ответ 1

Предполагая, что вы имеете в виду датчик, который отключает экран, когда вы держите его на ухо, я уверен, что это только инфракрасный датчик внутри динамика. Если вы запустите приложение телефона (вам не нужно делать звонок) и удерживайте что-то, чтобы наложить тень на динамик уха, вы можете отключить отображение.

Когда вы задали этот вопрос, он не был доступен через публичный API. Теперь вы можете получить доступ к состоянию датчика через свойство UIDevice proximityState. Тем не менее, это было бы не так полезно для игр, так как это всего лишь функция включения/выключения, а не приблизительная/дальняя. Кроме того, он доступен только на iPhone, а не на iPod touch.

Ответ 2

Для этого существует общедоступный API. - [UIApplication setProximitySensingEnabled: (BOOL)] включит эту функцию. Кстати, похоже, что он не использует датчик освещенности, потому что сенсорное зондирование будет настраиваться в темной комнате.

Однако вызов API в основном закрывает экран, когда вы держите телефон до вашего лица. Не полезно для взаимодействия, к сожалению.

Ответ 3

Очевидно, датчик приближения никогда не включится, если строка состояния находится в альбомной ориентации. то есть, если вы вызываете:

[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;

Вы больше не получите уведомления близость: ON.

Это определенно происходит на OS 3.0, я не могу протестировать его на устройстве 2.X, так как у меня нет датчика близости.

Это похоже на ошибку.

Ответ 4

Бесконтактный датчик работает через измерение ИК-отражения. Если вы держите iPhone до веб-камеры, вы можете увидеть небольшой пульсирующий ИК-светодиод.

Ответ 5

Там много путаницы между датчиком приближения и датчиком окружающего света. У iPhone есть и то, и другое. Touch не имеет бесконтактного датчика, что делает его плохим выбором для ввода пользователем. Это было бы плохой идеей, так как Apple не обязана размещать ее в одном месте в будущих устройствах; вы не должны знать или заботиться о том, где он находится.

Бесконтактный датчик работает путем пульсирования инфракрасного светодиода и измерения коэффициента отражения. Вы можете увидеть это с помощью камеры iSight (большинство цифровых камер чувствительны к ИК-экрану). Просто запустите Photo Booth, инициируйте вызов (или воспроизведите голосовую почту) на телефоне и укажите его на камеру iSight. Обратите внимание на мигающую лампу рядом с динамиком; накройте его пальцем, и экран станет черным.

API-интерфейс датчика внешнего освещения, очевидно, является приватным в данный момент.

Ответ 6

Просто обновить, это возможно.

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];

Как указывает бензадо, вы можете использовать:

// Returns a BOOL, YES if device is proximate
[device proximityState];

Ответ 7

Для этого нет общедоступного API.

Ответ 8

В iPhone 3.0 официальная поддержка датчика приближения. Посмотрите UIDevice proximityMonitoringEnabled в документах.

Ответ 10

Очевидно, датчик приближения никогда не включится, если строка состояния находится в альбомной ориентации. то есть, если вы вызываете: [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft; Вы больше не будете получать близость: уведомления ON. Это определенно происходит на OS 3.0, я не могу проверить его на устройстве 2.X, так как у меня нет датчика приближения. Это похоже на ошибку. ответить: Кевин Ламберт


Я тоже воспользовался этой проблемой. Мне потребовалось много времени, чтобы выяснить истинную причину того, почему датчик приближения не работает. Когда ориентация UIInterfaceOrientationLandscapeLeft или UIInterfaceOrientationLandscapeRight, датчик приближения не работает; в портретном режиме он работает хорошо. Мой iPhone - iPhone 4S (iOS SDK 5.0).

Ответ 11

Эти датчики приближения в основном представляют собой матрицу проводников. Вертикальные "проводы" - это дорожки с одной стороны тонкого листа изолятора, горизонтальные - с другой стороны. Пересечения функционируют как конденсаторы. Ваш палец несет электростатический заряд, поэтому емкость каждого перехода зависит от близости. Полевые транзисторы усиливают сигнал, а смещение задает порог. На практике схема сложнее, чем потому, что она должна обнаруживать относительное изменение и отклонять шум.

Но в любом случае то, что сетка датчиков говорит вам, заключается в том, что был обнаружен эффект поля, и этот эффект поля характерен для объекта размером с кончик пальца и опирался на поверхность дисплея. Центроид емкостного возмущения вычисляется (возможно, с помощью аппаратного обеспечения), и координаты (предположительно) сообщаются как числа на порте, которые, скорее всего, доводятся до сведения ОС устройства прерыванием. Во что-то столь же сексуальном, как iPhone, вероятно, есть буфер из последних дюжины позиций, чтобы он мог выработать направление и скорость. Вероятно, они также вычисляются аппаратными средствами и представлены в виде чисел на одном и том же порту.

Ответ 12

@Dipak Patel и @Coderer

Вы можете загрузить рабочий код на http://spazout.com/google_cheats_independent_iphone_developers_screwed

Он имеет рабочую реализацию proximityStateChanged недокументированного метода в UIApplication.

Надеюсь, что это поможет.

Ответ 13

Чтобы выключить экран, возможно, что для определения того, нужно ли отключить экран или нет, используется несколько датчиков. ИК-датчик приближения, описанный Cryptognome в сочетании с сенсорным сенсорным датчиком, описанным Питером Уэном, мог бы работать, если iphone удерживается близко к вашему лицу (или что-то еще с небольшим электрическим зарядом) или если он очень близко к чему-то в -animate.