Android Media播放器无法点击按钮

时间:2015-08-01 19:11:24

标签: android

正如标题所暗示的那样,当点击一个按钮时,我希望播放一个小的声音片段 - 非常基本。但是,当我第一次点击按钮时出现以下错误:

08-01 15:01:58.547  18991-18991/? E/MediaPlayer﹕ Should have subtitle controller already set
08-01 15:02:01.030  18991-19008/za.co.site.app E/MediaPlayer﹕ error (1, -1010)
08-01 15:02:01.054  18991-18991/za.co.site.app E/MediaPlayer﹕ Error (1,-1010)

当我再次点击该按钮时,我得到以下错误:

08-01 15:07:09.586  18991-18991/za.co.site.app E/MediaPlayer﹕ start called in state 0
08-01 15:07:09.586  18991-18991/za.co.site.app E/MediaPlayer﹕ error (-38, 0)
08-01 15:07:09.587  18991-18991/za.co.site.app E/MediaPlayer﹕ Error (-38,0)

我正在使用fragement。这是代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_main, container, false);
    final Button b = (Button) view.findViewById(R.id.button1);
    b.setEnabled(false);

    final MediaPlayer mediaPlayer = MediaPlayer.create(getActivity(), R.raw.clip);

    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(final MediaPlayer mp) {
            b.setEnabled(true);

            b.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    mp.start();

                }
            });
        }
    });


    return view;
}

阅读后,第一个错误是Android没有找到文件。但是,该文件位于res文件夹内的原始文件夹中,而android肯定会使用R.raw.clip获取该剪辑。通过使用OnPreparedListener,这应该会停止发生第二个错误,因为应用程序在按下按钮之前满足剪辑准备就绪。

我不太确定我做错了什么,想法?

2 个答案:

答案 0 :(得分:0)

如果您正在创建这种方式,则无需准备。只需调用start()。

这是因为该文件是本地文件。

答案 1 :(得分:0)

使用媒体播放器时尝试使用mp3文件。我使用的文件是.wav文件。我把文件制作成一个有效的mp3文件。