mediaPlayer = MediaPlayer.create(this, Uri.parse("file://" + filePath));
发现一个奇怪问题,如果filePath指向的文件是SD卡根目录下的一个mp3就可以实例化mediaPlayer,但是如果同样的文件被放到文件夹里,然后filePath指向这个文件夹里的mp3就不可以播放了,试过了很多遍都是一样效果,很奇怪啊,难道是什么permission问题?可我也加了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>public class PlayRecordActivity extends Activity {
private ImageButton startBtn = null;
private ImageButton pauseBtn = null;
private ImageButton stopBtn = null;
private String filePath = null;
private MediaPlayer mediaPlayer = null;
private boolean isPlaying= false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.record_play);
findViews();
setListeners();
initData();
}
public void findViews(){
startBtn = (ImageButton) this.findViewById(R.id.record_play);
pauseBtn = (ImageButton) this.findViewById(R.id.record_pause);
stopBtn = (ImageButton) this.findViewById(R.id.record_stop);
}
public void setListeners(){
startBtn.setOnClickListener(new ButtonOnClickListener());
pauseBtn.setOnClickListener(new ButtonOnClickListener());
stopBtn.setOnClickListener(new ButtonOnClickListener());
}
public void initData(){
Intent intent = this.getIntent();
String fileName = intent.getExtras().getString("file_name");
filePath=AppConstant.saveDir+File.separator+fileName;
}
public void playRecord(){
System.out.println(filePath);
Intent intent = this.getIntent();
String fileName = intent.getExtras().getString("file_name");
filePath=AppConstant.saveDir+File.separator+fileName;
File f = new File(filePath);
System.out.println(f.length());
mediaPlayer = MediaPlayer.create(this, Uri.parse("file://" + filePath));
mediaPlayer.setLooping(false);
mediaPlayer.start();
isPlaying = true;
}
public void pauseRecord(){
if(isPlaying == true){
mediaPlayer.pause();
}else{
mediaPlayer.start();
}
isPlaying = isPlaying ? false : true;
}
public void stopRecord(){
if(isPlaying == true){
mediaPlayer.stop();
mediaPlayer.release();
}
}
public final class ButtonOnClickListener implements View.OnClickListener{ @Override
public void onClick(View v) {
switch (v.getId()){
case R.id.record_play :
playRecord();
case R.id.record_pause:
pauseRecord();
case R.id.record_stop:
stopRecord();
}
}
}
}
发现一个奇怪问题,如果filePath指向的文件是SD卡根目录下的一个mp3就可以实例化mediaPlayer,但是如果同样的文件被放到文件夹里,然后filePath指向这个文件夹里的mp3就不可以播放了,试过了很多遍都是一样效果,很奇怪啊,难道是什么permission问题?可我也加了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>public class PlayRecordActivity extends Activity {
private ImageButton startBtn = null;
private ImageButton pauseBtn = null;
private ImageButton stopBtn = null;
private String filePath = null;
private MediaPlayer mediaPlayer = null;
private boolean isPlaying= false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.record_play);
findViews();
setListeners();
initData();
}
public void findViews(){
startBtn = (ImageButton) this.findViewById(R.id.record_play);
pauseBtn = (ImageButton) this.findViewById(R.id.record_pause);
stopBtn = (ImageButton) this.findViewById(R.id.record_stop);
}
public void setListeners(){
startBtn.setOnClickListener(new ButtonOnClickListener());
pauseBtn.setOnClickListener(new ButtonOnClickListener());
stopBtn.setOnClickListener(new ButtonOnClickListener());
}
public void initData(){
Intent intent = this.getIntent();
String fileName = intent.getExtras().getString("file_name");
filePath=AppConstant.saveDir+File.separator+fileName;
}
public void playRecord(){
System.out.println(filePath);
Intent intent = this.getIntent();
String fileName = intent.getExtras().getString("file_name");
filePath=AppConstant.saveDir+File.separator+fileName;
File f = new File(filePath);
System.out.println(f.length());
mediaPlayer = MediaPlayer.create(this, Uri.parse("file://" + filePath));
mediaPlayer.setLooping(false);
mediaPlayer.start();
isPlaying = true;
}
public void pauseRecord(){
if(isPlaying == true){
mediaPlayer.pause();
}else{
mediaPlayer.start();
}
isPlaying = isPlaying ? false : true;
}
public void stopRecord(){
if(isPlaying == true){
mediaPlayer.stop();
mediaPlayer.release();
}
}
public final class ButtonOnClickListener implements View.OnClickListener{ @Override
public void onClick(View v) {
switch (v.getId()){
case R.id.record_play :
playRecord();
case R.id.record_pause:
pauseRecord();
case R.id.record_stop:
stopRecord();
}
}
}
}
解决方案 »
- Android 自定义ViewGroup 为什么总是充满全屏
- android中我想在第三方软件中设置音效,我想选择系统自带的,怎么弄?
- 求Android手机号码吉凶查询、归属地查询源码
- 用C++实现音频播放,直接使用使用libmediaplayer.so库接口实现音频播放问题
- 求助:如何动态修改ListVIew中每个Item的值
- Eclipse的模拟器打开时出现问题
- ADT安装问题!!老是装不上!!!TM装一天了!!!
- 哪位大侠能提供一个jni访问sqlite数据库的例子?
- setContentView(R.layout.main) 可以动态实现吗?
- android接收串口数据断断续续
- android连接不到webserver问题?!!
- eclipse导入android源码报错
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
我甚至为了调试这样写了:
File file=new File(filePath);
System.out.print(file.length);
mediaPlayer = MediaPlayer.create(this, Uri.parse("file://" + filePath));
这样都能打印出文件大小了(667765)
AppConstant.saveDir+File这个是sd卡根目录?
File.separator是 /
fileName是mp3文件名称
文件夹目录呢?在AppConstant.saveDir+File里面?这个目录是否被正确创建
File file=new File(filePath);
System.out.print(file.length);
mediaPlayer = MediaPlayer.create(this, Uri.parse("file://" + filePath));
这样都能打印出文件大小了(667765)
请问一下,AppConstant是什么方法?