存档:

‘技巧’ 分类的存档

看图说话 – Android UI 设计秘笈 :Part I

2010年8月31日

Android 的官方开发者博客发了一份幻灯片,介绍了一些 Android UI 设计的小贴士,Roger 在这里以看图说话的形式发出来,有兴趣的读者就继续往下翻吧。整个 PPT 共分5个部分,Part I 翻译的是前两个部分。

P1

P2

作为开发者,为啥我们要关心UI,前面的一堆通通可以忽略掉,直接跳到最后一条。因为好的UI设计可以帮助我们卖出更多拷贝,赚到更多钱^_^


这个 PPT 包含5个部分:
1>该做什么,不该做什么
2>设计哲学和考量
3>你必须了解的 UI 框架特性
4>新的 UI 设计模式
5>图标和准则


Don’t:
1>不要照搬你在其它平台的UI设计,应该让用户感觉是在真正使用一个 Android 软件,在你的商标显示和平台整体观感之间做好平衡
2>不要过度使用模态对话框
3>不要使用固定的绝对定位的布局
4>不要使用px单位,使用dp或者为文本使用sp
5> 不要使用太小的字体



Do:
1> 为高分辨率的屏幕创建资源(缩小总比放大好)
2> 需要点击的元素要够大
3> 图标设计遵循 Android 的准则
4> 使用适当的间距(margins, padding)
5> 支持D-pad和trackball导航
6> 正确管理活动(activity)堆栈
7> 正确处理屏幕方向变化
8> 使用主题/样式,尺寸和颜色资源来减少多余的值
9>和视觉交互设计师合作!!!



设计哲学:
1> 干净而不过于简单
2> 关注内容而非修饰
3> 保存一致,让用户容易投入其中,可附加少许变化
4> 使用云端服务(存储和同步用户资料)来加强用户体验


优秀界面的设计准则:
1> 关注用户
2> 显示正确的内容
3> 给予用户适当的回馈
4> 有章可循的行为模式
5> 容忍错误


关注用户:
1> 了解你的用户(年龄,技能,文化,对你的应用的需求,使用的设备,何时何地如何使用设备)
2> ‘用户优先’的设计心态 (用户通常是任务导向的行为模式)
3> 更早,更频繁的由真实用户来测试


显示正确的内容:
1> 最常用的操作需要最快被用户看到并且可用
2> 不太常用的功能可以放到菜单里面


给予用户适当的回馈:
1> 交互式的UI元素最少需要反映出4种不同的状态 (default,disabled,focused,pressed)
2> 保证操作的结果是清晰可见的
3> 多给予用户进度提示,但是不要干扰他们当前的操作



有章可循的行为模式:
1> 行为模式遵循用户的期望(正确的操作活动堆栈,显示用户期望看到的信息和动作)
2> 使用合适的方式来加强功能可见性(可点击的元素就应该看起来是可以点击的)
3> 如果用户完成一项任务需要复杂的操作,重新思考你的设计!!!


容忍错误:
1> 只允许有意义的操作(适当禁用一些按钮)
2> 尽量减少不可回退的操作
3> 允许回退(undo)比使用确定对话框更好(实际上,应该尽量少用确定对话框,它对用户是一种干扰)

如果错误是可能发生的,那它就一定会发生。

- Donald Norman, The Design of Everyday Things 作者


设计考量:
1>屏幕的物理尺寸
2>屏幕密度
3> 屏幕的方向(竖向和横向)
4>主要的UI交互方式(触屏还是使用D-pad/trackball)
5>软键盘还是物理键盘


设计考量:
6>了解不同设备之间的相异之处是非常重要的!
7>阅读CDD,学习设备可能差异的地方
8>了解屏幕尺寸和密度分类

Via Android Developers

用 Android 手机控制电脑

2010年8月24日

感谢读者 wzyboy 的投递。

