2011-07-22 10 views
3

Je crée une application de réveil. Je liste toutes les sonneries disponibles (pas seulement les tonalités d'alarme standart). Lorsque l'utilisateur clique sur une note d'une liste, je la joue en utilisant un MediaPlayer. Pendant ce temps, j'aimerais aussi pouvoir régler le volume de l'alarme à l'aide des boutons de volume (sur le téléphone). Mais quand j'appuie sur ces boutons, j'ajuste le volume du support, pas le volume de l'alarme.réveil android régler le volume de l'alarme

Y a-t-il un moyen de contourner ce problème?

Voici le code que je utilise pour afficher les tons

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(); 
} 
+0

Gabriel, avez-vous déjà résolu cela? – pgsandstrom

+0

@Sandis pas vraiment :(. Je l'ai finalement laissé et ajouté une option pour configurer le volume d'alarme dans les paramètres.J'ai voulu pouvoir le faire si – Gabriel

Répondre

0

Utilisation:

setVolumeControlStream(AudioManager.STREAM_ALARM); 
+0

Merci pour votre aide.Cela fonctionne très bien jusqu'à ce que l'utilisateur commence à jouer Lorsque vous jouez la sonnerie, vous ne pouvez régler que le volume du média, y a-t-il un moyen de le résoudre? Je pense qu'il doit y avoir une façon de dire au MediaPlayer de jouer la musique comme "alarme", et pas comme "média". – Gabriel

0

Je pense que vous devriez également définir AudioStreamType pour un lecteur multimédia.

mp = new MediaPlayer(); 
mp.setAudioStreamType(AudioManager.STREAM_ALARM); 
Questions connexes