4pda nokia windows phone

image

Windows Phone… услышав название этой мобильной системы, поневоле начинаешь с теплотой вспоминать своего недавнего, такого необычного мобильного друга, как будто прошло всего пару месяцев с момента смены смартфона на iPhone/Android. А ведь с момента фактической смерти Windows Phone прошло уже почти 10 лет! Увы, время вспять уже не повернуть, а мобильное подразделение Nokia не спасти, однако при наличии навыков разработки мобильных приложений, большом энтузиазме и фанатизме, есть шанс вернуть жизнь своему старому другу! Недавно я снова загорелся диким энтузиазмом и смог вернуть жизнь старенькой «люмии», написав собственные клиенты нужных мне сервисов с нуля — и готов поделиться этим с вами во всех подробностях!

Сегодня вы узнаете о моей мотивации привносить жизнь старым смартфонам, о тонкостях разработки мобильных приложений, чем Windiows Phone был на голову выше Android в техническом плане и о том, почему провал Windows Phone — одна из самых больших потерь мобильного рынка. Интересно? Тогда добро пожаловать в статью!

Предыстория

Пожалуй, довольно большой процент моих читателей и подписчиков когда-либо владел и пользовался смартфонами на Windows Phone. Мнение пользователей этой мобильной платформы во многом разнится — кто-то восхваляет по настоящему продуманный и плавный интерфейс, кто-то ругает Microsoft за «кидалово» с обновлениями, но большинство людей сходится во мнении, что Windows Phone — была действительно необычной и имела собственную изюминку.

image

Конечно же, Windows Phone была далеко не первым опытом Microsoft на мобильном рынке. До этого, Редмондская компания поддерживала очень крутую платформу для коммуникаторов и КПК под названием Windows Mobile. Фактически, это был полноценный компьютер в кармане — большинство кнопочных телефонов могли максимум запускать простенькие J2ME-приложения, в то время как WM позволял запускать множество самых разных программ — как написанных на C++/Pascal, так и написанных на C#/VB.Net. Мобильная платформа во всём пыталась подражать своему старшему брату — API системы было очень похоже на то, что мы видим в обычной Windows — тут и полноценная оконная система, и waveout для вывода звука, и GDI для вывода графики.

image

Windows Mobile прочно занимал свою нишу на мобильном рынке: HTC постоянно представляла новые модели коммуникаторов, которые довольно хорошо продавались. Но тут пришёл первый iPhone, который перевернул всё с ног на голову. Оказывается смартфоном можно управлять полностью пальцами, нажимая на красивые, анимированные элементы интерфейса! Это перевернуло всю индустрию — даже Nokia с её Symbian было тяжело конкурировать с продуктом от Apple. Microsoft видела, что пользователи хотят не столько свободы и кастомизации в системе, сколько плавности интерфейса, стабильности и простоты использования.

image

Плеер Zune HD стал дебютом свежего подхода к созданию интерфейсов — Metro UI. И хотя сам девайс не сыскал особой популярности, став в некоторой степени провальным, Microsoft взяла на вооружение концепцию этого интерфейса, дабы реализовать её уже в полноценной мобильной ОС. В октябре 2010 года выходит первая версия новой мобильной платформы Microsoft — Windows Phone 7, заложившая фундамент той самой системы, которую мы с вами до сих пор вспоминаем с теплотой!

image

На WP7 вышло весьма много устройств: тут и девайсы от HTC, и смартфоны Lumia от Nokia, и даже продолжение линейки Omnia от Samsung! Но были у этой платформы и серьезные минусы: она базировалась на ядре обычной Windows CE (оно же использовалось в Windows Mobile) и из-за желания повысить безопасность системы, Microsoft отключила возможность использовать код на нативных языках в своих приложениях. Кроме того, во многих аспектах WP7 была достаточно сырая — хотя для неё регулярно выходили обновления.

Почему провал WP — трагедия для мобильного рынка?

Конечно же параллельно с доработкой WP7, Microsoft разрабатывала новую версию ОС, которая должна была объединить мобильные и десктопные приложения в одну общую концепцию. Кроме того, разработчики решили отказаться от лёгкого ядра Windows CE в пользу более тяжелого и продвинутого ядра Windows NT, которое используется в полноценных версиях Windows.

image

К сожалению, апгрейда с WP7 на WP8 предусмотрено не было, что многие пользователи считают «кидаловом» со стороны Microsoft. Отчасти это так, но проблема была в том, что даже флагманские устройства на WP7 имели 512мб ОЗУ, чего было недостаточно для первой версии WP8. Думаю, в какой-то степени Microsoft просто не хотели портить имидж максимально плавных смартфонов тормозами обновленной системы, хотя примеры шустрой работы на 512мб ОЗУ есть — например, Lumia 520.

image

Но вот где WP8 была передовой, так это «под капотом». Microsoft смогли сделать что-то невообразимое для мира ARM-устройств: они реализовали нормальный слой абстракции от «железа» и ввели концепцию ACPI, знакомую нам из обычных десктопных ПК. Вкратце, ACPI — это что-то типа списка железа в устройстве, под которое ОС должна найти и загрузить драйверы, не забыв под это всё выделить ресурсы (devicetree в Linux реализует похожую концепцию). Кроме того, Microsoft реализовала полноценный UEFI в своих смартфонах, что позволяло, например, сделать дуалбут в будущем. На практике это всё означает то, что даже неподдерживаемые No-Name смартфоны можно было обновить до Windows 10, банально поменяв пару ключей в реестре: на Android-устройствах такое невообразимо. Фактически, это стандартизация ARM-железа.

image

На этом технические фишки Windows Phone не заканчиваются. Переходя к пользовательской части, стоит упомянуть фреймворк для построения интерфейса (WPF/Silverlight), который из коробки работает очень шустро, отлично масштабируется под разные размер экрана и предлагает мощные возможности по анимации и кастомизации интерфейса под стиль приложения. Да и само SDK навязывало изначально правильную концепцию программирования, заставляя выделять все задачи в отдельные потоки, не только задействуя дополнительные ядра процессора, но и улучшая пользовательский опыт от приложения (неправильно написанные Android-приложения легко могут подвисать при выполнении какой-то работы).

image

