-1

これらの行を使用して、サービスとアクティビティの両方で、メディアプレーヤーでオーディオ ファイルを再生しますが、デバイスでサウンドが再生されません。理由は何ですか? 何が悪いのかを理解し、最終的に修正するにはどうすればよいですか?

    MediaPlayer mp = MediaPlayer.create(this, R.raw.alert);
    mp.start();
4

3 に答える 3

1

MediaPlayerドキュメントの状態図を確認してください。

作成するMediaPlayerと、アイドル状態になります。ご覧のとおり、start()を呼び出す前に、初期化して準備する必要があります。

于 2012-08-20T07:24:28.167 に答える
1
Intent viewMediaIntent = new Intent();   
viewMediaIntent.setAction(android.content.Intent.ACTION_VIEW);   
File file = new File(objectFilePath);   
viewMediaIntent.setDataAndType(Uri.fromFile(file), "audio/*");   
viewMediaIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(viewMediaIntent);  

http://developer.android.com/reference/android/media/MediaPlayer.html

于 2012-08-20T07:17:20.940 に答える
0

次のコードを確認してください。私にとっては問題なく動作します。あなたにも役立つことを願っています.....Androidマニフェストファイルにオーディオ再生許可を追加することを忘れないでください

import android.app.Activity;
 import android.media.MediaPlayer;
  import android.media.MediaPlayer.OnBufferingUpdateListener;
  import android.media.MediaPlayer.OnCompletionListener;
  import android.os.Bundle;
  import android.os.Handler;
    import android.util.Log;
  import android.view.MotionEvent;
    import android.view.View;
     import android.view.View.OnClickListener;
     import android.view.View.OnTouchListener;
     import android.widget.Button;
     import android.widget.SeekBar;

                                                public class StreamAudioFromUrlSampleActivity extends Activity implements OnClickListener, OnTouchListener, OnCompletionListener, OnBufferingUpdateListener{
                    private Button btn_play,
                btn_pause,
                btn_stop;
private SeekBar seekBar;
private MediaPlayer mediaPlayer;
private int lengthOfAudio;
private final String URL = "http://android.erkutaras.com/media/audio.mp3";
private final Handler handler = new Handler();
private final Runnable r = new Runnable() { 
    @Override
    public void run() {
        updateSeekProgress();                   
    }
};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    init();
}

private void init() {
    btn_play = (Button)findViewById(R.id.btn_play);
    btn_play.setOnClickListener(this);
    btn_pause = (Button)findViewById(R.id.btn_pause);
    btn_pause.setOnClickListener(this);
    btn_pause.setEnabled(false);
    btn_stop = (Button)findViewById(R.id.btn_stop);
    btn_stop.setOnClickListener(this);
    btn_stop.setEnabled(false);

    seekBar = (SeekBar)findViewById(R.id.seekBar);
    seekBar.setOnTouchListener(this);

    mediaPlayer = new MediaPlayer();
    mediaPlayer.setOnBufferingUpdateListener(this);
    mediaPlayer.setOnCompletionListener(this);

}

@Override
public void onBufferingUpdate(MediaPlayer mediaPlayer, int percent) {
    seekBar.setSecondaryProgress(percent);
}

@Override
public void onCompletion(MediaPlayer mp) {
    btn_play.setEnabled(true);
    btn_pause.setEnabled(false);
    btn_stop.setEnabled(false);
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    if (mediaPlayer.isPlaying()) {
        SeekBar tmpSeekBar = (SeekBar)v;
        mediaPlayer.seekTo((lengthOfAudio / 100) * tmpSeekBar.getProgress() );
    }
    return false;
}

@Override
public void onClick(View view) {

    try {
        mediaPlayer.setDataSource(URL);
        mediaPlayer.prepare();
        lengthOfAudio = mediaPlayer.getDuration();
    } catch (Exception e) {
        //Log.e("Error", e.getMessage());
    }

    switch (view.getId()) {
    case R.id.btn_play:
        playAudio();
        break;
    case R.id.btn_pause:
        pauseAudio();
        break;
    case R.id.btn_stop:
        stopAudio();
        break;
    default:
        break;
    }

    updateSeekProgress();
}

private void updateSeekProgress() {
    if (mediaPlayer.isPlaying()) {
        seekBar.setProgress((int)(((float)mediaPlayer.getCurrentPosition() / lengthOfAudio) * 100));
        handler.postDelayed(r, 1000);
    }
}   

private void stopAudio() {
    mediaPlayer.stop();
    btn_play.setEnabled(true);
    btn_pause.setEnabled(false);
    btn_stop.setEnabled(false);
    seekBar.setProgress(0);
}

private void pauseAudio() {
    mediaPlayer.pause();
    btn_play.setEnabled(true);
    btn_pause.setEnabled(false);
}

private void playAudio() {
    mediaPlayer.start();
    btn_play.setEnabled(false);
    btn_pause.setEnabled(true);
    btn_stop.setEnabled(true);
}

}

于 2012-08-20T07:38:03.137 に答える