我花费了相当多的时间,使我的用户界面只能通过键盘输入来操作。但是最后我不确定我是否能够依赖这样一种假设,即所有 Android 设备都有触摸屏。
有没有办法确定一个 Android 设备是否具有触摸屏?
我花费了相当多的时间,使我的用户界面只能通过键盘输入来操作。但是最后我不确定我是否能够依赖这样一种假设,即所有 Android 设备都有触摸屏。
有没有办法确定一个 Android 设备是否具有触摸屏?
您应该研究现有设备并阅读Android兼容性定义文档(CDD),然后自己决定。
我花了相当多的时间尝试解决这个问题。上面的帖子正确指出,Android已经驱动一些非触摸设备,并将很快驱动Google电视,但是目前,CDD明确要求所有Android设备都必须具备触摸屏。
基本上,Android兼容性计划是为了规避您现在担心的那种碎片化问题而创建的。它列出了许多要求,如果一个设备不符合这些要求,则无法访问Android市场。这些要求包括触摸屏、无线通信、蓝牙、相机等等。
如果您调查这些平板电脑和上网本,您会发现没有一个搭载Android Market。Augen最近试图通过他们的新GENTOUCH 78平板电脑来欺骗人们,但在被Android兼容性团队打回后,不得不撤回他们的声明,称平板电脑将搭载Android Market。
因此,如果您只通过Android Market分发应用程序,则在Google更改CDD之前,您无需担心任何问题。但是,如果您想在其他应用商店或直接下载中提供应用程序,则必须担心您的关键模式导航问题。
如果这可以安慰你,我发现许多应用程序都有完全相同的问题;它们没有触摸屏就无法使用。其中许多应用程序还存在着焦点和软键盘等严重问题。有时键盘应该隐藏但却一直显示。有时无论你点击多少次EditText,键盘都不会弹出来。在我看来,Android框架在这些方面处理得并不好。
考虑到这一切,看看Google TV将如何适应这一切肯定是很有趣的。他们会更新CDD以兼容他们的机顶盒吗?他们会为Google TV实现使用不同的SDK和CDD吗?当涉及到Google TV时,他们会完全忽略兼容性计划吗?你的猜测和我的一样好。
更新:
看起来Google终于有人站出来承认Android目前还没有准备好在平板电脑上运行:
http://phandroid.com/2010/09/10/shocker-google-says-android-not-meant-for-tablets-in-its-current-state/
对我来说,这意味着Google没有为加速采用Android OS做好准备,并没有充分规划该平台的未来。支持大于480x800像素的屏幕几乎是不可能的,而三星只能通过与谷歌在Galaxy Tab上密切合作才能实现。所以我不确定我们需要在不久的将来担心非触摸屏设备。它们最终肯定会到来,但当它们到来时,我们可能会看到一个专门为这些设备设计的应用市场,或者对现有市场进行一些更改,也可能会有一个新的CDD,谁知道呢。
对我来说,这意味着Google仍在试探中,我们也只能和他们一样尝试。
到目前为止,所有的手机都有触摸屏,但并不意味着它们必须有。
然而,有很多没有触摸屏的上网本、笔记本电脑和即将推出的电视。这些设备有鼠标。据我所见,鼠标输入会通过触摸系统进行处理,因此MouseDown就是ACTION_DOWN等等(不知道右键点击怎么办)。
您是否只针对手机进行目标定位?Android系统正在许多设备上出现,包括电视。我不知道新的库是否会被发布以将设备的各个部分隔离开来,但如果您想要更广泛的受众,我建议保持键盘输入可用。
Google TV(GTV)是目前最受欢迎的Android非触摸设备(在本回答撰写时)。然而,如果您有“notouch”资源(例如类似res/layout-notouch/的目录),那么还有几种设备将需要调用非触摸渲染。
为了适应非触摸设备,请确保焦点会引起可视化选择指示器,并且(对于GTV)方向键中心按钮上已经设置了按键监听器。使用默认的小部件和主题通常可以自动完成大部分工作。如果您自己制作按钮,则需要为聚焦和聚焦+按下状态准备背景9-patches。
在GTV上运行是一个很好的测试环境,以确保非触摸功能正常运行,现在GTV有一个模拟器,尽管它只能在Linux/x86上运行。