2016-04-08 48 views
0

Son üç gün boyunca bu sorunu çözmek için çalışıyorum ve çalışamıyorum. uri kullanarak Android mediaplayer, uygulama çökmesine neden oluyor

  • Ses dosyası eklenen öğelerin bir listesini veritabanından
  • eklenir
  • Seçilmiş ses dosyası seçilir
  • seçmek için

    1. Dosya aç tarayıcı ve ses dosyası: Bunlar benim app adımlardır dosya
    2. ses dosyasını çalmak için bir oynatma düğmesine basıldığında, ses dosyasını oynatır, ancak uygulamayı kapatırsam tekrar açın ve aynı ses dosyasını çalmayı deneyin. takip ing hatası:

    ÖLÜMCÜL İSTİSNA: İçerik: //com.android.providers.media.documents/document/

     Process: com.arcitech.developer.ultimatesoundboard, PID: 22967 
        java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference 
         at com.arcitech.developer.ultimatesoundboard.activities.ItemDetailFragment$4.onClick(ItemDetailFragment.java:153) 
         at android.view.View.performClick(View.java:5156) 
         at android.view.View$PerformClick.run(View.java:20755) 
         at android.os.Handler.handleCallback(Handler.java:739) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:145) 
         at android.app.ActivityThread.main(ActivityThread.java:5835) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:372) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
    

    Ben veritabanına tasarruf am filepath (uri) ana ses% 3A15790

    ve ben kullanıyorum kod parçasının onCreateView bulunur: göre

    MediaPlayer m; 
    playSound.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) {     
         if (m != null) { 
          m.stop(); 
          m.release(); 
          m = null; 
         } 
         m = MediaPlayer.create(getActivity(), Uri.parse(mItem.filePath)); 
         m.start(); 
         m.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
    
         @Override 
         public void onCompletion(MediaPlayer m) { 
          countdownTimerHandler.removeCallbacks(countdownTimerRunnable); 
         } 
        }); 
        } 
    }); 
    
    +0

    MediaPlayer'ınız başlatılmamış. Şuna bakın: http://stackoverflow.com/questions/7882851/mediaplayer-create-always-returns-null –

    +0

    Teşekkürler ama bu benim sorunumun çözümü değil, bana gönderdiğiniz link bozuk bir dosyadan kaynaklanıyordu. kullanıyorum dosya bozuk değil. Medya oynatıcım başlatıldı. Aslında benim kodum, bana gönderdiğiniz bağlantıdan farklı değil! Ancak tavsiyeleriniz için teşekkürler ve çok çabuk geri dönün. – user2029541

    cevap

    0

    MediaPlayer.create() için doc, bu nedenle MediaPlayer oluşturulamıyorsa null döndürür. Sıfırdan geri dönmeyeceğinden çok emin olmadıkça, null için dönüş değerini kontrol etmelisiniz (ancak daha sonra güvenlik için yapın).

    Ayrıca, Android'in oluşturma işleminin neden başarısız olduğuna dair herhangi bir ipucu bırakıp açmadığını görmek için, create() öğesinin çağrıldığı andaki günlüğü de kontrol etmek isteyebilirsiniz.