image

Размер экрана — краеугольный камень мира современных смартфонов. Кто-то считает, что дисплеи должны становиться только больше, а рамки — меньше, кто-то любит «средние» дисплеи диагональю в 5+", ну а кто-то остаётся ярым поклонником и приверженцем компактных смартфонов с крошечными дисплейчиками. В наше время, купить новый смартфон с относительно небольшим дисплеем за приемлемые деньги почти нереально — самые бюджетные модели будут слишком тормозными для современного пользователя. Некоторое время назад, я купил себе бюджетный крошечный смартфон 2012 года выпуска — Samsung Galaxy Pocket, причём всего за 100 рублей. Конечно же мне захотелось довести его до ума — а доводить пришлось руками и навыками прожженного программера! Какой смартфон можно получить за 100 рублей? Читаем в статье!

Минутка предыстории


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

image

Однако несмотря на всеобщее засилие больших «лопат», в мире всё ещё оставались поклонники маленьких и компактных телефонов, которыми очень удобно пользоваться одной рукой. Сейчас подобные устройства представляют только небольшие бренды, известные достаточно в узких кругах — в основном, их можно купить на маркетплейсах, в обычных салонах связи их не найти. Мне известно о нескольких подобных устройствах, которые сейчас присутствуют на рынке. Первый из них «закос» под iPhone — Soyes XS11:

image

Но тут уж, если честно, хочется назвать такой смартфон не просто компактным, а совсем малюсеньким. На нём вполне удобно выполнять задачи звонилки, но совсем неудобно набирать текст — поэтому под наши задачи, он не особо подходит. Кроме того, эти девайсы работают на базе бюджетного смартфонного железа 6-7 летней давности, поэтому их производительность будет достаточно невысокой по меркам современного пользователя. Конечно же есть и более серьёзные варианты — например, компания Unihertz (да, тот самый продолжатель идей BlackBerry) делает смартфоны Jelly 2: дисплей с диагональю 3", Helio P61 под капотом и Android 11 на борту. Вот только цена, мягко говоря, кусачая — 18 тысяч рублей на момент написания статьи. Это слишком дорого!

Но если душа прямо таки лежит к компактным смартфонам, почему бы не обратиться к рынку Б/У устройств и не присмотреть что-то из… прошлого десятилетия? А вариантов ведь реально много — тут и LG Optimus L3 (3.2"), и Samsung Galaxy Pocket Neo (2.8"), Samsung Galaxy Star (3"), Samsung Galaxy Fame (3.5"), Samsung Galaxy Young. Все перечисленные девайсы стоят реально копейки — можно купить живой вариант до 400-500 рублей!

image

Я решил взять себе целых два смартфона: Samsung Galaxy Mini и Samsung Galaxy Pocket первого поколения. Оба достались мне в одном лоте за 2.000 рублей (с 20 телефонами) и обошлись мне по сто рублей, причём оба смартфона были рабочими! Чуть позже я докупил отдельно Galaxy Star (250 рублей), Galaxy Fame (250 рублей) и Galaxy Pocket Neo (~400 рублей) для полноты коллекции — вышло совсем недорого. Итак, что за характеристики мы получаем в смартфоне за 100 рублей:
  • Android: 2.3 Gingerbread.
  • Чипсет: Broadcom BCM21553 с одним ядром Cortex-A5 на частоте 832мгц. Видеочип: VideoCore IV, он же использовался в Raspberry Pi.
  • ОЗУ: 256 мегабайт (предположительно — DDR1).
  • Встроенная память: 3 гигабайта + слот для SD.
  • Дисплей: 2.8", 240x320, емкостной тачскрин.
  • Сеть: Поддержка 2G/3G. Об LTE и речи не идёт.

Выглядит не особо густо, да? И разрешение весьма низкое — большинство софта не запустится, а о клиентах современных сервисов и мечтать не приходится… или приходится?

image

Конечно же шаловливым ручкам захотелось вернуть жизнь этому миниатюрному красавцу и я решил использовать его как второй смартфон — при этом с клиентом ВК и музыкой, которые я запилил сам.

Разработка под старые версии Android


На самом деле, разработка под старые версии Android не особо отличается от современных версий системы. Кое-где приходится костылить, велосипедить и юзать AppCompat для реализации современных фишек на старых версий системы, но, будем честным, подобного и в последних версиях Android достаточно.

