您的位置:首页 > 移动开发 > Android开发

QCMediaPlayer mediaplayer NOT present(android)

2016-08-19 11:26 429 查看
出现了“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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: