Блог Сергея Байдачного

Мой блог о технологиях

Archive for the ‘Windows Phone’ Category

Перший курс українською мовою: Вступ в розробку універсальних застосунків для Windows Phone 8.1 та Windows 8.1

6 комментариев

Оцініть наш перший тренінг українською мовою. Поки що перший модуль. Звісно, далі буде краще, так як дуже складно переорієнтуватися з однієї мови на іншу.

http://channel9.msdn.com/Series/universal_apps_for_begginers/mod1

Оцініть, наскільки це можна слухати та чи робити наступні модулі???

Written by Sergiy Baydachnyy

03.09.2014 at 16:05

Опубликовано в Microsoft, Windows Phone

Tagged with

Теперь и я верю в то, что Андроид летает

7 комментариев

Полгода тому назад я попался соседу своей мамы с вопросом: Какой телефон на Андроиде лучше всего купить? Конечно же, если я программист, то должен разбираться во всех хардверных вопросах, уметь поставить Windows и настроить любой телефон. Но я не об этом.

Конечно же, услышав ключевое слово Андроид, я тут же начал рассказывать о том, что этого делать не стоит, рассказывая про неадекватную скорость работы, вирусы, высокое энергопотребление и другую пропаганду. Но сосед был не приклонен, так как основным его требованием было наличие двух SIM карт в телефоне, а ждать полгода до выхода новых моделей Nokia он не хотел. В результате купил Sony Xperia. Я потом долго рассказывал про этот случай, так как Windows Phone тогда не мог удовлетворить такой простой запрос как 2 симки и никакими приложениями мне это было не исправить.

Вчера опять ездил к маме и был снова пойман соседом. На этот раз с вопросом о том, как настроить телефон. Естественно, что я отмахнулся привычным жестом с какими-то нелестными словами об Андроиде, но тут же заметил в руках несколько иное устройство ядовито-оранжевого цвета. Так и состоялось мое первое знакомство с Nokia Lumia 630.

Естественно, что я тут же поинтересовался, где же делся Sony. На что получил пространный ответ, что с ним случилась нехорошая история и у него выросли крылья. Но мама тут же добавила: «Улетел он у него с третьего этажа. Вышвырнул он его, когда там опять что-то не работало».

Нужно понимать, что человек не богатый и довольно спокойный. Чтобы заставить его выкинуть телефон за 2500 грн из окна, нужно очень постараться. Вот он какой, Андроид.

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

Written by Sergiy Baydachnyy

02.06.2014 at 08:38

Опубликовано в Windows Phone

Tagged with

Windows Phone Emulator для Lumia 1520

leave a comment »

2 января, в самый разгар праздников:), был опубликован очередной набор виртуальных машин для Windows Phone Update 3 с поддержкой Full HD устройств (Nokia Lumia 1520). На мой взгляд важная новость, так как телефоны с Full HD рекламируются везде, а работают ли там мои приложения….

Вот ссылка Update 3 Emulators.

Written by Sergiy Baydachnyy

09.01.2014 at 14:39

Опубликовано в Windows Phone

Tagged with

MeGoGo для Windows Phone 8

with one comment

Наслаждайтесь: http://www.windowsphone.com/s?appid=e6f2e3ac-25da-434c-a82d-3aec66498a35

И никакой рекламы при просмотре фильмов.

В следующей версии должны выйти: комментарии, аутентификация, динамическая подгрузка данных в список.

Хочу отметить, что MeGoGo фильтрует контент по IP адресу. Поэтому, если Вы сидите в корп. сети или за пределами Украины, то контента может и не быть (или только старые фильмы).

Written by Sergiy Baydachnyy

16.12.2013 at 19:39

Опубликовано в Windows Phone

Tagged with

Диафильмы под Windows phone 8

with one comment

Недавно я писал о том, что вышли диафильмы для Windows 8.

Сегодня Вы сможете загрузить эти же диафильмы и на Windws Phone устройства.

Вот ссылки:

