android - 在Android的MediaPlayer上播放音频时遇到问题

标签 android audio

Android编码的新功能。我试图让用户使用“上载”按钮为MediaPlayer选择要播放的音频文件,然后一旦用户单击“播放”,MediaPlayer应该开始播放该文件。到目前为止,这是我的代码:

 public class MainActivity extends Activity {
        final int ACTIVITY_CHOOSE_FILE = 1;
        File original;


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

            Button button = (Button) this.findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent chooseFile;
                    Intent intent;
                    chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
                    chooseFile.setType("audio/mpeg");
                    intent = Intent.createChooser(chooseFile, "Choose a file");
                    startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
                }
            });

            Button playButton = (Button)findViewById(R.id.playbutton);
            playButton.setOnClickListener(new Button.OnClickListener() {
                @Override
                public void onClick(View v) {
                    MediaPlayer mediaPlayer = new MediaPlayer();
                    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    try {
                        mediaPlayer.setDataSource(original.getAbsolutePath());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mp) {
                            mp.start();
                        }
                    });

                }
            });
        }

        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (requestCode) {
                case ACTIVITY_CHOOSE_FILE: {
                    if (resultCode == RESULT_OK) {
                        Uri uri = data.getData();
                        original = new File(uri.getPath());
                        String tag = "TAG";
                        Log.d(tag, original.getAbsolutePath());
                    }
                }
            }
        }
    }

我可以选择合适的音频文件,但是一旦点击播放,就什么也没有发生。我究竟做错了什么?

最佳答案

设置mediaPlayer数据源后,您必须调用mediaPlayer.prepareAsync()
Media Playback in android

关于android - 在Android的MediaPlayer上播放音频时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33902646/

相关文章:

java - ImageView 引用和派生类的奇怪行为

javascript - 在 Javascript 中将立体声音频转换为单声道

android - 加载多个音频文件的简单方法?

android - Android EditText 文本变化时自动添加千位分隔符

android - 如何使用 android native PdfDocument API 创建横向 PDF?

android - Opengl ES 1.1/Android——2011 年纹理映射到正方形的崩溃

android - HttpConnection 中的 setAllowUserInteraction() 是什么

python - WAV文件保存顺序错误

audio - 如何使用gstreamer提取mp3流中的数据帧?

python - ipython中的play()函数未定义