diff options
-rw-r--r-- | core/java/android/accounts/AccountManager.java | 2 | ||||
-rw-r--r-- | core/java/android/widget/TextView.java | 54 | ||||
-rw-r--r-- | core/res/res/values-ca/strings.xml | 6 | ||||
-rw-r--r-- | core/res/res/values-de/strings.xml | 4 | ||||
-rw-r--r-- | core/res/res/values-es/strings.xml | 2 | ||||
-rw-r--r-- | core/res/res/values-sl/strings.xml | 2 | ||||
-rw-r--r-- | core/res/res/values-zh-rCN/strings.xml | 54 | ||||
-rw-r--r-- | core/tests/ConnectivityManagerTest/AndroidManifest.xml | 16 | ||||
-rw-r--r-- | core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/WifiAssociationTestRunner.java | 88 | ||||
-rw-r--r-- | core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/WifiAssociationTest.java | 25 | ||||
-rw-r--r-- | docs/html/about/dashboards/index.jd | 45 | ||||
-rw-r--r-- | docs/html/distribute/googleplay/spotlight/index.jd | 33 | ||||
-rw-r--r-- | docs/html/index.jd | 7 | ||||
-rw-r--r-- | media/java/android/media/audiofx/AudioEffect.java | 32 |
14 files changed, 267 insertions, 103 deletions
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index b4a12c4..12fcdcf 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -822,7 +822,7 @@ public class AccountManager { * {@link android.Manifest.permission#USE_CREDENTIALS}. * * @param account The account to fetch an auth token for - * @param authTokenType The auth token type, see {#link getAuthToken} + * @param authTokenType The auth token type, see {@link #getAuthToken getAuthToken()} * @param notifyAuthFailure If true, display a notification and return null * if authentication fails; if false, prompt and wait for the user to * re-enter correct credentials before returning diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 53cf82d..04c4070 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -145,6 +145,13 @@ import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1; * view for editing. * * <p> + * To allow users to copy some or all of the TextView's value and paste it somewhere else, set the + * XML attribute {@link android.R.styleable#TextView_textIsSelectable + * android:textIsSelectable} to "true" or call + * {@link #setTextIsSelectable setTextIsSelectable(true)}. The {@code textIsSelectable} flag + * allows users to make selection gestures in the TextView, which in turn triggers the system's + * built-in copy/paste controls. + * <p> * <b>XML attributes</b> * <p> * See {@link android.R.styleable#TextView TextView Attributes}, @@ -4799,17 +4806,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** - * When a TextView is used to display a useful piece of information to the user (such as a - * contact's address), it should be made selectable, so that the user can select and copy this - * content. - * - * Use {@link #setTextIsSelectable(boolean)} or the - * {@link android.R.styleable#TextView_textIsSelectable} XML attribute to make this TextView - * selectable (text is not selectable by default). * - * Note that this method simply returns the state of this flag. Although this flag has to be set - * in order to select text in non-editable TextView, the content of an {@link EditText} can - * always be selected, independently of the value of this flag. + * Returns the state of the {@code textIsSelectable} flag (See + * {@link #setTextIsSelectable setTextIsSelectable()}). Although you have to set this flag + * to allow users to select and copy text in a non-editable TextView, the content of an + * {@link EditText} can always be selected, independently of the value of this flag. + * <p> * * @return True if the text displayed in this TextView can be selected by the user. * @@ -4820,16 +4822,28 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** - * Sets whether or not (default) the content of this view is selectable by the user. - * - * Note that this methods affect the {@link #setFocusable(boolean)}, - * {@link #setFocusableInTouchMode(boolean)} {@link #setClickable(boolean)} and - * {@link #setLongClickable(boolean)} states and you may want to restore these if they were - * customized. - * - * See {@link #isTextSelectable} for details. - * - * @param selectable Whether or not the content of this TextView should be selectable. + * Sets whether the content of this view is selectable by the user. The default is + * {@code false}, meaning that the content is not selectable. + * <p> + * When you use a TextView to display a useful piece of information to the user (such as a + * contact's address), make it selectable, so that the user can select and copy its + * content. You can also use set the XML attribute + * {@link android.R.styleable#TextView_textIsSelectable} to "true". + * <p> + * When you call this method to set the value of {@code textIsSelectable}, it sets + * the flags {@code focusable}, {@code focusableInTouchMode}, {@code clickable}, + * and {@code longClickable} to the same value. These flags correspond to the attributes + * {@link android.R.styleable#View_focusable android:focusable}, + * {@link android.R.styleable#View_focusableInTouchMode android:focusableInTouchMode}, + * {@link android.R.styleable#View_clickable android:clickable}, and + * {@link android.R.styleable#View_longClickable android:longClickable}. To restore any of these + * flags to a state you had set previously, call one or more of the following methods: + * {@link #setFocusable(boolean) setFocusable()}, + * {@link #setFocusableInTouchMode(boolean) setFocusableInTouchMode()}, + * {@link #setClickable(boolean) setClickable()} or + * {@link #setLongClickable(boolean) setLongClickable()}. + * + * @param selectable Whether the content of this TextView should be selectable. */ public void setTextIsSelectable(boolean selectable) { if (!selectable && mEditor == null) return; // false is default value with no edit data diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 21f4357..77f89d1 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -565,8 +565,8 @@ <string name="permdesc_changeNetworkState" msgid="6789123912476416214">"Permet que l\'aplicació pugui canviar l\'estat de connectivitat de la xarxa."</string> <string name="permlab_changeTetherState" msgid="5952584964373017960">"Canvia la connectivitat d\'ancoratge a xarxa"</string> <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permet que l\'aplicació canviï l\'estat de la connectivitat de la xarxa d\'ancoratge."</string> - <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"canviar la configuració d\'ús de dades de referència"</string> - <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permet que l\'aplicació canviï la configuració d\'ús de les dades de fons."</string> + <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"canviar la configuració d\'ús de dades en segon pla"</string> + <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permet que l\'aplicació canviï la configuració d\'ús de les dades en segon pla."</string> <string name="permlab_accessWifiState" msgid="5202012949247040011">"veure connexions Wi-Fi"</string> <string name="permdesc_accessWifiState" msgid="5002798077387803726">"Permet que l\'aplicació visualitzi informació sobre les xarxes Wi-Fi, com ara si la Wi-Fi està activada i el nom dels dispositius Wi-Fi connectats."</string> <string name="permlab_changeWifiState" msgid="6550641188749128035">"connectar-se a xarxes Wi-Fi i desconnectar-se"</string> @@ -1400,7 +1400,7 @@ <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"S\'ha superat el límit de dades mòbils"</string> <string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"S\'ha superat el límit de dades Wi-Fi"</string> <string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"<xliff:g id="SIZE">%s</xliff:g> per sobre del límit especif."</string> - <string name="data_usage_restricted_title" msgid="5965157361036321914">"Dades de referència restringides"</string> + <string name="data_usage_restricted_title" msgid="5965157361036321914">"Dades en segon pla restringides"</string> <string name="data_usage_restricted_body" msgid="6741521330997452990">"Toca per eliminar la restricció."</string> <string name="ssl_certificate" msgid="6510040486049237639">"Certificat de seguretat"</string> <string name="ssl_certificate_is_valid" msgid="6825263250774569373">"Aquest certificat és vàlid."</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 0bed825..8443d7f 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -602,7 +602,7 @@ <string name="permlab_readDictionary" msgid="4107101525746035718">"Begriffe lesen, die Sie zum Wörterbuch hinzugefügt haben"</string> <string name="permdesc_readDictionary" msgid="659614600338904243">"Ermöglicht der App, alle Wörter, Namen und Ausdrücke zu lesen, die ein Nutzer in seinem Wörterbuch gespeichert hat."</string> <string name="permlab_writeDictionary" msgid="2183110402314441106">"Wörter zu meinem Wörterbuch hinzufügen"</string> - <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ermöglicht der App, dem Nutzerwörterbuch neue Einträge hinzuzufügen"</string> + <string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ermöglicht der App, neue Einträge zum Nutzerwörterbuch hinzuzufügen"</string> <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"Zugriff auf geschützten Speicher testen"</string> <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"Zugriff auf geschützten Speicher testen"</string> <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"Ermöglicht der App, eine Berechtigung für USB-Speicher zu testen, die künftig auf neuen Geräten verfügbar sein wird"</string> @@ -938,7 +938,7 @@ <string name="oneMonthDurationPast" msgid="7396384508953779925">"Vor 1 Monat"</string> <string name="beforeOneMonthDurationPast" msgid="909134546836499826">"Vor mehr als 1 Monat"</string> <plurals name="num_seconds_ago"> - <item quantity="one" msgid="4869870056547896011">"Vor 1 Sekunde"</item> + <item quantity="one" msgid="4869870056547896011">"vor 1 Sekunde"</item> <item quantity="other" msgid="3903706804349556379">"vor <xliff:g id="COUNT">%d</xliff:g> Sekunden"</item> </plurals> <plurals name="num_minutes_ago"> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 0ab7fca..67a6755 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -925,7 +925,7 @@ <string name="prepend_shortcut_label" msgid="2572214461676015642">"MENU+"</string> <string name="menu_space_shortcut_label" msgid="2410328639272162537">"espacio"</string> <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"intro"</string> - <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"suprimir"</string> + <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"eliminar"</string> <string name="search_go" msgid="8298016669822141719">"Buscar"</string> <string name="searchview_description_search" msgid="6749826639098512120">"Buscar"</string> <string name="searchview_description_query" msgid="5911778593125355124">"Consulta"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 80cb710..40ee9f1 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -607,7 +607,7 @@ <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"preskus dostopa do zaščitene shrambe"</string> <string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"Aplikaciji omogoča preskušanje dovoljenja za shrambo USB, ki bo na voljo v prihodnjih napravah."</string> <string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"Aplikaciji omogoča preskušanje dovoljenja za kartico SD, ki bo na voljo v prihodnjih napravah."</string> - <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"spr. ali bris. vseb. pomn. USB"</string> + <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"spreminjanje ali brisanje vsebine shrambe USB"</string> <string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"spreminjanje ali brisanje vsebine kartice SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Programu omogoča zapisovanje v pomnilnik USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Programu omogoča pisanje na kartico SD."</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index b131962..d8f8a8b 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -451,17 +451,17 @@ <string name="permlab_installLocationProvider" msgid="6578101199825193873">"允许安装位置信息提供程序"</string> <string name="permdesc_installLocationProvider" msgid="9066146120470591509">"创建用于测试的模拟位置源或安装新的位置提供程序。此权限可让该应用覆盖由其他位置源(如 GPS)或位置提供程序返回的位置和/或状态信息。"</string> <string name="permlab_accessFineLocation" msgid="1191898061965273372">"精确位置(基于 GPS 和网络)"</string> - <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"允许该应用通过全球定位系统 (GPS) 或网络位置信息源(例如基站和 Wi-Fi)获取您的精确位置信息。您必须在设备上开启这些位置服务,应用才能获得位置信息。应用会使用此类服务确定您的位置,这可能会消耗更多电量。"</string> + <string name="permdesc_accessFineLocation" msgid="5295047563564981250">"允许该应用通过全球定位系统 (GPS) 或网络位置信息源(例如基站和 WLAN)获取您的精确位置信息。您必须在设备上开启这些位置服务,应用才能获得位置信息。应用会使用此类服务确定您的位置,这可能会消耗更多电量。"</string> <string name="permlab_accessCoarseLocation" msgid="4887895362354239628">"大致位置(基于网络)"</string> - <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"允许该应用获取您的大致位置信息。这类位置信息来自于使用网络位置信息源(例如基站和 Wi-Fi)的位置服务。您必须在设备上开启这些位置服务,应用才能获得位置信息。应用会使用此类服务确定您的大概位置。"</string> + <string name="permdesc_accessCoarseLocation" msgid="2538200184373302295">"允许该应用获取您的大致位置信息。这类位置信息来自于使用网络位置信息源(例如基站和 WLAN)的位置服务。您必须在设备上开启这些位置服务,应用才能获得位置信息。应用会使用此类服务确定您的大概位置。"</string> <string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"访问 SurfaceFlinger"</string> <string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"允许应用使用 SurfaceFlinger 低级功能。"</string> <string name="permlab_readFrameBuffer" msgid="6690504248178498136">"读取帧缓冲区"</string> <string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"允许应用读取帧缓冲区的内容。"</string> - <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"配置 Wi-Fi 显示设备"</string> - <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"允许应用配置并连接到 Wi-Fi 显示设备。"</string> - <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"控制 Wi-Fi 显示设备"</string> - <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"允许应用控制 Wi-Fi 显示设备的基础功能。"</string> + <string name="permlab_configureWifiDisplay" msgid="5595661694746742168">"配置 WLAN 显示设备"</string> + <string name="permdesc_configureWifiDisplay" msgid="7916815158690218065">"允许应用配置并连接到 WLAN 显示设备。"</string> + <string name="permlab_controlWifiDisplay" msgid="393641276723695496">"控制 WLAN 显示设备"</string> + <string name="permdesc_controlWifiDisplay" msgid="4543912292681826986">"允许应用控制 WLAN 显示设备的基础功能。"</string> <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"更改您的音频设置"</string> <string name="permdesc_modifyAudioSettings" msgid="3522565366806248517">"允许该应用修改全局音频设置,例如音量和用于输出的扬声器。"</string> <string name="permlab_recordAudio" msgid="3876049771427466323">"录音"</string> @@ -567,13 +567,13 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"允许应用更改绑定网络连接的状态。"</string> <string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"更改后台数据使用设置"</string> <string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"允许应用更改后台数据使用设置。"</string> - <string name="permlab_accessWifiState" msgid="5202012949247040011">"查看 Wi-Fi 连接"</string> - <string name="permdesc_accessWifiState" msgid="5002798077387803726">"允许该应用查看 Wi-Fi 网络的相关信息,例如是否启用了 Wi-Fi 以及连接的 Wi-Fi 设备的名称。"</string> - <string name="permlab_changeWifiState" msgid="6550641188749128035">"连接 Wi-Fi 和断开连接"</string> - <string name="permdesc_changeWifiState" msgid="7137950297386127533">"允许该应用与 Wi-Fi 接入点建立和断开连接,以及更改 Wi-Fi 网络的设备配置。"</string> - <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"允许接收 Wi-Fi 多播"</string> - <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"允许该应用使用多播地址接收发送到 Wi-Fi 网络上所有设备(而不仅仅是您的平板电脑)的数据包。该操作的耗电量比非多播模式要大。"</string> - <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"允许该应用使用多播地址接收发送到 Wi-Fi 网络上所有设备(而不仅仅是您的手机)的数据包。该操作的耗电量比非多播模式要大。"</string> + <string name="permlab_accessWifiState" msgid="5202012949247040011">"查看 WLAN 连接"</string> + <string name="permdesc_accessWifiState" msgid="5002798077387803726">"允许该应用查看 WLAN 网络的相关信息,例如是否启用了 WLAN 以及连接的 WLAN 设备的名称。"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"连接 WLAN 和断开连接"</string> + <string name="permdesc_changeWifiState" msgid="7137950297386127533">"允许该应用与 WLAN 接入点建立和断开连接,以及更改 WLAN 网络的设备配置。"</string> + <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"允许接收 WLAN 多播"</string> + <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"允许该应用使用多播地址接收发送到 WLAN 网络上所有设备(而不仅仅是您的平板电脑)的数据包。该操作的耗电量比非多播模式要大。"</string> + <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"允许该应用使用多播地址接收发送到 WLAN 网络上所有设备(而不仅仅是您的手机)的数据包。该操作的耗电量比非多播模式要大。"</string> <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"访问蓝牙设置"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"允许应用配置本地蓝牙平板电脑,以及发现远程设备并进行配对。"</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"允许应用配置本地蓝牙手机,以及发现远程设备并进行配对。"</string> @@ -1128,23 +1128,23 @@ <string name="ringtone_picker_title" msgid="3515143939175119094">"铃声"</string> <string name="ringtone_unknown" msgid="5477919988701784788">"未知铃声"</string> <plurals name="wifi_available"> - <item quantity="one" msgid="6654123987418168693">"有可用的 Wi-Fi 网络"</item> - <item quantity="other" msgid="4192424489168397386">"有可用的 Wi-Fi 网络"</item> + <item quantity="one" msgid="6654123987418168693">"有可用的 WLAN 网络"</item> + <item quantity="other" msgid="4192424489168397386">"有可用的 WLAN 网络"</item> </plurals> <plurals name="wifi_available_detailed"> - <item quantity="one" msgid="1634101450343277345">"打开可用的 Wi-Fi 网络"</item> - <item quantity="other" msgid="7915895323644292768">"打开可用的 Wi-Fi 网络"</item> + <item quantity="one" msgid="1634101450343277345">"打开可用的 WLAN 网络"</item> + <item quantity="other" msgid="7915895323644292768">"打开可用的 WLAN 网络"</item> </plurals> - <string name="wifi_available_sign_in" msgid="4029489716605255386">"登录到 Wi-Fi 网络"</string> + <string name="wifi_available_sign_in" msgid="4029489716605255386">"登录到 WLAN 网络"</string> <string name="network_available_sign_in" msgid="8495155593358054676">"登录网络"</string> <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) --> <skip /> - <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"无法连接到 Wi-Fi"</string> + <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"无法连接到 WLAN"</string> <string name="wifi_watchdog_network_disabled_detailed" msgid="5548780776418332675">" 互联网连接状况不佳。"</string> - <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi Direct"</string> - <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"启动 Wi-Fi Direct。此操作将会关闭 Wi-Fi 客户端/热点。"</string> - <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"无法启动 Wi-Fi Direct。"</string> - <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"已启用 Wi-Fi Direct"</string> + <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"WLAN Direct"</string> + <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"启动 WLAN Direct。此操作将会关闭 WLAN 客户端/热点。"</string> + <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"无法启动 WLAN Direct。"</string> + <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"已启用 WLAN Direct"</string> <string name="wifi_p2p_enabled_notification_message" msgid="1638949953993894335">"通过触摸进行设置"</string> <string name="accept" msgid="1645267259272829559">"接受"</string> <string name="decline" msgid="2112225451706137894">"拒绝"</string> @@ -1154,8 +1154,8 @@ <string name="wifi_p2p_to_message" msgid="248968974522044099">"收件人:"</string> <string name="wifi_p2p_enter_pin_message" msgid="5920929550367828970">"键入所需的 PIN:"</string> <string name="wifi_p2p_show_pin_message" msgid="8530563323880921094">"PIN:"</string> - <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"平板电脑连接到“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”时会暂时断开与 Wi-Fi 的连接"</string> - <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"手机连接到<xliff:g id="DEVICE_NAME">%1$s</xliff:g>时会暂时断开与 Wi-Fi 的连接。"</string> + <string name="wifi_p2p_frequency_conflict_message" product="tablet" msgid="8012981257742232475">"平板电脑连接到“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”时会暂时断开与 WLAN 的连接"</string> + <string name="wifi_p2p_frequency_conflict_message" product="default" msgid="7363907213787469151">"手机连接到<xliff:g id="DEVICE_NAME">%1$s</xliff:g>时会暂时断开与 WLAN 的连接。"</string> <string name="select_character" msgid="3365550120617701745">"插入字符"</string> <string name="sms_control_title" msgid="7296612781128917719">"正在发送短信"</string> <string name="sms_control_message" msgid="3867899169651496433">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>在发送大量短信。是否允许该应用继续发送短信?"</string> @@ -1393,12 +1393,12 @@ <string name="data_usage_3g_limit_title" msgid="7093334419518706686">"2G-3G 数据已停用"</string> <string name="data_usage_4g_limit_title" msgid="7636489436819470761">"4G 数据已停用"</string> <string name="data_usage_mobile_limit_title" msgid="7869402519391631884">"移动数据已停用"</string> - <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"Wi-Fi 数据网络已停用"</string> + <string name="data_usage_wifi_limit_title" msgid="8992154736441284865">"WLAN 数据网络已停用"</string> <string name="data_usage_limit_body" msgid="3317964706973601386">"触摸可启用。"</string> <string name="data_usage_3g_limit_snoozed_title" msgid="7026739121138005231">"已超出 2G-3G 数据流量限制"</string> <string name="data_usage_4g_limit_snoozed_title" msgid="1106562779311209039">"已超出 4G 数据使用上限"</string> <string name="data_usage_mobile_limit_snoozed_title" msgid="279240572165412168">"已超出移动数据流量上限"</string> - <string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"超出了 Wi-Fi 数据流量上限"</string> + <string name="data_usage_wifi_limit_snoozed_title" msgid="8743856006384825974">"超出了 WLAN 数据流量上限"</string> <string name="data_usage_limit_snoozed_body" msgid="7035490278298441767">"超出规定上限 <xliff:g id="SIZE">%s</xliff:g>。"</string> <string name="data_usage_restricted_title" msgid="5965157361036321914">"后台数据受限制"</string> <string name="data_usage_restricted_body" msgid="6741521330997452990">"触摸可去除限制。"</string> diff --git a/core/tests/ConnectivityManagerTest/AndroidManifest.xml b/core/tests/ConnectivityManagerTest/AndroidManifest.xml index a63a453..54881d5 100644 --- a/core/tests/ConnectivityManagerTest/AndroidManifest.xml +++ b/core/tests/ConnectivityManagerTest/AndroidManifest.xml @@ -32,11 +32,7 @@ </intent-filter> </activity> </application> - <!-- default test runner --> - <instrumentation android:name="android.test.InstrumentationTestRunner" - android:targetPackage="com.android.connectivitymanagertest" - android:label="default instrumentation test runner" - /> + <!-- This declares that this app uses the instrumentation test runner targeting the package of connectivitymanagertest. To run the tests use the command: @@ -68,6 +64,16 @@ android:label="Test runner for Connectivity Manager Stress Tests" /> + <!-- run associate test: + "adb shell am instrument -e ssid <ssid> -e password <password> + -e ecurity-type [OPEN|WEP64|WEP128|WPA_TKIP|WPA2_AES] -e frequency-band [2.4|5.0|auto] + -w com.android.connectivitymanagertest/.WifiAssociationTestRunner" + --> + <instrumentation android:name=".WifiAssociationTestRunner" + android:targetPackage="com.android.connectivitymanagertest" + android:label="Test runner for Wifi association test" + /> + <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/WifiAssociationTestRunner.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/WifiAssociationTestRunner.java new file mode 100644 index 0000000..722df2e --- /dev/null +++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/WifiAssociationTestRunner.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2013, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.connectivitymanagertest; + +import android.content.Context; +import android.net.wifi.WifiManager; +import android.os.Bundle; +import android.test.InstrumentationTestRunner; +import android.test.InstrumentationTestSuite; +import android.util.Log; + +import com.android.connectivitymanagertest.functional.WifiAssociationTest; + +import junit.framework.TestSuite; +import junit.framework.Assert; + +/** + * Instrumentation Test Runner for wifi association test. + * The instrument will set frequency band if it is necessary + * + * To run the association tests: + * + * adb shell am instrument -e ssid <ssid> -e password <password> \ + * -e security-type [OPEN|WEP64|WEP128|WPA_TKIP|WPA2_AES] -e frequency-band [2.4|5.0|auto] + * -w com.android.connectivitymanagertest/.WifiAssociationTestRunner" + */ +public class WifiAssociationTestRunner extends InstrumentationTestRunner { + private static final String TAG = "WifiAssociationTestRunner"; + public int mBand; + + @Override + public TestSuite getAllTests() { + TestSuite suite = new InstrumentationTestSuite(this); + suite.addTestSuite(WifiAssociationTest.class); + return suite; + } + + @Override + public ClassLoader getLoader() { + return WifiAssociationTestRunner.class.getClassLoader(); + } + + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + Bundle arguments = icicle; + String mFrequencyBand = arguments.getString("frequency-band"); + if (mFrequencyBand != null) { + setFrequencyBand(mFrequencyBand); + } + } + + private void setFrequencyBand(String band) { + WifiManager mWifiManager = (WifiManager)getContext().getSystemService(Context.WIFI_SERVICE); + if (band.equals("2.4")) { + Log.v(TAG, "set frequency band to 2.4"); + mBand = WifiManager.WIFI_FREQUENCY_BAND_2GHZ; + } else if (band.equals("5.0")) { + Log.v(TAG, "set frequency band to 5.0"); + mBand = WifiManager.WIFI_FREQUENCY_BAND_5GHZ; + } else if (band.equals("auto")) { + Log.v(TAG, "set frequency band to auto"); + mBand = WifiManager.WIFI_FREQUENCY_BAND_AUTO; + } else { + Assert.fail("invalid frequency band"); + } + int currentFreq = mWifiManager.getFrequencyBand(); + if (mBand == currentFreq) { + Log.v(TAG, "frequency band has been set"); + return; + } + mWifiManager.setFrequencyBand(mBand, true); + } +} diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/WifiAssociationTest.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/WifiAssociationTest.java index 87a98bf..f12e62e 100644 --- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/WifiAssociationTest.java +++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/WifiAssociationTest.java @@ -17,6 +17,7 @@ package com.android.connectivitymanagertest.functional; import com.android.connectivitymanagertest.ConnectivityManagerTestActivity; +import com.android.connectivitymanagertest.WifiAssociationTestRunner; import android.content.Context; import android.os.Bundle; @@ -27,22 +28,19 @@ import android.net.wifi.WifiConfiguration.AuthAlgorithm; import android.net.wifi.WifiConfiguration.GroupCipher; import android.net.wifi.WifiConfiguration.PairwiseCipher; import android.net.wifi.WifiConfiguration.Protocol; -import android.net.wifi.WifiConfiguration.Status; import android.net.wifi.WifiManager; import android.net.ConnectivityManager; -import android.net.NetworkInfo; import android.net.NetworkInfo.State; import android.test.suitebuilder.annotation.LargeTest; import android.test.ActivityInstrumentationTestCase2; -import android.test.InstrumentationTestRunner; import android.util.Log; /** * Test Wi-Fi connection with different configuration * To run this tests: - * adb shell am instrument -e ssid <ssid> -e password <password> - * -e security-type <security-type> - * -w com.android.connectivitymanagertest/android.test.InstrumentationTestRunner + * * adb shell am instrument -e ssid <ssid> -e password <password> \ + * -e security-type [OPEN|WEP64|WEP128|WPA_TKIP|WPA2_AES] -e frequency-band [2.4|5.0|auto] + * -w com.android.connectivitymanagertest/.WifiAssociationTestRunner" */ public class WifiAssociationTest extends ActivityInstrumentationTestCase2<ConnectivityManagerTestActivity> { @@ -51,6 +49,8 @@ public class WifiAssociationTest private String mSsid = null; private String mPassword = null; private String mSecurityType = null; + private String mFrequencyBand = null; + private int mBand; private WifiManager mWifiManager = null; enum SECURITY_TYPE { @@ -64,15 +64,18 @@ public class WifiAssociationTest @Override public void setUp() throws Exception { super.setUp(); - InstrumentationTestRunner mRunner = (InstrumentationTestRunner)getInstrumentation(); + WifiAssociationTestRunner mRunner = (WifiAssociationTestRunner)getInstrumentation(); mWifiManager = (WifiManager) mRunner.getContext().getSystemService(Context.WIFI_SERVICE); mAct = getActivity(); Bundle arguments = mRunner.getArguments(); mSecurityType = arguments.getString("security-type"); mSsid = arguments.getString("ssid"); mPassword = arguments.getString("password"); + mFrequencyBand = arguments.getString("frequency-band"); + mBand = mRunner.mBand; assertNotNull("Security type is empty", mSecurityType); assertNotNull("Ssid is empty", mSsid); + validateFrequencyBand(); // enable Wifi and verify wpa_supplicant is started assertTrue("enable Wifi failed", mAct.enableWifi()); sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT, @@ -88,6 +91,14 @@ public class WifiAssociationTest super.tearDown(); } + private void validateFrequencyBand() { + if (mFrequencyBand != null) { + int currentFreq = mWifiManager.getFrequencyBand(); + Log.v(TAG, "read frequency band: " + currentFreq); + assertTrue("device frequency band is not set successfully", (mBand == currentFreq)); + } + } + /** * Connect to the provided Wi-Fi network * @param config is the network configuration diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd index 6956634..43eead9 100644 --- a/docs/html/about/dashboards/index.jd +++ b/docs/html/about/dashboards/index.jd @@ -57,7 +57,7 @@ Platform Versions</a>.</p> </div> -<p style="clear:both"><em>Data collected during a 14-day period ending on May 1, 2013. +<p style="clear:both"><em>Data collected during a 14-day period ending on June 3, 2013. <br/>Any versions with less than 0.1% distribution are not shown.</em> </p> @@ -83,7 +83,7 @@ Screens</a>.</p> </div> -<p style="clear:both"><em>Data collected during a 14-day period ending on May 1, 2013 +<p style="clear:both"><em>Data collected during a 14-day period ending on June 3, 2013 <br/>Any screen configurations with less than 0.1% distribution are not shown.</em></p> @@ -130,7 +130,7 @@ uses.</p> -<p style="clear:both"><em>Data collected during a 14-day period ending on May 1, 2013</em></p> +<p style="clear:both"><em>Data collected during a 14-day period ending on June 3, 2013</em></p> @@ -148,7 +148,7 @@ uses.</p> var VERSION_DATA = [ { - "chart": "//chart.googleapis.com/chart?chs=500x250&cht=p&chf=bg%2Cs%2C00000000&chd=t%3A1.8%2C3.7%2C38.5%2C0.1%2C27.5%2C28.4&chco=c4df9b%2C6fad0c&chl=Eclair%7CFroyo%7CGingerbread%7CHoneycomb%7CIce%20Cream%20Sandwich%7CJelly%20Bean", + "chart": "//chart.googleapis.com/chart?chl=Eclair%7CFroyo%7CGingerbread%7CHoneycomb%7CIce%20Cream%20Sandwich%7CJelly%20Bean&chd=t%3A1.6%2C3.2%2C36.5%2C0.1%2C25.6%2C33.0&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=500x250", "data": [ { "api": 4, @@ -158,12 +158,12 @@ var VERSION_DATA = { "api": 7, "name": "Eclair", - "perc": "1.7" + "perc": "1.5" }, { "api": 8, "name": "Froyo", - "perc": "3.7" + "perc": "3.2" }, { "api": 9, @@ -173,7 +173,7 @@ var VERSION_DATA = { "api": 10, "name": "Gingerbread", - "perc": "38.4" + "perc": "36.4" }, { "api": 13, @@ -183,17 +183,17 @@ var VERSION_DATA = { "api": 15, "name": "Ice Cream Sandwich", - "perc": "27.5" + "perc": "25.6" }, { "api": 16, "name": "Jelly Bean", - "perc": "26.1" + "perc": "29.0" }, { "api": 17, "name": "Jelly Bean", - "perc": "2.3" + "perc": "4.0" } ] } @@ -205,35 +205,34 @@ var VERSION_DATA = var SCREEN_DATA = [ - { "data": { "Large": { "hdpi": "0.4", "ldpi": "0.6", - "mdpi": "2.9", + "mdpi": "3.0", "tvdpi": "1.0", - "xhdpi": "0.7" + "xhdpi": "0.6" }, "Normal": { - "hdpi": "37.3", + "hdpi": "36.0", "ldpi": "0.1", - "mdpi": "16.1", - "xhdpi": "24.9", - "xxhdpi": "1.3" + "mdpi": "16.0", + "xhdpi": "24.5", + "xxhdpi": "3.3" }, "Small": { - "ldpi": "9.8" + "hdpi": "0.1", + "ldpi": "9.9" }, "Xlarge": { - "hdpi": "0.1", - "ldpi": "0.2", - "mdpi": "4.5", + "hdpi": "0.2", + "mdpi": "4.2", "xhdpi": "0.1" } }, - "densitychart": "//chart.googleapis.com/chart?chs=400x250&cht=p&chf=bg%2Cs%2C00000000&chd=t%3A10.7%2C23.5%2C1.0%2C37.8%2C25.7%2C1.3&chco=c4df9b%2C6fad0c&chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi", - "layoutchart": "//chart.googleapis.com/chart?chs=400x250&cht=p&chf=bg%2Cs%2C00000000&chd=t%3A4.9%2C5.6%2C79.7%2C9.8&chco=c4df9b%2C6fad0c&chl=Xlarge%7CLarge%7CNormal%7CSmall" + "densitychart": "//chart.googleapis.com/chart?chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chd=t%3A10.6%2C23.2%2C1.0%2C36.7%2C25.2%2C3.3&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250", + "layoutchart": "//chart.googleapis.com/chart?chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.5%2C5.6%2C79.9%2C10.0&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250" } ]; diff --git a/docs/html/distribute/googleplay/spotlight/index.jd b/docs/html/distribute/googleplay/spotlight/index.jd index a248dea..b83080e 100644 --- a/docs/html/distribute/googleplay/spotlight/index.jd +++ b/docs/html/distribute/googleplay/spotlight/index.jd @@ -13,7 +13,36 @@ header.hide=0 overflow: auto; clear:both; margin-bottom:40px; - margin-top:30px;""> + margin-top:30px;"> + <div style="padding:0 0 0 29px;"> + <h4>Developer Story: redBus.in</h4> + <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px height:78px; + width: 78px; + float: left; + margin: 17px 20px 9px 0;" src= + "//lh4.ggpht.com/kvI2XfzBPGBDASvxvP18MCCj7YPEmLcG4nh1BlYW4XzaW12gg3iXtcM2ZqDnAfLLB9ed=w124"> + <div style="width:700px;"> + <p style="margin-top:26px; + margin-bottom:12px;"> + Bangalore-based developers <a href="//play-next-dogfood.corp.google.com/store/apps/details?id=in.redbus.android">redBus.in</a> are bringing the sophistication and convenience of air-travel booking to bus transit. Hear how Android is helping them deliver a superior travel experience to millions of daily bus riders in India.</p> + </div> + <iframe style="float:left; + margin-right:24px; + margin-top:14px;" width="700" height="394" src= + "http://www.youtube.com/embed/O8i4HUw7JYA?HD=1;rel=0;origin=developer.android.com;" frameborder="0" allowfullscreen> + </iframe> + </div> +</div> + +<div style="background: #F0F0F0; + border-top: 1px solid #DDD; + padding: 0px 0 24px 0; + overflow: auto; + clear:both; + margin-bottom:40px; + margin-top:30px;"> <div style="padding:0 0 0 29px;"> <h4>Developer Story: Smule</h4> <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px; @@ -42,7 +71,7 @@ header.hide=0 overflow: auto; clear:both; margin-bottom:-10px; - margin-top:30px;""> + margin-top:30px;"> <div style="padding:0 0 0 29px;"> <h4>Developer Story: Robot Invader</h4> <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px; diff --git a/docs/html/index.jd b/docs/html/index.jd index 3435283..af271ee 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -42,7 +42,7 @@ page.metaDescription=The official site for Android developers. Provides the Andr <script type="text/javascript"> var params = { allowScriptAccess: "always" }; var atts = { id: "ytapiplayer" }; - swfobject.embedSWF("//www.youtube.com/v/RRelFvc6Czo?enablejsapi=1&playerapiid=ytplayer&version=3&HD=1;rel=0;showinfo=0;modestbranding;origin=developer.android.com;autohide=1", + swfobject.embedSWF("//www.youtube.com/v/O8i4HUw7JYA?enablejsapi=1&playerapiid=ytplayer&version=3&HD=1;rel=0;showinfo=0;modestbranding;origin=developer.android.com;autohide=1", "ytapiplayer", "600", "338", "8", null, null, params, atts); // Callback used to pause/resume carousel based on video state @@ -71,9 +71,8 @@ page.metaDescription=The official site for Android developers. Provides the Andr </div> </div> <div class="content-right col-4"> - <h1 style="white-space:nowrap;line-height:1em;">Developer Story: Smule</h1> - <p>The creators of AutoRap, Magic Piano, and Songify talk about launching on - Android and the explosive global growth they’ve seen on Google Play.</p> + <h1 style="white-space:nowrap;line-height:1.2em;">Developer Story: <br />redBus.in</h1> + <p>Bangalore-based developers redBus.in talk about how Android is helping them deliver a superior booking and travel experience to millions of daily bus riders in India.</p> </div> </li> <li class="item carousel-home"> diff --git a/media/java/android/media/audiofx/AudioEffect.java b/media/java/android/media/audiofx/AudioEffect.java index 031326e..52c0c2d 100644 --- a/media/java/android/media/audiofx/AudioEffect.java +++ b/media/java/android/media/audiofx/AudioEffect.java @@ -193,10 +193,14 @@ public class AudioEffect { * The effect descriptor contains information on a particular effect implemented in the * audio framework:<br> * <ul> - * <li>type: UUID identifying the effect type</li> + * <li>type: UUID identifying the effect type. May be one of: + * {@link AudioEffect#EFFECT_TYPE_AEC}, {@link AudioEffect#EFFECT_TYPE_AGC}, + * {@link AudioEffect#EFFECT_TYPE_BASS_BOOST}, {@link AudioEffect#EFFECT_TYPE_ENV_REVERB}, + * {@link AudioEffect#EFFECT_TYPE_EQUALIZER}, {@link AudioEffect#EFFECT_TYPE_NS}, + * {@link AudioEffect#EFFECT_TYPE_PRESET_REVERB}, {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER}. + * </li> * <li>uuid: UUID for this particular implementation</li> - * <li>connectMode: {@link #EFFECT_INSERT}, {@link #EFFECT_AUXILIARY} or - * {at_link #EFFECT_PRE_PROCESSING}</li> + * <li>connectMode: {@link #EFFECT_INSERT} or {@link #EFFECT_AUXILIARY}</li> * <li>name: human readable effect name</li> * <li>implementor: human readable effect implementor name</li> * </ul> @@ -208,6 +212,19 @@ public class AudioEffect { public Descriptor() { } + /** + * @param type UUID identifying the effect type. May be one of: + * {@link AudioEffect#EFFECT_TYPE_AEC}, {@link AudioEffect#EFFECT_TYPE_AGC}, + * {@link AudioEffect#EFFECT_TYPE_BASS_BOOST}, {@link AudioEffect#EFFECT_TYPE_ENV_REVERB}, + * {@link AudioEffect#EFFECT_TYPE_EQUALIZER}, {@link AudioEffect#EFFECT_TYPE_NS}, + * {@link AudioEffect#EFFECT_TYPE_PRESET_REVERB}, + * {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER}. + * @param uuid UUID for this particular implementation + * @param connectMode {@link #EFFECT_INSERT} or {@link #EFFECT_AUXILIARY} + * @param name human readable effect name + * @param implementor human readable effect implementor name + * + */ public Descriptor(String type, String uuid, String connectMode, String name, String implementor) { this.type = UUID.fromString(type); @@ -234,13 +251,14 @@ public class AudioEffect { */ public UUID uuid; /** - * Indicates if the effect is of insert category {@link #EFFECT_INSERT}, auxiliary - * category {@link #EFFECT_AUXILIARY} or pre processing category - * {at_link #EFFECT_PRE_PROCESSING}. Insert effects (Typically an Equalizer) are applied + * Indicates if the effect is of insert category {@link #EFFECT_INSERT} or auxiliary + * category {@link #EFFECT_AUXILIARY}. + * Insert effects (typically an {@link Equalizer}) are applied * to the entire audio source and usually not shared by several sources. Auxiliary effects * (typically a reverberator) are applied to part of the signal (wet) and the effect output * is added to the original signal (dry). - * Audio pre processing are applied to audio captured on a particular AudioRecord. + * Audio pre processing are applied to audio captured on a particular + * {@link android.media.AudioRecord}. */ public String connectMode; /** |