首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:在recyclerview中使用mediaplayer

Android:在recyclerview中使用mediaplayer
EN

Stack Overflow用户
提问于 2016-06-05 15:46:47
回答 2查看 2.7K关注 0票数 3

我想在回收器视图的每个项目中使用mediaplayer。我想要播放音频立即对一个特定的项目时,它显示。

我正在尝试:

代码语言:javascript
复制
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int i) {
vhplaymusic = (PersonViewHolderplaymusic) viewHolder;
mp = MediaPlayer.create(viewHolder.itemView.getContext(), Uri.parse(context.getExternalFilesDir("krishna").getPath() + "/amalharinaam_finalcut_loud.mp3"));
mp.start();
}

在尝试运行时,它会显示mp为null。

错误的logcat:

代码语言:javascript
复制
E/AndroidRuntime: FATAL EXCEPTION: main
E/AndroidRuntime: Process: com.simha.sacredindaapp, PID: 29281
E/AndroidRuntime: java.lang.NullPointerException
E/AndroidRuntime:     at com.simha.yatras.Myplanshowrvadapter.onBindViewHolder(Myplanshowrvadapter.java:410)
E/AndroidRuntime:     at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5217)
E/AndroidRuntime:     at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5250)
E/AndroidRuntime:     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4487)
E/AndroidRuntime:     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363)
EN

回答 2

Stack Overflow用户

发布于 2016-08-04 22:24:42

为了创建一个新的MediaPlayer,您应该通过以下方式来完成:

代码语言:javascript
复制
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(context.getExternalFilesDir("krishna").getPath() + "/amalharinaam_finalcut_loud.mp3"));
mPlayer.prepareAsync();

使用prepareAsync()不会在加载音频时阻塞应用程序,因此我们需要一个回调方法来在加载音频后重现音频:

代码语言:javascript
复制
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mPlayer) {
                            Common.dismissLoading(progressDialog);
                            if (mPlayer != null) {
                                mPlayer.start();
                            }
                        }
                    });

在此之后,您可以使用mPlayer.start();mPlayer.pause();处理暂停和恢复;最后,当您不再需要音频时,可以使用mPlayer.release();

票数 1
EN

Stack Overflow用户

发布于 2021-07-26 13:49:34

您可以通过执行以下操作在recyclerview中使用媒体播放器:

代码语言:javascript
复制
       MediaPlayer animalTrack = 
       MediaPlayer.create(holder.itemView.getContext(),R.raw.r1);
                animalTrack.start();
                animalTrack.setLooping(true);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37639627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档