И третья классная фишка, про которую почему-то все забыли — это поддержка DirectX 11. Конечно в WP7 уже была поддержка Xna (именно на его базе написана Terraria), что позволяло писать игры одновременно для Windows, Xbox 360 и собственно мобилок, но он имел некоторые ограничения и был прослойкой между графическим API (как Direct3D или OpenGL) и самой игрой. Windows Phone 8 же давал настоящий, полноценный DirectX 11 — хотя и поддерживал максимум вторые шейдеры, но при этом умел те фишки, которые не умел Android — инстансинг для оптимальной отрисовки геометрии, установка стейтов «пачками» и эффективное «bindless» управление ресурсами шейдеров. Теоретически, это давало возможность портировать полноценные игры с ПК/Xbox на Windows Phone, хотя на практике не так много кто этим пользовался.

image

Ну и вспоминая аргумент про кидалово Microsoft с обновлениями, нужно помнить, что обратная совместимость с приложениями для более ранних версий системы была: на Windows Phone 8 можно было играть в годноту с Windows Phone 7 (NFS Undercover, NFS Hot Pursuit, Mirrors Edge и ещё некоторые классные мобильные игры), а на Windows 10 Mobile можно было запускать почти любое приложение для Windows Phone 8.

image

Так в чём же потеря WP — трагедия для мобильного рынка? А вы посмотрите на свой Android-смартфон сейчас. Сколько в нём ОЗУ? 4гб? 8гб? 12гб? Смущает ли вас то, что Android умудряется неприятно подтормаживать даже с такими ресурсами? А теперь вспомните Lumia 520: Snapdragon 200, 512 мегабайт оперативной памяти. Вот так она работает из коробки:

Думаю, это всё красноречиво объясняет то, что без WP случилась дуополия на рынке — Android продолжает жиреть, впустую жрать ресурсы и при этом практически не получать новых фишек из года в год, а iPhone хоть и остаётся всё такой же плавной и шустрой, ребята из Apple явно не чувствуют конкуренции и их смартфоны стагнируют в плане дизайна и в некоторой степени интерфейса…

image

Мотивация

Мои давние читатели знают мою любовь к смартфонам прошлых лет. Для меня нет понятия запланированного устаревания: если под устройство есть комплект разработки и документация, то при большом желании я могу дописать нужные мне приложения сам.
Мой проект SelfEco (сам себе экосистема) как раз об этом — почти полгода назад я написал клиент YouTube и ВК для Android 2.2+. Фактически это означает, что мои приложения работали на ВСЕХ Android смартфонах от 2010 года и новее.

image

Исходным кодом своих приложений я свободно делюсь — как в качестве примера читателям, так и для возможности каких-то фиксов в будущем или даже модов. В 2021-2022 году я ходил с Lumia 640XL с Win10 Mobile на борту, как с основным смартфоном. И в целом, меня все устраивало и всё нравилось: там и годный клиент ВК был (LunaVK), и клиент телеги нормальный, и браузер кое-какие страницы всё ещё нормально переваривал. Но больше всего мне нравится Windows Phone 8 — она работает ещё шустрее и несколько более строгая в плане дизайна. Да и «люмии» сейчас стоят сущие копейки — моя 640XL обошлась мне в 100 российских рублей (~1.5$ по тому курсу), я не шучу. А на онлайн-барахолках можно найти живые, целые аппараты с нормальными аккумуляторами по 200-500 рублей, иногда даже в родных коробочках!

image

Lumia 1320 и Lumia 640XL — подарки читателя Kotenilla!
Дак почему бы не применить всю эту круть и мощь во благо, учитывая дешевизну смартфонов? Решено: Качаем SDK и пишем собственный клиент ВК и YouTube — это минимально-необходимые для меня приложения!

Подготовка

Для того, чтобы отлаживать и устанавливать сторонние приложения на смартфоны с Windows Phone, их нужно предварительно разблокировать и сделать «Interop Unlock». Процедура несложная и занимает немного времени на большинстве люмий. Дабы сильно не затягивать статью, я не буду описывать процесс разлочки здесь — его можно найти на 4pda для разных поколений устройств.

image

YouTube

Начинаем с клиента ютуба. Собственно, концепция отнюдь не поменялась с прошлой статьи — мы всё так же используем API Invidous для получения информации о видео. Нативное API YouTube — полная дичь, да ещё и с ограничениями на один токен, в то время как Invidous сам распоряжается токенами и распределяет их как нужно. Нам лишь остаётся написать «морду», которая будет отображать полученные с сервера данные и передавать ссылку на видео в встроенный плеер.

image

В отличии от Android, никаких проблем с TLS не возникло: смартфон смог без проблем связаться с инстансом Invidous и получить данные о видео в трендах. Сам по себе, формат ответов очень простой и возвращается в виде JSON, который можно описать такой иерархией:

public class VideoInfo
    {
        public string type { get; set; }
        public string title { get; set; }
        public string videoId { get; set; }
        public string author { get; set; }
        public string authorId { get; set; }
        public string authorUrl { get; set; }
        public bool authorVerified { get; set; }
        public List<VideoThumbnail> videoThumbnails { get; set; }
        public string description { get; set; }
        public string descriptionHtml { get; set; }
        public int viewCount { get; set; }
        public string viewCountText { get; set; }
        public int published { get; set; }
        public string publishedText { get; set; }
        public int lengthSeconds { get; set; }
        public bool liveNow { get; set; }
        public bool premium { get; set; }
        public bool isUpcoming { get; set; }
    }

Практически сразу система нам навязывает распараллелленую парадигму написания кода — часть API банально не имеет синхронных аналогов! Например, из WebRequest убрали GetResponse, дабы неопытные разработчики не делали ошибок и не пытались вызывать долгие I/O операции в главном потоке (что вызывает подвисания приложения). .NET сам по себе имеет крутой механизм тасков (многопоточных задач) и реализацию концепции async/await, которая позволяет подождать выполнение операции, не блокируя остальное приложение.

private void RequestURL(string method, Action<string> onReady, string fmt, params object[] args)
        {
            string defaultArgs = string.Format("region=RU&hl={0}", "ru");
            HttpWebRequest req = WebRequest.CreateHttp("https://vid.priv.au/api/v1/" + method + "?" + defaultArgs + string.Format(fmt, args));
            req.Method = "GET";

            req.BeginGetResponse((IAsyncResult res) =>
            {
                HttpWebResponse response = (HttpWebResponse)req.EndGetResponse(res);
                StreamReader reader = new StreamReader(response.GetResponseStream());

                line = reader.ReadToEnd();
                onReady(line);
            }, null);
        }

public void QueryTrendingList(Action<List<VideoInfo>> onReady)
        {
            HasPendingOperation = true;

            RequestURL("trending", (string json) =>
            {
                List<VideoInfo> ret = JsonConvert.DeserializeObject<List<VideoInfo>>(json);
                
                onReady(ret);
                HasPendingOperation = false;
            }, "");
        }

