[Android] Снятие скриншотов с экрана

Для записи видео с экрана устройства, работающего под управлением ОС Android есть не так уж и много действительно нормальных средств. Часть из них — это приложения, которые нужно устанавливать непосредственно на устройство, но они в большинстве свое требуют рут-права. Также еще есть приложение «Screencast Video Recorder«, не требующее рутового девайса, но оно не поддерживает платформу Tegra, поэтому проверить работоспособность этой программы на HTC EVO 3D не представляется возможным.

Также я нашел утилиту Ashot, написанную на Java, которая будучи запущенной на компьютере, позволяет записывать скринкаст, поступающий с устройства, правда, сохраняется все это дело не в привычном видеоформате, а в виде отдельных кадровых изображений в формате PNG (позднее их можно будет смонтировать в видеоряд).

Чтобы начать работать с Ashot, нужно:

  • Скачать — http://sourceforge.net/projects/ashot/
  • Папку «AndroidScreenCapture» можно скопировать, к примеру, в директорию, где установлен AndroidSDK
  • Из папки «platform-tools» скопировать файл «adb» в папку «tools» (это трюк для Mac OS. Для Windows нужно копировать еще парочку файлов)
  • Запустить AShot-1.1.jar и указать местоположение AndroidSDK

Есть устройство уже подключено к компьютеру, то программа сразу же отобразит его экран:

ashot

[iOS] Крах Safari при попытке открыть Google Translate

Чтобы добиться аварийного завершения работы браузера Safari в iOS 7 beta, можно зайти на сайт translate.google.com (по умолчанию откроется мобильная версия сайта), и нажать на ссылку «Полная версия», после чего браузер рухнет.

Актуально для iOS 7 beta 5 и 6 (возможно, проблема воспроизводилась и на более ранних версиях беты).

Fast Boot от HTC — после включения часы показывают старое время

Я уже делился своими впечатлениями об HTC EVO 3D. В этом телефоне, как и во многих других от HTC, есть интересная фишка, позволяющая «быстро» включать телефон (технология называется «Fast Boot»). По сути, когда вы выключаете устройство, оно переходит в спящий режим, а процесс включения (в данном случае пробуждения) занимает не более десяти секунд. Это очень хороший маркетинговый ход, да и вообще, такое быстрое включение — вещь удобная, хотя и потребляет, наверно, какой-то % использования аккумулятора.

Так вот, после «быстрого» включения заметил особенность, связанную с системным временем — экран блокировки все равно продолжает показывать то время, когда аппарат был выключен (хотя в таскбаре часы показывают правильное время). Если после этого разблокировать экран, а затем вновь заблокировать, то часы уже начинают показывать корректное время. А бывает и наоборот: экран блокировки показывает правильное время, а таскбар — то, когда аппарат был выключен.

Nokia 5800 XM -> HTC EVO 3D

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

HTC EVO 3D хоть и был выпущен два года назад, но до сих пор представляет из себя достойное устройство с весьма неплохой аппаратной начинкой с двухядерным процессором 1,2 ГГц и 1 ГБ оперативной памяти. Работает телефон под управлением Android 4.0.3. Ну и, конечно, его главная фича — это автостереоскопический экран и возможность съемки стереоизображений, благодаря наличию двух камер на борту. Минусом считаю слабую батарейку на 1730 mAh, которая ели-ели держит один день.

До этого момента я использовал Android-устройства только в качестве тестирования разрабатываемой в нашей фирме приложения. И теперь вот настало время использовать телефон по прямому назначению. Импорт контактов из моей Nokia 5800 XM не составил труда — в 5800 имеется возможность передачи контактов на другое устройство через Bluetooth, чем я и воспользовался. SMS-сообщения, правда, я переносить не стал, т.к. это требует дополнительных телодвижений. В новых версиях Android’а есть замечательная опция «Mobile Network», отключение которой позволяет запретить различным программам и службам использовать Интернет, если телефон использует только сотовую связь (актуально, если у вас нет подключенных тарифных опций по использованию Интернета, к примеру, таких как «Бит» от МТС). Звук динамика при разговоре четкий и громкий, микрофон тоже нареканий не вызывает. Вообще, функции звонков, адресной книги и передачи СМС-сообщений в Android’е сделаны неплохо и уж точно не хуже, чем в моей Nokia 5800. Теперь хотелось бы сравнить эти функции с теми, которые присутствуют в iOS. Но это, скорее всего произойдет позже, когда я куплю iPhone.

