?

Log in

No account? Create an account

Previous Entry | Next Entry

I. HTC Desire и Android

HTC DesireУже довольно давно я порывался уйти с WM платформы (Samsung i780). Останавливала, главным образом, необходимость синхронизации с MS Exchange, а также возможность на WM телефоне более-менее нормально смотреть doc/xls, письма с html разметкой.

С появлением  Android 2.1, а также приличных телефонов с ним: Nexus One и HTC Desire (которые, по сути, почти одно и то же), а также со всё более интенсивным использованием различных гуглосервисов было решено, что ждать уже хватит.

После некоторых размышлений был выбран HTC Desire. Во-первых, из-за оптического тачпада (у Nexus'a нечто типа джойстика - мне не понравилось), во-вторых из-за официальной  гарантии. Как выяснилось позже - HTC Sense (надстройка над Android'ом) тоже является большим плюсом. Кстати, если кого волнует - рецепты по отключению Sense в Desire работают только для ранних версий телефонов.

По прошествии, примерно, месяца - могу сказать, что выбором я очень доволен.

Наибольшее опасение у меня вызывало отсутствие физической клавиатуры и, безусловно, экранная менее удобна (особенно на ярком свете). Однако, неудобства оказались не настолько критичны. Понравился feedback при нажатии на кнопку, который имитируется вибрацией.
Большой, очень качественный экран. С него даже приятно читать книжки, в отличие от всех телефонов, которые мне встречались ранее.
Тормозит только в очень редких конкретных местах. В целом всё быстро и удобно. Мультитач работает, но только в специфических ситуациях (например, масштабирование картинки в _некоторых_ приложениях и страниц в браузере)
Использование аппаратных кнопок довольно странное. В частности, центральная кнопка как правило вообще ничего не делает (что мешало повесить на неё ответ на звонок или запуск телефонного приложения - неясно). Да, аппаратные кнопки нельзя назначить на что угодно - нет таких приложений (видимо, ограничения ОС).
Что касается поддержки MS Exchange, которая меня волновала - почта и календарь синхронизируются совершенно нормально.
Качество Фото / Видео - приемлимое (хуже ультракомпактов, конечно).
От аккумулятора работает столько, сколько большинство смартфонов - примерно раз в сутки надо заряжать. Но то, что он заряжается по USB (там microUSB разъем) - отчасти решает проблему. Качество звука - так себе, прямо скажем. Чуть погромче - начинает дребезжать. Впрочем, есть стандартный разъем для наушников. Еще, встроено FM радио (требует подключенных наушников - в качестве антенны).

В целом, я охарактеризовал бы Android телефон как "IPhone для гиков/фриков". С одной стороны, у него человеческий удобный интерфейс, похожий на IPhone'овский (только несколько кривее - до некоторых вещей пришлось долго догадываться и спрашивать знакомых, в то время как на IPhone всё было интуитивно понятно).
С другой - нет ограничений на установку приложений из левых источников - хоть с карточки ставь что угодно, хоть из Интернет-а. Опять же - если есть желание, можно скачать SDK, написать что нужно и совершенно бесплатно и без одобрений использовать или распространять.

Один ньюанс, который мной не вполне осознавался, заключается в резком увеличении трафика (соответственно, платы за телефон). Это связано с наличием различных виджетов, приложений которые регулярно синхронизируются с сервисами в Интернете, а также из-за более частого использования браузера на телефоне, т.к. теперь это удобно и быстро. В итоге сейчас счётчик трафика прогнозирует мне что-то в районе 500mb суммарного трафика в месяц (отчасти это обусловлено тем, что после покупки хочется всё посмотреть, но всё равно уже ясно, что по сравнению с WM трафик увеличится минимум раз в десять).

Большой проблемой является тот факт, что в гугломаркете для России (и некоторых других стран) запрещена покупка платных приложений (т.е. в каталоге видны только бесплатные). Уж не знаю, чем это обусловлено, но ситуация совершенно глупая - на варезных форумах народ хакает прошивки, чтобы получить возможность отдавать за приложения деньги :) И, естественно, российские авторы приложений также не могут их официально продавать через гугломаркет.

Такая, в принципе, давно известная вещь как QR коды приобрела самый, что ни на есть, практический смысл. Вместо того, чтобы вбивать побуквенно в телефон URL веб страниц или приложений - достаточно навести камеру телефона на экран (под углом, на расстоянии и т.п.) и код мгновенно считается и браузер откроет нужную страницу.

II. РАЗРАБОТКА