Я решил придержаться более привычной мне концепции на коллбэках, которая позволяет более четко обрабатывать ошибки в подобных кейсах, да и в целом я не очень люблю подобный синтаксический сахар (а async/await и есть «сахар», поскольку разворачивается в стейт-машину). В качестве десериализатора (механизма парсинга JSON напрямую в экземпляры классов, используя рефлексию) я использовал классический Newtonsoft.Json.

image

После того, как механизм получения и обработки данных с сервера был готов, я начал реализовывать интерфейс приложения. И вот тут WP показал себя во всей красе. ListView? RecycleView? Нафиг эти костыли, винфон умеет нормально рисовать элементы интерфейса, которые вы выделили в ScrollView. И что забавно: в Android даже реализация с ScrollView при активной подгрузке данных вызывала лаги — на WP такого нет вообще! Тут всё просто работает из коробки!

Механизм анимаций здесь тоже декларативный и реализован в концепции т.н «сторибордов» — наборов действий, которые позволяют создавать достаточно сложные анимации вручную.

<Storyboard x:Name="progressFadeIn">
                    <DoubleAnimation
                        Storyboard.TargetName="progressBar"
                        Storyboard.TargetProperty="Opacity"
                        From="0.0" To="1.0"
                        Duration="0:0:1" />
                </Storyboard>
                <Storyboard x:Name="progressFadeOut">
                    <DoubleAnimation
                        Storyboard.TargetName="progressBar"
                        Storyboard.TargetProperty="Opacity"
                        From="1.0" To="0.0"
                        Duration="0:0:1" />
                </Storyboard>

Буквально через пару часов после создания проекта, у меня уже была готова загрузка и отображение списка трендов:

image

А затем и логика воспроизведения видео, которая запускает встроенный плеер и передаёт в него ссылку на видео — которая выбирается относительно кодека (только mp4), разрешения устройства и предпочтений пользователя:

private void PlayVideo(VideoInfo info, VideoDescriptor desc)
        {
            int[] resTable = { 240, 360, 480, 720, 1080 };
            int desiredResolution = AppSettings.Instance.DesiredQuality == 0 ? (int)Application.Current.Host.Content.ActualHeight : resTable[AppSettings.Instance.DesiredQuality - 1];
            FormatStream strm = YTInstance.PickBestFormat(desc, desiredResolution);
            
            Log("Requested video {0}", desc.videoId);
            Log("Picked format {0}, while desired {1}", strm.resolution, AppSettings.Instance.DesiredQuality);

            Microsoft.Phone.Tasks.MediaPlayerLauncher mpLauncher = new Microsoft.Phone.Tasks.MediaPlayerLauncher();
            mpLauncher.Controls = Microsoft.Phone.Tasks.MediaPlaybackControls.All;
            mpLauncher.Media = new Uri(strm.url);
            mpLauncher.Show();

            if (AppSettings.Instance.SaveHistory)
                History.AddEntry(info);
        }

image

Кроме того, в приложение нужно было добавить настройки — для этого WP8 не предоставляет встроенных средств, нужно реализовывать логику самому. Впрочем, ничего сложного в этом нет — глобальный синглтон с полями настроек и логикой сохранения/загрузки:

public enum DesiredVideoQuality
    {
        Auto, // According to screen size
        Q240p,
        Q360p,
        Q480p,
        Q720p,
        Q1080p
    }

    public class AppSettings
    {
        const string ConfigName = "config.json";
        public static AppSettings Instance;

        public bool LoadPreviews;
        public bool SaveHistory;
        public int DesiredQuality;
        
        static AppSettings()
        {
            Instance = new AppSettings();
        }

        public static void Load()
        {
            var storage = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication();

            if(storage.FileExists((ConfigName)))
            {
                StreamReader reader = new StreamReader(storage.OpenFile(ConfigName, FileMode.Open));
                string str = "";

                while (!reader.EndOfStream)
                    str += reader.ReadLine();

                reader.Close();
                Instance = JsonConvert.DeserializeObject<AppSettings>(str);
            }
            else
            {
                // Load default settings
                Instance.SaveHistory = true;
                Instance.LoadPreviews = true;
                Instance.DesiredQuality = 0;
            }
            
        }

        public static void Save()
        {
            var storage = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication();

            StreamWriter writer = new StreamWriter(storage.CreateFile(ConfigName));
            writer.Write(JsonConvert.SerializeObject(Instance));
            writer.Close();
        }
    }

WP предоставляет специальное изолированное хранилище для пользовательских программ — IsolatedStorage, в которое нельзя добраться из остальной системы (без разблокированного загрузчика и режима Mass Storage). Там же можно хранить и конфиги — правда с некоторым API для файлов сильно перемудрили — навязывать распараллеливание чтения обычно маленьких файлов — это совсем уже.

Итак, буквально за сутки разработки у меня получилось реализовать приложение, которое может выводить списки ютуба по региону (тренды/популярное), может искать видео и воспроизводить ролики с различными разрешениями. Кроме того, приложение умеет подгружать превьюшки и имеет собственный раздел истории. Неплохо за 24 часа для программиста, который фактически не имел опыта с платформой UWP/WinRT в прошлом, да? :)

ВК

Теперь пришло время реализовать клиент ВК! Фактически, ничего сложного в реализации клиента с базовым функционалом нет — это всё такая же «морда» к данным с сервера, к которым добавляется необходимость получать уведомления и реализовывать логику обновления данных.
На этот раз, я решил выбрать API WP8.1: оно гораздо более богатое на возможности и ближе к современному UWP, чем Silverlight из WP8. Так уж сложилось, что API обычного WP8 ближе к WP7 и совместимо с WP8.1 только с помощью специальной прослойки.

Я не ставил целью написать полноценную замену ныне не рабочему официальному клиенту, но я хотел чтобы моё приложение поддерживало базовый функционал:

  • Мессенджер: Конечно же, самое важное в нашем клиенте — это мессенджер.
  • Музыка: Куда ж без удобной ВК музыки? Её реализация в кастомных клиентах отнюдь несложная, но достаточно костыльная из-за политики ВК в отношении лицензирования аудио. Снова будем идти на хаки, дабы получить работающее приложение!
  • Новости: Помимо общения и прослушивания музыки, бывает потребность полистать ленту — дабы узнать новости, или посмотреть свежие мемчики.

