Chcę grać pliki dźwiękowe, gdy użytkownik kliknie na określony tekst. Mam listę plików dźwięku w mojej bazie danych , a pliki dźwiękowe są pobieranie pomyślnie w mojej aplikacji. Próbuję odtwarzać te pliki za pomocą MediaPlayer. Problem polega na tym, że nie można znaleźć URI wymaganego do odtworzenia {X1}} . W ten sposób w wyniku obiektu odtwarzacza null. Próbowałem prawie wszystkie rozwiązania wymienione w Internecie, ale nie rozwiązano mojego problemu. Ścieżka pliku dźwiękowego podczas pobierania z bazy danych jest

"/data/user/0/mipackage/files/sound/diabetes_ur_sound_1_1_1_1.0.0.0.0.mp3".

Zrzut ekranu jednego z metody, które użyłem, jest dołączony do wyjścia debugera.

Kod: kod

Wyjście debugera: Wyjście debugowania

-1
Kainat Altaf 19 luty 2018, 12:46

3 odpowiedzi

Najlepsza odpowiedź

Problem był w plikach dźwiękowych . Dlatego obiekt MediaPlayer wynika z NULL.

Teraz pobieram dźwięk za pomocą pomocy statycznych i za pomocą ścieżki plików w MediaPlayer. problem rozwiązany

0
Kainat Altaf 29 marzec 2018, 12:52

Możesz użyć Metoda setDataSource(Context context, Uri uri). Jeśli ścieżka jest poprawna, możesz przekazać go jako parametr.

Przykład:

try {
        mp.setDataSource(getApplicationContext(), myUri1);
} catch (IllegalArgumentException e) {
        Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
} catch (SecurityException e) {
        Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
} catch (IllegalStateException e) {
        Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
} catch (IOException e) {
        e.printStackTrace();
}

Spójrz na to Tutorial

Edytować

Przede wszystkim spróbuj, jeśli działa hardcoded, a następnie staraj się dynamicznie dostać ścieżkę.

Spróbuj tego ze swoją ścieżką

mp.setDataSrouce(MainActivity.this, Uri.parse("/data/user/0/mypackage/files/Sound/diabetes_ur_sound_1_1_1_1.0.0.0.mp3")); 
0
Skizo-ozᴉʞS 19 luty 2018, 10:39

Upewnij się, że twój plik ma miejsce

GetFilesdir (). GetPath () + "/ Dźwięk /"

Informator. Myślę, że w tym katalogu brakuje pliku. Jeśli twój plik ma w tym katalogu, powinien działać. MediaPlayer null Wyjątek wskaźnika może wystąpić, jeśli nie znaleziono pliku. Spróbuj sprawdzić swój plik przed utworzeniem {x2}}. Jeśli to nie działa Utwórz plik w innym katalogu

getExternalfilesdir (środowisko.directory_music)

0
Abu Yousuf 19 luty 2018, 17:40