Reproduzir som

Pessoal

Gostaria de saber como faço para reproduzir um arquivo de som mp3 quando clico em um botao

eu estou usando assim

MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.som); mediaPlayer.start();

Mais esta dando problema tem hora que nao consegue achar o arquivo,
Gostaria de saber se é possivel executar do assent:

file:///android_asset/som.mp3

Oi,

Fazer desta forma é simples, porém não é recomendado. Até porque a sua playlist (musicas que ficam na pasta res/raw) será compilada junto com a sua aplicação, e consequentemente, aumentará o tamanho do arquivo apk final que será utilizado.

O recomendado seria salvar os arquivos de músicas e vídeos em outra pasta ou até mesmo usar o cartão de memória. Ficando:

MediaPlayer player = new MediaPlayer(); player.setDataSource("data/local/tmp/musica.mp3"); player.prepare(); player.start();

Observe que o método prepare() precisa obrigatoriamente ser chamado. No seu código não foi chamado explicitamente, porém dentro do método create() a chamada é feita internamente.

Tchauzin!

Nao consegui fazer da forma que voce colocou como faço pra colocar usando a pasta assents ???

entao deixei na pasta res/raw e tentei fazer porem ele executa umas 3 vezes na quarta da pau como se nao achasse a musica

[code]public class FalaPlacarClickListner implements OnClickListener {
public void onClick(View v) {

		// FalaPlacar falaplacar = new FalaPlacar();
		// falaplacar.run(Principal.this, mediaNos, mediaEles,
		// mediaPontosNos,
		// mediaPontosEles);

		mediaNos.start();
		Parada(1000);
		if (PontosNos == 0) {
			mediaNos0.start();
			Parada(1000);
			mediaNos.reset();
			mediaNos = MediaPlayer.create(Principal.this, R.raw.nos);
		}
		if (PontosNos == 1) {
			mediaNos1.start();
			Parada(1000);
			mediaNos1.reset();
			mediaNos1 = MediaPlayer.create(Principal.this, R.raw.a1);
		}
		if (PontosNos == 2) {
			mediaNos2.start();
			Parada(1000);
			mediaNos2.reset();
			mediaNos2 = MediaPlayer.create(Principal.this, R.raw.a2);
		}
		Parada(1000);

		mediaEles.start();
		Parada(1000);
		if (PontosEles == 0) {
			mediaEles0.start();
			Parada(1000);
			mediaEles0.reset();
			mediaEles0 = MediaPlayer.create(Principal.this, R.raw.a0);
		}
		if (PontosEles == 1) {
			mediaEles1.start();
			Parada(1000);
			mediaEles1.reset();
			mediaEles1 = MediaPlayer.create(Principal.this, R.raw.a1);
		}
		if (PontosEles == 2) {
			mediaEles2.start();
			Parada(1000);
			mediaEles2.reset();
			mediaEles2 = MediaPlayer.create(Principal.this, R.raw.a2);
		}
		Parada(1000);

		mediaNos.reset();
		mediaNos = MediaPlayer.create(Principal.this, R.raw.nos);
		mediaEles.reset();
		mediaEles = MediaPlayer.create(Principal.this, R.raw.eles);

	}
}

[/code]

Esse Parada so chama um Sleep pra dat um tempinho
Ja fiz de td mais nao consigo

Oi,

Você está rodando direto pelo Eclipse? Celular ou Emulador?

Alguma exceção está ocorrendo. Se estiver rodando a aplicação direto do celular, sugiro instalar o Logcat para capturar a exceção do seu programa.

Tchauzin!

Entao eu to usando o Eclipse e com o Celular segue o LogCat

