Android编程观察者模式设计Word文档下载推荐.docx

上传人:b****5 文档编号:19253764 上传时间:2023-01-04 格式:DOCX 页数:15 大小:18.11KB
下载 相关 举报
Android编程观察者模式设计Word文档下载推荐.docx_第1页
第1页 / 共15页
Android编程观察者模式设计Word文档下载推荐.docx_第2页
第2页 / 共15页
Android编程观察者模式设计Word文档下载推荐.docx_第3页
第3页 / 共15页
Android编程观察者模式设计Word文档下载推荐.docx_第4页
第4页 / 共15页
Android编程观察者模式设计Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Android编程观察者模式设计Word文档下载推荐.docx

《Android编程观察者模式设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Android编程观察者模式设计Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

Android编程观察者模式设计Word文档下载推荐.docx

title>

远程视频会见系统<

/title>

local_port>

12600<

/local_port>

schedule_service_ip>

10.58.1.59<

/schedule_service_ip>

schedule_service_port>

12601<

/schedule_service_port>

/config>

源代码:

Config_Info.java:

[java]viewplaincopy在CODE上查看代码片派生到我的代码片

/**

*配置信息数据类型

*新建时间:

2014/12/8byjdh

*/

packagecom.example.helloanychat;

publicclassConfig_Info{

//标题

publicStringtitle;

//本机ip

publicStringlocal_ip;

//本机端口

publicintlocal_port;

//调度服务器ip

publicStringschedule_server_ip;

//调度服务器端口

publicintschedule_server_port;

}

IF_Config.java:

*接口:

配置类,读写

