android - 使用 Mediaplayer 重播同一文件

标签 android

我希望你能提供一些指导。我创建了一个媒体播放器 (mp1) 的“最终”实例,并在单击按钮时播放 mp3 文件。然后我需要在单击第二个按钮时停止文件。在我尝试再次播放该文件之前,这一切正常——没有任何反应。我认为因为 mp1 实例是“最终的”,所以当我停止它时,它会永久停止,直到我重新启动该应用程序。我不想暂停文件,我想停止它然后重新启动它。欢迎任何想法。我尝试将 mp1 创建放在按钮中。这一直有效,直到应用程序崩溃 - 可能是因为多个媒体播放器创建使用了所有设备内存?

谢谢!!!

// const mediaplayer
mp1 = MediaPlayer.create(getApplicationContext(), R.raw.mysound);

...

// in button 1
if (radSound1.isChecked()) {
               radSound2.setChecked(false); // ...set radiobutton 2 to false
                mp1.start();                 // ...play the mp3 file
               }

...


// in button 2
if (mp1 != null){
                  mp1.reset();
                   //mp1.setDataSource();
                   // mp1.prepare(); 
              }

最佳答案

按照状态图here . stop() 停止播放并将您置于停止状态。在下次开始播放之前,您应该调用 prepare() 然后再次调用 start()

所以在按钮 1 中,您应该调用 start(),在按钮 2 中,您应该调用 stop()prepare() .初始化没问题,做一次,放在按钮外面。

也接受你的问题的答案,包括这个,这样像我这样的人将来会更有动力回复他们。

关于android - 使用 Mediaplayer 重播同一文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11533728/

相关文章:

Java——需要使用菱形运算符; Android编译器合规级别与支持钻石运算符的级别之间存在冲突

java - 处理今天和现在的时间选择器之前的几天和几小时

java - 如何解决以下 stub 是不必要的 - Mockito - Android

android - fragment 中 ListView 的 setOnItemClickListener

Android - 如何保存其他应用程序可读的文件?

java - 千禧年媒体集成 android - noSuchMethod : getRealMetrics

php - Android:无法从真实网站下载大尺寸数据库到 SQLite 数据库

android - 如何使用嵌套 ScrollView

android - 为什么在 Android 模拟器上运行时 Firebase 在 PhoneGap 应用程序中返回 404 错误?

android - 标准C++库的跨平台程度如何?