Ковыряясь с базами данных в андроиде наткнулся на весьма неприятную вещь: методы SQLiteDatabase для вставки данных работают не совсем так, как написано в документации. Задача была простая: вставить запись и получить ее ключ для использования в другой таблице. В случае, если нужная запись уже имеется, хочется узнать ключ этой старой записи. Оказалось, что получить можно что угодно, кроме этого самого старого ключа.
Чтобы разобраться в этом пришлось поставить несколько опытов на кошках, зато теперь кое-что прояснилось.
Совсем недавно обзавелся андрофоном (LG Optimus) и решил попробовать свои силы в написании софта под него. Почитав про устройство платформы сначала очень порадовался за ее простоту, удобство и логичность. Но на практике все оказалось далеко не так радужно…
В качестве пробы пера взялся за приложение, которое автоматически отвечало бы на входящие звонки при подключенной гарнитуре. Странно, конечно, что такой простой функции нет в системе «из коробки». Да и в маркете нашлось всего одно приложение, умеющее это делать, причем не слишком надежное. Попробуем исправить это недоразумение.
На первый взгляд, приложение должно быть очень простым:
В манифесте вешаем receiver на сообщения об изменении статуса линии (TelephonyManager.ACTION_PHONE_STATE_CHANGED) и следим за входящими звонками.
При поступлении звонка проверяем, подключена ли гарнитура. Меня интересовала, прежде всего, bluetooth, но и проводную гарнитуру было бы хорошо отслеживать.
Если гарнитура подключена, говорим телефону ответить на звонок.
С первым пунктом особых проблем не возникло. А вот остальные два оказались не такими тривиальными.
Прочитав этот топик поставил и погонял немного Live Mesh. Задумка понравилась, внешне все сделано красиво, но внутри пока ужасненько. Я бы сказал, что даже на бету не тянет.
Что бы там ни говорили сторонники бесплатного/открытого софта, жизнь все больше убеждает меня в том, что по-настоящему хороший, продуманный до мелочей продукт бесплатно получить нельзя.
Вот простой пример как раз такой мелочи. Задача: поменять местами два абзаца с разными стилями.