2015 年… 你的智能手机将取代你的车钥匙


既然智能手机可以让一个人的钱包变空、口袋变空,那么,它为什么不能取代一个人的车钥匙呢?汽车生产商“现代”就在做这样一件事,密码是,NFC:

现代的解决方案是这样的,在车门位置嵌入一个 NFC 芯片,当你走进爱车时,只要拿起手机,对着芯片位置一扫,好了,车门自动打开。而一旦你进入车内,你就可以将手机放到汽车中央控制台上,汽车就能启动了(如下左图位置)。很多人可能会担心手机没电怎么办,现代已经考虑到了——他们在车内内置了一个感应充电托盘,可在驾驶过程中为用户的手机充电。

实际上,现代已经在自己的“Connectivity Concept”连通性概念展示上大秀这样技术,现代汽车欧洲部的一名高管更是这样说道:

“借助这项技术,现代就可以将目前已经集成多项功能(比如电子钱包)的智能手机整合到用户的日常驾驶中,带给用户无缝体验。”

不过,打开车门、启动汽车还仅仅是现代“连通性方案”的一部分,这个汽车生产商的野心还远不止于此。

因为,它的系统将可以识别不同的智能手机、借以辨别手机背后的主人。然后,通过调整车内座椅倾角、后视镜、车内信息娱乐系统和立体声音响音量,为驾驶者带来个性化的车内体验。

当手机被放在控制台上时,它会跟安装在仪表盘上的 7 英寸触摸屏连通。然后,现代就会基于 MirrorLink 车联网技术标准,在触摸屏上导入手机内的联系人、流媒体和应用等个人数据,并能对目的地进行导航,是不是很强大?

MirrorLink 目前已经跟数十家汽车生产商建立了伙伴关系。但话说回来,撇开现代,目前的很多生产商还处在观望状态——考虑到驾驶者在开车时可能会受到干扰,所以仍要解决部分应用要如何导入到触摸屏上,以及如何调整用户界面让驾驶者更为专注驾驶这些问题。

不过,MirrorLink 已经蓄势待发,现代也已经走在了前面。现代称,他们在博通公司的合作伙伴正在努力将这个结合了 NFC 和 MirrorLink 的驾驶技术整合到下一代产品中,并推向市场。到 2015 年,这个系统就会被运用于他们的多个产品。到时,车钥匙就可以乖乖跟钱包一起,被锁进柜子…

Poke 对 Snapchat:不得要领的微创新

在智能手机如此受欢迎的今天,偶尔拿出手机记录一刻身边的美食美景已经成为不少用户的生活习惯。这些习惯映射到移动领域自然让照片类应用具备了广泛的用户基础。哪里有利益,哪里就难免杀的火热,关于照片类应用的各种争端最近就占据了各大科技媒体不少的版面。前一段时间 Instagram 和 Twitter 闹得不可开交,还没等到这两家心甘情愿退居幕后,最近 Facebook 和 Snapchat 又在争着走向台前。在意欲收购照片社交应用 Snapchat 不成后, Facebook 老大 Mark Zuckerberg 更是亲自牵头用 12 天时间复制了一款类似应用——Poke。

那么 Snapchat 为何让 Facebook 如此惊恐呢?

根据 Snapchat 官方博客公布的数据,今天十月底,经过 Snapchat 分享的照片已经超过 10 亿张,用户每天分享的照片数超过 2000 万,但到了 12 月中旬,用户每天分享的照片数就涨到了 5000 万张。虽然Facebook 用户每天分享的照片数超过 3 亿,但相比于数 10 亿用户的 Facebook ,Snapchat 的用户数仅几千万而已。这也就解释了为何 Facebook 会在收购不成后立刻推出 Poke。

Snapchat 是什么

Snapchat 是一款照片分享应用,该应用一个有趣的地方就在于所有在这个平台上分享的照片都只能存活 1~10 秒时间,过完这段时间后,该照片就会被自动删除。用户在查看 Snapchat 好友发送来的照片时必须按住屏幕,否则照片就会消失,当然如果用户在查看照片时顺便截屏,Snapchat 则会告知该照片的发送者。

当用户打开 Snapchat 时会直接进入拍照模式,在照片拍取后,用户可以对照片加上简单的线条涂抹、选择这张照片在接收者面前呈现的时间范围(1-10 秒可选)、存在本地或者直接发送给好友。

Snapchat 的产品功能是如此的简单,以至于略显简陋。但这款形态简陋的产品却让 Facebook 魂牵梦绕,以至于在收购不成后立刻复制一个类似产品—— Facebook Poke。Poke 在产品上基本抄袭了 Snapchat 的创意,仅在功能上做了些许微创新,比如:除了图片,Poke 用户还可以选择发送纯文本;在编辑照片时,Poke 可以选择加入文字;在时间呈现上 Poke 也只允许选择 1 秒、3 秒、5 秒、10 秒四个档位。

Snapchat 与 Poke 的优劣纷争

