zoukankan      html  css  js  c++  java
  • Google Play和基于Feature的过滤 —— Feature 参考手册

    翻译自 Features Reference

    下表列出了软/硬件Feature和权限的参考信息,它们被用于GooglePlay

    硬件feature

    下面列出了被大多数当前发布的平台所支持的硬件功能描述。为了标明应用程序所使用或需要的某个硬件Feature,都要在一个独立的<uses-feature>元素的android:name属性中声明。

    Feature类型

    Feature描述符

    描述

    注释

    Audio

    android.hardware.audio.low_latency

    应用程序使用设备上的低延迟的音频通道,并且对于输入或输出的延迟或之后是敏感的。

     

    Bluetooth

    android.hardware.bluetooth

    应用程序要使用设备中的蓝牙射频Feature

     

    Camera

    android.hardware.camera

    应用程序要使用设备的摄像头,如果设备支持多个摄像头,那么应用程序会使用屏幕背面的那个。

     

    android.hardware.camera.autofocus

    Feature。应用程序要使用设备摄像头的自动对焦能力。

    这些子Feature隐式的声明了android.hardware.camera的父功能,除非声明了android:required="false"

    android.hardware.camera.flash

    Feature。应用程序要使用设备摄像头的闪光灯能力。

    android.hardware.camera.front

    Feature。应用程序要使用设备上的前置摄像头。

    android.hardware.camera.any

    应用程序至少使用了任何方向上的摄像头。如果后摄像头不是必须的可以用android.hardware.camera.

     

    Location

    android.hardware.location

    应用程序会使用设备上的多种功能来获取位置,如GPS定位、网络定位、或小区定位。

     

    android.hardware.location.network

    Feature,应用程序要从设备上所支持的基于网络的定位系统来获取大概的位置坐标。

    这些子Feature的声明,就隐式的声明了android.hardware.locationFeature,除非其声明了android:required="false"

    android.hardware.location.gps

    Feature,应用程序使用了从设备上的全球定位系统接收器中获取精确的坐标。

    Microphone

    android.hardware.microphone

    应用程序要使用设备上的麦克风。

     

    NFC

    android.hardware.nfc

    应用程序要使用设备中的NFC近距离无线通信功能。

     

    Sensors

    android.hardware.sensor.accelerometer

    应用程序要使用设备上的加速度传感器的运动读数。

     

    android.hardware.sensor.barometer

    应用程序要使用设备的压力传感器。

     

    android.hardware.sensor.compass

    应用程序要使用设备上的磁极(罗盘)来读取方向读数。

     

    android.hardware.sensor.gyroscope

    应用程序要使用设备上的陀螺仪。

     

    android.hardware.sensor.light

    应用程序要使用设备的亮度传感器。

     

    android.hardware.sensor.proximity

    应用程序要使用设备的接近proximity传感器。

     

    Screen

    android.hardware.screen.landscape

    应用程序需要横向屏幕

    例如:如果应用程序需要纵向屏幕,就应该声明<uses-featureandroid:name="android.hardware.screen.portrait"/>,以便只有支持纵向的设备能够安装该应用程序。如果应用程序两个方向都支持,那么就不需要做任何声明。

    默认情况下,这两个方向都被假定为不需要,因此应用程序可以安装在支持一个方向或两个方向都支持的设备上。然而,一旦应用程序使用android:screenOrientation属性,设定要运行在一个特定的设备上,就声明了应用程序需要screen方向的Feature。例如,如果用android:screenOrientation属性声明了"landscape","reverseLandscape", "sensorLandscape"值,那么应用程序只对支持横向屏幕的设备有效。最好的实践是,依然使用<uses-feature>元素声明一个方向的Feature请求。如果使用android:screenOrientation,属性给Activity声明了一个方向,但实际却不需要该Feature请求,那么就可以通过<uses-feature>元素并包含android:required="false"禁止该Feature需求。

    为了向后兼容,任何平台版本只支持APILevel 12或更低的的设备,都被假定为同时支持横向和纵向屏幕。

    android.hardware.screen.portrait

    应用程序需要纵向屏幕

    Telephony

    android.hardware.telephony

    应用程序要使用设备设备上的电话Feature,如带有数据通信服务的无线电话。

     

    android.hardware.telephony.cdma

    Feature,应用程序要使用设备上的CDMA无线电话功能

    这些子Feature隐式的声明了android.hardware.telephonyFeature,除非该功能需求声明了android:required="false"属性。

    android.hardware.telephony.gsm

    Feature,应用程序要使用设备上的GSM无线电话功能

    Television

    android.hardware.type.television

    The application is designed for a television user experience.

    This feature defines "television" to be a typicalliving room television experience: displayed on a big screen,where the user is sitting far away and the dominant form of inputis something like a d-pad, and generally not through touch or amouse/pointer-device.

    Touchscreen

    android.hardware.faketouch

    应用程序要使用基本的触屏事件,如“clickdown”、“clickup”和“drag”

    当应用程序声明了这个功能需求时,则表明该应用程序只能跟提供了模拟触屏(faketouch 接口)操作的设备兼容。提供faketouch接口的设备会给用户提供一种模拟触屏能力的输入系统。例如,驱动屏幕光标提供faketouch接口的鼠标或远程控制。如果应用程序需要基本的点和click交互(换句话说,只有一个方向板(d-pad),应用程序是不会工作的),就应该声明这个功能,因为这是触屏交互的最低级别,这样应用程序也会跟提供更复杂的触屏交互的设备兼容。

    注意:默认情况下,因为应用程序需要android.hardware.touchscreenFeature,所以如果想要应用程序对提供了faketouch接口的设备有效,那么就必须通过声明<uses-featureandroid:name="android.hardware.touchscreen"android:required="false"/>,来明确的声明触屏不是必须的。

    android.hardware.faketouch.multitouch.distinct

    应用程序要在faketouch(假触屏)表面上执行区分两点以上触摸的轨迹的操作,这是faketouce功能的一个超集。

    当应用程序声明了这个需求时,表明该应用程序只跟支持区分两点以上的模拟触屏事件的设备兼容。

    跟通过android.hardware.touchscreen.multitouch.distinct定义的多点触控不同,支持在faketouch表面进行两点以上触控输入的设备,它不支持所有的双指手势,因为当前输入会被转换成平面上的光标移动。也就是说,在这样设备上的单指手势会移动光标,双指碰擦会导致单指的触屏事件;其他的双指手势会导致相应的双指触屏事件。例如:提供了移动光标的和多指触控的轨迹板,就是一种支持在faketouch表面执行区分多点触控的设备。

    android.hardware.faketouch.multitouch.jazzhand

    应用程序要在faketouch(假触屏)表面上执行区分五点以上触摸的轨迹的操作,这是faketouce功能的一个超集。

    当应用程序声明这个功能需求时,表明该应用程序只会跟支持区分五点以上轨迹的模拟触屏设备兼容。

    跟通过android.hardware.touchscreen.multitouch.jazzhand定义的多点触控不同,该功能定义的输入设备表面不会支持所有的五指手势,因为该输入会转换成屏幕上的光标移动。也就是说,单指手势会移动设备上的光标,多指触碰手势会导致一个单指触碰事件;其他的多指手势会导致相应的多指触碰事件。例如:提供了移动光标的和多指触控的轨迹板,就是一种支持在faketouch表面执行区分多点触控的设备。

    android.hardware.touchscreen

    应用程序要使用比基本的触屏事件还要多的手势交互功能,如,抛物手势。该功能是基本faketouch功能的一个超集。

    默认情况下,应用程序需要这个功能。因此,默认情况下,应用程序对只提供模拟触摸屏(faketouch)的设备是无效的。如果想要应用程序对提供模拟触摸屏的设备有效,就必须明确的声明触摸屏不是必须的,声明方式如下:<uses-featurename=”android:hardware.touchscreen” android:required=”false”/>。即使应用程序不需要使用一个实际的触摸屏。

    如果应用程序需要一个触摸屏(为了执行一些触碰手势),那么不需要做任何该功能的定义,因为默认这个功能是必须的。但是,最好还是明确的声明应用程序所要使用的全部功能,因此如果应用程序要使用该功能,依然还应该声明它。

    如果需要更复杂的触摸交互,如多指手势,就应该声明下面的高级触屏功能。

    android.hardware.touchscreen.multitouch

    应用程序要使用多点触屏上的基本双点触摸功能,如掐捏手势,但不需要独立的轨迹跟踪。该功能是touchscreenFeature的一个超集。

    声明该Feature,隐式的声明了android.hardware.touchscreenFeature,除非该功能声明了android:required="false"属性。

    android.hardware.touchscreen.multitouch.distinct

    Feature,应用程序要使用多点触屏设备的高级多点触摸功能,如两个以上完全独立的点的轨迹跟踪。它是multitouchFeature的子集。

    声明该Feature,隐式的声明了android.hardware.touchscreen.multitouchFeature,除非该功能声明了android:required="false"属性。

    android.hardware.touchscreen.multitouch.jazzhand

    该应用程序要使用多点触屏设备的多点触摸功能,如五个以上完全独立的点的轨迹跟踪。它是multitouchFeature的子集。

    USB

    android.hardware.usb.host

    应用程序要使用USBHOST(主机)模式Feature(应用程序以主机的方式连接到USB设备上)

     

    android.hardware.usb.accessory

    应用程序要使用访问USBFeature(应用程序以USB设备的方式连接到USBHOST/主机上)。

     

    Wifi

    android.hardware.wifi

    应用程序使用设备上的802.11网络(wifiFeature

     



    软件Feature列表

    下表中列出了由当前大多数发布的Android平台所支持的软件Feature描述。对于应用程序要使用或需要的某一Feature,都要在应用程序的Manifest中的<uses-feature>元素中使用android:name属性来进行声明。



    Feature

    属性值

    描述

    注释

    Live Wallpaper

    android.software.live_wallpaper

    应用程序使用或提供LiveWallpapers

     

    SIP/VOIP

    android.software.sip

    应用程序使用SIP服务。

     

    android.software.sip.voip

    Feature。应用程序要使用设备上的基于SIPVOIP服务。

    声明这个子Feature,隐式的声明了android.software.sipFeature,除非声明该功能时也声明了android:required="false"



    隐式的Feature需求的权限

    在上面列出的一些Feature常量中,要在相应的API发布之后,才对应用有效。例如,在Android2.2(APILevel 8)中添加了android.hardware.bluetooth功能常量,但是它所指向的蓝牙API是在Android2.0APILevel5)中被添加的。正因为这样,某些应用能够在有能力通过<uses-feature>元素声明其所需的API功能之前,就能够使用这些API

    要防止无意间让某些功能对应用程序有效,GooglePlay会假定某些相关硬件的权限,来指定默认情况下所需要的底层硬件功能。例如,使用蓝牙功能的应用程序必须在<uses-permission>元素中申请BLUETOOTH权限,对于旧版应用程序,GooglePlay会假定权限的声明,意味着应用程序需要底层的android.hardware.bluetoothFeature,并且会基于该功能来过滤应用程序。

    下表中列出的暗示功能需求的权限,等同于那些在<uses-feature>元素中声明的功能需求。要注意的是那些包含android:required属性的<uses-feature>声明,它的优先级要始终高于下表中隐式的的功能需求。

    对于下表中的任何权限,都能够用带有android:required="false"属性的<uses-feature>元素来明确的禁止基于隐式功能的过滤。例如,要禁止基于CAMERA权限的任何过滤,可以在其清单文件中添加以下<uses-feature>元素的声明:

    <uses-feature android:name="android.hardware.camera" android:required="false" />



    分类

    权限...

    隐含的Feature需求

    Bluetooth

    BLUETOOTH

    android.hardware.bluetooth

    (详情参考Specialhandling for Bluetooth feature)

    BLUETOOTH_ADMIN

    android.hardware.bluetooth

    Camera

    CAMERA

    android.hardware.camera and
    android.hardware.camera.autofocus

    Location

    ACCESS_MOCK_LOCATION

    android.hardware.location

    ACCESS_LOCATION_EXTRA_COMMANDS

    android.hardware.location

    INSTALL_LOCATION_PROVIDER

    android.hardware.location

    ACCESS_COARSE_LOCATION

    android.hardware.location.networkand
    android.hardware.location

    ACCESS_FINE_LOCATION

    android.hardware.location.gps and
    android.hardware.location

    Microphone

    RECORD_AUDIO

    android.hardware.microphone

    Telephony

    CALL_PHONE

    android.hardware.telephony

    CALL_PRIVILEGED

    android.hardware.telephony

    MODIFY_PHONE_STATE

    android.hardware.telephony

    PROCESS_OUTGOING_CALLS

    android.hardware.telephony

    READ_SMS

    android.hardware.telephony

    RECEIVE_SMS

    android.hardware.telephony

    RECEIVE_MMS

    android.hardware.telephony

    RECEIVE_WAP_PUSH

    android.hardware.telephony

    SEND_SMS

    android.hardware.telephony

    WRITE_APN_SETTINGS

    android.hardware.telephony

    WRITE_SMS

    android.hardware.telephony

    Wifi

    ACCESS_WIFI_STATE

    android.hardware.wifi

    CHANGE_WIFI_STATE

    android.hardware.wifi

    CHANGE_WIFI_MULTICAST_STATE

    android.hardware.wifi

     


  • 相关阅读:
    life
    Android通过XML来定义Menu
    Android通过XML来定义Menu
    Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
    作为股权类投资人,我们的投资偏好和投资原则
    作为股权类投资人,我们的投资偏好和投资原则
    给TextView添加超链接的四种方式
    详解ExplosionField的使用,实现View的粉碎效果
    MySql中允许远程连接
    我的投资案例(3)-看好互联网和金融两大朝阳行业,参投入股垂直金融招聘平台"职业梦CareerDream.cn"
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3293775.html
Copyright © 2011-2022 走看看