网站中添加百度地图西安seo专员
在项目中,有时候遇到要求,点击播放下一曲无法播放的问题。明明调用了start()方法了,为什么还是不行呢。
以下是我的代码
mediaPlayer=new MediaPlayer(); mediaPlayer.setDataSource(url[0]); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.prepareAsync(); mediaPlayer.start();
相信大家都懂这段代码了吧,mediaPlayer.prepareAsync();是为了异步加载网络数据,如果不这样可能app直接卡死掉。如果上面有报错记得try、catch。
后面想到了异步,那么可能是不及时的,比如说mediaPlayer.prepareAsync();刚开始是没任何东西的,可能需要延迟个几秒或毫秒才会得以加载网络的数据。那这个时候再执行mediaPlayer.start();肯定是没有播放的。后面想到了休眠,没错就是这么简单,将代码改成了
mediaPlayer=new MediaPlayer(); mediaPlayer.setDataSource(url[0]); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.prepareAsync(); new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(2000);mediaPlayer.start();}catch (Exception e){}} }).start();
问题得以解决。
贴上全部代码,app界面如图:
播放java文件
package com.wt.authenticwineunion.page.buys.activity;import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;import com.free.statuslayout.manager.StatusLayoutManager;
import com.wt.authenticwineunion.R;
import com.wt.authenticwineunion.base.BaseActivity;
import com.wt.authenticwineunion.base.BasePresenter;
import com.wt.authenticwineunion.util.ToastUtil;
import com.wt.authenticwineunion.widget.TitleView;import butterknife.BindView;
import butterknife.OnClick;
/*** 将音频以数组的格式返回过来,然后将他们进行下一首* */
public class PlayAudio2Activity extends BaseActivity {@BindView(R.id.title_view)TitleView titleView;@BindView(R.id.user_img)ImageView userImg;@BindView(R.id.title)TextView title;@BindView(R.id.title2)TextView title2;@BindView(R.id.new_time)TextView newTime;@BindView(R.id.all_time)TextView allTime;@BindView(R.id.progress)ProgressBar progress;@BindView(R.id.tui)ImageView tui;@BindView(R.id.last)ImageView last;@BindView(R.id.play)ImageView play;@BindView(R.id.next)ImageView next;@BindView(R.id.jin)ImageView jin;@BindView(R.id.content)TextView content;@BindView(R.id.toComment)TextView toComment;@BindView(R.id.number1)TextView number1;@BindView(R.id.pinlun)LinearLayout pinlun;@BindView(R.id.number2)TextView number2;@BindView(R.id.like)LinearLayout like;@BindView(R.id.fenxiang)LinearLayout fenxiang;private MediaPlayer mediaPlayer;private int w=0;private String url[]={"http://sc1.111ttt.cn:8282/2018/1/03m/13/396131232171.m4a?tflag=1546606800&pin=97bb2268ae26c20fe093fd5b0f04be80#.mp3","http://sc1.111ttt.cn:8282/2018/1/03m/13/396131226156.m4a?tflag=1546606800&pin=97bb2268ae26c20fe093fd5b0f04be80#.mp3","http://sc1.111ttt.cn:8282/2017/1/05m/09/298092035545.m4a?tflag=1546606800&pin=97bb2268ae26c20fe093fd5b0f04be80#.mp3"};@Overrideprotected void initStatusLayout() {statusLayoutManager = StatusLayoutManager.newBuilder(this).contentView(R.layout.activity_play_audio2).loadingView(R.layout.loading_layout).build();statusLayoutManager.showContent();}@Overridepublic void initView(Bundle bundle) {try {mediaPlayer=new MediaPlayer();mediaPlayer.setDataSource(url[0]);mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaPlayer.prepareAsync();new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(2000);mediaPlayer.start();}catch (Exception e){}}}).start();
// mediaPlayer.reset();}catch (Exception e){