2011-07-21 4 views
2

こんにちは、私はアンドロイドの開発をしていて、ゲームに取り組んでいます。私は現在、ビデオビューであるオープニングカットを持っていますが、ユーザーが設定メニューからミュート音楽を選択した場合は、そのサウンドをミュートします。問題は、実際にビデオを完全にオフにすることなく、ビデオビューで音楽をミュートする方法がわからないことです。ビデオのサウンドを無効にする

答えて

1

ベストはできるだけAudioManagerを使用して、カットシーンの先頭で音楽ストリームをミュートし、終了したらミュートを解除します。VideoViewは独立したミュートコントロールを提供しません。

15

あなたはすべてのシステムをミュートするためAudioManagerは、常に良いオプションではありません...

あなたがMediaPlayer.OnPreparedListenerとMediaPlayer.OnCompletionListenerを呼び出す必要がありVideoViewのMediaPlayerのへのアクセスを取得したい場合は、 setVolume(0f、0f)を呼び出すことができます。

@Override 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video); 

    VideoView videoView = (VideoView)this.findViewById(R.id.VVSimpleVideo); 
    MediaController mc = new MediaController(this); 
    mc.setAnchorView(videoView); 
    mc.setMediaPlayer(videoView); 
    videoView.setMediaController(mc); 
    String _path = "/mnt/sdcard/Movies/video5.mp4"; 

    videoView.setVideoPath(_path); 
    videoView.setOnPreparedListener(PreparedListener); 

    videoView.requestFocus(); 

    //Dont start your video here 
    //videoView.start(); 


} 

MediaPlayer.OnPreparedListener PreparedListener = new MediaPlayer.OnPreparedListener(){ 

    @Override 
    public void onPrepared(MediaPlayer m) { 
     try { 
       if (m.isPlaying()) { 
        m.stop(); 
        m.release(); 
        m = new MediaPlayer(); 
       } 
       m.setVolume(0f, 0f); 
       m.setLooping(false); 
       m.start(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      }  
    } 
}; 
+0

これは、メディアコントローラ要求21と下部APIこれを使用したアプリの多くの低APIのための良い選択肢ではない:0

にボリュームを設定する機能は、これを行います。 – LamaTo

+0

@LamaTo - 「低API」と「リクエスト21」はどういう意味ですか? – Jaydev

+0

@Jaydev - APIレベル21はAndroid 5.0以降です。詳細については[こちら](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html)を参照してください – LamaTo

関連する問題