Подтвердить что ты не робот

Регулятор громкости в приложении android

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

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

4b9b3361

Ответ 1

Был еще один вопрос давным-давно, который спросил то же самое. По сути, ответ: не переопределяйте кнопки onKeyDown и onKeyUp. Гораздо лучше просто использовать эту одну строку setVolumeControlStream(AudioManager.STREAM_MUSIC); в вашем методе onCreate(). Это говорит операционной системе, что кнопки громкости должны влиять на громкость "носителя", когда ваше приложение видимо, и том, который он использует для вашего приложения.

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

Ответ 2

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

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);  

Ответ 3

Надеемся, что этот рабочий код 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());
                }
            });
        }
}

Ответ 4

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

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

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