2017-04-21 1 views
0

Je dois définir le volume d'une vidéo contenue dans un VideoView. Je dois utiliser un SeekBar (je sais déjà comment travailler avec SeekBars, je voudrais juste savoir comment régler le volume de la vidéo). Je dois également utiliser un autre SeekBar comme barre de contrôle. Ceci est mon code:Définir le volume d'une vidéo d'un VideoView + SeekBar en tant que barre de contrôle

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); 
    //******************************************************************** 

Répondre

2

Vérifiez le code ci-dessous, Pour définir le volume de la vidéo par programmation.

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

utilisation SeekBar.getProgress() pour obtenir la valeur de votre seekbar, puis utilisez la valeur pour régler le volume, dans la méthode onProgressChanged.