Android MediaPlayer无法在按钮点击时播放声音

时间:2013-05-06 08:18:40

标签: android media-player

我是android的新手,我需要它来处理我正在进行的项目。我需要它通过单击按钮播放声音。我按照在线教程,但我的代码根本不播放声音,我在MediaPlayer错误(-19,0)上收到错误。我已经尝试了很多我在这里看到的修复程序,但似乎无法使其正常工作。有帮助吗?这是代码

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 个答案:

答案 0 :(得分: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();
                        }

此代码适用于我从文件设置源。