Начал я с реализации окна с диалогами и продумывания навигации приложения. WP8.1 всё ещё не имел концепции боковых менюшек, поэтому реализовывать панель навигации пришлось самому. Вместе с ней была реализована верхняя часть, которая содержит в себе заголовок со статусом и анимацию загрузки:

image

Класс-менеджер для общения с API ВК я решил реализовать по тому же принципу, что и для клиента YouTube: у нас есть два метода на всё-про всё, один сразу десериализовывает ответ в виде объекта Root (для каждого типа ответа — он свой, все они описаны в Data.Packet.Root):

public void RequestMethod<T>(string method, Action<T> onReady, Action<string> onError, string argFormat, params object[] args)
        {
            string url = string.Format("{0}/method/{1}?access_token={2}&v={3}{4}", APIUrl, method, token, APIVersion, string.Format(argFormat, args));

            HttpWebRequest webRequest = WebRequest.CreateHttp(url);
            webRequest.Method = "GET";
             
            Log.WriteLine("Requested method {0}", method);

            webRequest.BeginGetResponse((IAsyncResult res) =>
            {
                try
                {
                    Log.WriteLine("Async response");
                    WebResponse response = webRequest.EndGetResponse(res);
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    string json = reader.ReadToEnd();

                    Log.WriteLine("Got response");

                    JObject obj = JObject.Parse(json);
                    if(obj.Property("error") != null)
                    {
                        Log.WriteLine("API error occured: {0} {1}", obj["error"]["error_code"], obj["error"]["error_msg"]);
                        onError(obj["error"]["error_msg"].ToString());
                    }
                    else 
                    {
                        Log.WriteLine("Deserializing");
                        T t = JsonConvert.DeserializeObject<T>(json);

                        if (t != null)
                            onReady(t); 
                        else
                            onError("Deserialization failed");
                    }
                }
                catch (WebException e)
                {
                    Log.WriteLine("WebException error occured");
                    onError("WebException: " + e.Message);
                }
            }, null);
        }

До async/await я не дозрел и здесь :)
Спустя достаточно короткое время, у меня уже была готова подгрузка диалогов:

image

Реализация обновления во всех разделах одинаковая: есть метод RequestUpdate, который начинает процедуру обновления и получает данные с сервера, а затем ставит в очередь задачу на обновление UI из основного потока с помощью UpdateUI:

private void UpdateUI(Data.Messages.Root root)
        {
            foreach(Data.Messages.Item item in root.response.items)
            {
                UI.MessageView msgView = new UI.MessageView();
                msgView.SetInfo(item, item.from_id != profile.id);

                contentMain.Children.Add(msgView);
            }
        }

        private void RequestUpdate()
        {
            VKAPI.Instance.RequestMethod<Data.Messages.Root>("messages.getHistory", (Data.Messages.Root root) =>
            {
                Utils.SubmitOnUiThread(Dispatcher, () =>
                {
                    UpdateUI(root);
                });
            }, DefaultErrorHandler, "&user_id={0}&count=200", profile.id);
        }

И механизма загрузки/отправки сообщений.
В целом, с этим ничего сложного нет, однако теперь самое время разобраться с нотификациями. Пуши я пока-что поднять не смог, вместо них пока что лонгполлинг — достаточно для нотификаций пока приложение находится в фоне, но система со временем «прибивает» неактивные задачи, а сделать «бесконечный» фоновый таск как в Android не выйдет — система очень строго относится к любой фоновой работе.

image

Пришло время заняться музыкой — вот это действительно важный функционал! Для работы с аудио, я использовал довольно старый, но известный способ, который ВК пока что не пофиксил. Не то чтобы это из вредности, просто сами ВК особо не идут на контакт для интеграции аудио в своё приложение — исключением стали лишь очень крупные клиенты, как Kate Mobile — а значит можно реализовать действительно важные штуки: например, скачивание треков напрямую в музыкальную библиотеку, дабы их можно было послушать оффлайн! Вся работа с музыкой производится через прокси-сервер, поэтому аудио должно быть открыто.

image

Реализация фонового прослушивания музыки достаточно похожа на другие платформы, но в то же время заметно отличается. Само приложение может воспроизводить звуки с помощью MediaElement или BackgroundMediaPlayer, однако при сворачивании звук будет приостановлен (в отличии от MediaPlayer на Android). Для фонового прослушивания музыки, Microsoft решили сделать отдельный сервис BackgroundMusicPlayer, который запускается при попытке получить доступ к плееру из программы. Общаться с этим сервисом можно через межпроцессные вызовы — RPC и система предоставляет для него API. Вкратце: нам нужно создать фоновую задачу в виде отдельного модуля WinRT, который будет получать RPC-посылки от Foreground приложения и если нужно — отсылать ответы обратно. Ничего сложного!

private void OnReceiveMessage(object sender, MediaPlayerDataReceivedEventArgs e)
        {
            string method = (string)e.Data["method"];

            switch (method)
            {
                case "play":
                    string url = (string)e.Data["url"];
                    BeginPlay(url);

                    break;
                case "info":
                    string track = (string)e.Data["title"];
                    string artist = (string)e.Data["artist"];
                    UpdateSMTC(track, artist);

                    break;
                case "pause":
                    BackgroundMediaPlayer.Current.Pause();
                    break;
            }
        }

image

Отдельного внимания заслуживает механизм скачивания музыки в библиотеку. В WP, программы не могут просто так «вторгнуться» в личное пространство пользователя — им обязательно нужны разрешения. Но это ладно, запросить разрешение — совсем не проблема. Зато настоящая проблема — ПОЛНОСТЬЮ асинхронный API. Захотел найти дескриптор файла в ФС — асинхронно, захотел его открыть — снова асинхронно. Поскольку у меня вся работа по скачиванию ведется в отдельном воркере и я не боюсь за дедлоки, пришлось лепить костыли с Task.Wait() :)

HttpWebResponse response = (HttpWebResponse)webReq.EndGetResponse(res);
                    System.IO.Stream stream = response.GetResponseStream();
                    byte[] buffer = new byte[response.ContentLength + 128]; // 128 - ID3v1 length
                    int ptr = 0;
                    
                    while(ptr < response.ContentLength)
                    {
                        int len = 4096;

                        if (response.ContentLength - ptr < 4096)
                            len = (int)response.ContentLength - ptr;

                        ptr += stream.Read(buffer, ptr, len);
                        onProgress(ptr / response.ContentLength);
                    }

