Если мы используем JDK 1.0, мы можем вызывать устаревший метод stop (), чтобы остановить его. Использование stop () невероятно опасно, так как оно убьет ваш поток, даже если он находится в середине чего-то важного. Невозможно защитить себя, поэтому, если вы заметили код, который использует stop (), вы должны хмуриться.
Как мы закрываем поток чисто?
В Java, начиная с потоки просты, но закрытие их требует большого внимания и усилий.
Вот как он разработан на Java. В каждом потоке java есть флаг, обозначающий флаг состояния прерывания, который мы можем установить извне, то есть родительского или основного потока. И поток может иногда проверять его и останавливать его выполнение. Добровольно..!! Вот как:
Thread loop = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
if (Thread.interrupted()) {
break;
}
// Continue to do nothing
}
}}); loop.start(); loop.interrupt();
Ответ на мою проблему был прост: просто прочитайте руководство. :-) Хотя оба .OGG, а также .MP3 поддерживаются, сайт должен обеспечивать HTTPS. Веб-сайты, которые не защищены (например, HTTP), не поддерживаются. Ниже вы можете найти пример функции для тестирования:
app.intent('favoriete muziek', conv => {
const Optie = conv.parameters.optie;
//Taalspecifieke meldingen
const SoundLib =
{
'1': {
description : 'Simple sound using .ogg',
audiosound : 'https://actions.google.com/sounds/v1/alarms/alarm_clock.ogg',
audiotext : 'You should hear an audio alarm signal',
},
'2': {
description : 'Music MP3 via HTTP',
audiosound : 'http://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3',
audiotext : 'You should hear a Jazz record called "Jazz in Paris" ',
},
'3': {
description : 'Longer MP3 file via HTTP',
audiosound : 'http://www.navyband.navy.mil/anthems/anthems/netherlands.mp3',
audiotext : 'You should hear now the Dutch National Anthem',
},
'4': {
description : 'short MP3 audio via HTTPS',
audiosound : 'https://ia802508.us.archive.org/5/items/testmp3testfile/mpthreetest.mp3',
audiotext : 'You should hear a short spoken intro text',
},
};
const Sound = SoundLib[Optie];
var spraakzin = "<speak>This text is using <say-as interpret-as='verbatim'>SSML</say-as> followed by an audio file in a SimpleResponse box: <audio src='" + Sound.audiosound + "'>The audio file could not be processed</audio></speak>";
if (!conv.surface.capabilities.has("actions.capability.MEDIA_RESPONSE_AUDIO")) {
conv.ask("Media response via audio is not supported on this device.");
return;
}
conv.ask(new SimpleResponse({
speech: spraakzin,
text: Sound.audiotext,
}));
});
Дополнительную информацию можно найти здесь: Примеры SSML - посмотрите на предпосылки AUDIO
В дополнение к тому, что уже сказал Заключенный, есть и другие проблемы.
app.intent('favoriete kleur', (conv, {color}) => {
const luckyNumber = color.length;
const audioSound = 'https://actions.google.com/sounds/v1/cartoon/clang_and_wobble.mp3'; // AoG currently only supports MP3!
if (conv.user.storage.userName) {
conv.ask(`<speak>${conv.user.storage.userName}, je geluksnummer is <audio src="${audioSound}"><desc>${luckyNumber}</desc></audio></speak>`); // Audio should have description
conv.ask(new Suggestions('Paars', 'Geel', 'Oranje'));
} else {
conv.ask(`<speak>Je geluksnummer is <audio src="${audioSound}"><desc>${luckyNumber}</desc></audio></speak>`);
conv.ask(new Suggestions('Paars', 'Geel', 'Oranje'));
}
});
Надеюсь, что помог.
Наиболее вероятная проблема заключается в том, что вы не включаете закрывающий тег </speak>
. Так что вы, вероятно, должны написать что-то вроде
conv.ask(`<speak>Je geluksnummer is ${luckyNumber}.` +
`<audio src="${audioSound}"></audio></speak>`);