请教大神.在bean.获取的数据中,再一次请求获取数据问题

Lundy66 2018-09-12 12:07:03
小弟一直搞不好.代码如下.详细问题说明写在代码备注中

打开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;
}
}
}
...全文
863 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
verejava 2018-09-14
  • 打赏
  • 举报
回复
Android 之 多媒体播放

http://www.verejava.com/?id=17474198200436

Android 之 HTTP 读取网上文件

http://www.verejava.com/?id=17476835806637
Jing丶無雙 2018-09-13
  • 打赏
  • 举报
回复
引用 3 楼 qq_42413360 的回复:
是啊大神!思路就是这样.但是我自己写的老错,不知道怎么写合适,能详细告知麽?


按照这个思路没有错,那么是你相关语法报错,还是数据处理有错,亦或是别的什么错误?
首先你得知道你错误的具体原因,并尝试自己解决,这点很重要。
如果自己无法解决,可以贴出来,大家再帮你分析看看
Android小码家 2018-09-12
  • 打赏
  • 举报
回复
去跟后台讨论(撕逼)一下
Lundy66 2018-09-12
  • 打赏
  • 举报
回复
引用 2 楼 xj396282771 的回复:
你思路也很清晰,没太明白你还有什么需要问的。
是不知道怎样根据api数据地址获取到正确的视频地址么

是啊大神!思路就是这样.但是我自己写的老错,不知道怎么写合适,能详细告知麽?
Jing丶無雙 2018-09-12
  • 打赏
  • 举报
回复
你要做的事情就是在调用这个ijkPlayer.setVideoPath(bean.getUrl());方法之前,通过bean.getUrl()中
api数据地址获取到正确的视频地址,再将视频地址放入ijkPlayer即可。

你思路也很清晰,没太明白你还有什么需要问的。

是不知道怎样根据api数据地址获取到正确的视频地址么

80,471

社区成员

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

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