【问题标题】:How to set Videoview Volume Programmatically?如何以编程方式设置 Videoview 音量?
【发布时间】:2018-08-02 07:54:08
【问题描述】:

我有 4 个动态创建的 Videoview。我只想为来自服务器的一个视频设置自定义音量,其余三个视频将静音。

我想为我在代码下面尝试的特定视频设置自定义音量,但它不起作用

 vid1.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
                {
                    public void onPrepared(MediaPlayer mp)
                    {
                     //mp.setVolume(100f, 100f);
                     //mp.setLooping(true);
                     vid1.enableSound(20,mp); //here i will set music sound dynamically
                     vid1.start();
                     playingvideo1 = true;
                    }
                });
                //startTimeForContent = dateFormatForContent.format(new Date());
                vid1.setOnErrorListener(mOnErrorListener2);
                playBackfunction1();
            }

public void enableSound(int sound, MediaPlayer mp){
        Float f = Float.valueOf(sound);
        Log.e("checkingsounds","&&&&&   "+f);
        mp.setVolume(f,f);
        mp.setLooping(true);
        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, sound, AudioManager.FLAG_PLAY_SOUND);
    }

当我给音量 0 时它正在工作...但是当更改 10、20、30 时,视频正在播放完整的声音....

我已经在下面研究过:

sound volume not working on Android

Using SeekBar to Control Volume in android?

How to increase and decrease volume in android

【问题讨论】:

    标签: android android-videoview android-audiomanager


    【解决方案1】:

    研究了几个小时后,我得到了解决方案

    您需要将音量 0 设置为 15

    vid1.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
                    {
                        public void onPrepared(MediaPlayer mp)
                        {
                         //mp.setVolume(100f, 100f);
                         //mp.setLooping(true);
    
                         vid1.enableSound(10,mp);  //set Volume 0 to 15.
    
                         vid1.start();
                         playingvideo1 = true;
                        }
                    });
                    //startTimeForContent = dateFormatForContent.format(new Date());
                    vid1.setOnErrorListener(mOnErrorListener2);
                    playBackfunction1();
                }
    

     public void enableSound(int sound, MediaPlayer mp){
            Float f = Float.valueOf(sound);
            Log.e("checkingsounds","&&&&&   "+f);
            mp.setVolume(f,f);
            mp.setLooping(true);
            AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); //Max Volume 15
            audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);  //this will return current volume.
    
            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, sound, AudioManager.FLAG_PLAY_SOUND);   //here you can set custom volume.
        }
    

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 2023-04-11
      相关资源
      最近更新 更多