Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用RangeSeekBar在两个拇指之间播放一段音频_Android_Android Mediaplayer_Rangeseekbar - Fatal编程技术网

Android 使用RangeSeekBar在两个拇指之间播放一段音频

Android 使用RangeSeekBar在两个拇指之间播放一段音频,android,android-mediaplayer,rangeseekbar,Android,Android Mediaplayer,Rangeseekbar,所以,我想做的是在两个拇指之间播放一部分或一部分音频-RangeSekbar的min和max。我使用了下面的库来实现此功能。 从我的角度来看,通过一些逻辑,我已经实现了功能。但我不知道音频并不总是停在最大位置。另外,由于我现在使用的是自定义视图,所以无法显示进度指示器,例如播放当前音频的位置。RangeSeekbar没有以下方法 seekbar.setProgress(整数持续时间) 因此,很难看到音乐实际在哪里播放。我想要一个这样的功能 有人能告诉我如何做到这一点吗 以下是相关代码 Mai

所以,我想做的是在两个拇指之间播放一部分或一部分音频-RangeSekbar的min和max。我使用了下面的库来实现此功能。

从我的角度来看,通过一些逻辑,我已经实现了功能。但我不知道音频并不总是停在最大位置。另外,由于我现在使用的是自定义视图,所以无法显示进度指示器,例如播放当前音频的位置。RangeSeekbar没有以下方法

seekbar.setProgress(整数持续时间)

因此,很难看到音乐实际在哪里播放。我想要一个这样的功能

有人能告诉我如何做到这一点吗

以下是相关代码

MainActivity.java

  public class MainActivity extends AppCompatActivity {

RangeSeekBar<Integer> mRangeSeekBar;
MediaPlayer mMediaPlayer;
Button playButton;
TextView mEndTextView;
static int max;
SeekBar mSeekBar;

Runnable mRunnable;
Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mRangeSeekBar = findViewById(R.id.rangeSeekBar);
    mSeekBar = findViewById(R.id.seekBar);
    mRangeSeekBar.setNotifyWhileDragging(true);
    playButton = findViewById(R.id.play);
    mEndTextView = findViewById(R.id.end_duration);
    mHandler = new Handler();

    mMediaPlayer = MediaPlayer.create(this, R.raw.song);
    max = mMediaPlayer.getDuration();

  mRangeSeekBar.setRangeValues(0, mMediaPlayer.getDuration());
    mSeekBar.setMax(mMediaPlayer.getDuration());

    playButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mMediaPlayer.start();
            playProgress();
        }
    });

    mRangeSeekBar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
        @Override
        public void onRangeSeekBarValuesChanged(RangeSeekBar<?> bar, Integer minValue, Integer maxValue) {
            mMediaPlayer.seekTo(minValue);
             max = maxValue;

        }
    });
}

private void playProgress() {
        if(mMediaPlayer.getCurrentPosition() == max) {
            mMediaPlayer.stop();
        }
    if (mMediaPlayer.isPlaying()) {
        mRunnable = new Runnable() {
            @Override
            public void run() {
                playProgress();
            }
        };
        mHandler.postDelayed(mRunnable, 0);
    }
}
public类MainActivity扩展了AppCompatActivity{
RangeSeekBar mRangeSeekBar;
媒体播放器;
按钮播放按钮;
文本视图;文本视图;
静态int max;
SeekBar-mSeekBar;
可运行的mRunnable;
汉德勒;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRangeSeekBar=findViewById(R.id.rangeSeekBar);
mSeekBar=findviewbyd(R.id.seekBar);
mRangeSeekBar.setNotifyWhileDragging(true);
playButton=findviewbyd(R.id.play);
mEndTextView=findViewById(R.id.end\u持续时间);
mHandler=新处理程序();
mMediaPlayer=MediaPlayer.create(这个,R.raw.song);
max=mmediplayer.getDuration();
mRangeSeekBar.setRangeValues(0,mmediplayer.getDuration());
mSeekBar.setMax(mmediplayer.getDuration());
playButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mmediplayer.start();
播放进度();
}
});
mRangeSeekBar.setonRangeSekbarchaneListener(新的RangeSekbar.onRangeSekbarchaneListener(){
@凌驾
RangeSeekbarValuesChanged上的公共无效(RangeSekbar条、整数minValue、整数maxValue){
mmediplayer.seekTo(最小值);
最大值=最大值;
}
});
}
私人进展(){
if(mmediplayer.getCurrentPosition()=最大值){
mmediplayer.stop();
}
if(mmediplayer.isPlaying()){
mRunnable=newrunnable(){
@凌驾
公开募捐{
播放进度();
}
};
mHandler.postDelayed(mRunnable,0);
}
}
活动\u main.xml

 <com.yahoo.mobile.client.android.util.rangeseekbar.RangeSeekBar
    android:id="@+id/rangeSeekBar"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginEnd="16dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="32dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

依赖关系

实现'com.yahoo.mobile.client.android.util.rangeseekbar:rangeseekbar库:0.1.0'