Mediaplayer 播放几次后停止播放

2024-05-13

我有一个按钮,按下它会播放一个随机声音剪辑,然后播放另一个声音剪辑,然后通过一个媒体播放器播放另一个声音剪辑,但是多次按下该按钮(15-20 次)后,所有音频都会停止。我在播放最后一个音频剪辑后释放媒体播放器,所以我不认为这是原因。有什么指点吗?

public class Main extends Activity {


MediaPlayer mp;
Button generate;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    generate = (Button) findViewById(R.id.sound);

}

public void youSir (View view)
{
    generate.setVisibility(View.INVISIBLE);
    Random randomGenerator = new Random();
    int randomInt = randomGenerator.nextInt(3) + 1;
    switch (randomInt){
    case 1: mp = MediaPlayer.create(this, R.raw.beg); mp.start();
    break;
    case 2: mp = MediaPlayer.create(this, R.raw.begone); mp.start();
    break;
    case 3: mp = MediaPlayer.create(this, R.raw.begtwo); mp.start();
    break;
    }
    mp.setOnCompletionListener(new OnCompletionListener(){
        // @Override
        public void onCompletion(MediaPlayer arg0) {

            audioTwo();
         }
    });

}


protected void audioTwo() {
    // TODO Auto-generated method stub
    Random randomGenerator = new Random();
    int randomInt = randomGenerator.nextInt(3) + 1;
    switch (randomInt){
    case 1: mp = MediaPlayer.create(this, R.raw.start); mp.start();
    break;
    case 2: mp = MediaPlayer.create(this, R.raw.end); mp.start();
    break;
    case 3: mp = MediaPlayer.create(this, R.raw.mid); mp.start();
    break;
    }
    mp.setOnCompletionListener(new OnCompletionListener(){
        // @Override
        public void onCompletion(MediaPlayer arg0) {
            audioThree();
         }
    });
}