冬天,北风吹着、雪花飘着,宅男宅女都窝在被窝里不愿出去,但是又想用电脑上个网,看看动漫、打打游戏啥的……钻出被窝就意味着寒冷,待在被窝里就意味着不能玩台式电脑……真的是这样吗?

上面的截图并不是在电脑上截下的,它们是在一只普通的 Android 手机上用 ShootME 这个软件截下的。看了这些截图,你应该明白,要在被窝里看动漫、玩台式机上的游戏不再是难事了。

要实现这样的效果也不难,并不是我在 Android 上装了一个 Windows 操作系统。它只是用了远程桌面功能而已。远程桌面协议的定义请自行查看维基百科

除了微软的 RDP,其它的操作系统,如 Mac OS X 什么的,也是有相应的远程桌面协议的,所以理论上你也可以在 Android 手机上玩 Mac OS X。但是此文仅以 Windows 7 为例进行介绍。

客户端准备

客户端就是你的手机。此处特指装备了 Android 操作系统的手机。至于版本是无所谓的,Donut, Eclair, Froyo 都行,如果你能搞到 Gingerbread 或者 Honeycomb,你也可以试试……手机的配置更是无所谓的。我是拿 HTC Dream 做的测试。HTC Dream 是世界上第一款商用 Android 手机,它的配置在现在看来是相当相当落后的,但是实际情况是用 HTC Dream 远程桌面连接我的电脑也是非常流畅的,没有卡的感觉。

需要的软件是一个支持 RDP 的远程桌面客户端。这里推荐下 Xtralogic 牌的。点击下面的二维码可以下载带广告的免费版。

服务器准备

服务器就是你的电脑。此处特指装备了 Windows 操作系统的电脑。版本么,Windows XP 以上就可以了。Windows 2000 也许……也行吧。不保证。Windows 7 是最佳的。不过由于我常用的 Windows 7 系统里关闭了太多的服务,所以此处以 Windows 7 的同源兄弟 Windows Server 2008 R2 为例介绍。(截图是在 Windows 7 里截的)

RDP 是微软的协议,所以 Windows 里是自带此功能的,不需要再装其它的软件。设置方法如图:(如果你是在网页上看的,点击看大图)

需要说明的是,如果你的账户已经是管理员账户了,那么就不要再点“选择用户”了,直接保存即可。不过需要注意的是,你要使用的远程连接的这个账户是一定要设置密码的,没有密码的账户是不允许连接的。

连接!

远程桌面不一定要求要在同一局域网里的,理论上公网上任意两只设备都能相互连接,但是此处以局域网为例进行介绍。

首先要确保手机和电脑在同一局域网里,在同一网段里。可以把电脑和手机都连接到同一个路由器下面,然后都设置好固定 IP。比如电脑的 IP 是 192.168.0.100,手机上的 IP 就可以设置为 192.168.0.101 什么的。Windows 下设置 IP 的方法是在“网络连接”里,打开“本地连接”的属性 → “TCP/IP 协议 版本4” → “属性”,在这里改。Android 下使用固定 IP 的方法是打开“无线设置” → “Wi-Fi 设置”→ Menu 键 → “高级” → “使用静态 IP”, 在这里改。

改完之后两只设备应该可以互相 ping 通了。可以在 Android 上任意终端模拟器上输入 ping -c 4 192.168.0.100 (这是电脑的 IP,请根据实际情况修改),Ping 通了就算设置好了。事实上,很多人家里只要是用路由器上网的,基本都已经在同一网段了,这些设置都可以省略的……只要知道电脑的 IP 就可以了……

打开手机上已经安装好的“远程桌面”程序,按 Menu 键 → 添加服务器。地址就填刚才电脑的 IP,用户名填你在电脑上的登录名,确切地讲是你加入远程桌面允许用户列表里的名字,密码就填你电脑上的密码,接下来几个都可以不填。下面讲讲分辨率。

