2012-10-23 22 views
7

Così sui miei dispositivi 2.3, posso riprodurre un suono con SoundPool o MediaPlayer a tutto volume, anche se il volume del dispositivo è impostato su 0/muto. Ho capito che dovevi ottenere manualmente il livello del dispositivo e impostarlo quando riproduci un suono.Riproduzione dei suoni indipendentemente dal livello del volume del dispositivo

Questo è il modo in cui voglio che il comportamento funzioni.

Tuttavia, ora noto sul mio dispositivo 4.0, che i suoni vengono automaticamente riprodotti al livello impostato del dispositivo, che non voglio!

Questa è una differenza tra le versioni del sistema operativo? In tal caso, c'è un modo per ignorare il volume dei dispositivi? Quindi, anche se è disattivato, posso riprodurre un suono e farlo ascoltare?

Non posso entrare perché ho bisogno di questa funzione, ma lo faccio davvero.

Grazie!

+0

Mi sento come se dovessi davvero spiegare perché DEVI avere questa funzione. L'unica cosa che mi viene in mente è una sorta di app per localizzazione telefonica persa. – cost

+0

Non posso davvero. Ho firmato una NDA per questo progetto, ma è una caratteristica importante. Se non riesco a forzare un suono a ignorare i livelli di volume del sistema, ho alcune importanti riprogettazioni da fare. – romamnmlst

risposta

13

Avevo un bisogno simile di un'applicazione sveglia. Ecco il codice pertinente con commenti riguardanti il ​​volume.

Questo funziona su HTC Rezound Android versione 4.0.3 quando il profilo audio è impostato su Silenzioso, quando il volume dello streaming allarme viene impostato manualmente su zero e quando il volume della suoneria è impostato su zero.

+0

Grazie mille per questo ... perfetto! – romamnmlst

+0

thx mi hai risparmiato un sacco di tempo! – mhdjazmati

0

Un modo semplice e alternativo per riprodurre musica dalla cartella raw;

try { 
     String uri = "android.resource://" + getPackageName() + "/" + R.raw.beep; 
     //Strign uri = "http://bla-bla-bla.com/bla-bla.wav" 
     Uri notification = Uri.parse(uri); 
     Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); 
     r.play(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
Problemi correlati