Skip to content
marloncarvalho edited this page Aug 8, 2012 · 2 revisions

Música e Sons

Tocar sons no Android é muito fácil. Não precisa de bibliotecas externas. Basta usar a biblioteca nativa e pronto. Pra falar a verdade, tocar sons é quase uma receita de bolo. :)

Onde encontrar o código?

Todo o código necessário para tocar sons está na classe Sound.java. Vamos ver alguns detalhes desta classe.

final public class Sound {

	public static void success() {
		play("success.mp3");
	}

	public static void fail() {
		play("fail.mp3");
	}

	public static void play(final String file) {
		final boolean isPlaySound = Beans.getBean(SharedPreferences.class).getBoolean(Constants.PREFS_PLAY_SOUND_KEY,
			true);
		if (!isPlaySound) {
			return;
		}

		final Context context = Beans.getBean(Context.class);
		try {
			AssetFileDescriptor afd = context.getAssets().openFd("mp3/" + file);
			MediaPlayer mediaPlayer = new MediaPlayer();
			mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

			mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
			mediaPlayer.prepare();
			mediaPlayer.start();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

O código mais importante está no método play(). É nele que obtemos o arquivo de som que queremos tocar. Lembre-se que nosso arquivo de som está na pasta /assets/mp3. Vamos passo a passo. Para conseguirmos acessar os arquivos que estão na pasta assets precisamos de um Context. É por este motivo que pegamos ele usando a classe Bean.java.

Depois, pegamos um AssetFileDescriptor que representa nosso arquivo de som. Em seguida, precisamos criar um MediaPlayer para tocar este som.