Регулятор громкости в приложении для Android - PullRequest
39 голосов
/ 29 марта 2010

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

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

Ответы [ 4 ]

73 голосов
/ 29 марта 2010

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

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

11 голосов
/ 06 июня 2012

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

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);  
1 голос
/ 28 мая 2015

Надеюсь, этот работающий код 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());
                }
            });
        }
}
0 голосов
/ 10 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...