开发者社区> 问答> 正文

为什么这个地反的return必须有呢?,没有会报错 隐式应该可以不写的呀,不解求高人解答。?报错

package com.example.mediaplayerexample;


import java.io.File;


import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity {
MediaPlayer mediaplayer;
boolean isPauser = false;// 是否暂停标记
File file;
TextView infromation;


/* 控制控制逻辑:点击播放,播放按钮不可用,其余按钮可用,点击暂停按钮,播放按钮和停止按钮都可用 */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button Play = (Button) findViewById(R.id.Play);
final Button PauseOrContinue = (Button) findViewById(R.id.PauseOrContinue);
final Button Stop = (Button) findViewById(R.id.Stop);
infromation = (TextView) findViewById(R.id.showMessage);
file = new File("/sdcard/Music/I.mp3");
if (file.exists()) {// 检查文件是否存在
// file.getAbsolutePath())获取文件绝对路径
mediaplayer = mediaplayer.create(this, Uri.parse(file.getAbsolutePath()));// 存在的话则通过文件的绝对路径创建MediaPlayer
} else {
infromation.setText("要播放的文件不存在");
Play.setEnabled(false);// 设置播放按钮不可用

return;////////////////////////////////////////////////////为什么这个地反的return必须有呢?,没有会报错

隐式应该可以不写的呀,不解求高人解答。



}
mediaplayer.setOnCompletionListener(new OnCompletionListener() {// 为播放器设置播放完成时触发的监听


@Override
public void onCompletion(MediaPlayer mp) {
// TODO 自动生成的方法存根
MainActivity.this.play();
}
});
Play.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
MainActivity.this.play();// 从头开始播放音频
/*
* 判断是否处于暂停状态, 目的是为了在后面点击暂停后再点击播放能让按钮的文字变成暂停, 从而放暂停功能又可以使用
*/
if (isPauser) {
PauseOrContinue.setText("暂停");
isPauser = false;// 设置暂停标记为false
}
Play.setEnabled(false);// 播放按钮失效
PauseOrContinue.setEnabled(true);
Stop.setEnabled(true);


}
});
PauseOrContinue.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// 如果播放器处于播放状态或者isPauser为false
if (mediaplayer.isPlaying() && !isPauser) {
mediaplayer.pause();
isPauser = true;// 设置暂停标记为true
PauseOrContinue.setText("继续");
infromation.setText("暂停播放歌曲.....");
Play.setEnabled(true);// 播放按钮可用
} else {
mediaplayer.start();
PauseOrContinue.setText("暂停");
infromation.setText("继续播放音频......");
isPauser = false;
Play.setEnabled(false);
}
}
});
Stop.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
mediaplayer.stop();
isPauser = false;
PauseOrContinue.setText("暂停/继续");
infromation.setText("停止播放音频......");
Play.setEnabled(true);
PauseOrContinue.setEnabled(false);
Stop.setEnabled(false);
}
});
}


public void play() {
try {
mediaplayer.reset();// 重置MediaPlayer,为了万一播放器错误时无法工作
mediaplayer.setDataSource(file.getAbsolutePath());// 重置要播放的歌曲,应为在create()方法中已经加载过了
mediaplayer.prepare();// 预加载音频
mediaplayer.start();// 播放音频
infromation.setText("正在播放音频......");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}


}

展开
收起
爱吃鱼的程序员 2020-06-22 18:15:37 472 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    mediaplayer.setOnCompletionListener

    应该是这里的问题,你文件不存在的时候return,就不再执行后面的代码,不写return,后面的代码就会继续执行。

    看看你报错的内容就知道是哪里出错了呀。

    谢谢。知道了。
    2020-06-22 18:15:53
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载