Даже сейчас нет никакой проблемы скачать последнюю версию Android Studio, подключить смартфон с включенной отладкой и отлаживать приложение прямо на девайсе — logcat тоже есть. Единственный нюанс — поиск драйверов и ручное закрытие приложений в таскменеджере, если вы деплоите под Android 2.x (Android Studio не умеет сам закрывать приложение, чтобы переустановить пакет).

В целом, за всё время разработки под старые устройства, я пришёл к следующим выводам:
  • Поскольку большинство устройств имеет одно ядро, для плавности интерфейса нужно минимизировать любую работу в фоне.
  • Взаимодействие с современными веб-сервисами может быть осложнено из-за отсутствия поддержки TLS1.2 и устаревших сертификатов (проверка сертификатов легко обходится специальным костылем, а вот TLS — нет).
  • У Android до 3.0 вся отрисовка интерфейса программная и она опять же, будет сказываться на скорости работы фоновых служб. Чем менее интерфейс комплексный, тем лучше.
  • Пушей нет — да, вообще. Однако это ничуть не помешает нам сделать уведомления практически в реальном времени с помощью… очередного костыля!

Допиливаем ВК


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

Честно сказать, вся концепция интерфейса требовала полной переработки — боковое меню банально очень неудобно использовать на подобных устройствах из-за малых размеров каждой строчки. Поэтому я решил не изобретать велосипед, а обратился к дизайнерам Apple и первоисточнику: официальному клиенту ВК для iOS 6, родом из 2012 года!

image

Приложение для Android выглядело +- также в те годы. Видите вкладки с разделами снизу? Они то нам и нужны — это самый удобный способ навигации на таких смартфонах! Накидав макет в layout'е, я приступил к реализации:

image

Изначально мне хотелось, чтобы всё приложение было плавным и анимированным: для этого я обратился к фреймворку анимаций Android. Суть очень простая — это обычный интерполятор значений от a до b за определенный промежуток времени. При этом мы не можем анимировать произвольное свойство — только те, который уже реализованы в системе (переход, поворот, масштабирование, альфа-канал). Более наглядно это можно представить вот так:

Animation anim = new TranslateAnimation(-metrics.widthPixels, 0, 0, 0);
anim.setDuration(650 + (id * 150));
view.startAnimation(anim);


Да, это всё анимация :) Получаем примерно такой результат:



Обратите внимание, что запуск большого количества анимаций будет вызывать перерисовку даже в том случае, если элемент не видно на экране — от чего у нас будут дикие тормоза! Осторожнее с этим.

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

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

В Android есть два типа служб: background (фоновые) и foreground (видимые пользователю). Первый тип служб система может прибить когда угодно — например мало памяти или экономия заряда АКБ. А вот второй тип служб система не прибивает практически никогда, поскольку они обозначают выполнение важной операции в фоне — например скачивание файла или обновление системы. Однако у них есть одно ограничение — они должны быть привязаны к собственному уведомлению, которое нельзя закрыть. В процессе реализации возникло еще пару проблем — Wakelock'и (механизм, предотвращающий уход девайса в «сон») и WiFiLock'и (тоже самое, но для WiFi).

@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        notificationManager.notify(NOTIFICATION_ID, notification);
        startForeground(NOTIFICATION_ID, notification);

        return Service.START_NOT_STICKY;
    }

    public void play(TrackInfo info) {
        currTrack = info;

        try {
            player.reset();

            String alternativeUrl = String.format("http://90.156.209.92/audiorelay.php?act=stream&url=%s", URLEncoder.encode(info.mp3Url));

            player.setAudioStreamType(AudioManager.STREAM_MUSIC);
            player.setDataSource(alternativeUrl);
            player.prepareAsync();

            wifiLock = wifiManager.createWifiLock("audio:wifiLock");
            wifiLock.acquire();
            player.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);

            player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) {
                    player.start();
                }
            });

            player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mediaPlayer) {
                    wifiLock.release();
                }
            });

            notificationBuilder.setContentText(info.artist + " - " + info.name);
            notification = notificationBuilder.build();
            notificationManager.notify(NOTIFICATION_ID, notification);
        } catch (IOException e) {
            DialogUtils.showNetworkErrorNotify(getApplicationContext(), "Не удалось воспроизвести трек");

            e.printStackTrace();
        }
    }

    public TrackInfo getCurrentTrack() {
        return currTrack;
    }

    public MediaPlayer getPlayer() {
        return player;
    }

