Продолжить музыку после произнесения текста в мобильном

1. 7OH 69 11.08.22 23:21 Сейчас в теме
Есть приложение (под андроид).
Приложение должно сказать какой-то текст

СредстваМультимедиа.ВоспроизвестиТекст(текстСообщения
						, "ru"
						, Скорость
						, Тембр 
						, Новый ОписаниеОповещения("ПослеПроизнесенияТекста", ЭтаФорма)
						, Истина
				);

&НаКлиенте
Процедура ПослеПроизнесенияТекста(допПарам) Экспорт
	#Если МобильноеПриложениеКлиент Тогда
		СредстваМультимедиа.ОстановитьВоспроизведениеТекста();
	#КонецЕсли
КонецПроцедуры

Показать


Играет плеер на заднем фоне (не 1С ))) - другая программа).
Плеер может и не играть - тогда проблемы нет - проблема только когда он играет.
При произнесении текста - плеер ставится на паузу - отлично.
Но только вот беда - после окончания произнесения - плеер продолжает молчать.
Можно было бы грешить на плеер, только вот - после закрытия приложения - плеер начинает играть дальше.
Вот каким методом (кроме ЗавершитьРаботуСистемы(Ложь) можно сказать системе, что можно играть музыку дальше ?
(p.s.: с учетом того, играл ли плеер ДО того, как мы решили сказать текст)
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ishelper 12.08.22 00:19 Сейчас в теме
(1)
каким методом (кроме ЗавершитьРаботуСистемы(Ложь) можно сказать системе, что можно играть музыку дальше ?
Может быть, попробовать запустить медиаплеер методом start(), как описано тут?
3. 7OH 69 12.08.22 00:23 Сейчас в теме
(2) ещё бы знать - был ли он запущен до того и играл ли ?
Послать playPause intent не сложно - сложно понять, а нужно ли ?
4. ishelper 12.08.22 00:27 Сейчас в теме
(3)
ещё бы знать - был ли он запущен до того и играл ли ?
Дык, запускать его принудительно из 1С - тогда вопросов не будет.

Если советы не в тему - извините: вы не обрисовываете всю задачу, а ставите перед фактом:
Играет плеер на заднем фоне (не 1С )))
5. 7OH 69 12.08.22 00:37 Сейчас в теме
(4)
Если советы не в тему - извините: вы не обрисовываете всю задачу, а ставите перед фактом:

НУ мы же взрослые люди.
Понимать должны - что плеер может и не играть - это выбор пользователя, что он будет делать вместе с приложением.
В задаче описано поведение - если закрыть программу - плеер продолжает играть.
Собственно - если его не было - нет и проблемы - вроде ж логично.
6. ishelper 12.08.22 01:21 Сейчас в теме
(5)
НУ мы же взрослые люди.
Понимать должны - что плеер может и не играть
Ага, лично я, как "взрослый человек" понял так, что работа плеера - это часть задачи, что он должен играть - типа как музычка на горячей линии между ответами робота: "Ваш номер в очереди - шестнадцатый!" :-)

Ну, а раз он вообще не имеет никакого отношения к работе 1С, то на ум приходит разве что принудительная очистка задействованного 1С обращения к медиаресурсам - то, что происходит при завершении работы приложения:
Мультимедиа = Новый СредстваМультимедиа;
Мультимедиа.ВоспроизвестиТекст(текстСообщения
                        , "ru"
                        , Скорость
                        , Тембр 
                        , Новый ОписаниеОповещения("ПослеПроизнесенияТекста", ЭтаФорма)
                        , Истина
                );

&НаКлиенте
Процедура ПослеПроизнесенияТекста(допПарам) Экспорт
    #Если МобильноеПриложениеКлиент Тогда
        СредстваМультимедиа.ОстановитьВоспроизведениеТекста();
        Мультимедиа = Неопределено;
    #КонецЕсли
КонецПроцедуры
Показать
7. 7OH 69 12.08.22 08:36 Сейчас в теме
(6) ок - возможно не корректно описал, поправлю )

Мультимедиа = Новый СредстваМультимедиа;


Конструктор не найден.