[Andriod] «response -1008:Unknown error» при оформлении платной подписки

Сегодня на работе тестировали возможность оформления платной подписки  в нашем приложении для Android. Столкнулись с проблемой, связанной с тем, что Google после совершения платежа отправлял статус с ошибкой IAB returned null purchaseData or dataSignature (response -1008:Unknown error), хотя сама подписка приобреталась успешно. Первая мысль — программист где-то накосячил в коде. Была получена клятва, что ошибок в коде нет, а виной всему Google.

Источник проблемы вскоре все же был найден. Оказывается, для совершения оформления подписок нужно использовать не метод mHelper.launchPurchaseFlow(), фигурирующий в официальной документации, а mHelper.launchSubscriptionPurchaseFlow(), который в официальной по какой-то причине отсутствует.

Задаем скорость и задержку соединения в Android-эмуляторе

Чтобы указать скорость входящего и исходящего сетевого соединения для эмулятора (в килобайтах), достаточно запустить его с помощью следующей команды:

emulator -avd <avd_name> -netspeed <up>:<down>

Готовые профили:

-netspeed gsm — GSM/CSD (up: 14.4, down: 14.4)
-netspeed hscsd — HSCSD (up: 14.4, down: 43.2)
-netspeed gprs — GPRS (up: 40.0, down: 80.0)
-netspeed edge — EDGE/EGPRS (up: 118.4, down: 236.8)
-netspeed umts — UMTS/3G (up: 128.0, down: 1920.0)
-netspeed hsdpa — HSDPA (up: 348.0, down: 14400.0)
-netspeed full — без ограничения (up: 0.0, down: 0.0)

Задержка (в миллисекундах) устанавливается так:

emulator -avd <avd_name> -netdelay :

Готовые профили:

-netdelay gprs — GPRS (min 150, max 550)
-netdelay edge — EDGE/EGPRS (min 80, max 400)
-netdelay umts — UMTS/3G (min 35, max 200)

Подробнее о команде:

emulator -help-netspeed

BlueStack как альтернатива дефолтному Android-эмулятору

Иногда для тестирования Android-приложений приходится использовать эмулятор. Порой дефолтный эмулятор из Andoid SDK оказывается настолько тормознутым, что вызывает панические приступы ненависти к нему. Поэтому в основном я использую BlueStack — очень легковесный эмулятор, со встроенной поддержкой установки приложений через Google Play. BlueStack легко подхватывается DDMS, поэтому никаких сложностей в просмотре логов и прочей информации не возникает.

Единственное, по началу было не ясно, а на какой же версии Android работает эмулятор? Оказывается, уже на устаревшей версии 2.3.4, но выбор понятен — Android 4.x более требователен к ресурсам, а это незамедлительно бы сказалось на производительности самого эмулятора и BlueStack уже не был бы явным фаворитом для работы.

Полезные ссылки:

Официальный сайт
Форум поддержки

[Android] Сбор и просмотров логов без использования ADB

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

CatLog может пригодится в тех случаях, когда необходимо выявить причину ошибки, которая возникает у удаленного пользователя — достаточно попросить его установить это приложение, запустить в режиме записи, затем воспроизвести ошибку и отправить лог-файл уже непосредственно разработчику.

Также в некоторых случаях может пригодится программа System Info Droid, которая позволяет собирать системную информацию об устройстве и отправлять ее по электронному адресу.

Про баг в Dropbox для iPad

Нашел интересную «особенность» в клиенте Dropbox 2.1.3 для iPad. Вот один из способов воспроизведения:

— открыть изображение -> вверху показывается навигационное меню Dropbox (название файла, шаринг и т.п.)
— не дожидаясь, когда навигационное меню автоматически скроется, вызвать список выбора файлов и дождаться, когда теперь уже навигационное меню скроется; выбрать другой файл (не изображение), к примеру, текстовый файл -> меню больше нет и его невозможно никак выбрать

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

Разработчикам отправил репорт.