Точно таким же способом я реализовал механизм уведомлений — как я уже говорил раньше, пушей на старых смартфонах нет вообще ни в каком виде, поэтому пришлось реализовывать свой механизм «обновления»: каждые 3-5 секунд запрашиваем список последних 5 диалогов с сервера и сравниваем с предыдущим результатом, если есть новые сообщения — создаём нотификацию.

private NotificationCompat.Builder createMessageNotification(String sender, String message) {
        Intent mainActivityIntent = new Intent();
        mainActivityIntent.setClass(getApplicationContext(), MainActivity.class);

        PendingIntent intent = PendingIntent.
                getActivity(getApplicationContext(), 1, mainActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        return new NotificationCompat.Builder(getApplicationContext()).
                setContentTitle(sender).
                setContentText(message).
                setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)).
                setContentIntent(intent).
                setAutoCancel(true).
                setSmallIcon(R.drawable.message);
    }

    private Conversations.Profile findProfileById(Conversations.Root jObj, int id) {
        for (Conversations.Profile profile :
                jObj.response.profiles) {
            if(profile.id == id)
                return profile;
        }

        // This code shouldn't be reached
        return null;
    }

    private void attachEventCheckLoop() {
        Handler handler = new Handler();

        handler.post(new Runnable() {
            @Override
            public void run() {
                VK.Instance.request("messages.getConversations", new VK.ObjectResponse<Conversations.Root>() {
                    @Override
                    public void onSuccess(Conversations.Root jObj) {
                        if(prevResponse != null) {
                            for(int i = 0; i < jObj.response.items.size(); i++) {
                                Conversations.Item srcItem = prevResponse.response.items.get(i);
                                Conversations.Item newItem = jObj.response.items.get(i);

                                if(newItem.last_message.from_id == Integer.parseInt(AppPreferences.getInstance().Data.id))
                                    break;

                                if(srcItem.last_message.id != newItem.last_message.id) {
                                    String shortMessage = "";

                                    if(newItem.last_message.text == null || newItem.last_message.text.length() == 0)
                                        shortMessage = "< Вложение >";
                                    else
                                        shortMessage = newItem.last_message.text;

                                    Conversations.Profile profile = findProfileById(jObj, newItem.conversation.peer.id);
                                    NotificationCompat.Builder notify =
                                            createMessageNotification(profile == null ? "Беседа" : (profile.first_name + " " + profile.last_name), shortMessage);

                                    notificationManager.notify(15, notify.build());
                                }
                            }
                        }

                        prevResponse = jObj;
                    }

                    @Override
                    public void onError(int code, String msg) {

                    }
                }, Conversations.Root.class, "&count=5&extended=1");



                handler.postDelayed(this, TIME_INTERVAL * 1000);
            }
        });
    }

После этого, я начал рутинную работу по реализации интерфейса для данных с сервера — паблики, друзья, профили, лента и.т.п. В некотором смысле, реализация ленты весьма занимательна: вообще, для очень больших списков существуют т.н виртуализация ListView — это когда ListView отображает только видимый пользователю кусок датасета (набора данных — например, список записей на стене) и на старых версиях Android она доступна. Однако мне было интересно реализовать вариант, который потреблял бы минимальное количество ОЗУ и где я точно знал бы, когда пользователь видит тот или иной фрагмент приложения. Поэтому я реализовал… пагинацию свайпами! Вот так привет из нулевых!

Для этого я использовал GestureDetector — встроенный в систему класс для обнаружения простых жестов — свайпов и.т.п. ВК при запросе ленты отдаёт специальную метку для получения следующей страницы новостей (поскольку она может динамически меняться и нужно хранить её стейт), мы эти метки просто сохраняем и переключаемся по странницам новостей с помощью обычных свайпов вправо-влево:

