poniedziałek, 17 lutego 2014

Odtwarzanie dźwięku


Kod źródłowy do tej lekcji znajduje się tutaj. Rozpakuj go i zaimportuj. W katalogu z kodem źródłowym znajdą się podkatalogi oznaczone numerami. Są to po prostu kolejne wersje kodu, tworzonego w ramach przykładów. Możesz analizować kolejne kroki tworzenia aplikacji, lub od razu zabrać się za kod z katalogu o najwyższym numerku.



Zaczniemy od najprostszego przykładu. Program zaraz po uruchomieniu odtworzy plik MP3 który będzie znajdował się w ramach samego programu.

Zaczynamy od stworzenia projektu, oraz utworzenia podkatalogu o nazwie „raw” w katalogu „res” projektu. Następnie do podkatalogu raw wrzucamy utwór muzyczny w którymś z formatów: wav, aac, mp3, wma, amr, ogg, midi



Wszystko co wrzucimy do podkatalogu res, jest automagicznie rejestrowane jako zasób dostępny z poziomu kodu.
Teraz już tylko mały szlif kodu głównej aktywności:



Kluczowe są tutaj linie 19-21. Żartowałem :) Interesują nas linie 16 i 17. W linii 16 tworzymy obiekt klasy MediaPlayer która jako taka służy do odtwarzania multimediów. Podczas tworzenia przekazujemy jako argumenty metody create : kontekts i zasób. Jak widać nie podajemy rozszerzenia pliku.
Linia 17 to uruchomienie odtwarzania zasobu któy wskazaliśmy w linii 16.
W sytuacji gdyby plik muzyczny który chcemy odtwarzać znajdował się poza aplikacją, np. na karcie SD nasz kod wyglądać by musiał tak:

MediaPlayer mp = new MediaPlayer();
mp.setDataSource(”/sdcard/rammstein/raise_raise.mp3”);
mp.prepare();
mp.start();

5 komentarzy:

  1. Czy tak odtworzony plik będzie otwierał się w domyślnym odtwarzaczu, czy program po prostu zagra dźwięk?

    OdpowiedzUsuń
  2. gra nawet jak się wyjdzie z programu

    OdpowiedzUsuń
  3. W końcu mogę normalnie słuchać muzyki.

    OdpowiedzUsuń
  4. A jak odtwarzać sygnały DTMF z głośnika telefonu? Mogę oczywiście odtwarzać wcześniej przygotowane pliki (w Audacity, otwartym programie do obróbki dźwięku, jest opcja generowania DTMF), ale może dałoby się to zrobić w bardziej optymalny sposób?

    OdpowiedzUsuń