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

Posted

技术标签:

【中文标题】在 Android 的 MediaPlayer 上播放音频时遇到问题【英文标题】:Having trouble playing audio on the MediaPlayer in Android 【发布时间】:2015-11-24 19:56:21 【问题描述】:

这里是 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());
                    
                
            
        
    

我可以很好地选择音频文件,但是一旦我点击播放就没有任何反应。我做错了什么?

【问题讨论】:

【参考方案1】:

设置好 mediaPlayer 数据源后,您必须调用 mediaPlayer.prepareAsync()

Media Playback in android

【讨论】:

现在返回错误 (1,-2147483648) 是的,可能是因为您在 onclick 回调中声明了 MediaPlayer 对象,请尝试将媒体播放器对象声明为类成员变量。看看这里link

以上是关于在 Android 的 MediaPlayer 上播放音频时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

android:在模拟器上使用 MediaPlayer 录制音频

Android MediaPlayer 在 Android 4.2.2 上播放视频时闪烁

你如何在 MediaPlayer 上播放 Android InputStream?

MediaPlayer无法在Android Things Raspberry Pi 3上运行

Android MediaPlayer SeekTo 在 8.0 版本上优化说明

android上原始文件夹和sdcard之间的MediaPlayer问题