paginatorGestureDetector = new GestureDetector(Activity, new GestureDetector.OnGestureListener() {
            @Override
            public boolean onDown(@NonNull MotionEvent motionEvent) {
                return false;
            }

            @Override
            public void onShowPress(@NonNull MotionEvent motionEvent) {

            }

            @Override
            public boolean onSingleTapUp(@NonNull MotionEvent motionEvent) {
                return false;
            }

            @Override
            public boolean onScroll(@NonNull MotionEvent motionEvent, @NonNull MotionEvent motionEvent1, float distX, float v1) {
                float absValue = 20;
                if(Math.abs(distX) > absValue && !isBusy) {
                    if(distX < 0)
                        goBack();

                    if(distX > 0)
                        goForward();

                    return true;
                }
                return false;
            }

            @Override
            public void onLongPress(@NonNull MotionEvent motionEvent) {

            }

            @Override
            public boolean onFling(@NonNull MotionEvent motionEvent, @NonNull MotionEvent motionEvent1, float v, float v1) {
                return false;
            }
        });

Выглядит весьма забавно.

Юзабельно ли всё это на деле?


Давайте смотреть, может ли юзать такой смартфон в наши дни. Берём наш девайс в руки, логинимся и оцениваем его производительность «вхолостую».

image

Работает весьма шустренько, учитывая что это бюджетник 2012 года. Как насчет нашего самопального клиента ВК? Смотрим:



Работает весьма бодро. Не сказать что также плавно, как последний айфон, но и совсем плохим результат явно не назвать!

Смартфонный функционал у девайса тоже вполне ничего: 1-2 SIM (в зависимости от версии), нормальная синхронизация контактов с ПК (однако Kies вроде-бы не работает на Windows 10, но есть vcf):

image

Встроенный почтовый клиент продолжает работать без каких либо проблем. Однако настраивать некоторые почтовые сервисы нужно вручную и с помощью «паролей приложений» — напрямую залогинится возможности нет. В случае «покета», придется поставить стоковый клиент из Android 2.3 вручную.

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

