• QCMediaPlayer mediaplayer NOT present(android)


    出现了“QCMediaPlayer mediaplayer NOT present”这个错误!!!我的手机是小米手机2,我给它刷机刷到了Android 4.4.4,后来我学长是这样解决的:case R.id.btn_Start2 :// 播放SD卡中的音频资源!!!                                        mediaPlayer = MediaPlayer.create(this,
                                                            Uri.parse("storage/sdcard0/music.mp3"));
                                            mediaPlayer.start();// 开始播放!!!
                                            break;
                                    //System.out.println(Environment.getExternalStorageDirectory().getPath());用来输出SD卡的根目录!!!

    我的全部代码是:
    package com.example.myplayermusic;

    import android.support.v7.app.ActionBarActivity;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.View;
    import android.media.MediaPlayer;
    import android.media.MediaPlayer.OnCompletionListener;
    import android.view.View.OnClickListener;
    import android.widget.Button;

    public class MainActivity extends ActionBarActivity
                    implements
                            OnClickListener,
                            OnCompletionListener {

            private MediaPlayer mediaPlayer;
            private Button btn_Start1;
            private Button btn_Start2;
            private Button btn_Stop;
            private Button btn_Pause;

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

                    btn_Start1 = (Button) findViewById(R.id.btn_Start1);
                    btn_Start2 = (Button) findViewById(R.id.btn_Start2);
                    btn_Stop = (Button) findViewById(R.id.btn_Stop);
                    btn_Pause = (Button) findViewById(R.id.btn_Pause);

                    btn_Start1.setOnClickListener(this);
                    btn_Start2.setOnClickListener(this);
                    btn_Stop.setOnClickListener(this);
                    btn_Pause.setOnClickListener(this);
            }

            @Override
            public void onCompletion(MediaPlayer mp) { // 音频播完后调用onCompletion方法!!!
                    mp.release(); // 音頻播完后!!!通常需要释放音频资源!!!
                    setTitle("资源已经释放!!!");
            }

            @Override
            public void onClick(View view) {
                    try {
                            switch (view.getId()) {

                                    case R.id.btn_Start1 :// 播放内部音频资源!!!

                                            mediaPlayer = MediaPlayer.create(this, R.raw.music);// 通过MediaPlayer.create方法的第二个参数指定内部音频文件的ID,并创建MediaPlayer对象!!!

                                            mediaPlayer.setOnCompletionListener(this);// 指定播放完成的监听器!!!
                                            if (mediaPlayer != null) {
                                                    mediaPlayer.stop();// 停止播放!!!
                                            }
                                            mediaPlayer.prepare();// 加载音频资源!!!
                                            mediaPlayer.start();// 开始播放!!!
                                            break;

                                    case R.id.btn_Start2 :// 播放SD卡中的音频资源!!!
                                            mediaPlayer = MediaPlayer.create(this,
                                                            Uri.parse("storage/sdcard0/music.mp3"));
                                            mediaPlayer.start();// 开始播放!!!
                                            break;
                                    //System.out.println(Environment.getExternalStorageDirectory().getPath());用来输出SD卡的根目录!!!

                                    case R.id.btn_Stop :// 終止播放!!!
                                            if (mediaPlayer != null) {
                                                    
                                                    mediaPlayer.stop();// 终止播放!!!
                                            }
                                            break;

                                    case R.id.btn_Pause :// 暂停播放!!!
                                            if (mediaPlayer != null) {
                                                    if ("继续播放".equals(btn_Pause.getText().toString())) {
                                                            
                                                            mediaPlayer.start();// 播放已经暂停,可以继续播放!!!
                                                            btn_Pause.setText("暂停播放");
                                                    } else if ("暂停播放"
                                                                    .equals(btn_Pause.getText().toString())) {
                                                            
                                                            mediaPlayer.pause();// 暂停播放音频!!!
                                                            btn_Pause.setText("继续播放");
                                                    }
                                            }

                            }
                    } catch (Exception e) {

                    }
            }
    }

    I know that this is not an answer for "Why" this is happening but if someone wants to make it work (at least for me it worked), you can initialize the MediaPlayer not by creating a new instance and setting the data source but by creating it using the static method create:

    MediaPlayer player = MediaPlayer.create(this, Uri.parse(sound_file_path));
    

    or

    MediaPlayer player = MediaPlayer.create(this, soundRedId, loop);
  • 相关阅读:
    double保存小数点后两位
    二维数组做函数参数,及地址问题
    解决应用程序无法正常启动0xcxxxxxxxxxx问题
    docker+selenium grid解决node执行经常卡死
    docker+selenium Grid搭建自动化分布式测试环境
    Docker+Selenium Grid+Python搭建分布式测试环境
    xshell无法连接Ubuntu的解决办法
    docker获取镜像很慢解决办法
    django使用ajax传输数据
    $.ajax()所有参数详解
  • 原文地址:https://www.cnblogs.com/akiha/p/5786953.html
Copyright © 2020-2023  润新知