http://www.windowsphone.com/s?appid=f705cc44-a594-46e4-8420-b7882e666e84
http://www.windowsphone.com/s?appid=81ac94c2-0283-4f4b-b75c-2081fa4d4042
http://www.windowsphone.com/s?appid=993fa2d0-fa79-4be9-808a-88b76ab5f6b7
http://www.windowsphone.com/s?appid=d4ecbefd-f307-45f7-ac5f-e8cd1f313745
http://www.windowsphone.com/s?appid=a403ae18-da53-43a6-93d4-8c993d110a81
http://www.windowsphone.com/s?appid=11e9b79d-246c-4c4d-9e12-b92160c0ede0
http://www.windowsphone.com/s?appid=1442e409-41e8-46c3-90c9-a2bc8f19a5e5
http://www.windowsphone.com/s?appid=9a70680a-cac6-41ee-95f8-e41795262bf5
http://www.windowsphone.com/s?appid=cd886104-eb01-4d28-8ecb-f8469680662e
http://www.windowsphone.com/s?appid=1fccec36-7d07-43ed-9edf-c2ff4384a4e4
http://www.windowsphone.com/s?appid=1b62273a-2b33-4535-a8ef-4f144c086a40
http://www.windowsphone.com/s?appid=e57b9738-96dd-458b-a873-e49f2b5e756c
http://www.windowsphone.com/s?appid=0cedc7cd-14f7-488b-8ab8-7bf83b9ff36f
http://www.windowsphone.com/s?appid=f17e24f6-aef4-4cbe-92b6-3900b396ae9d
http://www.windowsphone.com/s?appid=7ca98775-7e31-45a2-8bec-108d2e3eeab6
http://www.windowsphone.com/s?appid=746b2990-1d43-43a6-8264-efbe479d9776
http://www.windowsphone.com/s?appid=dc92ab3c-82ba-4029-879d-737fb59fda33
http://www.windowsphone.com/s?appid=a4af02ca-7de8-436f-91d2-a81d3a9129de
http://www.windowsphone.com/s?appid=42d40323-18f1-46e5-b0fb-061cb837c761
http://www.windowsphone.com/s?appid=a2e33913-4087-4a99-b3ea-c1ce634506f3
http://www.windowsphone.com/s?appid=4a9c123a-70a0-4dfe-8faa-bd1393e453ed
http://www.windowsphone.com/s?appid=22ae3248-d1d9-4ee7-a6df-80021001a284
http://www.windowsphone.com/s?appid=c132a5a4-0278-46a0-a977-e644cfe6b5bc
http://www.windowsphone.com/s?appid=e0f532e2-8612-4158-969b-2edb22ed0fc7
http://www.windowsphone.com/s?appid=fe3d4786-527e-427f-9ed6-9372b663fe39
http://www.windowsphone.com/s?appid=ef5b85b7-9c6c-4dfd-9a3a-f2f6486c5cf2
http://www.windowsphone.com/s?appid=0826230e-af4f-49aa-aa09-a2ad65a68f3f
http://www.windowsphone.com/s?appid=c8892a80-31d7-4cd2-a180-e8b38f39e33f
http://www.windowsphone.com/s?appid=b3a4c3de-9027-4ab9-ac33-8c5d5402676d
http://www.windowsphone.com/s?appid=48eb2250-67d3-48d1-a29b-7a8dfb8c31ce
http://www.windowsphone.com/s?appid=545c6c31-87d4-47c4-b725-a1a3c0534d1d
http://www.windowsphone.com/s?appid=2039f5c4-94cb-4e71-9650-047bff3af777
http://www.windowsphone.com/s?appid=e5cf6f3b-0851-4996-9717-15fa82b61849
http://www.windowsphone.com/s?appid=f2019317-623e-49b9-a74f-b46fd98e4cd6
http://www.windowsphone.com/s?appid=b9f85a07-929d-4b9f-9bc9-c96af3828144
http://www.windowsphone.com/s?appid=0474d946-1517-4f20-9957-75fe0e20023b
http://www.windowsphone.com/s?appid=8f85f75b-d774-4534-91d4-318771a57542
http://www.windowsphone.com/s?appid=1c978e39-1b40-4aef-b5ae-fa0efc8718fe
http://www.windowsphone.com/s?appid=af75c019-7bb5-4008-a31f-ef76627d867c
http://www.windowsphone.com/s?appid=ada788b7-5841-4b1c-bbaf-bd41e8bc2452
http://www.windowsphone.com/s?appid=af28d06e-7881-444e-aa7e-c2e1664ca94b
http://www.windowsphone.com/s?appid=7f73c8a7-7173-46ca-9887-e8ceebc0604c
http://www.windowsphone.com/s?appid=126c29ce-42fd-4d00-8233-4f8e763ce06c
http://www.windowsphone.com/s?appid=ee590e81-7cf9-4a0b-b1bb-2573a978cb14
http://www.windowsphone.com/s?appid=d6dead6a-9f19-43bc-b1bd-98f3bc5daed4
http://www.windowsphone.com/s?appid=45c4a046-07ca-489d-85f0-4cc0094d12e4
http://www.windowsphone.com/s?appid=091c7468-51ad-42fb-a621-aa7bb4533969
http://www.windowsphone.com/s?appid=c585e9a2-fe12-4e01-a250-ea59d9789549
http://www.windowsphone.com/s?appid=7b72364d-df1d-4167-860f-6f0f4b0cc66c
http://www.windowsphone.com/s?appid=16a747f2-6f7c-40d3-b173-6d1f2df46534
http://www.windowsphone.com/s?appid=ba73971b-d1b4-459b-a1b0-b5e7a8cd5ae7
http://www.windowsphone.com/s?appid=6d1f3f2b-39fc-4152-b8a4-ad31777d1efd
http://www.windowsphone.com/s?appid=1ab56c63-07ee-4fe1-b234-54959ba6034a
http://www.windowsphone.com/s?appid=848a92eb-98c3-47c2-82d9-3bcb728367de
http://www.windowsphone.com/s?appid=3d065860-efdd-46fa-84f7-cabfb170afee
http://www.windowsphone.com/s?appid=0893c9c5-6aeb-4fb0-9bdb-b76d0849e842
http://www.windowsphone.com/s?appid=08f74161-89e9-40e1-bc22-ea8245f1f1b1
http://www.windowsphone.com/s?appid=b3679865-6072-4099-9a4e-53ceee8be066
http://www.windowsphone.com/s?appid=fe2cdcba-fceb-448b-8dc2-02e1233da3f2
http://www.windowsphone.com/s?appid=34f738cf-4f93-4ab6-a7ff-edd76282c437
http://www.windowsphone.com/s?appid=a1658847-a475-4edc-8aad-6a7a6d73de32
http://www.windowsphone.com/s?appid=1911353e-69cb-4dfa-ba29-987736ff954e
http://www.windowsphone.com/s?appid=c7e90396-9c57-4130-9978-7ef74bcea59c
http://www.windowsphone.com/s?appid=46ff9598-165a-4f1d-a654-f48567f06248
http://www.windowsphone.com/s?appid=51a2b6c4-2667-4ad7-ad5b-3580aa29b809
http://www.windowsphone.com/s?appid=8a217b77-cb25-4e0d-b591-65f04e55e665
http://www.windowsphone.com/s?appid=3eecd7bb-f4a9-4164-82e9-3b87174cfebd
http://www.windowsphone.com/s?appid=5954a103-78f2-4d85-9fbe-dbfc256834e9
http://www.windowsphone.com/s?appid=e1f82b9d-7787-449a-8c4d-19bb743d223f
http://www.windowsphone.com/s?appid=3dae6d66-2ce6-4a4c-88cd-2df3d32c45c1
http://www.windowsphone.com/s?appid=8eb489d0-63f1-4fa4-9a9b-0b748f775659

