Autore Topic: Settare suono notifica da una listview tramite contextmenu  (Letto 731 volte)

Offline slash89mf

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S I9000
  • Play Store ID:
    slash89mf
  • Sistema operativo:
    Ubuntu 11.10
Settare suono notifica da una listview tramite contextmenu
« il: 04 Aprile 2012, 20:47:09 CEST »
0
Ciao ragazzi, ho questo problema: ho due array

Codice: [Seleziona]
String[] name ={ “Sound 1″, “Soundname 2″, “Chainsaw!”};
int[] sounds = {R.raw.sound1, R.raw.sound2, R.raw.chainsaw};

e una listview:

Codice: [Seleziona]
list.setOnItemClickListener(new OnItemClickListener() {

     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

         switch(position) {


            case 0: if(isplaying){audio.stop();} audio = MediaPlayer.create(context, R.raw.sound1); playSound();
                    break;

            case 1: if(isplaying){audio.stop();} audio = MediaPlayer.create(context, R.raw.sound2); playSound();
                    break;

            case 2: if(isplaying){audio.stop();} audio = MediaPlayer.create(context, R.raw.sound3); playSound();
                    break;

            case 3: if(isplaying){audio.stop();} audio = MediaPlayer.create(context, R.raw.sound4); playSound();
                    break;
                         }

           }

     });

e questa è la funzione che uso nel context menu per settare il suono come notifica:

Codice: [Seleziona]
public boolean saveas(int ressound){ 
 byte[] buffer=null; 
 InputStream fIn = getBaseContext().getResources().openRawResource(ressound); 
 int size=0; 

 try { 
  size = fIn.available(); 
  buffer = new byte[size]; 
  fIn.read(buffer); 
  fIn.close(); 
 } catch (IOException e) { 
  // TODO Auto-generated catch block 
  return false; 
 } 

 String path="/sdcard/media/audio/ringtones/"; 
 String filename="examplefile"+".ogg"; 

 boolean exists = (new File(path)).exists(); 
 if (!exists){new File(path).mkdirs();} 

 FileOutputStream save; 
 try { 
  save = new FileOutputStream(path+filename); 
  save.write(buffer); 
  save.flush(); 
  save.close(); 
 } catch (FileNotFoundException e) { 
     Toast.makeText(this, "File non trovato", Toast.LENGTH_SHORT).show(); 
  return false; 
 } catch (IOException e) { 
     Toast.makeText(this, "ERRORE", Toast.LENGTH_SHORT).show();
  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, "exampletitle"); 
 values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg"); 
 values.put(MediaStore.Audio.Media.ARTIST, "cssounds "); 
 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; 
}

Chiamando la funzione "saveas(R.raw.sound1)" su click del primo elemento nel contextmenu, mi viene mostrato sempre la notifica toast relativa a "FileNotFoundException e" che stampa FILE NON TROVATO. Riuscite a trovare una soluzione a questo problema? Ho inserito nel manifest questo permesso: <uses-permission android:name="android.permission.WRITE_SETTINGS" />

Offline MarkII

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    Ubuntu 11.10
Re:Settare suono notifica da una listview tramite contextmenu
« Risposta #1 il: 10 Aprile 2012, 10:31:08 CEST »
0
In "/sdcard/prova" ad esempio te la salva?

Offline slash89mf

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S I9000
  • Play Store ID:
    slash89mf
  • Sistema operativo:
    Ubuntu 11.10
Re:Settare suono notifica da una listview tramite contextmenu
« Risposta #2 il: 11 Aprile 2012, 11:37:42 CEST »
0
In "/sdcard/prova" ad esempio te la salva?

sono riuscito a far salvare il file nella cartella (ad esempio lo inserisco nella cartella /mnt/sdcard/Notifications/) però questo non viene settato come suoneria delle notifiche predefinita. Qualche suggerimento?

Offline MarkII

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    Ubuntu 11.10
Re:Settare suono notifica da una listview tramite contextmenu
« Risposta #3 il: 11 Aprile 2012, 12:32:08 CEST »
+1
Ti manca il settaggio vero e proprio del file come ringtone di default:

Codice: [Seleziona]
Uri newUri = this.getContentResolver().insert(MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()), values); 
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);

Offline slash89mf

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S I9000
  • Play Store ID:
    slash89mf
  • Sistema operativo:
    Ubuntu 11.10
Re:Settare suono notifica da una listview tramite contextmenu
« Risposta #4 il: 11 Aprile 2012, 14:34:13 CEST »
0
Ti manca il settaggio vero e proprio del file come ringtone di default:

Codice: [Seleziona]
Uri newUri = this.getContentResolver().insert(MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()), values); 
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);

Giusto, finalmente ho risolto il problema, grazie!

Offline MarkII

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    Ubuntu 11.10
Re:Settare suono notifica da una listview tramite contextmenu
« Risposta #5 il: 11 Aprile 2012, 14:36:23 CEST »
0
 ;-) niente, ricordati di mettere risolto affianco al titolo