Естественно, я не удержался от сооблазна попробовать что-нибудь написать под Android. Под WM у меня такого желания не было, но здесь мне понравилась идеология системы - несмотря на кое в чём кривую реализацию, идеологически всё задумано очень хорошо.
Ядро системы - линуксовое. Но для разработчика приложений это, в принципе, ничего не означает. Т.е. не определяет идеологию системы. Приложения пишутся на Java. Однако, есть важный ньюанс - код, который получается в результате, к Java особого отношения не имеет. Выполняет его их собственная VM - _регистровая_, а не стековая, причём даже без JIT компилятора. [2dz: skip next sentence :-]  Что решает проблему с характерными для Java тормозами.

Короче говоря, я скачал Android SDK (Win) с эмулятором, поставил Eclipse, необходимые плагины, скомпилил Hello World, порадовался, задумался что бы такого написать.

Одной из приятных фич Android'а являются так называемые "виджеты". Это приложения, которые можно размещать на desktop'e называемом home screen (он виртуальный, прокручивается влево и вправо). Такое приложение может периодически выполнять какие-то действия (например, получать из Интернета данные) и отображать полученную информацию внутри виджета. Его размеры задаются в относительных единицах - грубо говоря, в условных клетках экрана и после того как виджет размещен, не могут меняться.
Виджет можно перемещать по десктопу, удалять и т.п.
Одним словом, это показалось мне наиболее интересным направлением действий.
Было решено для примера сделать виджет (см. фото), показывающий последние несколько сообщений из группы одного сервиса (Smster). С возможностью настраивать период обновления информации и, собственно, группу.
Про серверную часть говорить нечего - просто делается SELECT из базы и кодируется JSON'ом.

С написанием же виджета возникли кое-какие проблемы. По сравнению с любимым мной Flex'ом, здесь бросился в глаза глючный эмулятор и SDK, а также весьма немногословная и местами просто устаревшая документация и очень небольшое количество примеров виджетов в исходниках, которые удалось нагуглить (всего штук 5, плюс масса модификаций этих пяти. Причём, все они довольно простые).

Чтобы не быть голословным:
К примеру, из документации следует, что есть некий параметр android:updatePeriodMillis , в котором можно задать период вызова обработчика для обновления информации в виджете. И приводится пример. Я этот пример скомпилил, поставил туда что-то в районе 5 секунд - эффекта нет. Ничего не обновляется. Всё перепроверил - вроде должно работать, но не работает. Полез гуглить. Через некоторое время начал натыкаться на аналогичные стоны других начинающих разработчиков. Что выяснилось: Начиная с версии, кажется, 1.6, гугл вдруг решил, что установка маленьких значений в этом параметре будет сильно жрать батарею Поэтому любое значение меньше 30 _минут_ равно 30 минутам :) В документации об этом ни слова. Ну отлично, что я могу сказать. Вписать в документацию строчку конечно очень сложно (тикет от сентября 2009).
Погуглил ещё, переписал через AlarmManager, чтобы можно было установить любое время.

(то, как разнообразно глючит Eclipse я опускаю, чёрт с ним - я уже привык, да и Гугл тут слабо виноват)

Эмулятор. Стартует около 2 минут (не только у меня). Чего он там всё это время делает -  не знаю. Наверное, образ ROM читает побайтно, с fopen/fclose на каждый байт :)
Но если бы только это. Далее он начал постепенно умирать. Т.е. с каждым часом какие-то вещи происходили всё медленнее, потом он начал петь песни про app not responding [abort/wait] и т.п. Что с этим делать - неясно, причём всякие перезапуски/перезагрузки не помогают. Иногда он оживает в совершенно непонятные моменты, потом начинает тормозить опять. Кстати, у них в тикете от 2008 года о похожих вещах писали, но, как видно, починить не судьба (всё это не только у меня происходит - на форумах тоже народ стонет).

И еще об особенностях виджетов в Android'e. Я не знаю, особенность ли это текущей версии SDK или самой ОС, но существуют очень большие ограничения на контролы, которые можно использовать в виджете. По большому счёту, там можно лишь выводить текст с очень простой HTML разметкой (без таблиц и прочего), картинки и кнопки.
Если хочется какого-то скроллинга, анимации, нормального HTML (чтобы вывести вебстраничку) - уже не выйдет.
Именно этим объясняется такой бедный интерфейс большинства виджетов.

Владельцы HTC девайсов могут сказать - но вот у меня-то есть виджеты, которые и со скроллингом и с анимацией (например, тот который почту показывает).
Оказывается, это нечестные виджеты. Фактически, это что-то типа хака home screen.
(кстати, лишний плюс в сторону девайсов с HTC Sense и против Nexus One, скажем).