一般来说,手机的分辨率是小于电脑的,所以如果在分辨一栏选择了一个大于手机分辨率的值,那么手机就只能看见一部分屏幕,需要靠滑动来查看其它的部 分,就像一个网页一样,要上下拖动才能看完整。如果把视图缩小,那么的确是可以看完整的,不过字也就变小了。如果选择“适应屏幕”,则是把远程桌面的分辨 率设置成和手机分辨率一样的,这样既是完整的,又是字正常的,但是这样的分辨率下可能有一些电脑上程序不能完整显示。在题图中,第一、二、三张图选择的是 适应屏幕的分辨率,第四张图是选择了一个大于手机屏幕分辨率的分辨率。

综上,如果你的手机的屏幕分辨率本来就比较高的话,比如 Nexus One, Milestone, Desire 啥的,就选择适应屏幕好了,你会感觉你在用上网本的,如果你的手机屏幕分辨率比较低,比如 Dream, Magic 啥的,就选择一个标准分辨率 1024×768 好了,或者可以选择一个 960×480 (长宽都是 480×320 的两倍)的分辨率,然后视图缩至最小,个人感觉那样的字还能勉强看清,题图中的第四张就是这样的分辨率。

全部填好后,点“保存”,然后这个配置就被存储下来了,以后只要启动程序,连接之就可以了。

附注:

  1. 远程桌面只是传输视频和音频信号,所以即使你在用远程桌面玩电脑上的游戏,手机也不会感到卡,因为游戏是运行在电脑上的,传到你手机上的只不过是一个视频和音频信号而已。
  2. 玩这个东西当然是屏幕分辨率越大越好,我曾经见过有在 iPad 上装远程桌面连接 Windows 7 的……
  3. 最好用一只用实体 QWERTY 键盘的手机来玩这个,比如 Dream,Milestone 什么的。

Via wzyboy’s blog

作者: musiXboy 分类: 应用, 技巧 标签:

Android Cloud to Device Messaging 服务介绍 – 如何从云端推送消息到手机

2010年8月19日

译者前言:

基于 Android 的手机是面向移动互联网的手机,保持24小时在线才能充分发挥它的全部能量。而 Google 也在不断提供各式各样的网络服务来吸引用户,有的服务是直接面向终端用户,而有的服务是面向开发者,期望开发者可以利用 Google 提供的这些服务来制作新形态的 Apps 和创造新的服务类型,当然 Google 也会从自家的服务被更多用户访问来获得收益。

Google I/O 2010 介绍了 Android 2.2 导入的 Android Cloud to Device Messaging (C2DM) 服务,也演示了在PC端,把浏览器正在浏览的网址或者在 Google Maps 上定位的位置发到 Android 手机上,而手机会直接通过浏览器打开该网址或者通过地图软件定位该位置。

前不久 Chrome to Phone 已经正式发布,可以让 Android 用户在自家的 PC 和 手机上亲自使用该功能。而 Chrome to Phone 的作者 也发表了一篇技术文章,介绍了C2DM 服务的一些细节。

Dave Burke

Dave Burke

翻译正文:

Android Cloud to Device Messaging (C2DM) 作为 Android 2.2 的一部分已经发布了。C2DM 允许第三方开发者开发相关的应用来推送少量数据消息到用户的手机上。C2DM 创造了一个良好的机会,允许我们使用多种 Google 开发工具来创建一种简单但相当实用的应用类型。用户可以使用该类型的应用把各种各样的信息从他们的台机或者笔电直接 push 到自家的手机上。来自 Google 20% 工作时间的一个实验性项目 Chrome to Phone 演示了这种类型的应用。

Chrome to Phone 包括了一个 Chrome Extension,一个 Android Application,和一个 Google AppEngine 服务器。所有的代码都是开源的,可供其它开发者参考如何使用 C2DM。

Chrome to Phone 的消息流是一个很典型的推送服务:

用户使用 Android App 在 C2DM 服务器上注册,获得一个设备注册 ID,这个 ID 跟用户的 Google 帐号绑定在一起,并且由 AppEngine server 来维护。 AppEngine server 在验证用户账号的合法性后记录下用户账号跟用户 C2DM 设备注册 ID 之间的映射关系。

