Comment jouer sonnerie/alarme sonore dans Android
J'ai cherche partout comment jouer une sonnerie/alarme sonore dans Android.
J'appuie sur un bouton et je veux jouer une sonnerie/alarme sonore. Je ne pouvais pas trouver un moyen facile, simple échantillon. Oui, je l'ai déjà regardé Réveil code source... mais il n'est pas simple et je ne peut pas compiler.
Je ne peux pas faire ce travail:
Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(this, alert);
final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
player.setAudioStreamType(AudioManager.STREAM_ALARM);
player.setLooping(true);
player.prepare();
player.start();
}
J'obtiens cette erreur:
04-11 17:15:27.638: ERROR/MediaPlayerService(30): Couldn't open fd for
content://settings/system/ringtone
Donc.. s'il vous plaît si quelqu'un sait comment jouer une sonnerie par défaut/alarme laissez-moi savoir.
Je préfère ne pas télécharger n'importe quel fichier. Suffit de jouer une sonnerie par défaut.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez tout simplement jouer un sertie sonnerie avec ce:
Ringtone
, par exemple, comme une variable de classe. Ensuite, vous pouvez faire quelque chose commemyRingtone.stop()
plus tard.Si un utilisateur n'a jamais mis une alarme sur son téléphone, le TYPE_ALARM peut retourner la valeur null. Vous pouvez tenir compte de cette avec:
null
même si elle ne pointe pas vers un audio valide. Vous devez tester la valeur de retour deRingtoneManager.getRingtone()
pournull
au lieu de cela/que-bienC'est la façon dont je l'ai fait:
Il est semblable à markov00, mais utilise MediaPlayer au lieu de la Sonnerie qui empêche d'interrompre d'autres sons, comme la musique, qui pourrait déjà être en train de jouer dans l'arrière-plan.
Votre exemple est, fondamentalement, ce que je suis en utilisant. Il ne fonctionne jamais sur l'émulateur, cependant, parce que l'émulateur n'a pas toutes les sonneries par défaut, et
content://settings/system/ringtone
n'aboutit pas à quelque chose de jouable. Il fonctionne très bien sur mon téléphone.Cela fonctionne bien:
Vous pouvez pousser un fichier MP3 dans votre dossier sdcard en utilisant DDMS, redémarrez l'émulateur, puis ouvrez l'application Multimédia, accédez à votre fichier MP3, appuyez longuement dessus et sélectionnez "Utiliser comme sonnerie de téléphone".
Erreur est parti!
Edit: même problème avec les sons de notification (par exemple, pour les SMS) résolu à l'aide de Ringdroid application
Pour l'avenir googlers: utilisation
RingtoneManager.getActualDefaultRingtoneUri()
au lieu deRingtoneManager.getDefaultUri()
. Conformément à son nom, il serait de retour le réel uri, de sorte que vous pouvez l'utiliser librement. À partir de la documentation degetActualDefaultRingtoneUri()
:Pendant ce temps
getDefaultUri()
dit ceci:La copie d'un fichier audio de la carte sd de l'émulateur et en les sélectionnant via media player comme sonnerie par défaut, en effet, de résoudre le problème.
Vous pouvez utiliser cet exemple de code:
Voici un exemple de code:
mediaPlayer
au lieu demp
.