r - 使用shinyjs延迟将rednderUI /播放音频延迟计算的毫秒数
问题描述
我正在尝试使用包中的以下delay
代码shinyjs
。我期望的是在运行应用程序的预定义时间(本例中为 5 秒)后显示模态并播放音频。我只能看到模态但没有播放音频。关于什么可能是错的任何指导?
谢谢你
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
h2(textOutput("currentTime")),
br(),
br(),
h2(textOutput("target1")),
h2(textOutput("till1")),
uiOutput('my_audio1')
)
server <- function(input, output, session) {
output$currentTime <- renderText({
invalidateLater(1000, session)
paste("The current time is", format(Sys.time(), "%H:%M"))
})
t1 <- isolate({
Sys.time() + 5
})
output$target1 <- renderText({
paste("Target", t1)
})
output$till1 <- renderText({
invalidateLater(1000, session)
paste("Seconds till target:", round (t1-Sys.time()))
})
sys1 = isolate({
Sys.time()
})
observe({
print(sys1)
print(t1)
print(t1-sys1)
print(as.numeric(t1-sys1, units = "secs")*1000)
})
observe ({
delay (as.numeric(t1-sys1, units = "secs")*1000,
showModal(modalDialog(
title = "",
"Audio should play now"))
)
})
observe({
delay (as.numeric(t1-sys1, units = "secs")*1000,
output$my_audio1 <-renderUI({
tags$audio(src = "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-3.mp3",
type = "audio/mp3", autoplay = NA, controls = NA, style="display:none;")
})
)
})
}
# Create Shiny app ----
shinyApp(ui, server)
更新: 现在,音频文件会从笔记本电脑浏览器自动播放,但不会从手机 safari 浏览器自动播放。看起来这是几乎所有移动浏览器的问题(他们禁用了音频自动播放)。我试图在下面更新的代码中实现这个技巧,但它仍然无法正常工作R闪亮不自动播放音频
关于从那里去哪里有什么建议吗?
我读到了一个新包shinyMobile
,它可以为闪亮的应用程序添加渐进式 Web 应用程序功能。您是否认为这可以解决问题以及所有延迟/预定的音频在移动设备上自动播放?
谢谢你
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
h2(textOutput("currentTime")),
tags$audio(src = "https://olafwempe.com/mp3/silence/silence.mp3",type = "audio/mp3", autoplay = TRUE),
br(),
br(),
h2(textOutput("target1")),
h2(textOutput("till1")),
actionButton("play", "Start"),
uiOutput('my_audio1')
)
server <- function(input, output, session) {
output$currentTime <- renderText({
invalidateLater(1000, session)
paste("The current time is", format(Sys.time(), "%H:%M"))
})
t1 <- isolate({
Sys.time() + 5
})
output$target1 <- renderText({
paste("Target", t1)
})
output$till1 <- renderText({
invalidateLater(1000, session)
paste("Seconds till target:", round (t1-Sys.time()))
})
sys1 = isolate({
Sys.time()
})
observeEvent(input$play, {
print(sys1)
print(t1)
print(t1-sys1)
print(as.numeric(t1-sys1, units = "secs")*1000)
})
observeEvent (input$play, {
delay (as.numeric(t1-sys1, units = "secs")*1000,
showModal(modalDialog(
title = "",
"Audio should play now"))
)
})
observeEvent(input$play, {
delay (as.numeric(t1-sys1, units = "secs")*1000,
output$my_audio1 <-renderUI({
tags$audio(src = "http://soundbible.com/grab.php?id=2213&type=mp3",
type = "audio/mp3", autoplay = TRUE)
})
)
})
observeEvent(input$play, {
delay ((as.numeric(t1-sys1, units = "secs")+20) *1000,
output$my_audio1 <-renderUI({
tags$audio(src = "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-2.mp3",
type = "audio/mp3", autoplay = TRUE)
})
)
})
}
# Create Shiny app ----
shinyApp(ui, server)
解决方案
推荐阅读
- android - 为什么 queryPurchaseHistoryAsync 不适用于促销代码?
- postgresql - 如何在postgres中获得两个向量之间的余弦距离?
- mule - 使用 Dataweave 将多维数组转换为单维数组
- heap-memory - 如何在节点红色中正确记录长时间运行的函数的信号?获取堆内存已满错误并且文件保持为空
- python - 迭代 foo.py 模块的内置属性。出错了
- python - 如何优化楼梯问题的python代码以处理更大的值?
- python - Pandas pd.to_datetime 只记时间不记日期
- php - 列 div 在上面最大高度的列 div 下方移动
- php - 如何从数据库中的这个序列化数组 PHP 中获取价格数据
- java - TSV 文件转换为 RDF