Chrome Extension 获得浏览器当前访问的网址和标题后,把它们发送到 AppEngine server。 AppEngine server 验证当前登录的 Google 用户账号后,通过该账号查找到对应的 C2DM 设备注册 ID。然后通过 HTTP 把 URL 和标题发送到 Google 的C2DM 服务器。用户手机上的Android 系统(2.2 以上版本)会一直监听来自 C2DM 服务器的推送消息,当 C2DM 服务器接收到 AppEngine server 发送过来的消息,并且这个消息是发送到用户手机所绑定的 C2DM 设备注册ID 时,就会发送给用户手机,而手机上 Android 系统收到消息后则会发起一个 Intent broadcast(意图广播),接着跟该 Intent 对应的 Android App 被激活,再把这个 Intent 转换成相应的新 Intent 并路由到其它 Apps 上面去(比如浏览器,拨号软件,地图软件等)。

(路由路径:”Chrome to Phone” Chrome Extension(PC)-> “Chrome to Phone” AppEngine server -> C2DM server -> Android OS(Mobile) -> “Chrome to Phone” Android App -> Android Browser)

"Chrome to Phone" Chrome Extension

"Chrome to Phone" Chrome Extension

这里一个有趣的设计是像 URL 和标题这样轻量级的数据会附随在推送消息上,直接从 C2DM 服务器发送到手机上。URL 会使用hash编码产生一个 collapse_key 来防止重复发送。另外一个可选的方式是(也更适用于数据量较大的情况),服务器只发送简单的推送消息来激活手机上的 App,然后 App 再访问服务器获得额外的数据。

Chrome to Phone 的代码可以在网上找到。 AppEngine 和 Android App 代码都包括了一个可重用的包 com.google.android.c2dm 用于处理底层的 C2DM 交互事务 (例如配置,任务队列管理等)。

Chrome to Phone 提供了有用的功能,不过它最有趣的地方是在于提供了如何使用 Android C2DM 服务的示例。

译后语:
Google 的 Android C2DM 服务能够像 LBS 一样催生出一系列新的应用类型吗?利用从云端的服务器往手机推送消息的功能,让手机跟网络上的其它机器,包括服务器,用户自己的PC等更紧密的联系在一起,的确提供了一个智能设备跟移动互联网之间如何无缝衔接的一个范例。

读者您是怎样看待 Android C2DM 这样的服务呢?欢迎留言。

Via Android Developers

在 Android 上使用密码保护你的手机

2010年8月8日

在这个年代,没有什么事情能比信息安全更重要的了。如果你的手机丢失了,想要保障你的隐私信息不变成人们的话题,最简单的办法就是在手机上设置一个密码。

在 Android 2.2 上,除了 Froyo 之前版本就有的图案解锁,你又有了新的选择来保护你的手机——使用个人标识号(PIN 码)或者数字密码。

以下是设置安全选项的步骤:

在主界面点击 menu 按钮,选择 “设置” -> “安全” -> “屏幕锁定”(根据系统版本或定制的不同,菜单文字或许会有变化),然后,跟着动画设置你的解锁图案吧。

如果你的手机接入了企业信息系统(例如 Microsoft Exchange),那么你还得遵循企业的安全策略,在某些企业,这些是强制性措施,详情只能咨询你的 IT 部门了。

总的来说,在这个信息泛滥的时代,没有任何理由不采取一些措施来保护你的隐私信息吧。

via androidcentral

作者: Raymond.Lau 分类: 技巧 标签:

如何在你的收费应用上使用 Google 的许可验证服务以防止非法拷贝

2010年7月30日

作者在“Why Android”一文中谈到了 Google 为什么要发展 Android 和其它个人和公司为何要加入 Android 这个生态系统的一些个人观点 ——

围绕 Android 的将是一个日益壮大的生态系统,它的开放性,选择的多样性,对创新的鼓励和回报能够使得它不断成长,并成为IT产业在智能设备和移动互联网的发展上的一个最重要的力量。