Snapchat 会受到如此多用户的欢迎,很大程度上在于它建立了一个可以不断持续的游戏规则,而且在这个规则下又抛出了两个具有吸引力的着力点。

这个规则就是:用户间可以通过 Snapchat 传递照片交流信息,而且照片仅显示 1~10 秒。在这个交流规则下文字被彻底抛弃,用户之间是通过照片以及对其简单的涂抹来交流的。这种全新的交流方式,难免让“传统的”社交界老大 Facebook 倍感压力,用户以往分享在 Facebook 或者 Instagram 上的图片从来都只是为了展示,交流会通过评论进行,依靠图片来交流是 Facebook 完全没有涉及到的领域。而图片在社交网络上又完全有可能成为人与人之间新的社交媒介,著名天使投资人蔡文胜几天前也在微博上表达了类似的观点:“不久的将来,或许几年后:输入法会被语音淘汰,文字会被图片视频逐步代替。”

规则之外 Snapchat 还有两个具有吸引力的着力点。细心的用户也许会发现 Snapchat 在 App Store 上被标记为 12+,这是因为 Snapchat 用户会分享一些具有暖昧或者挑逗性质的图片。一个初生应用具备暖味气质会是一个很好的推广点,也利于用户之间的口口相传,看现在国内各种和微信类似的通讯应用也就陌陌还有看点。虽然陌陌目前在竭力去掉这顶帽子,但不可否认这是人类一个普遍需求,所以如果后来者能结合暖味气质来用一用也无妨。

社交产品的泛滥也让用户越来越在意自己散落在互联网上的信息被什么人看见。从 Google+ 的圈子到 Facebook 、新浪微博的仅某个分组可见以及 Path 等私密社交的火热,我们不难发现国内外的社交平台都在探索如何平衡用户分享和隐私之间的关系,而 Snapchat 的阅后即焚模式在这个问题上就找到了一个很好的平衡点,用户在拍完照片后即可以选择保存也可以选择以极短的时间分享,这基本上解除了用户对过度暴露个人隐私的担忧,同时又满足了分享的欲望。

从 Snapchat 拍摄的宣传视频中,我们也可以很容易看出其传达的暖味气质以及定位交流工具的特性。

Facebook 虽然迅速做出了类似 Snapchat 的产品 Poke,其也有着海量用户及强大的推广渠道,但这些优势却并不能掩饰其对 Snapchat 产品逻辑的曲解。Snapchat 在创造下一个移动互联网上的社交热点,每天 Snapchat 用户之所以分享如此多的照片是因为他们在使用照片交流而不仅仅是展示它。Facebook 在 Poke 中加入文字分享功能则表明了其对 Snapchat 的理解仅止步于这是一款照片分享应用而完全没有得到 Snapchat 产品的精髓。

结语

历史总是会不断重演,就像当初 Google 不断在社交产品上输给 Facebook 一样,虽然 Google 知道热点在哪里,也努力过,但就是赢不了 Facebook。而现在故事的主角恐怕快换成 Facebook 了。

除非特别声明,极客观察均为极客公园原创报道,转载请注明原文链接。
原文地址:http://www.geekpark.net/read/view/168846

图片类应用路在何方?

当 Instagram被天价收购时,人们似乎以为读图时代已经结束,再也不会有超越 Instagram 成就的机会出现。但随着 Flickr 对移动端的重视、Google 收购 Snapseed 并将其免费、Twitter 移动应用增加滤镜功能,以及一个又一个新兴图片类工具或社区的崛起,读图时代也许才刚刚开始。毕竟,Instagram 只是验证了图片分享是一种强烈需求,但如何在此基础上创造出可以持续发展的商业模式却依然没有答案。

我们可以把目前市面上的图片类产品的模式分为涉及图片美化修改的工具和交流分享的社区两部分。大部分产品要么是两者兼有,要么只偏向其一。我们可以想到的盈利模式也无非“免费+广告”、应用内收费或者订阅式服务。软件产品本身的零边际成本的特点,加上移动应用商店又降低了产品的营销支出,不需过多的运营成本使低价竞争成为可能。况且大批优秀的程序员和研发团队的出现加快了技术和创意的交流,使得美化图片的技术优势并不突出,用户也不可能轻易感知美化效果的好坏。在现在激烈的竞争环境下,图片类应用该如何寻得出路?

a1

做商品,卖工具

如果对自己的技术优势足够自信,对应用一次性收费是最直接有效的。Camera + 无疑就是这样一款优秀的产品,已经确立了自己的品牌优势。新的同类型图片美化工具即使有更出色的技术,也很能撼动其已经积累的口碑。况且像 Adobe 这样有资金和技术优势的大公司,也会通过推出 Photoshop Express 移动版这样的免费品来强化已有的品牌地位。同时,还有一些像美图秀秀、Camera360 以及 POCO 相机,甚至功能更加强大的如 Pixlr Express、Snapseed 这类免费品。别忘了,iOS 和 Android 自带应用也具备基本的图片美化功能。

