Технический обзор возможностей платформы windows phone

Post on 25-Feb-2016

58 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Технический обзор возможностей платформы Windows Phone. Стас Павлов s tas.pavlov@microsoft.com @ stasus. платформа. Железо. Емкостной дисплей 4 или более точек контакта. 800 . Сенсоры A-GPS, Accelerometer, Compass, Light, Proximity, Gyro. Камера 5 мегапикселей или более. - PowerPoint PPT Presentation

TRANSCRIPT

Технический обзор возможностей платформы Windows Phone

Стас Павловstas.pavlov@microsoft.com@stasus

платформа

ЖелезоЕмкостной дисплей4 или более точек контактаСенсорыA-GPS, Accelerometer, Compass, Light, Proximity, GyroКамера5 мегапикселей или болееМультимедиа возможностиМинимальная спецификация, акселерация кодековПамять256MB RAM или более, 8GB Flash или болееGPUАкселерация инструкций DirectX 9CPUQualcomm MSM7x30, MSM8x55 800Mhz или более

800

480

Аппаратные кнопки | Назад, Старт, Поиск

API

Kernel Hardware BSP

App Model UI Model Cloud Integration

Приложения

App managementLicensingChamber isolationSoftware updates

Shell frame Session managerDirect3DCompositor

Xbox LIVEBingLocationPush notificationsWindows Live ID

Ваше приложение

A-GPS Accelerometer Light Compass ProximityMedia Wi-Fi Radio Graphics Gyro

SecurityNetworkingStorage

FrameworksSilverlight XNA HTML/JavaScript

CLR (.NET CF)

Hardware

CloudDevice

Phone EmulatorSamples DocumentationGuides Community

Packaging and Verification Tools

NotificationsLocation Identity Feeds

MapsSocial

App Deployment RegistrationValidation

CertificationPublishing

MarketplaceMO and CC Billing

Business IntelligenceUpdate Management

СервисыTools

Publishing ServicesPlatform Services

Sensors Media DataXbox LIVE Notifications

.NET Framework managed code sandbox

LocationPhone

Runtime

Инструменты Windows Phone SDK:

Visual Studio 2010 Express Edition Expression Blend 4 for Windows Phone Windows Phone Extensions for XNA Game Studio 4.0 Windows Phone Developer Registration Tool Application Deployment Tool Windows Phone Emulator Performance and Memory Profiler Marketplace Test Kit

http://create.msdn.com

ВозможностиКамера

Прямой доступ к изображению и вспышке

Фото и видео

Сеть

Сокеты

Информация о соединении

Сенсоры

GPS

Акселерометр

Компас

Гироскоп

Сенсор движения

Данные

SQL CE

Контакты

Календарь

Запуск и Выбор

Bing Maps

E-mail

Номер телефона

Адрес

Элементы управления

Базовые элементы

Silverlight Toolkit

Еще больше – от сообщества

Расширение базовых приложенийУведомления

Tile, Toasl, Raw

Deep Toast

Расширения

Search

Music

Photos

Тайлы

Заголовок, текст, обратная сторона

Обновление программно и через веб-сервис

Множественные тайлы

разработка

Платформа – 2 типа приложений

Современные приложения, управляемые событ-ми.Быстрое создание богатых графических приложенийHTML/JavascriptУстоявшаяся, надёжная, популярная технология

Высокопроизводительная игровая платформаБыстрое создание многоэкранных 2D и 3D игрБогатая content pipelineУстоявшаяся технология для Xbox, Windows, и Zune / WP7Игры

(и приложения)Приложения

(и игры)

Silverlight

Типы проектов

13

Что такое Silverlightв Windows Phone

XAML .NET CFC#, VB.NET, F#

XAML Наглядный язык разметки Поддержка включений файлов Полная интеграция в Visual Studio и Expression Blend Code Behind Data Binding Sample Data Storyboards Transform

Silverlight Controls

Silverlight Toolkit

