zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    强化学习快速入门
    Spark GraphX图计算简单案例【代码实现,源码分析】
    CDA数据分析【第二章:数据收集与导入】
    CDA数据分析实务【第一章:营销决策分析概述】
    CDA数据分析【第一章:数据分析概述】
    BLAS快速入门
    Tachyon内存文件系统快速入门
    Solr新特性【4.x,5.x,6.x,7.x】
    利用Redis keyspace notification(键空间通知)实现过期提醒
    设计模式 行为型
  • 原文地址:https://www.cnblogs.com/akiha/p/5786953.html
Copyright © 2011-2022 走看看