А ещё ВК возвращает mp3 без ID3-тегов, поэтому мне пришлось вручную их дописывать, дабы музыка в плеере удобно сортировалась:

Utils.ID3Tag.Fill(desc.artist, desc.title, "Неизвестен").CopyTo(buffer, (int)response.ContentLength);

Кроме того, дабы иметь возможность управлять музыкой из других приложений и экрана блокировки, Microsoft предоставляет т.н интерфейс SMTC — общий оверлей окна регулировки громкости, который позволяет управлять воспроизведением музыки. Его реализация простая до жути — просто включаем нужные кнопки (IsPlayEnabled, IsPauseEnabled и.т.п), добавляем обработчик события нажатия кнопки и обновляем информацию и обложку с помощью DisplayUpdater.

image

Заключение

Вот таким образом, буквально за несколько дней мы реализовали клиенты нужных нам приложений с базовым функционалом. Разработка клиента YT заняла ровно сутки, разработка клиента ВК — двое суток. Но можно ли всем этим добром по настоящему пользоваться и как оно работает на настоящем устройстве? Смотрите ниже:

Весьма достойно, да? Ещё до публикации статьи, я выложил клиент YT на 4pda и в профильный Telegram-чатик — люди благодарны и действительно довольны. Только в англоязычном чате о WP8.1 (не вклюая WM10 и WP7/WP8) более 2х тысяч человек! Так что да, девайсы прошлых лет действительно нужны достаточно большому числу пользователей.

image

image

Ну а разработка клиентов для меня была эдаким челленджом — пилить что-то полезное под новым API всегда интересно, дак ещё и сами девайсы очень крутые с точки зрения UX и скорости работы. А вы как считаете? Жду ваше мнение в комментариях!

image

Возможно, захочется почитать и это:

  • ➤ bada — незаслуженно забытая платформа. Какой была «iOS» от Samsung?
  • ➤ Видеокарта VGA для микроконтроллера
  • ➤ Запускаем матричный принтер от старого банковского терминала
  • ➤ SSO (Прошивка и настройка Cisco Catalyst коммутаторов, с привязкой к RADIUS NPS)
  • ➤ Как, откуда и зачем появился Bioshock 2

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Это нужный проект?

58.99% Да! Windows Phone должен жить, пусть и силами сторонних разработчиков. Их производительность не сильно уступает современным девайсам!164

26.26% Да, но уровня официальных приложений на чистом энтузиазме всё равно не достичь, так что это всё и останется колхозными поделками.73

14.75% Когда коту нечего делать…41

Проголосовали 278 пользователей. Воздержались 25 пользователей.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Вам нравятся статьи из рубрики «сам себе экосистема»?

97.22% Конечно нравятся! Чуть ли не уникальный контент!245

Проголосовали 252 пользователя. Воздержались 24 пользователя.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

У вас есть устройство на Windows Phone?

6.19% Есть и активно пользуюсь!21

5.9% Есть или был, слез с него недавно.20

46.9% Есть или был, но уже давно не пользуюсь.159

22.42% Неа, но хотел купить.76

18.58% Неа и никогда не хотел.63

Проголосовали 339 пользователей. Воздержались 18 пользователей.

На днях ко мне в руки попал Nokia Lumia 630 — старейший смартфон, который работает на Windows Phone 8.1. Пользовался им неделю и понял, что Windows Phone во многом опережала конкурентов (Android и iOS), но вышла слишком поздно из-за чего не смогла покорить рынок.

Мобильная система от Microsoft давно канула в лету: смартфоны на ней не выпускаются последние четыре года. Забегая наперёд, скажу, что пользоваться ей в наше время невозможно.

Тем не менее, Windows Phone не растеряла свой шарм, и ее отголоски можно найти даже в iPhone 12. В общем, обо всём по порядку.

Что не так с Windows Phone в 2021

Смартфоны Lumia до сих пор выглядят достойно.

Тут нужно ответить на главный вопрос: что такое смартфон для современного пользователя? В первую очередь — это сервисы. Каждый день я плачу при помощи смартфона, давно не ношу с собой пластиковые карты, вызываю такси, покупаю билеты, бронирую жильё и иногда даже работаю.

Речи о работе каких-то современных сервисов на Windows Phone в 2021 году даже не идёт.

В 2017 году исполнительный директор Microsoft Джо Бельфиор заявил о прекращении выпуска новых устройств на Windows 10 Mobile. Ещё через два года, в 2019, было объявлено о закрытии магазина приложений для Windows Phone 8.1, а также выпуска обновлений для Windows 10 Mobile. Смартфонам на Windows Phone 8 (впоследствии и 8.1) отключили работу сервера уведомлений.

Перспективы у платформы были.

Напомню, Windows Phone — закрытая операционная система, которая не поддерживает установку приложений в обход магазина приложений Microsoft. Назовите любое приложение — его сюда не установить. Даже банально Telegram или WhatsApp. Да и смысл от этого всего теряется, потому что узнавать о новых оповещениях вы не сможете.

У меня дома много старых гаджетов, и могу сказать, что никто, ни Google, ни уж тем более Apple так не ограничивает своих пользователей. Периодически залипаю в iPhone 4s на iOS 6, там у меня стоит Telegram, ВКонтакте, электронная почта, и им я, в принципе, могу пользоваться.

Если захочется установить какое-то приложение из App Store, то на смартфон просто загрузится его старая версия. Нет «законсервированности», которая есть в Windows Phone.

Откуда взялась Windows Phone

iPhone стал убийцей КПК.

Microsoft громко вошла на рынок КПК и смартфонов ещё в 2000 году, задолго до Android и iPhone. Тогда у «майков» была Windows Mobile. Слишком замудренная операционная система, оптимизированная под управление стилусом. Не слукавлю, если скажу, что WM была неким аналогом Android для того времени.

Куча софта и безграничные возможности кастомизации сделали её довольно популярной. Но с выходом iPhone понятие смартфона изменилось: отныне пользователи хотели видеть устройство с интуитивно понятным интерфейсом, которым удобно пользоваться одной рукой.

Чувствуется выдержанность стиля.

Превратить в нечто похожее Windows Mobile было нереально, поэтому Microsoft в 2010 году полностью перекроили привычную многим операционную систему. Теперь интерфейс приобрёл минималистичный стиль с большими заголовками и крупными значками. Оболочку назвали «Metro», в ней использовали наработки интерфейса от Xbox и плеера Zune.

Также был запущен многострадальный магазин приложений Microsoft Store. Компания не смогла толком договориться с разработчиками, поэтому хороших приложений в нем можно по пальцам сосчитать.