Written by Sergiy Baydachnyy

19.09.2013 at 19:25

Опубликовано в Microsoft, Windows Phone

Tagged with

Кто хочет выиграть летающего дрона?

9 комментариев

Make your apps fly!

Вот такую штуку я также видел только на картинке. Оказывается она умеет не только летать, но и поддерживает программный интерфейс, который также доступен для использования в Windows 8 и Windows Phone (спасибо С++ и WinRT оболочкам на С#). Хотите такого?

Чтобы его получить, достаточно принять участие в конкурсе на сайте http://fly.promorc.com/. Тут достаточно жесткие сроки, но я и не обещал, что будет все просто. Итак, чтобы выиграть дрона, нужно зарегистрироваться на сайте и прислать идею приложения до 23 августа (торопитесь!!!). До 30 сентября нужно успеть разработать приложение, а разместить в магазине до 20 октября. И вот тут хорошая новость: для Украины выделено три дрона!!! Причем все вопросы с доставкой мы берем на себя.

Дополнительно, еще два дрона, выделено для сотрудников Microsoft центральной и восточной Европы. Лично я собираюсь выиграть один из них. Поэтому, чтобы не завидовать мне потом, принимайте участие прямо сейчас!

Written by Sergiy Baydachnyy

30.07.2013 at 20:34

Опубликовано в Windows 8, Windows Phone

Tagged with ,

Курс: Разработка приложений для Windows 8 и Windows Phone (часть 3)

2 комментария

Продолжаем наши лекции по разработке приложений для Windows 8 и Windows Phone.

Ссылки на регистрацию тут:

https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032543432&Culture=UK-UA

https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032543433&Culture=UK-UA

 

Ну а запись предыдущих лекций тут:

http://sdrv.ms/SkOnmN

Written by Sergiy Baydachnyy

25.01.2013 at 16:06

Опубликовано в Windows 8, Windows Phone

Tagged with ,

Запись курсов по Windows 8 и Windows Phone

leave a comment »

В понедельник пройдет вторая лекция по разработке приложений для Windows Phone (а во вторник – Windows 8), а пока предлагаю Вам записи первой лекции. Тут же будут и все последующие:

http://sdrv.ms/SkOnmN

Written by Sergiy Baydachnyy

20.01.2013 at 09:37

Опубликовано в Windows 8, Windows Phone

Tagged with ,

Курс: Разработка приложений для Windows 8 и Windows Phone (часть 2)

leave a comment »

Written by Sergiy Baydachnyy

16.01.2013 at 09:30

Опубликовано в Windows 8, Windows Phone

Распознавание и обработка речи (часть 3)

with one comment

Последняя, но немаловажная часть Speech API – распознавание речи. Тут Windows Phone 8 позволяет выполнять преобразование на основании имеющегося словаря, который может быть предоставлен как самой системой, так и разработчиком. При этом реализация приложения не привязана к вызову стандартных диалоговых окон, а может иметь и свой собственный интерфейс, позволяющий пользователю осуществить ввод.

Перейдем к более детальному описанию возможностей. Итак, как и в случае создания голосовых команд, первым делом нужно задекларировать несколько возможностей, это ID_CAP_NETWORKING, ID_CAP_MICROPHONE, ID_CAP_SPEECH_RECOGNITION:

<Capabilities>
  <Capability Name="ID_CAP_NETWORKING" />
  <Capability Name="ID_CAP_MICROPHONE" />
  <Capability Name="ID_CAP_SPEECH_RECOGNITION" />
</Capabilities>

Как только манифест модифицирован, можно перейти к реализации логики. Тут первым делом нужно определиться с языком, на котором говорит пользователь и проверить его наличие в системе. Для этого пригодиться класс InstalledSpeechRecognizers, который содержит два свойства, это All и Default, содержащие информацию о всех установленных механизмах распознавания и о механизме по умолчанию. Если Ваше приложение рассчитано на один из языков, то тут можно обойтись вот таким кодом, который будет проверять наличие языка и получать информацию о соответствующем механизме, чтобы в дальнейшем ее использовать:

SpeechRecognizerInformation info = null;

if ((from item in InstalledSpeechRecognizers.All
     where item.Language.Contains("ru")
     select item).Count() > 0)
{
    info = (from item in InstalledSpeechRecognizers.All
            where item.Language.Contains("ru")
            select item).First();
}

 

Как только мы убедились в том, что язык существует и доступен, можно переходить к инициализации объектов по распознаванию речи. Windows Phone 8 предлагает два класса, которые могут реализовать сколь угодно сложные сценарии, это SpeechRecognizerUI и SpeechRecognizer. Первый класс представляет собой готовое решение, поддерживающее стандартное диалоговое окно и возможности по его модификации. Однако, если Вы хотите разработать свой собственный интерфейс, то тут может быть полезен второй класс, который берет на себя лишь функцию распознавания речи. Создание объектов обеих классов не вызывает затруднений. Тут просто нужно помнить о том, что SpeechRecognizerUI является контейнером для SpeechRecognizer, поэтому доступ к свойствам механизма распознавания в случае доступен SpeechRecognizer напрямую, а в случае SpeechRecognizerUI нужно пользоваться свойством Recognizer.

SpeechRecognizer reco = new SpeechRecognizer();
reco.SetRecognizer(info);

SpeechRecognizerUI recoUI = new SpeechRecognizerUI();
recoUI.Recognizer.SetRecognizer(info);

 

Код выше не только создает объекты, но и задает выбранный нами язык.

Теперь поговорим немного о настройках самих объектов. Тут оба имеют свойство Settings, но в случае со SpeechRecognizer это доступ к настройкам самого механизма распознавания, а в случае со SpeechRecognizerUI – доступ к настройкам диалогового окна. В любом случае настройки достаточно простые. Если говорить о настройках стандартного диалогового окна, то тут следующие свойства:

· ExampleText – строка текста, которая задает пример того, что может сказать пользователь;

· ListenText – строка текста, задающая заголовок стандартного окна по распознаванию речи;

· ReadoutEnabled – позволяет определить, нужно ли зачитывать пользователю распознанный текст;

· ShowConfirmation – позволяет определить, нужно ли отображать подтверждение о том, что текст распознан (или нет), или это будет брать на себя само приложение.

В случае с объектом типа SpeachRecognizer, тут есть следующие свойства:

· BabbleTimeout – свойство задает время, которое пользователь может болтатьJ;

· EndSilenceTimeout – задает время, которое будет затрачено на распознавание речи после окончания монолога пользователя;

· InitialSilenceTimeout – задает время ожидания начала монолога пользователя.

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

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

· Положится на тот словарь, который идет в стандартной поставке;

· Задать свой словарь с помощью простого списка;

· Использовать Speech Recognition Grammar Specification (SRGS), чтобы задать словарь в виде XML документа.

В своих исследованиях я начал с первого варианта. Согласно документации, при распознавании речи через стандартный механизм, доступ к словарю осуществляется по сети. При этом можно задать один из двух параметров, это обычное распознавание речи (особо ничего задавать и не нужно) или поиск сказанного в Web.

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

SpeechRecognitionUIResult recoResult = await recoUI.RecognizeWithUIAsync(); 

 

Если необходимо использовать механизм поиска в Web, то тут на одну строчку кода больше:

recoUI.Recognizer.Grammars.AddGrammarFromPredefinedType(
    "searchKey",SpeechPredefinedGrammar.WebSearch);

SpeechRecognitionUIResult recoResult = await recoUI.RecognizeWithUIAsync();

 

Как видно из кода, для вызова диалога по распознаванию речи используется метод RecognizeWithUIAsync. В случае использование класса SpeechRecognizer, используется метод RecognizeAsync. В качестве возвращаемого значения используется класс SpeechRecognitionUIResult (или SpeechRecognitionResult), откуда можно выбрать сам текст, который был распознан и его рейтинг (насколько верно был распознан текст в рамках текущего словаря). Рейтинг текста может быть одним из значений перечислимого типа SpeechRecognitionConfidence и принимать одно из четырех значений: High, Low, Medium и Rejected.

Наибольший интерес представляет возможность задания собственного словаря (особенно в свете того, что у меня русский словарь п умолчанию не работаетJ). Задания собственного словаря позволит улучшить точность распознавания в рамках Вашей предметной области. Кроме того, если словарь у Вас находится локально, то это позволит увеличить и скорость распознавания.

Для задания своего словаря используется коллекция Grammars объекта типа SpeechRecognizer. Поскольку Grammars коллекция, то способна содержать сразу набор словарей, но это могут быть словари на основе списка слов или на основе SRGS. Нельзя мешать собственный словари и словарь по умолчанию. Чтобы задать словарь в виде списка, достаточно использовать конструкцию наподобие этой:

reco.Grammars.AddGrammarFromList("myGr1",
    new List<String>() { "апельсин","яблоко","банан"});

 

Если словарь задается с помощью XML, то тут используется метод AddGrammarFromUri:

reco.Grammars.AddGrammarFromUri("myDict",
    new Uri("ms-appx:///myDict.grxml",UriKind.Absolute));

 

При этом ссылка может указывать как на ресурсы пакета, так и на файл, расположенный в сети. Во втором случае метод эффективно использовать вместе с методом PreloadGrammarsAsync, чтобы предварительно подгрузить словарь из сети.

Вот собственно и все, что нужно знать о распознавании речи в Windows Phone 8.

Written by Sergiy Baydachnyy

04.01.2013 at 12:41

Опубликовано в Windows Phone

Tagged with