среда, 27 ноября 2013 г.

Достаём контакты с Андроидного смартфона с неработающим тачскрином и отключенной синхронизацией

Второй раз за пол-года возникли проблемы с Андроидным телефоном. Первый раз просто по глупости разбил тачскрин. Новый ехал из Китая 2 месяца, причём в итоге деньги мне вернули за недоставку до дедлайна, а на следующий день он таки приехал :) Жаль не надолго. Начались проблемы с тачскрином, достигшие апофигея сегодня - просто хаотично нажимаются произвольные участки экрана. Пользоваться невозможно. Опять на помощь приходит старый СониЭрикссон которому уже лет 8 и очень тихий микрофон. Но другого выхода нет. Не покупать же в локальных магазинах, а доставка китайца опять месяца на 2.

Самое важное в телефоне - это контакты. Их и будем вытаскивать и вставлять в СониЭриксон. Синхронизации контактов нет, всё хранится локально. В Андроиде - в базе sqlite3, а именно тут:

воскресенье, 3 ноября 2013 г.

Про копирастию. Нельзя торговать музыкой так же как пирожками

Проблема копирастии становится всё более актуальной. Киностудии всячески пытаются наезжать на файлообменные сети и кричать на весь мир что скачивая "пиратскую" копию фильма вы лишаете бедных актёров и продюсеров куска хлеба, что это не этично, пиратство и бла-бла-бла. Ну что сказать? Дибилизм и зашоренность сознания, которые растут из времён когда стоимость копии фильма, музыкального альбома или книги складывалась из стоимости физического носителя информации и затрат собственно на создание. Плюс, конечно же, многоуровневая дистрибьюция болванок по миру. Т.е. цена копии имела место быть и на неё была размазана стоимость создания примерно как в стоимость планшета включена стоимость его разработки.

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

воскресенье, 20 октября 2013 г.

Ещё один проигрыватель аудиокниг под Андроид

Так получилось что я люблю аудиокниги и с приобретением смартфона на Андроиде решил использовать его в качестве проигрывателя. Попробовав несколько различных платных и бесплатных приложений пришёл к решению что надо писать свой. Основная претензия к ним: глючно работает сохранение текущей позиции в книге. В Akimbo вообще периодически у текущей книги сбрасывается позиция на начало. У других просто проблемы с воспроизведением в каких-то местах. Например, стоит прервать воспроизведение и потом продолжить его, как может перескочить на неверную позицию. Самым лучшим пока считаю Audiobook 303, но он так же подвержен произвольным скачкам позиции воспроизведения.

Вторая претензия - это попытка захавать все mp3 с SD-карточки и рассортировать в своей базе "коллекции". А я хочу просто указать каталог на файловой системе и не нужно пытаться за меня организовать коллекцию.

И так решил написать свой плеер

среда, 16 октября 2013 г.

Смена серийного номера Android-устройства

Многие китайские производители Android-девайсов не заморачиваются на присваивание своим поделкам уникальных серийных номеров. По крайней мере в софте. И можно столкнутся с проблемой когда одновременно подключено более 1 устройства с одинаковым серийником. В таком случае adb будет ругаться и чтобы залить и отлаживать своё приложение нужно отключать одно из устройств:
[2013-10-16 00:03:10 - MyAwesomeApp] Failed to install MyAwesomeApp.apk on device '0123456789ABCDEF': adb rejected install command with: more than one device
[2013-10-16 00:03:10 - MyAwesomeApp] com.android.ddmlib.AdbCommandRejectedException: more than one device
[2013-10-16 00:03:10 - MyAwesomeApp] Launch canceled!
Это никуда не годится. Имея root-привелегии можно решить эту проблему.

воскресенье, 13 октября 2013 г.

Кое-что о протоколе ccTalk

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

Позволяет подключать на одну шину много устройств, прост в реализации. Подробные спецификации есть на сайте http://www.cctalk.org/ в 4 pdf-файлах, причём с примерами реализации для популярных устройств (монетоприёмники, купюроприёмники).

В этой записи я расскажу про некоторые основные моменты, которые не становятся понятны с первого прочтения спецификации.

четверг, 10 октября 2013 г.

Переключение раскладки по Caps Lock

Привычка - очень сильная вещь. Привычка переключать раскладку клавиатуры по Ctrl+Shift оказалась чрезвычайно долгоиграющей.

Регулярно испытывал неудобства, например, в Eclipse где многие нужные хоткеи состоят из Ctrl+Shift+что-то. А поскольку данная комбинация перехватывается иксами (или кем там в DE), то хоткеи эти в программах не работают. Долго мучился из-за этого. Причём Caps Lock уже давно отключен за ненадобностью и вредностью - легко задеть его случайно.

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

В KDE изменить хоткей для переключения раскладки элементарно (олдфаги помнят в 3.х версии это был тот ещё квест). А вот в LXDE+Openbox оказалось чуточку сложнее. Решение ниже

четверг, 26 сентября 2013 г.

Фикс ошибки сборки libtorrent-rasterbar: error: expected class-name before '{' token

При сборке libtorrent-rasterbar-0.16.10 (возможно и других версий) можно получить такую ошибку:
In file included from disk_buffer_pool.cpp:33:0:
../include/libtorrent/disk_buffer_pool.hpp:52:2: error: expected class-name before '{' token
  {
  ^
make[1]: *** [disk_buffer_pool.lo] Error 1
Похоже на баг с инклюдами.  boost::noncopyable оказывается не определён на момент компиляции этого файла.

Грязный хак для исправления - добавить в начало файла include/libtorrent/disk_buffer_pool.hpp:
#include <boost/utility.hpp> 
Разработчики в курсе, ну а пока решаем проблему так.

Фикс ошибки svn: E170000: Unrecognized URL scheme for

Внезапно решил обновить svn, а поскольку дистрибутив уже не поддерживается лет дцать, то только исходники. Версия 1.8.3. Собрал, но получил ошибку при попытке достучаться до репозитория по http:
svn: E170000: Unrecognized URL scheme for http:// ...
Возникает если svn собран без библиотеки serf, которая нужна для доступа по http к репозиторию. При этом скрипт configure не ругнётся об отсутствии этой библиотеки (если в лог не заглянуть), а молча соберёт svn без поддержки http. Установка библиотеки решает проблему. Кстати, собирается она с помощью scons причём очень свежей версии.