从这一点我们也可以看出,在图片修改类付费应用已经饱和的情况下,还有大量优秀的免费品竞争,一次性收费并不利于新的图片修改工具的发展。事实上,根据 AppsFire 公布了 2012 年 App Store 信息图,2012 年发布的所有 App 中,只有 66% 是免费应用。

免费是一种能使自己的产品在前辈的声誉中快速脱颖而出的有效促销手段。免费的产品降低了用户接触成本,使用户更乐意尝试新事物。但免费不可能成为一种盈利模式,因为它根本就无法保证产品能盈利。免费的商业逻辑在于降低用户的接触成本,从而快速捕获大批用户群,从中寻找可能的付费对象。所以由此延伸出内置广告和应用内付费两种流行模式。但作为一款简单的工具类应用,内置广告无疑会降低用户体验。而应用内付费,无论是特殊滤镜收费还是购买什么美化包,都一样会面临残酷的竞争。如果不针对未被开发的新需求,这种卖工具的方式已经不再适合新兴的产品,图片类应用需要寻找新的商业模式。

a2

 

做服务,盈利手段多样化

Snapseed 被 Google 收购后立即变成了免费品,除了 Google 有着雄厚的资金优势外,Snapseed 启动画面出现的 Google + 的标识也表明了这款免费品是为 Google 的社交平台服务。将移动端的图片修改工具以免费的形式作为吸引用户的促销手段,在此基础上打造平台服务,也是许多产品正在探索的思路。

社区是图片摄影的常规发展思路。社区的优势在于,用户长期沉侵其中造成巨大的迁移成本,使其很难使用其他同类产品。Flickr 由于在移动领域的缓慢,使 Instagram 顷刻间成为图片分享社区的新品牌。但 Flickr 毕竟作为老牌摄影爱好者的聚集地,手握大批忠实的摄影师,也不是没有反击能力。新上任的梅姐已使 Yahoo 重新重视 Flickr 移动版,其新 iPhone 版的改进也有望加大对 Instagram 的打击。Flickr 是典型的订阅付费,其盈利能力已获市场的认可。

国内的 POCO.cn 也是一个汇集摄影图片的社区。POCO 将“摄影”跟“生活”结合起来,宠物、美食、旅游、摄影服务,甚至电子杂志等等诸多门类构成了整个社区。POCO 是有着浓厚生活信息的分享社区。POCO 便依次建立了各种盈利方式。比如美食类餐饮广告,摄影服务收费等。与 Flickr 一样,POCO 移动端的各种相机应用也是吸引用户加入 POCO 社区的入口。

以上两个图片社区都是移动端提供免费图片美化工具,以巩固其网络社区的地位,从而提供各种不同的服务。图片存储服务的订阅收费是一种免费增值模式,它既具备免费品吸引用户的优势,也为付费用户提供其所需的服务。对服务收费和对商品收费的区别在服务是可以被长期感知的,更容易使消费者形成物有所值的感觉,且大量存储的数据也增加了迁移成本。Camare360 的云相册也透露其打算通过订阅存储空间收费的盈利意图。另外,Camera360 刚推出的SDK服务,也有 Aviary 的成功在先。而 POCO 以摄影图片为基础,向各种生活相关类别堆出各种服务也是一种商业模式的创新。它利用了社区的另一个特点,用户黏性强。一旦人们沉侵其中,很难愿意离开。社区的力量,连 Adobe 都不敢小视。后者最近收购设计社区 Behance 实现工具和社区的整合。

a3

玩花样,寻找别样需求

我们已经分析做一款收费的图片修改工具很难具备优势,但通过免费图片工具,走“拍照——美化——分享”的传统思路,即使最终建立了自己的平台,竞争也不会轻松。产品需要探索新的产品模式,识别未被感知的新需求。

像 Snapchat 这样规定图片显示时间的分享模式,或者啪啪这样加入声音来传播也是产品模式创新的案例。但毕竟这类比较“浅薄”的产品很难在今后找到合适的盈利模式。Instagram 在盈利上的困境也暴露了它“浅薄”的特性。Instagram 作为一个图片社区其实是不够的。它仅仅只是利用优秀的滤镜,通过标签、喜欢、评论构建了一个利于图片像 Twitter 的文字一样可以快速传播的模式。你甚至都无法在这款应用中找到作为一个社区应该有的热门标签、流行话题、热门用户的排行榜。你上传的图片必须被裁减,你也无法对自己的图片分类利于今后查看。所以说 Instagram 只是一款用图片交流的社交网络,而不是 Flickr 那样的摄影社区。“浅薄”品不仅可以被轻易模仿,而且还很难留住用户,因为它最多只算做一个特性(Feature)。对于微信或者 Path,图片的美化分享就是其主功能的一个特性。当 Instagram 的新隐私政策激怒了用户,用户可以轻易地离开。Twitter 和 Flickr 正在追赶 Instagram,Facebook 也推出自己的类 Snapchat 应用 Poke。配合他们已有的社交平台,“浅薄”品的先发优势也很快会被逆转。

