亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Vaadin 14 中播放聲音?

如何在 Vaadin 14 中播放聲音?

楊__羊羊 2023-09-13 10:59:56
我想在我使用 .wav 開發的應用程序之一中播放聲音(.wav,作為 byte[])Vaadin 14。不幸的是我沒有找到適合這個用例的組件。Vaadin 8 提供了Audio( https://vaadin.com/api/framework/8.5.2/com/vaadin/ui/Audio.html ),但在 Vaadin 14 中不可用。我認為只需使用并導入它就有一個解決方案HTML <audio>。<body>  <audio src="test.wav" controls autoplay loop>    </audio></body>還有一個“Vaadin 14”解決方案嗎?
查看完整描述

3 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

V14 中沒有開箱即用的組件,但很容易制作一個自己的組件,如下所述:使用 Element API 創建簡單組件:)


所以我簡單地檢查了一下,這似乎有效:


AudioPlayer.java


import com.vaadin.flow.component.Component;

import com.vaadin.flow.component.Tag;


@Tag("audio")

public class AudioPlayer? extends Component {


? ? public AudioPlayer(){

? ? ? ? getElement().setAttribute("controls",true);


? ? }


? ? public? void setSource(String path){

? ? ? ? getElement().setProperty("src",path);

? ? }

}


使用:


AudioPlayer player=new AudioPlayer();

player.setSource("https://file-examples.com/wp-content/uploads/2017/11/file_example_WAV_1MG.wav");

add(player);

我本地沒有任何音樂文件,因此從互聯網上隨機獲取了一些音樂文件并作為來源傳遞。當然,這不是一個萬無一失的解決方案,只是一個概念證明:)


查看完整回答
反對 回復 2023-09-13
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

我想為那些可能使用流的人添加一個簡短的補充。


阿納斯米的 AudioPlayer.java:


public void setSource(final AbstractStreamResource resource) {

    getElement().setAttribute("src", resource);

}

要使其正常工作,您必須設置流的內容類型:


var stream = new StreamResource("foo", () -> {

                        byte[] data = getBytesFromFileMP3(soundfile);

                        return new ByteArrayInputStream(data); })

                        .setContentType("audio/mpeg"); // For MP3


查看完整回答
反對 回復 2023-09-13
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

如果你想故意播放聲音(比如點擊按鈕或類似的東西時),你可以用這種方式添加方法播放:


public void play() {

? ? getElement().callJsFunction("play");

}

希望它能幫助某人。


查看完整回答
反對 回復 2023-09-13
  • 3 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號