Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Froyo configuración ringtone

Escribí un pedazo de código para agregar un tono de llamada de una URL en Android 2.1. En Froyo no quiere trabajar en absoluto.

sendBroadcast(new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri .fromFile(file))); ContentValues values = new ContentValues(); values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath()); values.put(MediaStore.MediaColumns.TITLE, filenameBase); values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); values.put(AudioColumns.IS_RINGTONE, true); values.put(AudioColumns.IS_NOTIFICATION, false); values.put(AudioColumns.IS_ALARM, false); values.put(AudioColumns.IS_MUSIC, false); Uri uri = MediaStore.Audio.Media.getContentUriForPath(file .getAbsolutePath()); Uri newUri = RingtoneModule.this.getContentResolver() .insert(uri, values); RingtoneManager.setActualDefaultRingtoneUri( RingtoneModule.this, RingtoneManager.TYPE_RINGTONE, newUri); 

Cuando consigo insertar consigo esta excepción:

 11-17 09:54:51.802: ERROR/DatabaseUtils(379): java.lang.IllegalStateException: Unknown URL: content://media/external/audio/albumart/-1 11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.query(MediaProvider.java:1666) 11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.getAlbumArtOutputUri(MediaProvider.java:2983) 11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.makeThumbInternal(MediaProvider.java:3192) 11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.getThumb(MediaProvider.java:3070) 11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:2029) 11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.insert(MediaProvider.java:1843) 11-17 09:54:51.802: ERROR/DatabaseUtils(379): at android.content.ContentProvider$Transport.insert(ContentProvider.java:180) 11-17 09:54:51.802: ERROR/DatabaseUtils(379): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:175) 11-17 09:54:51.802: ERROR/DatabaseUtils(379): at android.os.Binder.execTransact(Binder.java:288) 11-17 09:54:51.802: ERROR/DatabaseUtils(379): at dalvik.system.NativeStart.run(Native Method) 

Yo google mi ** de para este error, pero puede parecer para obtener cualquier información acerca de este error.I miró a la fuente android y el problema parece ser que cuando usted no tiene arte del álbum que genera una url "content: // media / External / audio / albumart / -1 "y el urlmatcher no coincide con ninguna de las urls especificadas y luego lanzaré este error.

 URI_MATCHER.addURI("media", "*/audio/albumart", AUDIO_ALBUMART); URI_MATCHER.addURI("media", "*/audio/albumart/#", AUDIO_ALBUMART_ID); 

¿Alguien tiene alguna idea de cómo puedo evitar eso?

  • ¿Por qué RingtoneManager.setActualDefaultRingtoneUri no podría funcionar?
  • Configuración de tono en Android
  • RingtoneManager que vuelve el tono null
  • ¿Cómo puedo cambiar el tono de llamada en android mediante programación?
  • La llamada entrante reemplaza dinámicamente el tono de llamada predeterminado
  • 2 Solutions collect form web for “Android Froyo configuración ringtone”

    Tuve este error en mi aplicación con un puñado de usuarios, finalmente lo arreglé.

    En mi aplicación le dije al escáner de medios de no escanear mis directorios poniendo un archivo en el directorio llamado .nomedia Creo que esto podría haber sido confuso el escáner de medios porque quería usar un archivo desde dentro del directorio.

    Por lo tanto, cuando se establece como tono de llamada / notificación / alarma activado, copié el sonido requerido en un directorio llamado / sdcardpath / ringtones / sdcardpath / notifications / sdcardpath / alarmas y luego usé el mismo código para establecer el archivo desde allí.

    Esta es la función de copia que hice

      public void ringtonemove(String ringtype){ String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath(); String outpath = sdcard + "/ringtones"; String path = sdcard + "/multi10/" + Global.currentboard + "/series10"; if (ringtype == "MultiboardRing") {outpath = sdcard + "/ringtones/";} if (ringtype == "MultiboardNotif") {outpath = sdcard + "/notifications/";} if (ringtype == "MultiboardAlarm") {outpath = sdcard + "/alarms/";} File in = new File(path, Global.currentsound); File out = new File(outpath, ringtype + ".ogg"); Global.k = outpath + ringtype + ".ogg"; File folderR = new File(Environment.getExternalStorageDirectory() + "/ringtones"); File folderN = new File(Environment.getExternalStorageDirectory() + "/notifications"); File folderA = new File(Environment.getExternalStorageDirectory() + "/alarms"); if (folderR.exists()); else {folderR.mkdir();} if (folderN.exists()); else {folderN.mkdir();} if (folderA.exists()); else {folderA.mkdir();} Log.d("Notice", "Copying sound file " + in); try { FileInputStream fis = new FileInputStream(in); int size = fis.available(); byte[] buffer = new byte[size]; fis.read(buffer); fis.close(); FileOutputStream fos = new FileOutputStream(out); fos.write(buffer); fos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

    Then I set as ringtone con este código:

      public void function1(int id){ Toast.makeText(this, "Set as ringtone" , Toast.LENGTH_SHORT).show(); String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath(); String path = sdcard + "/multi10/" + Global.currentboard + "/series10"; ringtonemove("MultiboardRing"); File k = new File(Global.k); ContentValues values = new ContentValues(); values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath()); values.put(MediaStore.MediaColumns.TITLE, "MultiboardRing"); values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mpeg"); values.put(MediaStore.Audio.Media.ARTIST, "Unknown artist"); values.put(MediaStore.Audio.Media.IS_RINGTONE, true); values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false); values.put(MediaStore.Audio.Media.IS_ALARM, false); values.put(MediaStore.Audio.Media.IS_MUSIC, false); Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()); getContentResolver().insert(uri,values); getContentResolver().delete(uri,MediaStore.MediaColumns.TITLE + "=\"" + "MultiboardRing" +"\"", null); Uri newUri = getContentResolver().insert(uri, values); RingtoneManager.setActualDefaultRingtoneUri( series10button.this, RingtoneManager.TYPE_RINGTONE, newUri); } 

    Espero que esto ayude a alguien, ya que me tomó años para trabajar este uno

    Usted debe revisar el uri , no es posible encontrar el archivo "-1". Tal vez si guardó el archivo antes de llamar al Intent , podría funcionar.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.