Java – How to play an audio file in Android


I have code to play an .ogg audio file, that I downloaded from the internet. I have no errors, so I can run it, but then the app crashes:


import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;

public class PlaySound2Activity extends Activity {
private SoundPool soundPool;
private int soundID;
boolean loaded = false;

/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
    View view = findViewById(;
    view.setOnClickListener((OnClickListener) this);
    // Set the hardware buttons to control the music
    // Load the sound
    soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
        public void onLoadComplete(SoundPool soundPool, int sampleId,
                int status) {
            loaded = true;
    soundID = soundPool.load("sound1.ogg", 1);


public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        // Getting the user sound settings
        AudioManager audioManager = (AudioManager) getSystemService    (AUDIO_SERVICE);
        float actualVolume = (float) audioManager
        float maxVolume = (float) audioManager
        float volume = actualVolume / maxVolume;
        // Is the sound loaded already?
        if (loaded) {
  , volume, volume, 1, 0, 1f);
            Log.e("Test", "Played sound");
    return false;

I think I have two problems:

  1. I put this in the main.xml file:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android=""
    android:orientation="vertical" android:layout_width="fill_parent"
    <TextView android:text="Click on the screen to start playing"
        android:id="@+id/textView1" android:layout_width="fill_parent"

    And I don't know if it's correct.

  2. I put the file sound1.ogg in the workspace->SoundPlay2 folder because in the res folder I had problems, and also, I tried to put it in the two res folders that exist.

This is from my console:

[2012-01-04 19:38:16 - PlaySound2] Failed to install PlaySound2.apk on device 'emulator-5554': timeout
[2012-01-04 19:38:16 - PlaySound2] Launch canceled!
[2012-01-04 19:47:33 - PlaySound2] Error in an XML file: aborting build.
[2012-01-04 19:52:34 - PlaySound2] res\layout\main.xml:0: error: Resource entry main is already defined.
[2012-01-04 19:52:34 - PlaySound2] res\layout\main.out.xml:0: Originally defined here.
[2012-01-04 19:52:34 - PlaySound2] C:\Users\Natalia\workspace\PlaySound2\res\layout\main.out.xml:1: error: Error parsing XML: no element found

I took this example from "Android Sounds – Tutorial".
I want to play an audio file, more specifically, a .wav file.

I dont' know where I can find some information about the files that are permitted in the MediaPlayer class and their characteristic (durantion, sample rate…) Could you tell me where I can find this??

Best Solution

Create raw folder in the res folder and add your file to it. Then play the file using

soundID = soundPool.load(R.raw.sound1, 1);

And also see this post for your main.xml problem.