java - MediaPlayer 在 Android 中工作,但没有进展

标签 java android android-mediaplayer seekbar

我已经为此工作了一段时间,试图让本教程发挥作用 ( http://united-coders.com/nico-heid/an-android-seekbar-for-your-mediaplayer/ ),但我没有任何运气。音频播放完美,但 SeekBar 不动。

package com.example.playingaudio;

import java.io.FileInputStream;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.SeekBar;

public class MainActivity extends Activity implements Runnable {

    private MediaPlayer mediaPlayer;
    private SeekBar progress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        setContentView(R.layout.activity_main);
        super.onCreate(savedInstanceState);
        progress = (SeekBar) findViewById(R.id.seekBar1);

    }

    public void playButton(View view) {
        try {
            playRecording();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    protected void playRecording() throws Exception {
        final MediaPlayer mediaPlayer = new MediaPlayer();
        FileInputStream fileStream = new FileInputStream(
                "/sdcard/Download/mySong.mp3");
        mediaPlayer.setDataSource(fileStream.getFD());
        mediaPlayer.prepare(); // might take long! (for buffering, etc)
        mediaPlayer.start();
        run();
    }

    private void ditchMediaPlayer() {
        if (mediaPlayer != null) {
            try {
                mediaPlayer.release();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    @Override
    public void run() {
        // mp is your MediaPlayer
        // progress is your ProgressBar

        int currentPosition = 0;
        int total = mediaPlayer.getDuration();
        progress.setMax(total);
        while (mediaPlayer != null && currentPosition < total) {
            try {
                Thread.sleep(1000);
                currentPosition = mediaPlayer.getCurrentPosition();
            } catch (InterruptedException e) {
                return;
            } catch (Exception e) {
                return;
            }
            progress.setProgress(currentPosition);
        }
    }

}

最佳答案

尝试改变这一行

final MediaPlayer mediaPlayer = new MediaPlayer();

到,这条线

mediaPlayer = new MediaPlayer();

原因是您已经声明了一个类变量 mediaPlayer,为什么还要用相同的名称再次声明局部变量。

关于java - MediaPlayer 在 Android 中工作,但没有进展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18070026/

相关文章:

android - 通知中的音乐播放器控制

java - 在 java 方法签名的返回类型中扩展关键字

java - 解析 XSD 文档时出错

java - 如何将 HTML 文件显示为网页?

java - ListView 中 url 中的图像随机图像错误

android - Frida 服务器不断重生

java - Android - MediaPlayer HTTP 错误处理

android - 如何防止 VideoView/MediaPlayer 停止其他应用程序的音频?

java - 如何检查哪个线程(共 10 个)调用了 Singleton 构造函数?

android: 如何在模拟器上播放 YouTube 视频