接上一篇博文, 来继续完善这个例子; 主要是新增了2个Activity, 显示设备与视频通道的TreeActivity, 浏览某一个通道的实时画面的ImageActivity. TreeActivity主要就是使用一个ListView控件按层次关系来显示区域、设备、视频通道信息。主要涉及以下几个方面知识点:
1、通过HTTP POST方式获取服务端响应的JSON格式数据
json格式当前被大量应用于web数据传输,你可以在这里了解什么是json;因为服务端采用Java开发,可以采用的json库很多,比较常见的如org.json(不需要额外的jar包,Android内置json格式数据解析包就是这个;但好像对自定义实体类支持不太好,也有可能是我不会用,因为以前做web开发都是采用xml来传输服务端响应的数据),json-lib(功能强大,但需要附带一些其他jar包,其通过反射方式来实现对用户自定义bean支持),最终啥都没有采用,直接Override toString() 方法简单处理下。
public String toString()
{
if(entType == 1)
{
return "{\"id\":" + id + ", \"code\":\"" + beloneto + "\", \"name\":\"" + hostName + "\"}";
}
else
{
return "{\"id\":" + id + ", \"code\":\"" + beloneto + "\", \"name\":\"" + hostName
+ "\",\n \"entType\":" + entType + ",\"type\": " + dvrType + ", \"ip\":\""
+ ip + "\",\n\"channel\":" + VchList.toString() + "}\n";
}
}
2、自定义ListView Adapter、列表项布局
可以通过自定义Adapter类灵活控制数据呈现与相关业务逻辑的处理,实现带图标显示、简单树形层次
3、简单数据存储配置SharedPreferences
SharedPreferences最终生成就是一个xml文件,很类似于Asp.Net开发中的Web.config或WinForm下的App.config,可以用于一些配置信息的存放,功能等同于Windows SDK开发中常用的ini文件。刚好博客园Terry_龙有一篇专门博文 Android 小项目之--数据存储【Shared Preferences】(附源码)讲述SharedPreferences的使用,大家可以参考。
4、Intent、Bundle类简单使用
接下来再简单介绍下ImageActivity,主要是获取TreeActivity通过Bundle传递过来的视频通道ID、名称等信息,然后开启一线程,间隔指定时间实时获取该路视频的视频画面,关键就是通过URLConnection、BitmapFactorydecodeStream(InputStream is)方法生成Bitmap,然后交给ImageView控件显示。该线程与UI线程交互通过消息Handler.sendMessage(Message msg)来处理,如果连续尝试请求5次数据都失败,则弹出对话框提示用户,并关闭当前ImageActivity。
5、全球化、本地化资源
在Android上处理这方面倒是比较容易,一句话就是定义对应的资源;在res目录下新建对应目录如values-en-rUS表示用户在设置-->选择区域为美国时界面对应字符串显示,横竖屏、不同分辨率处理也是通过类似方式处理,例如drawable-land-160dpi
一个好的应用服务需要好的大量内容提供支持,我在网上搜索了一把,很遗憾没有找到对外开放允许访问的设备;如果有对公共开放的,如道路监控摄像头、动物园、公园啥的,倒可以好好利用一把,看看路况,看看风景,如果能够看看大熊猫啥的那是更加好。AndroidDemo2.rar也就是说你下载到的demo是无法看到效果的,据说国外一些设备倒是支持http或rtsp访问并返回JPEG图片,也有不少设备对公众开放,如在CodeProject上看到的采用C#开发多路IP摄像机的视频监控系统(效果如图下),好像就是采用这一模式实现的。
由于自己也是刚开始学习Android,相关资料方面 - 电子文档eoeAndroid特刊以及近期在博客园连载的大话企业级Android开发都挺不错的,可以让初学者能够快速了解什么是Android,顺利进入Android开发领域。书籍方面博客园知识库就有介绍,以及相关博客内容也很多,可以看我博文Android学习资料汇总中的简单整理;当然更加详尽的资源,如果你有安装Android sdk 可以在其目录下找一下docs文件夹, 这个是google提供的类似于msdn的本地文档库,只是好像是英文的,但内容很全,带所有api说明(汗一下先,这个当前我利用远远不够)。
本文转自peterzb博客园博客,原文链接:http://www.cnblogs.com/peterzb/archive/2010/06/21/1761892.html,如需转载请自行联系原作者