[回目录]

一、背景

2010年5月,我通过一位熟人介绍,了解到有这么一份工作,做“手机操作系统”,当然我知道实际上肯定不是这样,操作系统是软件的核心技术之一,岂是我等凡人能做出来的?不过这听起来是相当有挑战和吸引力的,于是我打算前往了解。也是那个时候开始认识了老吴,打算做的东西其实是手机上的一个应用软件,虽然我从2007年就开始使用Windows Mobile,但真正做上面的程序却是没有过,只写过点Hello World程序,算不上掌握,但凭着我对Windows编程扎实的基础,我相信写写应用应该不是什么难事,并且如果这个项目由我来主导的话,这会很有成就感,再听听老吴所说,感觉应该是那么回事,于是打算开始这份工作。

二、项目过程大致回顾

2.1,需求的来源

老吴是这个项目的发起者和推动者,他是一名资深手机玩家,他拥有手机无数部,那些年推出的手机,没有哪部是他不了解的,也正因为这样,他十分看好手机软件的前景(当时“移动互联网”还没那么火热)。

项目的“灵感”来源我认为有两方面,一是“无限今日”,另一是“HTC Sense”(又叫“马尼拉”),“无限今日”是Windows Mobile平台下的一套桌面软件,最大的卖点是能非常自由地给你定制出非常个性化的桌面(定制工作有些复杂,需要花些时间去学习如何使用),试想想你的手机拿到别人面前看起来是这样的与众不同,那可有多cool;而HTC Sense则是HTC给自己的Windows Mobile的手机提供的一个桌面插件,具有相当花哨的界面,这就是所谓的“差异化”吧,试想想,同样是Windows Mobile手机,一个有这么花哨的界面,另一个什么都没有,你会选谁?

下面是一些截图,有些截图来自于互联网,如有侵权,请联系本人,我将在第一时间删除。

无限今日

Htc sense

大家从截图上看,Windows Mobile其实也可以很精彩,不管从功能上还是从界面上看,都不会比iPhone差多少,但为什么会一下子就没落了呢?这里面原因很多的,我之后会提到。

所以,我前期主要研究的目标就是如何实现一个类似HTC Sense这样的界面。

今天回顾起这个项目,也许谁都会有这么一个问题:为什么不直接开发Android,而是开发Windows Mobile?要知道,2010年是Android迅猛崛起的一年,而Windows Mobile则迅猛没落。关于这个,老吴后来也承认自己当初策略的错误,在这个事情上拖延了太多的时间,并且对新的机会把握不足。

2.2,人员搭配

手机软件是由我来写,老吴相当于是产品经理,主要的需求是从他那里来的,另外有一名美工和一名网站开发,总共四个人。大约一年后有另外3个人加入到网站开发这边来,后面陆续离开,所以最“鼎盛”的时候,从事这个项目的相关的人员达到了7人,但直接做手机软件开发的始终只有我一个人。其他人对我的直接工作上的帮助很有限。

2.3,前期技术积累

项目的开展并不怎么顺利,因为缺乏相关的支持,我花了好长一段时间去熟悉环境以及做相关的基础技术研究,还有一点很关键的就是:需求并不是那么的明确,由于种种原因,中间还做了许多调整,这个后面我会一一提到。

2.3.1 贴图及贴图效率

围绕着我的最大的问题就是:一、如何贴图;二、贴图的效率。要实现花哨的界面,不可能依靠简单的线条和文本,必须有贴图,从美工那里拿到图,然后用程序贴到窗口上去,但这仅仅完成了一小部分,还有更大的问题,就是贴图效率,为什么效率重要?因为要实现流畅的滑动效果,就必须要快,起码达到每秒30帧的贴图速度,否则用户会觉得不爽,又叫“用户体验差”。

2.3.2 深度定制

无限今日是可深度定制的,而我的程序如何做到?这是困扰我的另一大难题,我研究了无限今日的做法,它是利用了自定义的脚本来实现定制的,感觉对我的实现而言太难,并且它的设计也并不怎么好,我还想起了用于定制《魔兽世界》UI的lua语言,但花了些时间去研究后,就发现引入的难度也很高,要掌握太不容易。最后没办法就先暂时不考虑这个事情。

2.3.3 网络通信

现在的Android和iOS程序要访问网络根本不是什么问题,但Windows Mobile却真的是个问题,它有一套晦涩难懂的叫“连接管理器”的规则,并且不是每个手机都很好地遵循这套规则,导致网络访问有时候成功有时候失败,而且完全吃不准,(后面会具体提到为什么会这样)所幸的是我们一开始只有一个天气更新需要使用网络。

2.3.4 UI细节

