Разработчики мобильных приложений на платформе 1С часто сталкиваются с задачей воспроизведения звуковых сигналов для оповещений или обратной связи с пользователем. Исторически эта задача представляла определенные сложности, особенно на устройствах под управлением Android. В этой статье мы подробно разберем, как воспроизвести звук в мобильном приложении 1С, учитывая эволюцию платформы и современные подходы.
До появления платформы 1С:Предприятие версии 8.3.9, возможности для воспроизведения звуков в мобильных приложениях были крайне ограничены. Многие разработчики пытались использовать стандартные методы, такие как вызов Beep, но эти попытки, как правило, не приводили к желаемому результату на мобильных устройствах.
Другой распространенный подход, который пытались применять, заключался в использовании метода ЗапуститьПриложение. Однако этот метод не предназначался для воспроизведения коротких системных звуков или оповещений. Вместо этого он приводил к открытию сторонних приложений, например, внешних медиаплееров, что было абсолютно неприемлемо для создания простых и быстрых звуковых сигналов внутри нашего приложения.
Аналогично, попытки использовать возможности HTML5 для воспроизведения звука, которые прекрасно работают в веб-клиенте на настольных компьютерах, также оказывались безуспешными на Android-устройствах. Тесты показали, что такие подходы не функционировали даже на различных версиях Android, включая 2.3.5 и 4.2. В тот период единственным жизнеспособным решением было использование сторонних утилит или ожидание, пока сама платформа 1С предложит встроенный функционал.
Ситуация кардинально изменилась с выходом платформы 1С:Предприятие версии 8.3.9. Начиная с этой версии, был добавлен новый, долгожданный метод, который значительно упростил работу со звуком и вибрацией в мобильных приложениях.
Объект СредстваМультимедиа получил новый метод ВоспроизвестиЗвуковоеОповещение. Этот метод позволяет воспроизводить краткий звуковой и/или вибросигнал на мобильном устройстве. Мы можем выбрать либо стандартный звуковой сигнал, предоставляемый системой, либо использовать собственный звуковой файл, который мы предварительно включили в состав пакета мобильного приложения.
Пользователи, обновившиеся до версии платформы 8.3.9.64 и выше, подтвердили работоспособность данного функционала, о чем свидетельствуют многочисленные сообщения. Это стало настоящим прорывом и позволило разработчикам наконец-то внедрить полноценные звуковые оповещения в свои мобильные решения на 1С.
Для успешного воспроизведения звукового оповещения в мобильном приложении 1С с использованием метода СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение нам потребуется выполнить несколько ключевых шагов. Разберем их подробнее, чтобы наше приложение "запело".
В первую очередь, нам необходимо подготовить необходимые звуковые файлы. Рекомендуется использовать файлы в форматах MP3 или OGG. Важно понимать, что метод ВоспроизвестиЗвуковоеОповещение предназначен для воспроизведения коротких звуковых сигналов или оповещений, а не для проигрывания длительных музыкальных композиций. Поэтому мы должны выбирать или создавать звуки, подходящие для таких целей.
Для корректной работы метода нам необходимо правильно организовать структуру папок с аудиоресурсами. Для устройств под управлением 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, а не какая-либо родительская папка, содержащая их.
Следующим шагом мы должны добавить созданный ZIP-архив с нашими аудиоресурсами в нашу конфигурацию мобильного приложения. Откройте конструктор мобильного приложения в конфигураторе 1С. Найдите раздел, который может называться "Ресурсы мобильного приложения" или "Аудиоресурсы". Здесь мы указываем путь к нашему архиву AudioResources.zip. Это действие гарантирует, что наши звуковые файлы будут включены в финальный установочный пакет мобильного приложения.
Теперь приступим к написанию кода в конфигурации 1С. Метод СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение должен вызываться на стороне мобильного клиента, так как он напрямую взаимодействует с функциями устройства. Для этого мы используем специальные директивы препроцессора.
Рассмотрим пример процедуры, которая будет воспроизводить звук при вызове:
// Процедура должна выполняться на клиенте, так как мы работаем с функциями устройства
#НаКлиенте
Процедура ВоспроизвестиМойЗвук()
// Убедимся, что код выполняется именно в мобильном приложении.
// Это предотвратит ошибки при запуске на других типах клиентов.
#Если МобильноеПриложениеКлиент Тогда
// Вызываем метод воспроизведения звукового оповещения.
// "moizvuk" - это имя нашего звукового файла БЕЗ РАСШИРЕНИЯ.
// Например, если файл называется "moizvuk.mp3", мы указываем только "moizvuk".
// Истина - означает, что устройство также будет вибрировать вместе со звуком.
СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение("moizvuk", Истина);
#КонецЕсли
КонецПроцедуры
Важный момент: имя звукового файла, передаваемое в метод (например, "moizvuk"), должно быть указано без расширения. Если ваш файл называется moizvuk.mp3 или moizvuk.ogg, то в коде мы пишем только "moizvuk". Второй параметр метода, ИспользоватьВибрацию (Булево), позволяет нам решить, будет ли устройство вибрировать вместе со звуком. Передавая Истина, мы активируем вибрацию; передавая Ложь, мы ее отключаем.
Для корректной работы воспроизведения звука и вибрации критически важно убедиться, что у нашего мобильного приложения есть соответствующие разрешения. В конструкторе мобильного приложения 1С мы должны обязательно включить разрешение "Воспроизведение аудио и вибрация". Без этого разрешения система может выдавать ошибки или, что еще хуже, просто игнорировать вызовы метода без видимых предупреждений.
Для Android-устройств включение этого разрешения в конструкторе 1С соответствует добавлению строки <uses-permission android:name="android.permission.VIBRATE" /> и других необходимых для аудио разрешений в файл AndroidManifest.xml. Хотя конструктор 1С обычно делает это автоматически при активации соответствующей опции, полезно знать об этой детали для углубленной отладки или ручной настройки, если это потребуется.
Даже при соблюдении всех вышеуказанных шагов могут возникнуть трудности с воспроизведением звука. Рассмотрим наиболее распространенные проблемы и способы их устранения, чтобы мы могли оперативно решить любые возникающие сложности.
Это одна из самых частых ошибок, как упоминалось в сообщениях пользователей (например, сообщение 26). Она обычно указывает на то, что система не может найти ваш звуковой файл. Мы должны тщательно проверить следующие моменты:
ВоспроизвестиЗвуковоеОповещение (например, "moizvuk"), точно соответствует имени файла в папке (например, moizvuk.mp3), но без расширения. Любая опечатка или несоответствие приведет к ошибке.Android (и/или iOS), а не какая-либо промежуточная папка, например, assets, внутри которой уже находятся Android. Неправильная вложенность — частая причина этой ошибки.Если звук не воспроизводится, но при этом никаких ошибок не возникает, это может быть связано с разрешениями или настройками устройства. Мы должны перепроверить следующие пункты:
ВоспроизвестиЗвуковоеОповещение появился именно в этой версии.Как упоминалось в обсуждении (сообщение 28), данное решение работает начиная с версии 8.3.9. Если наше мобильное приложение собрано на более старой платформе (например, 8.3.7), метод СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение не будет доступен или не будет работать корректно. В таких случаях нам придется либо обновить платформу 1С до поддерживаемой версии, либо искать альтернативные решения, возможно, через использование внешних компонентов, если это критически необходимо для более старых версий.
В заключение, с выходом платформы 1С:Предприятие 8.3.9 воспроизведение звука в мобильных приложениях стало значительно проще и надежнее. Следуя приведенным шагам по подготовке ресурсов, написанию кода и настройке разрешений, мы сможем успешно реализовать звуковые оповещения в наших мобильных приложениях 1С.