Некоторое время назад я писал о смешном методе-проверке «А не козёл ли ты, пользователь?». Сегодня обнаружил ещё один забавный метод для новенькой Android 8.0.

Чисто случайно перечитывал документацию по компоненту Chronometer. Обнаружил, что в API 24 появились новые методы, позволяющие хронометру работать в режиме обратного отсчёта. Стал проверять, написал простенький пример. Всё работает. Код тривиальный, приводить здесь не буду.

И тут глаз зацепился за ещё один новый метод, который добавили в API 26 — isFinalCountDown(). Описание метода было весьма скудным — whether this is the final countdown. Я почему-то подумал, что с его помощью можно определить момент, когда счётчик в хронометре станет равен 00:00. Хотя вроде можно и самостоятельно устроить такую проверку. Странно. Решил вызвать метод по щелчку кнопки. Запускал на эмуляторе.

public void onClick(View view) {
        mChronometer.isTheFinalCountDown();
    }

Эффект был неожиданным. Вдруг запускается приложение Youtube и в ней начинает проигрываться песня группы Европа «Последний отсчёт». Я сначала подумал, что это какой-то глюк и я куда-то не туда нажал. Но удивило совпадение названия песни с методом. Запустил ещё раз — опять запускается видеоролик. Стало интересно. Стал искать исходники Android 8.0 и нашёл это место.

    /**
     * @return whether this is the final countdown
     */
    public boolean isTheFinalCountDown() {
        try {
            getContext().startActivity(
                    new Intent(Intent.ACTION_VIEW, Uri.parse("https://youtu.be/9jK-NcRmVcw"))
                            .addCategory(Intent.CATEGORY_BROWSABLE)
                            .addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT
                                    | Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT));
            return true;
        } catch (Exception e) {
            return false;
        }
    }

В методе зашит адрес ролика на Ютубе, который запускается с помощью механизма Intent.

Скриншот запущенного ролика:

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


  1. johnfound
    06.09.2017 23:27
    +13

    Вот так и пишется bloatwarе.


  1. alan008
    07.09.2017 08:00
    +1

    У разработчиков Андроид тоже есть чувство юмора


    1. iig
      07.09.2017 12:17
      +1

      Да, когда функция делает не то, что должна делать согласно документации, это смешно. Не так смешно, как
      #define true random()
      , но забавно.


      1. Static_electro
        07.09.2017 16:27
        +2

        только
        #define false random()


  1. HardDie
    07.09.2017 08:57
    +1

    Может это и забавно, но что на счёт оптимизации? Печально что все на нее забивают


    1. x67
      07.09.2017 17:01

      Причем тут оптимизация? У вас прошивка телефона с fdd дискеты считывается? Те 400 (условно) байт, который занимает данный метод в сегодняшних реалиях никому не повредят. А вызывать его или нет, решать вам) Неправильный выбор метода сортировки гораздо хуже сказывается на оптимизации, чем наличие такой пасхалочки


      1. HardDie
        07.09.2017 17:39

        Тут 400, там 400 и в итоге половина кода ради прикола написана. Считаю что прошивка для Андроида, не то место где нужно забивать пасхалками. Хотя не только Андроид, помню то-ли статью на хабре, то-ли в комментах кто-то писал, о том сколько игрушка про динозавра отьедает в Google Chrome. И возможно это плохо что разработчики сейчас ни чем не огранничены, нету стимула сделать все как можно компактнее и производительнее.


        1. Steely
          07.09.2017 19:38
          +1

          Ну вы и зануда


  1. Miller777
    07.09.2017 09:00

    Пасхалка?


  1. MrMuradin
    07.09.2017 09:00
    +2

    кто сказал что мы не должны смотреть youtube во время написания кода? :)


    1. sirjant
      07.09.2017 10:26
      +12

      Мой начальник :(((


      1. Borz
        07.09.2017 10:31
        +7

        держите рецепт: среда разработки с небольшой прозрачностью окна на уровне ОС (Linux), а позади браузер с роликом — видно только вам, а со стороны видна среда разработки. Прозрачность регулируется колесом на заголовке окна — это действия настраивал вручную


        Как это сделать в Mac или Windows не знаю.


        ЗЫ (для моего начальника): смотрел в фоне в основном доклады с конференций :)


        1. StanZakharov
          07.09.2017 12:04
          +4

          да ты инженер :-)


        1. Bender_Render
          07.09.2017 16:09
          +7

          Знакомы чувак в view-source: баш читает)


        1. x67
          07.09.2017 17:05
          +2

          Просто с монитора срезать поляризационную пленку и смотреть через специальные очки)) А на вопросы про белый экран смело отвечайте, что это ваша любимая цветовая тема в IDE, а они просто оттенков не различают)


        1. sumanai
          07.09.2017 19:10

          Как это сделать в Mac или Windows не знаю.

          Не знаю, как в современных ОС, но в XP это можно сделать при помощи DM2 (111кб), там можно настроить сочетания на прозрачность окон и флаг «Поверх всех окон». К сожалению, через меню на х64 не работает. Этот комментарий написан сквозь текстовый редактор на 90% прозрачности ))


          1. sumanai
            07.09.2017 19:37

            На десятке горячие клавиши так же работают, лол.


  1. helpik94
    07.09.2017 11:03
    -1

    Приятно видеть такие пасхалки от разработчиков)


  1. basnopisets
    07.09.2017 11:43
    +13

    вот если бы вместо Final Countdown они вставили ссылку на Рика Эстли, было бы веселее


    1. x67
      07.09.2017 17:07
      +1

      Эта ссылка будет в методе GetURL()


    1. ilvar
      09.09.2017 02:59
      +1

      doGiveMeUp()?


  1. Menos
    07.09.2017 13:40
    +1

    Вчера заметил в документации класса UserManager поле DISALLOW_FUN:

    Specifies if the user is not allowed to have fun. In some cases, the device owner may wish to prevent the user from experiencing amusement or joy while using the device.

    Тоже своеобразная пасхалка :)


    1. dmitry_ch
      07.09.2017 14:37
      +2

      И девайс переходит в режим «Медленно и печально»? Так это настраивается?


      1. Menos
        07.09.2017 14:39

        Подозреваю, что эта настройка ничего не изменяет в системе.


      1. fukkit
        07.09.2017 20:30
        +1

        Принудительно устанавливается после выхода следующей версии OS.


    1. halyavin
      07.09.2017 15:03

      Судя по коду, эта настройка убирает пасхалку.


  1. modestguy
    07.09.2017 16:41
    -1

    с чувством юмора )


  1. maximosipov
    07.09.2017 17:23

    забавно) шуточки от разработчиков


  1. fukkit
    07.09.2017 20:43

    В нужный момент Скайнет добавит в ролик свежий зиродей.


  1. Error1024
    07.09.2017 20:53
    +1

    А потом мы удивляемся почему андроид такой тормозной.


    1. Apx
      08.09.2017 23:44

      Ну если открыть браузер по конкретной ссылке вызывает на устройстве тормоза, то надо задуматься о смене девайса.


      Люди пишут для людей в конце концов.


      1. Error1024
        08.09.2017 23:46

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


        1. Apx
          08.09.2017 23:50

          Коммент ниже. Ссылка из писем видимо некорректно даёт ответить на комментарий


  1. Apx
    08.09.2017 23:49

    Ну на месте автора если бы комментарий к методу был "открываем в браузере ютуб с ссылкой на final countdown" я бы, например, все равно ушёл бы в сорцы с вопросом "WTF!!!"


  1. Kicker
    09.09.2017 21:22

    Интересно, 368 миллионов просмотров, чисто совпадение?)