灿烂的阳光,苦涩的生活,认真做,你能行!

发布新日志

  • WMl(无线标记语言)

    2012-10-29 10:45:49

     WML(Wireless Markup Language - 无线标记语言)。它是一种从 HTML 继承而来的标记语言,但是 WML 基于 XML,因此它较 HTML 更严格。
      WML 被用来创建可显示在 WAP 浏览器中的页面。用WML编写的页面被称为 DECKS。DECKS 是作为一套 CARDS 被构造的。
      这种描述语言同我们常听说的HTML语言同出一家,都属于XML语言这一大家族。WML的语法跟XML一样,WML是XML的子集。
      HTML语言写出的内容,我们可以在我们的PC机上用IE或是Netscape等浏览器进行阅读,而WML语言写出的文件则是专门用来在手机等的一些无线终端显示屏上显示,供人们阅读的,并且同样也可以向使用者提供人机交互界面,接受使用者输入的查询等信息,然后向使用者返回他所想要获得的最终信息。
    编辑本段
    什么是 WMLScript?
      WML 使用 WMLScript. 在客户端运行简单的代码。WMLScript. 是一种轻量级的 JavaScript. 语言。不过,WML 脚本并不嵌在 WML 页面中。WML页面仅仅含有对脚本 URL 的引用。WML 脚本在 WAP 浏览器运行之前,需要先在服务器上被编译为字节编码。
      建立网页制作环境
      WML文件本身就是文本文件,所以编辑不成问题,顺手的编辑器都可以用。
      当然,由于目前的浏览器还都不能显示 WML页面,而我们又不能总在手机上进行测试(速度太慢),所以需要模拟器。现在象NOKIA、ERICSSON、MOTOROLA等手机制造商都生产了相应的产品,你只要下载就行了。当然除了模拟器以外,还需要图形制作转换器(用来制作WAP格式的图形文件)、字符转码器(汉字<=> UNICODE)等等,本站工具及论坛页面均有说明。
      WML文件结构
      WML的页面通常叫做桌面(DECK),由一组互相链接的卡片(CARD)组成。当移动电话访问一个WML页面的时候,页面的所有CARD都会从WAP服务器下载到设备里。CARD之间的切换由电话内置的计算机处理,不需要再到服务器上取信息了。CARD里可以包含文本、标记、链接、输入控制、任务(TASK)、图像等等。CARD之间可以互相链接。
      文档的实体包含在<wml>...</wml>标记中,文档里每个CARD又包含在<card>...</card>标记中,然后实际的文字段落则包含在...
      标记中。
      简单例子:
      <?xml version="1.0"?>
      <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
      "http://www.wapforum.org/DTD/wml_1.1.xml">
      <wml>
      <card id="HELLO" title="HELLO">
      Hello world!
      </card>
      </wml>
      显示结果如下:
      ------ HELLO ------
      Hello World!
      DECK里面各个组成部分的具体解释在本教程的其他部分有说明。
      WML字符集
      WML是XML的子集,继承了XML的字符集设置。WML文档缺省的字符集是UTF-8。
      要显示中文,有两种办法。最简单的办法就是在文档头使用encoding,即把第一行改为:
      <?xml version="1.0" encoding="gb2312"?>
      然而令人丧气的是,这种方法有些手机和模拟器并不支持(将来会的),所以目前第2种方法更普遍:不改变字符集设置,但是在写中文的时候采用UNICODE代表中文字符,如:
      <b>通讯录</b>
      代表:
      通讯录
      WML元素:标记(Tag)和属性
      WML的主要内容是文本,由于标记会降低与手持设备的通讯速度,所以WML标准里仅仅使用了很少一部分。用于表格和图像的的标记几乎都被排除了。
      与XML一样,在WML语言中,所有元素都放在符号"<" 和 ">"中,并且包含一个开始标志、一个结束标志和一个内容标志,或者使用自身结束的控制标记。就象这样:
      <tag>内容</tag> 例如:Hello World!
      或
      <tag/> 例如:
      和 <go href="#done"/>
      WML同样支持在标志中标出属性。属性是标志的附加信息,与元素的内容不一样,它并不在屏幕上显示出来。属性通常在元素的开始标志后指定。如上面最后一个例子。
      由于WML是XML的一种应用,因此所有的WML标记和属性都是大小写敏感的(<wml>跟<WML>完全不同),而且所有的标记都必须正确地结束。WML要求属性的值必须放在双引号或单引号内。单引号可放在属性标志内或双引号内。字符亦可作为属性的值。
      WML注释
      XML支持这样的注释格式:
      <!这句话你在手机上看不到-->
      这些注释在浏览器中并不显示出来。
      WML不支持嵌套元素注释。
      链接(URL)
      WML外部引用方式跟HTML相同
      http://www.itsalon.net/index.wml
      http://www.itsalon.net/index.wml#login
      内部引用,如果next是当前DECK中的一个CARD时,可以用这种方式:
      #next
      提供链接功能的WML元素有2个:<go>(参见任务)和<anchor>(参见事件)。
      CDATA
      XML支持CDATA的概念,以显示不需要解释的文本。下面的例子使用CDATA元素在WML页面中显示WML命令文本。
      <! [CDATA [ <card name="bogus">this is data
      </card> ] ]>
      浏览器窗口将显示如下内容:
      <card name="bogus">this is data
  • Windows下的wap应用,手机模拟测试工具

    2012-10-16 23:43:15

    用了几个wap测试的工具,Opera,M3Gate0.6版,WinWAP for Windows 4.0,UP.Simulator。简单对这几个工具做一下总结:

    Opera的测试的时候select的值总是获取不到,别的没有测试。

    WinWAP有时候地址打不开,不知道什么原因。

    感觉最好的是M3Gate和up,前者操作比较方便,对wml文档语法检查比较严格,适合做文档测试,但是其操作界面与实际的手机操作不大一样。

    UP的语法检查好像没用M3Gate严格,但是操作界面比较像实际的手机。

     

    M3Gate0.6版的下载链接:

    http://www.3671041.com/Soft/UploadSoft/2006down/20060101/WAP%E4%AF%C0%C0%C6%F7M3Gate1.2.rar

    M3Gate1.2版的下载链接:

    http://yndh.driversky.com/down/m3stp12.exe

     

    UP.Simulator的下载链接(或用“UP.SDK WAP模拟器”搜索):

    http://sex.flash920.com/Download.asp?ID=5631&sID=0

  • Android系統的一些特點和主要技術 .

    2012-09-25 21:17:59

    Android系統的一些特點和主要技術
          Android是基於Linux內核的操作系統。android的主要特點有:
          (1)無界限的應用程序;【Android上的应用程序可以通过标准API访问核心移动设备功能。通过互联网,应用程序可以声明它们的功能可以供其他应用程序使用。】
          (2)應用程序可以並行運行;【Android 是一种完整的多任务环境,其中应用程序可以并行运行。在后台运行时,应用程序可以生成通知以引起注意。】
          (3)應用程序可以輕鬆地嵌入網絡;【应用程序可以轻松地嵌入 HTML、Javascript. 和样式表。应用程序可以通过 WebView 显示网络内容。 】
         (4)应用程序是在平等的条件下创建的。【 Android 是一种完整的多任务环境,其中应用程序可以并行运行。在后台运行时,应用程序可以生成通知以引起注意。】


         Android的應用使用Java語言編寫的,當然還有jni的編程方式,會涉及一點C/C++,如果開發人員已經熟練掌握了Java,那Android會是不錯的選擇。因為Android是一個開源的產品,現很多原始設備製造商都選擇了Android,并制定了個性化的系統。在開發過程中,有眾多的樣本應用和開源應用提供下載,並且IDE 使用Eclipse,集成開發環境有豐富的源代碼模型,而且在源碼上處理的比較好,這使得開發應用的難度會降低。


               Android平臺下開發的企業移動應用程序舉例:(1)新網互聯的雨滴客戶端(客戶隨時隨地了解了解到企業最新動態,參與企業互動。同時,還可以實現企業優惠、促銷等活動信息的下行傳遞,通過雨滴客戶端消息功能免費將信息推送給目標手機用戶、實現與目標客戶“一對一”的精准傳播)這個案例主要達到企業的手機市場營銷的目的。
             
    未來發展趨勢----- Android 已迎來總過OEM廠商的擁抱,特別是國內的山寨文化,未來前景將一片光明。


    Android系统架构

    从上图可以看出   android 是由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。第二部分将详细介绍这5个部分。下面自底向上分析各层。

    1、Linux Kernel

      Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。 如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各尽其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。 如果你只是做应用开发,就不需要深入了解Linux Kernel层。

      2、Android Runtime

      Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。 大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以将 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。 Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。

      3、Libraries

      Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库: 系统C库--标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备 媒体库--基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG 界面管理--管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层 LibWebCore--新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图 SGL--基本的2D图形引擎 3D库--基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅 FreeType --位图和矢量字体渲染 SQLite --所有应用程序都可以使用的强大而轻量级的关系数据库引擎

      4、Application Framework

      通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。 开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。 所有的应用程序其实是一组服务和系统,包括: 视图(View)--丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器 内容提供者(Content Providers)--使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据 资源管理器(Resource Manager)--提供访问非代码资源,如本地化字符串、图形和布局文件 通知管理器(Notification Manager)--使所有的应用程序能够在状态栏显示自定义警告 活动管理器(Activity Manager)--管理应用程序生命周期,提供通用的导航回退功能

      5、Applications

      Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发! 从上面我们知道Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆迭(Software Stack),或称为「软件迭层架构」,迭层主要分成三层:操作系统、中间件、应用程序。从上面我们也看到了开源的力量,一个个熟悉的开源软件在这里贡献了自己的一份力量。

     

    Android Framework框架介绍

    我们在开发应用时都是通过框架来与Android底层进行交互,接触最多的就是应用框架层了。在Android SDK中内置了一些对象,其中最重要的组件要属Activities、Intents、Services以及Content Providers四个组件。
        什么是应用程序框架呢?框架可以说是一个应用程序的核心,框架是所有参与开发的程序员共同使用和遵守的约定,大家在其约定上进行必要的扩展,但程序始终保持主体结构的一致性。其作用是让程序保持清晰、一目了然,在满足不同需求的同时又不互相影响。
    Activities活动
           一个活动就是一个用户界面。一个应用程序可以定义一个或多个活动,每个活动都能够保存和恢复自身的状态。
    Intents意向
          Intent是描述一个特定活动的一种机制,比如“选取照片”、“拨打电话”等这类具体动作。在Android中,所有的东西都是通过Intents完成的,因此开发者有机会替代或重用大量的组件。比如有一个“发送邮件”的intent,当你应用程序需要发送邮件时可以激活这个intent。开发者甚至可以重新编写一个新的邮件应用程序,并注册为活动以处理这个intent代替标准的邮件应用程序。那么其他应用程序就可以使用新编写应用程序来发送邮件了。
    Services服务
           一个服务Service就是运行在后台、没有用户直接交互的任务,与Unix daemon类似。比如要做一个音乐播放器,可能会被另一个活动激活,但音乐是需要作为背景音乐播放,那么这种程序就可以考虑作为一种服务Service。然后别的活动可以来操作这个播放器。Android中内置了很多服务,可以方便的使用API进行访问。
    Content Providers内容提供者
           一个内容提供者content Provider就是由自定义的API封装读写操作的一套数据。Content Provider是不同应用程序之间共享全局数据最好的方式。比如,Google提供了联系人的Content Provider,包括姓名、地址、电话等所有信息在内的联系方式能够被所有应用程序使用。

                                           android应用程序的目录结构

    1、src : 没什么好说的,就是我们的源代码了
    2、gen : 不知道gen是不是generate的缩写,gen目录存放系统自动维护的一些文件,主要是 R.java。R文件由ADT自动维护,主要是为res目录下面的xml,图像,媒体等文件同步生成一个类似字典的东西,系统中对这些资源的引用可以通过R文件来操作。在编译的时候会对R文件进行检查,如果R文件中没有引用的资源不会被编译打包,以节省系统资源,另外,R文件只有一个,我们不需要也不要去改里面的内容。
    3、assets:assets也是一个资源文件夹,assets中的资源可以被打包到程序里面,和Res不同的地方是,ADT会为res下面的文件在R文件中生成一个ID,而不会为assets中的资源生成ID,因此要使用该目录下面的文件,需要通过完整路径的方式进行调用。(该目录下面的文件不会被编译,直接复制到程序安装包中)
    4、res:资源目录(我们不能在Res目录下面建立自定义目录,以及为已有的目录建立子目录)
         drawable:主要存放不同分辨率的图片文件
                 (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA480x854)
               (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
               (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
         layout:存放用于布局的xml文件
         values:用于存放一些常量(不同类型的变量存放在不同的文件中,该目录中xml的文件名 是不能改的)
                   strings.xml 定义字符串和数值
                   arrays.xml 定义数组
                   colors.xml 定义颜色和颜色字串数值
                   dimens.xml 定义尺寸数据
                   styles.xml 定义样式
         anim:存放一些和动画有关的xml文件
         xml:存放一些自定义的xml文件
         raw:该目录下面的文件不会被编译,直接复制到程序安装包中。

                             AndroidManifest.xml 讲解

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    3.       package="com.Funny"  
    4.       android:versionCode="1"  
    5.       android:versionName="1.0">  
    6.     <uses-sdk android:minSdkVersion="8" />  
    7.   
    8.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
    9.         <activity android:name=".HelloAndroidActivity"  
    10.                   android:label="@string/app_name">  
    11.             <intent-filter>  
    12.                 <action android:name="android.intent.action.MAIN" />  
    13.                 <category android:name="android.intent.category.LAUNCHER" />  
    14.             </intent-filter>  
    15.         </activity>  
    16.   
    17.     </application>  
    18. </manifest>  

    xmlns:android:  包含命名空间的声明。xmlns:android="http://schemas.android.com/apk/res/android",使得Android中各种标

                                     准属性能够在文件中使用,提供大部分元素的数据。
    package:           声明应用程序包。
    application:         包含package中application级别组件声明的根节点。此元素耶可包含application的一些全局和默认的属性,

                                     如标签、icon、主题、必要权限等。一个manifest能够包含零个或一个此元素,不能大于一个。
    android:icon:应用程序图标。
    android:lebel:应用程序名字。
    Activity:用户交互工具。
    android:name:应用程序默认启动的Activity。
    intent-filter:声明了指定一组组件支持的Intent值,从而形成IntentFilter。
    action:组件支持的Intent action 。
    category:组件支持的Intent Category。指定应用程序默认启动的Activity。
    uses-sdk: 应用程序所使用的sdk版本。




Open Toolbar