同样是拍照滤镜加分享社区,EyeEm 加入“拍照任务”的模式成为盈利模式的新尝试。“拍照任务”会要求用户去拍摄一些特定主题的图片。目前 EyeEm 已经跟红牛和德国汉莎航空公司等数个品牌建立合作。“拍照任务”可以被视为一种新的营销活动,成为一些品牌和其忠实粉丝互动的新形式。利用图片进行营销活动是一种很直接的想法,但即使是 Pinterest 做得也不够好。

同样也是滤镜,来自西安的 Blux Camera 则可以分析环境、光线,识别拍摄主体,推荐最佳拍摄模式和滤镜效果。这是一款目前面向海外市场的收费应用。其优势在于解决了用户不知选着何种滤镜的困惑,进一步降低了拍照门槛,所以其付费是针对未被挖掘的的新需求。

a4

图片类应用如果单纯做工具,去发觉新的拍照需求,或者像 Line Camera 那样玩贴图,也可以为自己找到一席之地。而拓展到社区平台,除了免费增值外,数据挖掘也是一个可以探索的领域。Instagram 对其新隐私政策不满的回应,也透露其打算分析用户数据,识别出可以广告推广的图片的意图。图片类应用的盈利是一个持续探索的过程,但目前还不存在足以傲视天下的盈利模式。我们可以确信的是在群雄逐鹿中,各种探索和挖掘将会更有利于用户满足自身的需求。

原文地址:http://www.geekpark.net/read/view/168674

快播大屏幕——多屏互动新体验

快播大屏幕,是一款基于多屏互动的智能播放设备,通过无线网络连接的方式,可将智能手机、平板电脑等移动终端的媒体内容(图片、音乐、视频、游戏等)传输到电视、投影仪等大屏幕上进行播放,实现各种屏幕之间自由切换和分享,简而言之,就像一条看不见的 HDMI 高清线。

类 Apple TV 的产品本质

Apple TV 是由苹果公司推出的一款高清电视机顶盒产品,用户可以通过 Apple TV 在线收看电视节目,也可以通过 Airplay 功能,将 iPad、iPhone、iPod 和 PC 中的照片、视频和音乐通过传输到电视上进行播放。

而快播大屏幕虽然在产品定位上不同于 Apple TV ,但功能在一定程度上也承担着同样的需求:定位于智能手机配件,可实现智能手持终端内容到电视、电脑等大屏幕的展示和互动,兼容了苹果“AirPlay”、微软“DLNA”等其它多屏互动协议,相比较苹果产品,其适用性更广泛。除去机顶盒内容层面来说,这是一个非苹果用户的主要选择,苹果用户可以在苹果自家的产品上通过苹果自带的协议实现操控,但在其他设备上来说还是需要解决的问题,由于不同设备所支持的协议不一样,不同设备的系统也不同,所以几乎很难实现互通,借助快播大屏幕可以在一定程度上解决这个问题。

内容层面的风险回避

前一段时间闹得沸沸扬扬的小米盒子风波,其主要问题就是来源于内容层面的政策障碍,根据广电总局颁发的《持有互联网电视牌照机构运营管理要求》(业内称“181号文”)文件,要想做机顶盒只能选择连接广电总局批准的互联网电视内容服务机构设立的合法内容服务平台。目前通过广电总局验收的平台只有7家(即7大牌照方),分别是CNTV、百视通、南方传媒、华数、中国国际广播电台的 CIBN、湖南广电以及中央人民广播电台的CNBN(央广广播电视网络台),而什么都不具备的小米盒子显然是踩了红线。

而在这一点上快播大屏幕采取了一个比较讨巧的方式:定位为工具而非内容平台,但通过技术手段解决内容需求。

快播大屏幕产品定位于多屏互动,并没有涉及到内容层面。但通过快播大屏幕研发的“ Qvod Smartplay ”协议,同时兼容苹果“Airplay” 、微软 “DLNA” 协议,这意味着快播大屏幕将全面支持包括腾讯视频、搜狐视频、奇艺影视、 PPTV 等目前市面上大部分主流的基于多屏互动的互联网视频应用。相比于小米盒子把这些互联网视频整合在盒子中的风险来说,快播大屏幕是几乎没有风险的,它所做的只是将你手持智能终端的内容投影到电视上,在一定程度上来说手持智能终端的内容是不比小米盒子少的,但却没有政策风险。

多屏时代的新需求

随着智能终端的兴起,我们的生活里已经不只是过去的一块屏那么简单,从过去唯一的电视屏到现在的手机屏、PAD屏、电脑屏、电视屏甚至投影屏等各种各样的屏幕。每个屏有自己的应用场景以及交互特性,也会带来不同的体验。

手机由于便携性和通讯属性,主要满足用户沟通的需求,在智能手机时代在满足沟通这个基本前提之下还能满足一些工作及娱乐需求。平板电脑更适合文字和图片阅读,在游戏互动上也有比智能手机更好的体验,主要满足娱乐的需求。电脑属于更高交互性的东西,满足工作和娱乐的多种需求。电视屏幕更多的是追求高质感的画面视觉效果,更多的是娱乐的拓展。