Тем не менее, эту платформу любили во многом за авангардность. Она была закрытой, имела хорошую оптимизацию, поэтому система летала даже на откровенно бюджетных смартфонах. Но самое главное, Windows Phone во многом опередила время.

1. Тёмная тема

Тёмный фон не отвлекает от контента.

Пока интерфейсы Android и iOS использовали светлые подложки, Microsoft решила в 2010 году опередить индустрию на несколько лет вперёд и добавить в систему тёмную тему. Интерфейс отлично чувствовал себя на смартфонах с AMOLED-экранами, которых в то время становилось все больше и больше.

Причём тёмная тема была не отдельной опцией, а стандартной настройкой системы. Смотрелось в те времена это непривычно: когда у меня была Nokia Lumia, я даж включал светлое оформление.

2. Интерактивные виджеты-значки на рабочем столе

Одно из лучших воплощений рабочего стола. ИМХО.

Пока Android использовал на рабочем столе абсолютно страшные и разрозненные по стилю виджеты, а в iOS их вообще не было, Phone имела самый стильный, на мой взгляд, рабочий стол. Microsoft решила не идти по пути клише существовавших тогда операционных систем, а придумала новое решение.

Каждый значок приложения на рабочем столе был интерактивным и демонстрировал какую-то информацию. Будь то погода, сообщения, новости или фотографии. Всё это сопровождалось очень приятной анимацией.

Согласитесь, такой интерфейс выглядел абсолютно уникально. Покажи такой экран в наше время, и его ни с чем не спутаешь.

А теперь вспомните рабочий стол iOS 14 и iOS 15. Согласитесь, есть между ними что-то общее.

3. Вирусов не было, хоть это и Windows

Это вам не Android.

Windows Phone, как я уже говорил выше, была закрытой системой. Во многом она напоминала iOS, как минимум в безопасности. С учётом того, что приложения можно было загружать строго из Microsoft Store, подхватить какой-нибудь вирус было невозможно.

К тому же, весь софт работал в своей «песочнице», и никак не мог взаимодействовать с системными ресурсами. Опять же, привет iOS! На фоне Android Windows Phone была островком спокойствия.

Так что, те люди, которые нуждались в надёжной защите своих данных, но не могли позволить себе iPhone, покупали себе HTC или Nokia с Windows Phone и не парились.

4. Экосистема

В устройствах на Windows действительно была преемственность дизайна.

Во-первых, в Windows 8.1 (и Phone 8.1) Microsoft замахнулась на реализацию общего магазина приложений для компьютеров, планшетов и смартфонов. Приложения, которые вы могли установить на свой телефон, можно было установить и на другие устройства. Похожим образом недавно начал работать App Store с Mac M1.

Во-вторых, в платформу был глубоко интегрирован сервис OneDrive (раньше он назывался SkyDrive). Файлы с рабочего стола компьютера можно было синхронизировать с облачным хранилищем и просматривать их с других устройств.

Впоследствии аналогичная реализация появилась в iCloud Drive. Это я ещё не говорю об автоматической синхронизации всех фотографий и видео. Всё работало как надо.

В свое время хотел себе ноутбук-трансформер. Сейчас понимаю, что это не нужно.

Также синхронизировались данные между приложениями. Если вы начали писать текст в Word на компьютере, его можно быстро продолжить писать на смартфоне или другом компьютере. Ну и аналогично с заметками, таблицами и так далее.

В-третьих, система синхронизировала настройки персонализации. При желании можно было включить опцию, с которой цветовая палитра системы становилась общей для всех гаджетов. То есть, если вы сделаете плитки синими на смартфоне, они станут синими и на компьютере. 

5. Огромные возможности для фото

Были даже специальные камерафоны. Слева: Nokia Lumia 1020 с камерой 41 МП.

Смартфоны на Windows Phone были, пожалуй, лучшими камерофонами. Тут отдельное спасибо нужно сказать Nokia, которые разрабатывали кастомное приложение Lumia Камера (впоследствии оно стало стандартным).

Выверенные алгоритмы и ручные настройки позволяли делать фотошедевры даже на бюджетные смартфоны с камерой 5 МП. На них можно было делать даже астрофото! Ночной режим, разумеется, тоже был.

Почему Windows Phone канула в лету

К тому же, в последние годы жизни Windows Phone Microsoft зачем-то начала целиться в коммерческий сектор. Нужно было делать акцент на массового потребителя.

Однозначного ответа на этот вопрос нет. Кто-то считает «не повезло», но на самом деле это результат множества факторов. Во-первых, Windows Phone имела крайне ограниченный магазин приложений.

К 2010 году на рынке устоялись два кита — Android и iOS. Разработчики неохотно оптимизировали свои приложения под новую платформу, потому что Windows Phone использовала другой API, а на это нужно было много времени и денег.

А зачем тратить время и деньги на оптимизацию приложений для платформы, которой пользуются два с половиной землекопа? Владельцев WP-смартфонов было очень мало на фоне Android и iPhone.

На Windows Phone очень долго не было Instagram.

Выходит замкнутый круг: разработчики не выпускали свои приложения из-за малого числа пользователей, при этом потребители не хотели переходить на эту платформу из-за малого числа приложений.

Так что, можно сказать — Windows Phone просто вышла слишком поздно. Если бы Microsoft представила новую операционную систему раньше, а не выдавливала последние соки из Windows Mobile, история могла обернуться совершенно иначе.

А сегодня это просто кусочек истории мобильных технологий. Кто знает, может Microsoft ещё сможет нас удивить.

(173 голосов, общий рейтинг: 4.76 из 5)

undefined

iPhones.ru


Её отголоски есть даже в iOS 15.

Василий Шкодник

@podogreykin

Главный любитель технологий и Звёздных воин в галактике. До сих пор слушаю музыку с iPod.

Есть вопрос или замечание: [email protected]

windows-10-hero-creators-update

Инструкция обновлена и повторно опубликована по просьбам читателей.

С выходом Windows 10 Mobile Creators Update Microsoft резко сократила список поддерживаемых устройств. Все Lumia 3-его поколения официально не получат Creators Update и последующие версии системы — 1709 и более поздние. С выходом Fall Creators Update из списка поддерживаемых была исключена также Lumia 640. В этой статье мы расскажем, как установить последние билды Windows 10 Mobile на неподдерживаемые устройства.

