Autore Topic: Salvare una suoneria nella libreria e impostarla per un certo contatto  (Letto 912 volte)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
0
Sto cercando di inserire una suoneria che ho nella directory raw del progetto nella libreria di Android. Per questo ho trovato e riadattato questo metodo:

Codice (Java): [Seleziona]
        public Uri saveAudioResource ( int ressound, String name ) {
                byte[] buffer = null;
                InputStream fIn = context.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 Uri.EMPTY;
                }

                String path = "/sdcard/media/audio/ringtones/";
                String filename = name + ".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 ) {
                        // TODO Auto-generated catch block
                        return Uri.EMPTY;
                }
                catch ( IOException e ) {
                        // TODO Auto-generated catch block
                        return Uri.EMPTY;
                }

                context.sendBroadcast( new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse( "file://" + path + filename ) ) );

                File audioFile = new File( path, filename );

                //C'è già nella libreria?
                Uri u = MediaStore.Audio.Media.getContentUriForPath( audioFile.getAbsolutePath() );
                if(u != null && !u.equals( Uri.EMPTY )){
                        return u;
                }

                ContentValues values = new ContentValues();
                values.put( MediaStore.MediaColumns.DATA, audioFile.getAbsolutePath() );
                values.put( MediaStore.MediaColumns.TITLE, name );
                values.put( MediaStore.MediaColumns.MIME_TYPE, "audio/ogg" );
                values.put( MediaStore.Audio.Media.ARTIST, "skebby" );
                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 );

                // inseriamola nel db
                return context.getContentResolver().insert( MediaStore.Audio.Media.getContentUriForPath( audioFile.getAbsolutePath() ), values );

        }


Successivamente dovrei prendere l'uri ottenuto e impostarlo come custom ringtone per un certo contatto:
Codice (Java): [Seleziona]
        public void setCustomRingtone ( Context context, String name, Uri ringtoneUri ) {
                ContentValues cv = new ContentValues();
                cv.put( ContactsContract.Contacts.CUSTOM_RINGTONE, ringtoneUri.toString() );
                context.getContentResolver().update( ContactsContract.Contacts.CONTENT_URI, cv,
                                ContactsContract.Contacts.DISPLAY_NAME + " =?", new String[] { name } );

        }

Il codice viene eseguito senza errori ma se poi vado a vedere il contatto ha sempre la suoneria predefinita.

Qualche idea?

Offline francesco.laterza

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC One X
  • Sistema operativo:
    Windows 7 Professional
Re:Salvare una suoneria nella libreria e impostarla per un certo contatto
« Risposta #1 il: 22 Settembre 2013, 13:15:15 CEST »
0
Sto cercando di fare lo stesso tipo di cosa anche io.
Però non riesco a capire come importare un file audio nell'applicazione.
Tu sapresti indicarmi come fare?