【问题标题】:Playing mp3 in a Listview in Android在 Android 的 Listview 中播放 mp3
【发布时间】:2012-02-13 19:23:06
【问题描述】:

抱歉我的英语不好..您可能会看到一些语法错误..

我正在学习编写一个 android 应用程序,我需要帮助。 我想将一些 mp3 文件放在“res/raw”文件夹中,并且我想在 Listview 上的每个项目上放置特定的文本。因此,当用户点击他想要的项目(例如歌曲标题)时,相关的 mp3 就会启动。

我希望你能教我如何一次只播放一个 mp3(因为用户在第一次播放 mp3 时可能会点击很多项目)。 我是android世界的新手,所以请耐心使用简单的术语:)

祝你有美好的一天, 里卡多。

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    由于您的问题不包括您的任何特定代码,我可以给您一些指导。

    1. 声明一个对 MediaPlayer 实例的类成员引用。例如它应该在类的范围内声明,而不是在其中的任何方法中:

      public class MyListView extends ListView {
          private MediaPlayer mp = null;
          //your methods here
      }
      
    2. 在您的 OnClickListener 中,检查该实例是否为空,如果不是,则停止并释放它,并使用新歌曲创建一个新实例。

      public void onClick(View v) {
          if (mp != null) {
              mp.stop();
              mp.release();
              mp = MediaPlayer.Create(....);
              mp.start();
          }
      }
      
    3. 如果您决定使用 prepareAsync() 而不是 create,请确保在准备后不要立即调用 start,而是分配一个 OnPreparedListener 并在其中调用 start。

      李>

    除此之外,请遵循 MediaPlayer 参考中的指南。

    【讨论】:

    • 非常感谢您的回复,您帮助我了解了该实例,但是.. 我不明白如何为 ListView 中的每个项目分配一个 mp3.. 不幸的是,这不是像 Visual Basic 这样的事件驱动语言,我只有 16 岁,我没有使用 java 的经验,我现在正在努力理解它
    • 创建一个mp3的ids数组,并根据被触摸的view的index设置合适的id。
    • 顺便说一句,android 编程很像事件驱动编程,使用监听器。你也可以看这里:helloandroid.com/tutorials/musicdroid-audio-player-part-i
    • 嗯.. 我是用按钮做的,但如果我使用按钮,它的设计就不是很好......我可以做这样的事情但使用 ListView 吗?等一下,我在 pastebin.com 上发布它
    【解决方案2】:

    检查此link。您需要将此链接中的代码集成到您的 listView.setOnItemSelectedListener() 实现中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多