будильник Android отрегулируйте громкость будильника - PullRequest
3 голосов
/ 22 июля 2011

Я создаю приложение Будильник.Я перечисляю все доступные мелодии звонка (не только стандартные сигналы будильника).Когда пользователь щелкает тональный сигнал в списке, я играю его с помощью MediaPlayer.Во время этого я также хотел бы иметь возможность регулировать громкость будильника с помощью кнопок громкости (на телефоне).Но когда я нажимаю эти кнопки, я настраиваю громкость носителя, а не громкость будильника.

Есть ли способ обойти это?

Вот код, который я использую для отображения тонов

private void chooseTone(final ArrayList<String> tones, final ArrayList<String> paths) {
    //final String lastRingtone = tuneName.getText().toString();
    //int i = tones.indexOf(lastRingtone);
    int i ;
    try {
        i = paths.indexOf(crt.tune);
    } catch (NullPointerException ex) {
        i = -1;
    }
    final AlertDialog alert = new AlertDialog.Builder(this).setTitle("Ringtone").
            setSingleChoiceItems(tones.toArray(new String[]{}), i, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialogInterface, int index) {
                    String currentPath = paths.get(index);
                    try {
                        if (mp != null)
                            mp.stop();
                        mp = new MediaPlayer();
                        mp.setDataSource(currentPath);
                        mp.prepare();
                        mp.seekTo(0);
                        mp.start();
                    } catch (Exception ex) {
                    }
                    selectedRingtoneIndex = index;
                }
            }).create();

    alert.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialogInterface, int i) {
                    tuneName.setText(tones.get(selectedRingtoneIndex));
                    //uri = Uri.parse(paths.get(selectedRingtoneIndex));
                    crt.tune = paths.get(selectedRingtoneIndex);
                    try {
                        mp.stop();
                    } catch (Exception ex) {}
                }
            });
    alert.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialogInterface, int i) {
                    try {
                        mp.stop();
                    } catch (Exception ex) {}
                }
            });
    alert.show();
}

Ответы [ 2 ]

0 голосов
/ 30 ноября 2011

Я думаю, вам также следует установить AudioStreamType для медиаплеера.

mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
0 голосов
/ 22 июля 2011

Использование:

setVolumeControlStream(AudioManager.STREAM_ALARM);
...