Есть ли способ узнать, используется ли ваше приложение, когда пользователь разговаривает по телефону? - PullRequest
6 голосов
/ 08 октября 2009

В моем приложении есть определенные разделы, которые лучше выделить пользователю, если они находятся на телефоне.

Есть ли звонок, чтобы проверить, разговариваем ли мы по телефону? К сожалению, «вызов» - это ужасное слово для проверки в документах API по понятным причинам.

Ответы [ 4 ]

5 голосов
/ 08 октября 2009

Посмотрите на разницу в размерах между [[UIScreen mainScreen] bounds] и [[UIScreen mainScreen] applicationFrame]. Если разность составляет 20 пикселей, и вы не скрываете строку состояния, то пользователи, вероятно, не находятся на вызове. Если разница составляет 40 пикселей, ваши пользователи, вероятно, находятся на вызове, поскольку светящаяся зеленая строка состояния, которая появляется во время вызовов, примерно в два раза больше обычной строки состояния.

Я не делал этого раньше, так что YMMV. Удачи и дайте мне знать, если это работает!

2 голосов
/ 20 октября 2011

CoreTelephony Framework может вам сказать.

Метод currentCalls CTCallCenter возвращает набор активных в данный момент сотовых вызовов.

2 голосов
/ 08 октября 2009

Приложение не завершает работу при поступлении вызова, оно переходит в неактивное состояние. Следующий метод должен вызываться для UIApplicationDelegate :

- (void)applicationWillResignActive:(UIApplication *)application

Этот метод также вызывается в других случаях, например, когда iPhone заблокирован, и вы не можете определить, был ли это входящий звонок, вызвавший его.

0 голосов
/ 08 октября 2009

Когда iPhone получает звонок, приложение закрывается. Вы можете зарегистрировать обратный вызов для обработки этого события, см .:

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/applicationWillTerminate:

После завершения вызова ваше приложение будет перезапущено.

Приложения, которые, кажется, сохраняют ваше состояние во время разговора, просто хорошо написаны:)


Arggh! Я только что прочитал ваш актуальный вопрос.

Я не могу найти и не знаю ни одного API для доступа к приложению телефона. Мой единственный совет: телефон - это приложение, подобное любому другому, и он может публиковать информацию через http-туннель, который предоставляют все приложения.

Интересно, можно ли просто нажать кнопку «Я на телефоне», которую пользователь мог нажать для достижения тех же результатов?

...