publicinterfaceIF_Config{

publicConfig_Infoget_config_info();

IF_Subject_Config.java:

配置类,观察者模式:

目标

*新建时间:

publicinterfaceIF_Subject_Config{

publicvoidregister_observer(IF_Observer_Configobserver);

publicvoidremove_observer(IF_Observer_Configobserver);

publicvoidnotify_observer();

IF_Observer_Config.java:

观察者

publicinterfaceIF_Observer_Config{

publicvoidupdate(Config_Infoinfo);

Config.java:

*配置信息类

*新建日期:

*修改日期:

2014/12/9byjdh

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.StringWriter;

import.Inet6Address;

import.InetAddress;

import.NetworkInterface;

import.SocketException;

importjava.util.ArrayList;

importjava.util.Enumeration;

importjava.util.List;

importjava.util.Timer;

importjava.util.TimerTask;

importjavax.xml.parsers.DocumentBuilder;

importjavax.xml.parsers.DocumentBuilderFactory;

importandroid.os.Environment;

importandroid.util.Log;

importorg.w3c.dom.Document;

importorg.w3c.dom.Element;

importorg.w3c.dom.NodeList;

importorg.xmlpull.v1.XmlPullParserFactory;

importorg.xmlpull.v1.XmlSerializer;

publicclassConfigimplementsIF_Config,IF_Subject_Config{

//配置信息

privateConfig_InfoInfo=newConfig_Info();

//存储观察者的列表

privateList<

IF_Observer_Config>

Observers=newArrayList<

();

//定时器

privateTimerTimer_Work=newTimer();

//工作间隔,单位:

ms

privatefinalintINTERVAL_WORK=5000;

/**

*构造函数

publicConfig(){

//生成配置信息

generate_config_info();

//创建定时线程

Timer_Work.schedule(newTask(),INTERVAL_WORK,INTERVAL_WORK);

//定时任务

}

//接口:

读写

@Override

publicConfig_Infoget_config_info(){

returnInfo;

//读写,观察者模式:

publicvoidregister_observer(IF_Observer_Configobserver){

Observers.add(observer);

publicvoidremove_observer(IF_Observer_Configobserver){

intindex=Observers.indexOf(observer);

if(dex>

=0){

Observers.remove(observer);

publicvoidnotify_observer(){

for(inti=0;

i<

Observers.size();

i++){

IF_Observer_Configo=(IF_Observer_Config)Observers.get(i);

o.update(Info);

*得到本机ip地址

*@return本机ip地址

privateStringgetLocalIpAddress(){

try{

for(Enumeration<

NetworkInterface>

en=NetworkInterface

.getNetworkInterfaces();

en.hasMoreElements();

){

NetworkInterfaceintf=en.nextElement();

InetAddress>

enumIpAddr=intf

.getInetAddresses();

enumIpAddr.hasMoreElements();

InetAddressinetAddress=enumIpAddr.nextElement();

//if(!

inetAddress.isLoopbackAddress()){

if(!

inetAddress.isLoopbackAddress()&

&

!

(inetAddressinstanceofInet6Address)){

returninetAddress.getHostAddress().toString();

}catch(SocketExceptionex){

Log.e("

WifiPreferenceIpAddress"

ex.toString());

returnnull;

*生成xml配置文件的String数据流

*Config_Info的本机ip信息不会保存

*@paraminfo:

配置信息

*@returnxml的String数据流

privateStringproduce_xml_string(Config_Infoinfo){

StringWriterstringWriter=newStringWriter();

//获取XmlSerializer对象

XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();

XmlSerializerxmlSerializer=factory.newSerializer();

//设置输出流对象

xmlSerializer.setOutput(stringWriter);

//开始标签

xmlSerializer.startDocument("

utf-8"

true);

xmlSerializer.startTag(null,"

config"

);

title"

xmlSerializer.text(info.title);

xmlSerializer.endTag(null,"

local_port"

xmlSerializer.text(Integer.toString(info.local_port));

schedule_service_ip"

xmlSerializer.text(info.schedule_server_ip);

schedule_service_port"

xmlSerializer.text(Integer.toString(info.schedule_server_port));

xmlSerializer.endDocument();

}catch(Eeptione){

e.printStackTrace();

returnstringWriter.toString();

*工作任务:

得到配置信息

privatevoidgenerate_config_info()

{

booleanok;

Filesd_path;

Filefile_cfg_dir;

Filefile_cfg;

FileOutputStreamout;

Stringstr;

FileInputStreamin;

Config_Infoinfo=newConfig_Info();

//得到本机ip地址

info.local_ip=getLocalIpAddress();

//获取SD卡目录

sd_path=Environment.getExternalStorageDirectory();

//判断文件夹是否存在

file_cfg_dir=newFile(sd_path.getPath()+"

//Remote_Meeting"

file_cfg_dir.exists()&

file_cfg_dir.isDirectory()){

System.out.println("

配置文件夹Remote_Meeting不存在!

"

ok=file_cfg_dir.mkdirs();

if(ok){

创建文件夹成功!

}else{

创建文件夹失败!

//判断配置文件是否存在

file_cfg=newFile(file_cfg_dir.getPath(),"

cfg.xml"

file_cfg.exists())

配置文件cfg.xml不存在!

file_cfg.createNewFile();

创建文件cfg.xml成功!

//生成初始化的配置数据

out=newFileOutputStream(file_cfg);

//保存默认配置

Info.title="

远程视频会见系统"

;

Info.local_port=12600;

Info.schedule_server_ip="

10.58.1.59"

Info.schedule_server_port=12601;

str=produce_xml_string(Info);

out.write(str.getBytes());

out.close();

//保存本机ip

Info.local_ip=info.local_ip;

//通知观察者

notify_observer();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

else

//解析xml文件

in=newFileInputStream(file_cfg);

DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();

DocumentBuilderbuilder=factory.newDocumentBuilder();

Documentdocument=builder.parse(in);

//获取根节点

Elementroot=document.getDocumentElement();

NodeListnode=root.getChildNodes();

//获得第1子节点:

标题

info.title=node.item(0).getFirstChild().getNodeValue();

//获得第2子节点:

本机端口

ocal_port=Integer.parseInt(node.item

(1).getFirstChild().getNodeValue());

//获得第3子节点:

调度服务器ip

info.schedule_server_ip=node.item

(2).getFirstChild().getNodeValue();

//获得第4子节点:

调度服务器端口

info.schedule_server_port=Integer.parseInt(node.item(3).getFirstChild().getNodeValue());

//判断配置信息是否变更

do

info.title.equals(Info.title))

break;

info.local_ip.equals(Info.local_ip))

if(info.local_port!

=Info.local_port)

info.schedule_server_ip.equals(Info.schedule_server_ip))

if(info.schedule_server_port!

=Info.schedule_server_port)

//全部相同

return;

}while(false);

//赋值

Info.title=info.title;

Info.local_port=info.local_port;

Info.schedule_server_ip=info.schedule_server_ip;

Info.schedule_server_port=info.schedule_server_port;

}catch(Exceptione){

*定时器线程定时工作

privateclassTaskextendsTimerTask{

publicvoidrun(){

TestClass.java:

publicclassTestClassimplementsIF_Observer_Config{

publicTestClass(){

publicvoidupdate(Config_Infoinfo){

System.out.printf("

-------------更新数据:

%s,%s,%d,%s,%d\n"

info.title,info.local_ip,info.local_port,info.schedule_server_ip,info.schedule_server_port);

MainActivity:

TestClasstestclass=newTestClass();

Configconfig=ewConfig();

mEditIP.setText(config.get_config_info().local_ip);

config.regi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1