2013-03-27 6 views
29

私は、音量を上げて45秒間曲を再生してから停止するアンドロイド用のアプリを書いています。それは素晴らしいですが、私はボリュームを50%にまで上げることしかできません。setVolume()を使ってボリュームを100%にする方法はありますか?アンドロイドでプログラムでボリュームを最大にするにはどうすればいいですか?

これは私のコードです:

final MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1); 

//plays eye of the tiger for 45 seconds 
if (messages.contains("MUSIC ONLY")){ 

    //turn up the volume 
    mp.setVolume(20, 20); 
    mp.start(); 

    //play ring tone for 45 seconds 
    new Timer().schedule(new TimerTask() { 
     @Override 
     public void run() { 
      mp.stop(); 
     } 
    }, 45000); 
} 
+2

これはひどく不愉快です。私は、APIがあなたを50%のボリュームに制限する理由を知ることができます。 –

+0

いずれの場合でも:http://sagistech.blogspot.com/2010/07/setting-android-volume-programmatically.html、上記のあなたの質問にリンクされた複製。基本的に、MediaPlayerクラスではなく、AudioManagerクラスを使用したいとします。 –

+0

@RobertHarvey - この50%の制限が本当に正しいとすれば、私の推測は、聴覚保護のためです。これは、Androidの音量を上げるときに起こることです - それはあなたが50%に行こうとします、そしてあなたがあなたの聴力を損なう恐れがあるので、あなたがより高くなることを確信しているかどうか尋ねます。 **編集:** [ドキュメントから](http://developer.android.com/reference/android/media/MediaPlayer.html): 'このAPIは、アプリケーション内のオーディオストリームの出力のバランスをとるために推奨されています。 - システムボリュームが50%の場合、 'MediaPlayer.setVolume()'はそれを超えません。 – kamituel

答えて

58

あなたはAudioManagerを使用して、次のスニペットを使用することができます。

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

am.setStreamVolume(
    AudioManager.STREAM_MUSIC, 
    am.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 
    0); 

ですSTREAM_MUSICの最大レベル(getStreamMaxVolume())にボリュームを(設定例えば、演奏された歌)。他のタイプのサウンドについては、STREAM_RINGなどの異なる値を使用してください。

+0

私は以前にAudioManagerを使用しようとしましたが、何らかの理由でeclipseがgetSystemService(String)を気に入らない - 赤色で下線が引かれ、その名前でメソッドを作成するように求められます。私はAudioManagerをインポートしましたが、それ以外の方法でこの問題を解決する方法はわかりません。何か案は? – Sarah

+6

@Sarah - 実際には 'Context.getSystemService()'です。例えば、 'Activity'や' Service'のような 'Context'オブジェクトが必要です。どのクラスから呼び出すのですか? – kamituel

+1

ボリュームを真ん中に設定するにはどうすればいいですか? –

関連する問題