Hub`ы: панорамы и пивоты

Декомпозиция экрана

App Bar

SIP

App Page

Incoming Call

System TrayNotification

Volume

Direct3D Surface

Навигация Frame

Контейнер верхнего уровня PhoneApplicationFrame class

Page Управляет содержимым экрана Потомок PhoneApplicationPage

class Кнопка «Назад»

Ориентация

Можно ограничивать Можно обрабатывать

В большинстве случаев достаточно автоматической обработки

SupportedOrientations="Portrait"

SupportedOrientations="PortraitOrLandscape"

21

Input Scope

<TextBox InputScope="Number" ...

Панель приложения до 4х иконок 48х48, ч/б и без круга остальные пункты в

дополнительном меню помните о текущем

контексте приложения

XNA

Что может XNA? Мощная математическая библиотека Content Pipeline Работа с 2D графикой Полноценная 3D графика (DirectX 9) Поддержка шейдеров (встроенные) Работа совместно с Silverlight

Frameworks designed for performance

Производительность

Frameworks designed for performance

Разработаны с требованием

производителностиFrameworks designed

for performanceОпробованный успех

на игровых сценарияхВ будущее WP7 – с

управляемым кодом!

Нет лишней сборки мусора

Оптимизированные мат.библиотеки

API с переходом на нативный код

4+ года профилирования и оптимизации Эффективная работа на WP7

XNA Framework

Core FrameworkGraphics Audio Input Math Storage

Networking Gamer Services

Extended FrameworkApplication Model Content Pipeline

Игры

Starter KitsВаш код Ваш контент Компоненты

ПлатформаDirectX .NET CF

Networking Gamer Services*

XNA для разработчика Использует .NET Framework как основу Игры пишутся на C#

Generics LINQ И т.д.

Игры запускаются как управляемый код Безопасное исполнение кода Управление памятью Поддержка Windows, Xbox, Windows Phone 7

3D Полноценная поддержка 3D на

уровне платформы Аппаратное ускорение для всего,

что нужно и можно ускорять аппаратно

29

Игровой цикл«Все игры делают это»

Загрузка контентаОбновление состояния сценыОтрисовка сцены

Управление ресурсами – критично на мобильной платформе даже для небольших приложений

Инициализация

Загрузка ресурсов

Освобождение ресурсов

Обработка событий

Вычисление сцены

Определение хода игры

Обратная связь

Типичный игровой цикл

30

Игровой цикл«Все игры делают это»

Load content when they startUpdate the game worldDraw the game world

XNA: 30 кадров в секунду на Windows Phone

Initialize() LoadContent()

UnloadContent()

Update()

Draw()

Игровой цикл XNA Framework

31

Пример Game LoopИгровой цикл

protected override void Update(GameTime gameTime){ // Allows the game to exit if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

this.Exit();

// TODO: Add your update logic here

base.Update(gameTime);}

protected override void Draw(GameTime gameTime){ GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Add your drawing code here

base.Draw(gameTime);}

Content Pipeline Унифицированная платформа для хранения, обработки и

извлечения игровых ресурсов Набор “importers” для стандартных типов ресурсов

Разработчики могут создавать свои importers Ресурсы хранятся в специальном репозитории

Типы файлов

Названиеимпортера

Класс импортера

Выходной класс

.bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, .tga.

XNA Texture Importer

TextureImporter TextureContent

.fx XNA Effect Importer

EffectImporter EffectContent

.x XNA X File Importer

Ximporter NodeContent

.fbx XNA Autodesk FBX Importer

FbxImporter NodeContent

.xml XNA XML Importer

XmlImporter Object

.xap XNA XACT Project Importer

- -

Content PipelineImporters

5 эффектов

BasicEffect SkinnedEffect EnvironmentMapEffectAlphaTestEffectDualTextureEffect

Windows Phone

Интеграция XNA и Silverlight1. «Обычная» страница2. SharedGraphicsDeviceManager3. UIRenderElement

Internet Explorer HTML5

WebBrowser Control – наше все<Grid x:Name="LayoutRoot" Background="Transparent"> <Grid x:Name="ContentPanel"> <phone:WebBrowser IsScriptEnabled="True" IsGeolocationEnabled="True"/> </Grid></Grid>

3 базовые возможности

Загрузить HTML Вызвать «хост» Выполнить скрипт на странице

3 базовые возможности

Navigate / NavigateString window.external.Notify WebBrowser.InvokeScript

ФреймворкиPhoneGap

http://phonegap.com

PhoneGap

Plugins

Фреймворки

http://jquerymobile.com/

jQuery

• Знакомый• Развивающийся• Настраиваемый

jQuery Mobile + PhoneGap• Работает

• Есть проблемы с

совместимостью разных версийhttp://wiki.phonegap.com/w/page/36868306/UI%20Development%20using%20jQuer

yMobile

IE9Media & Graphics

HTML5 VideoHTML5 Canvas

SVGHTML5 Audio

Cascading Style Sheets (CSS3)

Background/Borders

2D Transforms

Fonts ModuleMedia Queries

NamespacesColors Module

Values & UnitsSelectors

Additional Standards & Web Applications Support

Traversal & Range

DOM Core Level 2/.3

DOM Events Level 2/3L2 HTML & Style

ECMAScript 5Geolocation

Selector APIs Level 2ICC Color Profiles

XML Parse/Serial

Semantic Elements

DataURIsCSSOM View

модель исполнения приложений

Жизненный цикл: состоянияRunning

DormantTumbstoned

в памяти; потоки остановлены,ресурсы освобождены

выгружено из памяти; сохранены специальныесловари

FAS (Fast Application Switching)

Жизненный цикл: события и методы

Running

Lunching EventApplication

OnNavigateTo MethodPage

OnNavigateFrom Method

Page

Closing EventApplication

Dormant

Deactivated EventApplication

Tumbstoned

Activated EventApplication

Восстановление состояния Dormant

приложение в памяти потоки остановлены ресурсы освобождены

Tumbstoned приложение не в памяти сохранены специальные словари

PhoneApplicationService.State PhoneApplicationPage.State

Демосохранение и восстановление состояния

многозадачность

Подходы к многозадачности «Честная» и прожорливая- Работаем, пока можем- Система сложных правил выгрузки приложений

Desktop, Windows Mobile, Android

Мнимая и экономная- Приложение выгружается при деактивации UI- Ключевой фактор – сохранение состояния

Ранние iPhone, Windows Phone 7

Подходы к многозадачности Умная-Похожа на мнимую-Фоновые агенты

iPhone 4, Windows Phone codename “Mango”-Возможны уведомления из агентов в приложения

Жизненный цикл: состоянияRunning

DormantTumbstoned

в памяти; потоки остановлены,ресурсы освобождены

выгружено из памяти; сохранены специальныесловари

FAS (Fast Application Switching)

Fast Application Switching• Мультизадачность• Быстрое переключение• Быстрое восстановление

Другие варианты?Задача РеализацияПереключение задач пользователем

Fast App Switching

Уведомления и сигналы Background Notification

Загрузка фалов Background Transfer

Уведомления о событиях Push Notifications

Регулярные действия по расписанию; toast/tile updates; data pre-caching; etc.

Periodic Background Agent

Проигрывание музыки Background Audio Player

Синхронизация данных Resource-Intensive AgentGPS-tracking Run under the lock screen

Background Notification Serviceusing Microsoft.Phone.Scheduler;

private void AddReminder(object sender, RoutedEventArgs e){ Reminder reminder = new Reminder("CompanyMeeting"); reminder.BeginTime = DateTime.Now.AddSeconds(15); reminder.Content = "Soccer Fields by The Commons"; reminder.Title = "Microsoft Annual Company Product Fair 2009"; reminder.RecurrenceType = RecurrenceInterval.Yearly; reminder.NavigationUri = new Uri("/Reminder.xaml", UriKind.Relative);

ScheduledActionService.Add(reminder);}

AlarmsRemindersusing Microsoft.Phone.Scheduler;

private void AddAlarm(object sender, RoutedEventArgs e){ Alarm alarm = new Alarm("Long Day"); alarm.BeginTime = DateTime.Now.AddSeconds(15); alarm.Content = "It's been a long day. Go to bed."; alarm.Title = "Alarm";

ScheduledActionService.Add(alarm);}

Демоnotifications

Background Transfer Service

downloadsMy WP Book App

Cheese & WinGreat MysterieWP Tips & Tric

Great Mysteries o

CloudBackground Transfer Service <2 GB

<20 MB

<~3.0 MB

GET

POST

void DownloadWithBTS(Uri sourceUri, Uri destinationPath){ btr = new BackgroundTransferRequest(sourceUri, destinationUri); btr.TransferStatusChanged += BtsStatusChanged; btr.TransferProgressChanged += BtsProgressChanged; BackgroundTransferService.Add(btr);}

void BtsProgressChanged(object sender, BackgroundTransferEventArgs e){

DrawProgressBar(e.Request.BytesReceived);

}

using Microsoft.Phone.BackgroundTransfer;

void GetCurrentProgress(){ DrawProgressBar(btr.BytesReceived);}

completed

My WPBook App

ISO Store

Демоbackground file transfer

Background Audio – HTML5

CloudBrowser

www.html5audio.

<audio id="audio_tag" controls="controls" src="http://html5audio.com/Demo1.mp3" onplay="StartPlayback()" onended="NextTrack()"</audio>

Zune Service

function NextTrack() { musicPlayer = document.getElementById("audio_tag"); musicPlayer.src = 'http://html5audio.com/Demo2.mp3'; }

++

Демоhtml5 audio

Background Audio – По URL

current

Ode to WPBy MSFTMan

0:09

fav0:100:110:12

Player = BackgroundAudioPlayer.Instance;player.PlayStateChanged += new eventHandler(PlayStateChanged);

AudioTrack track = new AudioTrack(new Uri("/audiofile.mp3"),…);

void PlayStateChanged(object sender, EventArgs e){ switch (player.PlayerState) { case PlayState.FastForwarding: // Move to next track break; }}

CloudZune ServiceMy Music

App

ISO Store

player.Play();

++

++Buffer

Buffer

Background Audio – Streaming

Демоbackground audio agent

Приложения + Агенты

Системные

сервисыISO StoreCloud

Разные процесс

ы

LogicUX

myapp.dllПриложение ОС

Logicmyappagent.

dll

Единое приложени

е

Разработка

Жизненный цикл агента

Создан Работает

Нечего делать

Неактивен

Приоста-

новлен

«Убит»Ошибка!

stoppingАгенту пришло

время поработать

Система вызывает код

агентаОтсутствие работы

- NotifyCompleteАгенту больше нечего делать

Система приостанавлива

ет агент, а возможно, и

убивает

Фатальная ошибка: Abort() и

«убийство»

Если системе необходимо завершить

агента: OnCancel(); агент должен быстро

завершить работу

Агенты могут быть «убиты» из-за

нехватки ресурсов

Приостановленные агенты могут быть

выгружены

Агенты: общие правила Метод выполнения

Периодически On Idle Можно комбинировать

Инициализируются всегда приложением Сохраняют состояние между перезагрузками

Управляемы через настройки До 18 агентов

Агент «живет» не более 14 дней (но можно делать renew)

Агенты: общие правилаПериодические агенты Выполнение

Каждые 30 минут Длительность

15 секунд Сценарии

Синхронизация данных

Трекинг местоположения

On Idle агенты Выполнение

Внешнее питание, Wi-Fi или USB

Длительность 10 минут

Сценарии Загрузка данных Синхронизация больших

объемов …

Демоbackground agents

использование возможностей платформы

ИнтеграцияКамера

Захват видео

«Прямой» доступ к камере и вспышке

Networking

Сокеты

HTTP

Сенсоры

GPS

Accelerometer

Compass

Gyro

Motion

Data

SQL CE

Phone Contacts

Phone Calendar

Launchers & Choosers

Bing Maps

E-mail

Phone Number

Address Chooser

Демовозможности платформыlaunchers & choosers

Доступ к пользовательским данным Chooser Tasks

EmailAddressChooserTask PhoneNumberChooserTask AddressChooserTask

Microsoft.Phone.UserData для прямого доступа Contacts Appointments

Демопрямой доступ к контактам и встречам

Расширения

Push Notifications

App Connect

Search

Music

Photos

Тайлы

Демовозможности платформыlive tiles

Push Notifications Raw Tile Toast

Deep Toast Связь уведомлений и страниц приложения страницами

<wp:Notification xmlns:wp="WPNotification">

    <wp:Toast>

        <wp:Text1>World News Updates</wp:Text1> <wp:Text2>Egypt braces for march in palace square</wp:Text2> <wp:Param>/detailsPage.xaml?storyid=186435</wp:Param>    </wp:Toast>

</wp:Notification>

Демовозможности платформыpush notification

Локальное хранилищеIsolated StorageПриложения хранят данные в Isolated Storage неструктурированные данные Обычные файлы и папки Настройки

Настройки

AppУправление

файлами

Файлы приложения

App Data Folder

WP7 Isolated Storage APIs

Демовозможности платформыWebClient &IsolatedStorage

Локальное хранилищеБаза данных

ПриложениеCustom

Data Context

App Objects

System.Data.Linq

Identity Manageme

ntChange Tracking

Update Processing

Object Materializatio

n

Microsoft.Phone.Data.Internal

Core ADO.NET (System.Data)SQLCE ADO.NET Provider

(System.Data.SqlServerCe)

SQL CE DB

.Call System.Linq.Queryable.Select( .Call System.Linq.Queryable.Where( .Constant(Table(Wines)), '(.Lambda #Lambda1)), '(.Lambda #Lambda2)) .Lambda #Lambda1(db.Wines $w) { $w.Country == “USA" } .Lambda #Lambda2(w.Country $w) { $w.Name }

var query = from w in db.Wines where w.Country == “USA" select w.Name;

select Namefrom Wineswhere Country = “USA”

Демовозможности платформыSQL CE

Геолокация Отдаёт географические координаты, высоту, скорость и направление

при инициализации можно указать стандартная или высокая точность

GeoCoordinateWatcher myGeoWatcher = new GeoCoordinateWatcher(); myGeoWatcher.MovementThreshold = 100.0f;

myGeoWatcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(…); myGeoWatcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(…);

ThreadPool.QueueUserWorkItem(startMyGeoWotcher, myGeoWatcher);. . . . static void startMyGeoWotcher(object GeoWatcher) { ((GeoCoordinateWatcher)GeoWatcher).TryStart(false, TimeSpan.FromSeconds(60)); }

Акселерометр Отдаёт вектор ускорения устройства в гравитационных единицах

включает гравитацию сориентирован относительно устройства

Accelerometer myAccel = new Accelerometer(); myAccel.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<AccelerometerReading>>(…);

myAccel.Start();

Гироскоп Скорость вращения устройства вокруг каждой из осей

в радианах/сек

Gyroscope myGyro = new Gyroscope(); myGyro.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<GyroscopeReading>>(…);

myGyro.Start();

Компас (магнитометр) Точность измерения в градусах Направление на магнитный полюс (в градусах, против часовой стрелки) Направление на географический полюс (в градусах, против часовой стрелки) Данные магнитометра в виде вектора в микротеслах

Compass myCompass = new Compass(); myCompass.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<CompassReading>>(…);

myCompass.Start();

ДемоИспользование геолокационных данных, акселерометра и карты

Motion sensor

Motion Sensor

[cos γ .cos α −cos β .sin α+sin β .sin γ .cosα sin β . sin α +cos β . sin γ . cos α

cos γ . sin α cos β .cos α+ sin β . sin γ .sin α − sin β .cos α+cos β . sin γ .sin α

− sin γ sin β .cos γ cos β .sin γ ] Акселерометр

Компас

Гироскоп

Windows Phone

Поддержка motion sensor Motion.IsSupported

API доступно и без гиросокопа Специфичные данные для каждого физического

сенсора Accelerometer (g) Gyro (рад/сек) Compass (градусы)

Camera APISilverlight 4 WebCam APIПростая запись видеоМожно использовать существующий кодЗапись аудио и видео в файл

PhotoCameraФотоКнопки камерыВспышка и фокус

ДемоИспользование камеры

ресурсы

С чего начать http://create.msdn.com

http://go.microsoft.com/?linkid=9772716 http://msdn.microsoft.com/ru-ru/windowsphone/

http://www.techdays.ru/?Tag=Windows Phone 7 http://windowsteamblog.com/windows_phone/ http://aka.ms/ruwp7dev - презентация и примеры

спасибо

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

top related