屏多了,问题也随之而来,多屏的属性在很多情况下定位并没有特别明显的差异,很多时候不同屏幕之间的内容在多屏之间是需要显示和互动的。苹果自有的系统很好的解决了这个问题,在苹果产品之间可以实现平滑的无缝显示和操控,但对于 Android 用户来说,这个产品或许能在一定程度上满足他们的需求。

举一个比较简单的使用场景:手机游戏功能的拓展。

通过快播大屏幕将手机中的画面同步传输到电视屏幕上,手机端就成为了万能的游戏手柄,同理可以将平板上的画面同步传输到电视屏幕上,平板也会变成游戏手柄,只要这些游戏支持 QVOD SmartPlay,都可以在不同屏幕间传输及互动,对于过去需要额外游戏设备来完成的游戏,现在通过手机这样的交互就可以完成,对用户来说是一件好事。

定位为配件的快播大屏幕,绕开了政策风险,给了用户更多的选择,只是能否被用户认可,还需要市场的检验。

原文地址:http://www.geekpark.net/read/view/168910

那个夏天

那年夏天,我漫步头,心里一直在思念,思念着你。

那年夏天,我沿河行驶,眼泪不停地流啊,为我们的曾经而流。

那年夏天,我画笔乱舞,大声疾呼,为我深深的悲伤而疾呼。

那年夏天,我怀着你的话语入眠,在梦中,在梦中漆黑的夜里我见到了你微笑的脸。

谁能告诉我

谁能理解我

当初,我的决定是那么的正确,一切似乎都是那么的完美。

而如今我的感受却是…

从此

在夏天的一个夜晚,我不再前行,停下脚步去仰望美丽而深蓝的夜空,去寻找那可爱的星光。

在夏天的一个夜晚,我不再奔驰,停下车来去聆听潺潺的流水,和她一起歌唱

在夏天的一个夜晚,我放下画笔,让自己变成了一幅图画,满眼期望。

在夏天的一个夜晚,我不再入睡,整夜整夜地回忆和你一起的美好时光

我期待着清晨第一屡阳光拥抱着我,给我温暖。

我在等待呀,等待呀,我所能做的也只有等待了。

但是,不一会我就睡着了。

我进入了一个有你的梦乡。

在梦中与你交流,没有人知道我是多么的从容。

午夜里在你身边尽情欢笑,你不知道我有多么的轻松。

最后我带着那种,那种美妙的感觉面对现实的世界。

最后我微笑了,微笑着看你从我身边经过。

最后我决定做一个诚实的自己,在人群中,不再遮遮掩掩。

今天,是一个美好夏日里的一天,你已经走进了我美好的幻想中。

明天,一样,直到永远……

带着这样的感觉我将变得坚强快乐直到永远。
我,我行吗?

忘记我们的过去,去过快乐的生活,
你,你能吗?

我想,如果没有经历过我们的故事,那么我的人生将毫无意义。

我想,如果不是碰巧听到你的歌声,我就不会有足够的勇气,那样我的人生还有什么意义。

但如果,他们是我生活的一部分,当然也是你生活的一部份,但没人知道他们能相信。

可是,一旦我相信了,我的世界会有所不同。

那个夏天,就像四季中的任何一天,没什么不同。

我的故事也是如此的短暂、微不足道,但是我的感觉、我的回忆却是如此的绵长。

那个夏天,是如此的美好,但我必须努力,努力地忘记,因为现在已是深秋,冬天也将临近…..

最后送上我深深的祝愿

希望你能安稳的入睡,过上幸福的生活

就这样吧……

来源:http://blog.daahe.com

one summer’s day

One summer’s day,I am walking along the street,thinking ,thinking about you all the time.

One summer’s day,I am driving along the river ,crying,crying for our story all the time.
One summer’s day,I am drawing along the feeling,coughing,coughing by my deep sorrow.
One summer’s day,I am sleeping along your words,dreaming ,dreaming of your smiling face in the dark night.

And who can tell me
And who can understand me
My choice is the most appropriate and everything seems right.
Everything appears ok but my own feeling……
And then
On one summer’s night,I stop walking,I stop to look up to see the beautiful darkblue sky and the lovely stars.
On one summer’s night,I stop driving,I stop to listen to the whisper of the river and sing with her.
On one summer’s night,I stop drawing,I stop to make myself a drawing,with health look in my eye.
On one summer’s night,I stop sleeping,I stop to thy to forget all the beautiful memories about you all the night.
And I am waiting for the first sunshine to give me a hug and warm.
I am waiting,waiting ,and what I have to do is waiting.
And I felt asleep not very soon.
I felt asleep in the dream about you.
I choose to talk with you in the dream and nobody knows that so I felt easy.
I choose to laugh around you in the midnight and you don’t konw so I felt comfortable.
I finally choose to keep the feeling,keep the lovely feeling,in the opposite of the realistic world.
I finally choose to smile,smiling when you passing by.
I finally choose to be honest when I’m alone but a lier when I’m in the crowd.
And today,is one of the nice summer’s day and you have paid some visit to my imagination.
And tomorrow,will be a same day,and forever……
To be strong and be happy with the feeling forever
Can I ,can I ?
To live a happy life and forget our story
Can you, can you ?
If,I never come to the world and haven’t come across our story, then I never live, I think.
If,I haven’t happened to hear your song and never felt some courage form you,I never live,I think.
But and if ,they are part of my life and of course yours,but no one knows they can believe.
But ,if I believe,my world will be different.
One summer’s day,just like anyother day of the four seasons.
And my little story is so short but my feeling and thinking is so long.
One summer’s day is so beautiful but I must forget,forget that,I’m in the fall,and winter is drawing near……
and the last word of my heart
may you have a sound sleep and a happy life
that’s all ……

 

