2012-01-06 81 views
0

我試圖控制媒體音量DialogPreference中的媒體音量控制器

但總是會在關閉對話框後自動設置爲零。

代碼:

  DialogPreference dp = (DialogPreference)findPreference("mediavolume"); 
     dp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 

      public boolean onPreferenceChange(Preference preference, Object newValue) { 
      SeekBar volumeBar = (SeekBar)findViewById(R.id.seekbar); 
      final AudioManager manager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 


      volumeBar.setMax(manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)); 
      volumeBar.setProgress(manager.getStreamVolume(AudioManager.STREAM_MUSIC)); 

      volumeBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

       public void onStopTrackingTouch(SeekBar seekBar) { 
        // TODO Auto-generated method stub 

       } 

       public void onStartTrackingTouch(SeekBar seekBar) { 
        // TODO Auto-generated method stub 

       } 

       public void onProgressChanged(SeekBar seekBar, int progress, 
         boolean fromUser) { 
        manager.setStreamVolume(AudioManager.STREAM_MUSIC, progress,manager.FLAG_PLAY_SOUND); 


       } 
      }); 

       return false; 
      } 
     }); 

回答

0

我不能完全確定你想在這裏做什麼。你有所有重要的部分,volumebar.setMax(),volumebar.setProgress()OnSeekBarChangeListener,但是你打算把它放在整個對話框的變化監聽器中嗎?這個監聽器將會返回false,除非對話本身被改變。