Мда, что-то я разошёлся.

В целом, всё это воскресило во мне воспоминания о написании первого приложения под Google App Engine. С одной стороны понимаешь, что всё это круто и правильно, с другой - постоянные глюки, недоделки, умолчания и прочее - очень напрягают.

Впрочем, если вы не собираетесь писать под Android, какая разница? Телефоны хорошие, приложений появляется всё больше. Интеграция с гуглосервисами достойная (кроме Google Tasks, который Google упорно игнорирует ).

Да, кто не понял - пост в целом задумывался позитивным :)

P.S. Мой Samsung i780 случайно никому не нужен? С запасным аккумулятором. Недорого.

Comments

( 31 comments — Leave a comment )
_dyn
May. 5th, 2010 10:40 pm (UTC)
Эмулятор. Стартует около 2 минут.

А что тут удивительного в 2х минутной загрузке эмулятора? он систему запускает с нуля. Не знаю, как Desire, а у меня телефон (G1) при включении загружается дольше.
На SDK ты зря пеняешь - вполне от стабилен. С доками проблем особых не имел, а вот примеров действительно маловато. anddev местами сильно спасает. :)

Отсутствие применения скрола (а лучше ListView) в виджетах меня вообще убило. В оригинале в разрабатываемой программа задача была сделать вывод списка из программы на home screen (что-то типа быстрого вызова). Пришлось сильно урезать.
Надеюсь, что виджеты таки расширят. но в любом случае ждать придется пока большая часть аудитории не пересядет эту версию. :(

С обновлениям у них вообще косяк какой-то. Ладно мой G1. Верю - пилотный девайс и т.д. Можно на него вообще ничего не выпускать. :)
Но уж владельцев Hero кормить завтраками и держать долгое время на 1.5 это как-то некрасиво...
_dyn
May. 5th, 2010 10:43 pm (UTC)
как-то скомкано все получилось...
мысли в такой час уже плавают :)
cr_it
May. 6th, 2010 12:09 pm (UTC)
> А что тут удивительного в 2х минутной загрузке эмулятора?
> он систему запускает с нуля.
Ну, собственно меня и на телефоне удивляет что оно там столько времени делает :) Просто непонятно зачём стартовать каждый раз заново - в эмуляторе можно же просто с образа памяти стартовать мгновенно.

Насчёт виджетов - мне вот всё же непонятно насчёт HTC'шных виджетов. Неужели они по договоренность с гуглом получили некие тайные знания для их реализации? Даже если так, всё равно это secret API должно быть совместимым - неужели они HTC Sense будут переписывать с каждой новой версией ОС?
Я к чему говорю - может просто Google в документации умолчал по какой-то причине о ряде возможностей, которые на самом деле давно есть.

С обновлениями - владельцы HTC жалуются что у них глобально всё плохо с обновлениями. Так что мне эта неприятность тоже предстоит. Особенно это волнует меня в контексте браузера (в котором кое-что нужное не поддерживается - к примеру Google Drawings не работают в принципе. Как говорят - из-за отсутствия поддержки SVG)
rdia
May. 6th, 2010 01:37 am (UTC)
> Большой проблемой является тот факт, что в гугломаркете для России (и некоторых других стран) запрещена покупка платных приложений

А у нас коммунизм! :-)

Большое спасибо за обзор. Т.е. альтернатива iPhone вроде бы получается? Вроде PC/Windows взаместо Mac/MacOs?
cr_it
May. 6th, 2010 12:13 pm (UTC)
Я думаю что да. В смысле про альтернативу - да. Но не сейчас. Android ещё слишком сырой для массового пользователя. Разработчики (интерфейса) Android'a не понимают о массовом пользователе элементарных вещей, которые Джобс понимает очень хорошо.
Возможно, какие-то выводы они сделают, но полагаю что и Джобс на месте не будет стоять :)
Однако, даже при сыром интерфейсе Гугл уже подсадил много народу (не в России) на свои сервисы, так что покупать телефоны на Android'е будут уже сейчас.
rdia
May. 6th, 2010 05:05 pm (UTC)
> Возможно, какие-то выводы они сделают, но полагаю что и Джобс на месте не будет стоять :)

Моё мнение, Джобс сольёт этот рынок точно так же, как слил рынок персоналок. И ровно по той же причине.

