910 likes | 1.16k Views
Windows Phone 8: Обзор возможностей ( часть 1). Сергей Байдачный Специалист по разработке программного обеспечения Майкрософт Украина Sergiy.Baydachnyy@microsoft.com. Конкурс приложений для Windows Phone. http://wp8.promorc.com. Содержание. «Живые» плитки в Windows Phone 8
E N D
Windows Phone 8: Обзор возможностей (часть 1) Сергей Байдачный Специалист по разработке программного обеспечения Майкрософт Украина Sergiy.Baydachnyy@microsoft.com
Конкурс приложений для Windows Phone • http://wp8.promorc.com
Содержание «Живые» плитки в Windows Phone 8 Интеграция с экраном блокировки Работа с хранилищами данных «Глубокие» ссылки и ассоциации с файлами
Персонализация устройства Они все одинаковые….
Flip Tile Шаблон(TemplateFlip, FlipTileData) small: 159x159 medium: 336x336 wide: 691x336
Cycle Tile Шаблон(TemplateCycle, CycleTileData) small: 159x159 medium: 336x336 wide: 691x336 wide center crops to medium
Iconic Tile Шаблон(TemplateIconic, IconicTileData) small: 110x110 medium: 202x202 white with transparency onlycrop tight on horizontal
Новые типы плиток Демонстрация
Работа старых приложений WP7.5 поддерживают маленькие иконки на WP8! От разработчика ничего не требуется Происходит автоматическое масштабирование
Работа старых приложений Вы можете использовать Reflection для доступа к новым классам на платформе WP 8 http://mangopollo.codeplex.com - пример библиотеки для WP 7.x по расширению возможности плиток
Интеграция с экраном блокировки Отображение контента из приложения на экране блокировки Отображение иконки и счетчика (когда счетчик >0) Работает вне зависимости от того, прикреплена ли плитка на основной экран Задается в манифесте с помощью Extensions элемента
Обновление заставки Пользователь может выбрать провайдера изображений в “lock screen” настройках ?WallpaperSettings=1 Приложение может запросить пользователя на право быть провайдером картинок Предоставляйте DefaultLockScreen.jpg в корне XAP Задается в манифесте с помощью Extensions элемента
StorageFileи StorageFolder • Простой способ взаимодействия с директориями и файлами • Используется в следующих случаях: • Доступ через InstalledLocation (в текущем объекте типа Package) к директории приложения • Доступ к локальной директории приложения, предназначенной для хранения файлов, изолированных от других приложений (LocalFolder) • Доступ к специальным директориям (в LocalFolder) • ISETool.exe – утилита для работы с директориями приложения в устройстве
Расширена работа с Media Library • Добавление и удаление музыки • SaveSongи Delete • Получение абсолютного пути к элементу • Данные хранятся как в памяти телефона, так и на внешних SD картах
Работа с данными на SD карте • Приложение должно задекларировать эту возможность • Работа осуществляется только с ассоциированными с приложением файлами • Дополнительный набор классов: • ExternalStorageDevice • ExternalStorageFile • ExternalStorageFolder
Интеграция с контактами Приложения в Windows Phone 8 могут создавать свои группы контактов Контакты приложения интегрируются в стандартный Contact Hub К другим группам контактов приложение имеет доступ только на чтение (как и в WP 7.x)
«Глубокие» ссылки и ассоциации с файлами
Немного о классе Launcher private async void LauchSomething() { StorageFolder local = ApplicationData.Current.LocalFolder; StorageFilebqfile = await local.GetFileAsync("myfile.myex"); bool b=await Launcher.LaunchFileAsync(bqfile); } • Пример запуска страницы сайта • Пример запуска внешнего приложения • ms-settings-lock: • Передача файла
Ассоциация задана Launch URI: skype:call?5551234
Создание ссылок <Extensions> <Protocol Name="myprotocol" NavUriFragment="encodedLaunchUri=%s" TaskID="_default"/> </Extensions> Добавление элементов в манифест
Создание ассоциации: иконки • Почта, браузер, офис • Размеры • Small: 33px • Medium: 69px • Large: 176px
Запуск приложений через Proximity ProximityDevice device = ProximityDevice.GetDefault(); if (device != null) { long Id = device.PublishUriMessage( new System.Uri("contoso:NewProducts")); } Запуск приложения на удаленном устройстве
Windows Phone 8: Обзор возможностей (часть 2) Сергей Байдачный Специалист по разработке программного обеспечения Майкрософт Украина Sergiy.Baydachnyy@microsoft.com
Содержание Карты и местоположение Распознавание голоса Кошелек Коммуникации И другое…..
Доступные APIs Доступно из C# и C++ Позволяет определять положение через интервал времени или базируясь на перемещениях Позволяет задать точность в метрах и время Позволяет задать максимальный «возраст» данных • Предустановленная точность • Проблемы с кешированием • Только из управляемых приложений • Требует вызова Start и Stop A-GPS Wi-fi Cell .Net APIs Windows Runtime APIs
Определение позиции publicasyncTask<Geocoordinate> GetSinglePositionAsync() { Geolocatorgeolocator = new Geolocator(); geolocator.DesiredAccuracyInMeters = 10; Geopositiongeoposition = awaitgeolocator.GetGeopositionAsync( TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(30)); return geoposition.Coordinate; }
Отслеживание изменений private GeolocatortrackingGeolocator; private TypedEventHandler<Geolocator, PositionChangedEventArgs> positionChangedHandler; publicvoid StartTracking() { trackingGeolocator = new Geolocator(); trackingGeolocator.MovementThreshold = 100; // или trackingGeolocator.ReportInterval = (uint)TimeSpan.FromSeconds(30).TotalMilliseconds; positionChangedHandler = (geolocator, eventArgs) => {}; trackingGeolocator.PositionChanged += positionChangedHandler; } publicvoid StopTracking() { trackingGeolocator.PositionChanged -= positionChangedHandler; }
Windows Phone 8 Map Control • Nokia Mapping Data110+ стран, векторные карты, 3D объекты, несколько режимов • Offline MapsЗагружаются пользователем, MapsDownloaderзадача доступна для разработчика • Map ControlУдобное взаимодействие, быстрая прорисовка, поворот • Отображение направленияВычисляется через Maps Services
Windows Phone Maps Services • GeocodingLatitude,Longitude to Address • Reverse Geocoding Address to Latitude,Longitude • RoutingRouteQuery, Route, RouteLeg, RouteManeuver
Windows Phone Map and Services API Part of Windows Phone Toolkit MapsUserControl PushPin ToGeoCoordinate • ID_CAP_MAP and ID_CAP_LOCATION • Developer Token assigned • through Windows Phone • Developer Center Map Control & Service APIs .Net Map Toolkit Extensions
Настройка приложения • App manifest: <defaultTaskName="_default"NavigationPage="MainPage.xaml" > <BackgroundExecution> <ExecutionTypeName="LocationTracking" /> </BackgroundExecution> </defaultTask>
Ограничения • Только в XAML приложениях • Только одно приложение может быть запущено • Ограничения по доступу к ресурсам
Использование ресурсов • CPU затраты на уровне10% • Доступ к • Location • Audio\Speech • Network • Storage • Sensors • Нет доступа к камере и микрофону • ShellToastиShellTile.Update
Контроль со стороны пользователя • ID_CAP_LOCATION • Пользователь может закрыть приложение • Пользователь может запретить функциональность для приложения
Деактивация • Приложение работает в фоне пока: • Приложение отслеживает местоположение • Пользователь не запретил Location Services • Не прошло 4 часа без перехода из фона • Battery Saver не включена • Другое приложение не переходит в фон • Достаточно памяти • Предоставляется информация о причине деактивации • Нотифицируйте пользователя
Управление голосом Более гибкая настройка приложения для управления голосом Поддержка API по распознаванию голоса Поддержка API по синтезу голоса
Синтез голоса Всего две строки кода: async privatevoidButtonTTS_Click(object sender, RoutedEventArgs e) { SpeechSynthesizer synth = newSpeechSynthesizer(); awaitsynth.SpeakTextAsync("You have a meeting with Peter in 15 minutes."); }
Распознавание голоса async privatevoidButtonSR_Click(object sender, RoutedEventArgs e) { SpeechRecognizerreco = newSpeechRecognizer(); // Use the default short message dictation grammarSpeechRecognitionResultrecoResult = await reco.RecognizeAsync(); // Do something with the recognition result MessageBox.Show(string.Format("You said {0}.", recoResult.Text)); }