Multimedia Do odtwarzania dźwięku najwygodniej użyć klasy MediaPlayer. Można jej użyć także do odtwarzania wideo, ale wygodniej użyć VideoView. Do rejestracji dźwięku - MediaRecorder. My ograniczymy się do odtworzenia dźwięku z pliku mp3 dostępnego na karcie pamięci SD lub dołączonego do zasobów aplikacji (katalog res/raw). Można kontynuować rozwój projektu Grafika2D 0. Do projektu dodajemy _niewielki_ plik mp3. Należy utworzyć podkatalog res/raw. Nie działa przeciąganie. Trzeba na dysku skopiować do niego plik mp3 lub wav. Plik nie może mieć spacje i dużych liter. Inaczej nie powstanie identyfikator w klasie R. Ja użyłem pliku tada.wav (z Windows) i frasier.mp3 (małe litery są ważne!!!). W Android Studio pojawią się z małym opóźnieniem. 1. W klasie aktywności deklarujemy pole: public class MainActivity extends Activity { MediaPlayer mp = null; 2. W metodzie onCreate: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_grafika2_d); final View widok = new Grafika2DView(getApplicationContext(), null); setContentView(widok); try { if(mp!=null && mp.isPlaying()) { mp.stop(); mp.reset(); } else if(mp!=null) { mp.reset(); mp.release(); } /* //z systemu plikow Uri uri = Uri.parse("file:///sdcard/MP3/Crazy Mary.mp3"); mp=new MediaPlayer(); mp.setDataSource(getApplicationContext(),uri); //mp=MediaPlayer.create(getApplicationContext(), uri); */ //z zasobow //mp=MediaPlayer.create(getApplicationContext(), R.raw.tada); mp=MediaPlayer.create(getApplicationContext(), R.raw.frasier); //mp.prepare(); mp.setOnCompletionListener( new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { Toast.makeText(getApplicationContext(), "Odtwarzanie utworu zostało zakończone", Toast.LENGTH_LONG).show(); } }); mp.start(); //asynchroniczne } catch(Exception exc) { Toast.makeText(getApplicationContext(), "Odtworzenie utworu nie powiodło się\n"+exc.getMessage(), Toast.LENGTH_LONG).show(); } } 3. Metody wstrzymujące i wzanawiające odtwarzanie: @Override protected void onPause() { mp.pause(); super.onPause(); } @Override protected void onResume() { mp.start(); super.onResume(); } @Override protected void onDestroy() { mp.stop(); super.onDestroy(); } Nieużywane metody związane z zapętlaniem MediaPlayer.setLooping(true|false).