暂停反应本机博览会音频?

2024-03-06

我运行音频没有问题,但暂停它时遇到问题。如果有人可以提供帮助那就太好了。


async function playMusic() {
  const soundObject = new Audio.Sound();
  console.log("Being hit")

  try {
    await soundObject.loadAsync({uri:'https://firebasestorage.googleapis.com/v0/b/o/myFolder%2FMello%20C%20-%20Easy.mp3?c4e-4bf8-b8ea-dcc201efff44'});
    await soundObject.playAsync();
  } catch (error) {
    alert("Error" + error.message)
  }
}

async function stopMusic() {
  console.log("Not Being hit")
 const soundObject = new Audio.Sound();

 try {
   await soundObject.loadAsync({uri:'https://firebasestorage.googleapis.com/v03?alt=media&token=e44f7b2f-8c4e-4bf8-b8ea-dcc201efff44'});
   await soundObject.stopAsync();
 } catch (error) {
   alert("Error" + error.message)
 }
}

请注意,我们永远不应该创建 Sound 实例作为状态变量。因为每当重新渲染时,它都会重新初始化声音实例。

你应该创建一个ref变量并使用它,

const sound = React.useRef(new Audio.Sound());

工作示例 https://snack.expo.io/@kartikeyvaish/playing_pausing-music

暂停/播放音乐的实现

import * as React from 'react';
import {
  Text,
  View,
  StyleSheet,
  ActivityIndicator,
  Button,
} from 'react-native';
import Constants from 'expo-constants';
import { Audio } from 'expo-av';

const SampleTrack = require('./Roses.m4a');

