【问题标题】:Why does my Android MP3 Player code not work?为什么我的 Android MP3 播放器代码不起作用?
【发布时间】:2013-04-29 13:28:38
【问题描述】:

我正在尝试制作一个简单的 Android MP3 播放器,它将播放由 mediaplayer=mediaplayer.create 代码行声明的 MP3!

XML 代码用于一个简单的按钮,上面写着播放!

我希望它在按下按钮时播放 MP3...

谁能帮忙?

import android.R;  //This automatically generates R file (references resources)
import android.app.Activity;
import android.media.MediaPlayer; - //This allows for predefined MP3 start/stop classes      to be used
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener; 
import android.widget.Button;

public class Mp3player extends Activity {

private Button buttonPlayStop;
private MediaPlayer mediaPlayer;


private final Handler handler = new Handler();


@Override
public void onCreate(Bundle icicle) { //Place holder for ‘OnFreeze’ parameter
        super.onCreate(icicle);
        setContentView(R.layout.activity_main); //Referencing XML file
        initViews();  

}

// setOnClickListener method (buttonClick())
private void initViews() {
    buttonPlayStop = (Button) findViewById(R.id.ButtonPlayStop);
    buttonPlayStop.setOnClickListener(new OnClickListener() {@Override public void   onClick(View v) {buttonClick();}});

    mediaPlayer = MediaPlayer.create(this, R.raw.music); // Sound file location


// event handler for buttonClick event
private void buttonClick(){ //When button is clicked do…
    if (buttonPlayStop.getText() == getString(R.string.play_str)) {
        buttonPlayStop.setText(getString(R.string.pause_str)); //
        try{
            mediaPlayer.start(); //Play MP3
        }
    }else {
        buttonPlayStop.setText(getString(R.string.play_str));
        mediaPlayer.pause(); //Pause MP3
    }
}
}

【问题讨论】:

  • 不应该是buttonPlayStop.getText() == getString(R.string.play_str)buttonPlayStop.getText().equals(getString(R.string.play_str)) 吗?

标签: java android eclipse media-player mp3


【解决方案1】:

首先,检查媒体播放器是否正在播放的按钮标题并不是一个好主意——而且你做错了。 String.equals() 检查字符串是否相等,而== 检查字符串引用是否相等。

private void buttonClick(){ //When button is clicked do…
    if( !mediaPlayer.isPlaying() ) {
        buttonPlayStop.setText( getString(R.string.pause_str) );
        try {
            mediaPlayer.start(); // Play MP3
        } catch ( Exception e ) {
            // Handle Exception
        }
    } else {
        buttonPlayStop.setText( getString(R.string.play_str ) );
        mediaPlayer.pause();
    }
}

您可能还想设置您的onCompletionListener

class PlayerActivity implements MediaPlayer.OnCompletionListener {

void onCompletion( MediaPlayer mp ) {
    buttonPlayStop.setText( getString(R.string.play_str ) );
}

在你的initViews():

mediaPlayer.setOnCompletionListener( this );

【讨论】:

    【解决方案2】:
    package com.GuitarPrep1;
    
    import android.R;  //This automatically generates R file (references resources)
    import android.app.Activity;
    import android.media.MediaPlayer; - //This allows for predefined MP3 start/stop classes      to be used
    import android.os.Bundle;
    import android.os.Handler;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnTouchListener; 
    import android.widget.Button;
    
    public class Mp3player extends Activity {
    
    private Button buttonPlayStop;
    private MediaPlayer mediaPlayer;
    
    
    private final Handler handler = new Handler();
    
    
    @Override
    public void onCreate(Bundle icicle) { //Place holder for ‘OnFreeze’ parameter
            super.onCreate(icicle);
            setContentView(R.layout.activity_main); //Referencing XML file
            mediaPlayer = MediaPlayer.create(this, R.raw.music); // Sound file location
            initViews();  
            mediaPlayer.setOnCompletionListener (new MediaPlayer.OnCompletionListener(){
    
            @Override
            public void onCompletion(MediaPlayer arg0) {
            // TODO Auto-generated method stub
            buttonPlayStop.setText(getString(R.string.play_str));
            }});
    
    }
    
    // setOnClickListener method (buttonClick())
    private void initViews() {
        buttonPlayStop = (Button) findViewById(R.id.ButtonPlayStop);
        buttonPlayStop.setOnClickListener(new OnClickListener() {@Override public void   onClick(View v) {buttonClick();}});
    
    
    
    
    // event handler for buttonClick event
    private void buttonClick(){ //When button is clicked do…      
        if(mediaPlayer!=null && mediaPlayer.isPlaying()){
                 mediaPlayer.pause();
                 buttonPlayStop.setText(getString(R.string.play_str));
        }else if(mediaPlayer!=null){
                 mediaPlayer.start();
                 buttonPlayStop.setText(getString(R.string.pause_str));
        }
    
    
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2011-11-13
      • 2014-01-23
      • 2013-08-06
      • 1970-01-01
      • 2016-01-23
      相关资源
      最近更新 更多