Инструкция предназначена только для неподдерживаемых устройств, на которые уже установлена Windows 10 Mobile. Для того, чтобы применить это руководство, вам следует сначала обновить ваш смартфон до Windows 10 Mobile.

  • Устройства, которые официально получили обновление до Windows 10, могут быть обновлены до этой версии системы с помощью официального приложения Помощник по обновлению. Это Lumia 430, 435, 532, 535, 540, 635 (1 ГБ), 636 (1 ГБ), 638 (1 ГБ), 640, 730, 735, 830, 929, 930 и 1520.
  • Устройства, которые не получили обновление до Windows 10, сначала придётся каким-либо образом обновить до этой версии системы. Это Lumia 520, 525, 620, 625, 630, 635 (512 МБ), 720, 820, 920, 925, 1020, 1320 и другие смартфоны.

Отметим, что последние версии системы (1709 по состоянию на октябрь 2017) не оптимизируются под эти устройства. Вы можете столкнуться со специфическими багами, присущими только неподдерживаемым девайсам, и вряд ли разработчики из Microsoft будут их исправлять. Некоторые дополнения, вроде Glance Screen, могут вовсе не заработать. Мы не несём никакой ответственности за проделанные вами действия. Все операции вы выполняете на свой страх и риск.

Учтите, что после сброса настроек все изменения в реестре пропадут, и вам придётся выполнять все операции заново.

Как установить Windows 10 Mobile на неподдерживаемые Lumia

  1. Сделайте Interop Unlock.
  2. Отключите автоматическое обновление приложений в настройках Магазина. После того, как вы проделаете все операции, ни в коем случае не обновляйте приложение Extras+Info (Информация).
  3. Зайдите в Interop Tools, выберите раздел This Device и откройте Registry Browser.
  4. Перейдите в следующую ветвь: HKEY_LOCAL_MACHINE \ SYSTEM \ Platform \ DeviceTargetingInfo.
  5. Запишите себе куда-нибудь или сделайте скриншоты значений ключей PhoneManufacturer, PhoneManufacturerModelName, PhoneModelName и PhoneHardwareVariant.
  6. Измените их так, как указано немного ниже.
  7. Перезагрузите смартфон.
  8. Пройдите в Параметры — Обновление и безопасность — Программа предварительной оценки и включите получение предварительных сборок. Возможно, смартфон необходимо будет перезагрузить. После перезагрузки убедитесь, что выбран круг Fast.
  9. Перезагрузите смартфон.
  10. Проверьте наличие обновление в Параметрах — Обновление и безопасность — Обновление телефона.
  11. Установите последнюю доступную сборку.

Как изменить значения в реестре для установки Fall Creators Update (1709)

Это зависит от того, какой у вас смартфон: односимочный или двухсимочный.

Односимочный

  • PhoneManufacturer: MicrosoftMDG
  • PhoneManufacturerModelName: RM-1085_11302
  • PhoneModelName: Lumia 950 XL
  • PhoneHardwareVariant: RM-1085

Двухсимочный

  • PhoneManufacturer: MicrosoftMDG
  • PhoneManufacturerModelName: RM-1116_11258
  • PhoneModelName: Lumia 950 XL Dual SIM
  • PhoneHardwareVariant: RM-1116

Для экспертов

Если вы — эксперт, то можете воспользоваться ключами других поддерживаемых смартфонов для подмены. Мы приводим их ниже.

Lumia 550
  • PhoneHardwareVariant: RM-1127
  • PhoneManufacturer: MicrosoftMDG
  • PhoneManufacturerModelName: RM-1127_15206
  • PhoneModelName: Lumia 550
Lumia 650
  • PhoneHardwareVariant: RM-1152
  • PhoneManufacturer: MicrosoftMDG
  • PhoneManufacturerModelName: RM-1152_15637
  • PhoneModelName: Lumia 650
Lumia 650 DS
  • PhoneHardwareVariant: RM-1154
  • PhoneManufacturer: MicrosoftMDG
  • PhoneManufacturerModelName: RM-1154_15817
  • PhoneModelName: Lumia 650 DUAL SIM
Lumia 950
  • PhoneHardwareVariant: RM-1104
  • PhoneManufacturer: MicrosoftMDG
  • PhoneManufacturerModelName: RM-1104_15218
  • PhoneModelName: Lumia 950
Lumia 950 DS
  • PhoneHardwareVariant: RM-1118
  • PhoneManufacturer: MicrosoftMDG
  • PhoneManufacturerModelName: RM-1118_15207
  • PhoneModelName: Lumia 950 DUAL SIM
Краткие характеристики этих устройств
  • Lumia 550: Snapdragon 210; 1/8 GB; 4,7» IPS HD.
  • Lumia 650: Snapdragon 212; 1/16 GB; 5» AMOLED HD.
  • Lumia 950: Snapdragon 808; 3/32 GB; 5,2» AMOLED QHD.
  • Lumia 950 XL: Snapdragon 810; 3/32 GB; 5,7» AMOLED QHD.

Как изменить значения в реестре для установки Creators Update (1703)

Односимочный (Lumia 640):

  • PhoneManufacturer: MicrosoftMDG
  • PhoneManufacturerModelName: RM-1072_1062
  • PhoneModelName: Lumia 640 LTE
  • PhoneHardwareVariant: RM-1072

Как установить Windows 10 Mobile на неподдерживаемые Lumia с помощью DHT Upgrade Advisor

Фанаты Windows 10 Mobile, которые по совместительству являются разработчиками, выпустили специальное приложение для обновления неподдерживаемых смартфонов до последних сборок Windows 10 Mobile. Оно проводит все операции с реестром, которые мы описали выше, автоматически, а заодно может само создать резервную копию существующих значений ключей. Расскажем, как им воспользоваться.

  1. Сделайте Interop Unlock.
  2. Отключите автоматическое обновление приложений в настройках Магазина. После того, как вы проделаете все операции, ни в коем случае не обновляйте приложение Extras+Info (Информация).
  3. Установите зависимости приложения, а затем и само DHT Upgrade Advisor.
  4. Зайдите в DHT Upgrade Advisor.
  5. Поставьте галочку First get a backup of your device targeting info.
  6. Выберите тип своего смартфона: Single Sim (односимочный) или Dual Sim (двухсимочный).
  7. Нажмите на кнопку Allow Update.
  8. Перезагрузите смартфон.
  9. Пройдите в Параметры — Обновление и безопасность — Программа предварительной оценки и включите получение предварительных сборок. Возможно, смартфон необходимо будет перезагрузить. После перезагрузки убедитесь, что выбран круг Fast.
  10. Перезагрузите смартфон.
  11. Проверьте наличие обновление в Параметрах — Обновление и безопасность — Обновление телефона.
  12. Установите последнюю доступную сборку.
  13. При необходимости возвращения стандартных значений в реестр зайдите в DHT Upgrade Advisor и нажмите Restore Backup.