export default function App() {
  const [Loaded, SetLoaded] = React.useState(false);
  const [Loading, SetLoading] = React.useState(false);
  const sound = React.useRef(new Audio.Sound());

  React.useEffect(() => {
    LoadAudio();
  }, []);

  const PlayAudio = async () => {
    try {
      const result = await sound.current.getStatusAsync();
      if (result.isLoaded) {
        if (result.isPlaying === false) {
          sound.current.playAsync();
        }
      }
    } catch (error) {}
  };

  const PauseAudio = async () => {
    try {
      const result = await sound.current.getStatusAsync();
      if (result.isLoaded) {
        if (result.isPlaying === true) {
          sound.current.pauseAsync();
        }
      }
    } catch (error) {}
  };

  const LoadAudio = async () => {
    SetLoading(true);
    const checkLoading = await sound.current.getStatusAsync();
    if (checkLoading.isLoaded === false) {
      try {
        const result = await sound.current.loadAsync(SampleTrack, {}, true);
        if (result.isLoaded === false) {
          SetLoading(false);
          console.log('Error in Loading Audio');
        } else {
          SetLoading(false);
          SetLoaded(true);
        }
      } catch (error) {
        console.log(error);
        SetLoading(false);
      }
    } else {
      SetLoading(false);
    }
  };

  return (
    <View style={styles.container}>
      <View style={styles.AudioPLayer}>
        {Loading ? (
          <ActivityIndicator size={'small'} color={'red'} />
        ) : (
          <>
            {Loaded === false ? (
              <>
                <ActivityIndicator />
                <Text>Loading Song</Text>{' '}
              </>
            ) : (
              <>
                <Button title="Play Song" onPress={PlayAudio} />
                <Button title="Pause Song" onPress={PauseAudio} />
              </>
            )}
          </>
        )}
      </View>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    paddingTop: Constants.statusBarHeight,
    backgroundColor: '#ecf0f1',
    padding: 8,
  },
  AudioPLayer: {
    width: '100%',
    height: 50,
    alignItems: 'center',
  },
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

暂停反应本机博览会音频? 的相关文章

随机推荐

  • Gradle:在自定义独立插件中使用“maven-publish”插件

    在我的第三个问题之后 几乎感觉像是在发垃圾邮件 因为我的问题看起来很微不足道 但我在 Gradle 文档中找不到对我的案例有任何帮助 而且关于 stackoverflow 的其他问题也没有帮助 这次 我无法使用maven publish插件
  • 如何在 Perl 中引用长字符串?

    我通常使用简单的引号 但有时我会得到很长的行 我无法中断并且还需要使用转义字符 所以我得到如下内容 my str select query accession query tag hit accession hit tag signific
  • Tesseract 对阿拉伯语单词/字母不返回任何内容

    我已经安装了 Pytesseract 它可以完美地处理法语 英语文本以及数字 但是当我尝试阅读任何阿拉伯文本 字母时 它不会返回任何内容 这是我使用过的代码 try from PIL import Image except ImportEr
  • 考虑到可扩展性的基于组件的应用程序:OSGi 还是 Akka?

    在我的硕士论文中 我正在开发一个用于销售大型活动门票的应用程序框架 我的主要要求是可修改性 可扩展性和性能 我的客户 活动组织者 应该能够在运行时轻松替换组件并添加功能 此类组件的一个示例是座位分配组件 我的导师说看看 OSGi 松散耦合的
  • 具有多个引用的 postgresql cte 仅运行一次

    只是想知道 在 pgsql cte 中是否会创建临时表 并且每次加入查询时都不会重新执行 cte 下面是同一查询的 pgsql 和 sql server 版本 sql server 需要 6 秒 pgsql 只需要 3 秒 这是侥幸还是永远
  • 使用 D3.js 在矩形上显示文本

    I am developing Normalized stacked bar chart using d3 js and trying to append a text on rect It is getting appended when
  • 为什么启动应用程序时会看到双状态栏?

    当启动我的 iPhone 应用程序时 我同时看到 Default png 中的状态栏和操作系统的内置状态栏 而不仅仅是看到操作系统的状态栏 我做错了什么 将 Default png 的大小调整为 320x480 如果您的 Default p
  • 将 html 字符串拆分为 N 部分

    有没有人有一个使用 C 拆分 html 字符串 来自tinymce 编辑器 并将其拆分为 N 个部分的示例 我需要均匀地分割字符串而不分割单词 我正在考虑只拆分 html 并使用 HtmlAgilityPack 来尝试修复损坏的标签 虽然我
  • 将 AS3 代码放在舞台/MC 时间线上,就像 AS2 一样,而不是放在类中

    我知道 ActionScript 3 0 从一开始就被设计为一种主要面向对象的语言 使用它意味着 Flash 文档中的时间线代码更少甚至没有 我对 OOP 非常有经验 并且很乐意编写课程 然而 由于我主要使用 Flash 来制作动画 所以我
  • 从大照片生成图块 (iOs PhotoScroller)

    我正在研究WWDC 会议 104 掌握 UIScrollViews 我需要创建一个脚本或找到一个工具或编写一个脚本来从一些大的 jpg 照片生成 CATiledLayer 所需的图块 需要 1000 500 和 250 比例因子 并且生成的
  • 如何手动触发点击事件?

    我正在尝试以编程方式触发文档单击 我的测试组合显示在页面中的多个位置 我想在单击测试组合或触发文档单击时将它们全部隐藏 Component selector test comp template div stuff div and more
  • 传送 Wav 音频数据的 DirectShow 过滤器的媒体类型设置是否正确?

    我使用 Delphi 6 Pro 和 DSPACK DirectShow 组件库来创建一个 DirectShow 过滤器 该过滤器从自定义音频源提供 Wav 格式的数据 需要明确的是 我将原始 PCM 音频样本作为字节数据提供 不涉及 Wa
  • 有条件导入范围

    使用 Google Sheets 我想在同一文档中使用带条件的 IMPORTRANGE 将数据从一张工作表导入到另一张工作表 我尝试过但没有成功 IF IMPORTRANGE https URL Inc Database B2 B300 p
  • Magento 异常错误:无效方法 Mage_Catalog_Block_Product_View_Type_Simple::displayProductStockStatus()

    我尝试在我的 magento 系统上安装主题 当我尝试打开产品页面时 它向我显示错误 出于安全原因 默认情况下禁用异常打印 请帮我 错误 Invalid method Mage Catalog Block Product View Type
  • 强制 AVX 内在函数使用 SSE 指令

    不幸的是 我有一个 AMD 打桩机 cpu 它似乎对 AVX 指令有问题 使用 256 位 AVX 寄存器进行内存写入非常慢 测得的吞吐量比之前的型号 Bulldozer 慢 5 6 倍 比两次 128 位写入慢 8 9 倍 根据我自己的经
  • 如何在eclipse中生成构造函数

    我有一个类 A 和 B M 扩展 A 现在我想使用 eclipse 的代码生成选项创建 B 的构造函数 它接受 B 的所有字段的参数和设置值 我的意思是它还应该设置从 A 继承的字段 在eclipse中是否有生成此类代码的快捷方式 在编辑器
  • (int (*)[])var1 代表什么?

    我找到了这个示例代码 我尝试用谷歌搜索什么 int var1可以代表 但我没有得到有用的结果 include
  • 将直方图的条形以标签为中心对齐

    出于布局原因 我想将直方图条放置在标签的中心 这样条的中间位于标签的顶部 library ggplot2 df lt data frame x c 0 0 1 2 2 2 ggplot df aes x geom histogram bin
  • 我如何获取字节数组的前“n”个元素并将它们直接转换为字符串?

    我有一个由 1024 个元素组成的字节数组 我想将其分解为不同的字符串私有成员 例如 前 9 个字节用于名称 接下来的 12 个字节用于用户 ID 等 无需将整个字节数组转换为字符串 然后使用子字符串方法 有什么方法可以将数组中的一系列字节
  • 暂停反应本机博览会音频?

    我运行音频没有问题 但暂停它时遇到问题 如果有人可以提供帮助那就太好了 async function playMusic const soundObject new Audio Sound console log Being hit try