android start called in state 0

在安卓手机上运行的时候会出现error:Tag:MediaPlayerText:startcallinstate0。这是什么问题啊,觉得应该不是代码问题,但又找不出问题在... 在安卓手机上运行的时候会出现error:Tag:MediaPlayer Text:start call in state 0。
这是什么问题啊,觉得应该不是代码问题,但又找不出问题在哪,求大神指教。
代码如下:
package com.example.playaudiotest;

import java.io.File;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {

private Button play;

private Button pause;

private Button stop;

private MediaPlayer mediaPlayer = new MediaPlayer();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
play = (Button) findViewById(R.id.play);
pause = (Button) findViewById(R.id.pause);
stop = (Button) findViewById(R.id.stop);
play.setOnClickListener(this);
pause.setOnClickListener(this);
stop.setOnClickListener(this);
initMediaPlayer();
}

private void initMediaPlayer() {
try {
File file = new File(Environment.getExternalStorageDirectory(), "Over the horizon.mp3");
mediaPlayer.setDataSource(file.getPath());
mediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.play:
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
break;
case R.id.pause:
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
break;
case R.id.stop:
if (mediaPlayer.isPlaying()) {
mediaPlayer.reset();
initMediaPlayer();
}
break;
default:
break;
}
}

@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
}
}

}
展开
 我来答
柯北而已
2017-10-18 · 超过16用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:17.7万
展开全部

1、确定AndroidManefest.xml中添加了以下权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

2、去应用中手动开启存储控件的这个权限!

虽然第一步添加了权限,但是我的模拟机是7.0的,需要手动开启下权限。这个很重要。

我的已经可以正常播放音频了

newbd33
推荐于2017-10-18
知道答主
回答量:21
采纳率:0%
帮助的人:13.8万
展开全部
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
}
}

你把onDestroy中的mediaPlayer.stop();和mediaPlayer.release();放到super.onDestroy()前面试试!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式