DanmakuFlameMaster 使用小结

最近有在做一个视频软件,需要用到弹幕,使用过程中没有文档可以借鉴,比较痛苦,在这里写上一些总结


弹幕相关连接

http://www.oschina.net/p/danmakuflamemaster


弹幕格式有两种  xml和json的 代码里有相应的例子,由于我平常用惯了json格式,就只用json

结果json数据例子一打开我一脸阿库娅

[{"c":"0,16777215,1,25,196050,1364468342","m":"。。。。。。。。。。。。。。。。。。。。。。"}]


经过多次尝试以及上网搜索。。总结出来了。。

{"c": "播放时间,颜色,模式,字号,uid,发送时间", "m": "弹幕内容"}  

这里介绍下c里面各自参数:

1、播放时间单位是秒 如1.234

2、颜色是十进制:颜色对照例子如下

白色:16777215 红色:16711680 绿色:65280 蓝色:255 牡丹红:16711935 青色:65535

但是安卓里十进制颜色它直接用是懵逼的,所以我到danmaku源码里找到了十进制颜色转

化为可以直接setTextColor的代码:

public static int getColorByInt(int colorInt){
        return colorInt | -16777216;
}


3、模式在BaseDanmaku里有声明,总结一下就是

1:滚动弹幕
4:底端弹幕
5:顶端弹幕

但是又遇到了视频卡顿VideoView无法监听就没办法实时改变弹幕状态的问题

到网上找了如下的解决方法

Handler myHandler = new Handler(new Handler.Callback() {


        @Override
        public boolean handleMessage(Message msg) {
            // TODO Auto-generated method stub
            switch (msg.what) {


                case PROGRESS_CHANGED:
		if (mDanmakuView != null && mDanmakuView.isPrepared()) {
                        // 监听是否卡顿
                        int nowduration = mVideoView.getCurrentPosition();
                        if (old_duration == nowduration) {
                            //卡顿
                            if (mVideoView.isPlaying()) {
                                mDanmakuView.pause();
                            }
                        } else {
                            //正常
                            if (mVideoView.isPlaying()&&mDanmakuView.isPaused()) {
                                mDanmakuView.resume();
                            }
                        }
                        old_duration = nowduration;
                    }
                    myHandler.sendEmptyMessageDelayed(PROGRESS_CHANGED, 500);
                    break;
            }
            return false;
        }
    });
myHandler.sendEmptyMessage(PROGRESS_CHANGED);



 




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值