MMS问题及细节

1.接收彩信后发现占用了两个_id

原因:接收彩信前会收到一个push通知,这条通知存数据库占用一个_id,下载彩信正常保存在一个新的_id,接着删除通知数据。


2.彩信出现白板,显示不了附件

原因:

1发送的彩信白板:

       查看数据库发现,彩信移到了发件箱,但是没有pengding对应的数据,没有附件数据。暂不知如何导致。

已发现原因:发送过程中从缓存取出的数据有缺失,之后覆盖存进去了。

2接收的彩信白板:

       接收一条Vcard彩信后发现显示不了,导出数据库查看发现一切正常,但是smil描述中的的body标签内的<par>标签中没有子标签。

       彩信附件数据加载细节:每个PduPart对应part表中的一条数据,标签application/smil代表smil描述信息数据,存在text列中,在PduPart中以字节数组形式存在。

构造SlideShowModel需要先构造SMILDocument对象,SmilHelper类的getDocument方法构造了此对象,从PduBody中取出含application/smil的PduPart,再smilPart.getData()获取byte数组后解析得到SMILDocument对象。

如果彩信不含有smil信息则根据附件创建smil信息后得到SMILDocument对象。


3.彩信播放幻灯片是如何判断不支持格式:

       如果没有定义时间(dur)并且是video或者audio类型格式,则获取时间时返回-1其他格式为0,定义了时间则返回定义的时间,在SmilMediaElementImpl的getDur()方法内。而在MediaModel的setDuration(int duration)方法内如果duration小于0并且文件能播放,则用MediaMetadataRetriever获取文件实际播放时间。

       播放幻灯片的数据时间大致流程为:

先获取SlideshowModel

model = SlideshowModel.createFromMessageUri(this, msg);
接着获取SMILDocument
mSmilDoc = SmilHelper.getDocument(model);
mSmilPlayer.init(mSmilDoc);
在init方法中
    private static ArrayList<TimelineEntry> getTimeline(ElementTime element,
            double offset, double maxOffset) {
得到播放用的时间信息,TimelineEntry对象的规律总结结果为:每页幻灯片都有begin与end两标签的对象,而每页幻灯片中的附件也是每个附件由两个TimelineEntry对象表示。

播放的时间从TimelineEntry里去,而TimelineEntry里的时间从ElementTime(也是SMILDocument)中得到,ElementTime中的时间通过SlideshowModel得到,通过方法mSmilDoc = SmilHelper.getDocument(model),而这个方法里就是取MediaModel的时间设置为ElementTime中对象的时间。

值得注意的是:在给MediaModel设置时间时,如果media的时间大于幻灯片设置的父标签时间,则取父标签时间;如果media代表文字或者图片并且时间小于父标题时间,则取父标签时间。在SlideShowModel中。

                    if (media.getDuration() > parDuration) {
                        media.setDuration(parDuration);
                    } else if ((media.isImage() || media.isText())
                            && media.getDuration() < parDuration) {
                        media.setDuration(parDuration);
                    }

 

4.短信与彩信的发送报告

1)彩信的递送报告

d_rpt的值判断是否启用了发送报告,128为yes。

st     的值为发送报告的状态值。134与129为接收成功,128为超时.....

发送报告通过PushReceiver接收。

2)短信的发送报告

status 值为-1表示未启用发送报告,大于等于32表示正在发送,大于等于64代表失败了。

MessageStatusReceiver 为发送报告反馈的接收者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值