Bonjour,
J'ai développé une soundboard; avec la fonctionnalité traditionnelle sur un clic long: "Save as ... Ringtone, Notification, Alarm..."

Voici la fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public boolean saveAs(int toCopy, String name, String path){
	   byte[] buffer = null;
	   InputStream fIn = getBaseContext().getResources().openRawResource(toCopy);
	   int size = 0;
 
	   try {
		   size = fIn.available();
		   buffer = new byte[size];
		   fIn.read(buffer);
		   fIn.close();
	   } catch (IOException e) {
		   // Auto-generated catch block
		   return false;
	   }
 
	   String filename = name + ".mid";
	   if (!(new File(path)).exists()){
		   new File(path).mkdirs();
	   }
 
	   FileOutputStream save;
	   try {
		   save = new FileOutputStream(path+filename);
		   save.write(buffer);
		   save.flush();
		   save.close();
	   } catch (FileNotFoundException e) {
		   // Auto-generated catch block
		   return false;
	   } catch (IOException e) {
		   // Auto-generated catch block
		   return false;
	   }    
 
	   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());
	   values.put(MediaStore.MediaColumns.TITLE, name);
	   values.put(MediaStore.Audio.Media.ARTIST, "http://midizer.online.fr");  
	   values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/midi");
	   values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
	   values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
	   values.put(MediaStore.Audio.Media.IS_ALARM, true);
	   values.put(MediaStore.Audio.Media.IS_MUSIC, false);
 
	   //Insert it into the database
	   this.getContentResolver().insert(MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()), values);
 
	   return true;
    }
Voici un exemple d'appel pour la définir en notification:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
saveAs(raw, "myTitle", "/sdcard/media/audio/notifications/");
Le fichier se copie bien sur la sdcard, et donc la sonnerie apparaît bien dans la liste des notifications disponibles.

MAIS cette sonnerie ne se met pas par défaut comme sonnerie pour notification (elle n'est pas cochée). Et donc j'aimerai savoir comment faire pour cela?