自定义数据解析器,不显示弹幕,急需,谢谢

作者: morefreeliang创建于 2020年7月25日更新于 2022年12月19日

private fun createParser( context: Context, stream: InputStream? ): BaseDanmakuParser? { val parser: BaseDanmakuParser = object : BaseDanmakuParser() { override fun parse(): Danmakus { return Danmakus() } } if (stream == null) return parser val loader = DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_ACFUN) val funParser = AcFunDanmuParser(context) try { loader.load(stream) funParser.load(loader.dataSource) return funParser } catch (e: IllegalDataException) { e.printStackTrace() } return parser }

class AcFunDanmuParser(val context: Context) : BaseDanmakuParser() {

override fun parse(): IDanmakus {
    return if (this.mDataSource != null && this.mDataSource is JSONSource) {
        val jsonSource = this.mDataSource as JSONSource
        doParse(jsonSource.data())
    } else {
        Danmakus()
    }
}


private fun doParse(data: JSONArray?): Danmakus {
    var danmakus = Danmakus()
    return if (data != null && data.length() != 0) {
        for (i in 0 until data.length()) {
            try {
                val jsonObj = data.getJSONObject(i)
                if (jsonObj != null) {
                    danmakus = realParse(i, jsonObj, danmakus)
                }
            } catch (e: JSONException) {
                e.printStackTrace()
            }
        }
        danmakus
    } else {
        danmakus
    }
}


private fun realParse(index: Int, obj: JSONObject, danmakus: Danmakus): Danmakus {
    if (obj.length() != 0) {
        try {
            //{"content":"真好看","picUrl":"http://...png"}
            val content = obj.optString("content")
            val picUrl = obj.optString("picUrl")
            val item = this.mContext.mDanmakuFactory.createDanmaku(BaseDanmaku.TYPE_SCROLL_RL,this.mContext)

内容来源: bilibili/DanmakuFlameMaster