簡體   English   中英

如何在Android應用中播放和停止mp3文件

[英]How to play and stop an mp3 file in an android app

我已經在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.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
     }

嘗試此操作(只需在公共區域定義Media Player)

    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();

        }
    });

}
}

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;
    }
}

您必須移動以下代碼:

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();

    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM