2012年11月25日星期日

Android开发笔记(八)


Android开发笔记(八)
  -- 组播与SQLite存储


  • Android程序利用组播收发数据
   > 实现功能:
     多台Android设备之间,或与PC、笔记本等设备,存在相同的WLAN环境的前提下,不同设备之间彼此收发数据,相互发现。

   > 网络环境:
     在相同的WLAN环境下。包括:相同BSSID的WIFI,或同SSID不同BSSID但可以直连。
     且所处的WLAN允许转发UDP数据包,因为组播是建立在UDP协议基础上的。

   > 组播流程:
     1. 创建一个组播Socket(MulticastSocket in Java)绑定固定的端口。这里可以设置Socket属性,如setLoopbackMode是否禁用收到本机的组播(环回)消息。
     2. 将该Socket加入到指定的组播IP地址,关于组播地址的说明可参考百度百科
     224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
     224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
     224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
     239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。

     3. 可以正常发送或接收组播消息。另外在发送接收之前设置Socket超时时间setSoTimeout。

     PS. 可以说Java SDK把组播功能封装在MulticastSocket,使用起来相当的简便的,完全谈不上难度。
     注意:
     a,收发组播数据包时候,建议最好先发组播数据,再接收组播数据。这样比较好,因为发出去数据包了,尽快保证其他设备可以收到数据包。
     b,不同设备间设置的组播地址及端口都应该保持一致,才可能彼此收发对方的组播数据。

   > 示例程序
简单的测试示例代码参见Github

  • Android程序Sqlite存储数据应用


  > 模块设计
     a 封装android.database.sqlite API;
          class SQLiteOpenHelperImpl,继承基类SQLiteOpenHelper。提供的功能主要包括:
          1,创建所需的SQLite数据库(*.db),同时负责创建数据表。
          2,对外提供只读或读写的SQLiteDatabase对象。
          3,关闭数据库。
          在什么时候创建表呢?当然了若表已存在则不必创建, SQL语句如“CREATE TABLE table_name IF NOT EXIST ……”,几个地方可能需要考虑创建数据表的,包括 onCreate或onOpen或getReadableDatabase或getWritableDatabase。
               
          class SQLiteManager.
          主要管理SQLiteOpenHelperImpl或SQLiteDatabase对象,为配合业务逻辑做一些功能实现。

     b 接口实现层
          class LogicModuleImplement
          即实现如下接口,更加面对业务需求的功能实现,要放在该类型完成。
     c 接口层
          class LogicModuleInterface
          提供对外使用的接口,具体定义内容根据不同项目的业务需求而定。

PS:以上简单描述模块设计源自个人项目开发的总结,可能完全不适合你,或全是错的。若可帮到当然最乐意了!

  Android中SQLite应用详解该链接的内容关于Android的SQLite应用讲解的很详细,有需要的同学不妨认真参考一下。

(完)

没有评论:

发表评论