среда, мая 28, 2014

Ничего нового…

Возился с “живыми плитками” в “универсальном приложении”, по ходу дела пришлось немного переделывать картинки, использующиеся для тайлов и прочих эмблем-заставок.

Всё шло хорошо до момента сборки пакета для телефонного магазина (пакет для магазина Windows собрался без приключений). Телефонная сборка не удалась с сообщением "Ошибка 20: манифест приложения ссылается на изображение …, которое не имеет кандидата в главном пакете приложения." или  "APPX3210: App manifest references the image … which does not have a candidate in main app package.". Выяснилось, что к такому приводит использование “визуального редактора” манифеста, который “помогает” выбрать файл для графического ресурса. При этом файл переименовывается и иногда может записываться в папку телефонного приложения. Если же путь к файлу написать руками, никаких переименований-перемещений не будет, а работать программка будет и так.

image

 В проекте для Windows такого прикола нет, в итоге общая папка картинок для тайлов выглядит так (файлы с суффиксом .wp телефонные, остальные для windows):

image

Собственно, ничего необычного: здесь переименовали, там об этом позабыли, а тут - рыбу заворачивали (©).

 Если всё же удалось в передрягу с телефонными файлами попасть, надо переименовать файлы взад (убрать .scale-100), удалить папки \bin и \obj, переименованные файлы включить в разделяемый проект. Не болтай

воскресенье, мая 25, 2014

Игрушечка-3 или Универсальные приложения.

Модное направление - как бы из одного кода получать приложения как для Windows 8.1 - десктоп, планшет – так и для смартфонов под Winphone 8.1.

clip_image001

Что называется, уговорили, черти красноречивые… Пришлось запустить вторую версию программки, теперь в технике “универсального” приложения. 

Microsoft для изготовления таких приложений выпустила специальное обновление для Студии 2013, которое, в общем-то, нормально в работе помогает - шаблоны проектов, ссылки на общие файлы, конвертация предыдущих проектов и т.п.

Самое большое, что пришлось переделывать – это вызов страниц типа “About program”, “Settings” и т.п. В предыдущей версии (для Windows) программы для этого использовались страницы типа SettingsFlyout с вызовом через системные средства:

2.settings

В телефонном API таких средств не находится, поэтому пришлось делать отдельные страницы типа Page и запускать их через системное меню:

form-2-green-2

Самое крупное, до чего не додумались почему-то в Microsoft – это условная компиляция XAML, наподобие #if … #endif в C#. Очень скоро выяснилось, что без этого жить сильно сложно - внешний вид в win- и wp-приложениях может (иногда и должен) сильно различаться: расположение и оформление контролов, даже разный их набор… Можно, конечно, разрулить кодом, но тогда зачем XAML?

Хорошие ребята, всё же, до нужного решения додумались - XAML Conditional Compilation. C этим решением возможны конструкции наподобие такой:

clip_image001

Студия, правда, не сильно это понимает, талдычит об ошибках там и сям и неправильно рисует внешний вид страниц в конструкторе. Иногда приходится по-разному называть контролы - по мнению Студии, имена используются дважды… Увеличивается количество строк в ресурсах для локализации… При сборке приходится дополнительно запускать очистку решения - но эти неудобства перекрываются тем, что не нужно писать массу "художественного" - для отрисовки - кода (которого и без этого хватает).
Выяснились некоторые другие проблемы отрисовки на телефоне некоторых элементов – AppBarButton, ComboBox.

Ещё выяснилось, что “просто так” шрифт для разных телефонов не масштабируется. Иногда на большом –  шестидюймовом - телефоне можно некоторые надписи и не рассмотреть.

В случае надписей “при полях ввода” достаточно установить стандартный стиль:

 

clip_image001

 

Для “заголовков”, которые хочется видеть “пожирнее”, стили нужны разные:

 

clip_image002

 

В итоге получается достаточно пристойно на разных устройствах. Становится хуже, если начать крутить в настройках телефона размер шрифта - можно на максимуме получить наползающие друг на друга строки и т.п. Как с этим бороться - ХЗ. Скорей всего, и не стоит: которые крутят на максимум - ССЗБ.

 

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

 

Гораздо смешнее оказалась ситуация с получением данных о проигрываемой музыке от других программ. Этот режим стал для меня лично основным режимом использования программы: слушаю на планшете, например, калифорнийское джазовое радио через турецкую программу RADYO,  периодически нажимаю кнопку шаринга и отправляю данные на Last.fm. Буквально 4 движения-нажатия. Набралось несколько и других программ, через которые иногда слушаю музыку.

Во второй, универсальной, версии, расширил перечень принимаемых при обмене форматов в попытке получить дополнительную информацию. Получилось извлечь нужную информацию из данных от программ  jamendo и 22tracks, в которых тоже есть неплохая музыка. Но всё это в Windows-окружении.

В телефонном магазине, как оказалось, музыкальных программ, которые обмениваются по стандартному протоколу, практически и нет.

Те программы, аналоги которых на Windows работают как требуется, для телефонов либо отсутствуют, либо обмениваются только “текстом” с адресом страницы. Обмен в "нормальном" виде, с информацией о треке - только с Твиттером и Фейсбуком, чистый хардкод.

В принципе, для телефонов есть пара клиентов Last.fm, передающих информацию о проигрываемых треках, однако не все проигрыватели пользуются стандартными средствами и скробблеры их не понимают. Так что, для статистики на last.fm они потеряны.

 

Из функций программки, в итоге, телефону достаются только ручная набивка данных в форме и скробблинг по файлам на диске. До появления программ, разработанных под WinPhone 8.1, вовсе не обязательно “универсальных”.

 

Страница с описаниями -  https://sites.google.com/site/dyakovkm/lastfmuniwrite

 

Программы можно взять в магазинах: