hotbitmapgg / bilibili-android-client Goto Github PK
View Code? Open in Web Editor NEWAn unofficial bilibili client for android http://www.jianshu.com/p/f69a55b94c05 -- 该项目已停止维护!
License: Do What The F*ck You Want To Public License
An unofficial bilibili client for android http://www.jianshu.com/p/f69a55b94c05 -- 该项目已停止维护!
License: Do What The F*ck You Want To Public License
主页推荐布局,recyclerview有嵌套横向recyclerview,如果横向recyclerview很多,怎么解决横向recyclerview复用的问题?
![Uploading device-2016-09-07-155715.png…](界面low mem时候重叠啦)
抓包是发现有抓到数据的
比如搜索到四重奏,
ui上确实什么都没搜到的2233娘!
附上返回的json是{"code":0,"data":{"trackid":"9870625618631225261","page":1,"nav":[{"name":"番剧","total":2,"pages":1,"type":1},{"name":"UP主","total":5,"pages":1,"type":2},{"name":"影视","total":2,"pages":1,"type":3}],"items":{"season":[{"title":"苍之彼方的四重奏","cover":"https://i0.hdslb.com/bfs/bangumi/fa218bbc1f73d86824dddb3048691058a82ccf25.jpg","uri":"bilibili://bangumi/season/3106","param":"3106","goto":"bangumi","finish":1,"started":0,"index":"12","newest_cat":"tv","newest_season":"TV","cat_desc":"TV(1) ","total_count":12,"status":0,"attentions":0},{"title":"夜樱四重奏","cover":"https://i0.hdslb.com/bfs/bangumi/801ce571558800627e9b5f70c3a52ae7a09ae81d.jpg","uri":"bilibili://bangumi/season/472","param":"472","goto":"bangumi","finish":1,"started":0,"index":"3","newest_cat":"ova","newest_season":"OVA2","cat_desc":"TV(2) OVA/OAD/SP(2)","total_count":3,"status":0,"attentions":0}],"movie":[{"title":"生命四重奏","cover":"https://i0.hdslb.com/bfs/bangumi/6e620aa1622c718ba192c1ba2c96c62ec8f52cff.jpg","uri":"bilibili://video/3034521","param":"3034521","goto":"av","started":0,"total_count":0,"desc":"依山傍海的卡拉布里亚岛的小村子,住着一个已经时日不多的老牧羊人,他病了,他坚信他找到了续命的良药,他从教堂的地板上收集灰尘,每晚就水喝下。在一个羊圈里的一小片黑土地上,一只山羊生下了一只小白山羊,生命最初的不适只持续了一小段时间,它的眼睛立刻便睁开了,它的蹄子已经可以支撑身体的重量。整个村子的生活都被这个新生命的到来而充满了希望","screen_date":"2000-11-22 08:00:00","area":"法国","cover_mark":"免费观看","actors":"阿兰·卡瓦利埃、Jean-Louis Faure、Michel Labelle","staff":"导演: 阿兰·卡瓦利埃\n编剧: 阿兰·卡瓦利埃","length":88,"status":2,"attentions":0}],"archive":[{"title":"《四重奏》真的是神作吗?5分钟带你看完最近超火的日剧","cover":"https://i0.hdslb.com/bfs/archive/bf7b0f4cefcb1803b9467ad28ce059b92b64b2b4.jpg","uri":"bilibili://video/9450628","param":"9450628","goto":"av","play":24878,"danmaku":21,"author":"追剧侠","started":0,"total_count":0,"desc":"《四重奏》以四人的单相思为感情线,在不经意生活中勾勒出一幕幕人性的温情片段。四人从心怀不轨的结识到相互信任,让人体会到各种真实生活中的谎言,但谎言背后却是真性情","duration":"5:3","status":0,"attentions":0},{"title":"【5分钟人物os解说】日剧 《四重奏》 小心!会入坑的!","cover":"https://i0.hdslb.com/bfs/archive/ca9cf0349be80467965f50029aed739010017956.jpg","uri":"bilibili://video/8986533","param":"8986533","goto":"av","play":30482,"danmaku":125,"author":"DanDan·酱","started":0,"total_count":0,"desc":"抱歉又更晚了!不过四重奏好看!让我一不小心就入了日剧的坑!","duration":"4:58","status":0,"attentions":0},{"title":"【日剧/四重奏/ED】成人的法则【翻唱合集】(更新中)","cover":"https://i0.hdslb.com/bfs/archive/eb9044b79fc030c624fe036ff2db90c81c463170.png","uri":"bilibili://video/8918963","param":"8918963","goto":"av","play":15092,"danmaku":45,"author":"千夏晴香","started":0,"total_count":0,"desc":"http://www.youtube.com/watch?v=3TAXt7QQ7tg(其余链接分P简介) 最近质量较好的几个翻唱","duration":"30:8","status":0,"attentions":0},{"title":"【2016冬季日剧】四重奏~.预告【@FIX字幕侠】","cover":"https://i0.hdslb.com/bfs/archive/c89ef71c94a400d9cb95036b07320ee7d9e14149.jpg","uri":"bilibili://video/8033457","param":"8033457","goto":"av","play":33645,"danmaku":10,"author":"b站FIX字幕侠","started":0,"total_count":0,"desc":"FIX字幕侠 某天,忽然相遇的四个男女。\n这群人未能实现梦想,也未曾到过人生巅峰,驻足于平缓的下坡道前。他们四人决定组成四重奏,并一起在轻井泽生活。\n然而这个“偶然”中隐藏着巨大的秘密。","duration":"0:32","status":0,"attentions":0},{"title":"四重奏#松隆子#满岛光#高桥一生#松田龙平#看日剧学日语#一会日语学习","cover":"https://i0.hdslb.com/bfs/archive/aca26e4d5d64b4e9b00c51ba1f4cc77a44d37b05.jpg","uri":"bilibili://video/8744476","param":"8744476","goto":"av","play":51747,"danmaku":50,"author":"高贵冷艳教主一会","started":0,"total_count":0,"desc":"一会酱学习群230659050 一会酱qq824980948 \n一会酱周六晚上21:00直播公开课https://ke.qq.com/course/119258#term_id=100130590\n一会酱B站直播间:http://live.bilibili.com/372645","duration":"51:39","status":0,"attentions":0},{"title":"日劇四重奏 1-5話 官方濃縮版","cover":"https://i0.hdslb.com/bfs/archive/9c4adf7603351e5e0ee45115d159b7e77b6bd0fe.jpg","uri":"bilibili://video/8631718","param":"8631718","goto":"av","play":7795,"author":"cmyk8823","started":0,"total_count":0,"desc":"https://www.youtube.com/watch?v=I-FVSdSKX7c\u0026amp;feature=youtu.be \n今からでもまだ間に合う 6分間スペシャルダイジェスト!! 火曜10時 『カルテット』いよいよ後半戦に突入!【TBS】\n【1〜5話SPダイジェスト】\nカルテットも次週からいよいよ後半戦に突入します!\n1話から5話までの、6分間のスペシャルダイジェストを公開しました!","duration":"6:32","status":0,"attentions":0},{"title":"【四重奏主题曲完整\u0026ed】中日歌词版 『成人的法则』","cover":"https://i0.hdslb.com/bfs/archive/41aa6a31d24c182e1e19a148692343355aacb3ee.jpg","uri":"bilibili://video/8337142","param":"8337142","goto":"av","play":89059,"danmaku":326,"author":"一米月光1997","started":0,"total_count":0,"desc":"很喜欢的剧 完整版是ed+剧01cut(剪片子真是みぞみぞできました\n若有翻译错误,还请赐教~网易云里可以听完整版啦\n『おとなの掟』\n 歌:松たか子 満島ひかり 松田龍平 高橋一生 \n詞/曲:椎名林檎 \n\n翻译制作:一米月光1997","duration":"5:11","status":0,"attentions":0},{"title":"这部被各大公众号疯转的神剧《四重奏》,台词既丧心又戳心","cover":"https://i0.hdslb.com/bfs/archive/3522961b253f7b8fe2c0f6f5b9073bbd1680dad4.jpg","uri":"bilibili://video/8797979","param":"8797979","goto":"av","play":19987,"danmaku":40,"author":"知引mm","started":0,"total_count":0,"desc":"没时间刷《四重奏》没关系,5分钟告诉你,这部神剧都讲了什么?","duration":"5:13","status":0,"attentions":0},{"title":"【中日字幕】[四重奏ED] 成人法则","cover":"https://i0.hdslb.com/bfs/archive/b6ee844a0d5c3419cc5a799ca32749543a1758ec.jpg","uri":"bilibili://video/8504134","param":"8504134","goto":"av","play":32288,"danmaku":93,"author":"ll阿祈ll","started":0,"total_count":0,"desc":"おとなの掟_成人法则\n4月22日更新:日语字幕已根据官方歌词订正 48s音画不同步问题已修复\n视频及字幕制作:阿祈\n请勿二传二改","duration":"3:26","status":0,"attentions":0},{"title":"【四重奏】ED合集","cover":"https://i0.hdslb.com/bfs/archive/e093842418cd48dcf9e2ca5655b600d142600fcd.jpg","uri":"bilibili://video/9326990","param":"9326990","goto":"av","play":5096,"danmaku":1,"author":"里猫","started":0,"total_count":0,"desc":"片源来自fix字幕组","duration":"3:31","status":0,"attentions":0},{"title":"【完整版】(中日歌词)日剧四重奏ED 成人的准则 Doughnuts Hole","cover":"https://i0.hdslb.com/bfs/archive/aaf567b4c41d50d7ddd21f1ba0b21899aae672b1.jpg","uri":"bilibili://video/8456300","param":"8456300","goto":"av","play":15728,"danmaku":98,"author":"曼熱咖啡","started":0,"total_count":0,"desc":"四重奏 おとなの掟 \n已翻译\n四重奏 BGM/OST 精选:av8502388","duration":"3:26","status":0,"attentions":0},{"title":"《四重奏》ED-成人法则 带字幕 日文/渣中文","cover":"https://i0.hdslb.com/bfs/archive/73518b0a991d042d765e4a8a29faa96faeca577e.jpg","uri":"bilibili://video/8090015","param":"8090015","goto":"av","play":20302,"danmaku":54,"author":"阿良良木历sca","started":0,"total_count":0,"desc":"站里的没字幕,就随手贴了日文和渣中文","duration":"1:43","status":0,"attentions":0},{"title":"【原声音乐】fox capture plan -《四重奏》(Quartet)Original Soundtrack","cover":"https://i0.hdslb.com/bfs/archive/2688fefa4215c85c6d9842af79d6787d37ab4527.png","uri":"bilibili://video/9364859","param":"9364859","goto":"av","play":6056,"danmaku":8,"author":"太安静会窒息斯基","started":0,"total_count":0,"desc":"曲包自取 链接:http://pan.baidu.com/s/1eRUGiK6 密码:h5yv\r\n匆忙浮躁的都市中,四个与音乐相关的男男女女看似偶然般地邂逅了,他们分别是第一小提琴手卷真纪、大提琴手世吹雀、中提琴手家森谕高以及第二提琴手别府司。仿佛是对音乐的共同志向,他们组建了名为“甜甜圈洞”的四重奏乐队,暂时落脚于别府家位于轻井泽的别墅,过起了与世隔绝的人生。然而四个人终究无法超脱世俗存在,除了最基本的吃饭问题,每个人似乎都被各自的秘密所牵扯纠缠。。。","duration":"77:11","status":0,"attentions":0},{"title":"[治愈向 四重奏 满岛光]因为你我对这世界稍微有点期待/我曾想过一了百了","cover":"https://i0.hdslb.com/bfs/archive/87e835379a86472b8243d945e27be0ef96808715.jpg","uri":"bilibili://video/8473020","param":"8473020","goto":"av","play":11822,"danmaku":82,"author":"离酱的本命是SD呀","started":0,"total_count":0,"desc":" -\u0026amp;lt;我曾想过一了百了。失败的过去, 复杂的人际关系,冰冷的言语。生而为人,如此不堪。我曾想过一了百了,因为你这样的人存在于世上,我对这个世界稍微有点喜欢和期待\u0026amp;gt;-\n\n 我想要微笑面对这个世界。","duration":"4:49","status":0,"attentions":0},{"title":"2017冬季档日剧《四重奏》15秒预告(松隆子 满岛光 高桥一生 松田龙平)","cover":"https://i0.hdslb.com/bfs/archive/4439d126b85e6b26606240a3de3d2553f8d9d2fb.jpg","uri":"bilibili://video/7515897","param":"7515897","goto":"av","play":14587,"danmaku":30,"author":"wangkk","started":0,"total_count":0,"desc":"TBS 2016冬季日剧四重奏15秒预告(松隆子 满岛光 高桥一生 松田龙平)","duration":"0:17","status":0,"attentions":0},{"title":"男孩四重奏 Boy Quartette(2012)","cover":"https://i0.hdslb.com/bfs/archive/d4d9c95a1f89e2a6d2de6c8d3909140314611942.jpg","uri":"bilibili://video/2049617","param":"2049617","goto":"av","play":44345,"danmaku":2684,"author":"不是天才是地才","started":0,"total_count":0,"desc":"直传 第一重奏:夏日的序章 幸运蓝Good Blue 第二重奏:暗恋行板 爱之初,欲本善 第三重奏:梦魇交响乐 牛仔惊魂 cowboy 第四重奏:飘淼安魂曲 戴维与斯图 Davy and Stu 四部以青春男孩为主题的最优秀的短片,分别来自美国、法国、德国与瑞典。让我们一起重听荷尔蒙跳动的乐章吧,那些懵懂的、温热的、掺揉甜蜜和苦涩的男孩故事,其实一直存在于我们的记忆。","duration":"117:0","status":0,"attentions":0},{"title":"【光妹实拍】四重奏玩多米诺雪糕棒+多视角","cover":"https://i0.hdslb.com/bfs/archive/f0c139b54b5cc8c38110f7727341ebd11e328c9f.jpg","uri":"bilibili://video/9223227","param":"9223227","goto":"av","play":13381,"danmaku":35,"author":"Ringa飽丶","started":0,"total_count":0,"desc":"【公式】火曜ドラマ『カルテット』3_21 @quartet_tbs\nリクエスト多数につき公開します!!","duration":"1:26","status":0,"attentions":0},{"title":"『四重奏』 Tune For A Found Harmon完整版","cover":"https://i0.hdslb.com/bfs/archive/bdda111d36de69fe2aabf189400d22bff76f0d8a.jpg","uri":"bilibili://video/9331112","param":"9331112","goto":"av","play":6647,"danmaku":12,"author":"烂柯人啊_","started":0,"total_count":0,"desc":"Youtube\n沉迷四重奏无法自拔,就开始听OST,特别喜欢这首Tune For A Found Harmon,听说油管上有小提琴完整版就搬下来了,希望大家喜欢啊哈哈哈哈","duration":"2:34","status":0,"attentions":0},{"title":"梦魇】模拟人生4 日剧四重奏别墅","cover":"https://i0.hdslb.com/bfs/archive/40adbb49473053dd15fe2ef924a250fb2d363cc8.jpg","uri":"bilibili://video/11147587","param":"11147587","goto":"av","play":36,"author":"梦魇魇魇魇魇魇魇魇","started":0,"total_count":0,"desc":"有很久没有发视频了~前两天突发奇想还原一下喜欢的日剧建筑看看~本来录制了一个建造视频的但是因为软件原因没有录制成功,所以就简单给大家介绍一下这个房子~如果喜欢可以在模拟工坊里下载到,要开自定义内容才行哦~因为有一些不影响还原度的小零件用了mod。\n如果喜欢记得给我投币哟(^U^)ノ~","duration":"14:34","status":0,"attentions":0},{"title":"【四重奏/家雀】和你的美好回忆,早已成为我心脏的一部分","cover":"https://i0.hdslb.com/bfs/archive/02f3719f8350aa39a221fcb1a7ddb8fd1ead6c46.jpg","uri":"bilibili://video/11128478","param":"11128478","goto":"av","play":67,"author":"是啾啾咩","started":0,"total_count":0,"desc":"这个视频早就想剪了)都几个月过去了 终于有时间了。\n看四重奏的时候就非常喜欢家森和小雀 还哭过几次。(被SAJ和章鱼烧虐的不行)。BGM是RADWIMPS的《有心論》。用掏空心脏的歌词和继续emmm的脑补合成了这样的一个故事)一个【相识相知相恋到分手】的故事,过程从单恋到热恋到结束(没谈过恋爱的我哭了。冷色调是现在(是用两人的演奏串起来的)暖色调和黑白是回忆。\n标题是取自于歌曲中,啊。 你还在我的心脏里,使我活着,给予我爱。\n嗯 要幸福啊。\n谢谢观看w","duration":"4:13","status":0,"attentions":0}]}},"message":"","ttl":1}
视频可能暂时播放不了,获取的视频播放的地址被权限了
在有网络时正确获取数据后 在无网络下进行刷新emptyView在tab推荐和直播中显示错误 与番剧中不同
少一个工程的build.gradle
H:\SangGuiGu\bilibili-master-x\app\src\main\java\com\hotbitmapgg\ohmybilibili\network\RetrofitHelper.java
Error:(19, 48) 错误: OriginalRankService在com.hotbitmapgg.ohmybilibili.network.api中不是公共的; 无法从外部程序包中对其进行访问
Error:(437, 19) 错误: 找不到符号
符号: 类 OriginalRankService
位置: 类 RetrofitHelper
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.
我也在做一个影音类的app,推荐页布局大体上跟你的布局是一样的,但是它Section的content部分有些是两行两列布局,有些却是两行3列布局,我拿着你的代码修改了一下,效果不是很好,不知道有什么可以指点的,还有就是,按你这种写法,换一批的实现是不是只能全部刷新,不能做到局部刷新某个Section的内容? @HotBitmapGG
点击直播:一直黑屏
点击视频:视频缓冲失败,HTTP 404 Not Found
10-21 16:32:44.885 28129-28129/com.hotbitmapgg.ohmybilibili E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.hotbitmapgg.ohmybilibili, PID: 28129
java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:62)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5550)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)
Caused by: rx.exceptions.OnErrorFailedException: Error occurred when trying to propagate error to Observer.onError
at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:192)
at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120)
at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:204)
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:144)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:215)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5550)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)
Caused by: rx.exceptions.CompositeException: 2 exceptions occurred.
at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:192)
at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120)
at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:204)
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:144)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:215)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5550)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)
Caused by: rx.exceptions.CompositeException$CompositeExceptionCausalChain: Chain of Causes for CompositeException In Order Received =>
at android.util.Log.getStackTraceString(Log.java:330)
at com.android.internal.os.RuntimeInit.Clog_e(RuntimeInit.java:59)
at com.android.internal.os.RuntimeInit.access$200(RuntimeInit.java:43)
at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:85)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:66)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5550)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.SwipeRefreshLayout.setRefreshing(boolean)' on a null object reference
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment.finishTask(AllareasRankFragment.java:107)
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment.lambda$getAllareasRanks$77(AllareasRankFragment.java:96)
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment.access$lambda$3(AllareasRankFragment.java:0)
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment$$Lambda$4.call(Unknown Source)
at rx.internal.util.ActionSubscriber.onNext(ActionSubscriber.java:39)
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:139)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:215)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5550)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.SwipeRefreshLayout.setRefreshing(boolean)' on a null object reference
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment.lambda$getAllareasRanks$78(AllareasRankFragment.java:99)
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment.access$lambda$4(AllareasRankFragment.java:0)
at com.hotbitmapgg.ohmybilibili.module.home.discover.AllareasRankFragment$$Lambda$5.call(Unknown Source)
at rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44)
at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:157)
at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120)
at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:204)
at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:144)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:215)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5550)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)
java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
由于b站官方已更换了https,导致很多接口无法再抓包获取到了,所以视频地址接口获取不到,无法播放视频。
public class ActivityCenterActivity extends RxBaseActivity {
@BindView(R.id.toolbar)
Toolbar mToolbar;
@BindView(R.id.swipe_refresh_layout)
SwipeRefreshLayout mSwipeRefreshLayout;
@BindView(R.id.recycle)
RecyclerView mRecyclerView;
private int pageNum = 1;
private int pageSize = 20;
private View loadMoreView;
private List<ActivityCenterInfo.ListBean> activityCenters = new ArrayList<>();
private ActivityCenterAdapter mAdapter;
private HeaderViewRecyclerAdapter mHeaderViewRecyclerAdapter;
private boolean mIsRefreshing = false;
private EndlessRecyclerOnScrollListener mEndlessRecyclerOnScrollListener;
}
public class ActivityCenterActivity extends RxBaseActivity {
@BindView(R.id.toolbar) Toolbar mToolbar;
@BindView(R.id.swipe_refresh_layout)SwipeRefreshLayout mSwipeRefreshLayout;
@BindView(R.id.recycle) RecyclerView mRecyclerView;
private int mPageNum = 1;
private int mPageSize = 20;
private View mLoadMoreView;
private boolean isRefreshing = false;
private List<ActivityCenterInfo.ListBean> mActivityCenters = new ArrayList<>();
private ActivityCenterAdapter mAdapter;
private HeaderViewRecyclerAdapter mHeaderViewRecyclerAdapter;
private EndlessRecyclerOnScrollListener mEndlessRecyclerOnScrollListener;
}
我是来超越你的!!XD,啦啦~~~
你好 ToolBar 字体颜色默认是黑的 我找你的源码 并没有找到改的地方 请问你是怎么改成白色的
我把主题选择你注释掉的代码打开了,发现主题选择功能没有实现
case R.id.item_theme:
// 主题选择
CardPickerDialog dialog = new CardPickerDialog();
dialog.setClickListener(this);
dialog.show(getSupportFragmentManager(), CardPickerDialog.TAG);
return true;
不知道用哪个?
视频详情页点击up主后的关注,会跳转播放视频页面!
不是点关注,是点击播放按钮的位置。
应该是播放按钮隐藏了,但实际还存在的原因,所以可以点击。
最近在做播放器这一块,出现很多问题,我在开启MediaCodec后在某些手机上播放一些高码率的视频时,你把播放器切换至后台,此时surfaceview会调destroy,暂停播放器,然后再重后台切换至前台,surfaceview会调create,,开始播放器,流程都没有错,但是就是在某些机型上播放某些视频时,MediaCodec会报状态异常,跟踪代码是在create里设置surface出现的,我看你playView的实现,surfaceview在销毁后,你直接释放掉了播放器,surfaceview重新创建之后又会新建播放器并seek到之前的播放点,这样当然可以,但是这样每次从后台切换至前台后都会有个seek动作,你那没有进度条显示所以不是很明显,有了进度条每次都会先转几秒再开始播放,体验效果不怎么样,我看了B站播放器的效果,感觉它的surfaceView在切换至后台之后并没有被销毁,我猜测它是不是并没有把surfaceview放到activity里而是放在popupwindow里这样
我看RxFragment 继承于app.fragment MainActivity 中导的是v4的包 为什么可以用呢 QwQ
大神什么时候换下视频源接口啊,还有可以用mvp重构下啦
Error:(100, 0) Could not find method apt() for arguments [com.jakewharton:butterknife-compiler:8.4.0] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
Open File
我把as改成2.0.0之后出现了这个问题
可以加载更多吗,加载更多时候会不会复用
有实现的话 我最近在做项目正好学习下
获取html5的视频播放地址,http://www.bilibili.com/m/html5?aid=" + av + "&page=" + page,该接口已废弃,现已修改逻辑是视频详情接口获取的cid,然后用cid去获取视频播放的地址。
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.hotbitmapgg.ohmybilibili, PID: 12667 java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayList.java:308) at com.hotbitmapgg.ohmybilibili.module.home.region.HomeRegionFragment.-com_hotbitmapgg_ohmybilibili_module_home_region_HomeRegionFragment_lambda$4(HomeRegionFragment.java:97) at com.hotbitmapgg.ohmybilibili.module.home.region.HomeRegionFragment$-void_initRecyclerView__LambdaImpl0.onItemClick(HomeRegionFragment.java) at com.hotbitmapgg.ohmybilibili.adapter.helper.AbsRecyclerViewAdapter.-com_hotbitmapgg_ohmybilibili_adapter_helper_AbsRecyclerViewAdapter_lambda$1(AbsRecyclerViewAdapter.java:111) at com.hotbitmapgg.ohmybilibili.adapter.helper.AbsRecyclerViewAdapter$-void_onBindViewHolder_com_hotbitmapgg_ohmybilibili_adapter_helper_AbsRecyclerViewAdapter$ClickableViewHolder_holder_int_position_LambdaImpl0.onClick(AbsRecyclerViewAdapter.java) at android.view.View.performClick(View.java:4909) at android.view.View$PerformClick.run(View.java:20390) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5826) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1010) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
你好,最近在学习你这个项目,发现个小问题,首先切换到首页 番剧 一栏,然后从首页的任何一个页面切回番剧,番剧页面会自动向上滑动一段距离,请问大神这个是什么梗?
这一段
`private static class CacheInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
// 有网络时 设置缓存超时时间1个小时
int maxAge = 60 * 60;
// 无网络时,设置超时为1天
int maxStale = 60 * 60 * 24;
Request request = chain.request();
if (CommonUtil.isNetworkAvailable(BilibiliApp.getInstance())) {
//有网络时只从网络获取
request = request.newBuilder()
.cacheControl(CacheControl.FORCE_NETWORK)
.build();
} else {
//无网络时只从缓存中读取
request = request.newBuilder()
.cacheControl(CacheControl.FORCE_CACHE)
.build();
}
Response response = chain.proceed(request);
if (CommonUtil.isNetworkAvailable(BilibiliApp.getInstance())) {
response = response.newBuilder()
.removeHeader("Pragma")
.header("Cache-Control", "public, max-age=" + maxAge)
.build();
} else {
response = response.newBuilder()
.removeHeader("Pragma")
.header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
.build();
}
return response;
}
}`
测试后发现无网的情况下刷新所读取的 cache 失效时间是 maxAge ,换句话说, Response response = chain.proceed(request);
之后的代码在无网络的时候是运行不到的,我在这块研究的也不太透彻,想磋商一下解决方案...还望赐教啊
在"发现"页面点击搜索框会崩
Android 4.4
Htc one e8
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:355)
at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:324)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:285)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143)
at com.hotbitmapgg.bilibili.base.RxBaseActivity.onCreate(RxBaseActivity.java:38)
Error:com.android.jack.frontend.FrontendCompilationException: Failed to compile
at com.android.jack.Jack.buildSession(Jack.java:978)
at com.android.jack.Jack.run(Jack.java:496)
at com.android.jack.api.v01.impl.Api01ConfigImpl$Api01CompilationTaskImpl.run(Api01ConfigImpl.java:102)
... 85 more
:app:transformJackWithJackForDebug FAILED
Error:Execution failed for task ':app:transformJackWithJackForDebug'.
com.android.build.api.transform.TransformException: com.android.jack.api.v01.CompilationException: Failed to compile
FATAL EXCEPTION: main Process: com.hotbitmapgg.ohmybilibili, PID: 30444 java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayList.java:308) at com.hotbitmapgg.ohmybilibili.adapter.AttentionBangumiAdapter.onBindViewHolder(AttentionBangumiAdapter.java:52) at com.hotbitmapgg.ohmybilibili.adapter.helper.AbsRecyclerViewAdapter.onBindViewHolder(AbsRecyclerViewAdapter.java:104) at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5822) at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5855) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5091) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4967) at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029) at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:541) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578) at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170) at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3315) at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2843) at android.view.View.measure(View.java:18026) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5702) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692) at android.widget.LinearLayout.measureVertical(LinearLayout.java:760) at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) at android.view.View.measure(View.java:18026) at android.support.v7.widget.RecyclerView$LayoutManager.measureChildWithMargins(RecyclerView.java:7871) at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1440) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578) at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3315) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3124) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3568) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1767) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:131) at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42) at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1364) at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:852) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:639) at android.widget.FrameLayout.onLayout(FrameLayout.java:574) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:639) at android.widget.FrameLayout.onLayout(FrameLayout.java:574) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1197) at android.view.View.layout(View.java:16112) at android.view.ViewGroup.layout(ViewGroup.java:5185) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:639) at android.widget.FrameLayout.onLayout(FrameLayout.java:574) at android.vi
正版的主题切换很好,切换不闪屏,无缝切换的样子。本项目的切换主题会闪屏,能不能优化下,可以研究下正版是怎么实现的么,共享咯。
视频接口地址好像不能用,请求返回一直显示404
界面可以展示,但是点击任何一个item时就报错,报错原因我大致看了一下,是你的主题导致的。我一开始用的是模拟器(gemnytion--17)你的最低版本为19,当时我就改成17,包了我写的错误,后来我就换成真机测试,满足你的项目的构建,但是结果出现跟原来同样的错误。什么原因?
1.用户界面完善,正在开发中。
2.搜索界面的完善和优化。
3.番剧详情界面完善。
4.直播界面完善和优化。
5.主题切换和夜间模式填坑。
6.代码和布局优化。
7.主页6大模块添加缓存。
8.分区界面添加推荐页面。
9.番剧时间表优化,添加追番界面。
10.已知bug修复,MVP重构。
This report is automatically captured by Appetizer.io mobile quality monitoring
"devices": [
{
"android_version": "6.0",
"brand": "google",
"phone_model": "Nexus 5",
"product": "hammerhead"
}
]
"item": {
"available_external_size": 9548783616,
"available_ram_size": 14327808,
"brief": "Invalid index 0, size is 0",
"category": "crash",
"crash_time": 1488201501823,
"display": {
"height": 1776,
"rotation": "ROTATION_0",
"width": 1080
},
"exception_message": "Invalid index 0, size is 0",
"exception_name": "java.lang.IndexOutOfBoundsException",
"highlight": [
{
"filename": "ArrayList.java",
"line": "255",
"method": "java.util.ArrayList.throwIndexOutOfBoundsException"
},
{
"filename": "ArrayList.java",
"line": "308",
"method": "java.util.ArrayList.get"
},
{
"filename": "HomeBangumiBobySection.java",
"line": "75",
"method": "com.hotbitmapgg.bilibili.adapter.section.HomeBangumiBobySection.onBindHeaderViewHolder"
},
{
"filename": "SectionedRecyclerViewAdapter.java",
"line": "207",
"method": "com.hotbitmapgg.bilibili.widget.sectioned.SectionedRecyclerViewAdapter.onBindViewHolder"
},
{
"filename": "RecyclerView.java",
"line": "6279",
"method": "android.support.v7.widget.RecyclerView.Adapter.onBindViewHolder"
},
{
"filename": "RecyclerView.java",
"line": "6312",
"method": "android.support.v7.widget.RecyclerView.Adapter.bindViewHolder"
},
{
"filename": "RecyclerView.java",
"line": "5258",
"method": "android.support.v7.widget.RecyclerView.Recycler.tryBindViewHolderByDeadline"
},
{
"filename": "RecyclerView.java",
"line": "5521",
"method": "android.support.v7.widget.RecyclerView.Recycler.tryGetViewHolderForPositionByDeadline"
},
{
"filename": "GapWorker.java",
"line": "270",
"method": "android.support.v7.widget.GapWorker.prefetchPositionWithDeadline"
},
{
"filename": "GapWorker.java",
"line": "324",
"method": "android.support.v7.widget.GapWorker.flushTaskWithDeadline"
},
{
"filename": "GapWorker.java",
"line": "337",
"method": "android.support.v7.widget.GapWorker.flushTasksWithDeadline"
},
{
"filename": "GapWorker.java",
"line": "344",
"method": "android.support.v7.widget.GapWorker.prefetch"
},
{
"filename": "GapWorker.java",
"line": "370",
"method": "android.support.v7.widget.GapWorker.run"
},
{
"filename": "Handler.java",
"line": "739",
"method": "android.os.Handler.handleCallback"
},
{
"filename": "Handler.java",
"line": "95",
"method": "android.os.Handler.dispatchMessage"
},
{
"filename": "Looper.java",
"line": "148",
"method": "android.os.Looper.loop"
},
{
"filename": "ActivityThread.java",
"line": "5417",
"method": "android.app.ActivityThread.main"
},
{
"filename": "Native Method",
"line": "Native Method",
"method": "java.lang.reflect.Method.invoke"
},
{
"filename": "ZygoteInit.java",
"line": "726",
"method": "com.android.internal.os.ZygoteInit.MethodAndArgsCaller.run"
},
{
"filename": "ZygoteInit.java",
"line": "616",
"method": "com.android.internal.os.ZygoteInit.main"
}
],
"problem": "IndexOutOfBoundsException",
"session": {
"session_index": 4,
"session_step": 7,
"session_ticker": 7
},
"total_external_size": 28734615552,
"total_ram_size": 1058320384
}
"steps": [
{
"class": "com.hotbitmapgg.bilibili.module.common.SplashActivity",
"duration": "2015",
"status": "onResume",
"time": "1488201494424"
},
{
"class": "com.hotbitmapgg.bilibili.module.common.SplashActivity",
"duration": "197",
"status": "onPause",
"time": "1488201496439"
},
{
"class": "com.hotbitmapgg.bilibili.module.common.MainActivity",
"duration": "1590",
"status": "onResume",
"time": "1488201496636"
},
{
"class": "com.hotbitmapgg.bilibili.module.common.MainActivity",
"duration": "86",
"status": "onPause",
"time": "1488201498226"
},
{
"class": "com.hotbitmapgg.bilibili.module.video.VideoDetailsActivity",
"duration": "763",
"status": "onResume",
"time": "1488201498312"
},
{
"class": "com.hotbitmapgg.bilibili.module.video.VideoDetailsActivity",
"duration": "6",
"status": "onPause",
"time": "1488201499075"
},
{
"class": "com.hotbitmapgg.bilibili.module.common.MainActivity",
"duration": "2717",
"status": "onResume",
"time": "1488201499081"
},
{
"class": "com.hotbitmapgg.bilibili.BilibiliApp",
"duration": "0",
"status": "onCrash",
"time": "1488201501798"
}
]
"ticker": {
"CPU_usage": "0.23364486",
"native_heap": "22282240",
"native_heap_allocated": "20436200",
"native_heap_free": "1846040",
"time": "1488201497220"
},
{
"CPU_usage": "0.12765957",
"native_heap": "24117248",
"native_heap_allocated": "22055992",
"native_heap_free": "2061256",
"time": "1488201498201"
},
{
"CPU_usage": "0.42028984",
"native_heap": "27000832",
"native_heap_allocated": "23775392",
"native_heap_free": "3225440",
"time": "1488201499153"
},
{
"CPU_usage": "0.110497236",
"native_heap": "27000832",
"native_heap_allocated": "23144640",
"native_heap_free": "3856192",
"time": "1488201500105"
},
{
"CPU_usage": "0.070512824",
"native_heap": "27000832",
"native_heap_allocated": "24908648",
"native_heap_free": "2092184",
"time": "1488201501058"
},
{
"CPU_usage": "0.15508021",
"native_heap": "27787264",
"native_heap_allocated": "24990240",
"native_heap_free": "2797024",
"time": "1488201502010"
},
{
"CPU_usage": "0.032258064",
"native_heap": "27787264",
"native_heap_allocated": "25219264",
"native_heap_free": "2568000",
"time": "1488201502962"
},
{
"CPU_usage": "0.021621622",
"native_heap": "27787264",
"native_heap_allocated": "25219872",
"native_heap_free": "2567392",
"time": "1488201503914"
},
看到聚聚的这个项目觉得很厉害,自己也想实现一个 mobile web 版的 bilibili,但是想问聚聚的素材从哪里来呢?就是这些图片和设计图,找了半天没找到啊 sigh
可以参与开源吗
这个模块,一次性加载了180多条数据滑到底部就oom了
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.