среда, 28 сентября 2011 г.

Отладка на A8

После некоторых несложных манипуляций телефон вполне пригоден для разработчика. Нужно:

  • разрешить установку левых приложений
  • разрешить отладку по USB
  • провести над компом некоторые шаманские манипуляции в зависимости от вашей ОС
  • получить рутовский доступ

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

Собственно с третьим единственная сложность - узнать Vendor ID. На коробке, или в мануале такие вещи не пишут - по причине ненадобности для большинства пользователей. Узнать (в Linux) его можно командой lsusb. Нужно выполнить ее дважды - перед подключением телефона и после, чтобы не гадать какое из устройств является нашим телефоном. Нас интересует лишь то устройство которое появится в списке. Как я уже писал - мой телефон идентифицирует себя как HTC. Далее следуем инструкциям на android.com.

Надо сказать что я не совсем понимаю какой смысл разработчики Android вкладывали в блокирование рута, если в результате его все равно получить не так уж сложно? Блокировать - так уж насмерть, или не маяться дурью. Тем более зачем нужно оставлять в настройках пункты 1 и 2 на телефоне, который изначально предполагается как чисто пользовательский (не девелоперский)? Так или иначе мой A8 изначально шел заблокированный и при попытке подцепиться к нему через ADB выдавал вот такой результат:

четверг, 22 сентября 2011 г.

WiFi

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

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

A8

Вот я и стал счастливым (почти) обладателем китайского смартфона. Купленный на молотке, он обошелся мне в смешную сумму (3.333 руб + проценты за перевод денег через сбербанк). Добирался он до меня из Китая почти месяц и вот наконец добрался. Больше всего я переживал за его скитания по российской почте, но китайцы упаковали его очень хорошо и посылкой можно было спокойно играть в футбол, не опасаясь за целостность аппарата.

среда, 3 августа 2011 г.

Муки выбора блог-клиента

Какие только блог-клиенты я не перепробовал... честное слово, голова идет кругом. Раз в один-два месяца, когда меня очередной раз достает примитивный интерфейс встроенного редактора blogger или livejournal я сажусь и по новой роюсь в обзорах пытаясь найти программу, которая не то что устроит меня полностью, но хотя бы будет работать без явных глюков

пятница, 29 июля 2011 г.

Прогноз погоды через XML


  • gismeteo.ru - дает прогноз на сутки
  • foreca.com - дает яндексу
  • у гугла мутный секретный API - хуже чем у GisMeteo
  • суммируя до кучи всех прочих - нет нихрена в открытом доступе


сейчас как наиболее реальный вариант рассматриваю возможность выдрать необходимую информацию из XHTML странички для мобильников, которую дает Яндекс. Не есть хорошо с любой точки зрения, но за неимением лучшего варианта...

На маркете из бесплатных пожалуй лучший вариант от Яндекса. Росгидрометцентр платный, Gismeteo ограничен суточным прогнозом и зря народ просит большего. Автор явно забил на свое творение (потому как развивать в общем-то некуда) и просто имеет какой-то трафик на свой сайт.

При таком раскладе свое приложение можно сделать исключительно в учебных целях

WebView - вот это номер!

Решил написать свое первое приложение, которое выполнят хоть что-то полезное, а именно выводит прогноз погоды. Сделать это можно по разному, в том числе не просто, а очень просто:


  1. Берем на GisMeteo код HTML информера
  2. Ложим в файлик, файлик кладем в assets
  3. Загружаем файлик в WebView. Не забываем про setSciptEnabled("true")
  4. Вуаля, все здорово


А вот и хрен. WebView говорит - страница недоступна. После непродолжительного траха выясняем, что удаление из файлика содержимого тега <style> лечит эту проблему и наступает счастье. Однако это не есть хорошо, потому как непонятно - а в чем собственно проблема заключалась? Проблем-то, собственно быть не должно изначально. Заметим также, что в браузере (который как бы идентичен WebView данный информер открывается нормально).

Ищем... ага, вот, не я один наступил на эти грабли

В конце концов выясняем. Символы типа % воспринимаются методом WebView.loadData(...) как специальные и он изгаляется над ними с особой жестокостью.

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

вместо
mWebView.loadData(data,"text/html" ,"utf-8");
используем
mWebView.loadDataWithBaseURL(null,data,"text/html" ,"utf-8",null);

и ничего, никуда перекодировать не надо. И работает!... один раз. Но тут выясняется что упал Gismeteo.ru. Неужели это я?!!! Да не, навряд ли.

Проверяем:
It's not just you! http://informer.gismeteo.ru looks down from here.

Ну и хрен с ним. На сегодня найдутся другие дела, а более сложный вариант получения погоды рассмотрим завтра

четверг, 28 июля 2011 г.

Крестики-нолики

Поскольку я редкостная язва, то даже пытаться пролезть на хабрахабр довольно бессмысленная затея. Что не мешает мне его читать. Вот довольно таки полезная статья по созданию приложения уровнем посложнее чем набивший оскомину Hello, World.

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

Начнем с того, что тупо проверять все мыслимые варианты, в то время как тебе точно известно где поставлена последняя метка - граничит с идиотизмом. Достаточно проверить одну вертикальную линию, одну горизонтальную и две диагонали. 4 линии вместо 14. Это в наихудшем случае. Если метка не попадает на диагональ, то логично не проверять эту диагональ вовсе.

Замечу также что известна последняя метка - стало быть если это крестик, то сложно ожидать что вдруг выиграли нолики. И наоборот. Что еще сильнее упрощает проверку.