【问题标题】:How to play and stop an mp3 file in an android app如何在 Android 应用程序中播放和停止 mp3 文件
【发布时间】:2017-02-11 20:07:22
【问题描述】:

我在 Eclipse 中创建了一个应用程序来播放和停止 mp3 文件。一切都很好,除了当我播放音频文件并停止它并且我想重播它时,播放 btn 不起作用!我想知道是否有人可以帮助我?提前致谢。 代码来了:

package ir.polyglotcenter.childrenmostfrequentwords;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Main extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //Related to the media player
    final MediaPlayer myMediaPlayer = MediaPlayer.create(Main.this, R.raw.audio);
    //Button related to play btn
    Button myButtonOne = (Button) findViewById(R.id.btn_audio);
    myButtonOne.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            myMediaPlayer.start();

        }
    });

    //Button related to stop btn
    Button myButtonTwo = (Button) findViewById(R.id.btn_stop);
    myButtonTwo.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            myMediaPlayer.stop();

        }
    });

}
}

【问题讨论】:

  • 为什么会有 mediaPlayer 决赛?
  • 因为编辑希望我这样做

标签: java android eclipse audio


【解决方案1】:

如果您想在单击按钮时开始/停止声音,请使用 MediaPlayer.start()MediaPlayer.pause() 暂停当前播放的声音,该声音在单击开始按钮时再次开始。并覆盖 Activity onPause 以最终停止并释放 MediaPlayer。将您的代码更改为:

onStop 按钮点击:

myButtonTwo.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            myMediaPlayer.pause();  //>>pause current sound
            myMediaPlayer.seekTo(0); //>> seek to start it again 

        }
    });

并覆盖 Activity 的 onPause 方法:

  @Override
   protected void onPause{
      super.onPause();
       myMediaPlayer.stop();  //>>> stop myMediaPlayer
       myMediaPlayer.release(); //>>> free myMediaPlayer
     }

【讨论】:

  • 非常感谢您的帮助
【解决方案2】:

试试这个(只需在公共区域定义媒体播放器)

    public class Main extends Activity {

MediaPlayer myMediaPlayer = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //Related to the media player

    myMediaPlayer = MediaPlayer.create(Main.this, R.raw.audio);

    //Button related to play btn
    Button myButtonOne = (Button) findViewById(R.id.btn_audio);
    myButtonOne.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            myMediaPlayer.start();

        }
    });

    //Button related to stop btn
    Button myButtonTwo = (Button) findViewById(R.id.btn_stop);
    myButtonTwo.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            myMediaPlayer.pause();

        }
    });

}
}

【讨论】:

  • 这不能从任何部分播放mp3,例如'sdcasd/1.mp3'。
【解决方案3】:

Point 是在 if 或 any 循环的循环中实现 MediaPlayer

public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()){
    case R.id.buttonPlay:
        //mp.reset();
        mp=MediaPlayer.create(Ur Context.this, R.raw."ursong.mp3");
        mp.start();

        break;
    case R.id.buttonStop:
        mp.stop();

        break;
    }
}

【讨论】:

    【解决方案4】:

    您必须移动此代码:

    final MediaPlayer myMediaPlayer = MediaPlayer.create(Main.this, R.raw.audio);
    

    在:

    myButtonOne.setOnClickListener(new OnClickListener() {
    
        @Override
        public void onClick(View v) {
            final MediaPlayer myMediaPlayer = MediaPlayer.create(Main.this,R.raw.audio);
            myMediaPlayer.start();
    
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多