Контроль громкости в приложении android

Я хотел бы знать, как управлять объемом моего приложения с клавиш тома (вопреки моему убеждению, я прочитал, что они контролируют только громкость звонка). Должен ли я перезаписать onKey Down / Up?

Или есть другой способ сделать это? Я спрашиваю, потому что, если я переписал верхнюю указанную функцию для действия, то функции получат событие только в том случае, если вид, связанный с этим действием, имеет фокус, и я ищу что-то «Глобал» (чтобы не работать Вопрос о том, какая деятельность выполняется сейчас)

Solutions Collecting From Web of "Контроль громкости в приложении android"

С давних пор был задан еще один вопрос, который задал одно и то же. По сути, ответ: не переопределяйте кнопки onKeyDown и onKeyUp. Гораздо лучше просто использовать эту одну строку setVolumeControlStream(AudioManager.STREAM_MUSIC); В вашем методе onCreate (). Это говорит ОС, что кнопки громкости должны влиять на громкость «носителя», когда ваше приложение видимо, и это том, который он использует для вашего приложения.

Что касается контроля объема мультимедиа независимо от того, какое приложение видно, я не уверен, что это можно сделать – или если бы это было возможно, то это было бы хорошо.

В своей деятельности вы можете использовать одно из следующих действий:

 this.setVolumeControlStream(AudioManager.STREAM_MUSIC); this.setVolumeControlStream(AudioManager.STREAM_RING); this.setVolumeControlStream(AudioManager.STREAM_ALARM); this.setVolumeControlStream(AudioManager.STREAM_NOTIFICATION); this.setVolumeControlStream(AudioManager.STREAM_SYSTEM); this.setVolumeControlStream(AudioManager.STREAM_VOICECALL); 

Надеемся, что этот рабочий код Android поможет вам разработать собственное приложение для управления томами:

 public class audioSetting extends Activity { Button b; TextView t; SeekBar s; EditText e; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b = (Button)findViewById(R.id.button1); s = (SeekBar)findViewById(R.id.seekBar1); e = (EditText)findViewById(R.id.editText1); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub finish(); } }); final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); int a = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING); int c = audioManager.getStreamVolume(AudioManager.STREAM_RING); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub audioManager.setStreamVolume(AudioManager.STREAM_RING, (int)(Integer.parseInt(e.getText().toString().trim())), 0); s.setProgress((int)(Integer.parseInt(e.getText().toString().trim()))); } }); s.setMax(a); s.setProgress(c); e.setText(""+c); s.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar arg0) { } @Override public void onStartTrackingTouch(SeekBar arg0) { } @Override public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { audioManager.setStreamVolume(AudioManager.STREAM_RING, arg1, 0); e.setText(""+s.getProgress()); } }); } } 

Это старый вопрос, но есть превосходная библиотека для управления громкостью в android (даже лучше, чем кнопки регулировки громкости, которые ограничены 5 приращениями уровня громкости).

http://code.google.com/p/media-volume-control

Взгляните на этот пакет , он обеспечивает непрерывный уровень громкости, а также другие приятные функции (например, когда звук прерывается, монитор громкости должен быть уведомлен, если / когда уровень громкости изменяется любыми средствами – ручная передача при отображении тома SeekBar , и т.д.).