java - Android 中的关闭音频问题

标签 java android

我是 Android 编程的新手,我一直在开发一个媒体应用程序,它可以播放、暂停音频并使用 Seekbar 来操作音量和媒体当前位置。当我运行该应用程序时,在将 Seekbar 进度值添加到 MediaPlayer 后,我关闭了音频。

import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.MediaController;
import android.widget.SeekBar;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {

MediaPlayer mediaPlayer;
AudioManager audioManager;
boolean isPlaying;
public void songPlay(View view)
{
    if(isPlaying) {
        mediaPlayer.start();
        isPlaying = false;

    }
}
public void songPause(View view)
{
    mediaPlayer.pause();
    isPlaying = true;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mediaPlayer = MediaPlayer.create(this,R.raw.nfy);
    isPlaying = true;
    audioManager= (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

    SeekBar seekBar = (SeekBar) findViewById(R.id.volumeBar);
    seekBar.setMax(maxVolume);
    seekBar.setProgress(currentVolume);
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });


    final SeekBar scrubber = (SeekBar) findViewById(R.id.playBar);
    scrubber.setMax(mediaPlayer.getDuration());
    new Timer().scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            scrubber.setProgress(mediaPlayer.getCurrentPosition());
        }
    },0,1000);

    scrubber.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            if(mediaPlayer!=null && fromUser)
            mediaPlayer.seekTo(progress);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });
}

最佳答案

快到了,尝试将您的 onProgressChanged 替换为以下内容。

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            if(fromUser) {
              mediaPlayer.seekTo(progress);
            }
        }

关于java - Android 中的关闭音频问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34712826/

相关文章:

java - 从 Spark 数据集中选择一些列和特定列的最大值

Java VM 在 Mac OS X 下在 Spring 持久层启动时崩溃

安卓;缓存地理编码数据?

java - 分页编译问题: Not sure how to convert a Cursor to this method's return type

android - 从存储访问框架 UI 获取文件夹后保存图像

java - android旋转矩阵转换

java - Zip文件流引发CRC错误

java - Stacktrace 不在 Glassfish 4.1 集群日志中打印

java - 处理功能键中的 JavaFX 事件

javascript - Android webview,在 Assets 文件夹中加载javascript文件