要求能够像iPhone那样直接用手指划屏,拖动,识别出用户的动作到底是拖动还是选中,拖到尽头了要有回弹功能,回弹要有“弹簧”效果,手指放开了之后要有惯性效果并带减速……对于现在的手机系统来说,这些都是再普遍不过的功能,但如果要你去写这些功能,你考虑如何实现?另外程序如何全屏?如何避免用户按挂机键的时候把程序隐藏掉?如何“锁屏”?如何处理来电的时候不遮挡电话面板?……(太多太多的细节)

其实我遇到的技术上的问题远远不止这些,这里仅仅是粗略地把最主要的几个问题列一下。

解决这些问题问题的最主要的途径就是google和自行尝试。当然,还可以去QQ群里问人,但通常很少会有人理我,一来这些问题都没有什么普遍性,没几个人懂,二来大家都很忙,没空也没义务来回答我的提问。除此之外还可以上csdn这种论坛提问,尽管也很难得到什么答案。我还常到微软官方论坛提问,但由于微软渐渐放弃了对Windows Mobile的支持,我能从中获得的帮助还是太少。

2.4,名称及功能的进一步确定

讲了这么多,我始终没提到的就是这个项目叫什么名字,这是因为:这个名字是做了好长一段时间之后才确定的,用“摸着石头过河”来形容我们这个历程再适合不过,一边做,一边调整我们的目标,大致框架的敲定大约已经是2010年11月这个时候了,距离我加入的时候已有半年。它叫:SoSoPi(中文发音“搜搜皮”)。名字当然是老吴的主意,我起初对这个名字颇感不适,但时间一长就习惯了。

这里先给出一张sosopi的截图,让大家对它有些初步认识。

最早做起来的几个功能是:首页、联系人、快捷方式和锁屏。然后再逐步往其中添加别的功能模块。到此,此项目的目标已基本明确,可以认为是另一种HTC Sense,事实上,它还具备了许多HTC Sense所没有的特性。

而开发的过程并非很顺利,我也在一路上克服了数不清的技术难关,可惜直到最后这个东西还是有很多问题,有些问题根本不在我能控制的范围之内,这个后面说到具体开发的时候会提到。

2.5,各种功能

老吴是个想法很多的人,前面说这么多唯一没提到的就是盈利,因为这个项目到最后也没盈利,所以在此不表。老吴后面陆续添加了很多功能,比如阅读,音乐,邮件和大量的个性化配置功能。比如允许修改首页元素的摆放位置,别小看了这个功能,因为这个功能引来无数喜欢折腾的用户;再比如语言可定制,把语言字符串写入一个资源文件中,允许用户修改,因为这个我们竟然还有了俄罗斯和捷克的用户。

不断地有用户给我们提建议,老吴的思绪和灵感也不断涌现,而我却做得有些力不从心,很大程度上由于各种技术上的原因,积累不足,平台落后,缺乏支持等,所以虽然添加了许多的功能,但距离老吴的要求还是相去甚远。

2.6,皮肤编辑器

我认为这才是这个软件真正吸引人的地方,在此之前,我根本无法明白用户有多么地喜欢折腾他们的手机。

有了皮肤编辑器,用户也就很方便地去自定义他们喜爱的皮肤,其中些用户的美工水平是相当专业的,同样是Photoshop,在我手中也许只是把小刀,可到了他们手中就变成了机关枪,他们对SoSoPi皮肤编辑的理解甚至比我还强,有时候我看到了他们做出来的皮肤,一下子还想不到是如何实现的。

从中也能看得出来,手机对很多人来说不仅仅是个工具,还是个玩具,用户喜欢个性化,如果提供足够的个性化支持给他们,相信他们一定会喜欢的。想当年Nokia提供了这么傻的“换壳”功能而已,就赢得这么多用户的青睐了。

2.7,收尾工作

“你永远不知道,哪次下线,就永远不再上线;你也永远不知道哪次见面,就是最后的见面。”我前阵子突然有这种感慨,对这个项目,我则感慨:“我永远不知道,哪天写下的那行代码就是最后一行代码。”现实和理想之间总是存在着那么大的距离,很多东西由不得自己。

从开始正式动工到最后一个版本发布(2011年11月),算起来正好一年时间,从最后一个版本发布到现在,又过去了将近一年半的时间,光阴飞逝,我想是时候来写篇文章纪念它了。

2.8,回头再看

对于项目成败,也许老吴最有发言权,我想,简单地,可以这么说:行业发展太快,而我们实力太有限,走了太多的弯路,浪费了太多的时间,还选择了不正确的平台,再加上盈利模式难践行,所以就那样了。

[回目录]

转载于:https://www.cnblogs.com/guogangj/archive/2013/03/24/2979374.html

