javascript - Xamarin WebView Audio.Play不起作用

标签 javascript c# xamarin audio webview

我正在WebView中显示一个脱机本地文件页面。
在该网页中,我有一个脚本,其中包含以下片段:

var BUTTON_CLICK_SOUND = "UklGRkgDAABXQVZFZm10IB-trimmed-for-stackoverflow";

buttonClickSound = new Audio("data:audio/wav;base64," + BUTTON_CLICK_SOUND);

buttonClickSound.play();
它引发了异常:
interface.js:525 Uncaught TypeError: buttonClickSound.play is not a function
    at HTMLDivElement.<anonymous> (interface.js:525)
    at HTMLDivElement.dispatch (jquery-3.1.1.js:5201)
    at HTMLDivElement.elemData.handle (jquery-3.1.1.js:5009)
我通过google chrome远程开发工具查看了它,而刚创建的音频对象确实缺少播放功能。
当我从远程网站运行该代码段时,它的运行情况很好。
这是我设置WebView的方法:
  global::Android.Webkit.WebView.SetWebContentsDebuggingEnabled(true);

  mainBrowser = FindViewById<WebView>(Resource.Id.mainBrowser);
  mainBrowser.SetWebViewClient(new MyWebViewClient());
  mainBrowser.Settings.JavaScriptEnabled = true;
  mainBrowser.Settings.MediaPlaybackRequiresUserGesture = false;
  mainBrowser.Settings.DomStorageEnabled = true;
  mainBrowser.Settings.AllowContentAccess = true;
如果我不得不猜测。这可能是因为它迫使MediaPlaybackRequiresUserGesture安全,但是我不知道为什么从网站加载javascript文件时这不是问题。
关于尝试从base64编码的字符串播放音频文件时,导致播放功能消失的原因有什么想法?

最佳答案

您可以预先在html中定义Audio标签,然后在audio元素上调用play()


  <audio id="audio" >
   <source src="xxx.mp3" type="audio/mpeg">
  </audio>
 document.getElementById('audio').play();

关于javascript - Xamarin WebView Audio.Play不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62554079/

相关文章:

javascript - 当我使用forEach方法时,浏览器说没有这个函数;会是什么呢?

c# - 这是 async void 的正确用法吗? Xamarin

Xamarin iOS Crashlytics DSYM 文件

c# - 测试 'null' 与测试 'default(T)'

c# - 如何编写扩展方法来返回正在使用的类型?

c# - 我可以使用 RandomNumberGenerator.GetInt32() 方法生成密码安全的随机字符串吗?

Android:我的应用程序中所有微调器的全局样式

Javascript pdfKit "Error: write after end"由于关闭流...?

javascript - 为什么我们在 2021 年需要 webpack

javascript - 数据列表如何获取选定的名称而不是值