出现了“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);

QCMediaPlayer mediaplayer NOT present(android)的更多相关文章

  1. 测试耗电量的工具(Android)

    Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具. 支持SDK:Android2.2以及以上版本 Emmagee功能介绍 1.检测当前时间被测应用占用的CP ...

  2. 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)

    安卓(android)建立项目时失败.出现AndroidManifest.xml file missing几种解决方法?(总结中) Eclipse新建项目.遇到这种问题.注意例如以下: 1.文件名称最 ...

  3. 基于Platinum库的DMS实现(android)

    接上篇博文:基于Platinum库的DMR实现(android) 文章讲述了如何使用Platinum库实现DMR 今天同样使用该库,来讲解一下DMS的实现 关于该库如何编译,请参考这篇博文:NDK下 ...

  4. Github-Client(ANDROID)开源之旅(四) ------ 简介Roboguice

    Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC),Guice非常小而且快.Guice是类型安全的,它能够对构造函数,属性,方法(包含任意个参数 ...

  5. 第四次作业——关于石墨文档(Android)客户端的案例分析

    关于石墨文档(Android)客户端的案例分析 作业地址:[https://edu.cnblogs.com/campus/nenu/2016CS/homework/2505] 第一部分调研,评测 1. ...

  6. TaintDroid下载预编译(五):TaintDroid(Android)系统编译虚拟机和真机測试

    光说不练非好汉,如今就让我们开启自己编译的系统測试!事实上懂得这些过程.就知道了Android手机系统定制的整个流程.现有的智能机都是使用Google的android开源的系统然后加入一些自己的东西. ...

  7. Gradle 一(Android)

    参考一:Gradle 完整指南(Android) 参考二:深入理解Android(一):Gradle详解 参考三:Gradle for Android 第一篇( 从 Gradle 和 AS 开始 ) ...

  8. Github-Client(ANDROID)开源之旅(三) ------ 巧用ViewPagerIndicator

    接上篇博文:Github-Client(ANDROID)开源之旅(二) ------ 浅析ActionBarSherkLock 文中结合了网易新闻客户端讲解了开源库ActionBarSherklock ...

  9. 插件化二(Android)

    插件化二(Android) 上一篇文章<插件化一(android)>里大概构思了下插件加载与校验的流程和一些大体设计,这次就具体展开,在<动态加载与插件化>里提到以apk形式开 ...

随机推荐

  1. Devexpress XtraReports 交叉报表

    [原创]Devexpress XtraReports 系列 5 创建交叉报表   昨天我们已经介绍了如何创建多栏报表,详见:[原创]Devexpress XtraReports 系列 4 创建多栏报表 ...

  2. Go Revel 学习指南

    Go Revel 学习指南 CONTROLLERS(控制器) Routing(路由)http://www.cnblogs.com/hangxin1940/p/3267065.html Paramete ...

  3. HDU 2073 无限的路

    Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还 ...

  4. hdu1263 水果(结构体排序)

    Problem Description 夏天来了~~好开心啊,呵呵,好多好多水果~~ Joe经营着一个不大的水果店.他认为生存之道就是经营最受顾客欢迎的水果.现在他想要一份水果销售情况的明细表,这样J ...

  5. 在OpenStack虚拟机实例中创建swap分区的一种方法

    测试组里一个同学负责MapR的搭建,MapR文档中建议每个节点上至少有24GB的swap分区,不知道MapR为啥会有这种反人类的建议……swap无非就是一块顺序读写的磁盘空间,莫非省着内存不用,用sw ...

  6. echarts配合循环计时器等出现的内存泄漏

    echarts是百度的一个图表插件,确实好用美观. 之前实习接触到的页面大多是下面这种调用方式 var chart=echarts.init(document.getElementById(dom)) ...

  7. 嵌入式SQL

    一.包含嵌入式SQL 程序的处理过程   由预处理程序对源程序进行扫描,识别出ESQL语句 把它们转换成主语言的函数调用语句,使主语言编译程序能够识别 最后由主语言的编译程序将整个源程序编译成目标码 ...

  8. 函数四种调用模式以及其中的this指向

    第一种:函数直接执行模式 function add(a,b){ console.log(this); return a+b; } add(10,20)//this===window 第二种:对象方法的 ...

  9. 【.NET-EF】Entity Framework学习笔记2 - 增删改(没查询)

    学习描述:用EF就像是省略了做实体类和DAL类,感觉是很方便,废话不多说,直接写步骤: 1.创建EF的edmx文件 这个其实在笔记1已说过,不过有些细节也要说,所以再说一遍,这里使用的是EF 6.1版 ...

  10. SQL注入(三)

    邮给我一个密码 我们意识到虽然不能添加一条新的记录在members表中,但我们可以通过修改一个存在的记录, 这也获得了我们的证明是可行的. 从先前的步骤中,我们知道bob@example.com在系统 ...