Это общий объект ((
Подозреваю - только как багу описывать на v8
8. ishelper 12.08.22 09:55 Сейчас в теме
(7)
Конструктор не найден.

Это общий объект ((
Раньше было по-другому:
Когда это был объект. А теперь – это глобальная функция.
Просто пишите, например, СредстваМультимедиа.СделатьФотоснимок(). Без Новый.

Подозреваю - только как багу описывать на v8
Угу, глядишь - опять сделают объектом. ;-)
9. ishelper 12.08.22 11:41 Сейчас в теме
(7)
только как багу описывать на v8
А вот интересно - это проявляется только для метода ВоспроизвестиТекст() или в целом для СредстваМультимедиа? Поэкспериментировать не на чем, но я бы проверил и другие методы, например, ВоспроизвестиАудио() - встанет ли плеер на паузу и возобновит ли работу после завершения аудио?

Зачем это: если ВоспроизвестиАудио() отработает корректно (музычка опять заиграет), то можно попробовать обойти баг - например, воспроизвести короткий сигнал (бип) или вообще маленькую паузу (пустой звук) после ОстановитьВоспроизведениеТекста().

Ну, а если и ВоспроизвестиАудио() поведет себя так же, как и ВоспроизвестиТекст() - тады ой, это баг платформы и только 1С может его исправить.
10. 7OH 69 12.08.22 13:18 Сейчас в теме
(9) Ещё хуже )
После ВоспроизвестиАудио выход даже не помогает, но тут плеер воспринял наш звук как другой плеер запущенный и стал вообще на паузу - тут понятна причина (хоть и не решает проблему).
ВоспроизвестиЗвуковоеОповещение тоже не помогает
11. ishelper 12.08.22 16:38 Сейчас в теме
(10)
Ещё хуже )
Ну, тогда последнее, что пришло в голову:
&НаКлиенте
Процедура ПослеПроизнесенияТекста(допПарам) Экспорт
    #Если МобильноеПриложениеКлиент Тогда
        СредстваМультимедиа.ОстановитьВоспроизведениеТекста();
        Попытка
            СредстваМультимедиа = Неопределено;
        Исключение
        КонецПопытки;
    #КонецЕсли
КонецПроцедуры
Показать

Да, фигня, но... попытка не пытка, как говорится. :-)
12. 7OH 69 12.08.22 18:00 Сейчас в теме
(11)
СредстваМультимедиа = Неопределено;

Вчера ещё пробовал - логично "Поле недоступно для записи"
Это же уже не локальный объект, а общие мы менять не имеем права.
--
Сообщу тут, как решится обращение в 1С на эту тему.
13. papami 55 12.08.22 22:25 Сейчас в теме
Судя по всему, приложение должно отправить событие, что музыка ему не мешает.
Ссылки зарубят. Гуглится вот этим Handling changes in audio output
14. 7OH 69 12.08.22 22:35 Сейчас в теме
(13) к плееру претензий нет - топ 1 - PowerAmp.
Срабатывает короткий автофокус (такой же как и при навигации).
Вот только он срабатывает и не заканчивается до закрытия программы.
Анализ черного ящика показывает, что всё таки виновник - 1С, так как при закрытии приложения автофокус хочешь\не хочешь, а заканчивается и плеер отлично отрабатывает своё дело.
15. papami 55 12.08.22 22:55 Сейчас в теме
(14) Не, я о том, что есть события в андроид, которые плеер отрабатывает. И когда 1с начинает вещать - проходит событие, что музыка мешает. А когда 1с заканчивает вещать - должно отправляться событие, что музыка не мешает. И тогда приложение, воспроизводящее музыку должно возобновить воспроизведение. Причем это укладывается в логику, что мы не заморачиваемся играло что-то до этого или нет.
Я это сам не пробовал, но из описания из указанного выше раздела документации - оно работает так.
Если бы у меня была бы такая проблема, я бы сначала в андроид студио накидал приложение и подписался на эти события, посмотрел, что происходит, когда 1С начинает и заканчивает вещать.
И если второго события нет (платформа не шлет) , думал бы как его из 1С сгенерить самостоятельно.
Вы вот это точно попробовали?
СредстваМультимедиа.ОстановитьВоспроизведениеТекста();
Или только
СредстваМультимедиа = Неопределено;?
16. 7OH 69 12.08.22 23:01 Сейчас в теме
(15) понимаю, но опять же - хочется ООП.
Дал команду - сказало текст, закончило - всё.
--
немного в сторону отойду, но доступ к файлу по пути, полученному из диалога открытия после переоткрытия программы тоже не работает. Причина плюс-минус ясна - 1С не инициализировала провайдеров доступа при попытке получить файл - но не я же буду это делать за 1С ?
Так и тут - мне не хватит сил найти какой intent послать системе, чтобы она поняла, что произношение текста закончилось.
Если кто умеет и поделится - с меня бонус, а пока ждём реакцию поддержки.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот