0

これは、2 つのシークバーを制御して、メディア プレーヤーで 2 つの同時再生サウンドのボリューム コントロールを設定するコードです。ただし、シークバーの進行変化で音のオンオフが発生するため、進行変化で頻繁に音量が増減するわけではありません。どこが間違っていますか?

audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

        int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

        volume2 = (SeekBar)findViewById(R.id.volbar2);
        volume1 = (SeekBar)findViewById(R.id.volbar);


        volume1.setMax(maxVolume);
        volume2.setMax(maxVolume);
        volume1.setProgress(curVolume);
        volume2.setProgress(curVolume);

        volume1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {


               }
            @Override
            public void onStartTrackingTouch(SeekBar arg0) {

            }
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean arg2) {

                if(seekBar.equals(volume1)){

                    mediaPlayer.setVolume(progress,progress);

                    Toast.makeText(getApplicationContext(), ""+progress+progress, 1).show();

                      }

            }
            });

        volume2.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) {
                // TODO Auto-generated method stub
                if(seekBar.equals(volume2)){ 
                     mediaPlayer2.setVolume(progress,progress);
             }

            }
        });
4

2 に答える 2

0

@Ankushこんにちは、実際には、次のコードを使用してプロジェクトのこの問題を解決しました。

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    Log.w("MovingProgressBar","Progress change to: " + progress);
    try {
        if (seekBar == seekMusic){
            musicCurrentVol = (float) (progress/100.0);
            musicPlayer.setVolume(musicCurrentVol, musicCurrentVol);
        } else if (seekBar == seekIns) {
            insCurrentVol = (float) (progress/100.0);
            insPlayer.setVolume(insCurrentVol, insCurrentVol);
        } 
    } catch (Exception e) {
        Log.w("MovingProgressBar:", "Progress not change: " + e);
    }
}

そして、これは私にとってはうまくいきます。これもうまくいくことを願っています。

于 2012-05-21T10:57:02.287 に答える
0

mediaplayer.setVolume() は 0.0f から 1.0f の間の値を持ちたいと思うので、オーディオマネージャーのボリュームに対する相対的なボリュームです

于 2012-05-18T13:50:41.597 に答える