小弟一直搞不好.代码如下.详细问题说明写在代码备注中打开bean.getUrl的URL,并获取该url下的bofang数据,在放入ijkplayer
public class LivePlayActivity extends BaseActivity implements View.OnClickListener {
private IjkVideoView ijkPlayer;
boolean mBackPressed = false;
private android.widget.TextView mTvLiveName;
private android.widget.TextView mTvLiveNum;
private android.widget.ImageView mIjkJubao;
private android.widget.ImageView mIjkGuanbi;
private android.widget.ImageView mIjkPingbi;
private android.widget.ImageView mIvAvatar;
private AnimationDrawable animationDrawable;
private android.widget.ImageView loadingView;
private android.widget.TextView tvTips;
private LinearLayout layout;
private ChannelDataBean.DataBean bean;
private CollectBeanDao collectBeanDao; @Override
protected boolean hasActionBar() {
return false;
} @Override
protected Object getIdOrView() {
return R.layout.activity_live_play;
} @Override
protected void initView() {
collectBeanDao = AppContext.getDaoInstant().getCollectBeanDao(); mTvLiveName = findViewById(R.id.tv_live_name);
mTvLiveNum = findViewById(R.id.tv_live_num);
mIjkJubao = findViewById(R.id.ijk_jubao);
mIjkGuanbi = findViewById(R.id.ijk_guanbi);
mIjkPingbi = findViewById(R.id.ijk_pingbi);
mIvAvatar = findViewById(R.id.iv_avatar);
loadingView = findViewById(R.id.loading_View);
layout = findViewById(R.id.layout);
tvTips = findViewById(R.id.tv_tips);
findViewById(R.id.img_collect).setOnClickListener(this); tvTips.setText(SpannableUtils.showDiffColor("系统消息:", 0, 5, Color.parseColor("#827D43")));
}
@Override
protected void initData() {
ijkPlayer = findViewById(R.id.ijk_player);
Bundle extras = getIntent().getExtras();
bean = (ChannelDataBean.DataBean) extras.getSerializable("data"); if (!(bean != null && bean.getUrl() != null && !bean.getUrl().isEmpty())) {
ToastUtils.showShort("暂无法获取影片信息,请稍后重试");
finish();
return;
}
mTvLiveName.setText(bean.getName());
mTvLiveNum.setText(bean.getNum());
GlideApp.with(this)
.load(bean.getBigpic())
.transform(new GlideCircleTransform(mContext))
.into(mIvAvatar); ijkPlayer.setVideoPath(bean.getUrl()); //把获取的视频地址 赋予ijkplayer
/*
说明:data中获取的数据,getNum,getName,getUrl.其中getUrl为视频地址.如::http://www.xxx.com/1.MP4
并把getUrl地址赋予播放器,进行播放.而需要修改的是.实际data数据中的getUrl并不是视频地址
而是另外一个api数据地址,如:http://www.xxx.com/api/?id=111,所以不能放入播发器播放
需要修改为:在bean.getUrl中获取视频地址,在给予ijkplayer,
http://www.xxx.com/api/?id=111的数据为:{"bofang":"https:\/\/www.xxx.com\/1.MP4"}
*/
ijkPlayer.setAspectRatio(IRenderView.AR_MATCH_PARENT);
animationDrawable = (AnimationDrawable) loadingView.getBackground();
animationDrawable.setOneShot(false);
animationDrawable.start();
ijkPlayer.setListener(mp -> { }, mp -> {
// 把动画资源设置为imageView的背景,也可直接在XML里面设置
animationDrawable.stop();
loadingView.setVisibility(View.GONE);
}, (mp, what, extra) -> false, (mp, what, extra) -> false);
ijkPlayer.start();
} @Override
protected void setListener() {
mIjkGuanbi.setOnClickListener(this);
mIjkJubao.setOnClickListener(this);
mIjkPingbi.setOnClickListener(this);
} @Override
public void onBackPressed() {
mBackPressed = true;
super.onBackPressed();
} @Override
protected void onDestroy() {
ijkPlayer.stopPlayback();
ijkPlayer.release(true);
ijkPlayer.destroyDrawingCache();
ijkPlayer.stopBackgroundPlay();
super.onDestroy(); } @Override
protected void onStop() {
super.onStop();
ijkPlayer.pause();
if (mBackPressed || !ijkPlayer.isBackgroundPlayEnabled()) {
ijkPlayer.stopPlayback();
ijkPlayer.release(true);
ijkPlayer.destroyDrawingCache();
ijkPlayer.stopBackgroundPlay();
} else {
ijkPlayer.enterBackground();
}
IjkMediaPlayer.native_profileEnd();
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ijk_jubao:
DialogHelp.getConfirmDialog(this, "是否举报该视频?", (dialog, which) -> finish()).show();
break;
case R.id.ijk_guanbi:
onBackPressed();
break;
case R.id.img_collect://搜藏
CollectBean collectBean = new CollectBean();
collectBean.setImg(bean.getBigpic());
collectBean.setName(bean.getName());
collectBean.setNum(bean.getNum());
collectBean.setUrl(bean.getUrl());
collectBeanDao.insertOrReplace(collectBean);
ToastUtils.showShort("收藏成功"); break;
case R.id.ijk_pingbi:
if (mIjkJubao.getVisibility() == View.VISIBLE || mIjkGuanbi.getVisibility() == View.VISIBLE) {
mIjkJubao.setVisibility(View.GONE);
mIjkGuanbi.setVisibility(View.GONE);
tvTips.setVisibility(View.GONE);
layout.setVisibility(View.GONE); } else if (mIjkJubao.getVisibility() == View.GONE || mIjkGuanbi.getVisibility() == View.GONE) {
mIjkJubao.setVisibility(View.VISIBLE);
mIjkGuanbi.setVisibility(View.VISIBLE);
tvTips.setVisibility(View.VISIBLE);
layout.setVisibility(View.VISIBLE);
}
break;
default:
break;
}
}
}
public class LivePlayActivity extends BaseActivity implements View.OnClickListener {
private IjkVideoView ijkPlayer;
boolean mBackPressed = false;
private android.widget.TextView mTvLiveName;
private android.widget.TextView mTvLiveNum;
private android.widget.ImageView mIjkJubao;
private android.widget.ImageView mIjkGuanbi;
private android.widget.ImageView mIjkPingbi;
private android.widget.ImageView mIvAvatar;
private AnimationDrawable animationDrawable;
private android.widget.ImageView loadingView;
private android.widget.TextView tvTips;
private LinearLayout layout;
private ChannelDataBean.DataBean bean;
private CollectBeanDao collectBeanDao; @Override
protected boolean hasActionBar() {
return false;
} @Override
protected Object getIdOrView() {
return R.layout.activity_live_play;
} @Override
protected void initView() {
collectBeanDao = AppContext.getDaoInstant().getCollectBeanDao(); mTvLiveName = findViewById(R.id.tv_live_name);
mTvLiveNum = findViewById(R.id.tv_live_num);
mIjkJubao = findViewById(R.id.ijk_jubao);
mIjkGuanbi = findViewById(R.id.ijk_guanbi);
mIjkPingbi = findViewById(R.id.ijk_pingbi);
mIvAvatar = findViewById(R.id.iv_avatar);
loadingView = findViewById(R.id.loading_View);
layout = findViewById(R.id.layout);
tvTips = findViewById(R.id.tv_tips);
findViewById(R.id.img_collect).setOnClickListener(this); tvTips.setText(SpannableUtils.showDiffColor("系统消息:", 0, 5, Color.parseColor("#827D43")));
}
@Override
protected void initData() {
ijkPlayer = findViewById(R.id.ijk_player);
Bundle extras = getIntent().getExtras();
bean = (ChannelDataBean.DataBean) extras.getSerializable("data"); if (!(bean != null && bean.getUrl() != null && !bean.getUrl().isEmpty())) {
ToastUtils.showShort("暂无法获取影片信息,请稍后重试");
finish();
return;
}
mTvLiveName.setText(bean.getName());
mTvLiveNum.setText(bean.getNum());
GlideApp.with(this)
.load(bean.getBigpic())
.transform(new GlideCircleTransform(mContext))
.into(mIvAvatar); ijkPlayer.setVideoPath(bean.getUrl()); //把获取的视频地址 赋予ijkplayer
/*
说明:data中获取的数据,getNum,getName,getUrl.其中getUrl为视频地址.如::http://www.xxx.com/1.MP4
并把getUrl地址赋予播放器,进行播放.而需要修改的是.实际data数据中的getUrl并不是视频地址
而是另外一个api数据地址,如:http://www.xxx.com/api/?id=111,所以不能放入播发器播放
需要修改为:在bean.getUrl中获取视频地址,在给予ijkplayer,
http://www.xxx.com/api/?id=111的数据为:{"bofang":"https:\/\/www.xxx.com\/1.MP4"}
*/
ijkPlayer.setAspectRatio(IRenderView.AR_MATCH_PARENT);
animationDrawable = (AnimationDrawable) loadingView.getBackground();
animationDrawable.setOneShot(false);
animationDrawable.start();
ijkPlayer.setListener(mp -> { }, mp -> {
// 把动画资源设置为imageView的背景,也可直接在XML里面设置
animationDrawable.stop();
loadingView.setVisibility(View.GONE);
}, (mp, what, extra) -> false, (mp, what, extra) -> false);
ijkPlayer.start();
} @Override
protected void setListener() {
mIjkGuanbi.setOnClickListener(this);
mIjkJubao.setOnClickListener(this);
mIjkPingbi.setOnClickListener(this);
} @Override
public void onBackPressed() {
mBackPressed = true;
super.onBackPressed();
} @Override
protected void onDestroy() {
ijkPlayer.stopPlayback();
ijkPlayer.release(true);
ijkPlayer.destroyDrawingCache();
ijkPlayer.stopBackgroundPlay();
super.onDestroy(); } @Override
protected void onStop() {
super.onStop();
ijkPlayer.pause();
if (mBackPressed || !ijkPlayer.isBackgroundPlayEnabled()) {
ijkPlayer.stopPlayback();
ijkPlayer.release(true);
ijkPlayer.destroyDrawingCache();
ijkPlayer.stopBackgroundPlay();
} else {
ijkPlayer.enterBackground();
}
IjkMediaPlayer.native_profileEnd();
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ijk_jubao:
DialogHelp.getConfirmDialog(this, "是否举报该视频?", (dialog, which) -> finish()).show();
break;
case R.id.ijk_guanbi:
onBackPressed();
break;
case R.id.img_collect://搜藏
CollectBean collectBean = new CollectBean();
collectBean.setImg(bean.getBigpic());
collectBean.setName(bean.getName());
collectBean.setNum(bean.getNum());
collectBean.setUrl(bean.getUrl());
collectBeanDao.insertOrReplace(collectBean);
ToastUtils.showShort("收藏成功"); break;
case R.id.ijk_pingbi:
if (mIjkJubao.getVisibility() == View.VISIBLE || mIjkGuanbi.getVisibility() == View.VISIBLE) {
mIjkJubao.setVisibility(View.GONE);
mIjkGuanbi.setVisibility(View.GONE);
tvTips.setVisibility(View.GONE);
layout.setVisibility(View.GONE); } else if (mIjkJubao.getVisibility() == View.GONE || mIjkGuanbi.getVisibility() == View.GONE) {
mIjkJubao.setVisibility(View.VISIBLE);
mIjkGuanbi.setVisibility(View.VISIBLE);
tvTips.setVisibility(View.VISIBLE);
layout.setVisibility(View.VISIBLE);
}
break;
default:
break;
}
}
}
解决方案 »
- 访问WebService 时 connection 总是timeout,请教
- lichee linux vmware ubuntu error
- 关于FFmpeg移植到android
- 关于android软件~~业务试用与开通~~此功能实现问题???
- iOS/Android 训练营:20位技术大牛实践分享,20场精品课程独家呈现!
- android如何删除动态加载的view
- android 求助啊。救命。
- webview触摸或滚动网页时放大镜效果实现
- launcher2启动后如何直接进到显示所有app的页面
- 垂直SeekBar setProgress() 成功设置好了值 但是滑块没动
- 菜鸟请教高手,为什么会有错误?(最下面是错误提示,不明白错误在哪里,请赐教)
- AS报错问题
api数据地址获取到正确的视频地址,再将视频地址放入ijkPlayer即可。你思路也很清晰,没太明白你还有什么需要问的。是不知道怎样根据api数据地址获取到正确的视频地址么