package com.team.zhuoke.danmu.msg;
import android.text.TextUtils;
import java.util.HashMap;
import java.util.Map;
public class MsgView {
private Map<String, Object> messageList;
public MsgView(String data) {
this.messageList = parseRespond(data);
}
/**
* 获取弹幕信息对象
*
* @return
*/
public Map<String, Object> getMessageList() {
return messageList;
}
/**
* 设置弹幕信息对象
*
* @param messageList
*/
public void setMessageList(Map<String, Object> messageList) {
this.messageList = messageList;
}
/**
* 解析弹幕服务器接收到的协议数据
*
* @param data
* @return
*/
public Map<String, Object> parseRespond(String data) {
Map<String, Object> rtnMsg = new HashMap<String, Object>();
String dataWithoutLast;
//处理数据字符串末尾的'/0字符'
dataWithoutLast = TextUtils.substring(data, 0, TextUtils.lastIndexOf(data, '/'));
//对数据字符串进行拆分
String[] buff = dataWithoutLast.split("/");
//分析协议字段中的key和value值
for (String tmp : buff) {
//获取key值
String key = TextUtils.substring(tmp, 0, TextUtils.indexOf(tmp, "@="));
//获取对应的value值
Object value = TextUtils.substring(tmp, TextUtils.indexOf(tmp, "@=") + 2, tmp.length());
//如果value值中包含子序列化值,则进行递归分析
// if (TextUtils.indexOf((String) value, "@A") > 0) {
// value = ((String) value).replaceAll("@S", "/").replaceAll("@A", "@");
// value = this.parseRespond((String) value);
// }
//将分析后的键值对添加到信息列表中
rtnMsg.put(key, value);
}
return rtnMsg;
}
/**
* 调试信息输出
*
* @return
*/
public String printStr() {
return messageList.toString();
}
}