美文网首页程序员@IT·互联网Android知识
设备兼容处理-[Android_YangKe]

设备兼容处理-[Android_YangKe]

作者: Android_YangKe | 来源:发表于2017-04-18 15:42 被阅读275次

    最好的学习资料

    Android 的设计是让所有应用程序可以运行在不同类型设备上。主要设备有:手机、平板、电视。作为一个开发者,适配的范围为应用程序提供了一个巨大的潜在用户,为了我们的产品可以成功在所有设备上进行使用,我们应该容忍一些特性变化,并提供一个灵活的用户界面,使之能够适应不同的屏幕配置。

    为了努力达到这一目标,Android 为我们提供了一个 App Framework app resources,(资源是动态加载的)我们可以为不同的屏幕提供不同的 UI 布局,以适在当前设备上可以近完美的展示我们应用的功能。

    如果有必要,我们可以控制我们的应用可以在什么样的设备上运行,这里主要解释了我们可以控制哪些设备访问您的应用程序,以及如何准备您的应用程序,以确保他们在不同的设备上达到如期的设计。

    首先看一下兼容性主要指什么?

    当你阅读很多关于 Android 开发的资料时,你很可能会遇到“compatibility”(兼容性)这个词。兼容性有两种类型:设备兼容性和应用程序兼容性。

    设备兼容性:Android 是一个开源的操作系统,国内很多手机制造厂商用的都是 Android 系统。因此国内出现了很多不同类型的设备(主要指移动设备)例如一些手机是否具备NFC、闪光灯、陀螺仪、GPS等硬件。总结:**乱、砸、大小不一 **。

    应用程序兼容性:基于硬件让我们的产品展现出更好的用户体验。如:一些手机不具备 GPS 硬件,一个基于此硬件的应用程序,可能在不同的手机设备里展现的功能不大一样,对于不具备这样硬件的设备我们可以给出友好的提示或者屏蔽此功能。

    设备功能处理

    根据设备特性管理你应用程序的可用性,Android 定义特性 id 对于任何硬件或软件功能,可能不是所有设备上可用。例如:罗盘传感器的特性 id FEATURE_SENSOR_COMPASS 和FEATURE_APP_WIDGETS 窗口小部件的特性 id。

    如果有必要,你可以防止用户安装您的应用时设备不提供一个给定的功能通过声明它<uses-feature>元素的应用程序清单文件。

    例如,如果您的应用程序在设备上没有意义,缺乏一个罗盘传感器,可以声明罗盘传感器与下列清单标签要求:

    <manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
    </manifest>
    

    <uses-feature>
    声明应用使用的单一硬件或软件功能。

    用途是将您的应用依赖的硬件和软件功能集通知任何外部实体。 该元素提供的 required 属性可让您指定您的应用是需要声明的功能并且没有该功能便无法正常工作,还是使用该功能只是一种优先选择,没有它仍然可以正常工作。 由于功能支持可能因 Android 设备而异,<uses-feature>元素发挥的重要作用是,能够让应用描述其使用的随设备而变化的功能。
    您的应用声明的可用功能集对应于 Android PackageManager
    提供的功能常量集,

    在谷歌应用商店中,商店会比较你的应用的特性,检查每个用户的设备的特性确定应用程序是否与每个设备兼容。如果设备不提供您的应用程序需要的所有功能,用户则不能安装您的应用。同理国内的主流应用市场应该也是这样的,未做实践。

    如果你应用程序的主要功能在某些设备上不存在所对应的硬件,你应该将必要的属性设置为“false”,并检查设备在运行时的特性。如果应用程序功能对当前设备不可用,优雅地降低相应的应用功能。例如,您可以调用 hasSystemFeature() 查询功能是否可用。

    PackageManager pm = getPackageManager();
    if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device does not have a compass, turn off the compass feature
    disableCompassFeature();
    }
    

    注意:某些系统权限隐含地要求设备功能的可用性。 例如,如果您的应用程序请求访问 BLUETOOTH 的权限,则会隐式地需要 FEATURE_BLUETOOTH 设备功能。 您可以根据此功能禁用过滤,并通过在<uses-feature>标记中将所需属性设置为“false”,使您的应用程序可用于无蓝牙设备。

    平台版本

    不同的设备运行着不同的 Android 版本,例如 Android 4.0 或 Android 4.4。 每个连续的平台版本通常会添加新的 API,而不是以前的版本。 要指出哪些 API 可用,每个平台版本都指定一个 API 级别。 例如,Android 1.0 是 API 级别 1,Android 4.4 是 API 级别 19。

    API 级别允许您使用<uses-sdk>清单标签及其 minSdkVersion 属性来声明应用程序兼容的最低版本。

    例如,日历提供程序 API 已在 Android 4.0(API级别14)中添加。 如果您的应用程序在没有这些API的情况下无法运行,则应将 API 级别 14 声明为应用程序的最低支持版本,如下所示:

     <manifest ... >
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" />
    ...
    </manifest>
    

    minSdkVersion 属性声明您的应用程序兼容的最低版本,targetSdkVersion 属性声明您已经优化了应用程序的最高版本。

    屏幕适配

    Android在各种尺寸的设备上运行,从手机到平板电脑和电视。 为了按照屏幕类型对设备进行分类,Android 为每个设备定义了两个特征:屏幕尺寸(屏幕的物理尺寸)和屏幕密度(屏幕上像素的物理密度,称为DPI)。 为了简化不同的配置,Android将这些变体概括为使它们更容易定位的组

    • 四个尺寸:小、普通、大、超级大
    • 几个密度值:mdpi (medium), hdpi (hdpi), xhdpi (extra high), xxhdpi (extra-extra high),其他。

    默认情况下您的设备兼容所有设备的尺寸和密度,因为系统会适当的调整 UI 布局和加载响应 res 文件,同时,您应该为不同的屏幕尺寸添加专门的布局,并为通用的屏幕密度优化位图图像,优化每个屏幕配置的用户体验。

    适配不同设备屏幕 Supporting Different Screens.

    再坚持一下,再努力一下,再前进一下,也许,设备兼容离你只有一步之遥。有句话说,哪怕只有百分之一的希望,我也要付出百分之百的努力。学习不能停!!

    ps: 有帮助的话: 喜欢、评论、转发,动一动你的小手让更多的人知道!关注 帅比-杨

    相关文章

      网友评论

        本文标题:设备兼容处理-[Android_YangKe]

        本文链接:https://www.haomeiwen.com/subject/cxzfzttx.html