01 2012 档案

摘要:毛主席说过,没有调查,就没有发言权,所以一定要深入代码内部,探个究竟。1什么是并发并发是指多个进程”同时“对共享资源的访问,这样做势必会带来一些问题,我们称这种情况为竞态。2并发处理方法来看看Linux中两种常见的并发处理方法(1)自旋锁自旋锁定义include/linux/spinlock_types.h20 typedef struct {21 raw_spinlock_t raw_lock;22 #ifdef CONFIG_GENERIC_LOCKBREAK23 unsigned int break_lock;24 #endif25 #ifdef CONFIG_DEBUG_SPINLOC 阅读全文
posted @ 2012-01-31 15:09 移动应用开发 阅读(230) 评论(0) 推荐(0) 编辑
摘要:基于duilib修改的版本上传了,叫wzduilib主要是为了不和duilib混淆。因为我可能有些地方移植或者修改做得不是很好,为了不败坏duilib的名声,所以命名为wzduilib。上传到https://github.com/weinyzhou/wzduilib上,需要的可以去下载一下。里面主要是针对wince做了移植和做了一些简单优化。csdn下载地址:http://download.csdn.net/detail/weinyzhou/4035734需要duilib的可以到duilib主页上下载 http://code.google.com/p/duilib/转载请保留此声明:http: 阅读全文
posted @ 2012-01-30 15:08 移动应用开发 阅读(344) 评论(0) 推荐(0) 编辑
摘要:利用ffmpeg做图像的pixel format转换你还在用libswscale吗?嘿嘿,过时啦!ffmpeg中有了新东西:libavfilter.使用它,可以完全代替libswscale,并且可以自动完成一些复杂的转换操作呢.libavfilter啊,用了都说好!但就是太复杂...如果你仅仅是做图像的pixel format处理,用libswscale是相当简单,可以看看最新的ffplay.c中的代码,被#if CONFIG_AVFILTER #endif包围的代码量非常大,而且让人一上来看得一头雾水,但为了赶潮流,我们还是得学习它啊...先弄清楚avfilter中的几个相关的概念(注意:如 阅读全文
posted @ 2012-01-30 14:20 移动应用开发 阅读(267) 评论(0) 推荐(0) 编辑
摘要:明天是农历的三十夜了,时间过的真快,又一年的时间如同尘土飞扬而去,这段时间一直都在看ANDROID源码,当然在这里我就不说关于源码的问题,自我对其ANDROID4.0的观后感就是~比之前的2.2与2.3的都改进了好多,可能是我学疏才潜,在里面还有太多需要我去用时间来征服的节点,所以在这里就不敢自笔为是,所以就把简单的直接把API里的一些例子给搬出来,看看效果吧,一个一个的来,也顺便把里面的源码给直接贴出来,2011年虽然对我们来说是一个不可多得的一年,但是同样2012年更是让我们期待着跳越前栏的感觉,让我们共同展望2012年吧:这个例子很简单,先看我截的几张图吧:以上就是简单的动画截图,废话不 阅读全文
posted @ 2012-01-21 22:54 移动应用开发 阅读(288) 评论(0) 推荐(0) 编辑
摘要:线程当一个应用被启动,系统创建一个执行线程,叫做"main"。这个线程是十分重要的,因为它主管向用户界面控件派发事件。其中包含绘图事件。它也是你的应用与界面工具包(android.widget和android.view包中的组件)交互的地方。于是main线程也被称为界面线程。系统不会为每个组件的实例分别创建线程。所有运行于一个进程的组件都在界面线程中被实例化,并且系统对每个组件的调用都在这个线程中派发。 结果,响应系统调用的方法(比如报告用户动作的onKeyDown()或一个生命周期回调方法)永远在界面线程中进程。例如,当用户触摸屏幕上的一个按钮时,你的应用的界面线程把触摸 阅读全文
posted @ 2012-01-20 07:45 移动应用开发 阅读(169) 评论(0) 推荐(0) 编辑
摘要:接下来以一个实际的例子来看I2C设备驱动,就以drivers/i2c/i2c-dev.c为例。先看它的初始化和注销函数static int __init i2c_dev_init(void) { int res; printk(KERN_INFO "i2c /dev entries driver\n"); res = register_chrdev(I2C_MAJOR, "i2c", &i2cdev_fops); if (res) goto out; i2c_dev_class = class_create(THIS_MODULE, " 阅读全文
posted @ 2012-01-19 16:03 移动应用开发 阅读(374) 评论(0) 推荐(0) 编辑
摘要:在drivers/i2c/busses下包含各种I2C总线驱动,如S3C2440的I2C总线驱动i2c-s3c2410.c,使用GPIO模拟I2C总线的驱动i2c-gpio.c,这里只分析i2c-gpio.c。i2c-gpio.c它是gpio模拟I2C总线的驱动,总线也是个设备,在这里将总线当作平台设备处理,那驱动当然是平台设备驱动,看它的驱动注册和注销函数。static int __init i2c_gpio_init(void) { int ret; ret = platform_driver_register(&i2c_gpio_driver); if (ret) print.. 阅读全文
posted @ 2012-01-19 15:56 移动应用开发 阅读(730) 评论(0) 推荐(0) 编辑
摘要:平台总线是内核实现的一条虚拟总线,Linux设备模型包含三个重要的元素,总线、设备和驱动,那看看平台总线又是怎样去实现的。首先看平台总线的定义: 946 struct bus_type platform_bus_type = { 947 .name = "platform", 948 .dev_attrs = platform_dev_attrs, 949 .match = platform_match, 950 .uevent = platform_... 阅读全文
posted @ 2012-01-19 15:23 移动应用开发 阅读(281) 评论(0) 推荐(0) 编辑
摘要:1. Speex使用SDP当使用SDP来描述使用Speex格式的会话时,映射是下面这样的:o 媒体类型 ("audio") 在"m="行中指定媒体的名字。o 媒体子类型 ("speex") 在SDP "a=rtpmap"行中指定编码名字。所需的"rate"参数也在"a=rtpmap" 行中,表明时钟频率。o 参数 "ptime" 和 "maxptime" 分别在SDP 的"a=ptime"行和"a=maxp 阅读全文
posted @ 2012-01-18 16:25 移动应用开发 阅读(297) 评论(0) 推荐(0) 编辑
摘要:1. RTP Speex 头部RTP头部在[RFC3550]中定义。本文定义RTP头部中各字段的用法。Payload Type (PT): 本格式的负责类型号。Marker (M) bit: 此位被用来标志一段无声后有声的开始。打在有声数据的第一个包上。 Speex支持声音检测,可以在无声时不产生帧数据。所以包可能是非连续传输的。Extension (X) bit: 见RTP的规定。Timestamp: 一个32位的整数,表示一个包中第一帧的采样时间。2. Speex的RTP负载格式Speex的RTP负载如图1所示。本格式没有附加的头部,所以只什用标准的RTP头部 头部之后是一个或多个负载数据 阅读全文
posted @ 2012-01-18 13:23 移动应用开发 阅读(458) 评论(0) 推荐(0) 编辑
摘要:当一个应用的组件开始运行,并且这个应用没有其它的组件在运行,系统会为这个应用启动一个新的Linux进程,这个进程只有一个线程.默认情况下,一个应用的所有组件都运行在一个进程和线程(主线程)中.如果一个应用的线程开始运行,并且已经存在这个应用的线程了(因为有这个应用程序的另一个组件已经运行了),于是这个组件就会在这个已有的进程中启动并且运行在同一个线程中.然而,你完全可以安排不同的组件运行于不同的进程,并且你可以为任何程序创建另外的线程.进程默认下,同一个程序的所有组件都运行在同一个进程中并且大多数程序不必改变这一状况.然而,如果你非要与众不同,也可以通过修改manifest文件实现.manif 阅读全文
posted @ 2012-01-15 10:05 移动应用开发 阅读(193) 评论(0) 推荐(0) 编辑
摘要:Adroid通过提供一个开发的开发平台,给开发者提供构建丰富而新颖的应用程序的能力。开发者可以自由的利用硬件设备、访问本地信息、运行后台服务、设置闹钟、在状态栏上添加通知等。 开发者完全访问那些被核心应用使用的framework的API,应用架构的设计,旨在简化组件的重用。任何应用都可以发布它的功能,以便其他的应用能够重用这些功能(在框架强制性安全约束之下)。同样这种机制允许组件被用户替换。 所有的应用程序都是一组相关的服务和系统,包括: 能够用于构建应用程序的丰富的、可扩展的视图(Views)集,包括列表、表格、文本框、按钮以及可嵌入的Web浏览器; 内容提供器(content provi. 阅读全文
posted @ 2012-01-12 21:22 移动应用开发 阅读(270) 评论(0) 推荐(0) 编辑
摘要:下例中实验了上面所讲的所有内容。此例有一个activity,其含有两个fragment。一个显示莎士比亚剧的播放曲目,另一个显示选中曲目的摘要。此例还演示了如何跟据屏幕大小配置fragment。主activity创建layout。@Override protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_layout); }主activity的layoutxml文档<LinearLayout xm... 阅读全文
posted @ 2012-01-12 20:28 移动应用开发 阅读(198) 评论(0) 推荐(0) 编辑
摘要:Computerworld在对多位IT高管进行调查之后,得出了2012 最需要IT技能,不过由于调查范围不够大,可能会出现偏差,仅供参考。1)编程及应用开发:需求从2010年的44%上升到2012年的61%。2)项目管理:不仅仅管理人才监管项目,还需要洞察用户需求并转述给其他IT员工,包括需求日益增加的商业分析师。3)服务台支持/技术支持:随着移动操作系统的发展,需求随之增加4) 网络设计:这类需求部分归结于虚拟化及云计算的发展,相关人员最好具有虚拟系统及思杰系统经验的人。5) 商务智能(Business Intelligence):这类需求大部分归因于企业日益将重心从节省成本转向技术投资。6 阅读全文
posted @ 2012-01-10 20:51 移动应用开发 阅读(139) 评论(0) 推荐(0) 编辑
摘要:导读:开发者是否真的还需要一种新的编程语言呢?选择已经有那么多了,现有的语言都让开发者应接不暇,可是各种新的编程语言还是在以惊人的速度产生!答案就是随着多核CPU、云计算、移动及分布式结构的不断发展,简单的语法已经不能适用,我们需要更加强大的语言!而以下10种编程语言,或正在走向成熟,或还在开发,可是它们都以全新的视角演绎着软件开发的艺术,每一种语言,都有可能打开编程世界的新大门!No.1:DartJavaScript在Web的交互性方面运用得很好,但是当Web应用程序的代码行过多时,它的弱点就会显现出来,因此,Google推出了新的结构化Web编程语言Dart用以替代JavaScript。与 阅读全文
posted @ 2012-01-10 17:58 移动应用开发 阅读(215) 评论(0) 推荐(0) 编辑
摘要:把条目添加到动作栏你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptionManu()来完成。你从fragment添加到菜单的任何条目,都会出现在现有菜单项之后。Fragment之后可以通过方法onOptionsItemSelected()来响应自己的菜单项被选择的事件。你也可以在fragemnt中注册一个view来提供快捷菜单(上下文菜单)。当用户要打开快捷菜单时,fragment的onCreateContextMenu()方法会被调用。当用户选择其中一项时,frag 阅读全文
posted @ 2012-01-08 15:05 移动应用开发 阅读(153) 评论(0) 推荐(0) 编辑
摘要:与activity通讯 尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例。 Fragment可以调用getActivity()方法很容易的得到它所在的activity的对象,然后就可以查找activity中的控件们(findViewById())。例如:ViewlistView=getActivity().findViewById(R.id.list); 同样的,activity也可以通过FragmentManager的方法查找它所包含的frament们。例如:ExampleFrag... 阅读全文
posted @ 2012-01-07 09:44 移动应用开发 阅读(134) 评论(0) 推荐(0) 编辑
摘要:transcode_init()函数是在转换前做准备工作的.其大体要完成的任务在第一篇中已做了猜测.此处看一下它的真面目,不废话,看注释吧://为转换过程做准备 static int transcode_init(OutputFile *output_files, int nb_output_files, InputFile *input_files, int nb_input_files) { int ret = 0, i, j, k; AVFormatContext *oc; AVCodecContext *codec, *icodec; OutputStream *o... 阅读全文
posted @ 2012-01-05 13:23 移动应用开发 阅读(219) 评论(0) 推荐(0) 编辑
摘要:良好的交流可以有效的降低项目的开发成本,相反不但可能数倍的增加成本,甚至可能导致项目的失败。 怎样在项目执行过程进行有效的交流呢? 1. 识别项目中交流主体。2. 明确交流主题、内容、目标。 3. 做好交流记录、分析、整理、执行。 4. 交流要客观、包容,不应带有主观情绪。 阅读全文
posted @ 2012-01-04 20:01 移动应用开发 阅读(111) 评论(0) 推荐(0) 编辑
摘要:Android是一个针对移动设备的软件包,包括操作系统、中间件和关键的应用程序。Android SDK提供了在Android平台上使用Java编程语言进行应用开发所必须的工具和APIs。 功能特点 1. Application Framework使组件能够重用和替换;2. 针对移动设备而优化的Dalvik虚拟机; 3. 集成了基于开源代码---WebKit引擎的浏览器; 4. 通过定制的2D图形库驱动图形优化;基于OpenGL ES1.0规范的3D图形(可选硬件加速); 5. 基于SQLite的结构化数据存储策略; 6. 对通用的音/视频以及图片格式的多媒体支持,包括MPEG4、H.264、. 阅读全文
posted @ 2012-01-04 19:50 移动应用开发 阅读(311) 评论(0) 推荐(0) 编辑
摘要:还是先看一下主函数吧:(省略了很多无关大雅的代码)int main(int argc, char **argv) { OptionsContext o = { 0 }; int64_t ti; //与命令行分析有关的结构的初始化,下面不再罗嗦 reset_options(&o, 0); //设置日志级别 av_log_set_flags(AV_LOG_SKIP_REPEATED); parse_loglevel(argc, argv, options); if (argc > 1 && !strcmp(argv[1], "-d")) { run 阅读全文
posted @ 2012-01-04 16:23 移动应用开发 阅读(250) 评论(0) 推荐(0) 编辑
摘要:我终于搞清楚这个问题了,大家使用谷歌地图手机版、MobileTrack以及网优用的FieldTest获取到的WCDMA基站Cellid为什么不是大家手头的CellTrack91或基站表里的数字了。。。这个问题说起来非常的囧,以前我就知道有这个问题,但我从来没有深究过,因为反正不影响我使用嘛。但昨晚睡觉前躺在床上无聊,打开FieldTest研究白天附近基站掉线问题,突然发现了WCDMA基站Cellid的编号规则…………以前2G时,大家用基站软件,获取到的LAC和CELL都是16进制的4位编号,比如我这里联通2G基站是:LAC:1E8CCELL:335F他们换算过来就是LAC=7820,CELL= 阅读全文
posted @ 2012-01-04 10:45 移动应用开发 阅读(325) 评论(0) 推荐(0) 编辑
摘要:(ffmpeg v0.9)框架最新版的ffmpeg中发现了一个新的东西:avconv,而且ffmpeg.c与avconv.c一个模样,一研究才发现是libav下把ffmpeg改名为avconv了.到底libav与ffmpeg现在是什么个关系?我也搞得希里糊涂的,先不管它了.ffmpeg的主要功能是音视频的转换和处理.其功能之强大已经到了匪夷所思的地步(有点替它吹了).它的主要特点是能做到把多个输入文件中的任意几个流重新组合到输出文件中,当然输出文件也可以有多个.所以我们就会发现,在ffmpeg.c中,有类似于如下的一些变量:static InputStream *input_streams = 阅读全文
posted @ 2012-01-03 19:25 移动应用开发 阅读(253) 评论(0) 推荐(0) 编辑
摘要:要管理fragment们,需使用FragmentManager,要获取它,需在activity中调用方法getFragmentManager()。你可以用FragmentManager来做以上事情:1使用方法findFragmentById()或findFragmentByTag(),获取activity中已存在的fragment们。2使用方法popBackStack()从activity的后退栈中弹出fragment们(这可以模拟后退键引发的动作)。3用方法addOnBackStackChangedListerner()注册一个侦听器以监视后退栈的变化。更多关于以上方法的信息,请参考“Fra 阅读全文
posted @ 2012-01-03 11:28 移动应用开发 阅读(164) 评论(0) 推荐(0) 编辑
摘要:从听说您到认识您,直到现在您悄然离去已有数更之年, 虽然我从小就喜欢计算机,但是由于环境让我对计算机的理解并不是那么熟悉,可以说在我大学之前对计算机算是一个文盲,最多也只懂得聊天,玩点小游戏,看点电影,也莫过于看过一些最基础与最简单的编程方法~VB基本语法,然而在大学里使我有了足够的时间去了解关于计算机方面的知识,这时候我才知道计算机知识的渊博无法僻经,它让我纠结,让我在学习中不知所措,尽管在后来尝试进入企业工作的时间里,也是精不匹力,我很苦恼,为此生活于工作时常产生冲突,这让我很无奈,毕竟精神是需要建立在基本的物质基础之上的,环境也不时压抑着一个人面临思想复杂的选择,多数人在这种情景下都只. 阅读全文
posted @ 2012-01-02 20:54 移动应用开发 阅读(208) 评论(0) 推荐(0) 编辑
摘要:为fragment添加用户界面 fragment一般作为activity的用户界面的一部分,把它自己的layout嵌入到activity的layout中。 一个 要为fragment提供layout,你必须实现onCreateView()回调方法,然后在这个方法中返回一个View对象,这个对象是fragment的layout的根。 注:如果你的fragment是从ListFragment中派生的,就不需要实现onCreateView()方法了,因为默认的实现已经为你返回了ListView控件对象。 要从onCreateView()方法中返回layout对象,你可以从layoutxml... 阅读全文
posted @ 2012-01-02 18:10 移动应用开发 阅读(269) 评论(0) 推荐(0) 编辑