Как воспроизвести звук в мобильном приложении 1С на Android?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Разработчики мобильных приложений на платформе 1С часто сталкиваются с задачей воспроизведения звуковых сигналов для оповещений или обратной связи с пользователем. Исторически эта задача представляла определенные сложности, особенно на устройствах под управлением Android. В этой статье мы подробно разберем, как воспроизвести звук в мобильном приложении 1С, учитывая эволюцию платформы и современные подходы.

Исторический контекст и эволюция проблемы

До появления платформы 1С:Предприятие версии 8.3.9, возможности для воспроизведения звуков в мобильных приложениях были крайне ограничены. Многие разработчики пытались использовать стандартные методы, такие как вызов Beep, но эти попытки, как правило, не приводили к желаемому результату на мобильных устройствах.

Другой распространенный подход, который пытались применять, заключался в использовании метода ЗапуститьПриложение. Однако этот метод не предназначался для воспроизведения коротких системных звуков или оповещений. Вместо этого он приводил к открытию сторонних приложений, например, внешних медиаплееров, что было абсолютно неприемлемо для создания простых и быстрых звуковых сигналов внутри нашего приложения.

Аналогично, попытки использовать возможности HTML5 для воспроизведения звука, которые прекрасно работают в веб-клиенте на настольных компьютерах, также оказывались безуспешными на Android-устройствах. Тесты показали, что такие подходы не функционировали даже на различных версиях Android, включая 2.3.5 и 4.2. В тот период единственным жизнеспособным решением было использование сторонних утилит или ожидание, пока сама платформа 1С предложит встроенный функционал.

Решение проблемы: 1С:Предприятие 8.3.9 и метод СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение

Ситуация кардинально изменилась с выходом платформы 1С:Предприятие версии 8.3.9. Начиная с этой версии, был добавлен новый, долгожданный метод, который значительно упростил работу со звуком и вибрацией в мобильных приложениях.

Объект СредстваМультимедиа получил новый метод ВоспроизвестиЗвуковоеОповещение. Этот метод позволяет воспроизводить краткий звуковой и/или вибросигнал на мобильном устройстве. Мы можем выбрать либо стандартный звуковой сигнал, предоставляемый системой, либо использовать собственный звуковой файл, который мы предварительно включили в состав пакета мобильного приложения.

Пользователи, обновившиеся до версии платформы 8.3.9.64 и выше, подтвердили работоспособность данного функционала, о чем свидетельствуют многочисленные сообщения. Это стало настоящим прорывом и позволило разработчикам наконец-то внедрить полноценные звуковые оповещения в свои мобильные решения на 1С.

Пошаговая инструкция по воспроизведению собственного звука

