2013-05-06 153 views
0

我是新来的android,我需要它为我正在处理的项目。我需要它通过点击按钮来播放声音。我遵循在线教程,但我的代码根本不播放声音,并且在MediaPlayer错误(-19,0)上出现错误。我尝试了很多我在这里看到的修复程序,但似乎无法使其工作。任何帮助?下面的代码Android MediaPlayer无法播放按钮上的声音点击

import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 
    MediaPlayer player; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     try { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      AudioManager audioManager = (AudioManager)  getSystemService(MainActivity.AUDIO_SERVICE); 
      audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 20, 0); 

      Button buttonHello = (Button) findViewById(R.id.button1); 
      buttonHello.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        MediaPlayer mp = Medi aPlayer.create(MainActivity.this, R.raw.button); 
        mp.start(); 
        mp.setOnCompletionListener(new OnCompletion Listener() { 
         public void onCompletion(MediaPlayer mp) { 
          mp.release(); 

         }; 
        }); 
       } 
      }); 
     } catch (Exception e) { 
      System.out.println("Error!"); 
     } 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 
+1

何时出现错误?在'create()'或'start'上?异常中是否有任何相关的消息/跟踪? – fiddler 2013-05-06 08:23:12

+0

(顺便说一下,你应该在启动播放器之前设置监听器) – fiddler 2013-05-06 08:23:48

+1

将文件放到mediaplayer上的位置? – Gunaseelan 2013-05-06 08:29:09

回答

0

此链接http://marakana.com/forums/android/examples/59.html有很好的例子使用的MediaPlayer类从原始文件夹播放歌曲。

要在内存中播放来自文件的歌曲,您可以使用以下代码。

MediaPlayer mp = new MediaPlayer(); 
     mp.reset(); 
     ContentValues values = new ContentValues();      
     values.put(MediaStore.Images.Media.DATA, filename.getAbsolutePath()); 
      Uri selectedImage=RingtoneDownload.this.getContentResolver().insert(
          MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
         try { 
          mp.setDataSource(RingtoneDownload.this,selectedImage); 
          mp.prepare(); 
          mp.start(); 
         }catch (Exception e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 

此代码在为我设置源文件时正在工作。

相关问题