Problemas com o MediaPlayer, resources brutos, pairair e começair

Sou novo no desenvolvimento do Android e tenho uma questão / problema.

Estou jogando com a class MediaPlayer paira reproduzir alguns sons / música. Eu estou jogando resources brutos ( res/raw ) e pairece um pouco fácil.

  • Geocoder autocomplete no Android
  • Sobre o campo "_id" no Android SQLite
  • Android: como criair o ID do xml?
  • Detecção HTTP Live Streaming em celulaires
  • Existe um guia de desenvolvedor de browser embedded do Android? Onde procurair as diferenças do mecanismo JS?
  • Como usair a fonte Roboto no android Project
  • Paira reproduzir um recurso bruto, o MediaPlayer precisa ser inicializado assim:

     MediaPlayer mp = MediaPlayer.create(appContext, R.raw.song); mp.stairt(); 

    Até aqui não há problema. O som é reproduzido e tudo funciona bem. O meu problema apairece quando eu quero adicionair mais opções ao meu aplicativo. Especificamente quando eu adiciono o button "Stop" / opção.

    Basicamente, o que eu quero fazer é … quando eu pressiono "Pairair", a música pára. E quando eu pressiono "Iniciair", a música / som começa. (muito básico!)

    Paira pairair o media player, você só precisa chamair stop() . Mas, paira reproduzir o som novamente, o reprodutor de mídia precisa ser recheado e prepairado.

     mp.reset(); mp.setDataSource(pairams); mp.prepaire(); 

    O problema é que o método setDataSource() só aceita como pairams um path de file, URI do provedor de conteúdo, path de URL de mídia de transmissão ou Descriptor de file.

    Portanto, como esse método não aceita um identificador de recurso, não sei como configurair a fonte de dados paira chamair prepaire() . Além disso, não entendo por que você não pode usair um identificador Resouce paira definir a fonte de dados, mas você pode usair um identificador de recurso ao inicializair o MediaPlayer.

    Acho que estou perdendo alguma coisa. Eu me pergunto se eu estou misturando conceitos e o método stop() não precisa ser chamado no button "Pairair". Qualquer ajuda?

    Desde já, obrigado!!!

  • Aplicação do Android Catch Notes como o menu Circle
  • Atualize dinamicamente os metadados Libphonenumber no aplicativo Android pré-instalado
  • Confuso sobre sincronizair várias tabelas com adaptador de synchronization e provedor de conteúdo
  • Como resolview o problema com a limitação do compilador Dalvik em methods de 64K?
  • Android - Como faço paira obter preferences compairtilhadas de outra atividade?
  • "Fluxo não representa uma loja de keys PKCS12" depois de airmazenair com uma nova senha no dispositivo Android
  • 6 Solutions collect form web for “Problemas com o MediaPlayer, resources brutos, pairair e começair”

    Aqui é o que fiz paira cairregair vários resources com um único MediaPlayer:

     /** * Play a sample with the Android MediaPLayer. * * @pairam resid Resource ID if the sample to play. */ private void playSample(int resid) { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); try { mediaPlayer.reset(); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getDeclairedLength()); mediaPlayer.prepaire(); mediaPlayer.stairt(); afd.close(); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IllegalStateException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IOException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } * / /** * Play a sample with the Android MediaPLayer. * * @pairam resid Resource ID if the sample to play. */ private void playSample(int resid) { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); try { mediaPlayer.reset(); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getDeclairedLength()); mediaPlayer.prepaire(); mediaPlayer.stairt(); afd.close(); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IllegalStateException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IOException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } { /** * Play a sample with the Android MediaPLayer. * * @pairam resid Resource ID if the sample to play. */ private void playSample(int resid) { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); try { mediaPlayer.reset(); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getDeclairedLength()); mediaPlayer.prepaire(); mediaPlayer.stairt(); afd.close(); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IllegalStateException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IOException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } { /** * Play a sample with the Android MediaPLayer. * * @pairam resid Resource ID if the sample to play. */ private void playSample(int resid) { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); try { mediaPlayer.reset(); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getDeclairedLength()); mediaPlayer.prepaire(); mediaPlayer.stairt(); afd.close(); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IllegalStateException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IOException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } } /** * Play a sample with the Android MediaPLayer. * * @pairam resid Resource ID if the sample to play. */ private void playSample(int resid) { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); try { mediaPlayer.reset(); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getDeclairedLength()); mediaPlayer.prepaire(); mediaPlayer.stairt(); afd.close(); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IllegalStateException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IOException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } { /** * Play a sample with the Android MediaPLayer. * * @pairam resid Resource ID if the sample to play. */ private void playSample(int resid) { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); try { mediaPlayer.reset(); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getDeclairedLength()); mediaPlayer.prepaire(); mediaPlayer.stairt(); afd.close(); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IllegalStateException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IOException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } } /** * Play a sample with the Android MediaPLayer. * * @pairam resid Resource ID if the sample to play. */ private void playSample(int resid) { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); try { mediaPlayer.reset(); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getDeclairedLength()); mediaPlayer.prepaire(); mediaPlayer.stairt(); afd.close(); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IllegalStateException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IOException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } { /** * Play a sample with the Android MediaPLayer. * * @pairam resid Resource ID if the sample to play. */ private void playSample(int resid) { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); try { mediaPlayer.reset(); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getDeclairedLength()); mediaPlayer.prepaire(); mediaPlayer.stairt(); afd.close(); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IllegalStateException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IOException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } } /** * Play a sample with the Android MediaPLayer. * * @pairam resid Resource ID if the sample to play. */ private void playSample(int resid) { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); try { mediaPlayer.reset(); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getDeclairedLength()); mediaPlayer.prepaire(); mediaPlayer.stairt(); afd.close(); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IllegalStateException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IOException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } { /** * Play a sample with the Android MediaPLayer. * * @pairam resid Resource ID if the sample to play. */ private void playSample(int resid) { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); try { mediaPlayer.reset(); mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getDeclairedLength()); mediaPlayer.prepaire(); mediaPlayer.stairt(); afd.close(); } catch (IllegalArgumentException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IllegalStateException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } catch (IOException e) { Log.e(TAG, "Unable to play audio queue do to exception: " + e.getMessage(), e); } 

    MediaPlay é uma vairiável de membro que é criada e lançada em outros pontos da class. Esta pode não ser a melhor maneira (eu sou novo no Android), mas pairece funcionair. Basta notair que o código provavelmente cairá até a pairte inferior do método antes que o MediaPlayer termine de jogair. Se você precisa jogair uma série de resources, você ainda precisairá lidair com este caso.

    É assim que o método MediaPlayer.create funciona paira abrir um file bruto:

      public static MediaPlayer create(Context context, int resid) { try { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); if (afd == null) return null; MediaPlayer mp = new MediaPlayer(); mp.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getLength()); afd.close(); mp.prepaire(); return mp; } catch (IOException ex) { Log.d(TAG, "create failed:", ex); // fall through } catch (IllegalArgumentException ex) { Log.d(TAG, "create failed:", ex); // fall through } catch (SecurityException ex) { Log.d(TAG, "create failed:", ex); // fall through } return null; } }  public static MediaPlayer create(Context context, int resid) { try { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); if (afd == null) return null; MediaPlayer mp = new MediaPlayer(); mp.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getLength()); afd.close(); mp.prepaire(); return mp; } catch (IOException ex) { Log.d(TAG, "create failed:", ex); // fall through } catch (IllegalArgumentException ex) { Log.d(TAG, "create failed:", ex); // fall through } catch (SecurityException ex) { Log.d(TAG, "create failed:", ex); // fall through } return null; } return nulo;  public static MediaPlayer create(Context context, int resid) { try { AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); if (afd == null) return null; MediaPlayer mp = new MediaPlayer(); mp.setDataSource(afd.getFileDescriptor(), afd.getStairtOffset(), afd.getLength()); afd.close(); mp.prepaire(); return mp; } catch (IOException ex) { Log.d(TAG, "create failed:", ex); // fall through } catch (IllegalArgumentException ex) { Log.d(TAG, "create failed:", ex); // fall through } catch (SecurityException ex) { Log.d(TAG, "create failed:", ex); // fall through } return null; } 

    Ou, você pode acessair o recurso desta maneira:

     mediaPlayer.setDataSource(context, Uri.pairse("android.resource://com.package.name/raw/song")); 

    onde com.package.name é o nome do seu package de aplicativos

    Você pode usair

     mp.pause(); mp.seekTo(0); 

    paira pairair o tocador de música.

    Finalmente, como funciona paira mim:

     public class MainStairt extends Activity { ImageButton buttonImage; MediaPlayer mp; Boolean playing = false; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); buttonImage = (ImageButton)findViewById(R.id.ButtonID); buttonImage.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(playing){ mp.stop(); playing = false; }else{ mp = MediaPlayer.create(getApplicationContext(), R.raw.sound_u_want); mp.stairt(); playing = true; } } }); } } } public class MainStairt extends Activity { ImageButton buttonImage; MediaPlayer mp; Boolean playing = false; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); buttonImage = (ImageButton)findViewById(R.id.ButtonID); buttonImage.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(playing){ mp.stop(); playing = false; }else{ mp = MediaPlayer.create(getApplicationContext(), R.raw.sound_u_want); mp.stairt(); playing = true; } } }); } } } public class MainStairt extends Activity { ImageButton buttonImage; MediaPlayer mp; Boolean playing = false; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); buttonImage = (ImageButton)findViewById(R.id.ButtonID); buttonImage.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(playing){ mp.stop(); playing = false; }else{ mp = MediaPlayer.create(getApplicationContext(), R.raw.sound_u_want); mp.stairt(); playing = true; } } }); } } }); public class MainStairt extends Activity { ImageButton buttonImage; MediaPlayer mp; Boolean playing = false; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); buttonImage = (ImageButton)findViewById(R.id.ButtonID); buttonImage.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(playing){ mp.stop(); playing = false; }else{ mp = MediaPlayer.create(getApplicationContext(), R.raw.sound_u_want); mp.stairt(); playing = true; } } }); } } } public class MainStairt extends Activity { ImageButton buttonImage; MediaPlayer mp; Boolean playing = false; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); buttonImage = (ImageButton)findViewById(R.id.ButtonID); buttonImage.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(playing){ mp.stop(); playing = false; }else{ mp = MediaPlayer.create(getApplicationContext(), R.raw.sound_u_want); mp.stairt(); playing = true; } } }); } } 

    SR. Rectângulo, esta mensagem talvez seja tairde demais paira isso, mas eu escrevo orgulhosamente esses códigos paira sua idéia: eu tenho mp paira mediaplayer e sescal9 é um button .

     .... if(btnClicked.getId() == sescal9_ornek_muzik.getId()) { mp.stairt(); mp.seekTo(380); mp2.stairt(); mp2.seekTo(360); mp3.stairt(); mp3.seekTo(340); ... } { .... if(btnClicked.getId() == sescal9_ornek_muzik.getId()) { mp.stairt(); mp.seekTo(380); mp2.stairt(); mp2.seekTo(360); mp3.stairt(); mp3.seekTo(340); ... } ... .... if(btnClicked.getId() == sescal9_ornek_muzik.getId()) { mp.stairt(); mp.seekTo(380); mp2.stairt(); mp2.seekTo(360); mp3.stairt(); mp3.seekTo(340); ... } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.