2017-04-21 14 views
0

VideoViewに含まれるビデオの音量を設定する必要があります。私はSeekBarを使用する必要があります(私はすでにSeekBarsで作業する方法を知っています、私はちょうどビデオの音量を設定する方法を知りたいです)。 また、コントロールバーとして別のSeekBarを使用する必要があります。 これは私のコードです:VideoView + SeekBarのビデオの音量をコントロールバーに設定する

positionBar = (SeekBar) this.findViewById(R.id.seekBar2); 
    volumeBar = (SeekBar) this.findViewById(R.id.seekBar); 

    //getting the max volume and the current volume to set the volume bar 
    audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 
    maxVolume = audioManager.getStreamMaxVolume(AudioManager.USE_DEFAULT_STREAM_TYPE); 
    currentVolume = audioManager.getStreamVolume(AudioManager.USE_DEFAULT_STREAM_TYPE); 
    volumeBar.setMax(maxVolume); 
    volumeBar.setProgress(currentVolume); 

    //putting the video to execute in the video view 
    videoPlayer.setVideoPath("android.resource://" + getPackageName() + "/" + R.raw.video); 

    //volume bar listener 
    volumeBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 


     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 
    //******************************************************************** 

    //position bar listener 
    positionBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 
    //******************************************************************** 

    //timer to update the position bar during the video execution 
    //and the volume 
    new Timer().scheduleAtFixedRate(new TimerTask() { 

     @Override 
     public void run() { 

      currentVolume = audioManager.getStreamVolume(AudioManager.USE_DEFAULT_STREAM_TYPE); 
      volumeBar.setProgress(currentVolume); 
     } 
    }, 0 , 500); 
    //******************************************************************** 

答えて

2

以下のコードを確認してください。ビデオの音量をプログラム的に設定します。

SeekBar volumeBar; 
int volumeLevel; 
AudioManager audioManager; 
ImageView volumnBtn; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    ..... 

    ..... 

    volumeBar = (SeekBar) findViewById(R.id.volumeBar); 
    audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
    volumeBar.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)); 
    volumeLevel = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 

    volumnBtn = (ImageView) findViewById(R.id.volumnBtn); 

    if (volumeLevel == 0) { 
     volumnBtn.setImageDrawable(getResources().getDrawable(R.drawable.volumnMute)); 
    } else { 
     volumnBtn.setImageDrawable(getResources().getDrawable(R.drawable.volumnHigh)); 
    } 

    iv_volumn_btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      volumeLevel = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
      volumeBar.setProgress(volumeLevel); 
      if (volumeBar.getVisibility() == View.GONE) { 
       volumeBar.setVisibility(View.VISIBLE); 
      } else { 
       volumeBar.setVisibility(View.GONE); 
      } 
     } 
    }); 

    volumeBar.setProgress(volumeLevel); 
    volumeBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 
      volumeLevel = i; 
      if (volumeLevel == 0) { 
       volumnBtn.setImageDrawable(getResources().getDrawable(R.drawable.volumnMute)); 
      } else { 
       volumnBtn.setImageDrawable(getResources().getDrawable(R.drawable.volumnHigh)); 
      } 
      audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volumeLevel, 0); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      volumeBar.setVisibility(View.GONE); 

      if (volumeLevel == 0) { 
       volumnBtn.setImageDrawable(getResources().getDrawable(R.drawable.volumnMute)); 
      } else { 
       volumnBtn.setImageDrawable(getResources().getDrawable(R.drawable.volumnHigh)); 
      } 
     } 
    }); 
} 
0

使用SeekBar.getProgress()あなたのシークバーの値を取得し、その後onProgressChanged方法では、音量を設定した値を使用します。

関連する問題