Сказ о том, как сисадмин открыл для себя программирование под Windows Phone

в 12:16, , рубрики: Windows Phone 7 development, Блог компании Luxoft, метки:

«Windows?? Фу, какакая гадость, не за что. Фрюха – наше все. Шлюз на ней поднял, KDE2 на своей машине пропатчил и работаешь» — Я 5 лет назад. И 10 лет назад.

«Гаджеты?.. Да ну их, ярлычки всякие, тыкаться еще в них. Да и некогда, постоянно за рулем» — Я, год назад, после тщательного исследования айпэда. Помню еще новость услышал, что моя любимая Нокия собирается выпускать почти все телефоны не Windows!!! Жуть какая…

И что же? Нужно было купить новый телефон. Захожу в салон МТС на Сухаревской, который помню с незапамятных времен. Вышел оттуда с HTC Mozart в коробочке. На неведомой операционке Windows phone 7.5. И в течении недель, месяцев, замечаю, что со мной что-то происходит… я не мог отлипнуть от этого телефона. Маркетплейс был очень скуден, а рассуждения про все эти строгие прямоугольные минималистические плитки (ми-ми-ми) оставим дизайнерам.

К слову, Metro-интерфейс, и логотип Windows 8 заценил САМ Артемий Андреевич. Дословно цитировать не буду, можете поискать на бизнес-линче.

Время шло, HTC сменился на Samsung Omnia W – просто невероятный телефон (2 камеры, 1,4 ггц, AMOLED, etc), который уже, к слову, стоит меньше 10000 рублей, дешевле, чем множество однобоких Андройдов.

К слову, если речь зашла о моделях, то топовый «виндофон» — конечно Nokia Lumia 800 и ее 900 собрат, крадущийся к нашим границам – тот же вид, только LTE сбоку. Потрясающий дизайн, свой собственный набор бесплатного софта, в том числе долгожданный оффлайновый навигатор, который так долго ждали. Этот нокиевский софт, впрочем, при небольшом усилии можно поставить и на другие телефоны на Windows Phone 7.5. Кому интересно – гугль знает.

Как было понятно из начала поста, крайние 10 лет я работал сисадмином в разных организациях, больше 3-4 лет не задерживался. Вообще сисадмин и контора, в которой он работает – они, как муж и жена. Или разочаруются друг в друге и разбегутся или уже до гроба. Знавал таких.
Так вот, до недавнего времени представление о программировании у меня базировалось на задачках на паскале в школе и решении разных дифуров и прочие математические задачи на С/С++ в университете. За годы сисадминства я считал программирование чем-то уже далеко от меня убежавшем, что, конечно, так и есть, если б не одно но. Оказывается, программировать под новые продукты Microsoft, в частности Windows Phone 7.5, не просто легко, но и интересно, увлекательно и вообще, не фига себе! У меня в телефоне программка, которую я сам написал!

Политика софтверных гигантов в плане разработки продуктов, конечно, не такая открытая, как у юниксов, но получить бесплатный студенческий анлок на три приложения (возможность залить в телефон три своих (или не своих) приложения достаточно проста и инструкций, как ее получить, полно в интернете. Можно зарегистрироваться я на AppHub'е для разработчиков за $99, и получить почти полный безлимит по заливанию софта в телефон. Но это для профи. А мы же говорим обо мне, мне было вполне достаточно скачать бесплатный Windows Phone SDK 7.1, включающий в себя Visual Studio 2010 Express, MS Expression blend SDK, разные примеры, куча всего. Полистал книжку по С# (программы для Windows Phone 7.5 пишутся только на нем), нашел даже русскоязычную книгу о программировании виндофонов, очень толковая, все по темам. Ну и любимый MSDN в помощь.

Смартфоны на базе Windows phone обладают многими обязательными для работы ОС рюшечкмами: акселерометр, GPS/Глонасс, компас, гироскоп и т.п. Так что, если вы новичок в С#, как и я, то первые свои программы можно делать просто играясь с этими функциями. Я не буду останавливаться на использовании Express Blend, или Visual studio, просто приведу кусочек кода, который с точностью до 10 знаков после запятой определяет координаты c помощью A-GPS/GPS/Glonass.

В Visual Studio 2010 Exprees создаете телефончик с четырьмя текстблоками: для широты, долготы, высоты и предупреждалка, на случай, если GPS отключен или еще что. Назовем их соотвественно: latitude_box, longitude_box, altitude_box & statusblock.
Не забываем в начале добавить пространство имен System.Device.Location;
Вставляем в пустую болванку следующий кусок кода и получаем программку с нашими координатами.

public partial class MainPage: PhoneApplicationPage
{
// Constructor
GeoCoordinateWatcher watcher;

public MainPage()
{
InitializeComponent();
watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
watcher.MovementThreshold = 10.0f;
watcher.StatusChanged += new
EventHandler(watcher_StatusChanged);
watcher.PositionChanged += new
EventHandler<GeoPositionChangedEventArgs>(watcher_PositionChanged);

}

void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
switch (e.Status)
{
case GeoPositionStatus.Disabled:
// The Location Service is disabled or unsupported.
// Check to see if the user has disabled the Location Service.
if (watcher.Permission == GeoPositionPermission.Denied)
{
// The user has disabled the Location Service on their device.
statusblock.Text = «You have disabled Location Service.»;
}
else
{
statusblock.Text = «Location Service is not functioning on this device.»;
}
break;

}
}

void startLocServInBackground()
{
watcher.TryStart(true, TimeSpan.FromMilliseconds(60000));
}

void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs e)
{
//update the TextBlock readouts
latitude_box.Text = e.Position.Location.Latitude.ToString(«0.0000000000000»);
longitude_box.Text = e.Position.Location.Longitude.ToString(«0.0000000000000»);
altitude_box.Text = e.Position.Location.Altitude.ToString(«0.0»);

}

}

Автор: scvartch

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js