А зачем отвечать на звонки автоматически? Разве не хочется сначала взглянуть на то кто звонит? Да и отсутствие звонка перед тем, как автоматически поднимется трубка может сыграть злую шутку — звонящий может услышать странны звуки вроде зевков или разговоров, которые ему слышать не стоит.
Но это, конечно же, не отменяет интересности реализации такой задачи :)
Согласен, это имеет смысл. Хотя это скорее дело вкуса. Я всё-таки предпочитаю увидеть кто звонить (иногда произнести про себя WTF, если звонит, например, босс в выходной) и только потом брать трубку.
Можно, но это тоже лишнее движение. А если в этот момент надо держаться за руль и рычаг одновременно? Ну и про перчатки вот правильно подсказывают из зала. :)
Автоматический ответ очень даже нужен, скажем, при езде за рулем. И присутствует во всех известных мне телефонах кроме андроидных. Звонок при этом звонит как обычно. Чтобы взглянуть на звонящего и успеть что-то сделать до ответа, можно задавать задержку (у меня она по умолчанию 2 секунды). Ну а если очень хочется, можно добавить черный/белый список номеров — кому отвечать, кого игнорировать.
Для хранения переменной обычно пользуюсь Context.getSharedPreferences().
А по поводу звонков и настроек security, всё очень печально. Вроде бы в штатах запрещено снимать трубку (подслушка) и запись звонков без предупреждения (кастомный автоответчик) поэтому эти функции вырезают как могут из API. Я хотел написать програмку аля Locale для ещё тогда 1.6. Всё было очень не просто. Включить GPS можно было только с бубном.
Трубку снимать в штатах не запрещено. Во всех моих старых телефонах от T-Mobile эта функция была. Вон, ниже пишут, что в галакси она тоже есть. То есть проблема именно с базовым андроидом.
А насчет GPS как раз все понятно — это сделано, чтобы программы не могли без разрешения пользователя проверять его координаты. Особых проблем нет, потому что GPS можно держать постоянно включенным. Насколько я знаю, он реально включается только по конкретному запросу, так что батарею не должен сильно сажать.
Samsung Galaxy S, Android 2.2
Config » Call settings » All calls » Answering call » Automatic answering » After 1 second
Написано, что будет срабатывать только при подключённой гарнитуре.
Так если бы эта опция присутствовала «из коробки» я был бы только рад. Это же стандартная функция в большинстве телефонов, а в андроиде приходится ее реализовывать черт знает как.
Хорошее исследование с описанием подводных камней!
Очень бы теперь хотелось услышать про реализацию тех же функций у iOS, наличии соответствующих API способ реализации… Есть кто программировал похожее под iOS?
Задолбали со своей секретностью и безопасностью. Ну лезет прога к какой-то системной функции — ну выдай ты юзеру окно аля «АААА. паника! паника! — такая то прога хочет узнать твой координаты, хозяин. Че делаем?» и 4 кнопки — «Разрешить», «Запретить», «Разрешать всегда», «Запрещать всегда». По результатам нажатия работам соответствующим образом. Всё.
Первые впечатления от разработки под Андроидом — пишем handsfree