Forums GAMERGEN

[TUTO] Définir un son comme sonnerie/notification

[TUTO] Définir un son comme sonnerie/notification

Message non lupar Viish » 03 Aoû 2010, 00:37

Voici mon premier tuto pour la communauté GEN : Comment, depuis son application, permettre à un utilisateur d'utiliser un son comme sonnerie/notification.

Let's go !

Première étape : ouvrir la ressource son
Code: Select All Code
// Definition des variables représentant le son dans l'environnement Android
String soundName = "sonTutoriel.mp3";
String soundFolder = "raw";
String appPackage = "com.androidgen.tutosons";

// Ouvrir le son précédemment défini
int soundID = getResources().getIdentifier(soundName, soundFolder, appPackage);
InputStream fIn = getBaseContext().getResources().openRawResource(soundID);
int size=0; 
byte[] buffer=null;
      
try

   size = fIn.available(); 
   buffer = new byte[size]; 
   fIn.read(buffer); 
   fIn.close(); 
}
catch (IOException e)

   Log.i("Erreur", e.toString());



Deuxième étape si la première s'est bien déroulée : le copier sur la carte SD de l'utilisateur
Code: Select All Code
String path="/sdcard/media/audio/ringtones/";  // Le chemin complet où le son sera copié, ici dans le dossier media de la carte SD
String filename = soundName; // Je décide de l'enregister sous le même nom, mais libre à vous de le changer
       
boolean exists = (new File(path)).exists();  // On verifie si le dossier où on va placer le son existe déjà
if (!exists){new File(path).mkdirs();}  // Sinon on le crée
       
// Sauvegarde du son
FileOutputStream save; 
try

   save = new FileOutputStream(path+filename); 
   save.write(buffer); 
   save.flush(); 
   save.close(); 
}
// En cas d'erreur, on crée un log avec l'erreur pour l'analyser
catch (FileNotFoundException e)

        Log.i("Erreur", e.toString());
}
catch (IOException e)

   Log.i("Erreur", e.toString()); 
}     


Troisième étape : le définir comme sonnerie/notification
Code: Select All Code
// NE PAS MODIFIER
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+path+filename)));       
File k = new File(path, filename);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());

// PEUT ETRE MODIFIE
// Parametrès du son, à ajuster selon vos envies
values.put(MediaStore.MediaColumns.TITLE, name);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); // Modifier ici si votre son n'est pas un mp3
values.put(MediaStore.Audio.Media.ARTIST, name);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true); // Si le son peut être utiliser comme sonnerie laisser true, sinon mettre false
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true); // Si le son peut être utiliser comme notification laisser true, sinon mettre false
values.put(MediaStore.Audio.Media.IS_ALARM, true); // Si le son peut être utiliser comme alarme laisser true, sinon mettre false
values.put(MediaStore.Audio.Media.IS_MUSIC, false); // Si le sonest une musique mettre true, sinon laisser false

// NE PAS MODIFIER
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
Uri newUri = getContentResolver().insert(uri, values);

// CHOISIR
// Si vous voulez définir le son comme son de notification :
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);
// Sinon, si vous voulez le définir comme sonnerie :
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);



J'espère que vous aurez apprécié ce tuto, si vous avez des commentaires ou des problèmes avec, je reste à votre disposition.
Mes tutos Android (en Français) : http://www.thinkdroid.eu
Viish Gamer du Dimanche
Gamer du Dimanche
Messages: 21
Inscription: 03 Aoû 2010, 00:05
Localisation: Grenoble
Prénom: Sylvain
Pays: France
Sexe: Homme

 

Retourner vers Vos tutos et astuces Android