出现了“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. sed 入门

         sed 是 stream editor(流编辑器)的缩写.它能够完美配合正则表达式使用.sed命令众所周知的一个功能是文本的替换. 1. sed可以替换给定文本中的字符串.它可以配合正则表达 ...

  2. Eclipse plugin web site 发布和版本更新

    Eclipse plugin web site 发布和版本更新 在eclipse插件开发过程中免不了要发布1.0, 1.1, 1.2…….等等,随着版本的递增,假如每次都发布一个插件zip包,那使用者 ...

  3. 微信移动端web页面调试小技巧

    技术贴还是分享出来更加好,希望能对一些朋友有帮助,个人博客  http://lizhug.com/mymajor/微信移动端web页面调试小技巧

  4. .Net用户使用期限的设置、限制通用小组件

    .Net用户使用期限的设置.限制通用小组件 最近比较项目组的同事都比较烦,不断的穿梭在不同的项目之间,一个人同时要兼顾多个项目的维护修改.甚至刚放下这个客户的电话,另一个客户的电话就进来了.究其原因, ...

  5. Internet Liberity -- a specific anonymous internet guide

    Here we see. Please leave your comments if you have some views. Happy hacking! Free the internet!

  6. Android开发(19)---常见dialog对话框的运用

    Dialog是android开发过程中最常用到的组件之一,Dialog的创立办法有两种: 一是直接new一个Dialog目标,然后调用Dialog目标的show和dismiss办法来操控对话框的显现和 ...

  7. js的eval函数解析后台返回的json数据时为什加上圆括号eval("("+data+")"),而HTML页面定义的数据不用

    一,情况如下,这是成功代码: $(function () { $.ajax({ url: "Demo.aspx", type: "post", data: { ...

  8. 如何使用jQuery动态的在body里添加script标签?

    var script = document.createElement('script'); script.type = 'text/jacascript'; script.src = 'url'; ...

  9. android两种方式获取AsyncTask返回值

    获取AsyncTask返回值,在Activity中使用. 引用链接:https://www.oschina.net/code/snippet_725438_49858#72630 [1].[代码] [ ...

  10. 第10章 使用MySQL数据库

    1.在数据库中插入数据:INSERT语句: 如://插入一整行: insert into customers values (NULL,'-','-','-'), - ; //插入一行中指定的列内容: ...