OBJECT和EMBED标签

一、介绍:
我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签。也就是OBJECT和EMBED标签。OBJECT标签是用于windows平台的IE浏览器的,而EMBED是用于windows和 Macintosh平台下的Netscape Navigator浏览器以及Macintosh平台下的IE浏览器。windows平台的IE利用Activex控件来播放flash而其它的浏览器则 使用Netscape插件技术来播放flash。

下面是简单的网页中插入flash的代码示例:

Code:







二、为什么要使用以上全部的标签?能省略某些标签不?
OBJECT 标签是用于windows IE3.0及以后浏览器或者其它支持Activex控件的浏览器。“classid”和“codebase”属性必须要精确地按上例所示的写法写,它们告 诉浏览器自动下载flash player的地址。如果你没有安装过flash player 那么IE3.0以后的浏览器会跳出一个提示框访问是否要自动安装flash player。当然,如果你不想让那些没有安装flash player的用户自动下载播放器,或许你可以省略掉这些代码。
EMBED标签是用于Netscape Navigator2.0及以后的浏览器或其它支持Netscape插件的浏览器。“pluginspage”属性告诉浏览器下载flash player的地址,如果还没有安装flash player的话,用户安装完后需要重启浏览器才能正常使用。
为了确保大多数浏览器能正常显 示flash,你需要把EMBED标签嵌套放在OBJECT标签内,就如上面代码例子一样。支持Activex控件的浏览器将会忽略OBJECT标签内的 EMBED标签。Netscape和使用插件的IE浏览器将只读取EMBED标签而不会识别OBJECT标签。也就是说,如果你省略了EMBED标签,那 firefox就不能识别你的flash了(不过纳闷的是,省略了object只写embed,IE也能正常显示flash,呵呵,具体的再仔细看看 了)。

下面列出了用于发布影片的OBJECT和EMBED标签的必要以及可选属性。

一、必需属性:
·CLASSID-设置浏览器的Activex控件,仅用于OBJECT标签。
·CODEBASE-设置flash Activex控件的位置,因而如果浏览器如果没有安装的话,可以自动下载安装。仅用于OBJECT标签。
·WIDTH-以百分比或象素指定flash影片的宽度。
·HEIGHT-以百分比或象素指定flash影片的高度。
·SRC-指定影片的下载地址。仅用于EMBED标签。
·PLUGINSPAGE-设置flash 插件的位置,因而如果浏览器如果没有安装的话,可以自动下载安装。仅用于EMBED标签。
·MOVIE-指定影片的下载地址。仅用于OBJECT标签。