Эти все айПоды и айПады очень хороши, т.е. улучшать их практически некуда => и долго бежать далеко от конкурентов не получится, ибо дорога в тупик - на насыщение.
aamonster
May. 6th, 2010 06:30 am (UTC)
А можно подробнее про "виртуальную машину без JIT, что решает проблему с тормозами". Как мне казалось, без JIT как раз тормоза и полезут (т.к. код интерпретировать надо), нет?
aamonster
May. 6th, 2010 06:32 am (UTC)
Ну и вообще несколько смущает сама идея, что приложения пишутся исключительно на яве, а не нативные.
_dyn
May. 6th, 2010 07:09 am (UTC)
можно писать на плюсах через NDK
cr_it
May. 6th, 2010 12:17 pm (UTC)
Ты вырвал кусок фразы из контекста. Проблему с тормозами решает то, что виртуальная машина не стековая, как обычная Java VM, а регистровая. Эффективность выше (т.к. железка тоже регистровая), так что и без JIT'a обошлись.
Впрочем, где-то читал что они собираются JIT вводить. Короче, производительность еще можно поднять. Хотя повторяю - на 1ггц процессоре тормоза незаметны. Ну т.е. те редкие тормоза что я вижу - на мой взгляд не по вине VM, а скорее при выделении памяти и т.п.
aamonster
May. 6th, 2010 01:19 pm (UTC)
Ну, насчёт вырывания фразы из контекста - это ты воткнул "решает проблему" после упоминания отсутствия JIT, а не после регистровой машины. Тут естественно было понять неправильно.

После пояснения понятно.
superelectronic
May. 6th, 2010 07:48 am (UTC)
Именно - айфон для гиков - я точно так и подумал. С февраля использую HTC Hero.
amavlyanov
May. 6th, 2010 09:46 am (UTC)
а я поюзал Hero и пересел на N900. вот сейчас топчусь вокруг Desire - но понимаю что получу кучу проблем (и плюсов тоже много получу) вроде тотальной привязки всего и вся к сервисам гугла, отсутсвия нормального мульти-IM приложения (под N900, впрочем, оно тоже отвратительно - но хотя бы есть!), отсутсвия стандартного skype и sip приложения.

может что-то поменялось и я пропустил?
cr_it
May. 6th, 2010 12:24 pm (UTC)
skype и мульти-ИМ - да, проблема.
Просто лично я скайпом вообще не пользуюсь (никогда не понимал, зачем через компьютер говорить голосом :) а с точки зрения IM волнует только jabber и icq. Jabber (в смысле google talk) там штатный, а icq - есть ICQLive вполне работоспособный. Чтобы два в одном - что-то есть, но видимо сырое. Но это поправится со временем, наверняка.
Насчёт привязки к гуглосервисам - я бы рекомендовал расслабиться и получать удовольствие :)
Вообще, основной софт вот здесь перечислен, можно общее представление составить:
http://4pda.ru/forum/index.php?showtopic=112220
amavlyanov
May. 6th, 2010 01:44 pm (UTC)
всё-таки я привык пользоваться сервисами которые стоят на моём собственном сервере. удобнее напимер делать сортировку, да и читать мне почту лучше по imap и не зависеть от google-падений. вот это-то мне и не нравится в android: если календарь - то гугл-календарь, если почта - то гугл-почта. а поскольку google-сервисы предельно ущербны и нацелены на типичного мудака.
(no subject) - amavlyanov - May. 6th, 2010 01:47 pm (UTC) - Expand
(no subject) - cr_it - May. 6th, 2010 01:53 pm (UTC) - Expand
(no subject) - rdia - May. 6th, 2010 02:30 pm (UTC) - Expand
(no subject) - cr_it - May. 6th, 2010 02:36 pm (UTC) - Expand
(no subject) - rdia - May. 6th, 2010 04:12 pm (UTC) - Expand
(no subject) - thedeemon - May. 7th, 2010 03:00 am (UTC) - Expand
(no subject) - cr_it - May. 7th, 2010 03:51 am (UTC) - Expand
Но архив не простой. - rdia - May. 7th, 2010 04:45 am (UTC) - Expand
Re: Но архив не простой. - cr_it - May. 7th, 2010 12:43 pm (UTC) - Expand
Re: Но архив не простой. - rdia - May. 7th, 2010 01:54 pm (UTC) - Expand
(no subject) - thedeemon - May. 7th, 2010 05:39 am (UTC) - Expand
(no subject) - amavlyanov - May. 29th, 2010 06:54 am (UTC) - Expand
(no subject) - rdia - May. 29th, 2010 03:57 pm (UTC) - Expand
(no subject) - amavlyanov - May. 29th, 2010 04:39 pm (UTC) - Expand
(no subject) - rdia - May. 30th, 2010 09:17 am (UTC) - Expand
( 31 comments — Leave a comment )