2017-04-21 18 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 방법, 볼륨을 설정 값을 사용하기 : 이 내 코드입니다.