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

Android学习:播放功能的实现

2011-12-05 18:58 381 查看
实现录音之后播放所录声音的主要代码:

playStop = (ImageButton) findViewById(R.id.button2);   //播放停止按钮
playStopText=(TextView) findViewById(R.id.textView3);
final MediaPlayer mPlayer=new MediaPlayer();

playStop.setOnClickListener(new View.OnClickListener(){  //为按钮添加监听事件
public void onClick(View view) {
count++;  //第一次点击实现播放功能,按钮下方显示stop
int i=count%2; //第二次点击停止播放,按钮下方显示play
switch (i)
{
// 单击播放按钮
case 1:
playStopText.setText("      Stop");
try
{
File file=new File(Environment
.getExternalStorageDirectory()
.getCanonicalFile() + "/Recondsound.amr"); //注意后缀名!!!
FileInputStream fis=new FileInputStream(file);
mPlayer.setDataSource(fis.getFD());
mPlayer.prepare();
mPlayer.start();
}
catch (Exception e)
{
e.printStackTrace();
}
break;
// 单击停止按钮
case 0:
playStopText.setText("      Play");
try
{

mPlayer.stop();

}
catch(Exception e)
{
e.printStackTrace();
}

break;
}
}
});

实现中的问题:

1、java.io.FileNotFoundException: /mnt/sdcard/Recordsound (No such file or directory)

解决:在文件后面添加后缀名

2、at android.media.MediaPlayer.prepare()(Native Method)

解决:查阅资料说这是Android 文件夹权限引起的MediaPlayer播放不正常,也就是说直接使用代码:

MediaPlayer mPlayer=new MediaPlayer();
mPlayer.setDataSource("文件路径");
mPlayer.prepare();
mPlayer.start();

默认创建的声音文件是不可读的,导致无法读取数据,在MediaPlayer.prepare()时总是失败。

应使用MediaPlayer.setDataSource((new FileInputStream(new File(soundFilePath))).getFD());方法加载指定音频

故将代码改为:

File file=new File(Environment.getExternalStorageDirectory().getCanonicalFile() + "/Recondsound.amr");
FileInputStream fis=new FileInputStream(file);
mPlayer.setDataSource(fis.getFD());
mPlayer.prepare();
mPlayer.start();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: