Upload
bozica
View
52
Download
3
Embed Size (px)
DESCRIPTION
Технический обзор возможностей платформы Windows Phone. Стас Павлов s [email protected] @ stasus. платформа. Железо. Емкостной дисплей 4 или более точек контакта. 800 . Сенсоры A-GPS, Accelerometer, Compass, Light, Proximity, Gyro. Камера 5 мегапикселей или более. - PowerPoint PPT Presentation
Citation preview
Технический обзор возможностей платформы Windows Phone
Стас Павлов[email protected]@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
Номер телефона
Адрес
Элементы управления
Базовые элементы
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
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
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.