但是在作者的另外一篇文章“改善开发者在 Android 生态系统中的商业前景,Google 提供授权认证服务”中也谈到当前在 Android 生态系统中,获得最大收益的还是设备供应商,或者电信运营商,而作为在这个系统中扮演最重要角色的开发社区,它们所能得到的回报还是十分可怜,而 Google 为开发者提供的许可验证服务将有助于改善这一点。

下面的部分是对官方的技术文档“Licensing Your Applications”一些重要内容的摘要,希望有助于已经或者正在开发 Android 收费应用的开发者更清晰了解该服务并使用它来为自己的应用提供防拷贝保护。

  • 要使用该许可认证服务,你必须是菜市场的注册开发者,而且你的收费应用也必须通过菜市场提供。(呵,这也是 Google 打击其它各式各样的山寨安卓市场的重要手段啊,一旦它们无法提供破解的收费应用,并因为缺少像 Google 这样的防拷贝机制,也很难吸引到收费应用的开发者进驻,只能提供一些简单的免费应用的话,对用户的吸引力自然大大减少)。
  • Android Market Licensing Service

    Android Market Licensing Service

  • 并且运行的设备上必须安装了 Market App,因为3rd App 不能直接跟 Google 的验证服务器通信,而必须通过 Market App 进行。当然,要从菜市场购买 Apps,Market App 本来就是必不可少的。Maket App 会自动获取你的 App 的 ID 和当前用户的帐号数据并把它们打包传送到服务器上进行验证。并把验证的结果返回给你的 App。此外对 Android OS 的版本要求是1.5以上。除了以上两点,任意类型的 App 可以在任意设备上使用该服务。
  • LVL

    LVL

  • Google 提供了 LVL (License Verify Library 许可验证库)来帮助你处理如何向 Market App 发起许可验证的请求,并把服务器回应的数据通过你注册的回调函数返回给你的 Activity。(LVL 可以通过 Android SDK and AVD Manager 下载)
  • public key

    public key

  • Google 的许可验证服务器返回的验证结果是加密的,以防止第三方伪造验证结果。加密所用的公钥可以在你的注册开发者帐号管理里面申请。你需要把申请的公钥传给 LVL 相应的接口,LVL 会自动使用该公钥去解密验证结果,并把结果的明文返回给你的 Activity。
  • 验证失败的情况下要如何处理,施加那些约束或者是否直接退出由开发者自行决定。你可以根据应用的类型,面向的用户等来决定。
  • LVL 提供了 Policy 接口和内置的 ServerManagedPolicy 实现(Google 强烈推荐使用该内置实现)来帮助处理无法联网验证失败下的状况。ServerManagedPolicy 会缓存验证结果到本地文件,并设置一定的有效期限,这样就可以避免每次查询都需要链接服务器。

  • ...
    // Construct the LicenseChecker with a Policy.
    mChecker = new LicenseChecker(
    this, new ServerManagedPolicy(this,
    new AESObfuscator(SALT, getPackageName(), deviceId)),
    BASE64_PUBLIC_KEY // Your public licensing key.
    );
    ...

  • 被缓存到本地的验证结果可以通过LVL提供的一个Obfuscator 接口进行混淆加密,LVL 内置提供了一个 AESObfuscator 实现,AES公钥可以通过预设的种子,应用 ID和设备ID产生,要破解缓存的验证结果也将会非常困难。
  • Google 建议你对你的收费应用程序也使用混淆器如 ProGuard 做代码混淆,避免被人直接破解程序(比如修改验证的代码)。
  • Google 提供了完善的测试环境,允许你事先测试验证成功,验证失败等各种状况。
  • 如果已经使用了该许可验证服务,在发布应用时,就不要再设置防拷贝选项(In the Publishing options section, make sure that the Copy Protection radio button selection is “Off”)。
  • 完整的信息,请参考官方技术文档“Licensing Your Applications”一文。

    欢迎留言交流您对该服务的想法和具体实作时的心得 ^_^

    Via Android Developers

    Android 2.2 Froyo 独有的超大虚拟键盘

    2010年7月23日

    上图的超大虚拟键盘不是PS出来的,而是Android 2.2 Froyo系统里的一个小改进。当你呼出普通的四行虚拟键盘之后,用手从下到上轻轻的这么划一下,就见证了奇迹发生的时刻──你的虚拟键盘就扩展成6行了,增加了数字和常用符号,方便在手机上写长篇小说的人。

    不过这是Android 2.2 Froyo系统独有的,残念……

    Via Android Spin

    作者: musiXboy 分类: 技巧 标签:

    教你如何跳过开机小绿人

    2010年7月14日

    我看到这个新闻的时候感觉有点诧异,因为每次当我看到那个开机画面,我都会直接去点中间的小绿人来开始。不过,下面介绍的这个方法,可以让你不用每次都做这样的重复劳动了。

    看到图了吗? 按图中数字的顺序,依次点击手机屏幕的四个角,就大功告成了。

    想说明一个问题,目前小编还不清楚,这个方式是一劳永逸,还是说再次刷机后就得再重复一次这个动作,也希望各位机友能给我反馈。

    Via Gizmodo

    作者: Kevin.Allen 分类: 技巧 标签: , ,

    震撼!在 Nexus One 上玩转 Ubuntu

    2010年7月10日

    就像很多人认为这一切不可思议一样, 看到Ubuntu,你一定会想,难道谷安也要加入PC报道的大军吗?不过,你错了。除非你亲眼看到下面的视频,否则你很难相信这条新闻的标题是真实的。

    来自 Nexus One hacks的一位 Mod作者,为我们带来了他是如果在 Nexus One 上让 Ubuntu运行起来的,而且据报道,在 Nexus One 上运行 Ubuntu 并不需要移除已经存在的 Android 系统。这位作者在视频中向大家清晰的展示了他是如何一步一步在获取了 Root 权限的 Nexus One上 安装和运行 Ubuntu 系统。

    现在,你只有一件事情可以去做,那就是做一次小白鼠,让你的 Nexus One 也像电脑一样,同时拥有2个系统吧!

    继续观看视频:

    阅读全文…

    作者: Kevin.Allen 分类: 技巧, 新闻 标签: ,

    Nexus One 被破解支持720p 视频录制功能

    2010年6月9日

    Nexus One不支持高清视频录制一直令许多N1玩家大伤脑筋。不过 XDA 那边的大神们又带来好消息了,他们通过 Mod 让 Nexus One已经可以支持这一功能。想要使用这个 Mod,你必须先将你的 Nexus One 刷成 Cyanogen CM 5.0.8 Test 3,有点可惜的是,目前这个并不支持即将到来的 Android 2.2。

    有兴趣的朋友,可以直接去 XDA的相关帖子 了解详细信息。如果你正在使用 Cyanogen 的 CM 5.0.8 test3,那么你可以通过下面这个 链接地址 下载这个 Mod。提醒一句,刷机有风险,请务必慎重。

    Via  BoyGeniusReport and Androidpolice

    作者: Kevin.Allen 分类: 技巧 标签: ,

    Dell Streak Root权限到手

    2010年6月8日

    是不是还在翘首期盼 Dell Streak 的正式发布?不过这里有更好的消息告诉大家了,尤其是喜欢捣鼓手机的各位机友们。

    据 MoDaCo 网站 Paul O’Brien的说法,Dell Streak的 root 权限已经被成功获取了。他解释了如何利用root权限让你的 Streak 可以发挥得淋漓尽致,并且也非常乐意分享这些经验。获取 root 权限的程序使用非常简单,只需要简单的几步,再加上几行简单的命令就可以完成整个过程。关于此过程的详细解释,请点击 这里 查看。

    Via  Engadget

    作者: Kevin.Allen 分类: 技巧 标签: ,