纪念一个曾经的软件产品(一)——背景及项目过程大致回顾相关推荐

  1. 纪念一个曾经的软件产品(八)——看图、阅读、音乐、日历

    [回目录] 9.7 看图 手机拍照的功能大约从2003.2004年的时候开始流行起来,那时候称得上比较高端的手机都配备了30W像素的一个小小摄像头,按一下,就能生成一张现在看起来模糊不堪的照片--其实 ...

  2. 纪念一个曾经的软件产品(九)——皮肤编辑器及其它

    [回目录] 十.皮肤编辑器 10.1.我的第一个.net程序 在这之前,我基本上只懂C++,之所以打算用.net来做这个皮肤编辑器,那是因为公司里除了我之外,别的人都只有.net的技术经验,我想让这个 ...

  3. 纪念一个曾经的软件产品(五)——任务栏、系统通知与锁屏

    [回目录] 七.任务栏与系统通知 什么是系统通知?我大致列一下:电量的变化.蜂窝电话信号强弱的变化.WIFI的状态.蓝牙的状态变化.通话状态变化.新短信--好多,这些东西的共同特点就是你不知道它们会在 ...

  4. 纪念一个曾经的软件产品(六)——快捷方式,联系人,任务管理器

    [回目录] 之前我曾经尝试过写系列文章,但一直没写成,而这次想把这一系列写完看起来还真不容易,看来我的恒心与行动力确实还是有所欠缺,难怪自己一直都不怎么"成功".OK--继续吧,能 ...

  5. 纪念一个曾经的软件产品(七)——天气,短信,邮件

    [回目录] 又断开了很长一段时间,我觉得再不动手写写这个,怕以后就难有机会了,上次之所以写着写着就断开的原因,我记得是因为这篇要写的内容(短信模块)太过复杂,我回头去看这些代码的时候都觉得头大了,其实 ...

  6. 纪念一个曾经的产品(目录)

    [目录] 大多数时候,我都是在做项目,而不是做产品,当然了,广义上来说项目和产品并没什么不同,但这里我说的是狭义上的.Windows 7是产品,Photoshop CS5是产品,iPhone5s是产品 ...

  7. [css] 如何使用css3实现一个div设置多张背景图片?

    [css] 如何使用css3实现一个div设置多张背景图片? background-image:url("1.jpg"),url("2.jpg"),url(&q ...

  8. Android一个类似腾讯 QQ 背景图片可以上下左右移动的 imageview

    CoolImageView 项目地址:HuTianQi/CoolImageView 简介:一个类似腾讯 QQ 背景图片可以上下移动的 imageview,功能比腾讯 QQ 更加强大,还支持左右移动,支 ...

  9. 现学现卖做一个炫酷的动态背景页面

    很喜欢酷炫的页面,自从看了抖音的主页之后(如下)(链接),就决定要也做一个牛逼的动态背景页面 对...背景是视频,而且还有音效,太牛逼了 然后决定自己做一个,废话不说,先弄代码: 这里为了设计简便,用 ...

最新文章

  1. 3人小公司1年的创业成本
  2. 正确高效使用数据库不可不知的索引失效问题
  3. gcc 常用命令(逐渐完善)
  4. 一个老程序员的30年生涯回顾(译文)
  5. 接口方法和映射器的statement id 是怎么绑定起来的?
  6. 库函数和系统调用的区别
  7. STM32F1笔记(四)NVIC中断优先级管理
  8. docker学习之-什么是docker
  9. Linux驱动(8)--内核编译与配置
  10. 【Spark】Spark SQL 物化视图技术原理与实践
  11. 数据双向绑定_手写 Vue3 数据双向绑定 理解Proxy
  12. VS2008 ACtivex 制作CAB带 Vcredist_x86.exe 方案
  13. 冰点还原离线激活_冰点还原精灵密钥,小编教你如何激活冰点还原精灵
  14. 在Python应用程序中将Excel转换为HTML操作指南
  15. C语言--指针作为数组参数获取数组平均数
  16. 数字图像处理(3) — 基于白平衡的人脸美白算法
  17. 保存的html文件怎么打印出来,网页的打印怎么保存为word的文档
  18. Unity3d C#通过使用大华SDK控制大华摄像头旋转、变焦等云台操作和预置点等控制操作(含源码)
  19. Verilog语法之数学函数
  20. mysql查看备份文件_MySQL的备份与还原以及常用数据库查看命令

热门文章

  1. python的windows下的几个版本的区别
  2. [北大肖臻-区块链技术与应用笔记]第二节课
  3. Android关于易源数据网络接口的使用
  4. Python随机生成体温并写入Excel
  5. C#求解圆和圆的交点
  6. linux 限制ip速度,linux iptables限速及限制每IP连接数
  7. “真顺风车”旗帜能让去IPO的嘀嗒引重致远吗?
  8. 计算机专业培训实施方案,学校信息化培训实施方案
  9. python爬虫框架论文开题报告怎么写_本科毕业论文开题报告怎么写?
  10. 贝加莱ACOPOSACOPOS1022,1010,1045,1022,1090,1180,1320系列伺服驱动器故障号,故障信息及解决方法