1

Android でのオーディオ ファイル再生の音量を制御する音量コントロール スライダーがあります。

vSlider=(SeekBar) findViewById(R.id.seekBar2);
        vSlider.setMax(10);
        if(mediaPlayer.isPlaying()){
            isPlaying=true;
            try {
                currentPosition = mediaPlayer
                        .getCurrentPosition();
                double seconds=currentPosition/1000;
                int time= (int) Math.round(seconds);
                String timeS=Integer.toString(time);
                timer.setText(timeS+"s");
                Log.d("position",timeS);
                fSlider.setProgress(currentPosition);
            }  catch (Exception e) {

            }
            vSlider.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

                @Override
                public void onProgressChanged(SeekBar seekBar, int progress,
                        boolean fromUser) {
                    float volume=progress/10;
                    Log.d("Progress", String.valueOf(progress));
                    Log.d("Volume",String.valueOf(volume));
                    mediaPlayer.setVolume(volume, volume);

                }
                @Override
                public void onStartTrackingTouch(SeekBar seekBar) { }
                @Override
                public void onStopTrackingTouch(SeekBar seekBar) { }                        
            });

スライダーの進行状況の int 値は正しく検出されていますが、float ボリュームは常に 0.0 になります。ここで何が間違っていますか?

4

6 に答える 6

0

これは、整数除算を行ってから結果を float にキャストするためです。代わりにこれを試してください:

float volume = progress / 10.0f;
于 2013-07-30T07:18:18.627 に答える
0

これは、型変換によるものです。

int/int--Output is in->を実行するintと、 float に割り当てられます

したがって、floatで出力したい場合

float/intまたはint/float-- 出力はイン -->float

それを念頭に置いてください:

float value = progress/10.0f //as by default 10.0 is double in java
于 2013-07-30T07:17:31.420 に答える