Android音频不能播放问题

u012137644 2014-10-06 03:40:39
 public boolean playmusic(int listPosition) {
//playBtn.setBackgroundResource(R.drawable.play_selector);
Mp3Info mp3Info = mp3Infos.get(listPosition);
//musicTitle.setText(mp3Info.getTitle());
/*Intent intent = new Intent(this.getActivity(),PlayerService.class);
intent.setAction("com.wyj.media.MUSIC_SERVICE");
intent.putExtra("listPosition",listPosition);
intent.putExtra("url", mp3Info.getUrl());
intent.putExtra("MSG", AppConstant.PlayerMsg.PLAY_MSG);
this.getActivity().startService(intent);*/
path=mp3Info.getUrl();
try {
//initLrc();
mediaPlayer.reset();// 把各项参数恢复到初始状态
mediaPlayer.setDataSource(path);
mediaPlayer.prepare(); // 进行缓冲
mediaPlayer.start(); // 开始播放
} catch (Exception e) {
e.printStackTrace();
}
Log.d(TAG,"method playmusic()has been called!");
Log.d(TAG,"the path of this song is that:"+path);
return true;
}



不知这段代码是否有问题,经过测试,这个方法在歌曲条目被点击的时候是会被调用的,但是却没有播放音乐,求各位指点迷津
...全文
474 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
友谊路一霸 2014-10-07
  • 打赏
  • 举报
回复
mediaPlayer没实例化~...
u012137644 2014-10-06
  • 打赏
  • 举报
回复
引用 4 楼 lovelife_821106 的回复:
mediaPlayer没实例化吧
一语惊醒梦中人,我果然犯了这种丢人的错误
u012137644 2014-10-06
  • 打赏
  • 举报
回复
引用 2 楼 u012061345 的回复:
支持1楼,把log放到catch里面,打印一下e。
public boolean playmusic(int listPosition) {
		//playBtn.setBackgroundResource(R.drawable.play_selector);
		Mp3Info mp3Info = mp3Infos.get(listPosition);
		//musicTitle.setText(mp3Info.getTitle());
		/*Intent intent = new Intent(this.getActivity(),PlayerService.class);
		intent.setAction("com.wyj.media.MUSIC_SERVICE");
		intent.putExtra("listPosition",listPosition);
		intent.putExtra("url", mp3Info.getUrl());
		intent.putExtra("MSG", AppConstant.PlayerMsg.PLAY_MSG);
		this.getActivity().startService(intent);*/
		path=mp3Info.getUrl();
		
			//initLrc();
			mediaPlayer.reset();// 把各项参数恢复到初始状态
			try {
				mediaPlayer.setDataSource(path);
			} catch (IllegalArgumentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SecurityException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalStateException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				mediaPlayer.prepare();
			} catch (IllegalStateException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} // 进行缓冲
			mediaPlayer.start(); // 开始播放
		
		Log.d(TAG,"method playmusic()has been called!");
		Log.d(TAG,"the path of this song is that:"+path);
		return true;
	}
我改成这样,结果运行后Logcat显示这样 定位到Testfragement.java第100行是这样的
mediaPlayer.reset();// 把各项参数恢复到初始状态
不知错在哪里?
lovelife_821106 2014-10-06
  • 打赏
  • 举报
回复
mediaPlayer没实例化吧
u012137644 2014-10-06
  • 打赏
  • 举报
回复
引用 1 楼 u010697537 的回复:
音乐播放的方法调用顺序没有问题,检查音乐文件的路径是否正确,看看播放音乐时候打印的Log (catch的异常是什么?)

public boolean playmusic(int listPosition) {
//playBtn.setBackgroundResource(R.drawable.play_selector);
Mp3Info mp3Info = mp3Infos.get(listPosition);
//musicTitle.setText(mp3Info.getTitle());
/*Intent intent = new Intent(this.getActivity(),PlayerService.class);
intent.setAction("com.wyj.media.MUSIC_SERVICE");
intent.putExtra("listPosition",listPosition);
intent.putExtra("url", mp3Info.getUrl());
intent.putExtra("MSG", AppConstant.PlayerMsg.PLAY_MSG);
this.getActivity().startService(intent);*/
path=mp3Info.getUrl();

//initLrc();
mediaPlayer.reset();// 把各项参数恢复到初始状态
try {
mediaPlayer.setDataSource(path);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 进行缓冲
mediaPlayer.start(); // 开始播放

Log.d(TAG,"method playmusic()has been called!");
Log.d(TAG,"the path of this song is that:"+path);
return true;
}


我改成这样,结果运行后Logcat显示这样


定位到Testfragement.java第100行是这样的
mediaPlayer.reset();// 把各项参数恢复到初始状态

不知错在哪里?
罗博士 2014-10-06
  • 打赏
  • 举报
回复
支持1楼,把log放到catch里面,打印一下e。
友谊路一霸 2014-10-06
  • 打赏
  • 举报
回复
音乐播放的方法调用顺序没有问题,检查音乐文件的路径是否正确,看看播放音乐时候打印的Log (catch的异常是什么?)

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