我正在学习Android和目前的回收器视图,所以在这个例子中,我在单击播放按钮时播放特定的原始声音文件,然后在完成后释放它。我可以认真地使用一些关于最佳实践的指针,但是因为我有一些问题和疑问:
使用RecyclerView设置mediaPlayer和正确管理资源的最佳做法是什么?我做错了什么会导致崩溃和“速度慢”?
//视图持有者
public static class myHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
ImageView playBtn;
public myHolder(View v){
super(v);
playBtn = (ImageView) v.findViewById(R.id.playBtn);
v.setOnClickListener(this);
}
@Override
public void onClick(View v) {
}
}
onBindViewHolder / onCompletionListener
@Override
public void onBindViewHolder(myHolder holder, int position) {
myClass item = itemList.get(position);
final MediaPlayer mediaPlayer = MediaPlayer.create(holder.itemView.getContext(), item.getAudioSource());
holder.playBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
}
});
}
OBS 当我回答我自己的问题时,我不能说这是很好的做法,但它确实解决了我遇到的问题,如果有人发现错误或有更好更有效的方法,那么请发布答案并详细说明。
应用不再崩溃,并在完成通知程序上清除所有资源,这是当前代码:
类变量媒体播放器和 onCompionListener 方法
MediaPlayer mediaPlayer;
//onCompletionListener method
MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
mediaPlayer = null;
}
};
上斌维支架
@Override
public void onBindViewHolder(final itemHolder holder, int position) {
final Items item = mItemList.get(position);
holder.playBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
mediaPlayer = MediaPlayer.create(holder.itemView.getContext(), item.getAudioSource());
if(mediaPlayer != null) {
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(mCompletionListener);
}
}
});
}
如果您只在用户交互中收听,则可以删除 setOnCompleteListener(),
而是在(按顺序)“一起”一起单击“()
和”点击
“控制器”中定义播放/停止代码。喜欢这个:
holder.playBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//Code to stop playing and release resources
}
});
holder.playBtn.setOnLongClickListener(new View.OnClickListener(){
@Override
public void onLongClick(View v) {
//Code to start playing
return false; //!!This is important so that OnClick() would be called after releasing the button
}
});
大家好,我正在尝试使用两个独立的媒体播放器实例播放音频和视频文件。当我从一开始播放它时,它工作得很好。但当我寻找时,我可以看到音频和视频的延迟 这是我寻找音频和视频的代码 //sikAudio(msec); if(media播放器!=null) { // 没有直播流,如果(medialayer.get持续时间() }
主要内容:本节引言:,1.相关方法详解,2.使用代码示例,3.本节示例代码下载:,本节小结:本节引言: 本节带来的是Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频 该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码 和播放音视频。它支持三种不同的媒体来源: 本地资源 内部的URI,比如你可以通过ContentResolver来获取 外部URL(流) 对于Android所支持的的媒体格式列表 对于Androi
我正在开发一个音频播放器,它可以在后台播放音频文件。我的问题是,当录像机或视频播放器启动时,我需要暂停音频播放器。 有什么方法可以处理这个任务吗?例如,我有来处理这些调用。当我接到呼叫或wnat呼叫时,我们可以使用呼叫状态暂停播放器。我想为录像机或视频播放器以及相同的场景。当视频/录制开始时,我需要暂停音频播放器。
问一下Xamarin.Forms便携里面Xamarin.Forms的音频怎么播放 正如我所知,有依赖服务,我看到了一些示例,只有iOS和Android,但没有Windows Phone 8.1/Windows 8.1和UWP。
我在一个回收视图中有几张卡片。每张卡都有一个自定义视频视图。单击视频视图,视频应开始。然而,在我的例子中,它只显示蓝色边框,视频没有运行。代码如下所示, 自定义卡视图。xml: 自定义视频视图: 主要活动: activity\u main。xml: 我希望每张卡最初只显示一个缩略图。单击视频后,相关卡应启动视频(不是全部)。视频启动时,VideoView应占据整个屏幕。我怎样才能做到这一点? 谢谢
问题内容: 我在android中实现了视频播放,这对android来说是全新的,这是我到目前为止收集的部分代码。 根据逻辑,它应该播放视频。不知道我在哪里做错了。 问题答案: