【问题标题】:Android MediaPlayer - only one instance at any given time?Android MediaPlayer - 在任何给定时间只有一个实例?
【发布时间】:2010-06-28 00:10:27
【问题描述】:

我有一个音频播放器应用程序,其中有一个显示 3 个音频示例 url 的主要活动。单击一个,它会转到一个详细信息活动,其中有一个播放和暂停按钮,以启动和暂停音频。

我的问题是,当我启动 Main 活动并说单击音频 1 时,我在 Details 活动上点击了播放。这将启动 MediaPlayer 并开始播放音频。当我回到主要活动时,音频仍在播放,这就是我想要的。现在,当我再次单击音频 1 并转到 Details Activity 并再次点击播放时,似乎有一个新的 MediaPlayer 开始播放音频。所以我有 2 首曲目一起播放!

有没有一种方法可以让我在任何给定时间都只有一个 MediaPlayer 实例?

谢谢 克里斯

【问题讨论】:

    标签: android audio android-activity media-player


    【解决方案1】:

    您应该考虑Singleton pattern。创建一个具有静态方法 getMediaPlayer() 的 MyPlayer 类,该方法每次调用都返回相同的 MediaPlayer 实例。

    【讨论】:

      【解决方案2】:

      单例类

      public final class MySingleton extends Application {
      
           static MediaPlayer instance;
      
          public static MediaPlayer getInstance() {
      
              if (instance == null)
              {
                  instance = new MediaPlayer();
      
              }
      
      
              return instance;
          }
      
      
      }
      

      适配器在你的列表中

      在构造函数中一次性初始化你的单例类

      private static MediaPlayer mMediaPlayer = MySingleton.getInstance();
      
      if (mMediaPlayer.isPlaying()) {
       try {
        mMediaPlayer.reset();
        mMediaPlayer.stop();
      
        mMediaPlayer.setDataSource(mainActivity, Uri.parse(songsarraylist.get(position).getPath()));
        mMediaPlayer.prepare();
        mMediaPlayer.start();
      
      
      
      
       } catch (Exception e) {
        Toast.makeText(mainActivity, "Catching", Toast.LENGTH_SHORT).show();
       }
      
      
      } else {
       try {
      
        mMediaPlayer.setDataSource(mainActivity, Uri.parse(songsarraylist.get(position).getPath()));
        mMediaPlayer.prepare();
        mMediaPlayer.start();
       } catch (IOException e) {
        e.printStackTrace();
       }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多