Единственное, что откровенно подводит — браузер. Последним вариантом осталась Opera Mini 7 — она позволяет смотреть сайты, но не поддерживает динамический контент, только статику. Ну, зайти на википедию или почитать статью на Хабре хватит. Родной браузер уже не в состоянии что либо загрузить :(

image

Ну а в общем, производителньость смартфона весьма радует, согласитесь? Нельзя сказать, что он уж слишком тормозной — по крайней мере, современные ультрабюджетные смартфоны (до 4-5 тысяч рублей) зачастую показывают себя гораздо хуже чем и флагманы прошлых лет, и даже бюджетники!

Заключение


И всё таки, я считаю что мне удалось в каком-то смысле вдохнуть новую жизнь в старенький девайс. Если использовать подобный девайс как второй — на случай, если сел основной смартфон, то такой миниатюрный красаввчик может неождианно выручить даже в довольно сложной ситуации. Кроме того, эти смартфоны всеядны к аккумуляторам — достаточно подпаять + и — и они будут работать хоть от BL-4C.

Главная ценность Galaxy Pocket — в его компактных размерах. А поскольку по настоящему дешевых, маленьких и шустрых смартфонов становится всё меньше и меньше, то нам остаётся лишь продлять жизнь моделям прошлых лет! Есть ли в этом смысл и получил ли смартфон новую жизнь? Пишите в комментариях!

image

Клиент ВК можно скачать на 4pda. Там лежит самая последняя версия (для скачивания нужна регистрация на форуме). Если по каким-то причинам не хотите регистрироваться на форуме — я выложил актуальную версию в комментариях.

Эта статья поддерживается командой ITGLOBAL.COM

Мы — первый облачный провайдер в России, а также интегратор, поставщик ИТ-услуг, продуктов, сервисов и разработчик собственного ПО.

Наш сайт
Наш блог про виртуализацию и Enterprise IT
Истории успеха наших клиентов

Комментарии (32)


  1. MaFrance351
    13.09.2023 15:11
    +4

    Понравился пост.
    Из маленьких телефонов мне больше всего нравились Palm (ну, сейчас не про те самые пальмы, а про наследников этой компании, выпускавшей ведроиды). Но у них у всех проблема даже больше не в софте и не в железе, а в батарее под стать корпусу, заряд которой при активном использовании отрицательно растёт как на дрожжах...


    достаточно подпаять + и — и они будут работать хоть от BL-4C

    А с зарядкой как у них? GT-S5830I от двух проводов работал, но без припайки третьего только делал вид, что заряжается. А при подключении зарядки к выключенному показывал значок батареи и треугольника с восклицательным знаком.


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

    Многие нынешние такие экземпляры — реально откровенный шлак, который начинает тупить уже сразу после покупки, увы.


    1. bodyawm Автор
      13.09.2023 15:11
      +1

       А при подключении зарядки к выключенному показывал значок батареи и треугольника с восклицательным знаком.

      Зависит от девайса. Я подкидывал другую самсунговскую АКБ к Galaxy R - работало норм.


      1. poulch
        13.09.2023 15:11
        +1

        я вхождение в андроид начал с малыша Zte Libra, он же Blade он же Orange San Francisco и емнип beeline E400 итп. Под него наклепали кучу прошивок вплоть до андроид 4.3… лежит до сих пор живой-рабочий с резервной симкой. кстати rim blackberry все еще лежит в столе :)


        1. bodyawm Автор
          13.09.2023 15:11

          RIM все ждет не дождется?))

          У самого есть E400, прикольный девайс. А ещё есть ZTE Racer - легенда))


        1. dimka11
          13.09.2023 15:11

          У меня тоже E400 с прошивкой CyanogenMod Android 4.4 , жаль мобильный интернет не работает на ней.


      1. strvv
        13.09.2023 15:11

        недавно подкидывал к кнопочнику филипса бл4, отказался заряжаться — отрицательные температуры. надо будет сверить сопротивления и напаять на bl в параллель резистор, подогреть, так сказать, батарейку.


        1. bodyawm Автор
          13.09.2023 15:11

          Подкидывали только плюс и минус, или BSI (средний контакт) тоже?


          1. strvv
            13.09.2023 15:11

            все подкидывал. по размеру и расположению контактов — чистый bl4, работает с него, но заряжать не дает — через секунд 5 говорит что слишком холодная батарея и снимает заряд.


  1. Vaitek
    13.09.2023 15:11
    +2

    Лежит у меня потертый, но еще живой LG Optimus One. Было б время, поробовал бы запилить из него OTP генератор кодов))) в режиме полёта он когда-то долго жил.


  1. Coppermine
    13.09.2023 15:11
    +4

    Если душа лежит к небольшим аппаратам, то ещё можно посмотреть на Sony Ericsson 2011 года, а именно Xperia Mini и Xperia Mini Pro (с клавиатурой). Цена повыше, но и характеристики поинтереснее + на них с рядом оговорок неплохо заводится Android 7 (главное не ставить сервисы Google). Лет 5 назад около года проходил с Pro, но современная ОС на старом аппарате - один большой компромисс :(


    1. bodyawm Автор
      13.09.2023 15:11
      +1

      Есть и X10 Pro, и X10 Mini Pro :) Крутые девайсы


  1. NutsUnderline
    13.09.2023 15:11
    +1

    После Jelly 2 выпустили еще Jelly 2E попроще и Jelly Star - вроде помощнее


  1. varton86
    13.09.2023 15:11
    +1

    Интересно, шахматное приложение Lite lichess app на таком запустится? ???? Как раз писал его для старых девайсов, на которых нативный lichess уже не работает.


  1. Javian
    13.09.2023 15:11
    +1

    Почему-то плеер в miniVK не останавливает воспроизведение — надо ждать конца трека.


    1. bodyawm Автор
      13.09.2023 15:11
      +1

      Пасиб. Авторизация не сломалась? Мои акки отлетают в блок, похоже ВК что-то делают с "не-доверенными" приложениями. Если так и дальше пойдет, то придется вручную access_token вставлять.


      1. kulhaker478
        13.09.2023 15:11

        Или юзать апи клиента офвк


        1. bodyawm Автор
          13.09.2023 15:11
          +1

          Оно и используется. Просто у ВК есть что-то типа "доверенного" режима, когда все запросы подписываются md5 хэшем... параметров этого запрос


      1. Javian
        13.09.2023 15:11
        +1

        Авторизация прошла без двуфакторной. Чему я удивился — никаких СМС после ввода пароля :)


  1. grishkaa
    13.09.2023 15:11
    +5

    Если хочется использовать современное API анимаций на андроиде 2.х, есть библиотека NineOldAndroids.

    А приложение ВК выглядело похоже, но не совсем так. Я был его единственным разработчиком на тот момент и изрядно задолбался со всеми этими state lists для всего на свете :)

    Чуть-чуть скриншотов






    Если нужны оригинальные ресурсы, могу поискать, у меня точно это всё где-то есть.


    1. bodyawm Автор
      13.09.2023 15:11
      +1

      Во прикольно! Даже один из авторов оригинального клиента отписал! :)

      Да, поищите плз :) Будет полезно.
      Я 2 и 3 версию ВК не застал, начинал сразу с 4-ой (у которой впервые появилось свайп-меню). Весь UI с нуля переписывали, как я понимаю? :)


      1. grishkaa
        13.09.2023 15:11
        +2

        Свайп-меню появилось ещё в какой-то из 2.х, когда разделы перестали влезать в панель вкладок. Собственно в 2.х было и меню, и вкладки, а в 3.0 мы от вкладок отказались. И я наконец-то, чёрт подери, смог уговорить Павла хотя бы попробовать в holo. Ему настолько понравились, как он говорит, «дефолты́», что с тех пор ни в каких его проектах для андроида такого кастомного айфоноподобного безумия не было.

        Между 2 и 3 я много переписал. Между 3 и 4 (с holo на material) — не особо. Ну профили разве что. 4.0 был моим последним релизом, я ушёл из ВК волевым решением в начале 2016 по причине несовместимости систем ценностей с новым руководством.


    1. bodyawm Автор
      13.09.2023 15:11

      Я изначально пилил собственный табконтрол, дабы можно было сделать возможность переключения разделов свайпами и красивые анимации переходов, но анимашки сильно лагали на 2.x :(


  1. hssergey
    13.09.2023 15:11

    3-5 секунд интервал между запросами диалогов - не слишком ли часто? Батарея очень быстро закончится. Хотя бы раз в минуту сделать...

    В идеале для пушей бы что-то вэбсокетное поднять и отправлять данные с сервера только в нужный момент. Но это реализуемо только со своей серверной частью


    1. bodyawm Автор
      13.09.2023 15:11

      Для этого у ВК есть Longpoll. Но это будет жрать АКБ еще сильнее, поскольку придется ставить вейклок и постоянно слушать сокет.


  1. Xpa6p
    13.09.2023 15:11
    +1

    Я бы к обязательным приложениям отнес читалку. Нокию для масштаба сфотографировали? Надоел андроид (который грозит запретить установку приложений из сторонних источников), ios не нравится неудобством работы с файлами), ищу что-то еще, что в перспективе получит распространение. Ну и еще одно интересное направление для мобильной разработки - приложения/режимы для монохромных/цветных eink экранов на том же анроид.


  1. Weron2
    13.09.2023 15:11
    +2

    Я на старый планшет ставил киви браузер, у него как мне кажется до сих пор выходят обновления под старые системы


  1. R0bur
    13.09.2023 15:11
    +2

    Взаимодействие с современными веб-сервисами может быть осложнено из-за отсутствия поддержки TLS1.2 и устаревших сертификатов (проверка сертификатов легко обходится специальным костылем, а вот TLS — нет).

    По идее, поддержку TLS1.2 можно реализовать с помощью библиотек The Bouncy Castle Crypto API.


  1. FrozenGihon
    13.09.2023 15:11

    Ой раз уж такой пост... у меня есть возможность получить данное устройство для того чтобы использовать его как затычку в машине отца для Android auto. Какие подводные камни? Имеет ли смысл пытаться?


    1. bodyawm Автор
      13.09.2023 15:11

      Так а что конкретно хочется? Совместимость Android Autio с 4.x (Pocket Neo) была, насчет Pocket не уверен.


  1. Areso
    13.09.2023 15:11

    Sony Ericsson X Ray, 3.3", 480*854
    Sony Ericsson X Ray, 3.3", 480*854

    Очень хотел вот эту трубку, выглядила бомбически, в отличие от дешевых гнусмасов.


  1. XenRE
    13.09.2023 15:11

    А не пробовали портировать более новые версии андроида? Не последние естественно, но с более-менее адекватным API. Например BLE API завезли в андроиде 4.3, а значит девайсы с более древними версиям в принципе неспособны соединяться со множеством управляемых по BLE девайсов. Имхо для старых девайсов оптимальны версии 4.5… 5.x — уже позволит запускать множество существующих приложений.
    P.S. Еще есть Fame Lite.


    1. bodyawm Автор
      13.09.2023 15:11

      4.5 не существует, максимальная версия 4.x - 4.4 KitKat. Портировать еще не пробовал