windows phone 8: Обзор возможностей ( часть 1)
DESCRIPTION
Windows Phone 8: Обзор возможностей ( часть 1). Сергей Байдачный Специалист по разработке программного обеспечения Майкрософт Украина [email protected]. Конкурс приложений для Windows Phone. http://wp8.promorc.com. Содержание. «Живые» плитки в Windows Phone 8 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/1.jpg)
Windows Phone 8: Обзор возможностей (часть 1)
Сергей БайдачныйСпециалист по разработке программного обеспечения
Майкрософт Украина[email protected]
![Page 2: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/2.jpg)
Конкурс приложений для Windows Phone
http://wp8.promorc.com
![Page 3: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/3.jpg)
Windows Phone
Содержание• «Живые» плитки в Windows Phone 8• Интеграция с экраном блокировки• Работа с хранилищами данных• «Глубокие» ссылки и ассоциации с
файлами
![Page 4: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/4.jpg)
«Живые» плитки в Windows Phone 8
![Page 5: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/5.jpg)
Windows Phone
Персонализация устройства• Они все одинаковые….
![Page 6: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/6.jpg)
Windows Phone
Flip Tile Шаблон (TemplateFlip, FlipTileData)
medium: 336x336small: 159x159
wide: 691x336
![Page 7: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/7.jpg)
Windows Phone
Cycle Tile Шаблон (TemplateCycle, CycleTileData)
medium: 336x336small: 159x159
wide center crops to medium
wide: 691x336
![Page 8: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/8.jpg)
Iconic Tile Шаблон (TemplateIconic, IconicTileData)
medium: 202x202small: 110x110
white with transparency only
crop tight on horizontal
![Page 9: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/9.jpg)
Windows Phone
Новые типы плиток• Демонстрация
![Page 10: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/10.jpg)
Работа старых приложений
WP7.5 поддерживают маленькие иконки на WP8!
От разработчика ничего не требуется Происходит автоматическое масштабирование
![Page 11: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/11.jpg)
Windows Phone
Работа старых приложений• Вы можете использовать Reflection для
доступа к новым классам на платформе WP 8
• http://mangopollo.codeplex.com - пример библиотеки для WP 7.x по расширению возможности плиток
![Page 12: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/12.jpg)
Интеграция с экраном
блокировки
![Page 13: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/13.jpg)
Windows Phone
Интеграция с экраном блокировки
Отображение контента из приложения на экране блокировки
Отображение иконки и счетчика (когда счетчик >0)
Работает вне зависимости от того, прикреплена ли плитка на основной экран
Задается в манифесте с помощью Extensions элемента
![Page 14: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/14.jpg)
Windows Phone
Обновление заставки
Пользователь может выбрать провайдера изображений в “lock screen” настройках
?WallpaperSettings=1
Приложение может запросить пользователя на право быть провайдером картинок
Предоставляйте DefaultLockScreen.jpg в корне XAP
Задается в манифесте с помощью Extensions элемента
![Page 15: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/15.jpg)
Работа с хранилищами данных
![Page 16: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/16.jpg)
Windows Phone
StorageFile и StorageFolder• Простой способ взаимодействия с
директориями и файлами• Используется в следующих случаях:
– Доступ через InstalledLocation (в текущем объекте типа Package) к директории приложения
– Доступ к локальной директории приложения, предназначенной для хранения файлов, изолированных от других приложений (LocalFolder)
– Доступ к специальным директориям (в LocalFolder)• ISETool.exe – утилита для работы с
директориями приложения в устройстве
![Page 17: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/17.jpg)
Windows Phone
Расширена работа с Media Library• Добавление и удаление музыки
– SaveSong и Delete• Получение абсолютного пути к элементу• Данные хранятся как в памяти телефона,
так и на внешних SD картах
![Page 18: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/18.jpg)
Windows Phone
Работа с данными на SD карте• Приложение должно задекларировать
эту возможность• Работа осуществляется только с
ассоциированными с приложением файлами
• Дополнительный набор классов:– ExternalStorageDevice– ExternalStorageFile– ExternalStorageFolder
![Page 19: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/19.jpg)
Windows Phone
Интеграция с контактами• Приложения в Windows Phone 8 могут
создавать свои группы контактов• Контакты приложения интегрируются в
стандартный Contact Hub• К другим группам контактов приложение
имеет доступ только на чтение (как и в WP 7.x)
![Page 20: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/20.jpg)
«Глубокие» ссылки и ассоциации с файлами
![Page 21: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/21.jpg)
Windows Phone
Немного о классе Launcher• Пример запуска страницы сайта• Пример запуска внешнего приложения
– ms-settings-lock:• Передача файла
private async void LauchSomething(){ StorageFolder local = ApplicationData.Current.LocalFolder; StorageFile bqfile = await local.GetFileAsync("myfile.myex"); bool b=await Launcher.LaunchFileAsync(bqfile);}
![Page 22: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/22.jpg)
Windows Phone
Ассоциация задана
Launch URI: skype:call?5551234
![Page 23: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/23.jpg)
Windows Phone
Нет приложений
![Page 24: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/24.jpg)
Windows Phone
2+ приложения
![Page 25: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/25.jpg)
Windows Phone
Создание ссылок• Добавление элементов в манифест
<Extensions> <Protocol Name="myprotocol" NavUriFragment="encodedLaunchUri=%s" TaskID="_default"/></Extensions>
![Page 26: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/26.jpg)
Windows Phone
Создание ассоциации: иконки• Почта, браузер,
офис• Размеры
– Small: 33px– Medium: 69px– Large: 176px
![Page 27: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/27.jpg)
Windows Phone
Запуск приложений через Proximity• Запуск приложения на удаленном
устройствеProximityDevice device = ProximityDevice.GetDefault();
if (device != null) { long Id = device.PublishUriMessage( new System.Uri("contoso:NewProducts")); }
![Page 28: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/28.jpg)
Windows Phone
Вопросы?
![Page 29: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/29.jpg)
Windows Phone 8: Обзор возможностей (часть 2)
Сергей БайдачныйСпециалист по разработке программного обеспечения
Майкрософт Украина[email protected]
![Page 30: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/30.jpg)
Windows Phone
Содержание• Карты и местоположение• Распознавание голоса• Кошелек• Коммуникации• И другое…..
![Page 31: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/31.jpg)
Определение местоположения
![Page 32: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/32.jpg)
Windows Phone
Доступно из C# и C++Позволяет определять положение через интервал времени или базируясь на перемещенияхПозволяет задать точность в метрах и времяПозволяет задать максимальный «возраст» данных
.Net APIs
Windows RuntimeAPIs
Предустановленная точностьПроблемы с кешированиемТолько из управляемых приложенийТребует вызова Start и Stop
A-GPS
Wi-fi
Cell
Доступные APIs
![Page 33: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/33.jpg)
Windows Phone
Определение позицииpublic async Task<Geocoordinate> GetSinglePositionAsync()
{
Geolocator geolocator = new Geolocator();
geolocator.DesiredAccuracyInMeters = 10;
Geoposition geoposition = await geolocator.GetGeopositionAsync(
TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(30));
return geoposition.Coordinate;
}
![Page 34: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/34.jpg)
Windows Phone
Отслеживание измененийprivate Geolocator trackingGeolocator;
private TypedEventHandler<Geolocator, PositionChangedEventArgs> positionChangedHandler;
public void StartTracking()
{
trackingGeolocator = new Geolocator();
trackingGeolocator.MovementThreshold = 100;
// или
trackingGeolocator.ReportInterval = (uint)TimeSpan.FromSeconds(30).TotalMilliseconds;
positionChangedHandler = (geolocator, eventArgs) => {};
trackingGeolocator.PositionChanged += positionChangedHandler;
}
public void StopTracking()
{
trackingGeolocator.PositionChanged -= positionChangedHandler;
}
![Page 35: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/35.jpg)
Работа с картами
![Page 36: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/36.jpg)
Windows Phone
Windows Phone 8 Map Control• Nokia Mapping Data
110+ стран, векторные карты, 3D объекты, несколько режимов
• Offline MapsЗагружаются пользователем, MapsDownloader задача доступна для разработчика
• Map ControlУдобное взаимодействие, быстрая прорисовка, поворот
• Отображение направленияВычисляется через Maps Services
![Page 37: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/37.jpg)
Windows Phone
Windows Phone Maps Services
• Geocoding Latitude,Longitude to Address
• Reverse Geocoding Address to Latitude,Longitude
• RoutingRouteQuery, Route, RouteLeg, RouteManeuver
![Page 38: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/38.jpg)
Windows Phone
Part of Windows Phone ToolkitMapsUserControlPushPinToGeoCoordinate
Map Control &ServiceAPIs
Map ToolkitExtensions
ID_CAP_MAP and ID_CAP_LOCATION
Developer Token assigned through Windows Phone Developer Center
.Net
Windows Phone Map and Services API
![Page 39: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/39.jpg)
Местоположение в фоне
![Page 40: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/40.jpg)
Windows Phone
Настройка приложения• App manifest:<defaultTask Name="_default" NavigationPage="MainPage.xaml" >
<BackgroundExecution>
<ExecutionType Name="LocationTracking" />
</BackgroundExecution >
</defaultTask>
![Page 41: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/41.jpg)
Windows Phone
Ограничения
• Только в XAML приложениях
• Только одно приложение может быть запущено
• Ограничения по доступу к ресурсам
![Page 42: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/42.jpg)
Windows Phone
Использование ресурсов• CPU затраты на уровне10%• Доступ к
Location Audio\Speech Network Storage Sensors
• Нет доступа к камере и микрофону• ShellToast и ShellTile.Update
![Page 43: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/43.jpg)
Windows Phone
Контроль со стороны пользователя• ID_CAP_LOCATION
• Пользователь может закрыть приложение
• Пользователь может запретить функциональность для приложения
![Page 44: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/44.jpg)
Windows Phone
Деактивация• Приложение работает в фоне пока:
• Приложение отслеживает местоположение• Пользователь не запретил Location Services• Не прошло 4 часа без перехода из фона• Battery Saver не включена• Другое приложение не переходит в фон• Достаточно памяти
• Предоставляется информация о причине деактивации
• Нотифицируйте пользователя
![Page 45: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/45.jpg)
Распознавание голоса
![Page 46: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/46.jpg)
Windows Phone
Управление голосом• Более гибкая настройка приложения для
управления голосом• Поддержка API по распознаванию голоса• Поддержка API по синтезу голоса
![Page 47: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/47.jpg)
Windows Phone
Синтез голоса
async private void ButtonTTS_Click(object sender, RoutedEventArgs e){ SpeechSynthesizer synth = new SpeechSynthesizer(); await synth.SpeakTextAsync( "You have a meeting with Peter in 15 minutes.");}
Всего две строки кода:
![Page 48: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/48.jpg)
Windows Phone
Распознавание голосаasync private void ButtonSR_Click(object sender, RoutedEventArgs e){ SpeechRecognizer reco = new SpeechRecognizer();
// Use the default short message dictation grammar SpeechRecognitionResult recoResult = await reco.RecognizeAsync();
// Do something with the recognition result
MessageBox.Show(string.Format("You said {0}.", recoResult.Text));}
![Page 49: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/49.jpg)
Кошелек
![Page 50: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/50.jpg)
![Page 51: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/51.jpg)
Windows Phone
NFC и кошелек• Быстрый механизм передачи данных
между приложениями (без сложного установления доверительных отношений)
• Поддержка безопасных механизмов передачи
• Хранение кредиток, скидок и др. в одном месте
• Возможность ассоциации карты с приложением
• Поддержка безопасности на уровне pin
![Page 52: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/52.jpg)
![Page 53: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/53.jpg)
Object Model
WalletTransactionItemBase
PaymentInstrumentID_CAP_WALLET_PAYMENTINSTRUMENTSID_CAP_WALLET
WalletTransactionItemID_CAP_WALLET
DealID_CAP_WALLET
WalletItem
![Page 54: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/54.jpg)
Windows Phone
App <-> Item Linking
Wallet Item #1
Wallet Item #2
Wallet Item #3
Wallet Item #4
Wallet Item #5
App A
App B
![Page 55: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/55.jpg)
Коммуникации
![Page 56: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/56.jpg)
Windows Phone
.SocketsTCP/UDP, No
Listening
.WebRequest
HTTP
.WebClientHTTP
Wrapper, Not Awaitable
System.Net
Windows Phone 7.1
![Page 57: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/57.jpg)
Windows Phone
IXMLHTTPRequest2 (IXHWR)
.SocketsTCP/UDP
.ProximityNFC,
Bluetooth
Windows.Networking
WinsockTCP/UDP
Native
.SocketsTCP/UDP
.WebRequest
HTTP
.WebClientHTTP
Wrapper, Not Awaitable
System.Net
Windows Phone 8
![Page 58: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/58.jpg)
Sockets
• Managed Sockets – System.Net.Sockets• TCP & UDP- Socket, Multicast, Listen
• Winsock - winsock2.h, ws2tcpip.h, ….• Winsock API Family; SOCK_STREAM, SOCK_DGRAM
• WinRT – Windows.Networking.Sockets• TCP- StreamSocket• UDP- DatagramSocket
![Page 59: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/59.jpg)
Proximity
• Near Field Communication (NFC)• Short range (2-4cm) protocol, low bandwidth (~424 kbit/s)• Acquire connections and exchange small amount of data, bootstrap
WinRT StreamSocket• Allows App->App and App->Device connectivity
• Bluetooth• 0-100m range• WinRT StreamSocket for communication (~2.1 Mbit/s)• Allows App->App and App->Device connectivity
![Page 60: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/60.jpg)
HTTP Support
WP8• HTTPWebRequest • WebClient
• IXMLHTTPRequest2
Win8• HTTPWebRequest • HTTPClient
• IXMLHTTPRequest2
Platform
Managed Native
![Page 61: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/61.jpg)
И другое…
![Page 62: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/62.jpg)
Windows Phone
Новые устройства• Разрешения
– 480 x 800– 768 x 1280– 720 x 1280 (16:9)
![Page 63: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/63.jpg)
Windows Phone
Шаринг данных• ShareMediaTask – диалог для шаринга
медиа файлов в социальных сетях по выбору пользователя
![Page 64: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/64.jpg)
Windows Phone
Новые элементы управления• LongListSelector
![Page 65: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/65.jpg)
Windows Phone
И еще немного…• Pivot и Panorama как часть платформы• Линзы• Улучшения работы с загрузкой
фотографий• Улучшение работы с камерой• Покупка в приложении• DirectX
![Page 66: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/66.jpg)
Windows Phone
Вопросы совместимости• Windows Phone 8 поддерживает quirks
режим, который позволяет запускать старые приложения
• Перекомпиляция старых приложений не всегда приводит к успеху
– Документация содержит информацию о том, что необходимо изменить
![Page 67: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/67.jpg)
Windows Phone
Вопросы?
![Page 68: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/68.jpg)
C++ при разработке Windows Phone 8
приложенийСергей Байдачный
Специалист по разработке программного обеспечения
Майкрософт Украина[email protected]
![Page 69: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/69.jpg)
Windows Phone
Содержание• С++ и Windows Phone• Современный С++• Расширение С++ для Windows 8 и
Windows Phone 8• Немного о DirectX
![Page 70: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/70.jpg)
Windows Phone
Две модели приложенийУправляемая• Использование уже
существующих подходов (C#/XAML)
• Большое количество элементов управления
• Поддержка XNA
Нативная• Разработка
приложений на С++• Переносимость
некоторых библиотек и кода с Windows 8
• Повышение производительности игр при утилизации DirectX
![Page 71: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/71.jpg)
Windows Phone
Две модели приложений• Допускается встраивание DirectX
компонент в XAML интерфейс• Создание приложений на HTML 5 не
поддерживается, но …
![Page 72: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/72.jpg)
Windows Phone
C++ в Windows Phone 8• Visual C++ 2012• Тот же С++, что и в Windows 8• Новые возможности C++11
RValue references Forward declared enums Bidirectional fences
static_assert Alignment Data-dependency ordering
Auto Standard-layout and trivial types exception_ptr
Trailing return types Extended friend declarations Thread-local storage
Lambdas Local and unnamed types as template arguments __func__
Decltype Range-based for-loop C99 preprocessor
Right angle brackets override and final long long
extern templates Minimal GC support
nullptr Atomics
Strongly typed enums Strong compare and exchange
![Page 73: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/73.jpg)
Windows Phone
Portable Class Libraries• Одинаковый код• Один проект• Одна сборка• Множество платформ
![Page 74: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/74.jpg)
Windows Phone
Portable Class Libraries
Platform-specific
Portable /shareable
Platform-specific
Windows Phone app Windows Store app
![Page 75: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/75.jpg)
Windows Phone
Что же можно делать на С++
NetworkingProximityIn-App PurchaseSensorsLocationFile SystemCore app modelThreading
![Page 76: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/76.jpg)
Windows Phone
C++ reimaginedC++ 11
autoshared_ptrdecltype. . . . .http://msdn.microsoft.com/en-us/library/hh567368.aspx
C++/CX
Улучшение производительности С++ разработчика на платформе Windows 8 и Windows Phone 8
![Page 77: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/77.jpg)
Windows Phone
C++ Component Extensions (C++/CX)Key Bindings Feature Summary1. Data Types
ref class Reference typevalue class Value typeinterface class Interface
property Property with get/set
event “Delegate property” with add/remove/raise
delegate Type-safe function pointergeneric Type-safe generics
2. Allocation gcnew Garbage-collected allocationref new Reference-counted allocation
3. Pointer & Reference
^ Strong pointer (“hat” or “handle”)% Strong reference
![Page 78: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/78.jpg)
Windows Phone
Создание классов Windows Runtime• Defining
public ref class Person { public: Person(String^ name, String^ email); void Greet(Person^ other); internal: ~Person(); void SetPassword(const std::wstring& passwd);};
• UsingPerson^ p = ref new Person(“John Surname”);p->Greet(ref new Person(“Jim Surename”);
![Page 79: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/79.jpg)
Windows Phone
Работа с памятью• Handle (^) is a pointer to a Windows Runtime object
for which the compiler performs automatic reference counting
• ref new instantiates or activates a Windows Runtime class.
Person^ p;{ Person^ p2 = ref new Person(); // refcount = 1 p2->Name = “John”; // refcount = 1 p = p2; // refcount = 2} // refcount = 1p = nullptr; // refcount = 0; ~Person()
![Page 80: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/80.jpg)
Windows Phone
Интерфейсы• Inheriting
public interface class IFeline : IAnimal { void Scratch();};
• Implementingref class Cat : IFeline { public: virtual void Play(); virtual void Scratch();};
Definingpublic interface class IAnimal { void Play();};
UsingIAnimal^ animal = ref new Cat();animal->Play();
![Page 81: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/81.jpg)
Windows Phone
Свойства• Defining
– Trivial properties (with private backing store)public: property String^ Name;
– User defined propertiespublic: property Person^ Sibling { Person^ get() { InitSiblings(); return _sibling; } void set(Person^ value) { _sibling = value; NotifySibling(); } }private: Person^ _sibling;
• UsingPerson^ p = ref new Person(“John”);p->Sibling = ref new Person(p->Name);
![Page 82: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/82.jpg)
Windows Phone
Делегаты• Declaring: like a function
public delegate void PropertyChanged( String^ propName, String^ propValue );
• Instantiating: like a class– From lambda:
auto p = ref new PropertyChanged( [](String^ pn, String^ pv) { cout << pn << ” = “ << pv; } );
– From free-functionauto p = ref new PropertyChanged( UIPropertyChanged );
– From class-memberauto p = ref new PropertyChanged( this, MainPage::OnPropertyChanged );
• Invoking: like a functionp( “Visible”, false );
![Page 83: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/83.jpg)
Windows Phone
События• Defining
– Trivial event (with private backing store)public: event PropertyChanged^ OnPropertyChanged;
– User defined eventpublic: event PropertyChanged^ OnNetworkChanged { EventRegistrationToken add(PropertyChanged^); void remove(EventRegistrationToken t); void raise(String^, String^);}
• Using– Subscribing
person->OnPropertyChanged += propertyChangedDelegate;auto token = person->OnPropertyChanged::add(propertyChangedDelegate);
– Unsubscribingperson->OnPropertyChanged -= token;person->OnPropertyChanged::remove(token);
![Page 84: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/84.jpg)
Windows Phone
Исключения• Signaling an error case: throw
exception– throw ref new InvalidArgumentException();– throw ref new COMException(E_*);
• Handling an error case: catch exception– try { … } catch (OutOfMemoryException^
ex) { … }– Access HRESULT value via ex->HResult
• Notes on exceptions:– catch (Platform::Exception^) catches all
WinRT exceptions– Exceptions don’t carry any state and don’t
travel across modules– Deriving from an exception class is ill-
formed
HRESULT ExceptionE_OUTOFMEMORY
OutOfMemoryException
E_INVALIDARG InvalidArgumentException
E_NOINTERFACE InvalidCastException
E_POINTER NullReferenceException
E_NOTIMPL NotImplementedException
E_ACCESSDENIED
AccessDeniedException
E_FAIL FailureExceptionE_BOUNDS OutOfBoundsExcep
tionE_CHANGED_STATE
ChangedStateException
REGDB_E_CLASSNOTREG
ClassNotRegisteredException
E_DISCONNECTED
DisconnectedException
E_ABORT OperationCanceledException
![Page 85: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/85.jpg)
Windows Phone
Обобщенные типы• Implementing
ref class PairStringUri: IPair<String^, Uri^> {public:
property String^ First;
property Uri^ Second;};
Defininggeneric<typename T, typename U> public interface class IPair {
property T First;property U Second;
};
UsingIPair<String^, Uri^>^ uri = GetUri();auto first = uri->First; // type is String^auto second = uri->Second; // type is Uri^
![Page 86: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/86.jpg)
Windows Phone
Частичные типы• Partial class definition
private partial ref class MainPage: UserControl, IComponentConnector{public: void InitializeComponent(); void Connect() { btn1->Click += ref new EventHandler(this, &MainPage::Button_Click); }};
• Class definitionref class MainPage{public: MainPage() { InitializeComponent(); } void Button_Click(Object^ sender, RoutedEventArgs^ e);};
![Page 87: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/87.jpg)
Windows Phone
Vector and ObservableVector• Instantiating
using namespace Platform;Vector<String^>^ items = ref new Vector<String^>();
• Adding elementsitems->Append(“Hello”);
• Returning a read-only view of the vectorIVectorView<String^>^ GetItems () { return items->GetView();}
• Getting notification for changesitems->VectorChanged += ref new VectorChangedEventHandler<String^> (this, &MyClass::VectorChanged);
![Page 88: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/88.jpg)
Windows Phone
Map and ObservableMap• Defining
using namespace Platform;Map<String^, Uri^> favorites = ref new Map<String^, Uri^>();
• Adding elementsfavorites->Insert(“MSDN”, ref new Uri(“http://msdn.com”));
• Checking and removing elementsif (favorites->HasKey(“MSDN”)) favorites->Remove(“MSDN”);
![Page 89: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/89.jpg)
Windows Phone
Немного о DirectX• C++/DirectX – поддержка нативных
приложений• XNA продолжает поддерживаться• Поддержка DirectX 11.1, но уровень 9.3• Возможность интеграции XAML и DirectX
![Page 90: Windows Phone 8: Обзор возможностей ( часть 1)](https://reader036.vdocuments.mx/reader036/viewer/2022081502/56816356550346895dd40379/html5/thumbnails/90.jpg)
Windows Phone
Вопросы?