09-20 23:10:35.219: D/AndroidRuntime(13986): Shutting down VM 09-20 23:10:35.219: W/dalvikvm(13986): threadid=1: thread exiting with uncaught exception (group=0x40018578) 09-20 23:10:35.219: E/AndroidRuntime(13986): FATAL EXCEPTION: main 09-20 23:10:35.219: E/AndroidRuntime(13986): java.lang.NullPointerException 09-20 23:10:35.219: E/AndroidRuntime(13986): at br.com.drgoes.Principal$FalaPlacarClickListner.onClick(Principal.java:214) 09-20 23:10:35.219: E/AndroidRuntime(13986): at android.view.View.performClick(View.java:2485) 09-20 23:10:35.219: E/AndroidRuntime(13986): at android.view.View$PerformClick.run(View.java:9080) 09-20 23:10:35.219: E/AndroidRuntime(13986): at android.os.Handler.handleCallback(Handler.java:587) 09-20 23:10:35.219: E/AndroidRuntime(13986): at android.os.Handler.dispatchMessage(Handler.java:92) 09-20 23:10:35.219: E/AndroidRuntime(13986): at android.os.Looper.loop(Looper.java:130) 09-20 23:10:35.219: E/AndroidRuntime(13986): at android.app.ActivityThread.main(ActivityThread.java:3687) 09-20 23:10:35.219: E/AndroidRuntime(13986): at java.lang.reflect.Method.invokeNative(Native Method) 09-20 23:10:35.219: E/AndroidRuntime(13986): at java.lang.reflect.Method.invoke(Method.java:507) 09-20 23:10:35.219: E/AndroidRuntime(13986): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 09-20 23:10:35.219: E/AndroidRuntime(13986): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 09-20 23:10:35.219: E/AndroidRuntime(13986): at dalvik.system.NativeStart.main(Native Method)

Oi,

Está aqui o seu problema: Principal.java:214

Tchauzin!

Desculpe, nao entendia

O erro realmente é quando eu clico no botão e no botão tem o codigo acima

MAis aonde esta o erro no codigo ???

[quote=danielrgoes]Desculpe, nao entendia

O erro realmente é quando eu clico no botão e no botão tem o codigo acima

MAis aonde esta o erro no codigo ???[/quote]

Oi,

Entre no seu código, e me passe a linha 214 do arquivo Principal.java

Tchauzin!

if (PontosEles == 2) { try { mediaEles2.prepare(); } catch (Exception e) { e.printStackTrace(); } mediaEles2.start(); Parada(1000); } Parada(1000);

A linha 214 eh essa

mediaEles2.start();

[quote=danielrgoes] if (PontosEles == 2) { try { mediaEles2.prepare(); } catch (Exception e) { e.printStackTrace(); } mediaEles2.start(); Parada(1000); } Parada(1000);

A linha 214 eh essa

mediaEles2.start();[/quote]

Oi,

A variável mediaEles2 ainda não foi instanciada. Nesse momento a variável está com o valor null (ocorrendo o famoso NullPointerException)

Tchauzin!

Oiii

Entaoo esta sim eu coloquei no OnCreate

Igual eu coloquei os outros …

Mais tem hora que recebe null

Como eu falei das 3 primeiras vezes funcionada depois da pau

Fala cara Joia.

Ve se ajuda

http://devmobilebrasil.com.br/android/player-no-android/attachment/android-amazon-lg-3/

http://devmobilebrasil.com.br/android/grid-view-no-android/

Cara veja bem se eu entendi

O exemplo que vc passou eh assim

[code]@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

g = (GridView) findViewById(R.id.gridView);

m = MediaPlayer.create(this, R.raw.musica); < ----- Aqui eu coloco a musica (no caso Hino do Brasil)

try {
m.prepare();
} catch (Exception e) {
}

g.setAdapter(new ImageAdapter(this, bandeiraPaises,
new GridView.LayoutParams(60, 60)));

// evento de click
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {

switch (position) {

case 0:
// Hino nacional
Toast.makeText(ClassePrincipal.this,
"Tocando o Hino nacional: ", Toast.LENGTH_LONG)
.show();
m.start(); <---- Aqui eu coloco pra tocar
break;
case 1:

Toast.makeText(ClassePrincipal.this,
"Uruguai Posicção : " + position, Toast.LENGTH_LONG)
.show();
<-----------------------------------Mais se eu der um m.start() aqui vai tocar o hino do brasil eu teria que colocar no onCreate o Hino do Uruguai é aki que da pau no meu codigo tem hora que nao consegue achar a musica o atributi m fica como null
break;[/code]

Coloquei os comentarios no codigo