⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packageparse.java

📁 j2me手机制作
💻 JAVA
字号:
package com.talkweb.micp.icsp.parse;

import java.util.Hashtable;
import java.util.Enumeration;

import java.util.Vector;
import com.talkweb.micp.pub.smil.RegionQueue;
import com.talkweb.micp.twsmil.*;

/**
 * PackageParse.java
 * <p>标题: 场景包解析类</p>
 * <p>描述: 解析打包好了的场景,包的格式为Hashtable数组
 * 其中各个Hashtable中key,约定如下:
 * "ID"	           文件名
 * "TYPE"	   文件类型
 * "STREAM_BYTE"   文件内容,byte数组(如果类型为xml,则为hashtable数据包)
 * 其中"TYPE"取值如下:smil:smil文件、image:image文件、
 *                   audio:audio文件、xml:xml文件
 * <p>版权: Copyright (c) 2006</p>
 * <p>公司: 湖南拓维信息系统股份有限公司</p>
 * 作者: 郭勇华
 * 版本: 1.0
 */
public class PackageParse {

    /**
     * 得到动漫场景数据包
     * @param cartoonData Hashtable[] 动漫场景数据包
     * @return Hashtable  解析完的数据包
     */
    public static Hashtable getCartoomData(Hashtable[] cartoonData, Vector vecSelect){
        Hashtable parsedCartoomData = new Hashtable(3) ;  // 解析完的数据
        Hashtable parseData = getParseData(cartoonData) ;

        SmilParse smilParse = new SmilParse((byte[])parseData.get("SMIL"),
                                            (Hashtable)parseData.get("MEDIA"));

//        Enumeration key = parseData.keys();

//        while(key.hasMoreElements()){
//            System.out.println("+++++++"+parseData.get(key)+"++++++++"+
//                               key);
//        }


        Vector vecRegionLabel = smilParse.getRegionQueueLabel() ;
        for (int j=0; j<vecRegionLabel.size(); j++){
            RegionQueue vecele = (RegionQueue)vecRegionLabel.elementAt(j);
            System.out.println("+++++++++++++"+j+"++++++++++++++++++");
            System.out.println("+++++++++++++"+vecele.getId()+"++++++++++++++++++");
            for (int k=0; k<vecele.size(); k++){
                //SmilRelation sEle1 = (SmilRelation) vecele.elementAt(k);
                System.out.println("hashcode: "+((int[])vecele.elementAt(k))[0]+
                                   "queueOrder: "+((int[])vecele.elementAt(k))[1]) ;

            }
            System.out.println("+++++++++++++"+j+"++++++++++++++++++");

        }

        Hashtable hashSmilLabel = smilParse.getSmilLableObject() ;
        Enumeration e1 = hashSmilLabel.elements();

        while (e1.hasMoreElements()){
            Object obj = e1.nextElement();
            if (obj instanceof ImgLabel){
                ImgLabel img = ((ImgLabel)obj) ;
                System.out.println("--------ImgLabel%%%%%%%%%%%%");
                System.out.println("begin:"+img.getBegin()+
                                   " dur:"+img.getDur()+
                                   " end:"+img.getEnd()+
                                   " fill:"+img.getFill()+
                                   " id:"+img.getId()+
                                   " data:"+img.getImgData()+
                                   " name:"+img.getName()+
                                   " region:"+img.getRegion()+
                                   " repeatCount:"+img.getRepeatCount()+
                                   " repeatdur:"+img.getRepeatDur()+
                                   " src:"+img.getSrc());
            }
            else if(obj instanceof AudioLabel){
                AudioLabel img = ((AudioLabel)obj) ;
                System.out.println("---------------AudioLabel%%%%%%%%%%%%%");
                System.out.println("begin:"+img.getBegin()+
                                   " dur:"+img.getDur()+
                                   " end:"+img.getEnd()+
                                   " fill:"+img.getFill()+
                                   " id:"+img.getId()+
                                   " data:"+img.getAudioData()+
                                   " name:"+img.getName()+
                                   " region:"+img.getRegion()+
                                   " repeatCount:"+img.getRepeatCount()+
                                   " repeatdur:"+img.getRepeatDur()+
                                   " src:"+img.getSrc());

            }

            //System.out.println(e1.nextElement().toString());
        }


        for (int k=0; k<vecSelect.size(); k++){
            System.out.println("\\\\\\\\\\\\") ;
            System.out.println(((String[])vecSelect.elementAt(k))[0]+"<||>"+((String[])vecSelect.elementAt(k))[1]) ;
            System.out.println("\\\\\\\\\\\\") ;

        }




        parsedCartoomData.put("LABEL", smilParse.getSmilLableObject());
        parsedCartoomData.put("REGION", smilParse.getRegionQueueLabel());
        parsedCartoomData.put("SELECT", vecSelect);
        smilParse = null ;
        parseData = null ;
        return parsedCartoomData ;
    }

    /**
     * 得到初步解析的数据[smil,img&audio,select(xml格式)]
     * @param cartoonData Hashtable[] 动漫场景数据包
     * @return Hashtable 初步解析的数据
     */
    private static Hashtable getParseData(Hashtable[] cartoonData){
        Hashtable parseData = new Hashtable(3);   //初步解析的数据
        Hashtable mediaData = new Hashtable();    // 媒体位数据
        for(int data = 0; data < cartoonData.length ; data++ ){
            Hashtable dataEle = cartoonData[data] ;
            String type = (String)dataEle.get("TYPE") ;  // 数据的类型
            String id = (String)dataEle.get("ID") ;  // 数据的id(即src)

            if (type.equals("SMIL"))
            {
                parseData.put("SMIL",dataEle.get("STREAM_BYTE")) ;
            }
            else if (type.equals("IMG") || type.equals("AUDIO"))
            {
                mediaData.put(id,dataEle.get("STREAM_BYTE")) ;
            }
            else if (type.equals("XML"))
            {
                System.out.println(dataEle.get("STREAM_BYTE"));
                parseData.put("XML",dataEle.get("STREAM_BYTE")) ;
            }

        }
        parseData.put("MEDIA",mediaData) ;
        mediaData = null ;
        return parseData ;
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -