java - 如何在我的媒体播放器中实现 "pause"函数?

标签 java android android-fragments

“停止”和“播放”工作正常,但“暂停”的工作方式与“停止”相同。当我按下暂停时,音频文件停止播放,当我按下播放时,它从头开始播放。

“停止”和“播放”工作正常,但“暂停”的工作方式与“停止”相同。当我按下暂停时,音频文件停止播放,当我按下播放时,它从头开始播放。

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class HelloMoonFragment extends Fragment 
{
    private AudioPlayer mPlayer = new AudioPlayer();
    private Button mPlayButton;
    private Button mStopButton;
    private Button mPauseButton;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent,
    Bundle savedInstanceState) 
    {
        View v = inflater.inflate(R.layout.fragment_hello_moon, parent, false);
        mPlayButton = (Button)v.findViewById(R.id.hellomoon_playButton);
        mPlayButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) 
            {
                mPlayer.play(getActivity());
            }
            });
        mPauseButton = (Button) v.findViewById(R.id.hellomoon_pauseButton);
        mPauseButton.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {
                 mPlayer.pause();
            }
            });
        mStopButton = (Button)v.findViewById(R.id.hellomoon_stopButton);
        mStopButton.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {
                mPlayer.stop();
            }
            });
        return v;
    }
    @Override
    public void onDestroy() 
    {
        super.onDestroy();
        mPlayer.stop();
    }

}

package com.example.hellomoon;

import android.content.Context;
import android.media.MediaPlayer;

public class AudioPlayer {

    private MediaPlayer mPlayer;
    public void stop()
    {
        if(mPlayer != null)
        {
            mPlayer.release();
            mPlayer = null;
        }

    }
    public void pause()
    {   

        if(mPlayer.isPlaying()) 
            {
                mPlayer.pause();

            }
    }
    public void play(Context c)
    {


        stop();
        mPlayer = MediaPlayer.create(c, R.raw.one_small_step);

        mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {

            @Override
            public void onCompletion(MediaPlayer mp) 
            {
                stop();
            }

        });
        mPlayer.start();
    }
}

最佳答案

它从头开始,因为这里:

public void play(Context c) {
   stop();
   mPlayer = MediaPlayer.create(c, R.raw.one_small_step);

你正在释放旧的并重新创建它

尝试记住播放器已暂停:

public class AudioPlayer {
   boolean isPaused = false;

   public void pause() {   
     if(mPlayer.isPlaying())  {
           mPlayer.pause();
           isPaused = true;
     }
   }

  public void play(Context c) {
   if (isPaused && mPlayer != null) {
       mPlayer.start();
       isPaused = false
       return;
   }
   stop();
   mPlayer = MediaPlayer.create(c, R.raw.one_small_step);

关于java - 如何在我的媒体播放器中实现 "pause"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31242091/

相关文章:

java - 需要增强 Java 中嵌套 for 循环的建议

android - 如何设置和读取带密码的NTAG213?

R.java 的 android eclipse 问题

android - Jetpack 使用 fragment 组合 NavHost

android - 在滑动时从 fragment 导航到 Activity

java - 带有 ListView 异步任务的多下载器

java - 如何以 csv 格式输出 hadoop 结果

java - BeagleBone Black 和 java revalidate()

java - 框架上的 java 绘制问题

android - 如何在 FragmentActivity 中使用 `DatePickerDialog`?