Riproduce audio notifica per URI

Ho URI del suono di notifica, come il content://media/internal/audio/media/122 , ma SoundPool non funziona con gli URI, funziona solo con risorse apk di routes di file.

C'è un modo per get il path del file multimediale da URI? Ho provato Uri.getPath() , che restituisce /internal/audio/media/122 , ma questo non è un path di file valido e naturalmente SoundPool non funziona con tale patch.

  • Come posso condividere un'image con la mia applicazione Cordova / PhoneGap da un'altra applicazione?
  • sovrascrivendo la chiave Home Key in un'attività di categoria
  • Uso del loadDataWithBaseURL di webView non caricando le immagini da sdcard
  • Perché la densità Nexus 6 è di 560 dpi?
  • Come posso evitare i ritardi nella raccolta dei rifiuti nei giochi Java? (Best Practices)
  • Perché non posso impostare il text su un Android TextView?
  • In realtà il path reale alla notifica è /system/media/audio/notifications/allegro.ogg , e non vedo alcun modo per ottenerlo da URI come content://media/internal/audio/media/122

    Oppure dovrei utilizzare MediaPlayer per questo? Ho provato, funziona:

      MediaPlayer mp = MediaPlayer.create(this, "content://media/internal/audio/media/122"); mp.start(); 

    Sono confuso perché MediaPlayer sembra troppo pesante per svolgere solo un breve suono di notifica, quindi preferirei utilizzare SoundPool .

    Per favore, dimmi se sbaglio circa il peso di MediaPlayer e suggerire il modo corretto per riprodurre il suono di notifica tramite il suo URI.

    2 Solutions collect form web for “Riproduce audio notifica per URI”

    Beh, ho il modo più semplice per riprodurre l'audio da URI:

     RingtoneManager.getRingtone(this, Uri.parse("content://media/internal/audio/media/122")).play(); 

    Penso che questo sia il migliore di quello che potrei raggiungere.

    Provare a get un path completo:

     String path = Environment.getRootDirectory().getAbsolutePath(); //Will return "/system" path = path + Uri.getPath().subString(9); //To cut "content:/" from the Uri path. //Then pass this "path" to your SoundPool 

    Hai ragione. A differenza di MediaPlayer che viene utilizzato per musica e video, SoundPool è destinato ad essere utilizzato per risorse audio breve app come le notifiche. È molto più veloce e più leggero di MediaPlayer.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.