Для успешного воспроизведения звукового оповещения в мобильном приложении 1С с использованием метода СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение нам потребуется выполнить несколько ключевых шагов. Разберем их подробнее, чтобы наше приложение "запело".

  1. Подготовка звуковых файлов

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

  2. Организация структуры ресурсов

    Для корректной работы метода нам необходимо правильно организовать структуру папок с аудиоресурсами. Для устройств под управлением Android следует создать папку с именем Android. Внутри этой папки мы помещаем все наши звуковые файлы. Например, если у нас есть файл moizvuk.mp3, он должен находиться по пути Android/moizvuk.mp3.

    Критически важно: не создавайте вложенную папку "assets" внутри "Android" или как родительскую для "Android". Например, структура assets/Android/moizvuk.mp3 или Android/assets/moizvuk.mp3 будет неверной. Просто поместите звуки непосредственно в папку Android. Аналогично, для устройств под iOS используется папка iOS, куда помещаются соответствующие звуки для этой платформы.

    После того как все звуковые файлы размещены в соответствующих папках (например, Android/moizvuk.mp3), мы архивируем эти папки в единый ZIP-архив. Назовем его, например, AudioResources.zip. Обратите внимание: корневыми элементами этого ZIP-архива должны быть непосредственно папки Android и iOS, а не какая-либо родительская папка, содержащая их.

  3. Добавление аудиоресурсов в конструктор мобильного приложения

    Следующим шагом мы должны добавить созданный ZIP-архив с нашими аудиоресурсами в нашу конфигурацию мобильного приложения. Откройте конструктор мобильного приложения в конфигураторе 1С. Найдите раздел, который может называться "Ресурсы мобильного приложения" или "Аудиоресурсы". Здесь мы указываем путь к нашему архиву AudioResources.zip. Это действие гарантирует, что наши звуковые файлы будут включены в финальный установочный пакет мобильного приложения.

  4. Написание кода для воспроизведения звука

    Теперь приступим к написанию кода в конфигурации 1С. Метод СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение должен вызываться на стороне мобильного клиента, так как он напрямую взаимодействует с функциями устройства. Для этого мы используем специальные директивы препроцессора.

    Рассмотрим пример процедуры, которая будет воспроизводить звук при вызове:

    
    // Процедура должна выполняться на клиенте, так как мы работаем с функциями устройства
    #НаКлиенте
    Процедура ВоспроизвестиМойЗвук()
    
        // Убедимся, что код выполняется именно в мобильном приложении.
        // Это предотвратит ошибки при запуске на других типах клиентов.
        #Если МобильноеПриложениеКлиент Тогда
            // Вызываем метод воспроизведения звукового оповещения.
            // "moizvuk" - это имя нашего звукового файла БЕЗ РАСШИРЕНИЯ.
            // Например, если файл называется "moizvuk.mp3", мы указываем только "moizvuk".
            // Истина - означает, что устройство также будет вибрировать вместе со звуком.
            СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение("moizvuk", Истина);
        #КонецЕсли
    
    КонецПроцедуры
    

    Важный момент: имя звукового файла, передаваемое в метод (например, "moizvuk"), должно быть указано без расширения. Если ваш файл называется moizvuk.mp3 или moizvuk.ogg, то в коде мы пишем только "moizvuk". Второй параметр метода, ИспользоватьВибрацию (Булево), позволяет нам решить, будет ли устройство вибрировать вместе со звуком. Передавая Истина, мы активируем вибрацию; передавая Ложь, мы ее отключаем.

  5. Настройка разрешений мобильного приложения

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

    Для Android-устройств включение этого разрешения в конструкторе 1С соответствует добавлению строки <uses-permission android:name="android.permission.VIBRATE" /> и других необходимых для аудио разрешений в файл AndroidManifest.xml. Хотя конструктор 1С обычно делает это автоматически при активации соответствующей опции, полезно знать об этой детали для углубленной отладки или ручной настройки, если это потребуется.

Частые проблемы и отладка

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

  1. Ошибка "Не найден звуковой файл с указанным именем."

    Это одна из самых частых ошибок, как упоминалось в сообщениях пользователей (например, сообщение 26). Она обычно указывает на то, что система не может найти ваш звуковой файл. Мы должны тщательно проверить следующие моменты:

    • Имя файла: Убедитесь, что имя файла, переданное в метод ВоспроизвестиЗвуковоеОповещение (например, "moizvuk"), точно соответствует имени файла в папке (например, moizvuk.mp3), но без расширения. Любая опечатка или несоответствие приведет к ошибке.
    • Структура ZIP-архива: Проверьте, что в корне вашего ZIP-архива находятся непосредственно папки Android (и/или iOS), а не какая-либо промежуточная папка, например, assets, внутри которой уже находятся Android. Неправильная вложенность — частая причина этой ошибки.
    • Добавление в конструктор: Убедитесь, что ZIP-архив корректно добавлен в раздел "Аудиоресурсы" конструктора мобильного приложения и что он не поврежден.
  2. Отсутствие звука (без явной ошибки)

    Если звук не воспроизводится, но при этом никаких ошибок не возникает, это может быть связано с разрешениями или настройками устройства. Мы должны перепроверить следующие пункты:

    • Разрешения приложения: Убедитесь, что разрешение "Воспроизведение аудио и вибрация" в настройках мобильного приложения активно. Без него система не сможет использовать аудиоресурсы.
    • Настройки устройства: Проверьте, что мобильное устройство не находится в беззвучном режиме, режиме "Не беспокоить" или что громкость медиа не установлена на минимум.
    • Версия платформы: Удостоверьтесь, что ваше приложение собрано на платформе 1С версии 8.3.9 или выше, так как функционал ВоспроизвестиЗвуковоеОповещение появился именно в этой версии.
  3. Несовместимость версий платформы

    Как упоминалось в обсуждении (сообщение 28), данное решение работает начиная с версии 8.3.9. Если наше мобильное приложение собрано на более старой платформе (например, 8.3.7), метод СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение не будет доступен или не будет работать корректно. В таких случаях нам придется либо обновить платформу 1С до поддерживаемой версии, либо искать альтернативные решения, возможно, через использование внешних компонентов, если это критически необходимо для более старых версий.

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

← На главную