protected void audioThree() {
    // TODO Auto-generated method stub
    Random randomGenerator = new Random();
    int randomInt = randomGenerator.nextInt(3) + 1;
    switch (randomInt){
    case 1: mp = MediaPlayer.create(this, R.raw.three); mp.start();
    break;
    case 2: mp = MediaPlayer.create(this, R.raw.two); mp.start();
    break;
    case 3: mp = MediaPlayer.create(this, R.raw.one); mp.start();
    break;
    mp.setOnCompletionListener(new OnCompletionListener(){
        // @Override
        public void onCompletion(MediaPlayer arg0) {
            mp.stop();
            mp.release();
            generate.setVisibility(View.VISIBLE);
         }
    });
}

这是一个有点老的问题,但我尝试回答它,以防其他人遇到类似的问题。

您的音频资源即将耗尽。代码实际上并没有全部释放MediaPlayer实例。每次运行仅释放三分之一。audioTwo() and audioThree分配新的MediaPlayer实例到mp变量,但它们不会释放已经存储在其中的实例。做类似的事情:

protected void audioTwo() {
    // RELEASING PREVIOUS MEDIAPLAYER
    mp.release();

    Random randomGenerator = new Random();
    int randomInt = randomGenerator.nextInt(3) + 1;
    switch (randomInt){
    case 1: mp = MediaPlayer.create(this, R.raw.start); mp.start();
    break;
    ...

同样适用于audioThree().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mediaplayer 播放几次后停止播放 的相关文章

  • 如何通过注解用try-catch包装方法?

    如果应该在方法调用中忽略异常 则可以编写以下内容 public void addEntryIfPresent String key Dto dto try Map
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • Android 中的 OpenGL 缩小

    我正在使用 3D 对象并渲染它并通过扩展 GLSurfaceView 实现渲染器来显示它 问题是如何通过捏合和捏合进行缩小 下面是我的班级 package com example objLoader import java nio Byte
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • Java、Spring:使用 Mockito 测试 DAO 的 DataAccessException

    我正在尝试增加测试覆盖率 所以我想知道 您将如何测试 DAO 中抛出的 DataAccessExceptions 例如在一个简单的 findAll 方法中 该方法仅返回数据源中的所有数据 就我而言 我使用 Spring JdbcTempla
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • 如何从日期中删除毫秒、秒、分钟和小时[重复]

    这个问题在这里已经有答案了 我遇到了一个问题 我想比较两个日期 然而 我只想比较年 月 日 这就是我能想到的 private Date trim Date date Calendar calendar Calendar getInstanc
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • Play.application() 的替代方案是什么

    我是 Play 框架的新手 我想读取conf文件夹中的一个文件 所以我用了Play application classloader getResources Data json nextElement getFile 但我知道 play P
  • Karaf / Maven - 无法解决:缺少需求 osgi.wiring.package

    我无法在 Karaf 版本 3 0 1 中启动捆绑包 该包是使用 Maven 构建的并导入gson http mvnrepository com artifact com google code gson gson 2 3 1 我按照要求将
  • Android SearchView 在启动时隐藏键盘

    我有一个小问题正在尝试解决 当我打开应用程序时 键盘会显示输入搜索视图的查询 不过 我只想在单击搜索视图时显示键盘 我该如何解决 Thanks 这对我有用 用于隐藏焦点的代码 searchView SearchView view findV
  • 开始使用 Mylyn 的最佳方式是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我听说过很多关于在 Eclipse 中使用 Mylyn 的好消息 我该如何设置它才能让我体验一下如何使用它 The 开创性的 Deve
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • Android MulticastSocket.joinGroup 不会触发发送 IGMP 消息

    Code MulticastSocket s new MulticastSocket InetAddress addr InetAddress getByName 230 230 230 1 s joinGroup addr 在 Ubunt
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • 基于 Spring Boot 的测试中的上下文层次结构

    我的 Spring Boot 应用程序是这样启动的 new SpringApplicationBuilder sources ParentCtxConfig class child ChildFirstCtxConfig class sib

随机推荐

  • iPhone OpenGL ES 单视图还是多视图?

    我很困惑为 iPhone 编写游戏时最好的方法是什么 游戏将使用 OpenGL 渲染 但我很好奇创建开始屏幕 菜单 高分页面等 您是否使用 OpenGL 完成所有这些操作 或者创建额外的 UIView 并使用 UIKit 我认为没有最好的方
  • Firebase 模拟器无法促进/运行新功能

    我有三个云功能 其中两个已部署到我的 firebase 项目中 其中一个是我刚刚添加的 我希望在部署之前在本地测试新的功能 但是当我尝试使用它时却无法使用 并且只有两个已部署的功能可用 Firebase 模拟器在端口上运行良好5001 像往
  • 从 wit.ai 上的备份导入应用程序时出错

    自本周末以来 当我尝试通过从另一个应用程序保存的备份导入来在 Wit ai 中创建新应用程序时 我收到一条空白错误消息 并且新应用程序仅接收备份中的部分信息 这是空白的错误消息 https i stack imgur com hlDa5 p
  • Java中如何对对象数组进行排序?

    我的数组不包含任何字符串 但它包含对象引用 每个对象引用都通过 toString 方法返回名称 id 作者和发布者 public String toString return name n id n author n publisher n
  • 自定义 WCF DataContractSerializer

    是否可以用我自己的序列化程序替换 Windows Communication Foundation 中的 dataContractSerializer 如果可能的话 我怎样才能实现这一目标 是的 您可以提供自己的序列化器实现 默认情况下 W
  • 属性上的 ConditionalAttribute 有什么作用?

    我知道什么ConditionalAttribute does 文档说它也可以应用于一个类 如果它派生自Attribute Conditional DEBUG public class FooAttribute Attribute 但该自定义
  • 如何在 Clojure 中链接 Promise

    在 Scala 中 您可以使用map and flatMap在未来的成功结果上运行函数 val x Future Int val y Future String x map toString 有没有比以下更好的 Clojure 类似物 de
  • 在 pandas 数据框中按列应用 Seaborn 热图

    我试图在枢轴熊猫数据帧上使用seaborn的热图 就像在超链接中一样有效 df pd DataFrame np random randint 1 100 size 3 2 df columns A B df sns heatmap df a
  • Spring REST 控制器中带有 RequestBody 的 XML/JSON POST

    我正在使用 Spring 3 0 创建一个 RESTful 网站 我在用ContentNegotiatingViewResolver以及 HTTP 消息转换器 例如MappingJacksonHttpMessageConverter对于 J
  • JavaScript 中的可选参数

    如果缺少剩余参数 为什么该函数不会抛出错误 showStatistics Mark Teixeira New York Yankees 1st Base 这是定义的函数 function showStatistics name team p
  • Google 操作面板中缺少配置撤销令牌 URL 的选项

    在 Google Actions 面板中 我们可以启用帐户链接 我们还可以指定授权 URL 支持 OAuth2 代码或隐式流的登录网页的端点 和令牌 URL 用于令牌交换的 OAuth2 端点 端点配置镜像 https i stack im
  • 修饰符 async 对此项目无效

    这似乎并不是数百个具有相同错误的其他问题的重复 我把它们都看过了 发现它们是无关的 我正在制作一个小笔记应用程序 并尝试从目录中读取文件 按照 MSDN 示例 我有以下代码 但它给了我一个错误 错误 1 修饰符 async 对此无效 项目
  • 苹果游戏中心 API

    我无法找到包含 Game Center Reference 的 GameKit api Apple Game Center 是 iOS 上的一个新社交网络平台 其描述如下 iOS4 中的新增功能 1 GameKit iOS 参考在这里 ht
  • 如何使用 CSS 或 javascript 创建圆角

    复制 使用 CSS 创建圆角的最佳方法是什么 https stackoverflow com questions 7089 what is the best way to create rounded corners using css 7
  • 如何为 apscheduler 指定“记录器”

    我正在尝试学习如何使用 Python 的 apscheduler 包 但它会定期抛出以下错误 No handlers could be found for logger apscheduler scheduler 该消息似乎与计划作业中的错
  • Codeigniter 分页:运行查询两次?

    我正在使用 codeigniter 和分页类 这是一个非常基本的问题 但我需要确保我没有遗漏任何东西 为了获得对从 MySQL 数据库获取结果进行分页所需的配置项 基本上需要运行查询两次 对吗 换句话说 您必须运行查询来确定记录总数 然后才
  • Python:按条件绘制多个正/负条形图

    这是我第一次用 python 绘制条形图 我的 df 操作 key descript score 0 noodles taste 5 1 noodles color 2 2 noodles health 3 3 apple color 7
  • std::map 只读操作的线程安全

    我有一个 std map 用于将值 字段 ID 映射到人类可读的字符串 当我的程序在任何其他线程启动之前启动时 该映射会被初始化一次 之后就不会再被修改 现在 我为每个线程提供了这个 相当大的 映射的自己的副本 但这显然是内存使用效率低下
  • Moshi 无法解析 nullable

    你好 希望你能帮助我 使用 kotlin Retrofit2 moshi 我从 https api spacexdata com v3 launches 获取数据并解析它 一切都很顺利 我得到的属性如下 flight number miss
  • Mediaplayer 播放几次后停止播放

    我有一个按钮 按下它会播放一个随机声音剪辑 然后播放另一个声音剪辑 然后通过一个媒体播放器播放另一个声音剪辑 但是多次按下该按钮 15 20 次 后 所有音频都会停止 我在播放最后一个音频剪辑后释放媒体播放器 所以我不认为这是原因 有什么指