Если эти инструкции не сработали, вы можете изучить форумы XDA или 4PDA: быть может, кто-то уже сталкивался с вашими ошибками.

Как известно, до недавнего времени на рынок выходили полноценные смартфоны не только на Android и iOS, как это происходит сейчас, но еще и таковые на базе BlackBerry OS и Windows Phone. Тем не менее, от былого величия данных платформ не осталось и одного следа, потому что теперь они являются лишь частью истории, а какие-либо мобильные устройства на их базе уже не выпускаются. С момента прекращения поддержки платформы WP компанией Microsoft прошло уже более двух лет, в течение которых она не выпускала для таких ни одного обновления. Все указывает на то, что у смартфонов на базе такой нет совершенно никакого будущего, а сегодня, 16 октября 2019 года, все сумели в этом самостоятельно убедиться.

Так, в частности, американская корпорация Microsoft публично объявила о том, что уже с 16 декабря 2019 года ее фирменный магазин приложение под названием Windows Phone Store перестанет работать каким-либо образом. Установка каких-либо приложений через него – это единственный возможный способ установки ПО на мобильные устройства под управлением WP. На практике это означает, что пользователи устаревших мобильных устройства лишатся возможности производить установку любых программ и игр. Плеймаркет станет недоступен на Windows Phone 8.1 уже в конце нынешнего года, а затем, спустя какой-то период времени, он также перестанет работать на Windows 10 Mobile.

В связи с этим Microsoft рекомендует всем пользователям задуматься о замене мобильного устройства на новое под управлением Android или iOS. Речь идет о продукции, выпущенное на рынок под брендами Nokia и Microsoft. С прекращением поддержки по части фирменного магазина программного обеспечения перестанет работать буквально все, потому что без него любые смартфоны утратят свою полноценную работоспособность, лишившись возможности запускать и использовать стороннее программное обеспечение. Поддержка Windows 10 Mobile по части обновлений будет осуществляться до 10 декабря, а фирменный магазин ПО для нее проработает еще какое-то время дополнительно.

Под удар попали такие модели мобильных устройств, как Lumia 430, Lumia 435, Lumia 532, Lumia 535, Lumia 540, Lumia 635, Lumia 636, Lumia 639, Lumia 640, Lumia 640 XL, Lumia 730, Lumia 735, Lumia 830, Lumia 929, Lumia Icon, Lumia 930 и Lumia 1520. Всем владельцам таких, вне каких-либо сомнений, однозначно не повезло, ведь едва ли нужен современный смартфон без возможности устанавливать на него какие-либо программы и игры от сторонних разработчиков. Впрочем, пользователям платформы WP не привыкать к ограничениям, ведь для нее множество приложений всегда было недоступно, в том числе таких популярных и известных, как Google Chrome, Gmail, YouTube, а также многих другие.

Ранее появилась информация о том, что проект Pegasus полностью меняет внешний вид Windows 10, делая его намного лучше.

Источник изображений: «Яндекс Картинки»

Присоединяйтесь к нам в Google News, Twitter, Facebook*, Instagram*, ВКонтакте, YouTube и RSS чтобы следить за новостями и оперативно получать интересные материалы.

* Сервисы признаны судом экстремистскими и запрещены в России.

Долгое время пользователи Windows Phone мечтали об установке приложений и игр на их мобильные устройства без помощи ПК. Ведь это занимало немало времени, вы должны были скачать Windows Phone 8.1 SDK, зарегистрироваться в качестве разработчика приложений, при это вам была доступна установка лишь только двух приложений, и не более, да и, не у всех есть ПК. Но, к счастью, разработчики из Microsoft упростили эту задачу, создав пункт в настройках телефона под названием «Для Разработчиков». В этой статье я постараюсь подробно вам рассказать как устанавливать .APPX игры и приложения на Windows 10 Mobile без помощи ПК.

Что нужно:

1. Телефон на базе Windows 10 Mobile.

2. Приложение/игра с расширением .APPX (расширение .XAP не проверялось).

3. Любое приложение для закачки файлов, оно не обязательно, можно обойтись и встроенным браузером Microsoft Edge, но я советую использовать приложение Loadkit Download Manager.

4. Любой сайт для закачки .APPX приложений/игр.

Инструкция:

1. Для начала нужно включить функцию «Режим Разработчика», для этого нужно:

1.1 Перейти в «Настройки».



1.2. Перейти в пункт «Обновление и безопасность».



1.3. Перейти в подпункт «Для Разработчиков».



1.4. Выбрать параметр «Режим Разработчика».



Первый шаг выполнен. Теперь приступим к закачке и установке самого приложения, в моем случае это Minecraft: Pocket Edition.

2. Скачивание и установка приложений/игр.

2.1. Переходим на любой сайт где вы хотите скачать устанавливаемый файл, копируете ссылку, в моем случае это наш замечательный сайт Trashbox.ru.

2.2. Открываем программу Loadkit Download Manager и скачиваем файл с помощью выше сказанной мною программы. Для этого нужно нажать на «Add New Download» или на знак «+», вставить ссылку, которую мы раннее скопировали, нажать на «Go», программа проанализирует ссылку и выдаст вам название скачиваемого файла, вы можете переименовать его и дать путь в любую папку для закачки, в моем случае это папка «Downloads», далее нажимаем «Start Download».

2.3. После того, как файл закачался, нам нужно зайти в системную Windows 10 Mobile программу

«File Explorer», и пройти по пути «D:\Downloads» и находим файл под названием «minecraftpe_0_13_0.appxbundle», нажимаем на него.

2.4. После того, как нажали, нам всплывет окно, нажимаем «Install».

2.5. Ждем немного времени, от 30 секунд, до 1 минуты, и, как мы видим приложение установилось!

Теперь проверим приложение на работоспособность. Открываем его, и видим, оно работает.

Как мы видим из инструкции, все очень легко и просто. Наконец пользователи будут рады. На данный момент неизвестно, сколько приложений можно устанавливать, некоторые говорят, что до 20 приложений установить можно точно. Всем спасибо за внимание!

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows photo viewer пропал
  • Телефон nokia на базе windows
  • Аналог приложения фото для windows
  • Lexar bootit для windows 10 64 bit
  • Windows photo viewer windows 7 не работает