在音乐播放器中创建搜寻器

时间:2020-06-27 05:12:17

标签: java android

我正在尝试如下创建音乐播放器:

应用程序可以正常打开,播放暂停按钮可以正常工作,音量搜索器可以正常工作,但位置(搜索栏)不起作用。这是“覆盖”下面的代码。该应用程序不会崩溃,拖动搜索栏时没有错误信号,并且Logcat似乎工作正常(我认为),但它不会更改音频的位置。有人可以帮忙吗?

    package com.example.playmusic;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.SeekBar;
import android.widget.VideoView;

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


public class MainActivity extends AppCompatActivity {

MediaPlayer mediaPlayer;
ImageButton playButton;
MediaPlayer mp;
AudioManager audioManager;

SeekBar positionBar;

SeekBar volumeBar;

public void playButtonClick (View view) {
    if (!mp.isPlaying()) {
        mp.start();


        playButton.setBackgroundResource(R.drawable.pausebutton);
    } else {
        mp.pause();

        playButton.setBackgroundResource(R.drawable.playbutton);
    }


}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
    int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
    playButton = (ImageButton) findViewById(R.id.playButton);
    mp = MediaPlayer.create(this, R.raw.wishyouweregay);

    SeekBar volumeControl = findViewById(R.id.volumeBar);
    volumeControl.setMax(maxVolume);
    volumeControl.setProgress(currentVolume);


    volumeControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int i, boolean fromUser) {
            Log.i("Volume seekbar changed", Integer.toString(i));
            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

            final SeekBar positionBar = (SeekBar) findViewById(R.id.positionBar);
            positionBar.setMax(mediaPlayer.getDuration());
            positionBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                    Log.i("Position seekbar changed", Integer.toString(progress));
                    mediaPlayer.seekTo(progress);
                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {

                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {

                }
            });
            new Timer().scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    positionBar.setProgress(mediaPlayer.getCurrentPosition());

                }
            }, 0, 300);}



    });

} }

0 个答案:

没有答案