二、可选属性及可用的值:
·ID-设定变量名,用于脚本代码的引用。仅用于OBJECT。
·NAME -设定变量名,用于脚本代码(如javascript)的引用。仅用于EMBED。
·SWLIVECONNECT – (true或false)指定当flash player第一次下载时,是否启用java。如果些属性省略,默认值为false。你果你在相同页同使用javascript和flash,java必须使用FSCommand来工作。
·PLAY -(true或false)指定flash影片是否在下载完成后就自动播放,如果省略此属性,则默认为true。
·LOOP – (true或false)指定影片播放完最后一帧后是停止还是继续循环播放,如果省略此属性,则默认为true。
·MENU – (true或false)
·True 显示全部的菜单,允许用户放大,缩小等控制影片播放等操作。
·False 显示只包含设置选项和关于flash的菜单。
·QUALITY – (low, high, autolow, autohigh, best )
·Low 速度优于美观,而且不应用反锯齿。
·Autolow 刚开始着重于速度,但当需要时随时提升美观。
·Autohigh 同时着重播放速度和美观,但需要时则牺牲美观来保证播放速度。
·Medium 应用一些反锯齿而不平滑位图。它质量高于low设置而低于high设置。
·High 美观优于播放速度,而且一直应用反锯齿。如果影片不包含动画,位图会被平滑化;而如果影片包含动画,位图将不变平滑。
·Best 提供最好的显示质量而不考虑播放速度。所有输出都应用反锯齿及所有位图都被平滑化。
·SCALE – (showall, noborder, exactfit)
·Default(Show all)影片在指定的区域内显示,但保持原始的比例。影片两侧将会出现边框。
·No Boder 收缩影片以适合指定的区域,保持影片不失真,但部分影片将可能将裁切。然而保持影片的原始比例。
·Exact Fit 使整个影片在指定的区域内显示,影片有可能变形失真,而且不保持原始的比例。
·ALIGN – (l, t, r, b)
·默认为居中,当浏览器窗口小于影片时,边缘会被裁切。
·Left,Right,Top,Bottom按照相应的设置沿浏览器的边缘对齐。如果需要,另外三边将被裁切。
·SALIGN – (l, t, r, b, tl, tr, bl, br)
·L,R,T,B
·TL,TR
·BL,BR
·WMODE- (window, opaque, transparent) 设置flash影片的window mode属性,指定flash在浏览器中的透明,层叠及位置。
·Window 影片在浏览器中自己的矩形窗口内播放。
·Opaque 影片隐藏了所有在它后面的内容。
·Transparent 使flash影片透明,显示透明影片后面的网页内容。这将会降低动画的性能。而且这个属性不是在所有浏览器中都可用的。
·BGCOLOR – (#RRGGBB, 十六进制RGB值。)指定影片的背景颜色。使用这个属性覆盖flash中设定的背景颜色。
·BASE – 设定基准目录或URL,用来解决所以flash中的相对路径。类似网页中的标签。
·FLASHVARS 传递变量到flash player,需要flash player6及以后的版本。
·传递root级变量到影片。字符串的格式是用“&”分隔的name=value集。
·浏览器支持64kB大小的字符串长度。
·更多关于FlashVars的信息,请查看相关文档。

onInterceptTouchEvent和onTouchEvent

本帖记录onInterceptTouchEvent和onTouchEvent调用关系,即各种return true和return false的运行情况。

return true和return false,代表的是是否消费完该事件,也就是该事件是否会继续传递给下层或者上层组件继续处理。return true代表消费完不会继续传递,return false代表没有消费完将会继续传递。

如果没有onInterceptTouchEvent,只考虑onTouchEvent的话,比较容易分析和理解。假如有三层布局结构,linearLayout1,linearLayout2,textView,从前到后是包含的关系。那么下面分情况说明。
1.如果它们的onTouchEvent都返回false的话,DOWN事件会自上而下(textView位于最上层)依次传递,最终都没有消费完此事件,都只会进入onTouchEvent方法一次并且MotionEvent的action为MotionEvent.ACTION_DOWN,move和up等事件不会继续处理。
2.如果textView的onTouchEvent返回true,表示textView消费了此事件,不会传给父组件linearLayout2和linearLayout1了,并且还会继续处理move和up等事件。
3.linearLayout2和linearLayout1的onTouchEvent返回true和上面的情况一样,都不会继续传给父容器而且本身继续处理move和up等事件。
OK,这种情况还是比较容易理解的。

下面加入onInterceptTouchEvent。
onInterceptTouchEvent只有ViewGroup才会有,用于在进入自身onTouchEvent或者子组件onTouchEvent之前处理事件。注意onTouch是自上而下传递,而onInterceptTouch却是由下而上传递的。来了一个DOWN事件,首先进入的必然是最底层的viewGroup的onInterceptTouchEvent方法,然后根据return的值进入自身或者子组件的onTouch事件,当然如果子组件也是viewgroup的话,在进入子组件的onTouch之前也会进入子组件的onInterceptTouchEvent方法。
下面也分几种情况介绍:
1.当onInterceptTouchEvent返回false时,表示没有消费完此事件,会继续传递个子组件的onTouch继续处理。注意这种情况不会就不会传递给这个ViewGroup自身的onTouch事件处理了。这和onTouch如果返回false,后续的move、up等事件都不会继续处理了可以做同样理解。
2.当onInterceptTouchEvent返回true时,表示消费完此事件,或者说将在此组件上消费该事件。这种情况该事件会传递给ViewGroup自身的onTouch事件去处理,而不会传递给子组件的onTouch方法了。
由此可以总结,onInterceptTouchEvent返回值只是决定了是要把事件传递给自身的onTouch事件还是传递给子组件的onTouch事件。返回false表示没有消费完将传递个子组件的onTouch方法,返回true表示自身消费此事件,将传递给自身的onTouch方法而不会传递给子组件的onTouch方法了。

android 设置APN

android的APN设置,也就是移动网络的接入点设置,有些时候可能项目需要会用到一些专用的apn专网,如果需要用户去手动设置的话显然可行性不高,所以需要在代码中自动为客户生成一个接入点,并在应用启动的时候自动切换到改接入点,退出的时候重新换回用户的默认接入点,这里只讲关键技术点,具体实现自行研究,实践才能出真知;

1、首先了解一下APN的位置,
// APN列表资源
private static Uri APN_LIST_URI = Uri.parse(“content://telephony/carriers”);

// 默认APN资源(当前正在使用的apn)
private static Uri PREFERRED_APN_URI = Uri.parse(“content://telephony/carriers/preferapn”);

2、检测一个APN是否存
int id = -1;
ContentResolver resolver = context.getContentResolver();
Cursor c = resolver.query(APN_LIST_URI, new String[] { “_id”, “name”, “apn” }, “apn like ‘%myapn%'”, null, null); //从apn列表中查找apn名称为myapn的apn信息
if (c != null && c.moveToNext()) {
id = c.getShort(c.getColumnIndex(“_id”)); //获取该apn的id信息
System.out.println(“APN已经存在”);
} else {
System.out.println(“APN不存在”);
}

3、添加一个新的APN,设置apn的信息还需要获取当前SIM卡的运营商信息

protected String getSIMInfo() {
TelephonyManager iPhoneManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return iPhoneManager.getSimOperator();
}

public int AddXFTApn() {
System.out.println(“添加一个新的apn ==> XFT APN”);
int apnId = -1;
String NUMERIC = getSIMInfo();
if (NUMERIC == null) {
Toast.makeText(context, “不存在SIM卡”, Toast.LENGTH_SHORT).show();
return -1;
}
ContentResolver resolver = context.getContentResolver();
ContentValues values = new ContentValues();

values.put(“name”,“专用APN”); //apn中文描述
values.put(“apn”, “myapn”); //apn名称
values.put(“type”, “default,supl”);
values.put(“numeric”, NUMERIC);
values.put(“mcc”, NUMERIC.substring(0, 3));
values.put(“mnc”, NUMERIC.substring(3, NUMERIC.length()));
values.put(“proxy”, “”);
values.put(“port”, “”);
values.put(“mmsproxy”, “”);
values.put(“mmsport”, “”);
values.put(“user”, “”);
values.put(“server”, “”);
values.put(“password”, “”);
values.put(“mmsc”, “”);
Cursor c = null;
// 获取新添加的apn的ID
try {
Uri newRow = resolver.insert(APN_LIST_URI, values);
if (newRow != null) {
c = resolver.query(newRow, null, null, null, null);
int idindex = c.getColumnIndex(“_id”);
c.moveToFirst();
apnId = idindex;
}
} catch (SQLException e) {
e.printStackTrace();
}
if (c != null)
c.close();
return apnId;
}

4、设置使用指定的apn接入点连接网络

public boolean setDefaultApn(int apnId) {
// System.out.println(“设置选中的apnID ==》 ” + apnId);
boolean res = false;
ContentResolver resolver = context.getContentResolver();
ContentValues values = new ContentValues();
values.put(“apn_id”, apnId);
try {
resolver.update(PREFERRED_APN_URI, values, null, null);
Cursor c = resolver.query(PREFERRED_APN_URI, new String[] { “name”, “apn” }, “_id=” + apnId, null, null);
if (c != null) {
res = true;
c.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
return res;
}

如何打开Anroid系统自带邮件应用

在网上很容易找到如何调用系统自带的邮件系统发送邮件,但是关于如何打开邮件应用的主界面的文章很少。

android系统一般都会带系统自带的Email应用,包括一些定制机。android自带的Email应用的包名是com.android.email,这个可以从应用管理器中查找到。只有一个包名信息打开应用不太可能。android系统允许通过组件名(ComponentName)打开一个应用。组件是包含应用包名和主Activity的对象。如何找到Email的主Activity呢?通过执行如下代码可以列如系统中所有应用的主Activity类和主包名。

private String listPackage() {

List<ApplicationInfo> mApplications = null;
PackageManager manager = getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); // 取出Intent
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); // 分辨出位默认Laucher启动的程序
final List<ResolveInfo> apps = manager.queryIntentActivities(mainIntent, 0); // 利用包管理器将起取出来
Collections.sort(apps, new ResolveInfo.DisplayNameComparator(manager));
StringBuffer sb = new StringBuffer();
if (apps != null) {
final int count = apps.size();

if (mApplications == null) {
mApplications = new ArrayList<ApplicationInfo>(count);
}
mApplications.clear();

for (int i = 0; i < count; i++) {
ResolveInfo info = apps.get(i);
sb.append(“Label:”).append(info.loadLabel(manager)).append(“;\n\r”);
sb.append(“packageName:”).append(info.activityInfo.applicationInfo.packageName).append(“;\n\r”);
sb.append(“name:”).append(info.activityInfo.name).append(“;\n\r”);
sb.append(“icon:”).append(info.activityInfo.loadIcon(manager)).append(“\n\r\n\r”);
}
}
return sb.toString();
}

通过查找发现Email的主Activity的类名是com.android.email.activity.Welcome。这样打开邮件主界面就很易容了。

ApplicationInfo application = new ApplicationInfo();
application.name = “电邮”;
application.className = “com.android.email.activity.Welcome”;
application.packageName = “com.android.email”;
ComponentName c = new ComponentName(“com.android.email”,”com.android.email.activity.Welcome”);

Intent intent = new Intent();
intent.setComponent(c);
startActivity(intent);