diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2009-08-31 09:17:57 -0700 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2009-08-31 09:17:57 -0700 |
commit | 72b1f379d5c97c8ff31d2201e78215af777d6bda (patch) | |
tree | 8be18715a615095bea90d189af9774710b33edef | |
parent | ac1e59d887651220f5367cc7fa4207b34eab774d (diff) | |
download | frameworks_base-72b1f379d5c97c8ff31d2201e78215af777d6bda.zip frameworks_base-72b1f379d5c97c8ff31d2201e78215af777d6bda.tar.gz frameworks_base-72b1f379d5c97c8ff31d2201e78215af777d6bda.tar.bz2 |
donut snapshot
114 files changed, 23169 insertions, 4699 deletions
@@ -332,7 +332,7 @@ framework_docs_LOCAL_DROIDDOC_OPTIONS := \ -since ./frameworks/base/api/1.xml 1 \ -since ./frameworks/base/api/2.xml 2 \ -since ./frameworks/base/api/3.xml 3 \ - -since ./frameworks/base/api/current.xml Donut \ + -since ./frameworks/base/api/4.xml 4 \ -error 1 -error 2 -warning 3 -error 4 -error 6 -error 8 \ -overview $(LOCAL_PATH)/core/java/overview.html @@ -344,10 +344,18 @@ web_docs_sample_code_flags := \ -hdf android.hasSamples 1 \ -samplecode $(sample_dir)/ApiDemos \ guide/samples/ApiDemos "API Demos" \ + -samplecode $(sample_dir)/Home \ + guide/samples/Home "Home" \ + -samplecode $(sample_dir)/JetBoy \ + guide/samples/JetBoy "JetBoy" \ -samplecode $(sample_dir)/LunarLander \ guide/samples/LunarLander "Lunar Lander" \ -samplecode $(sample_dir)/NotePad \ - guide/samples/NotePad "Note Pad" + guide/samples/NotePad "Note Pad" \ + -samplecode $(sample_dir)/Snake \ + guide/samples/Snake "Snake" \ + -samplecode $(sample_dir)/SoftKeyboard \ + guide/samples/SoftKeyboard "Soft Keyboard" ## SDK version identifiers used in the published docs # major[.minor] version for current SDK. (full releases only) @@ -298,6 +298,17 @@ visibility="public" > </field> +<field name="CHANGE_WIFI_MULTICAST_STATE" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.permission.CHANGE_WIFI_MULTICAST_STATE"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="CHANGE_WIFI_STATE" type="java.lang.String" transient="false" @@ -485,6 +496,17 @@ visibility="public" > </field> +<field name="GLOBAL_SEARCH" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.permission.GLOBAL_SEARCH"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="HARDWARE_TEST" type="java.lang.String" transient="false" @@ -507,6 +529,17 @@ visibility="public" > </field> +<field name="INSTALL_LOCATION_PROVIDER" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.permission.INSTALL_LOCATION_PROVIDER"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="INSTALL_PACKAGES" type="java.lang.String" transient="false" @@ -661,6 +694,17 @@ visibility="public" > </field> +<field name="READ_HISTORY_BOOKMARKS" + type="java.lang.String" + transient="false" + volatile="false" + value=""com.android.browser.permission.READ_HISTORY_BOOKMARKS"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="READ_INPUT_STATE" type="java.lang.String" transient="false" @@ -1068,6 +1112,17 @@ visibility="public" > </field> +<field name="WRITE_EXTERNAL_STORAGE" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.permission.WRITE_EXTERNAL_STORAGE"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="WRITE_GSERVICES" type="java.lang.String" transient="false" @@ -1079,6 +1134,17 @@ visibility="public" > </field> +<field name="WRITE_HISTORY_BOOKMARKS" + type="java.lang.String" + transient="false" + volatile="false" + value=""com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="WRITE_OWNER_DATA" type="java.lang.String" transient="false" @@ -1250,6 +1316,17 @@ visibility="public" > </field> +<field name="STORAGE" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.permission-group.STORAGE"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="SYSTEM_TOOLS" type="java.lang.String" transient="false" @@ -1317,6 +1394,39 @@ visibility="public" > </field> +<field name="anticipate_interpolator" + type="int" + transient="false" + volatile="false" + value="17432583" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="anticipate_overshoot_interpolator" + type="int" + transient="false" + volatile="false" + value="17432585" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="bounce_interpolator" + type="int" + transient="false" + volatile="false" + value="17432586" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="decelerate_interpolator" type="int" transient="false" @@ -1350,6 +1460,28 @@ visibility="public" > </field> +<field name="linear_interpolator" + type="int" + transient="false" + volatile="false" + value="17432587" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="overshoot_interpolator" + type="int" + transient="false" + volatile="false" + value="17432584" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="slide_in_left" type="int" transient="false" @@ -1560,6 +1692,17 @@ visibility="public" > </field> +<field name="allowBackup" + type="int" + transient="false" + volatile="false" + value="16843392" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="allowClearUserData" type="int" transient="false" @@ -1703,6 +1846,17 @@ visibility="public" > </field> +<field name="anyDensity" + type="int" + transient="false" + volatile="false" + value="16843372" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="apiKey" type="int" transient="false" @@ -1758,6 +1912,17 @@ visibility="public" > </field> +<field name="autoUrlDetect" + type="int" + transient="false" + volatile="false" + value="16843404" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="background" type="int" transient="false" @@ -1791,6 +1956,17 @@ visibility="public" > </field> +<field name="backupAgent" + type="int" + transient="false" + volatile="false" + value="16843391" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="baselineAlignBottom" type="int" transient="false" @@ -2418,6 +2594,17 @@ visibility="public" > </field> +<field name="contentDescription" + type="int" + transient="false" + volatile="false" + value="16843379" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="cropToPadding" type="int" transient="false" @@ -2803,6 +2990,17 @@ visibility="public" > </field> +<field name="dropDownHeight" + type="int" + transient="false" + volatile="false" + value="16843395" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="dropDownHintAppearance" type="int" transient="false" @@ -3001,6 +3199,17 @@ visibility="public" > </field> +<field name="eventsInterceptionEnabled" + type="int" + transient="false" + volatile="false" + value="16843389" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="excludeFromRecents" type="int" transient="false" @@ -3100,6 +3309,17 @@ visibility="public" > </field> +<field name="extraTension" + type="int" + transient="false" + volatile="false" + value="16843371" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="factor" type="int" transient="false" @@ -3111,6 +3331,39 @@ visibility="public" > </field> +<field name="fadeDuration" + type="int" + transient="false" + volatile="false" + value="16843384" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="fadeEnabled" + type="int" + transient="false" + volatile="false" + value="16843390" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="fadeOffset" + type="int" + transient="false" + volatile="false" + value="16843383" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="fadingEdge" type="int" transient="false" @@ -3430,6 +3683,83 @@ visibility="public" > </field> +<field name="gestureColor" + type="int" + transient="false" + volatile="false" + value="16843381" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="gestureStrokeAngleThreshold" + type="int" + transient="false" + volatile="false" + value="16843388" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="gestureStrokeLengthThreshold" + type="int" + transient="false" + volatile="false" + value="16843386" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="gestureStrokeSquarenessThreshold" + type="int" + transient="false" + volatile="false" + value="16843387" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="gestureStrokeType" + type="int" + transient="false" + volatile="false" + value="16843385" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="gestureStrokeWidth" + type="int" + transient="false" + volatile="false" + value="16843380" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="glEsVersion" + type="int" + transient="false" + volatile="false" + value="16843393" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="gradientRadius" type="int" transient="false" @@ -4299,6 +4629,17 @@ visibility="public" > </field> +<field name="largeScreens" + type="int" + transient="false" + volatile="false" + value="16843398" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="launchMode" type="int" transient="false" @@ -4948,6 +5289,17 @@ visibility="public" > </field> +<field name="maxSdkVersion" + type="int" + transient="false" + volatile="false" + value="16843377" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="maxWidth" type="int" transient="false" @@ -5168,6 +5520,17 @@ visibility="public" > </field> +<field name="normalScreens" + type="int" + transient="false" + volatile="false" + value="16843397" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="numColumns" type="int" transient="false" @@ -5212,6 +5575,17 @@ visibility="public" > </field> +<field name="onClick" + type="int" + transient="false" + volatile="false" + value="16843375" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="oneshot" type="int" transient="false" @@ -5707,6 +6081,17 @@ visibility="public" > </field> +<field name="progressBarStyleInverse" + type="int" + transient="false" + volatile="false" + value="16843399" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="progressBarStyleLarge" type="int" transient="false" @@ -5718,6 +6103,17 @@ visibility="public" > </field> +<field name="progressBarStyleLargeInverse" + type="int" + transient="false" + volatile="false" + value="16843401" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="progressBarStyleSmall" type="int" transient="false" @@ -5729,6 +6125,17 @@ visibility="public" > </field> +<field name="progressBarStyleSmallInverse" + type="int" + transient="false" + volatile="false" + value="16843400" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="progressBarStyleSmallTitle" type="int" transient="false" @@ -5938,6 +6345,17 @@ visibility="public" > </field> +<field name="resizeable" + type="int" + transient="false" + volatile="false" + value="16843405" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="resource" type="int" transient="false" @@ -6521,6 +6939,17 @@ visibility="public" > </field> +<field name="smallScreens" + type="int" + transient="false" + volatile="false" + value="16843396" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="smoothScrollbar" type="int" transient="false" @@ -7005,6 +7434,17 @@ visibility="public" > </field> +<field name="targetSdkVersion" + type="int" + transient="false" + volatile="false" + value="16843376" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="taskAffinity" type="int" transient="false" @@ -7104,6 +7544,28 @@ visibility="public" > </field> +<field name="tension" + type="int" + transient="false" + volatile="false" + value="16843370" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="testOnly" + type="int" + transient="false" + volatile="false" + value="16843378" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="text" type="int" transient="false" @@ -7324,6 +7786,17 @@ visibility="public" > </field> +<field name="textColorPrimaryInverseDisableOnly" + type="int" + transient="false" + volatile="false" + value="16843403" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="textColorPrimaryInverseNoDisable" type="int" transient="false" @@ -7753,6 +8226,17 @@ visibility="public" > </field> +<field name="uncertainGestureColor" + type="int" + transient="false" + volatile="false" + value="16843382" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="unselectedAlpha" type="int" transient="false" @@ -10153,6 +10637,28 @@ visibility="public" > </field> +<field name="stat_sys_vp_phone_call" + type="int" + transient="false" + volatile="false" + value="17301671" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="stat_sys_vp_phone_call_on_hold" + type="int" + transient="false" + volatile="false" + value="17301672" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="stat_sys_warning" type="int" transient="false" @@ -12263,6 +12769,17 @@ visibility="public" > </field> +<field name="Widget_ProgressBar_Inverse" + type="int" + transient="false" + volatile="false" + value="16973915" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="Widget_ProgressBar_Large" type="int" transient="false" @@ -12274,6 +12791,17 @@ visibility="public" > </field> +<field name="Widget_ProgressBar_Large_Inverse" + type="int" + transient="false" + volatile="false" + value="16973916" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="Widget_ProgressBar_Small" type="int" transient="false" @@ -12285,6 +12813,17 @@ visibility="public" > </field> +<field name="Widget_ProgressBar_Small_Inverse" + type="int" + transient="false" + volatile="false" + value="16973917" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="Widget_RatingBar" type="int" transient="false" @@ -12403,6 +12942,270 @@ </constructor> </class> </package> +<package name="android.accessibilityservice" +> +<class name="AccessibilityService" + extends="android.app.Service" + abstract="true" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="AccessibilityService" + type="android.accessibilityservice.AccessibilityService" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<method name="onAccessibilityEvent" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="event" type="android.view.accessibility.AccessibilityEvent"> +</parameter> +</method> +<method name="onBind" + return="android.os.IBinder" + abstract="false" + native="false" + synchronized="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +<parameter name="intent" type="android.content.Intent"> +</parameter> +</method> +<method name="onInterrupt" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="onServiceConnected" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="protected" +> +</method> +<method name="setServiceInfo" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +<parameter name="info" type="android.accessibilityservice.AccessibilityServiceInfo"> +</parameter> +</method> +<field name="SERVICE_INTERFACE" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.accessibilityservice.AccessibilityService"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="AccessibilityServiceInfo" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<implements name="android.os.Parcelable"> +</implements> +<constructor name="AccessibilityServiceInfo" + type="android.accessibilityservice.AccessibilityServiceInfo" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<method name="describeContents" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="writeToParcel" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="parcel" type="android.os.Parcel"> +</parameter> +<parameter name="flags" type="int"> +</parameter> +</method> +<field name="CREATOR" + type="android.os.Parcelable.Creator" + transient="false" + volatile="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="DEFAULT" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FEEDBACK_AUDIBLE" + type="int" + transient="false" + volatile="false" + value="4" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FEEDBACK_GENERIC" + type="int" + transient="false" + volatile="false" + value="16" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FEEDBACK_HAPTIC" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FEEDBACK_SPOKEN" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FEEDBACK_VISUAL" + type="int" + transient="false" + volatile="false" + value="8" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="eventTypes" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="feedbackType" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="flags" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="notificationTimeout" + type="long" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="packageNames" + type="java.lang.String[]" + transient="false" + volatile="false" + value="null" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +</package> <package name="android.app" > <class name="Activity" @@ -12511,6 +13314,19 @@ <parameter name="event" type="android.view.KeyEvent"> </parameter> </method> +<method name="dispatchPopulateAccessibilityEvent" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="event" type="android.view.accessibility.AccessibilityEvent"> +</parameter> +</method> <method name="dispatchTouchEvent" return="boolean" abstract="false" @@ -16506,6 +17322,19 @@ <parameter name="event" type="android.view.KeyEvent"> </parameter> </method> +<method name="dispatchPopulateAccessibilityEvent" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="event" type="android.view.accessibility.AccessibilityEvent"> +</parameter> +</method> <method name="dispatchTouchEvent" return="boolean" abstract="false" @@ -18663,6 +19492,19 @@ <parameter name="position" type="int"> </parameter> </method> +<method name="itemForPosition" + return="android.app.LauncherActivity.ListItem" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="protected" +> +<parameter name="position" type="int"> +</parameter> +</method> <method name="makeListItems" return="java.util.List<android.app.LauncherActivity.ListItem>" abstract="false" @@ -18771,6 +19613,16 @@ visibility="public" > </field> +<field name="resolveInfo" + type="android.content.pm.ResolveInfo" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> </class> <class name="ListActivity" extends="android.app.Activity" @@ -19545,6 +20397,17 @@ <parameter name="flags" type="int"> </parameter> </method> +<method name="getIntentSender" + return="android.content.IntentSender" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getService" return="android.app.PendingIntent" abstract="false" @@ -20152,7 +21015,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="dialog" type="android.content.DialogInterface"> @@ -20165,7 +21028,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="dialog" type="android.content.DialogInterface"> @@ -20262,6 +21125,39 @@ visibility="public" > </field> +<field name="EXTRA_DATA_KEY" + type="java.lang.String" + transient="false" + volatile="false" + value=""intent_extra_data_key"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="INTENT_ACTION_SEARCHABLES_CHANGED" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.search.action.SEARCHABLES_CHANGED"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="INTENT_ACTION_SEARCH_SETTINGS_CHANGED" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.search.action.SETTINGS_CHANGED"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="MENU_KEY" type="char" transient="false" @@ -20361,6 +21257,17 @@ visibility="public" > </field> +<field name="SUGGEST_COLUMN_INTENT_EXTRA_DATA" + type="java.lang.String" + transient="false" + volatile="false" + value=""suggest_intent_extra_data"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="SUGGEST_COLUMN_QUERY" type="java.lang.String" transient="false" @@ -20416,6 +21323,17 @@ visibility="public" > </field> +<field name="USER_QUERY" + type="java.lang.String" + transient="false" + volatile="false" + value=""user_query"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> </class> <interface name="SearchManager.OnCancelListener" abstract="true" @@ -22192,6 +23110,8 @@ deprecated="not deprecated" visibility="public" > +<implements name="java.lang.Comparable"> +</implements> <implements name="android.os.Parcelable"> </implements> <constructor name="ComponentName" @@ -22240,6 +23160,19 @@ <parameter name="in" type="android.os.Parcel"> </parameter> </constructor> +<method name="compareTo" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="that" type="android.content.ComponentName"> +</parameter> +</method> <method name="describeContents" return="int" abstract="false" @@ -22460,6 +23393,17 @@ visibility="public" > </method> +<method name="getPathPermissions" + return="android.content.pm.PathPermission[]" + abstract="false" + native="false" + synchronized="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getReadPermission" return="java.lang.String" abstract="false" @@ -22628,6 +23572,19 @@ <parameter name="sortOrder" type="java.lang.String"> </parameter> </method> +<method name="setPathPermissions" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="protected" +> +<parameter name="permissions" type="android.content.pm.PathPermission[]"> +</parameter> +</method> <method name="setReadPermission" return="void" abstract="false" @@ -24044,6 +25001,17 @@ visibility="public" > </method> +<method name="getApplicationInfo" + return="android.content.pm.ApplicationInfo" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getAssets" return="android.content.res.AssetManager" abstract="true" @@ -24314,6 +25282,17 @@ <parameter name="modeFlags" type="int"> </parameter> </method> +<method name="isRestricted" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="obtainStyledAttributes" return="android.content.res.TypedArray" abstract="false" @@ -24706,6 +25685,17 @@ <parameter name="receiver" type="android.content.BroadcastReceiver"> </parameter> </method> +<field name="ACCESSIBILITY_SERVICE" + type="java.lang.String" + transient="false" + volatile="false" + value=""accessibility"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="ACTIVITY_SERVICE" type="java.lang.String" transient="false" @@ -24805,6 +25795,17 @@ visibility="public" > </field> +<field name="CONTEXT_RESTRICTED" + type="int" + transient="false" + volatile="false" + value="4" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="INPUT_METHOD_SERVICE" type="java.lang.String" transient="false" @@ -25374,6 +26375,17 @@ visibility="public" > </method> +<method name="getApplicationInfo" + return="android.content.pm.ApplicationInfo" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getAssets" return="android.content.res.AssetManager" abstract="false" @@ -26658,7 +27670,7 @@ synchronized="false" static="true" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="uri" type="java.lang.String"> @@ -26709,6 +27721,17 @@ <parameter name="defaultValue" type="long"> </parameter> </method> +<method name="getPackage" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getParcelableArrayExtra" return="android.os.Parcelable[]" abstract="false" @@ -26908,6 +27931,23 @@ <exception name="XmlPullParserException" type="org.xmlpull.v1.XmlPullParserException"> </exception> </method> +<method name="parseUri" + return="android.content.Intent" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="uri" type="java.lang.String"> +</parameter> +<parameter name="flags" type="int"> +</parameter> +<exception name="URISyntaxException" type="java.net.URISyntaxException"> +</exception> +</method> <method name="putExtra" return="android.content.Intent" abstract="false" @@ -27581,6 +28621,19 @@ <parameter name="flags" type="int"> </parameter> </method> +<method name="setPackage" + return="android.content.Intent" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="packageName" type="java.lang.String"> +</parameter> +</method> <method name="setType" return="android.content.Intent" abstract="false" @@ -27601,9 +28654,22 @@ synchronized="false" static="false" final="false" + deprecated="deprecated" + visibility="public" +> +</method> +<method name="toUri" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" deprecated="not deprecated" visibility="public" > +<parameter name="flags" type="int"> +</parameter> </method> <method name="writeToParcel" return="void" @@ -27686,6 +28752,17 @@ visibility="public" > </field> +<field name="ACTION_BATTERY_OKAY" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.intent.action.BATTERY_OKAY"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="ACTION_BOOT_COMPLETED" type="java.lang.String" transient="false" @@ -28225,6 +29302,39 @@ visibility="public" > </field> +<field name="ACTION_POWER_CONNECTED" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.intent.action.ACTION_POWER_CONNECTED"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ACTION_POWER_DISCONNECTED" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.intent.action.ACTION_POWER_DISCONNECTED"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ACTION_POWER_USAGE_SUMMARY" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.intent.action.POWER_USAGE_SUMMARY"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="ACTION_PROVIDER_CHANGED" type="java.lang.String" transient="false" @@ -28324,6 +29434,17 @@ visibility="public" > </field> +<field name="ACTION_SEND_MULTIPLE" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.intent.action.SEND_MULTIPLE"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="ACTION_SET_WALLPAPER" type="java.lang.String" transient="false" @@ -28335,6 +29456,17 @@ visibility="public" > </field> +<field name="ACTION_SHUTDOWN" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.intent.action.ACTION_SHUTDOWN"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="ACTION_SYNC" type="java.lang.String" transient="false" @@ -28939,6 +30071,17 @@ visibility="public" > </field> +<field name="FILL_IN_PACKAGE" + type="int" + transient="false" + volatile="false" + value="16" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="FLAG_ACTIVITY_BROUGHT_TO_FRONT" type="int" transient="false" @@ -29148,6 +30291,17 @@ visibility="public" > </field> +<field name="URI_INTENT_SCHEME" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> </class> <class name="Intent.FilterComparison" extends="java.lang.Object" @@ -30162,6 +31316,170 @@ </parameter> </constructor> </class> +<class name="IntentSender" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<implements name="android.os.Parcelable"> +</implements> +<method name="describeContents" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="readIntentSenderOrNullFromParcel" + return="android.content.IntentSender" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="in" type="android.os.Parcel"> +</parameter> +</method> +<method name="sendIntent" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +<parameter name="code" type="int"> +</parameter> +<parameter name="intent" type="android.content.Intent"> +</parameter> +<parameter name="onFinished" type="android.content.IntentSender.OnFinished"> +</parameter> +<parameter name="handler" type="android.os.Handler"> +</parameter> +<exception name="IntentSender.SendIntentException" type="android.content.IntentSender.SendIntentException"> +</exception> +</method> +<method name="writeIntentSenderOrNullToParcel" + return="void" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="sender" type="android.content.IntentSender"> +</parameter> +<parameter name="out" type="android.os.Parcel"> +</parameter> +</method> +<method name="writeToParcel" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="out" type="android.os.Parcel"> +</parameter> +<parameter name="flags" type="int"> +</parameter> +</method> +<field name="CREATOR" + type="android.os.Parcelable.Creator" + transient="false" + volatile="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<interface name="IntentSender.OnFinished" + abstract="true" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="onSendFinished" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="IntentSender" type="android.content.IntentSender"> +</parameter> +<parameter name="intent" type="android.content.Intent"> +</parameter> +<parameter name="resultCode" type="int"> +</parameter> +<parameter name="resultData" type="java.lang.String"> +</parameter> +<parameter name="resultExtras" type="android.os.Bundle"> +</parameter> +</method> +</interface> +<class name="IntentSender.SendIntentException" + extends="android.util.AndroidException" + abstract="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="IntentSender.SendIntentException" + type="android.content.IntentSender.SendIntentException" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<constructor name="IntentSender.SendIntentException" + type="android.content.IntentSender.SendIntentException" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="name" type="java.lang.String"> +</parameter> +</constructor> +<constructor name="IntentSender.SendIntentException" + type="android.content.IntentSender.SendIntentException" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="cause" type="java.lang.Exception"> +</parameter> +</constructor> +</class> <class name="MutableContextWrapper" extends="android.content.ContextWrapper" abstract="false" @@ -30900,6 +32218,17 @@ visibility="public" > </field> +<field name="CONFIG_SCREEN_LAYOUT" + type="int" + transient="false" + volatile="false" + value="256" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="CONFIG_TOUCHSCREEN" type="int" transient="false" @@ -31364,6 +32693,61 @@ visibility="public" > </field> +<field name="FLAG_RESIZEABLE_FOR_SCREENS" + type="int" + transient="false" + volatile="false" + value="4096" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FLAG_SUPPORTS_LARGE_SCREENS" + type="int" + transient="false" + volatile="false" + value="2048" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FLAG_SUPPORTS_NORMAL_SCREENS" + type="int" + transient="false" + volatile="false" + value="1024" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FLAG_SUPPORTS_SCREEN_DENSITIES" + type="int" + transient="false" + volatile="false" + value="8192" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FLAG_SUPPORTS_SMALL_SCREENS" + type="int" + transient="false" + volatile="false" + value="512" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="FLAG_SYSTEM" type="int" transient="false" @@ -31375,6 +32759,28 @@ visibility="public" > </field> +<field name="FLAG_TEST_ONLY" + type="int" + transient="false" + volatile="false" + value="256" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FLAG_UPDATED_SYSTEM_APP" + type="int" + transient="false" + volatile="false" + value="128" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="className" type="java.lang.String" transient="false" @@ -31486,6 +32892,16 @@ visibility="public" > </field> +<field name="targetSdkVersion" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="taskAffinity" type="java.lang.String" transient="false" @@ -31680,6 +33096,17 @@ visibility="public" > </method> +<method name="getGlEsVersion" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="writeToParcel" return="void" abstract="false" @@ -31705,6 +33132,17 @@ visibility="public" > </field> +<field name="GL_ES_VERSION_UNDEFINED" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="INPUT_FEATURE_FIVE_WAY_NAV" type="int" transient="false" @@ -31727,6 +33165,16 @@ visibility="public" > </field> +<field name="reqGlEsVersion" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="reqInputFeatures" type="int" transient="false" @@ -32653,8 +34101,6 @@ > <parameter name="packageName" type="java.lang.String"> </parameter> -<exception name="PackageManager.NameNotFoundException" type="android.content.pm.PackageManager.NameNotFoundException"> -</exception> </method> <method name="getNameForUid" return="java.lang.String" @@ -33632,6 +35078,73 @@ > </field> </class> +<class name="PathPermission" + extends="android.os.PatternMatcher" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="PathPermission" + type="android.content.pm.PathPermission" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pattern" type="java.lang.String"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="readPermission" type="java.lang.String"> +</parameter> +<parameter name="writePermission" type="java.lang.String"> +</parameter> +</constructor> +<constructor name="PathPermission" + type="android.content.pm.PathPermission" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="src" type="android.os.Parcel"> +</parameter> +</constructor> +<method name="getReadPermission" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getWritePermission" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<field name="CREATOR" + type="android.os.Parcelable.Creator" + transient="false" + volatile="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> <class name="PermissionGroupInfo" extends="android.content.pm.PackageItemInfo" abstract="false" @@ -33961,6 +35474,17 @@ visibility="public" > </field> +<field name="pathPermissions" + type="android.content.pm.PathPermission[]" + transient="false" + volatile="false" + value="null" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="readPermission" type="java.lang.String" transient="false" @@ -35472,6 +36996,105 @@ visibility="public" > </field> +<field name="SCREENLAYOUT_LONG_MASK" + type="int" + transient="false" + volatile="false" + value="48" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCREENLAYOUT_LONG_NO" + type="int" + transient="false" + volatile="false" + value="16" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCREENLAYOUT_LONG_UNDEFINED" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCREENLAYOUT_LONG_YES" + type="int" + transient="false" + volatile="false" + value="32" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCREENLAYOUT_SIZE_LARGE" + type="int" + transient="false" + volatile="false" + value="3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCREENLAYOUT_SIZE_MASK" + type="int" + transient="false" + volatile="false" + value="15" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCREENLAYOUT_SIZE_NORMAL" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCREENLAYOUT_SIZE_SMALL" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCREENLAYOUT_SIZE_UNDEFINED" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="TOUCHSCREEN_FINGER" type="int" transient="false" @@ -35606,6 +37229,16 @@ visibility="public" > </field> +<field name="screenLayout" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="touchscreen" type="int" transient="false" @@ -42600,6 +44233,1722 @@ </method> </class> </package> +<package name="android.gesture" +> +<class name="Gesture" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<implements name="android.os.Parcelable"> +</implements> +<constructor name="Gesture" + type="android.gesture.Gesture" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<method name="addStroke" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="stroke" type="android.gesture.GestureStroke"> +</parameter> +</method> +<method name="describeContents" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getBoundingBox" + return="android.graphics.RectF" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getID" + return="long" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getLength" + return="float" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getStrokes" + return="java.util.ArrayList<android.gesture.GestureStroke>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getStrokesCount" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="toBitmap" + return="android.graphics.Bitmap" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +<parameter name="edge" type="int"> +</parameter> +<parameter name="numSample" type="int"> +</parameter> +<parameter name="color" type="int"> +</parameter> +</method> +<method name="toBitmap" + return="android.graphics.Bitmap" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +<parameter name="inset" type="int"> +</parameter> +<parameter name="color" type="int"> +</parameter> +</method> +<method name="toPath" + return="android.graphics.Path" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="toPath" + return="android.graphics.Path" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="path" type="android.graphics.Path"> +</parameter> +</method> +<method name="toPath" + return="android.graphics.Path" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +<parameter name="edge" type="int"> +</parameter> +<parameter name="numSample" type="int"> +</parameter> +</method> +<method name="toPath" + return="android.graphics.Path" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="path" type="android.graphics.Path"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +<parameter name="edge" type="int"> +</parameter> +<parameter name="numSample" type="int"> +</parameter> +</method> +<method name="writeToParcel" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="out" type="android.os.Parcel"> +</parameter> +<parameter name="flags" type="int"> +</parameter> +</method> +<field name="CREATOR" + type="android.os.Parcelable.Creator" + transient="false" + volatile="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="GestureLibraries" + extends="java.lang.Object" + abstract="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +<method name="fromFile" + return="android.gesture.GestureLibrary" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="path" type="java.lang.String"> +</parameter> +</method> +<method name="fromFile" + return="android.gesture.GestureLibrary" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="path" type="java.io.File"> +</parameter> +</method> +<method name="fromPrivateFile" + return="android.gesture.GestureLibrary" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +<parameter name="name" type="java.lang.String"> +</parameter> +</method> +<method name="fromRawResource" + return="android.gesture.GestureLibrary" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +<parameter name="resourceId" type="int"> +</parameter> +</method> +</class> +<class name="GestureLibrary" + extends="java.lang.Object" + abstract="true" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="GestureLibrary" + type="android.gesture.GestureLibrary" + static="false" + final="false" + deprecated="not deprecated" + visibility="protected" +> +</constructor> +<method name="addGesture" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="entryName" type="java.lang.String"> +</parameter> +<parameter name="gesture" type="android.gesture.Gesture"> +</parameter> +</method> +<method name="getGestureEntries" + return="java.util.Set<java.lang.String>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getGestures" + return="java.util.ArrayList<android.gesture.Gesture>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="entryName" type="java.lang.String"> +</parameter> +</method> +<method name="getOrientationStyle" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getSequenceType" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isReadOnly" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="load" + return="boolean" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="recognize" + return="java.util.ArrayList<android.gesture.Prediction>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="gesture" type="android.gesture.Gesture"> +</parameter> +</method> +<method name="removeEntry" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="entryName" type="java.lang.String"> +</parameter> +</method> +<method name="removeGesture" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="entryName" type="java.lang.String"> +</parameter> +<parameter name="gesture" type="android.gesture.Gesture"> +</parameter> +</method> +<method name="save" + return="boolean" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="setOrientationStyle" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="style" type="int"> +</parameter> +</method> +<method name="setSequenceType" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="type" type="int"> +</parameter> +</method> +<field name="mStore" + type="android.gesture.GestureStore" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="protected" +> +</field> +</class> +<class name="GestureOverlayView" + extends="android.widget.FrameLayout" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="GestureOverlayView" + type="android.gesture.GestureOverlayView" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +</constructor> +<constructor name="GestureOverlayView" + type="android.gesture.GestureOverlayView" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +<parameter name="attrs" type="android.util.AttributeSet"> +</parameter> +</constructor> +<constructor name="GestureOverlayView" + type="android.gesture.GestureOverlayView" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +<parameter name="attrs" type="android.util.AttributeSet"> +</parameter> +<parameter name="defStyle" type="int"> +</parameter> +</constructor> +<method name="addOnGestureListener" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="listener" type="android.gesture.GestureOverlayView.OnGestureListener"> +</parameter> +</method> +<method name="addOnGesturePerformedListener" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="listener" type="android.gesture.GestureOverlayView.OnGesturePerformedListener"> +</parameter> +</method> +<method name="addOnGesturingListener" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="listener" type="android.gesture.GestureOverlayView.OnGesturingListener"> +</parameter> +</method> +<method name="cancelClearAnimation" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="cancelGesture" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="clear" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="animated" type="boolean"> +</parameter> +</method> +<method name="getCurrentStroke" + return="java.util.ArrayList<android.gesture.GesturePoint>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getFadeOffset" + return="long" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getGesture" + return="android.gesture.Gesture" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getGestureColor" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getGesturePath" + return="android.graphics.Path" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getGesturePath" + return="android.graphics.Path" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="path" type="android.graphics.Path"> +</parameter> +</method> +<method name="getGestureStrokeAngleThreshold" + return="float" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getGestureStrokeLengthThreshold" + return="float" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getGestureStrokeSquarenessTreshold" + return="float" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getGestureStrokeType" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getGestureStrokeWidth" + return="float" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getOrientation" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getUncertainGestureColor" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isEventsInterceptionEnabled" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isFadeEnabled" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isGestureVisible" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isGesturing" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="removeAllOnGestureListeners" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="removeAllOnGesturePerformedListeners" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="removeAllOnGesturingListeners" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="removeOnGestureListener" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="listener" type="android.gesture.GestureOverlayView.OnGestureListener"> +</parameter> +</method> +<method name="removeOnGesturePerformedListener" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="listener" type="android.gesture.GestureOverlayView.OnGesturePerformedListener"> +</parameter> +</method> +<method name="removeOnGesturingListener" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="listener" type="android.gesture.GestureOverlayView.OnGesturingListener"> +</parameter> +</method> +<method name="setEventsInterceptionEnabled" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="enabled" type="boolean"> +</parameter> +</method> +<method name="setFadeEnabled" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="fadeEnabled" type="boolean"> +</parameter> +</method> +<method name="setFadeOffset" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="fadeOffset" type="long"> +</parameter> +</method> +<method name="setGesture" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="gesture" type="android.gesture.Gesture"> +</parameter> +</method> +<method name="setGestureColor" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="color" type="int"> +</parameter> +</method> +<method name="setGestureStrokeAngleThreshold" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="gestureStrokeAngleThreshold" type="float"> +</parameter> +</method> +<method name="setGestureStrokeLengthThreshold" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="gestureStrokeLengthThreshold" type="float"> +</parameter> +</method> +<method name="setGestureStrokeSquarenessTreshold" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="gestureStrokeSquarenessTreshold" type="float"> +</parameter> +</method> +<method name="setGestureStrokeType" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="gestureStrokeType" type="int"> +</parameter> +</method> +<method name="setGestureStrokeWidth" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="gestureStrokeWidth" type="float"> +</parameter> +</method> +<method name="setGestureVisible" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="visible" type="boolean"> +</parameter> +</method> +<method name="setOrientation" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="orientation" type="int"> +</parameter> +</method> +<method name="setUncertainGestureColor" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="color" type="int"> +</parameter> +</method> +<field name="GESTURE_STROKE_TYPE_MULTIPLE" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GESTURE_STROKE_TYPE_SINGLE" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ORIENTATION_HORIZONTAL" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ORIENTATION_VERTICAL" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<interface name="GestureOverlayView.OnGestureListener" + abstract="true" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="onGesture" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="overlay" type="android.gesture.GestureOverlayView"> +</parameter> +<parameter name="event" type="android.view.MotionEvent"> +</parameter> +</method> +<method name="onGestureCancelled" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="overlay" type="android.gesture.GestureOverlayView"> +</parameter> +<parameter name="event" type="android.view.MotionEvent"> +</parameter> +</method> +<method name="onGestureEnded" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="overlay" type="android.gesture.GestureOverlayView"> +</parameter> +<parameter name="event" type="android.view.MotionEvent"> +</parameter> +</method> +<method name="onGestureStarted" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="overlay" type="android.gesture.GestureOverlayView"> +</parameter> +<parameter name="event" type="android.view.MotionEvent"> +</parameter> +</method> +</interface> +<interface name="GestureOverlayView.OnGesturePerformedListener" + abstract="true" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="onGesturePerformed" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="overlay" type="android.gesture.GestureOverlayView"> +</parameter> +<parameter name="gesture" type="android.gesture.Gesture"> +</parameter> +</method> +</interface> +<interface name="GestureOverlayView.OnGesturingListener" + abstract="true" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="onGesturingEnded" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="overlay" type="android.gesture.GestureOverlayView"> +</parameter> +</method> +<method name="onGesturingStarted" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="overlay" type="android.gesture.GestureOverlayView"> +</parameter> +</method> +</interface> +<class name="GesturePoint" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="GesturePoint" + type="android.gesture.GesturePoint" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="float"> +</parameter> +<parameter name="y" type="float"> +</parameter> +<parameter name="t" type="long"> +</parameter> +</constructor> +<field name="timestamp" + type="long" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="x" + type="float" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="y" + type="float" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="GestureStore" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="GestureStore" + type="android.gesture.GestureStore" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<method name="addGesture" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="entryName" type="java.lang.String"> +</parameter> +<parameter name="gesture" type="android.gesture.Gesture"> +</parameter> +</method> +<method name="getGestureEntries" + return="java.util.Set<java.lang.String>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getGestures" + return="java.util.ArrayList<android.gesture.Gesture>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="entryName" type="java.lang.String"> +</parameter> +</method> +<method name="getOrientationStyle" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getSequenceType" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="hasChanged" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="load" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="stream" type="java.io.InputStream"> +</parameter> +<exception name="IOException" type="java.io.IOException"> +</exception> +</method> +<method name="load" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="stream" type="java.io.InputStream"> +</parameter> +<parameter name="closeStream" type="boolean"> +</parameter> +<exception name="IOException" type="java.io.IOException"> +</exception> +</method> +<method name="recognize" + return="java.util.ArrayList<android.gesture.Prediction>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="gesture" type="android.gesture.Gesture"> +</parameter> +</method> +<method name="removeEntry" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="entryName" type="java.lang.String"> +</parameter> +</method> +<method name="removeGesture" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="entryName" type="java.lang.String"> +</parameter> +<parameter name="gesture" type="android.gesture.Gesture"> +</parameter> +</method> +<method name="save" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="stream" type="java.io.OutputStream"> +</parameter> +<exception name="IOException" type="java.io.IOException"> +</exception> +</method> +<method name="save" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="stream" type="java.io.OutputStream"> +</parameter> +<parameter name="closeStream" type="boolean"> +</parameter> +<exception name="IOException" type="java.io.IOException"> +</exception> +</method> +<method name="setOrientationStyle" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="style" type="int"> +</parameter> +</method> +<method name="setSequenceType" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="type" type="int"> +</parameter> +</method> +<field name="ORIENTATION_INVARIANT" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ORIENTATION_SENSITIVE" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SEQUENCE_INVARIANT" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SEQUENCE_SENSITIVE" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="GestureStroke" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="GestureStroke" + type="android.gesture.GestureStroke" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="points" type="java.util.ArrayList<android.gesture.GesturePoint>"> +</parameter> +</constructor> +<method name="clearPath" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="computeOrientedBoundingBox" + return="android.gesture.OrientedBoundingBox" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getPath" + return="android.graphics.Path" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="toPath" + return="android.graphics.Path" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="width" type="float"> +</parameter> +<parameter name="height" type="float"> +</parameter> +<parameter name="numSample" type="int"> +</parameter> +</method> +<field name="boundingBox" + type="android.graphics.RectF" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="length" + type="float" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="points" + type="float[]" + transient="false" + volatile="false" + value="null" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="OrientedBoundingBox" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<field name="centerX" + type="float" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="centerY" + type="float" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="height" + type="float" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="orientation" + type="float" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="squareness" + type="float" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="width" + type="float" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="Prediction" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<field name="name" + type="java.lang.String" + transient="false" + volatile="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="score" + type="double" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +</package> <package name="android.graphics" > <class name="AvoidXfermode" @@ -42924,6 +46273,17 @@ visibility="public" > </method> +<method name="getDensity" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getHeight" return="int" abstract="false" @@ -42997,6 +46357,84 @@ visibility="public" > </method> +<method name="getScaledHeight" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="canvas" type="android.graphics.Canvas"> +</parameter> +</method> +<method name="getScaledHeight" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="metrics" type="android.util.DisplayMetrics"> +</parameter> +</method> +<method name="getScaledHeight" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="targetDensity" type="int"> +</parameter> +</method> +<method name="getScaledWidth" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="canvas" type="android.graphics.Canvas"> +</parameter> +</method> +<method name="getScaledWidth" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="metrics" type="android.util.DisplayMetrics"> +</parameter> +</method> +<method name="getScaledWidth" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="targetDensity" type="int"> +</parameter> +</method> <method name="getWidth" return="int" abstract="false" @@ -43041,6 +46479,17 @@ visibility="public" > </method> +<method name="prepareToDraw" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="recycle" return="void" abstract="false" @@ -43052,6 +46501,19 @@ visibility="public" > </method> +<method name="setDensity" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="density" type="int"> +</parameter> +</method> <method name="setPixel" return="void" abstract="false" @@ -43119,6 +46581,17 @@ visibility="public" > </field> +<field name="DENSITY_NONE" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> </class> <class name="Bitmap.CompressFormat" extends="java.lang.Enum" @@ -43328,6 +46801,27 @@ <parameter name="id" type="int"> </parameter> </method> +<method name="decodeResourceStream" + return="android.graphics.Bitmap" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="res" type="android.content.res.Resources"> +</parameter> +<parameter name="value" type="android.util.TypedValue"> +</parameter> +<parameter name="is" type="java.io.InputStream"> +</parameter> +<parameter name="pad" type="android.graphics.Rect"> +</parameter> +<parameter name="opts" type="android.graphics.BitmapFactory.Options"> +</parameter> +</method> <method name="decodeStream" return="android.graphics.Bitmap" abstract="false" @@ -43386,6 +46880,16 @@ visibility="public" > </method> +<field name="inDensity" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="inDither" type="boolean" transient="false" @@ -43396,6 +46900,16 @@ visibility="public" > </field> +<field name="inInputShareable" + type="boolean" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="inJustDecodeBounds" type="boolean" transient="false" @@ -43416,6 +46930,16 @@ visibility="public" > </field> +<field name="inPurgeable" + type="boolean" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="inSampleSize" type="int" transient="false" @@ -43426,6 +46950,36 @@ visibility="public" > </field> +<field name="inScaled" + type="boolean" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="inScreenDensity" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="inTargetDensity" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="inTempStorage" type="byte[]" transient="false" @@ -44648,7 +48202,7 @@ <method name="freeGlCaches" return="void" abstract="false" - native="true" + native="false" synchronized="false" static="true" final="false" @@ -44680,6 +48234,17 @@ visibility="public" > </method> +<method name="getDensity" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getDrawFilter" return="android.graphics.DrawFilter" abstract="false" @@ -45026,6 +48591,19 @@ <parameter name="bitmap" type="android.graphics.Bitmap"> </parameter> </method> +<method name="setDensity" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="density" type="int"> +</parameter> +</method> <method name="setDrawFilter" return="void" abstract="false" @@ -47335,6 +50913,17 @@ <parameter name="paint" type="android.graphics.Paint"> </parameter> </method> +<method name="getDensity" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getHeight" return="int" abstract="false" @@ -52357,6 +55946,32 @@ <parameter name="path" type="java.lang.String"> </parameter> </method> +<method name="createFromFile" + return="android.graphics.Typeface" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="path" type="java.io.File"> +</parameter> +</method> +<method name="createFromFile" + return="android.graphics.Typeface" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="path" type="java.lang.String"> +</parameter> +</method> <method name="defaultFromStyle" return="android.graphics.Typeface" abstract="false" @@ -52518,6 +56133,47 @@ </package> <package name="android.graphics.drawable" > +<interface name="Animatable" + abstract="true" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="isRunning" + return="boolean" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="start" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="stop" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +</interface> <class name="AnimationDrawable" extends="android.graphics.drawable.DrawableContainer" abstract="false" @@ -52526,6 +56182,8 @@ deprecated="not deprecated" visibility="public" > +<implements name="android.graphics.drawable.Animatable"> +</implements> <implements name="java.lang.Runnable"> </implements> <constructor name="AnimationDrawable" @@ -52669,9 +56327,29 @@ type="android.graphics.drawable.BitmapDrawable" static="false" final="false" + deprecated="deprecated" + visibility="public" +> +</constructor> +<constructor name="BitmapDrawable" + type="android.graphics.drawable.BitmapDrawable" + static="false" + final="false" deprecated="not deprecated" visibility="public" > +<parameter name="res" type="android.content.res.Resources"> +</parameter> +</constructor> +<constructor name="BitmapDrawable" + type="android.graphics.drawable.BitmapDrawable" + static="false" + final="false" + deprecated="deprecated" + visibility="public" +> +<parameter name="bitmap" type="android.graphics.Bitmap"> +</parameter> </constructor> <constructor name="BitmapDrawable" type="android.graphics.drawable.BitmapDrawable" @@ -52680,6 +56358,8 @@ deprecated="not deprecated" visibility="public" > +<parameter name="res" type="android.content.res.Resources"> +</parameter> <parameter name="bitmap" type="android.graphics.Bitmap"> </parameter> </constructor> @@ -52845,6 +56525,45 @@ <parameter name="gravity" type="int"> </parameter> </method> +<method name="setTargetDensity" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="canvas" type="android.graphics.Canvas"> +</parameter> +</method> +<method name="setTargetDensity" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="metrics" type="android.util.DisplayMetrics"> +</parameter> +</method> +<method name="setTargetDensity" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="density" type="int"> +</parameter> +</method> <method name="setTileModeX" return="void" abstract="false" @@ -53181,6 +56900,25 @@ <parameter name="pathName" type="java.lang.String"> </parameter> </method> +<method name="createFromResourceStream" + return="android.graphics.drawable.Drawable" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="res" type="android.content.res.Resources"> +</parameter> +<parameter name="value" type="android.util.TypedValue"> +</parameter> +<parameter name="is" type="java.io.InputStream"> +</parameter> +<parameter name="srcName" type="java.lang.String"> +</parameter> +</method> <method name="createFromStream" return="android.graphics.drawable.Drawable" abstract="false" @@ -54878,9 +58616,27 @@ type="android.graphics.drawable.NinePatchDrawable" static="false" final="false" + deprecated="deprecated" + visibility="public" +> +<parameter name="bitmap" type="android.graphics.Bitmap"> +</parameter> +<parameter name="chunk" type="byte[]"> +</parameter> +<parameter name="padding" type="android.graphics.Rect"> +</parameter> +<parameter name="srcName" type="java.lang.String"> +</parameter> +</constructor> +<constructor name="NinePatchDrawable" + type="android.graphics.drawable.NinePatchDrawable" + static="false" + final="false" deprecated="not deprecated" visibility="public" > +<parameter name="res" type="android.content.res.Resources"> +</parameter> <parameter name="bitmap" type="android.graphics.Bitmap"> </parameter> <parameter name="chunk" type="byte[]"> @@ -54894,9 +58650,21 @@ type="android.graphics.drawable.NinePatchDrawable" static="false" final="false" + deprecated="deprecated" + visibility="public" +> +<parameter name="patch" type="android.graphics.NinePatch"> +</parameter> +</constructor> +<constructor name="NinePatchDrawable" + type="android.graphics.drawable.NinePatchDrawable" + static="false" + final="false" deprecated="not deprecated" visibility="public" > +<parameter name="res" type="android.content.res.Resources"> +</parameter> <parameter name="patch" type="android.graphics.NinePatch"> </parameter> </constructor> @@ -54961,6 +58729,45 @@ <parameter name="cf" type="android.graphics.ColorFilter"> </parameter> </method> +<method name="setTargetDensity" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="canvas" type="android.graphics.Canvas"> +</parameter> +</method> +<method name="setTargetDensity" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="metrics" type="android.util.DisplayMetrics"> +</parameter> +</method> +<method name="setTargetDensity" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="density" type="int"> +</parameter> +</method> </class> <class name="PaintDrawable" extends="android.graphics.drawable.ShapeDrawable" @@ -57475,7 +61282,7 @@ type="float" transient="false" volatile="false" - value="0.001f" + value="0.0010f" static="true" final="true" deprecated="not deprecated" @@ -60132,6 +63939,30 @@ visibility="public" > </method> +<method name="invalidateAllKeys" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="invalidateKey" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="keyIndex" type="int"> +</parameter> +</method> <method name="isPreviewEnabled" return="boolean" abstract="false" @@ -60707,6 +64538,17 @@ visibility="public" > </method> +<method name="getPremises" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getSubAdminArea" return="java.lang.String" abstract="false" @@ -60718,6 +64560,28 @@ visibility="public" > </method> +<method name="getSubLocality" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getSubThoroughfare" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getThoroughfare" return="java.lang.String" abstract="false" @@ -60907,6 +64771,19 @@ <parameter name="postalCode" type="java.lang.String"> </parameter> </method> +<method name="setPremises" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="premises" type="java.lang.String"> +</parameter> +</method> <method name="setSubAdminArea" return="void" abstract="false" @@ -60920,6 +64797,32 @@ <parameter name="subAdminArea" type="java.lang.String"> </parameter> </method> +<method name="setSubLocality" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="sublocality" type="java.lang.String"> +</parameter> +</method> +<method name="setSubThoroughfare" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="subthoroughfare" type="java.lang.String"> +</parameter> +</method> <method name="setThoroughfare" return="void" abstract="false" @@ -62997,7 +66900,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="mode" type="int"> @@ -63208,7 +67111,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="mode" type="int"> @@ -66119,6 +70022,17 @@ visibility="public" > </constructor> +<method name="getAudioSourceMax" + return="int" + abstract="false" + native="false" + synchronized="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getMaxAmplitude" return="int" abstract="false" @@ -66520,6 +70434,39 @@ visibility="public" > </field> +<field name="VOICE_CALL" + type="int" + transient="false" + volatile="false" + value="4" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="VOICE_DOWNLINK" + type="int" + transient="false" + volatile="false" + value="3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="VOICE_UPLINK" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> </class> <interface name="MediaRecorder.OnErrorListener" abstract="true" @@ -67671,6 +71618,721 @@ visibility="public" > </field> +<field name="TONE_CDMA_ABBR_ALERT" + type="int" + transient="false" + volatile="false" + value="97" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_ABBR_INTERCEPT" + type="int" + transient="false" + volatile="false" + value="37" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_ABBR_REORDER" + type="int" + transient="false" + volatile="false" + value="39" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_ALERT_AUTOREDIAL_LITE" + type="int" + transient="false" + volatile="false" + value="87" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_ALERT_CALL_GUARD" + type="int" + transient="false" + volatile="false" + value="93" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_ALERT_INCALL_LITE" + type="int" + transient="false" + volatile="false" + value="91" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_ALERT_NETWORK_LITE" + type="int" + transient="false" + volatile="false" + value="86" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_ANSWER" + type="int" + transient="false" + volatile="false" + value="42" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_CALLDROP_LITE" + type="int" + transient="false" + volatile="false" + value="95" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_CALL_SIGNAL_ISDN_INTERGROUP" + type="int" + transient="false" + volatile="false" + value="46" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_CALL_SIGNAL_ISDN_NORMAL" + type="int" + transient="false" + volatile="false" + value="45" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT3" + type="int" + transient="false" + volatile="false" + value="48" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT5" + type="int" + transient="false" + volatile="false" + value="50" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT6" + type="int" + transient="false" + volatile="false" + value="51" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT7" + type="int" + transient="false" + volatile="false" + value="52" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PING_RING" + type="int" + transient="false" + volatile="false" + value="49" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_CALL_SIGNAL_ISDN_SP_PRI" + type="int" + transient="false" + volatile="false" + value="47" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_CONFIRM" + type="int" + transient="false" + volatile="false" + value="41" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_DIAL_TONE_LITE" + type="int" + transient="false" + volatile="false" + value="34" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_EMERGENCY_RINGBACK" + type="int" + transient="false" + volatile="false" + value="92" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_L" + type="int" + transient="false" + volatile="false" + value="53" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_PBX_L" + type="int" + transient="false" + volatile="false" + value="71" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_PBX_SLS" + type="int" + transient="false" + volatile="false" + value="80" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_PBX_SS" + type="int" + transient="false" + volatile="false" + value="74" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_PBX_SSL" + type="int" + transient="false" + volatile="false" + value="77" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_PBX_S_X4" + type="int" + transient="false" + volatile="false" + value="83" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_SLS" + type="int" + transient="false" + volatile="false" + value="65" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_SS" + type="int" + transient="false" + volatile="false" + value="56" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_SSL" + type="int" + transient="false" + volatile="false" + value="59" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_SS_2" + type="int" + transient="false" + volatile="false" + value="62" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_HIGH_S_X4" + type="int" + transient="false" + volatile="false" + value="68" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_INTERCEPT" + type="int" + transient="false" + volatile="false" + value="36" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_KEYPAD_VOLUME_KEY_LITE" + type="int" + transient="false" + volatile="false" + value="89" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_L" + type="int" + transient="false" + volatile="false" + value="55" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_PBX_L" + type="int" + transient="false" + volatile="false" + value="73" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_PBX_SLS" + type="int" + transient="false" + volatile="false" + value="82" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_PBX_SS" + type="int" + transient="false" + volatile="false" + value="76" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_PBX_SSL" + type="int" + transient="false" + volatile="false" + value="79" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_PBX_S_X4" + type="int" + transient="false" + volatile="false" + value="85" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_SLS" + type="int" + transient="false" + volatile="false" + value="67" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_SS" + type="int" + transient="false" + volatile="false" + value="58" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_SSL" + type="int" + transient="false" + volatile="false" + value="61" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_SS_2" + type="int" + transient="false" + volatile="false" + value="64" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_LOW_S_X4" + type="int" + transient="false" + volatile="false" + value="70" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_L" + type="int" + transient="false" + volatile="false" + value="54" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_PBX_L" + type="int" + transient="false" + volatile="false" + value="72" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_PBX_SLS" + type="int" + transient="false" + volatile="false" + value="81" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_PBX_SS" + type="int" + transient="false" + volatile="false" + value="75" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_PBX_SSL" + type="int" + transient="false" + volatile="false" + value="78" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_PBX_S_X4" + type="int" + transient="false" + volatile="false" + value="84" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_SLS" + type="int" + transient="false" + volatile="false" + value="66" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_SS" + type="int" + transient="false" + volatile="false" + value="57" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_SSL" + type="int" + transient="false" + volatile="false" + value="60" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_SS_2" + type="int" + transient="false" + volatile="false" + value="63" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_MED_S_X4" + type="int" + transient="false" + volatile="false" + value="69" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_NETWORK_BUSY" + type="int" + transient="false" + volatile="false" + value="40" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_NETWORK_BUSY_ONE_SHOT" + type="int" + transient="false" + volatile="false" + value="96" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_NETWORK_CALLWAITING" + type="int" + transient="false" + volatile="false" + value="43" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_NETWORK_USA_RINGBACK" + type="int" + transient="false" + volatile="false" + value="35" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_ONE_MIN_BEEP" + type="int" + transient="false" + volatile="false" + value="88" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_PIP" + type="int" + transient="false" + volatile="false" + value="44" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_PRESSHOLDKEY_LITE" + type="int" + transient="false" + volatile="false" + value="90" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_REORDER" + type="int" + transient="false" + volatile="false" + value="38" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_SIGNAL_OFF" + type="int" + transient="false" + volatile="false" + value="98" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_CDMA_SOFT_ERROR_LITE" + type="int" + transient="false" + volatile="false" + value="94" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="TONE_DTMF_0" type="int" transient="false" @@ -67924,6 +72586,17 @@ visibility="public" > </field> +<field name="TONE_SUP_CONFIRM" + type="int" + transient="false" + volatile="false" + value="32" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="TONE_SUP_CONGESTION" type="int" transient="false" @@ -67935,6 +72608,17 @@ visibility="public" > </field> +<field name="TONE_SUP_CONGESTION_ABBREV" + type="int" + transient="false" + volatile="false" + value="31" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="TONE_SUP_DIAL" type="int" transient="false" @@ -67957,6 +72641,39 @@ visibility="public" > </field> +<field name="TONE_SUP_INTERCEPT" + type="int" + transient="false" + volatile="false" + value="29" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_SUP_INTERCEPT_ABBREV" + type="int" + transient="false" + volatile="false" + value="30" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TONE_SUP_PIP" + type="int" + transient="false" + volatile="false" + value="33" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="TONE_SUP_RADIO_ACK" type="int" transient="false" @@ -72042,6 +76759,19 @@ <parameter name="rssiB" type="int"> </parameter> </method> +<method name="createMulticastLock" + return="android.net.wifi.WifiManager.MulticastLock" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="tag" type="java.lang.String"> +</parameter> +</method> <method name="createWifiLock" return="android.net.wifi.WifiManager.WifiLock" abstract="false" @@ -72534,6 +77264,61 @@ > </field> </class> +<class name="WifiManager.MulticastLock" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="acquire" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isHeld" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="release" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="setReferenceCounted" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="refCounted" type="boolean"> +</parameter> +</method> +</class> <class name="WifiManager.WifiLock" extends="java.lang.Object" abstract="false" @@ -72687,6 +77472,10412 @@ > </field> </class> +<class name="GLES10" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="GLES10" + type="android.opengl.GLES10" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<method name="glActiveTexture" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="texture" type="int"> +</parameter> +</method> +<method name="glAlphaFunc" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="func" type="int"> +</parameter> +<parameter name="ref" type="float"> +</parameter> +</method> +<method name="glAlphaFuncx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="func" type="int"> +</parameter> +<parameter name="ref" type="int"> +</parameter> +</method> +<method name="glBindTexture" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="texture" type="int"> +</parameter> +</method> +<method name="glBlendFunc" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="sfactor" type="int"> +</parameter> +<parameter name="dfactor" type="int"> +</parameter> +</method> +<method name="glClear" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mask" type="int"> +</parameter> +</method> +<method name="glClearColor" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="red" type="float"> +</parameter> +<parameter name="green" type="float"> +</parameter> +<parameter name="blue" type="float"> +</parameter> +<parameter name="alpha" type="float"> +</parameter> +</method> +<method name="glClearColorx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="red" type="int"> +</parameter> +<parameter name="green" type="int"> +</parameter> +<parameter name="blue" type="int"> +</parameter> +<parameter name="alpha" type="int"> +</parameter> +</method> +<method name="glClearDepthf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="depth" type="float"> +</parameter> +</method> +<method name="glClearDepthx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="depth" type="int"> +</parameter> +</method> +<method name="glClearStencil" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="s" type="int"> +</parameter> +</method> +<method name="glClientActiveTexture" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="texture" type="int"> +</parameter> +</method> +<method name="glColor4f" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="red" type="float"> +</parameter> +<parameter name="green" type="float"> +</parameter> +<parameter name="blue" type="float"> +</parameter> +<parameter name="alpha" type="float"> +</parameter> +</method> +<method name="glColor4x" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="red" type="int"> +</parameter> +<parameter name="green" type="int"> +</parameter> +<parameter name="blue" type="int"> +</parameter> +<parameter name="alpha" type="int"> +</parameter> +</method> +<method name="glColorMask" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="red" type="boolean"> +</parameter> +<parameter name="green" type="boolean"> +</parameter> +<parameter name="blue" type="boolean"> +</parameter> +<parameter name="alpha" type="boolean"> +</parameter> +</method> +<method name="glColorPointer" + return="void" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="pointer" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glCompressedTexImage2D" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="level" type="int"> +</parameter> +<parameter name="internalformat" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +<parameter name="border" type="int"> +</parameter> +<parameter name="imageSize" type="int"> +</parameter> +<parameter name="data" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glCompressedTexSubImage2D" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="level" type="int"> +</parameter> +<parameter name="xoffset" type="int"> +</parameter> +<parameter name="yoffset" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +<parameter name="format" type="int"> +</parameter> +<parameter name="imageSize" type="int"> +</parameter> +<parameter name="data" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glCopyTexImage2D" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="level" type="int"> +</parameter> +<parameter name="internalformat" type="int"> +</parameter> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +<parameter name="border" type="int"> +</parameter> +</method> +<method name="glCopyTexSubImage2D" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="level" type="int"> +</parameter> +<parameter name="xoffset" type="int"> +</parameter> +<parameter name="yoffset" type="int"> +</parameter> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +</method> +<method name="glCullFace" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mode" type="int"> +</parameter> +</method> +<method name="glDeleteTextures" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="textures" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glDeleteTextures" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="textures" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glDepthFunc" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="func" type="int"> +</parameter> +</method> +<method name="glDepthMask" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="flag" type="boolean"> +</parameter> +</method> +<method name="glDepthRangef" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="zNear" type="float"> +</parameter> +<parameter name="zFar" type="float"> +</parameter> +</method> +<method name="glDepthRangex" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="zNear" type="int"> +</parameter> +<parameter name="zFar" type="int"> +</parameter> +</method> +<method name="glDisable" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="cap" type="int"> +</parameter> +</method> +<method name="glDisableClientState" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="array" type="int"> +</parameter> +</method> +<method name="glDrawArrays" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mode" type="int"> +</parameter> +<parameter name="first" type="int"> +</parameter> +<parameter name="count" type="int"> +</parameter> +</method> +<method name="glDrawElements" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mode" type="int"> +</parameter> +<parameter name="count" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="indices" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glEnable" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="cap" type="int"> +</parameter> +</method> +<method name="glEnableClientState" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="array" type="int"> +</parameter> +</method> +<method name="glFinish" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="glFlush" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="glFogf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="float"> +</parameter> +</method> +<method name="glFogfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glFogfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glFogx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glFogxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glFogxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glFrontFace" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mode" type="int"> +</parameter> +</method> +<method name="glFrustumf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="left" type="float"> +</parameter> +<parameter name="right" type="float"> +</parameter> +<parameter name="bottom" type="float"> +</parameter> +<parameter name="top" type="float"> +</parameter> +<parameter name="zNear" type="float"> +</parameter> +<parameter name="zFar" type="float"> +</parameter> +</method> +<method name="glFrustumx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="left" type="int"> +</parameter> +<parameter name="right" type="int"> +</parameter> +<parameter name="bottom" type="int"> +</parameter> +<parameter name="top" type="int"> +</parameter> +<parameter name="zNear" type="int"> +</parameter> +<parameter name="zFar" type="int"> +</parameter> +</method> +<method name="glGenTextures" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="textures" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGenTextures" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="textures" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetError" + return="int" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="glGetIntegerv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetIntegerv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetString" + return="java.lang.String" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="name" type="int"> +</parameter> +</method> +<method name="glHint" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="mode" type="int"> +</parameter> +</method> +<method name="glLightModelf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="float"> +</parameter> +</method> +<method name="glLightModelfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glLightModelfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glLightModelx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glLightModelxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glLightModelxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glLightf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="float"> +</parameter> +</method> +<method name="glLightfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glLightfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glLightx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glLightxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glLightxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glLineWidth" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="width" type="float"> +</parameter> +</method> +<method name="glLineWidthx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="width" type="int"> +</parameter> +</method> +<method name="glLoadIdentity" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="glLoadMatrixf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glLoadMatrixf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glLoadMatrixx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glLoadMatrixx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glLogicOp" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="opcode" type="int"> +</parameter> +</method> +<method name="glMaterialf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="float"> +</parameter> +</method> +<method name="glMaterialfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glMaterialfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glMaterialx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glMaterialxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glMaterialxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glMatrixMode" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mode" type="int"> +</parameter> +</method> +<method name="glMultMatrixf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glMultMatrixf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glMultMatrixx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glMultMatrixx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glMultiTexCoord4f" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="s" type="float"> +</parameter> +<parameter name="t" type="float"> +</parameter> +<parameter name="r" type="float"> +</parameter> +<parameter name="q" type="float"> +</parameter> +</method> +<method name="glMultiTexCoord4x" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="s" type="int"> +</parameter> +<parameter name="t" type="int"> +</parameter> +<parameter name="r" type="int"> +</parameter> +<parameter name="q" type="int"> +</parameter> +</method> +<method name="glNormal3f" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="nx" type="float"> +</parameter> +<parameter name="ny" type="float"> +</parameter> +<parameter name="nz" type="float"> +</parameter> +</method> +<method name="glNormal3x" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="nx" type="int"> +</parameter> +<parameter name="ny" type="int"> +</parameter> +<parameter name="nz" type="int"> +</parameter> +</method> +<method name="glNormalPointer" + return="void" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="pointer" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glOrthof" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="left" type="float"> +</parameter> +<parameter name="right" type="float"> +</parameter> +<parameter name="bottom" type="float"> +</parameter> +<parameter name="top" type="float"> +</parameter> +<parameter name="zNear" type="float"> +</parameter> +<parameter name="zFar" type="float"> +</parameter> +</method> +<method name="glOrthox" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="left" type="int"> +</parameter> +<parameter name="right" type="int"> +</parameter> +<parameter name="bottom" type="int"> +</parameter> +<parameter name="top" type="int"> +</parameter> +<parameter name="zNear" type="int"> +</parameter> +<parameter name="zFar" type="int"> +</parameter> +</method> +<method name="glPixelStorei" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glPointSize" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="float"> +</parameter> +</method> +<method name="glPointSizex" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="int"> +</parameter> +</method> +<method name="glPolygonOffset" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="factor" type="float"> +</parameter> +<parameter name="units" type="float"> +</parameter> +</method> +<method name="glPolygonOffsetx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="factor" type="int"> +</parameter> +<parameter name="units" type="int"> +</parameter> +</method> +<method name="glPopMatrix" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="glPushMatrix" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="glReadPixels" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +<parameter name="format" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="pixels" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glRotatef" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="angle" type="float"> +</parameter> +<parameter name="x" type="float"> +</parameter> +<parameter name="y" type="float"> +</parameter> +<parameter name="z" type="float"> +</parameter> +</method> +<method name="glRotatex" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="angle" type="int"> +</parameter> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="z" type="int"> +</parameter> +</method> +<method name="glSampleCoverage" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="value" type="float"> +</parameter> +<parameter name="invert" type="boolean"> +</parameter> +</method> +<method name="glSampleCoveragex" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="value" type="int"> +</parameter> +<parameter name="invert" type="boolean"> +</parameter> +</method> +<method name="glScalef" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="float"> +</parameter> +<parameter name="y" type="float"> +</parameter> +<parameter name="z" type="float"> +</parameter> +</method> +<method name="glScalex" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="z" type="int"> +</parameter> +</method> +<method name="glScissor" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +</method> +<method name="glShadeModel" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mode" type="int"> +</parameter> +</method> +<method name="glStencilFunc" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="func" type="int"> +</parameter> +<parameter name="ref" type="int"> +</parameter> +<parameter name="mask" type="int"> +</parameter> +</method> +<method name="glStencilMask" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mask" type="int"> +</parameter> +</method> +<method name="glStencilOp" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="fail" type="int"> +</parameter> +<parameter name="zfail" type="int"> +</parameter> +<parameter name="zpass" type="int"> +</parameter> +</method> +<method name="glTexCoordPointer" + return="void" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="pointer" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glTexEnvf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="float"> +</parameter> +</method> +<method name="glTexEnvfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexEnvfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glTexEnvx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glTexEnvxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexEnvxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glTexImage2D" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="level" type="int"> +</parameter> +<parameter name="internalformat" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +<parameter name="border" type="int"> +</parameter> +<parameter name="format" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="pixels" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glTexParameterf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="float"> +</parameter> +</method> +<method name="glTexParameterx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glTexSubImage2D" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="level" type="int"> +</parameter> +<parameter name="xoffset" type="int"> +</parameter> +<parameter name="yoffset" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +<parameter name="format" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="pixels" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glTranslatef" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="float"> +</parameter> +<parameter name="y" type="float"> +</parameter> +<parameter name="z" type="float"> +</parameter> +</method> +<method name="glTranslatex" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="z" type="int"> +</parameter> +</method> +<method name="glVertexPointer" + return="void" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="pointer" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glViewport" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +</method> +<field name="GL_ADD" + type="int" + transient="false" + volatile="false" + value="260" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ALIASED_LINE_WIDTH_RANGE" + type="int" + transient="false" + volatile="false" + value="33902" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ALIASED_POINT_SIZE_RANGE" + type="int" + transient="false" + volatile="false" + value="33901" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ALPHA" + type="int" + transient="false" + volatile="false" + value="6406" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ALPHA_BITS" + type="int" + transient="false" + volatile="false" + value="3413" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ALPHA_TEST" + type="int" + transient="false" + volatile="false" + value="3008" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ALWAYS" + type="int" + transient="false" + volatile="false" + value="519" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_AMBIENT" + type="int" + transient="false" + volatile="false" + value="4608" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_AMBIENT_AND_DIFFUSE" + type="int" + transient="false" + volatile="false" + value="5634" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_AND" + type="int" + transient="false" + volatile="false" + value="5377" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_AND_INVERTED" + type="int" + transient="false" + volatile="false" + value="5380" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_AND_REVERSE" + type="int" + transient="false" + volatile="false" + value="5378" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BACK" + type="int" + transient="false" + volatile="false" + value="1029" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLEND" + type="int" + transient="false" + volatile="false" + value="3042" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLUE_BITS" + type="int" + transient="false" + volatile="false" + value="3412" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BYTE" + type="int" + transient="false" + volatile="false" + value="5120" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CCW" + type="int" + transient="false" + volatile="false" + value="2305" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CLAMP_TO_EDGE" + type="int" + transient="false" + volatile="false" + value="33071" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CLEAR" + type="int" + transient="false" + volatile="false" + value="5376" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_ARRAY" + type="int" + transient="false" + volatile="false" + value="32886" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_BUFFER_BIT" + type="int" + transient="false" + volatile="false" + value="16384" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_LOGIC_OP" + type="int" + transient="false" + volatile="false" + value="3058" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_MATERIAL" + type="int" + transient="false" + volatile="false" + value="2903" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COMPRESSED_TEXTURE_FORMATS" + type="int" + transient="false" + volatile="false" + value="34467" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CONSTANT_ATTENUATION" + type="int" + transient="false" + volatile="false" + value="4615" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COPY" + type="int" + transient="false" + volatile="false" + value="5379" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COPY_INVERTED" + type="int" + transient="false" + volatile="false" + value="5388" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CULL_FACE" + type="int" + transient="false" + volatile="false" + value="2884" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CW" + type="int" + transient="false" + volatile="false" + value="2304" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DECAL" + type="int" + transient="false" + volatile="false" + value="8449" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DECR" + type="int" + transient="false" + volatile="false" + value="7683" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_BITS" + type="int" + transient="false" + volatile="false" + value="3414" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_BUFFER_BIT" + type="int" + transient="false" + volatile="false" + value="256" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_TEST" + type="int" + transient="false" + volatile="false" + value="2929" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DIFFUSE" + type="int" + transient="false" + volatile="false" + value="4609" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DITHER" + type="int" + transient="false" + volatile="false" + value="3024" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DONT_CARE" + type="int" + transient="false" + volatile="false" + value="4352" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DST_ALPHA" + type="int" + transient="false" + volatile="false" + value="772" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DST_COLOR" + type="int" + transient="false" + volatile="false" + value="774" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_EMISSION" + type="int" + transient="false" + volatile="false" + value="5632" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_EQUAL" + type="int" + transient="false" + volatile="false" + value="514" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_EQUIV" + type="int" + transient="false" + volatile="false" + value="5385" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_EXP" + type="int" + transient="false" + volatile="false" + value="2048" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_EXP2" + type="int" + transient="false" + volatile="false" + value="2049" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_EXTENSIONS" + type="int" + transient="false" + volatile="false" + value="7939" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FALSE" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FASTEST" + type="int" + transient="false" + volatile="false" + value="4353" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FIXED" + type="int" + transient="false" + volatile="false" + value="5132" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FLAT" + type="int" + transient="false" + volatile="false" + value="7424" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FLOAT" + type="int" + transient="false" + volatile="false" + value="5126" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FOG" + type="int" + transient="false" + volatile="false" + value="2912" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FOG_COLOR" + type="int" + transient="false" + volatile="false" + value="2918" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FOG_DENSITY" + type="int" + transient="false" + volatile="false" + value="2914" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FOG_END" + type="int" + transient="false" + volatile="false" + value="2916" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FOG_HINT" + type="int" + transient="false" + volatile="false" + value="3156" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FOG_MODE" + type="int" + transient="false" + volatile="false" + value="2917" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FOG_START" + type="int" + transient="false" + volatile="false" + value="2915" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRONT" + type="int" + transient="false" + volatile="false" + value="1028" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRONT_AND_BACK" + type="int" + transient="false" + volatile="false" + value="1032" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_GEQUAL" + type="int" + transient="false" + volatile="false" + value="518" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_GREATER" + type="int" + transient="false" + volatile="false" + value="516" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_GREEN_BITS" + type="int" + transient="false" + volatile="false" + value="3411" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES" + type="int" + transient="false" + volatile="false" + value="35739" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_IMPLEMENTATION_COLOR_READ_TYPE_OES" + type="int" + transient="false" + volatile="false" + value="35738" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_INCR" + type="int" + transient="false" + volatile="false" + value="7682" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_INVALID_ENUM" + type="int" + transient="false" + volatile="false" + value="1280" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_INVALID_OPERATION" + type="int" + transient="false" + volatile="false" + value="1282" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_INVALID_VALUE" + type="int" + transient="false" + volatile="false" + value="1281" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_INVERT" + type="int" + transient="false" + volatile="false" + value="5386" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_KEEP" + type="int" + transient="false" + volatile="false" + value="7680" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LEQUAL" + type="int" + transient="false" + volatile="false" + value="515" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LESS" + type="int" + transient="false" + volatile="false" + value="513" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHT0" + type="int" + transient="false" + volatile="false" + value="16384" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHT1" + type="int" + transient="false" + volatile="false" + value="16385" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHT2" + type="int" + transient="false" + volatile="false" + value="16386" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHT3" + type="int" + transient="false" + volatile="false" + value="16387" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHT4" + type="int" + transient="false" + volatile="false" + value="16388" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHT5" + type="int" + transient="false" + volatile="false" + value="16389" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHT6" + type="int" + transient="false" + volatile="false" + value="16390" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHT7" + type="int" + transient="false" + volatile="false" + value="16391" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHTING" + type="int" + transient="false" + volatile="false" + value="2896" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHT_MODEL_AMBIENT" + type="int" + transient="false" + volatile="false" + value="2899" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LIGHT_MODEL_TWO_SIDE" + type="int" + transient="false" + volatile="false" + value="2898" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LINEAR" + type="int" + transient="false" + volatile="false" + value="9729" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LINEAR_ATTENUATION" + type="int" + transient="false" + volatile="false" + value="4616" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LINEAR_MIPMAP_LINEAR" + type="int" + transient="false" + volatile="false" + value="9987" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LINEAR_MIPMAP_NEAREST" + type="int" + transient="false" + volatile="false" + value="9985" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LINES" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LINE_LOOP" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LINE_SMOOTH" + type="int" + transient="false" + volatile="false" + value="2848" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LINE_SMOOTH_HINT" + type="int" + transient="false" + volatile="false" + value="3154" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LINE_STRIP" + type="int" + transient="false" + volatile="false" + value="3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LUMINANCE" + type="int" + transient="false" + volatile="false" + value="6409" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LUMINANCE_ALPHA" + type="int" + transient="false" + volatile="false" + value="6410" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_ELEMENTS_INDICES" + type="int" + transient="false" + volatile="false" + value="33001" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_ELEMENTS_VERTICES" + type="int" + transient="false" + volatile="false" + value="33000" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_LIGHTS" + type="int" + transient="false" + volatile="false" + value="3377" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_MODELVIEW_STACK_DEPTH" + type="int" + transient="false" + volatile="false" + value="3382" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_PROJECTION_STACK_DEPTH" + type="int" + transient="false" + volatile="false" + value="3384" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_TEXTURE_SIZE" + type="int" + transient="false" + volatile="false" + value="3379" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_TEXTURE_STACK_DEPTH" + type="int" + transient="false" + volatile="false" + value="3385" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_TEXTURE_UNITS" + type="int" + transient="false" + volatile="false" + value="34018" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_VIEWPORT_DIMS" + type="int" + transient="false" + volatile="false" + value="3386" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MODELVIEW" + type="int" + transient="false" + volatile="false" + value="5888" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MODULATE" + type="int" + transient="false" + volatile="false" + value="8448" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MULTISAMPLE" + type="int" + transient="false" + volatile="false" + value="32925" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NAND" + type="int" + transient="false" + volatile="false" + value="5390" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NEAREST" + type="int" + transient="false" + volatile="false" + value="9728" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NEAREST_MIPMAP_LINEAR" + type="int" + transient="false" + volatile="false" + value="9986" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NEAREST_MIPMAP_NEAREST" + type="int" + transient="false" + volatile="false" + value="9984" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NEVER" + type="int" + transient="false" + volatile="false" + value="512" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NICEST" + type="int" + transient="false" + volatile="false" + value="4354" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NOOP" + type="int" + transient="false" + volatile="false" + value="5381" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NOR" + type="int" + transient="false" + volatile="false" + value="5384" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NORMALIZE" + type="int" + transient="false" + volatile="false" + value="2977" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NORMAL_ARRAY" + type="int" + transient="false" + volatile="false" + value="32885" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NOTEQUAL" + type="int" + transient="false" + volatile="false" + value="517" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NO_ERROR" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS" + type="int" + transient="false" + volatile="false" + value="34466" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ONE" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ONE_MINUS_DST_ALPHA" + type="int" + transient="false" + volatile="false" + value="773" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ONE_MINUS_DST_COLOR" + type="int" + transient="false" + volatile="false" + value="775" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ONE_MINUS_SRC_ALPHA" + type="int" + transient="false" + volatile="false" + value="771" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ONE_MINUS_SRC_COLOR" + type="int" + transient="false" + volatile="false" + value="769" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_OR" + type="int" + transient="false" + volatile="false" + value="5383" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_OR_INVERTED" + type="int" + transient="false" + volatile="false" + value="5389" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_OR_REVERSE" + type="int" + transient="false" + volatile="false" + value="5387" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_OUT_OF_MEMORY" + type="int" + transient="false" + volatile="false" + value="1285" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PACK_ALIGNMENT" + type="int" + transient="false" + volatile="false" + value="3333" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PALETTE4_R5_G6_B5_OES" + type="int" + transient="false" + volatile="false" + value="35730" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PALETTE4_RGB5_A1_OES" + type="int" + transient="false" + volatile="false" + value="35732" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PALETTE4_RGB8_OES" + type="int" + transient="false" + volatile="false" + value="35728" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PALETTE4_RGBA4_OES" + type="int" + transient="false" + volatile="false" + value="35731" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PALETTE4_RGBA8_OES" + type="int" + transient="false" + volatile="false" + value="35729" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PALETTE8_R5_G6_B5_OES" + type="int" + transient="false" + volatile="false" + value="35735" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PALETTE8_RGB5_A1_OES" + type="int" + transient="false" + volatile="false" + value="35737" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PALETTE8_RGB8_OES" + type="int" + transient="false" + volatile="false" + value="35733" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PALETTE8_RGBA4_OES" + type="int" + transient="false" + volatile="false" + value="35736" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PALETTE8_RGBA8_OES" + type="int" + transient="false" + volatile="false" + value="35734" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PERSPECTIVE_CORRECTION_HINT" + type="int" + transient="false" + volatile="false" + value="3152" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINTS" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_FADE_THRESHOLD_SIZE" + type="int" + transient="false" + volatile="false" + value="33064" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SIZE" + type="int" + transient="false" + volatile="false" + value="2833" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SMOOTH" + type="int" + transient="false" + volatile="false" + value="2832" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SMOOTH_HINT" + type="int" + transient="false" + volatile="false" + value="3153" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POLYGON_OFFSET_FILL" + type="int" + transient="false" + volatile="false" + value="32823" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POLYGON_SMOOTH_HINT" + type="int" + transient="false" + volatile="false" + value="3155" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POSITION" + type="int" + transient="false" + volatile="false" + value="4611" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PROJECTION" + type="int" + transient="false" + volatile="false" + value="5889" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_QUADRATIC_ATTENUATION" + type="int" + transient="false" + volatile="false" + value="4617" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RED_BITS" + type="int" + transient="false" + volatile="false" + value="3410" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERER" + type="int" + transient="false" + volatile="false" + value="7937" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_REPEAT" + type="int" + transient="false" + volatile="false" + value="10497" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_REPLACE" + type="int" + transient="false" + volatile="false" + value="7681" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RESCALE_NORMAL" + type="int" + transient="false" + volatile="false" + value="32826" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RGB" + type="int" + transient="false" + volatile="false" + value="6407" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RGBA" + type="int" + transient="false" + volatile="false" + value="6408" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SAMPLE_ALPHA_TO_COVERAGE" + type="int" + transient="false" + volatile="false" + value="32926" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SAMPLE_ALPHA_TO_ONE" + type="int" + transient="false" + volatile="false" + value="32927" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SAMPLE_COVERAGE" + type="int" + transient="false" + volatile="false" + value="32928" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SCISSOR_TEST" + type="int" + transient="false" + volatile="false" + value="3089" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SET" + type="int" + transient="false" + volatile="false" + value="5391" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SHININESS" + type="int" + transient="false" + volatile="false" + value="5633" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SHORT" + type="int" + transient="false" + volatile="false" + value="5122" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SMOOTH" + type="int" + transient="false" + volatile="false" + value="7425" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SMOOTH_LINE_WIDTH_RANGE" + type="int" + transient="false" + volatile="false" + value="2850" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SMOOTH_POINT_SIZE_RANGE" + type="int" + transient="false" + volatile="false" + value="2834" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SPECULAR" + type="int" + transient="false" + volatile="false" + value="4610" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SPOT_CUTOFF" + type="int" + transient="false" + volatile="false" + value="4614" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SPOT_DIRECTION" + type="int" + transient="false" + volatile="false" + value="4612" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SPOT_EXPONENT" + type="int" + transient="false" + volatile="false" + value="4613" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SRC_ALPHA" + type="int" + transient="false" + volatile="false" + value="770" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SRC_ALPHA_SATURATE" + type="int" + transient="false" + volatile="false" + value="776" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SRC_COLOR" + type="int" + transient="false" + volatile="false" + value="768" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STACK_OVERFLOW" + type="int" + transient="false" + volatile="false" + value="1283" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STACK_UNDERFLOW" + type="int" + transient="false" + volatile="false" + value="1284" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_BITS" + type="int" + transient="false" + volatile="false" + value="3415" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_BUFFER_BIT" + type="int" + transient="false" + volatile="false" + value="1024" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_TEST" + type="int" + transient="false" + volatile="false" + value="2960" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SUBPIXEL_BITS" + type="int" + transient="false" + volatile="false" + value="3408" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE" + type="int" + transient="false" + volatile="false" + value="5890" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE0" + type="int" + transient="false" + volatile="false" + value="33984" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE1" + type="int" + transient="false" + volatile="false" + value="33985" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE10" + type="int" + transient="false" + volatile="false" + value="33994" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE11" + type="int" + transient="false" + volatile="false" + value="33995" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE12" + type="int" + transient="false" + volatile="false" + value="33996" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE13" + type="int" + transient="false" + volatile="false" + value="33997" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE14" + type="int" + transient="false" + volatile="false" + value="33998" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE15" + type="int" + transient="false" + volatile="false" + value="33999" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE16" + type="int" + transient="false" + volatile="false" + value="34000" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE17" + type="int" + transient="false" + volatile="false" + value="34001" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE18" + type="int" + transient="false" + volatile="false" + value="34002" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE19" + type="int" + transient="false" + volatile="false" + value="34003" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE2" + type="int" + transient="false" + volatile="false" + value="33986" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE20" + type="int" + transient="false" + volatile="false" + value="34004" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE21" + type="int" + transient="false" + volatile="false" + value="34005" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE22" + type="int" + transient="false" + volatile="false" + value="34006" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE23" + type="int" + transient="false" + volatile="false" + value="34007" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE24" + type="int" + transient="false" + volatile="false" + value="34008" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE25" + type="int" + transient="false" + volatile="false" + value="34009" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE26" + type="int" + transient="false" + volatile="false" + value="34010" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE27" + type="int" + transient="false" + volatile="false" + value="34011" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE28" + type="int" + transient="false" + volatile="false" + value="34012" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE29" + type="int" + transient="false" + volatile="false" + value="34013" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE3" + type="int" + transient="false" + volatile="false" + value="33987" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE30" + type="int" + transient="false" + volatile="false" + value="34014" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE31" + type="int" + transient="false" + volatile="false" + value="34015" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE4" + type="int" + transient="false" + volatile="false" + value="33988" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE5" + type="int" + transient="false" + volatile="false" + value="33989" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE6" + type="int" + transient="false" + volatile="false" + value="33990" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE7" + type="int" + transient="false" + volatile="false" + value="33991" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE8" + type="int" + transient="false" + volatile="false" + value="33992" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE9" + type="int" + transient="false" + volatile="false" + value="33993" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_2D" + type="int" + transient="false" + volatile="false" + value="3553" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_COORD_ARRAY" + type="int" + transient="false" + volatile="false" + value="32888" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_ENV" + type="int" + transient="false" + volatile="false" + value="8960" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_ENV_COLOR" + type="int" + transient="false" + volatile="false" + value="8705" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_ENV_MODE" + type="int" + transient="false" + volatile="false" + value="8704" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_MAG_FILTER" + type="int" + transient="false" + volatile="false" + value="10240" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_MIN_FILTER" + type="int" + transient="false" + volatile="false" + value="10241" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_WRAP_S" + type="int" + transient="false" + volatile="false" + value="10242" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_WRAP_T" + type="int" + transient="false" + volatile="false" + value="10243" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TRIANGLES" + type="int" + transient="false" + volatile="false" + value="4" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TRIANGLE_FAN" + type="int" + transient="false" + volatile="false" + value="6" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TRIANGLE_STRIP" + type="int" + transient="false" + volatile="false" + value="5" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TRUE" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_UNPACK_ALIGNMENT" + type="int" + transient="false" + volatile="false" + value="3317" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_UNSIGNED_BYTE" + type="int" + transient="false" + volatile="false" + value="5121" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_UNSIGNED_SHORT" + type="int" + transient="false" + volatile="false" + value="5123" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_UNSIGNED_SHORT_4_4_4_4" + type="int" + transient="false" + volatile="false" + value="32819" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_UNSIGNED_SHORT_5_5_5_1" + type="int" + transient="false" + volatile="false" + value="32820" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_UNSIGNED_SHORT_5_6_5" + type="int" + transient="false" + volatile="false" + value="33635" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_VENDOR" + type="int" + transient="false" + volatile="false" + value="7936" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_VERSION" + type="int" + transient="false" + volatile="false" + value="7938" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_VERTEX_ARRAY" + type="int" + transient="false" + volatile="false" + value="32884" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_XOR" + type="int" + transient="false" + volatile="false" + value="5382" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ZERO" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="GLES10Ext" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="GLES10Ext" + type="android.opengl.GLES10Ext" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<method name="glQueryMatrixxOES" + return="int" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mantissa" type="int[]"> +</parameter> +<parameter name="mantissaOffset" type="int"> +</parameter> +<parameter name="exponent" type="int[]"> +</parameter> +<parameter name="exponentOffset" type="int"> +</parameter> +</method> +<method name="glQueryMatrixxOES" + return="int" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mantissa" type="java.nio.IntBuffer"> +</parameter> +<parameter name="exponent" type="java.nio.IntBuffer"> +</parameter> +</method> +</class> +<class name="GLES11" + extends="android.opengl.GLES10" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="GLES11" + type="android.opengl.GLES11" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<method name="glBindBuffer" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="buffer" type="int"> +</parameter> +</method> +<method name="glBufferData" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="size" type="int"> +</parameter> +<parameter name="data" type="java.nio.Buffer"> +</parameter> +<parameter name="usage" type="int"> +</parameter> +</method> +<method name="glBufferSubData" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +<parameter name="size" type="int"> +</parameter> +<parameter name="data" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glClipPlanef" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="plane" type="int"> +</parameter> +<parameter name="equation" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glClipPlanef" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="plane" type="int"> +</parameter> +<parameter name="equation" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glClipPlanex" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="plane" type="int"> +</parameter> +<parameter name="equation" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glClipPlanex" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="plane" type="int"> +</parameter> +<parameter name="equation" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glColor4ub" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="red" type="byte"> +</parameter> +<parameter name="green" type="byte"> +</parameter> +<parameter name="blue" type="byte"> +</parameter> +<parameter name="alpha" type="byte"> +</parameter> +</method> +<method name="glColorPointer" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glDeleteBuffers" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="buffers" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glDeleteBuffers" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="buffers" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glDrawElements" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mode" type="int"> +</parameter> +<parameter name="count" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGenBuffers" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="buffers" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGenBuffers" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="buffers" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetBooleanv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="boolean[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetBooleanv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetBufferParameteriv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetBufferParameteriv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetClipPlanef" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="eqn" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetClipPlanef" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="eqn" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glGetClipPlanex" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="eqn" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetClipPlanex" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="eqn" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetFixedv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetFixedv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetFloatv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetFloatv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glGetLightfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetLightfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glGetLightxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetLightxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetMaterialfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetMaterialfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glGetMaterialxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetMaterialxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetTexEnvfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="env" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexEnvfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="env" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glGetTexEnviv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="env" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexEnviv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="env" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetTexEnvxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="env" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexEnvxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="env" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetTexParameterfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexParameterfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glGetTexParameteriv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexParameteriv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetTexParameterxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexParameterxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glIsBuffer" + return="boolean" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="buffer" type="int"> +</parameter> +</method> +<method name="glIsEnabled" + return="boolean" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="cap" type="int"> +</parameter> +</method> +<method name="glIsTexture" + return="boolean" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="texture" type="int"> +</parameter> +</method> +<method name="glNormalPointer" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glPointParameterf" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="float"> +</parameter> +</method> +<method name="glPointParameterfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glPointParameterfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glPointParameterx" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glPointParameterxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glPointParameterxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glPointSizePointerOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="pointer" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glTexCoordPointer" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexEnvi" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glTexEnviv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexEnviv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glTexParameterfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexParameterfv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glTexParameteri" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glTexParameteriv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexParameteriv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glTexParameterxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexParameterxv" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glVertexPointer" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<field name="GL_ACTIVE_TEXTURE" + type="int" + transient="false" + volatile="false" + value="34016" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ADD_SIGNED" + type="int" + transient="false" + volatile="false" + value="34164" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ALPHA_SCALE" + type="int" + transient="false" + volatile="false" + value="3356" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ALPHA_TEST_FUNC" + type="int" + transient="false" + volatile="false" + value="3009" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ALPHA_TEST_REF" + type="int" + transient="false" + volatile="false" + value="3010" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ARRAY_BUFFER" + type="int" + transient="false" + volatile="false" + value="34962" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ARRAY_BUFFER_BINDING" + type="int" + transient="false" + volatile="false" + value="34964" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLEND_DST" + type="int" + transient="false" + volatile="false" + value="3040" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLEND_SRC" + type="int" + transient="false" + volatile="false" + value="3041" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BUFFER_ACCESS" + type="int" + transient="false" + volatile="false" + value="35003" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BUFFER_SIZE" + type="int" + transient="false" + volatile="false" + value="34660" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BUFFER_USAGE" + type="int" + transient="false" + volatile="false" + value="34661" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CLIENT_ACTIVE_TEXTURE" + type="int" + transient="false" + volatile="false" + value="34017" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CLIP_PLANE0" + type="int" + transient="false" + volatile="false" + value="12288" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CLIP_PLANE1" + type="int" + transient="false" + volatile="false" + value="12289" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CLIP_PLANE2" + type="int" + transient="false" + volatile="false" + value="12290" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CLIP_PLANE3" + type="int" + transient="false" + volatile="false" + value="12291" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CLIP_PLANE4" + type="int" + transient="false" + volatile="false" + value="12292" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CLIP_PLANE5" + type="int" + transient="false" + volatile="false" + value="12293" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_ARRAY_BUFFER_BINDING" + type="int" + transient="false" + volatile="false" + value="34968" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_ARRAY_POINTER" + type="int" + transient="false" + volatile="false" + value="32912" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_ARRAY_SIZE" + type="int" + transient="false" + volatile="false" + value="32897" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_ARRAY_STRIDE" + type="int" + transient="false" + volatile="false" + value="32899" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_ARRAY_TYPE" + type="int" + transient="false" + volatile="false" + value="32898" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_CLEAR_VALUE" + type="int" + transient="false" + volatile="false" + value="3106" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_WRITEMASK" + type="int" + transient="false" + volatile="false" + value="3107" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COMBINE" + type="int" + transient="false" + volatile="false" + value="34160" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COMBINE_ALPHA" + type="int" + transient="false" + volatile="false" + value="34162" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COMBINE_RGB" + type="int" + transient="false" + volatile="false" + value="34161" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CONSTANT" + type="int" + transient="false" + volatile="false" + value="34166" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COORD_REPLACE_OES" + type="int" + transient="false" + volatile="false" + value="34914" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CULL_FACE_MODE" + type="int" + transient="false" + volatile="false" + value="2885" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CURRENT_COLOR" + type="int" + transient="false" + volatile="false" + value="2816" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CURRENT_NORMAL" + type="int" + transient="false" + volatile="false" + value="2818" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CURRENT_TEXTURE_COORDS" + type="int" + transient="false" + volatile="false" + value="2819" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_CLEAR_VALUE" + type="int" + transient="false" + volatile="false" + value="2931" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_FUNC" + type="int" + transient="false" + volatile="false" + value="2932" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_RANGE" + type="int" + transient="false" + volatile="false" + value="2928" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_WRITEMASK" + type="int" + transient="false" + volatile="false" + value="2930" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DOT3_RGB" + type="int" + transient="false" + volatile="false" + value="34478" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DOT3_RGBA" + type="int" + transient="false" + volatile="false" + value="34479" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DYNAMIC_DRAW" + type="int" + transient="false" + volatile="false" + value="35048" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ELEMENT_ARRAY_BUFFER" + type="int" + transient="false" + volatile="false" + value="34963" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ELEMENT_ARRAY_BUFFER_BINDING" + type="int" + transient="false" + volatile="false" + value="34965" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRONT_FACE" + type="int" + transient="false" + volatile="false" + value="2886" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_GENERATE_MIPMAP" + type="int" + transient="false" + volatile="false" + value="33169" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_GENERATE_MIPMAP_HINT" + type="int" + transient="false" + volatile="false" + value="33170" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_INTERPOLATE" + type="int" + transient="false" + volatile="false" + value="34165" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LINE_WIDTH" + type="int" + transient="false" + volatile="false" + value="2849" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_LOGIC_OP_MODE" + type="int" + transient="false" + volatile="false" + value="3056" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MATRIX_MODE" + type="int" + transient="false" + volatile="false" + value="2976" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_CLIP_PLANES" + type="int" + transient="false" + volatile="false" + value="3378" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MODELVIEW_MATRIX" + type="int" + transient="false" + volatile="false" + value="2982" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" + type="int" + transient="false" + volatile="false" + value="35213" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MODELVIEW_STACK_DEPTH" + type="int" + transient="false" + volatile="false" + value="2979" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NORMAL_ARRAY_BUFFER_BINDING" + type="int" + transient="false" + volatile="false" + value="34967" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NORMAL_ARRAY_POINTER" + type="int" + transient="false" + volatile="false" + value="32911" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NORMAL_ARRAY_STRIDE" + type="int" + transient="false" + volatile="false" + value="32895" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NORMAL_ARRAY_TYPE" + type="int" + transient="false" + volatile="false" + value="32894" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_OPERAND0_ALPHA" + type="int" + transient="false" + volatile="false" + value="34200" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_OPERAND0_RGB" + type="int" + transient="false" + volatile="false" + value="34192" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_OPERAND1_ALPHA" + type="int" + transient="false" + volatile="false" + value="34201" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_OPERAND1_RGB" + type="int" + transient="false" + volatile="false" + value="34193" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_OPERAND2_ALPHA" + type="int" + transient="false" + volatile="false" + value="34202" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_OPERAND2_RGB" + type="int" + transient="false" + volatile="false" + value="34194" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_DISTANCE_ATTENUATION" + type="int" + transient="false" + volatile="false" + value="33065" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_FADE_THRESHOLD_SIZE" + type="int" + transient="false" + volatile="false" + value="33064" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SIZE" + type="int" + transient="false" + volatile="false" + value="2833" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES" + type="int" + transient="false" + volatile="false" + value="35743" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SIZE_ARRAY_OES" + type="int" + transient="false" + volatile="false" + value="35740" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SIZE_ARRAY_POINTER_OES" + type="int" + transient="false" + volatile="false" + value="35212" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SIZE_ARRAY_STRIDE_OES" + type="int" + transient="false" + volatile="false" + value="35211" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SIZE_ARRAY_TYPE_OES" + type="int" + transient="false" + volatile="false" + value="35210" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SIZE_MAX" + type="int" + transient="false" + volatile="false" + value="33063" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SIZE_MIN" + type="int" + transient="false" + volatile="false" + value="33062" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POINT_SPRITE_OES" + type="int" + transient="false" + volatile="false" + value="34913" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POLYGON_OFFSET_FACTOR" + type="int" + transient="false" + volatile="false" + value="32824" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_POLYGON_OFFSET_UNITS" + type="int" + transient="false" + volatile="false" + value="10752" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PREVIOUS" + type="int" + transient="false" + volatile="false" + value="34168" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PRIMARY_COLOR" + type="int" + transient="false" + volatile="false" + value="34167" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PROJECTION_MATRIX" + type="int" + transient="false" + volatile="false" + value="2983" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" + type="int" + transient="false" + volatile="false" + value="35214" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PROJECTION_STACK_DEPTH" + type="int" + transient="false" + volatile="false" + value="2980" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RGB_SCALE" + type="int" + transient="false" + volatile="false" + value="34163" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SAMPLES" + type="int" + transient="false" + volatile="false" + value="32937" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SAMPLE_BUFFERS" + type="int" + transient="false" + volatile="false" + value="32936" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SAMPLE_COVERAGE_INVERT" + type="int" + transient="false" + volatile="false" + value="32939" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SAMPLE_COVERAGE_VALUE" + type="int" + transient="false" + volatile="false" + value="32938" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SCISSOR_BOX" + type="int" + transient="false" + volatile="false" + value="3088" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SHADE_MODEL" + type="int" + transient="false" + volatile="false" + value="2900" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SRC0_ALPHA" + type="int" + transient="false" + volatile="false" + value="34184" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SRC0_RGB" + type="int" + transient="false" + volatile="false" + value="34176" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SRC1_ALPHA" + type="int" + transient="false" + volatile="false" + value="34185" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SRC1_RGB" + type="int" + transient="false" + volatile="false" + value="34177" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SRC2_ALPHA" + type="int" + transient="false" + volatile="false" + value="34186" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SRC2_RGB" + type="int" + transient="false" + volatile="false" + value="34178" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STATIC_DRAW" + type="int" + transient="false" + volatile="false" + value="35044" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_CLEAR_VALUE" + type="int" + transient="false" + volatile="false" + value="2961" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_FAIL" + type="int" + transient="false" + volatile="false" + value="2964" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_FUNC" + type="int" + transient="false" + volatile="false" + value="2962" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_PASS_DEPTH_FAIL" + type="int" + transient="false" + volatile="false" + value="2965" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_PASS_DEPTH_PASS" + type="int" + transient="false" + volatile="false" + value="2966" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_REF" + type="int" + transient="false" + volatile="false" + value="2967" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_VALUE_MASK" + type="int" + transient="false" + volatile="false" + value="2963" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_WRITEMASK" + type="int" + transient="false" + volatile="false" + value="2968" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_SUBTRACT" + type="int" + transient="false" + volatile="false" + value="34023" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_BINDING_2D" + type="int" + transient="false" + volatile="false" + value="32873" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING" + type="int" + transient="false" + volatile="false" + value="34970" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_COORD_ARRAY_POINTER" + type="int" + transient="false" + volatile="false" + value="32914" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_COORD_ARRAY_SIZE" + type="int" + transient="false" + volatile="false" + value="32904" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_COORD_ARRAY_STRIDE" + type="int" + transient="false" + volatile="false" + value="32906" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_COORD_ARRAY_TYPE" + type="int" + transient="false" + volatile="false" + value="32905" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_MATRIX" + type="int" + transient="false" + volatile="false" + value="2984" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" + type="int" + transient="false" + volatile="false" + value="35215" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_STACK_DEPTH" + type="int" + transient="false" + volatile="false" + value="2981" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_VERTEX_ARRAY_BUFFER_BINDING" + type="int" + transient="false" + volatile="false" + value="34966" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_VERTEX_ARRAY_POINTER" + type="int" + transient="false" + volatile="false" + value="32910" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_VERTEX_ARRAY_SIZE" + type="int" + transient="false" + volatile="false" + value="32890" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_VERTEX_ARRAY_STRIDE" + type="int" + transient="false" + volatile="false" + value="32892" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_VERTEX_ARRAY_TYPE" + type="int" + transient="false" + volatile="false" + value="32891" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_VIEWPORT" + type="int" + transient="false" + volatile="false" + value="2978" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_WRITE_ONLY" + type="int" + transient="false" + volatile="false" + value="35001" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="GLES11Ext" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="GLES11Ext" + type="android.opengl.GLES11Ext" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<method name="glAlphaFuncxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="func" type="int"> +</parameter> +<parameter name="ref" type="int"> +</parameter> +</method> +<method name="glBindFramebufferOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="framebuffer" type="int"> +</parameter> +</method> +<method name="glBindRenderbufferOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="renderbuffer" type="int"> +</parameter> +</method> +<method name="glBlendEquationOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mode" type="int"> +</parameter> +</method> +<method name="glBlendEquationSeparateOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="modeRGB" type="int"> +</parameter> +<parameter name="modeAlpha" type="int"> +</parameter> +</method> +<method name="glBlendFuncSeparateOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="srcRGB" type="int"> +</parameter> +<parameter name="dstRGB" type="int"> +</parameter> +<parameter name="srcAlpha" type="int"> +</parameter> +<parameter name="dstAlpha" type="int"> +</parameter> +</method> +<method name="glCheckFramebufferStatusOES" + return="int" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +</method> +<method name="glClearColorxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="red" type="int"> +</parameter> +<parameter name="green" type="int"> +</parameter> +<parameter name="blue" type="int"> +</parameter> +<parameter name="alpha" type="int"> +</parameter> +</method> +<method name="glClearDepthfOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="depth" type="float"> +</parameter> +</method> +<method name="glClearDepthxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="depth" type="int"> +</parameter> +</method> +<method name="glClipPlanefOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="plane" type="int"> +</parameter> +<parameter name="equation" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glClipPlanefOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="plane" type="int"> +</parameter> +<parameter name="equation" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glClipPlanexOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="plane" type="int"> +</parameter> +<parameter name="equation" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glClipPlanexOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="plane" type="int"> +</parameter> +<parameter name="equation" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glColor4xOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="red" type="int"> +</parameter> +<parameter name="green" type="int"> +</parameter> +<parameter name="blue" type="int"> +</parameter> +<parameter name="alpha" type="int"> +</parameter> +</method> +<method name="glCurrentPaletteMatrixOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="matrixpaletteindex" type="int"> +</parameter> +</method> +<method name="glDeleteFramebuffersOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="framebuffers" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glDeleteFramebuffersOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="framebuffers" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glDeleteRenderbuffersOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="renderbuffers" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glDeleteRenderbuffersOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="renderbuffers" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glDepthRangefOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="zNear" type="float"> +</parameter> +<parameter name="zFar" type="float"> +</parameter> +</method> +<method name="glDepthRangexOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="zNear" type="int"> +</parameter> +<parameter name="zFar" type="int"> +</parameter> +</method> +<method name="glDrawTexfOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="float"> +</parameter> +<parameter name="y" type="float"> +</parameter> +<parameter name="z" type="float"> +</parameter> +<parameter name="width" type="float"> +</parameter> +<parameter name="height" type="float"> +</parameter> +</method> +<method name="glDrawTexfvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coords" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glDrawTexfvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coords" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glDrawTexiOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="z" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +</method> +<method name="glDrawTexivOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coords" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glDrawTexivOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coords" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glDrawTexsOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="short"> +</parameter> +<parameter name="y" type="short"> +</parameter> +<parameter name="z" type="short"> +</parameter> +<parameter name="width" type="short"> +</parameter> +<parameter name="height" type="short"> +</parameter> +</method> +<method name="glDrawTexsvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coords" type="short[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glDrawTexsvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coords" type="java.nio.ShortBuffer"> +</parameter> +</method> +<method name="glDrawTexxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="z" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +</method> +<method name="glDrawTexxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coords" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glDrawTexxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coords" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glEGLImageTargetRenderbufferStorageOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="image" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glEGLImageTargetTexture2DOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="image" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glFogxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glFogxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glFogxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glFramebufferRenderbufferOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="attachment" type="int"> +</parameter> +<parameter name="renderbuffertarget" type="int"> +</parameter> +<parameter name="renderbuffer" type="int"> +</parameter> +</method> +<method name="glFramebufferTexture2DOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="attachment" type="int"> +</parameter> +<parameter name="textarget" type="int"> +</parameter> +<parameter name="texture" type="int"> +</parameter> +<parameter name="level" type="int"> +</parameter> +</method> +<method name="glFrustumfOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="left" type="float"> +</parameter> +<parameter name="right" type="float"> +</parameter> +<parameter name="bottom" type="float"> +</parameter> +<parameter name="top" type="float"> +</parameter> +<parameter name="zNear" type="float"> +</parameter> +<parameter name="zFar" type="float"> +</parameter> +</method> +<method name="glFrustumxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="left" type="int"> +</parameter> +<parameter name="right" type="int"> +</parameter> +<parameter name="bottom" type="int"> +</parameter> +<parameter name="top" type="int"> +</parameter> +<parameter name="zNear" type="int"> +</parameter> +<parameter name="zFar" type="int"> +</parameter> +</method> +<method name="glGenFramebuffersOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="framebuffers" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGenFramebuffersOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="framebuffers" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGenRenderbuffersOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="renderbuffers" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGenRenderbuffersOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="n" type="int"> +</parameter> +<parameter name="renderbuffers" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGenerateMipmapOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +</method> +<method name="glGetClipPlanefOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="eqn" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetClipPlanefOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="eqn" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glGetClipPlanexOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="eqn" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetClipPlanexOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="eqn" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetFixedvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetFixedvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetFramebufferAttachmentParameterivOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="attachment" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetFramebufferAttachmentParameterivOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="attachment" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetLightxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetLightxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetMaterialxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetMaterialxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetRenderbufferParameterivOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetRenderbufferParameterivOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetTexEnvxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="env" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexEnvxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="env" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetTexGenfvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexGenfvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glGetTexGenivOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexGenivOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetTexGenxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexGenxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glGetTexParameterxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glGetTexParameterxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glIsFramebufferOES" + return="boolean" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="framebuffer" type="int"> +</parameter> +</method> +<method name="glIsRenderbufferOES" + return="boolean" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="renderbuffer" type="int"> +</parameter> +</method> +<method name="glLightModelxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glLightModelxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glLightModelxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glLightxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glLightxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glLightxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="light" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glLineWidthxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="width" type="int"> +</parameter> +</method> +<method name="glLoadMatrixxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glLoadMatrixxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glLoadPaletteFromModelViewMatrixOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="glMaterialxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glMaterialxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glMaterialxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="face" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glMatrixIndexPointerOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="pointer" type="java.nio.Buffer"> +</parameter> +</method> +<method name="glMultMatrixxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glMultMatrixxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="m" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glMultiTexCoord4xOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="s" type="int"> +</parameter> +<parameter name="t" type="int"> +</parameter> +<parameter name="r" type="int"> +</parameter> +<parameter name="q" type="int"> +</parameter> +</method> +<method name="glNormal3xOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="nx" type="int"> +</parameter> +<parameter name="ny" type="int"> +</parameter> +<parameter name="nz" type="int"> +</parameter> +</method> +<method name="glOrthofOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="left" type="float"> +</parameter> +<parameter name="right" type="float"> +</parameter> +<parameter name="bottom" type="float"> +</parameter> +<parameter name="top" type="float"> +</parameter> +<parameter name="zNear" type="float"> +</parameter> +<parameter name="zFar" type="float"> +</parameter> +</method> +<method name="glOrthoxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="left" type="int"> +</parameter> +<parameter name="right" type="int"> +</parameter> +<parameter name="bottom" type="int"> +</parameter> +<parameter name="top" type="int"> +</parameter> +<parameter name="zNear" type="int"> +</parameter> +<parameter name="zFar" type="int"> +</parameter> +</method> +<method name="glPointParameterxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glPointParameterxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glPointParameterxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glPointSizexOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="int"> +</parameter> +</method> +<method name="glPolygonOffsetxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="factor" type="int"> +</parameter> +<parameter name="units" type="int"> +</parameter> +</method> +<method name="glRenderbufferStorageOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="internalformat" type="int"> +</parameter> +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +</method> +<method name="glRotatexOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="angle" type="int"> +</parameter> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="z" type="int"> +</parameter> +</method> +<method name="glSampleCoveragexOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="value" type="int"> +</parameter> +<parameter name="invert" type="boolean"> +</parameter> +</method> +<method name="glScalexOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="z" type="int"> +</parameter> +</method> +<method name="glTexEnvxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glTexEnvxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexEnvxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glTexGenfOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="float"> +</parameter> +</method> +<method name="glTexGenfvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="float[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexGenfvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.FloatBuffer"> +</parameter> +</method> +<method name="glTexGeniOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glTexGenivOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexGenivOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glTexGenxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glTexGenxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexGenxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="coord" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glTexParameterxOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="param" type="int"> +</parameter> +</method> +<method name="glTexParameterxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="int[]"> +</parameter> +<parameter name="offset" type="int"> +</parameter> +</method> +<method name="glTexParameterxvOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="target" type="int"> +</parameter> +<parameter name="pname" type="int"> +</parameter> +<parameter name="params" type="java.nio.IntBuffer"> +</parameter> +</method> +<method name="glTranslatexOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="x" type="int"> +</parameter> +<parameter name="y" type="int"> +</parameter> +<parameter name="z" type="int"> +</parameter> +</method> +<method name="glWeightPointerOES" + return="void" + abstract="false" + native="true" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="size" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="stride" type="int"> +</parameter> +<parameter name="pointer" type="java.nio.Buffer"> +</parameter> +</method> +<field name="GL_3DC_XY_AMD" + type="int" + transient="false" + volatile="false" + value="34810" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_3DC_X_AMD" + type="int" + transient="false" + volatile="false" + value="34809" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD" + type="int" + transient="false" + volatile="false" + value="35987" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD" + type="int" + transient="false" + volatile="false" + value="34798" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ATC_RGB_AMD" + type="int" + transient="false" + volatile="false" + value="35986" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BGRA" + type="int" + transient="false" + volatile="false" + value="32993" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLEND_DST_ALPHA_OES" + type="int" + transient="false" + volatile="false" + value="32970" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLEND_DST_RGB_OES" + type="int" + transient="false" + volatile="false" + value="32968" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLEND_EQUATION_ALPHA_OES" + type="int" + transient="false" + volatile="false" + value="34877" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLEND_EQUATION_OES" + type="int" + transient="false" + volatile="false" + value="32777" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLEND_EQUATION_RGB_OES" + type="int" + transient="false" + volatile="false" + value="32777" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLEND_SRC_ALPHA_OES" + type="int" + transient="false" + volatile="false" + value="32971" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BLEND_SRC_RGB_OES" + type="int" + transient="false" + volatile="false" + value="32969" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BUFFER_ACCESS_OES" + type="int" + transient="false" + volatile="false" + value="35003" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BUFFER_MAPPED_OES" + type="int" + transient="false" + volatile="false" + value="35004" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_BUFFER_MAP_POINTER_OES" + type="int" + transient="false" + volatile="false" + value="35005" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_COLOR_ATTACHMENT0_OES" + type="int" + transient="false" + volatile="false" + value="36064" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_CURRENT_PALETTE_MATRIX_OES" + type="int" + transient="false" + volatile="false" + value="34883" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DECR_WRAP_OES" + type="int" + transient="false" + volatile="false" + value="34056" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH24_STENCIL8_OES" + type="int" + transient="false" + volatile="false" + value="35056" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_ATTACHMENT_OES" + type="int" + transient="false" + volatile="false" + value="36096" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_COMPONENT16_OES" + type="int" + transient="false" + volatile="false" + value="33189" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_COMPONENT24_OES" + type="int" + transient="false" + volatile="false" + value="33190" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_COMPONENT32_OES" + type="int" + transient="false" + volatile="false" + value="33191" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_DEPTH_STENCIL_OES" + type="int" + transient="false" + volatile="false" + value="34041" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_ETC1_RGB8_OES" + type="int" + transient="false" + volatile="false" + value="36196" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FIXED_OES" + type="int" + transient="false" + volatile="false" + value="5132" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES" + type="int" + transient="false" + volatile="false" + value="36049" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES" + type="int" + transient="false" + volatile="false" + value="36048" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" + type="int" + transient="false" + volatile="false" + value="36051" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" + type="int" + transient="false" + volatile="false" + value="36050" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_BINDING_OES" + type="int" + transient="false" + volatile="false" + value="36006" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_COMPLETE_OES" + type="int" + transient="false" + volatile="false" + value="36053" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES" + type="int" + transient="false" + volatile="false" + value="36054" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES" + type="int" + transient="false" + volatile="false" + value="36057" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES" + type="int" + transient="false" + volatile="false" + value="36058" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES" + type="int" + transient="false" + volatile="false" + value="36055" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_OES" + type="int" + transient="false" + volatile="false" + value="36160" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FRAMEBUFFER_UNSUPPORTED_OES" + type="int" + transient="false" + volatile="false" + value="36061" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FUNC_ADD_OES" + type="int" + transient="false" + volatile="false" + value="32774" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FUNC_REVERSE_SUBTRACT_OES" + type="int" + transient="false" + volatile="false" + value="32779" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_FUNC_SUBTRACT_OES" + type="int" + transient="false" + volatile="false" + value="32778" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_INCR_WRAP_OES" + type="int" + transient="false" + volatile="false" + value="34055" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_INVALID_FRAMEBUFFER_OPERATION_OES" + type="int" + transient="false" + volatile="false" + value="1286" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES" + type="int" + transient="false" + volatile="false" + value="35742" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MATRIX_INDEX_ARRAY_OES" + type="int" + transient="false" + volatile="false" + value="34884" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MATRIX_INDEX_ARRAY_POINTER_OES" + type="int" + transient="false" + volatile="false" + value="34889" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MATRIX_INDEX_ARRAY_SIZE_OES" + type="int" + transient="false" + volatile="false" + value="34886" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MATRIX_INDEX_ARRAY_STRIDE_OES" + type="int" + transient="false" + volatile="false" + value="34888" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MATRIX_INDEX_ARRAY_TYPE_OES" + type="int" + transient="false" + volatile="false" + value="34887" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MATRIX_PALETTE_OES" + type="int" + transient="false" + volatile="false" + value="34880" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES" + type="int" + transient="false" + volatile="false" + value="34076" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_PALETTE_MATRICES_OES" + type="int" + transient="false" + volatile="false" + value="34882" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_RENDERBUFFER_SIZE_OES" + type="int" + transient="false" + volatile="false" + value="34024" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT" + type="int" + transient="false" + volatile="false" + value="34047" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MAX_VERTEX_UNITS_OES" + type="int" + transient="false" + volatile="false" + value="34468" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MIRRORED_REPEAT_OES" + type="int" + transient="false" + volatile="false" + value="33648" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" + type="int" + transient="false" + volatile="false" + value="35213" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NONE_OES" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_NORMAL_MAP_OES" + type="int" + transient="false" + volatile="false" + value="34065" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" + type="int" + transient="false" + volatile="false" + value="35214" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_REFLECTION_MAP_OES" + type="int" + transient="false" + volatile="false" + value="34066" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_ALPHA_SIZE_OES" + type="int" + transient="false" + volatile="false" + value="36179" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_BINDING_OES" + type="int" + transient="false" + volatile="false" + value="36007" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_BLUE_SIZE_OES" + type="int" + transient="false" + volatile="false" + value="36178" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_DEPTH_SIZE_OES" + type="int" + transient="false" + volatile="false" + value="36180" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_GREEN_SIZE_OES" + type="int" + transient="false" + volatile="false" + value="36177" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_HEIGHT_OES" + type="int" + transient="false" + volatile="false" + value="36163" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_INTERNAL_FORMAT_OES" + type="int" + transient="false" + volatile="false" + value="36164" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_OES" + type="int" + transient="false" + volatile="false" + value="36161" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_RED_SIZE_OES" + type="int" + transient="false" + volatile="false" + value="36176" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_STENCIL_SIZE_OES" + type="int" + transient="false" + volatile="false" + value="36181" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RENDERBUFFER_WIDTH_OES" + type="int" + transient="false" + volatile="false" + value="36162" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RGB565_OES" + type="int" + transient="false" + volatile="false" + value="36194" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RGB5_A1_OES" + type="int" + transient="false" + volatile="false" + value="32855" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RGB8_OES" + type="int" + transient="false" + volatile="false" + value="32849" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RGBA4_OES" + type="int" + transient="false" + volatile="false" + value="32854" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_RGBA8_OES" + type="int" + transient="false" + volatile="false" + value="32856" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_ATTACHMENT_OES" + type="int" + transient="false" + volatile="false" + value="36128" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_INDEX1_OES" + type="int" + transient="false" + volatile="false" + value="36166" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_INDEX4_OES" + type="int" + transient="false" + volatile="false" + value="36167" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_STENCIL_INDEX8_OES" + type="int" + transient="false" + volatile="false" + value="36168" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_BINDING_CUBE_MAP_OES" + type="int" + transient="false" + volatile="false" + value="34068" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_CROP_RECT_OES" + type="int" + transient="false" + volatile="false" + value="35741" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" + type="int" + transient="false" + volatile="false" + value="34070" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" + type="int" + transient="false" + volatile="false" + value="34072" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" + type="int" + transient="false" + volatile="false" + value="34074" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_CUBE_MAP_OES" + type="int" + transient="false" + volatile="false" + value="34067" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" + type="int" + transient="false" + volatile="false" + value="34069" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" + type="int" + transient="false" + volatile="false" + value="34071" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" + type="int" + transient="false" + volatile="false" + value="34073" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_GEN_MODE_OES" + type="int" + transient="false" + volatile="false" + value="9472" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_GEN_STR_OES" + type="int" + transient="false" + volatile="false" + value="36192" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" + type="int" + transient="false" + volatile="false" + value="35215" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_TEXTURE_MAX_ANISOTROPY_EXT" + type="int" + transient="false" + volatile="false" + value="34046" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_UNSIGNED_INT_24_8_OES" + type="int" + transient="false" + volatile="false" + value="34042" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_WEIGHT_ARRAY_BUFFER_BINDING_OES" + type="int" + transient="false" + volatile="false" + value="34974" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_WEIGHT_ARRAY_OES" + type="int" + transient="false" + volatile="false" + value="34477" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_WEIGHT_ARRAY_POINTER_OES" + type="int" + transient="false" + volatile="false" + value="34476" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_WEIGHT_ARRAY_SIZE_OES" + type="int" + transient="false" + volatile="false" + value="34475" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_WEIGHT_ARRAY_STRIDE_OES" + type="int" + transient="false" + volatile="false" + value="34474" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_WEIGHT_ARRAY_TYPE_OES" + type="int" + transient="false" + volatile="false" + value="34473" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="GL_WRITE_ONLY_OES" + type="int" + transient="false" + volatile="false" + value="35001" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> <class name="GLException" extends="java.lang.RuntimeException" abstract="false" @@ -74570,6 +89761,16 @@ visibility="public" > </field> +<field name="CPU_ABI" + type="java.lang.String" + transient="false" + volatile="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="DEVICE" type="java.lang.String" transient="false" @@ -74620,6 +89821,16 @@ visibility="public" > </field> +<field name="MANUFACTURER" + type="java.lang.String" + transient="false" + volatile="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="MODEL" type="java.lang.String" transient="false" @@ -74697,6 +89908,16 @@ visibility="public" > </constructor> +<field name="CODENAME" + type="java.lang.String" + transient="false" + volatile="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="INCREMENTAL" type="java.lang.String" transient="false" @@ -74723,6 +89944,88 @@ volatile="false" static="true" final="true" + deprecated="deprecated" + visibility="public" +> +</field> +<field name="SDK_INT" + type="int" + transient="false" + volatile="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="Build.VERSION_CODES" + extends="java.lang.Object" + abstract="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="Build.VERSION_CODES" + type="android.os.Build.VERSION_CODES" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<field name="BASE" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="BASE_1_1" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="CUPCAKE" + type="int" + transient="false" + volatile="false" + value="3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="CUR_DEVELOPMENT" + type="int" + transient="false" + volatile="false" + value="10000" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="DONUT" + type="int" + transient="false" + volatile="false" + value="4" + static="true" + final="true" deprecated="not deprecated" visibility="public" > @@ -78173,6 +93476,8 @@ </parameter> <parameter name="length" type="int"> </parameter> +<exception name="IOException" type="java.io.IOException"> +</exception> </constructor> <method name="allowPurging" return="boolean" @@ -81191,6 +96496,19 @@ visibility="public" > </method> +<method name="getBroadcastCookie" + return="java.lang.Object" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="index" type="int"> +</parameter> +</method> <method name="getBroadcastItem" return="E" abstract="false" @@ -81228,6 +96546,21 @@ <parameter name="callback" type="E"> </parameter> </method> +<method name="onCallbackDied" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="callback" type="E"> +</parameter> +<parameter name="cookie" type="java.lang.Object"> +</parameter> +</method> <method name="register" return="boolean" abstract="false" @@ -81241,6 +96574,21 @@ <parameter name="callback" type="E"> </parameter> </method> +<method name="register" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="callback" type="E"> +</parameter> +<parameter name="cookie" type="java.lang.Object"> +</parameter> +</method> <method name="unregister" return="boolean" abstract="false" @@ -90877,6 +106225,17 @@ <parameter name="value" type="java.lang.String"> </parameter> </method> +<field name="ACCESSIBILITY_ENABLED" + type="java.lang.String" + transient="false" + volatile="false" + value=""accessibility_enabled"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="ADB_ENABLED" type="java.lang.String" transient="false" @@ -90975,6 +106334,17 @@ visibility="public" > </field> +<field name="ENABLED_ACCESSIBILITY_SERVICES" + type="java.lang.String" + transient="false" + volatile="false" + value=""enabled_accessibility_services"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="ENABLED_INPUT_METHODS" type="java.lang.String" transient="false" @@ -91096,6 +106466,83 @@ visibility="public" > </field> +<field name="TTS_DEFAULT_COUNTRY" + type="java.lang.String" + transient="false" + volatile="false" + value=""tts_default_country"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TTS_DEFAULT_LANG" + type="java.lang.String" + transient="false" + volatile="false" + value=""tts_default_lang"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TTS_DEFAULT_PITCH" + type="java.lang.String" + transient="false" + volatile="false" + value=""tts_default_pitch"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TTS_DEFAULT_RATE" + type="java.lang.String" + transient="false" + volatile="false" + value=""tts_default_rate"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TTS_DEFAULT_SYNTH" + type="java.lang.String" + transient="false" + volatile="false" + value=""tts_default_synth"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TTS_DEFAULT_VARIANT" + type="java.lang.String" + transient="false" + volatile="false" + value=""tts_default_variant"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TTS_USE_DEFAULTS" + type="java.lang.String" + transient="false" + volatile="false" + value=""tts_use_defaults"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="USB_MASS_STORAGE_ENABLED" type="java.lang.String" transient="false" @@ -92144,6 +107591,17 @@ visibility="public" > </field> +<field name="SHOW_WEB_SUGGESTIONS" + type="java.lang.String" + transient="false" + volatile="false" + value=""show_web_suggestions"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="SOUND_EFFECTS_ENABLED" type="java.lang.String" transient="false" @@ -93329,6 +108787,605 @@ </field> </class> </package> +<package name="android.speech.tts" +> +<class name="TextToSpeech" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="TextToSpeech" + type="android.speech.tts.TextToSpeech" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +<parameter name="listener" type="android.speech.tts.TextToSpeech.OnInitListener"> +</parameter> +</constructor> +<method name="addEarcon" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="earcon" type="java.lang.String"> +</parameter> +<parameter name="packagename" type="java.lang.String"> +</parameter> +<parameter name="resourceId" type="int"> +</parameter> +</method> +<method name="addEarcon" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="earcon" type="java.lang.String"> +</parameter> +<parameter name="filename" type="java.lang.String"> +</parameter> +</method> +<method name="addSpeech" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="text" type="java.lang.String"> +</parameter> +<parameter name="packagename" type="java.lang.String"> +</parameter> +<parameter name="resourceId" type="int"> +</parameter> +</method> +<method name="addSpeech" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="text" type="java.lang.String"> +</parameter> +<parameter name="filename" type="java.lang.String"> +</parameter> +</method> +<method name="getLanguage" + return="java.util.Locale" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isLanguageAvailable" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="loc" type="java.util.Locale"> +</parameter> +</method> +<method name="isSpeaking" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="playEarcon" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="earcon" type="java.lang.String"> +</parameter> +<parameter name="queueMode" type="int"> +</parameter> +<parameter name="params" type="java.util.HashMap<java.lang.String, java.lang.String>"> +</parameter> +</method> +<method name="playSilence" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="durationInMs" type="long"> +</parameter> +<parameter name="queueMode" type="int"> +</parameter> +<parameter name="params" type="java.util.HashMap<java.lang.String, java.lang.String>"> +</parameter> +</method> +<method name="setLanguage" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="loc" type="java.util.Locale"> +</parameter> +</method> +<method name="setOnUtteranceCompletedListener" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="listener" type="android.speech.tts.TextToSpeech.OnUtteranceCompletedListener"> +</parameter> +</method> +<method name="setPitch" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pitch" type="float"> +</parameter> +</method> +<method name="setSpeechRate" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="speechRate" type="float"> +</parameter> +</method> +<method name="shutdown" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="speak" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="text" type="java.lang.String"> +</parameter> +<parameter name="queueMode" type="int"> +</parameter> +<parameter name="params" type="java.util.HashMap<java.lang.String, java.lang.String>"> +</parameter> +</method> +<method name="stop" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="synthesizeToFile" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="text" type="java.lang.String"> +</parameter> +<parameter name="params" type="java.util.HashMap<java.lang.String, java.lang.String>"> +</parameter> +<parameter name="filename" type="java.lang.String"> +</parameter> +</method> +<field name="ACTION_TTS_QUEUE_PROCESSING_COMPLETED" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.speech.tts.TTS_QUEUE_PROCESSING_COMPLETED"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ERROR" + type="int" + transient="false" + volatile="false" + value="-1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="LANG_AVAILABLE" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="LANG_COUNTRY_AVAILABLE" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="LANG_COUNTRY_VAR_AVAILABLE" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="LANG_MISSING_DATA" + type="int" + transient="false" + volatile="false" + value="-1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="LANG_NOT_SUPPORTED" + type="int" + transient="false" + volatile="false" + value="-2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="QUEUE_ADD" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="QUEUE_FLUSH" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SUCCESS" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="TextToSpeech.Engine" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<constructor name="TextToSpeech.Engine" + type="android.speech.tts.TextToSpeech.Engine" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<field name="ACTION_CHECK_TTS_DATA" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.speech.tts.engine.CHECK_TTS_DATA"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ACTION_INSTALL_TTS_DATA" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.speech.tts.engine.INSTALL_TTS_DATA"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ACTION_TTS_DATA_INSTALLED" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.speech.tts.engine.TTS_DATA_INSTALLED"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="CHECK_VOICE_DATA_BAD_DATA" + type="int" + transient="false" + volatile="false" + value="-1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="CHECK_VOICE_DATA_FAIL" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="CHECK_VOICE_DATA_MISSING_DATA" + type="int" + transient="false" + volatile="false" + value="-2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="CHECK_VOICE_DATA_MISSING_VOLUME" + type="int" + transient="false" + volatile="false" + value="-3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="CHECK_VOICE_DATA_PASS" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="DEFAULT_STREAM" + type="int" + transient="false" + volatile="false" + value="3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="EXTRA_TTS_DATA_INSTALLED" + type="java.lang.String" + transient="false" + volatile="false" + value=""dataInstalled"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="EXTRA_VOICE_DATA_FILES" + type="java.lang.String" + transient="false" + volatile="false" + value=""dataFiles"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="EXTRA_VOICE_DATA_FILES_INFO" + type="java.lang.String" + transient="false" + volatile="false" + value=""dataFilesInfo"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="EXTRA_VOICE_DATA_ROOT_DIRECTORY" + type="java.lang.String" + transient="false" + volatile="false" + value=""dataRoot"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="KEY_PARAM_STREAM" + type="java.lang.String" + transient="false" + volatile="false" + value=""streamType"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="KEY_PARAM_UTTERANCE_ID" + type="java.lang.String" + transient="false" + volatile="false" + value=""utteranceId"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<interface name="TextToSpeech.OnInitListener" + abstract="true" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="onInit" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="status" type="int"> +</parameter> +</method> +</interface> +<interface name="TextToSpeech.OnUtteranceCompletedListener" + abstract="true" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="onUtteranceCompleted" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="utteranceId" type="java.lang.String"> +</parameter> +</method> +</interface> +</package> <package name="android.telephony" > <class name="CellLocation" @@ -94583,6 +110640,746 @@ > </field> </class> +<class name="SmsManager" + extends="java.lang.Object" + abstract="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +<method name="divideMessage" + return="java.util.ArrayList<java.lang.String>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="text" type="java.lang.String"> +</parameter> +</method> +<method name="getDefault" + return="android.telephony.SmsManager" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="sendDataMessage" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="destinationAddress" type="java.lang.String"> +</parameter> +<parameter name="scAddress" type="java.lang.String"> +</parameter> +<parameter name="destinationPort" type="short"> +</parameter> +<parameter name="data" type="byte[]"> +</parameter> +<parameter name="sentIntent" type="android.app.PendingIntent"> +</parameter> +<parameter name="deliveryIntent" type="android.app.PendingIntent"> +</parameter> +</method> +<method name="sendMultipartTextMessage" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="destinationAddress" type="java.lang.String"> +</parameter> +<parameter name="scAddress" type="java.lang.String"> +</parameter> +<parameter name="parts" type="java.util.ArrayList<java.lang.String>"> +</parameter> +<parameter name="sentIntents" type="java.util.ArrayList<android.app.PendingIntent>"> +</parameter> +<parameter name="deliveryIntents" type="java.util.ArrayList<android.app.PendingIntent>"> +</parameter> +</method> +<method name="sendTextMessage" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="destinationAddress" type="java.lang.String"> +</parameter> +<parameter name="scAddress" type="java.lang.String"> +</parameter> +<parameter name="text" type="java.lang.String"> +</parameter> +<parameter name="sentIntent" type="android.app.PendingIntent"> +</parameter> +<parameter name="deliveryIntent" type="android.app.PendingIntent"> +</parameter> +</method> +<field name="RESULT_ERROR_GENERIC_FAILURE" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="RESULT_ERROR_NO_SERVICE" + type="int" + transient="false" + volatile="false" + value="4" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="RESULT_ERROR_NULL_PDU" + type="int" + transient="false" + volatile="false" + value="3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="RESULT_ERROR_RADIO_OFF" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="STATUS_ON_ICC_FREE" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="STATUS_ON_ICC_READ" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="STATUS_ON_ICC_SENT" + type="int" + transient="false" + volatile="false" + value="5" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="STATUS_ON_ICC_UNREAD" + type="int" + transient="false" + volatile="false" + value="3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="STATUS_ON_ICC_UNSENT" + type="int" + transient="false" + volatile="false" + value="7" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="SmsMessage" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="calculateLength" + return="int[]" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="msgBody" type="java.lang.CharSequence"> +</parameter> +<parameter name="use7bitOnly" type="boolean"> +</parameter> +</method> +<method name="calculateLength" + return="int[]" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="messageBody" type="java.lang.String"> +</parameter> +<parameter name="use7bitOnly" type="boolean"> +</parameter> +</method> +<method name="createFromPdu" + return="android.telephony.SmsMessage" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pdu" type="byte[]"> +</parameter> +</method> +<method name="getDisplayMessageBody" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getDisplayOriginatingAddress" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getEmailBody" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getEmailFrom" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getIndexOnIcc" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getIndexOnSim" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="deprecated" + visibility="public" +> +</method> +<method name="getMessageBody" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getMessageClass" + return="android.telephony.SmsMessage.MessageClass" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getOriginatingAddress" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getPdu" + return="byte[]" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getProtocolIdentifier" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getPseudoSubject" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getServiceCenterAddress" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getStatus" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getStatusOnIcc" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getStatusOnSim" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="deprecated" + visibility="public" +> +</method> +<method name="getSubmitPdu" + return="android.telephony.SmsMessage.SubmitPdu" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="scAddress" type="java.lang.String"> +</parameter> +<parameter name="destinationAddress" type="java.lang.String"> +</parameter> +<parameter name="message" type="java.lang.String"> +</parameter> +<parameter name="statusReportRequested" type="boolean"> +</parameter> +</method> +<method name="getSubmitPdu" + return="android.telephony.SmsMessage.SubmitPdu" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="scAddress" type="java.lang.String"> +</parameter> +<parameter name="destinationAddress" type="java.lang.String"> +</parameter> +<parameter name="destinationPort" type="short"> +</parameter> +<parameter name="data" type="byte[]"> +</parameter> +<parameter name="statusReportRequested" type="boolean"> +</parameter> +</method> +<method name="getTPLayerLengthForPDU" + return="int" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="pdu" type="java.lang.String"> +</parameter> +</method> +<method name="getTimestampMillis" + return="long" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getUserData" + return="byte[]" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isCphsMwiMessage" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isEmail" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isMWIClearMessage" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isMWISetMessage" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isMwiDontStore" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isReplace" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isReplyPathPresent" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isStatusReportMessage" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<field name="ENCODING_16BIT" + type="int" + transient="false" + volatile="false" + value="3" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ENCODING_7BIT" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ENCODING_8BIT" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ENCODING_UNKNOWN" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="MAX_USER_DATA_BYTES" + type="int" + transient="false" + volatile="false" + value="140" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="MAX_USER_DATA_BYTES_WITH_HEADER" + type="int" + transient="false" + volatile="false" + value="134" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="MAX_USER_DATA_SEPTETS" + type="int" + transient="false" + volatile="false" + value="160" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="MAX_USER_DATA_SEPTETS_WITH_HEADER" + type="int" + transient="false" + volatile="false" + value="153" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<class name="SmsMessage.MessageClass" + extends="java.lang.Enum" + abstract="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +<method name="valueOf" + return="android.telephony.SmsMessage.MessageClass" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="name" type="java.lang.String"> +</parameter> +</method> +<method name="values" + return="android.telephony.SmsMessage.MessageClass[]" + abstract="false" + native="false" + synchronized="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</method> +</class> +<class name="SmsMessage.SubmitPdu" + extends="java.lang.Object" + abstract="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<field name="encodedMessage" + type="byte[]" + transient="false" + volatile="false" + value="null" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="encodedScAddress" + type="byte[]" + transient="false" + volatile="false" + value="null" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> <class name="TelephonyManager" extends="java.lang.Object" abstract="false" @@ -95261,7 +112058,7 @@ abstract="false" static="false" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <method name="divideMessage" @@ -95270,8 +112067,8 @@ native="false" synchronized="false" static="false" - final="false" - deprecated="not deprecated" + final="true" + deprecated="deprecated" visibility="public" > <parameter name="text" type="java.lang.String"> @@ -95283,8 +112080,8 @@ native="false" synchronized="false" static="true" - final="false" - deprecated="not deprecated" + final="true" + deprecated="deprecated" visibility="public" > </method> @@ -95294,8 +112091,8 @@ native="false" synchronized="false" static="false" - final="false" - deprecated="not deprecated" + final="true" + deprecated="deprecated" visibility="public" > <parameter name="destinationAddress" type="java.lang.String"> @@ -95317,8 +112114,8 @@ native="false" synchronized="false" static="false" - final="false" - deprecated="not deprecated" + final="true" + deprecated="deprecated" visibility="public" > <parameter name="destinationAddress" type="java.lang.String"> @@ -95338,8 +112135,8 @@ native="false" synchronized="false" static="false" - final="false" - deprecated="not deprecated" + final="true" + deprecated="deprecated" visibility="public" > <parameter name="destinationAddress" type="java.lang.String"> @@ -95360,7 +112157,7 @@ value="1" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95371,7 +112168,7 @@ value="4" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95382,7 +112179,7 @@ value="3" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95393,7 +112190,7 @@ value="2" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95404,7 +112201,7 @@ value="0" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95415,7 +112212,7 @@ value="1" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95426,7 +112223,7 @@ value="5" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95437,7 +112234,7 @@ value="3" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95448,7 +112245,7 @@ value="7" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95458,14 +112255,14 @@ abstract="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <constructor name="SmsMessage" type="android.telephony.gsm.SmsMessage" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </constructor> @@ -95476,7 +112273,7 @@ synchronized="false" static="true" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="messageBody" type="java.lang.CharSequence"> @@ -95491,7 +112288,7 @@ synchronized="false" static="true" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="messageBody" type="java.lang.String"> @@ -95506,7 +112303,7 @@ synchronized="false" static="true" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="pdu" type="byte[]"> @@ -95519,7 +112316,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95530,7 +112327,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95541,7 +112338,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95552,7 +112349,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95563,7 +112360,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95574,7 +112371,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95585,7 +112382,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95596,7 +112393,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95607,7 +112404,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95618,7 +112415,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95629,7 +112426,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95640,7 +112437,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95651,7 +112448,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95662,7 +112459,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95673,7 +112470,7 @@ synchronized="false" static="true" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="scAddress" type="java.lang.String"> @@ -95692,7 +112489,7 @@ synchronized="false" static="true" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="scAddress" type="java.lang.String"> @@ -95713,7 +112510,7 @@ synchronized="false" static="true" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <parameter name="pdu" type="java.lang.String"> @@ -95726,7 +112523,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95737,7 +112534,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95748,7 +112545,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95759,7 +112556,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95770,7 +112567,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95781,7 +112578,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95792,7 +112589,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95803,7 +112600,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95814,7 +112611,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95825,7 +112622,7 @@ synchronized="false" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </method> @@ -95836,7 +112633,7 @@ value="3" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95847,7 +112644,7 @@ value="1" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95858,7 +112655,7 @@ value="2" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95869,7 +112666,7 @@ value="0" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95880,7 +112677,7 @@ value="140" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95891,7 +112688,7 @@ value="160" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95902,7 +112699,7 @@ value="153" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95912,7 +112709,7 @@ abstract="false" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <method name="valueOf" @@ -95945,14 +112742,14 @@ abstract="false" static="true" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > <constructor name="SmsMessage.SubmitPdu" type="android.telephony.gsm.SmsMessage.SubmitPdu" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </constructor> @@ -95963,7 +112760,7 @@ value="null" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -95974,7 +112771,7 @@ value="null" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -96299,6 +113096,53 @@ visibility="public" > </constructor> +<method name="assertActivityRequiresPermission" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="packageName" type="java.lang.String"> +</parameter> +<parameter name="className" type="java.lang.String"> +</parameter> +<parameter name="permission" type="java.lang.String"> +</parameter> +</method> +<method name="assertReadingContentUriRequiresPermission" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="uri" type="android.net.Uri"> +</parameter> +<parameter name="permission" type="java.lang.String"> +</parameter> +</method> +<method name="assertWritingContentUriRequiresPermission" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="uri" type="android.net.Uri"> +</parameter> +<parameter name="permission" type="java.lang.String"> +</parameter> +</method> <method name="getContext" return="android.content.Context" abstract="false" @@ -99539,6 +116383,17 @@ visibility="public" > </method> +<method name="getApplicationInfo" + return="android.content.pm.ApplicationInfo" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getAssets" return="android.content.res.AssetManager" abstract="false" @@ -100491,8 +117346,6 @@ > <parameter name="packageName" type="java.lang.String"> </parameter> -<exception name="PackageManager.NameNotFoundException" type="android.content.pm.PackageManager.NameNotFoundException"> -</exception> </method> <method name="getNameForUid" return="java.lang.String" @@ -111700,9 +128553,33 @@ type="android.text.style.ImageSpan" static="false" final="false" + deprecated="deprecated" + visibility="public" +> +<parameter name="b" type="android.graphics.Bitmap"> +</parameter> +</constructor> +<constructor name="ImageSpan" + type="android.text.style.ImageSpan" + static="false" + final="false" + deprecated="deprecated" + visibility="public" +> +<parameter name="b" type="android.graphics.Bitmap"> +</parameter> +<parameter name="verticalAlignment" type="int"> +</parameter> +</constructor> +<constructor name="ImageSpan" + type="android.text.style.ImageSpan" + static="false" + final="false" deprecated="not deprecated" visibility="public" > +<parameter name="context" type="android.content.Context"> +</parameter> <parameter name="b" type="android.graphics.Bitmap"> </parameter> </constructor> @@ -111713,6 +128590,8 @@ deprecated="not deprecated" visibility="public" > +<parameter name="context" type="android.content.Context"> +</parameter> <parameter name="b" type="android.graphics.Bitmap"> </parameter> <parameter name="verticalAlignment" type="int"> @@ -114493,7 +131372,7 @@ value="true" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -114504,7 +131383,7 @@ value="false" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -114515,7 +131394,7 @@ value="false" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -114525,7 +131404,7 @@ volatile="false" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -114600,6 +131479,50 @@ visibility="public" > </method> +<field name="DENSITY_DEFAULT" + type="int" + transient="false" + volatile="false" + value="160" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="DENSITY_HIGH" + type="int" + transient="false" + volatile="false" + value="240" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="DENSITY_LOW" + type="int" + transient="false" + volatile="false" + value="120" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="DENSITY_MEDIUM" + type="int" + transient="false" + volatile="false" + value="160" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="density" type="float" transient="false" @@ -114610,6 +131533,16 @@ visibility="public" > </field> +<field name="densityDpi" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="heightPixels" type="int" transient="false" @@ -116649,6 +133582,28 @@ visibility="public" > </field> +<field name="DENSITY_DEFAULT" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="DENSITY_NONE" + type="int" + transient="false" + volatile="false" + value="65535" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="TYPE_ATTRIBUTE" type="int" transient="false" @@ -116877,6 +133832,16 @@ visibility="public" > </field> +<field name="density" + type="int" + transient="false" + volatile="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="resourceId" type="int" transient="false" @@ -122981,7 +139946,7 @@ value="2" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -123007,6 +139972,17 @@ visibility="public" > </field> +<field name="SURFACE_FROZEN" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="SURFACE_HIDDEN" type="int" transient="false" @@ -123531,6 +140507,21 @@ <parameter name="units" type="int"> </parameter> </method> +<method name="computeCurrentVelocity" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="units" type="int"> +</parameter> +<parameter name="maxVelocity" type="float"> +</parameter> +</method> <method name="getXVelocity" return="float" abstract="false" @@ -123584,6 +140575,8 @@ deprecated="not deprecated" visibility="public" > +<implements name="android.view.accessibility.AccessibilityEventSource"> +</implements> <implements name="android.graphics.drawable.Drawable.Callback"> </implements> <implements name="android.view.KeyEvent.Callback"> @@ -123639,6 +140632,23 @@ <parameter name="direction" type="int"> </parameter> </method> +<method name="addFocusables" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="views" type="java.util.ArrayList<android.view.View>"> +</parameter> +<parameter name="direction" type="int"> +</parameter> +<parameter name="focusableMode" type="int"> +</parameter> +</method> <method name="addTouchables" return="void" abstract="false" @@ -123674,6 +140684,19 @@ visibility="public" > </method> +<method name="buildDrawingCache" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="autoScale" type="boolean"> +</parameter> +</method> <method name="cancelLongPress" return="void" abstract="false" @@ -123873,6 +140896,19 @@ <parameter name="event" type="android.view.KeyEvent"> </parameter> </method> +<method name="dispatchPopulateAccessibilityEvent" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="event" type="android.view.accessibility.AccessibilityEvent"> +</parameter> +</method> <method name="dispatchRestoreInstanceState" return="void" abstract="false" @@ -124167,6 +141203,17 @@ visibility="protected" > </method> +<method name="getContentDescription" + return="java.lang.CharSequence" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getContext" return="android.content.Context" abstract="false" @@ -124226,6 +141273,19 @@ visibility="public" > </method> +<method name="getDrawingCache" + return="android.graphics.Bitmap" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="autoScale" type="boolean"> +</parameter> +</method> <method name="getDrawingCacheBackgroundColor" return="int" abstract="false" @@ -124752,6 +141812,19 @@ visibility="public" > </method> +<method name="getTag" + return="java.lang.Object" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="key" type="int"> +</parameter> +</method> <method name="getTop" return="int" abstract="false" @@ -126110,6 +143183,32 @@ <parameter name="y" type="int"> </parameter> </method> +<method name="sendAccessibilityEvent" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="eventType" type="int"> +</parameter> +</method> +<method name="sendAccessibilityEventUnchecked" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="event" type="android.view.accessibility.AccessibilityEvent"> +</parameter> +</method> <method name="setAnimation" return="void" abstract="false" @@ -126175,6 +143274,19 @@ <parameter name="clickable" type="boolean"> </parameter> </method> +<method name="setContentDescription" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="contentDescription" type="java.lang.CharSequence"> +</parameter> +</method> <method name="setDrawingCacheBackgroundColor" return="void" abstract="false" @@ -126651,6 +143763,21 @@ <parameter name="tag" type="java.lang.Object"> </parameter> </method> +<method name="setTag" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="key" type="int"> +</parameter> +<parameter name="tag" type="java.lang.Object"> +</parameter> +</method> <method name="setTouchDelegate" return="void" abstract="false" @@ -126948,6 +144075,28 @@ visibility="protected" > </field> +<field name="FOCUSABLES_ALL" + type="int" + transient="false" + volatile="false" + value="0" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="FOCUSABLES_TOUCH_MODE" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="FOCUSED_SELECTED_STATE_SET" type="int[]" transient="false" @@ -127776,6 +144925,17 @@ visibility="public" > </method> +<method name="getMaximumFlingVelocity" + return="int" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="deprecated" + visibility="public" +> +</method> <method name="getMinimumFlingVelocity" return="int" abstract="false" @@ -127842,6 +145002,17 @@ visibility="public" > </method> +<method name="getScaledMaximumFlingVelocity" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getScaledMinimumFlingVelocity" return="int" abstract="false" @@ -128113,6 +145284,17 @@ <implements name="java.lang.annotation.Annotation"> </implements> </class> +<class name="ViewDebug.FlagToString" + extends="java.lang.Object" + abstract="true" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<implements name="java.lang.annotation.Annotation"> +</implements> +</class> <class name="ViewDebug.HierarchyTraceType" extends="java.lang.Enum" abstract="false" @@ -131629,6 +148811,19 @@ <parameter name="event" type="android.view.KeyEvent"> </parameter> </method> +<method name="dispatchPopulateAccessibilityEvent" + return="boolean" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="event" type="android.view.accessibility.AccessibilityEvent"> +</parameter> +</method> <method name="dispatchTouchEvent" return="boolean" abstract="true" @@ -133053,6 +150248,698 @@ </field> </class> </package> +<package name="android.view.accessibility" +> +<class name="AccessibilityEvent" + extends="java.lang.Object" + abstract="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +<implements name="android.os.Parcelable"> +</implements> +<method name="describeContents" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getAddedCount" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getBeforeText" + return="java.lang.CharSequence" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getClassName" + return="java.lang.CharSequence" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getContentDescription" + return="java.lang.CharSequence" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getCurrentItemIndex" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getEventTime" + return="long" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getEventType" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getFromIndex" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getItemCount" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getPackageName" + return="java.lang.CharSequence" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getParcelableData" + return="android.os.Parcelable" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getRemovedCount" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getText" + return="java.util.List<java.lang.CharSequence>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="initFromParcel" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="parcel" type="android.os.Parcel"> +</parameter> +</method> +<method name="isChecked" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isEnabled" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isFullScreen" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isPassword" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="obtain" + return="android.view.accessibility.AccessibilityEvent" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="eventType" type="int"> +</parameter> +</method> +<method name="obtain" + return="android.view.accessibility.AccessibilityEvent" + abstract="false" + native="false" + synchronized="false" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="recycle" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="setAddedCount" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="addedCount" type="int"> +</parameter> +</method> +<method name="setBeforeText" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="beforeText" type="java.lang.CharSequence"> +</parameter> +</method> +<method name="setChecked" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="isChecked" type="boolean"> +</parameter> +</method> +<method name="setClassName" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="className" type="java.lang.CharSequence"> +</parameter> +</method> +<method name="setContentDescription" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="contentDescription" type="java.lang.CharSequence"> +</parameter> +</method> +<method name="setCurrentItemIndex" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="currentItemIndex" type="int"> +</parameter> +</method> +<method name="setEnabled" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="isEnabled" type="boolean"> +</parameter> +</method> +<method name="setEventTime" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="eventTime" type="long"> +</parameter> +</method> +<method name="setEventType" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="eventType" type="int"> +</parameter> +</method> +<method name="setFromIndex" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="fromIndex" type="int"> +</parameter> +</method> +<method name="setFullScreen" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="isFullScreen" type="boolean"> +</parameter> +</method> +<method name="setItemCount" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="itemCount" type="int"> +</parameter> +</method> +<method name="setPackageName" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="packageName" type="java.lang.CharSequence"> +</parameter> +</method> +<method name="setParcelableData" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="parcelableData" type="android.os.Parcelable"> +</parameter> +</method> +<method name="setPassword" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="isPassword" type="boolean"> +</parameter> +</method> +<method name="setRemovedCount" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="removedCount" type="int"> +</parameter> +</method> +<method name="writeToParcel" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="parcel" type="android.os.Parcel"> +</parameter> +<parameter name="flags" type="int"> +</parameter> +</method> +<field name="CREATOR" + type="android.os.Parcelable.Creator" + transient="false" + volatile="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="INVALID_POSITION" + type="int" + transient="false" + volatile="false" + value="-1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="MAX_TEXT_LENGTH" + type="int" + transient="false" + volatile="false" + value="500" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TYPES_ALL_MASK" + type="int" + transient="false" + volatile="false" + value="-1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TYPE_NOTIFICATION_STATE_CHANGED" + type="int" + transient="false" + volatile="false" + value="64" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TYPE_VIEW_CLICKED" + type="int" + transient="false" + volatile="false" + value="1" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TYPE_VIEW_FOCUSED" + type="int" + transient="false" + volatile="false" + value="8" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TYPE_VIEW_LONG_CLICKED" + type="int" + transient="false" + volatile="false" + value="2" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TYPE_VIEW_SELECTED" + type="int" + transient="false" + volatile="false" + value="4" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TYPE_VIEW_TEXT_CHANGED" + type="int" + transient="false" + volatile="false" + value="16" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="TYPE_WINDOW_STATE_CHANGED" + type="int" + transient="false" + volatile="false" + value="32" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +</class> +<interface name="AccessibilityEventSource" + abstract="true" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="sendAccessibilityEvent" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="eventType" type="int"> +</parameter> +</method> +<method name="sendAccessibilityEventUnchecked" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="event" type="android.view.accessibility.AccessibilityEvent"> +</parameter> +</method> +</interface> +<class name="AccessibilityManager" + extends="java.lang.Object" + abstract="false" + static="false" + final="true" + deprecated="not deprecated" + visibility="public" +> +<method name="getAccessibilityServiceList" + return="java.util.List<android.content.pm.ServiceInfo>" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="interrupt" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isEnabled" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="sendAccessibilityEvent" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="event" type="android.view.accessibility.AccessibilityEvent"> +</parameter> +</method> +</class> +</package> <package name="android.view.animation" > <class name="AccelerateDecelerateInterpolator" @@ -134060,6 +151947,170 @@ </parameter> </method> </class> +<class name="AnticipateInterpolator" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<implements name="android.view.animation.Interpolator"> +</implements> +<constructor name="AnticipateInterpolator" + type="android.view.animation.AnticipateInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<constructor name="AnticipateInterpolator" + type="android.view.animation.AnticipateInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="tension" type="float"> +</parameter> +</constructor> +<constructor name="AnticipateInterpolator" + type="android.view.animation.AnticipateInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +<parameter name="attrs" type="android.util.AttributeSet"> +</parameter> +</constructor> +<method name="getInterpolation" + return="float" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="t" type="float"> +</parameter> +</method> +</class> +<class name="AnticipateOvershootInterpolator" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<implements name="android.view.animation.Interpolator"> +</implements> +<constructor name="AnticipateOvershootInterpolator" + type="android.view.animation.AnticipateOvershootInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<constructor name="AnticipateOvershootInterpolator" + type="android.view.animation.AnticipateOvershootInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="tension" type="float"> +</parameter> +</constructor> +<constructor name="AnticipateOvershootInterpolator" + type="android.view.animation.AnticipateOvershootInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="tension" type="float"> +</parameter> +<parameter name="extraTension" type="float"> +</parameter> +</constructor> +<constructor name="AnticipateOvershootInterpolator" + type="android.view.animation.AnticipateOvershootInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +<parameter name="attrs" type="android.util.AttributeSet"> +</parameter> +</constructor> +<method name="getInterpolation" + return="float" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="t" type="float"> +</parameter> +</method> +</class> +<class name="BounceInterpolator" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<implements name="android.view.animation.Interpolator"> +</implements> +<constructor name="BounceInterpolator" + type="android.view.animation.BounceInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<constructor name="BounceInterpolator" + type="android.view.animation.BounceInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +<parameter name="attrs" type="android.util.AttributeSet"> +</parameter> +</constructor> +<method name="getInterpolation" + return="float" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="t" type="float"> +</parameter> +</method> +</class> <class name="CycleInterpolator" extends="java.lang.Object" abstract="false" @@ -134863,6 +152914,60 @@ </parameter> </method> </class> +<class name="OvershootInterpolator" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<implements name="android.view.animation.Interpolator"> +</implements> +<constructor name="OvershootInterpolator" + type="android.view.animation.OvershootInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<constructor name="OvershootInterpolator" + type="android.view.animation.OvershootInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="tension" type="float"> +</parameter> +</constructor> +<constructor name="OvershootInterpolator" + type="android.view.animation.OvershootInterpolator" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="context" type="android.content.Context"> +</parameter> +<parameter name="attrs" type="android.util.AttributeSet"> +</parameter> +</constructor> +<method name="getInterpolation" + return="float" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="t" type="float"> +</parameter> +</method> +</class> <class name="RotateAnimation" extends="android.view.animation.Animation" abstract="false" @@ -145410,6 +163515,17 @@ visibility="public" > </method> +<method name="getDropDownHeight" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getDropDownWidth" return="int" abstract="false" @@ -145633,6 +163749,19 @@ <parameter name="id" type="int"> </parameter> </method> +<method name="setDropDownHeight" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="height" type="int"> +</parameter> +</method> <method name="setDropDownWidth" return="void" abstract="false" @@ -146191,7 +164320,7 @@ </interface> <class name="CheckedTextView" extends="android.widget.TextView" - abstract="true" + abstract="false" static="false" final="false" deprecated="not deprecated" @@ -150874,6 +169003,17 @@ visibility="public" > </method> +<method name="getCheckItemIds" + return="long[]" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getCheckedItemPosition" return="int" abstract="false" @@ -151854,6 +169994,17 @@ <parameter name="yOffset" type="int"> </parameter> </method> +<method name="getSoftInputMode" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getWidth" return="int" abstract="false" @@ -152059,6 +170210,19 @@ <parameter name="touchable" type="boolean"> </parameter> </method> +<method name="setSoftInputMode" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mode" type="int"> +</parameter> +</method> <method name="setTouchInterceptor" return="void" abstract="false" @@ -152183,6 +170347,21 @@ deprecated="not deprecated" visibility="public" > +<parameter name="width" type="int"> +</parameter> +<parameter name="height" type="int"> +</parameter> +</method> +<method name="update" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> <parameter name="x" type="int"> </parameter> <parameter name="y" type="int"> @@ -156273,6 +174452,17 @@ deprecated="not deprecated" visibility="public" > +<method name="getTag" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="setContent" return="android.widget.TabHost.TabSpec" abstract="false" @@ -156340,6 +174530,19 @@ <parameter name="icon" type="android.graphics.drawable.Drawable"> </parameter> </method> +<method name="setIndicator" + return="android.widget.TabHost.TabSpec" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="view" type="android.view.View"> +</parameter> +</method> </class> <class name="TabWidget" extends="android.widget.LinearLayout" @@ -156413,6 +174616,30 @@ <parameter name="index" type="int"> </parameter> </method> +<method name="getChildTabViewAt" + return="android.view.View" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="index" type="int"> +</parameter> +</method> +<method name="getTabCount" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="onFocusChange" return="void" abstract="false" @@ -156441,6 +174668,32 @@ <parameter name="index" type="int"> </parameter> </method> +<method name="setDividerDrawable" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="drawable" type="android.graphics.drawable.Drawable"> +</parameter> +</method> +<method name="setDividerDrawable" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="resId" type="int"> +</parameter> +</method> </class> <class name="TableLayout" extends="android.widget.LinearLayout" @@ -160156,6 +178409,211 @@ </parameter> </method> </class> +<class name="ZoomButtonsController" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<implements name="android.view.View.OnTouchListener"> +</implements> +<constructor name="ZoomButtonsController" + type="android.widget.ZoomButtonsController" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="ownerView" type="android.view.View"> +</parameter> +</constructor> +<method name="getContainer" + return="android.view.ViewGroup" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getZoomControls" + return="android.view.View" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isAutoDismissed" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isVisible" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="onTouch" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="v" type="android.view.View"> +</parameter> +<parameter name="event" type="android.view.MotionEvent"> +</parameter> +</method> +<method name="setAutoDismissed" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="autoDismiss" type="boolean"> +</parameter> +</method> +<method name="setFocusable" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="focusable" type="boolean"> +</parameter> +</method> +<method name="setOnZoomListener" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="listener" type="android.widget.ZoomButtonsController.OnZoomListener"> +</parameter> +</method> +<method name="setVisible" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="visible" type="boolean"> +</parameter> +</method> +<method name="setZoomInEnabled" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="enabled" type="boolean"> +</parameter> +</method> +<method name="setZoomOutEnabled" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="enabled" type="boolean"> +</parameter> +</method> +<method name="setZoomSpeed" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="speed" type="long"> +</parameter> +</method> +</class> +<interface name="ZoomButtonsController.OnZoomListener" + abstract="true" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="onVisibilityChanged" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="visible" type="boolean"> +</parameter> +</method> +<method name="onZoom" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="zoomIn" type="boolean"> +</parameter> +</method> +</interface> <class name="ZoomControls" extends="android.widget.LinearLayout" abstract="false" @@ -163702,7 +182160,7 @@ <method name="startMethodTracing" return="void" abstract="false" - native="true" + native="false" synchronized="false" static="true" final="false" diff --git a/api/current.xml b/api/current.xml index b17cbe7..55d9105 100644 --- a/api/current.xml +++ b/api/current.xml @@ -1438,237 +1438,6 @@ visibility="public" > </field> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="17432608" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="17432599" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="17432598" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="17432597" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad13" - type="int" - transient="false" - volatile="false" - value="17432596" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad14" - type="int" - transient="false" - volatile="false" - value="17432595" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad15" - type="int" - transient="false" - volatile="false" - value="17432594" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad16" - type="int" - transient="false" - volatile="false" - value="17432593" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad17" - type="int" - transient="false" - volatile="false" - value="17432592" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad18" - type="int" - transient="false" - volatile="false" - value="17432591" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad19" - type="int" - transient="false" - volatile="false" - value="17432590" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="17432607" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad20" - type="int" - transient="false" - volatile="false" - value="17432589" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad21" - type="int" - transient="false" - volatile="false" - value="17432588" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="17432606" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="17432605" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="17432604" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="17432603" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="17432602" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="17432601" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="17432600" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="fade_in" type="int" transient="false" @@ -1752,138 +1521,6 @@ visibility="public" > </constructor> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="17235984" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="17235975" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="17235974" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="17235973" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="17235983" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="17235982" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="17235981" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="17235980" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="17235979" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="17235978" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="17235977" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="17235976" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="emailAddressTypes" type="int" transient="false" @@ -3254,204 +2891,6 @@ visibility="public" > </field> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="16843423" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="16843414" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="16843413" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="16843412" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad13" - type="int" - transient="false" - volatile="false" - value="16843411" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad14" - type="int" - transient="false" - volatile="false" - value="16843410" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad15" - type="int" - transient="false" - volatile="false" - value="16843409" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad16" - type="int" - transient="false" - volatile="false" - value="16843408" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad17" - type="int" - transient="false" - volatile="false" - value="16843407" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad18" - type="int" - transient="false" - volatile="false" - value="16843406" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="16843422" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="16843421" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="16843420" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="16843419" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="16843418" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="16843417" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="16843416" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="16843415" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="drawSelectorOnTop" type="int" transient="false" @@ -4684,17 +4123,6 @@ visibility="public" > </field> -<field name="includeInGlobalSearch" - type="int" - transient="false" - volatile="false" - value="16843374" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="indeterminate" type="int" transient="false" @@ -6763,17 +6191,6 @@ visibility="public" > </field> -<field name="queryAfterZeroResults" - type="int" - transient="false" - volatile="false" - value="16843394" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="radioButtonStyle" type="int" transient="false" @@ -7269,17 +6686,6 @@ visibility="public" > </field> -<field name="searchSettingsDescription" - type="int" - transient="false" - volatile="false" - value="16843402" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="searchSuggestAuthority" type="int" transient="false" @@ -7335,17 +6741,6 @@ visibility="public" > </field> -<field name="searchSuggestThreshold" - type="int" - transient="false" - volatile="false" - value="16843373" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="secondaryProgress" type="int" transient="false" @@ -9415,347 +8810,6 @@ visibility="public" > </field> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="17170480" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="17170471" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="17170470" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="17170469" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad13" - type="int" - transient="false" - volatile="false" - value="17170468" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad14" - type="int" - transient="false" - volatile="false" - value="17170467" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad15" - type="int" - transient="false" - volatile="false" - value="17170466" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad16" - type="int" - transient="false" - volatile="false" - value="17170465" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad17" - type="int" - transient="false" - volatile="false" - value="17170464" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad18" - type="int" - transient="false" - volatile="false" - value="17170463" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad19" - type="int" - transient="false" - volatile="false" - value="17170462" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="17170479" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad20" - type="int" - transient="false" - volatile="false" - value="17170461" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad21" - type="int" - transient="false" - volatile="false" - value="17170460" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad22" - type="int" - transient="false" - volatile="false" - value="17170459" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad23" - type="int" - transient="false" - volatile="false" - value="17170458" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad24" - type="int" - transient="false" - volatile="false" - value="17170457" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad25" - type="int" - transient="false" - volatile="false" - value="17170456" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad26" - type="int" - transient="false" - volatile="false" - value="17170455" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad27" - type="int" - transient="false" - volatile="false" - value="17170454" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad28" - type="int" - transient="false" - volatile="false" - value="17170453" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad29" - type="int" - transient="false" - volatile="false" - value="17170452" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="17170478" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad30" - type="int" - transient="false" - volatile="false" - value="17170451" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad31" - type="int" - transient="false" - volatile="false" - value="17170450" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="17170477" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="17170476" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="17170475" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="17170474" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="17170473" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="17170472" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="primary_text_dark" type="int" transient="false" @@ -9938,160 +8992,6 @@ visibility="public" > </field> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="17104912" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="17104903" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="17104902" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="17104901" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad13" - type="int" - transient="false" - volatile="false" - value="17104900" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad14" - type="int" - transient="false" - volatile="false" - value="17104899" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="17104911" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="17104910" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="17104909" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="17104908" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="17104907" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="17104906" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="17104905" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="17104904" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="thumbnail_height" type="int" transient="false" @@ -10406,446 +9306,6 @@ visibility="public" > </field> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="17301712" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="17301703" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="17301702" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="17301701" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad13" - type="int" - transient="false" - volatile="false" - value="17301700" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad14" - type="int" - transient="false" - volatile="false" - value="17301699" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad15" - type="int" - transient="false" - volatile="false" - value="17301698" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad16" - type="int" - transient="false" - volatile="false" - value="17301697" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad17" - type="int" - transient="false" - volatile="false" - value="17301696" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad18" - type="int" - transient="false" - volatile="false" - value="17301695" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad19" - type="int" - transient="false" - volatile="false" - value="17301694" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="17301711" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad20" - type="int" - transient="false" - volatile="false" - value="17301693" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad21" - type="int" - transient="false" - volatile="false" - value="17301692" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad22" - type="int" - transient="false" - volatile="false" - value="17301691" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad23" - type="int" - transient="false" - volatile="false" - value="17301690" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad24" - type="int" - transient="false" - volatile="false" - value="17301689" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad25" - type="int" - transient="false" - volatile="false" - value="17301688" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad26" - type="int" - transient="false" - volatile="false" - value="17301687" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad27" - type="int" - transient="false" - volatile="false" - value="17301686" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad28" - type="int" - transient="false" - volatile="false" - value="17301685" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad29" - type="int" - transient="false" - volatile="false" - value="17301684" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="17301710" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad30" - type="int" - transient="false" - volatile="false" - value="17301683" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad31" - type="int" - transient="false" - volatile="false" - value="17301682" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad32" - type="int" - transient="false" - volatile="false" - value="17301681" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad33" - type="int" - transient="false" - volatile="false" - value="17301680" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad34" - type="int" - transient="false" - volatile="false" - value="17301679" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad35" - type="int" - transient="false" - volatile="false" - value="17301678" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad36" - type="int" - transient="false" - volatile="false" - value="17301677" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad37" - type="int" - transient="false" - volatile="false" - value="17301676" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad38" - type="int" - transient="false" - volatile="false" - value="17301675" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad39" - type="int" - transient="false" - volatile="false" - value="17301674" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="17301709" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad40" - type="int" - transient="false" - volatile="false" - value="17301673" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="17301708" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="17301707" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="17301706" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="17301705" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="17301704" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="edit_text" type="int" transient="false" @@ -12513,248 +10973,6 @@ visibility="public" > </field> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="16908352" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="16908343" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="16908342" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="16908341" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad13" - type="int" - transient="false" - volatile="false" - value="16908340" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad14" - type="int" - transient="false" - volatile="false" - value="16908339" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad15" - type="int" - transient="false" - volatile="false" - value="16908338" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad16" - type="int" - transient="false" - volatile="false" - value="16908337" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad17" - type="int" - transient="false" - volatile="false" - value="16908336" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad18" - type="int" - transient="false" - volatile="false" - value="16908335" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad19" - type="int" - transient="false" - volatile="false" - value="16908334" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="16908351" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad20" - type="int" - transient="false" - volatile="false" - value="16908333" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad21" - type="int" - transient="false" - volatile="false" - value="16908332" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad22" - type="int" - transient="false" - volatile="false" - value="16908331" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="16908350" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="16908349" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="16908348" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="16908347" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="16908346" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="16908345" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="16908344" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="edit" type="int" transient="false" @@ -13146,160 +11364,6 @@ visibility="public" > </field> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="17694736" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="17694727" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="17694726" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="17694725" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad13" - type="int" - transient="false" - volatile="false" - value="17694724" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad14" - type="int" - transient="false" - volatile="false" - value="17694723" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="17694735" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="17694734" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="17694733" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="17694732" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="17694731" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="17694730" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="17694729" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="17694728" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> </class> <class name="R.layout" extends="java.lang.Object" @@ -13339,149 +11403,6 @@ visibility="public" > </field> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="17367072" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="17367063" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="17367062" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="17367061" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad13" - type="int" - transient="false" - volatile="false" - value="17367060" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="17367071" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="17367070" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="17367069" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="17367068" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="17367067" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="17367066" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="17367065" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="17367064" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="expandable_list_content" type="int" transient="false" @@ -13852,303 +11773,6 @@ visibility="public" > </field> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="17039408" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="17039399" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="17039398" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="17039397" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad13" - type="int" - transient="false" - volatile="false" - value="17039396" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad14" - type="int" - transient="false" - volatile="false" - value="17039395" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad15" - type="int" - transient="false" - volatile="false" - value="17039394" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad16" - type="int" - transient="false" - volatile="false" - value="17039393" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad17" - type="int" - transient="false" - volatile="false" - value="17039392" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad18" - type="int" - transient="false" - volatile="false" - value="17039391" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad19" - type="int" - transient="false" - volatile="false" - value="17039390" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="17039407" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad20" - type="int" - transient="false" - volatile="false" - value="17039389" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad21" - type="int" - transient="false" - volatile="false" - value="17039388" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad22" - type="int" - transient="false" - volatile="false" - value="17039387" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad23" - type="int" - transient="false" - volatile="false" - value="17039386" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad24" - type="int" - transient="false" - volatile="false" - value="17039385" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad25" - type="int" - transient="false" - volatile="false" - value="17039384" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad26" - type="int" - transient="false" - volatile="false" - value="17039383" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad27" - type="int" - transient="false" - volatile="false" - value="17039382" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="17039406" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="17039405" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="17039404" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="17039403" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="17039402" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="17039401" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="17039400" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="emptyPhoneNumber" type="int" transient="false" @@ -15299,215 +12923,6 @@ visibility="public" > </field> -<field name="donut_resource_pad1" - type="int" - transient="false" - volatile="false" - value="16973936" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad10" - type="int" - transient="false" - volatile="false" - value="16973927" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad11" - type="int" - transient="false" - volatile="false" - value="16973926" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad12" - type="int" - transient="false" - volatile="false" - value="16973925" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad13" - type="int" - transient="false" - volatile="false" - value="16973924" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad14" - type="int" - transient="false" - volatile="false" - value="16973923" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad15" - type="int" - transient="false" - volatile="false" - value="16973922" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad16" - type="int" - transient="false" - volatile="false" - value="16973921" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad17" - type="int" - transient="false" - volatile="false" - value="16973920" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad18" - type="int" - transient="false" - volatile="false" - value="16973919" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad19" - type="int" - transient="false" - volatile="false" - value="16973918" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad2" - type="int" - transient="false" - volatile="false" - value="16973935" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad3" - type="int" - transient="false" - volatile="false" - value="16973934" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad4" - type="int" - transient="false" - volatile="false" - value="16973933" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad5" - type="int" - transient="false" - volatile="false" - value="16973932" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad6" - type="int" - transient="false" - volatile="false" - value="16973931" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad7" - type="int" - transient="false" - volatile="false" - value="16973930" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad8" - type="int" - transient="false" - volatile="false" - value="16973929" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="donut_resource_pad9" - type="int" - transient="false" - volatile="false" - value="16973928" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> </class> <class name="R.xml" extends="java.lang.Object" @@ -23743,17 +21158,6 @@ visibility="public" > </field> -<field name="INTENT_ACTION_WEB_SEARCH_SETTINGS" - type="java.lang.String" - transient="false" - volatile="false" - value=""android.search.action.WEB_SEARCH_SETTINGS"" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="MENU_KEY" type="char" transient="false" @@ -23787,17 +21191,6 @@ visibility="public" > </field> -<field name="SHORTCUT_MIME_TYPE" - type="java.lang.String" - transient="false" - volatile="false" - value=""vnd.android.cursor.item/vnd.android.search.suggest"" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="SUGGEST_COLUMN_FORMAT" type="java.lang.String" transient="false" @@ -23886,28 +21279,6 @@ visibility="public" > </field> -<field name="SUGGEST_COLUMN_SHORTCUT_ID" - type="java.lang.String" - transient="false" - volatile="false" - value=""suggest_shortcut_id"" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING" - type="java.lang.String" - transient="false" - volatile="false" - value=""suggest_spinner_while_refreshing"" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="SUGGEST_COLUMN_TEXT_1" type="java.lang.String" transient="false" @@ -23941,17 +21312,6 @@ visibility="public" > </field> -<field name="SUGGEST_NEVER_MAKE_SHORTCUT" - type="java.lang.String" - transient="false" - volatile="false" - value=""_-1"" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="SUGGEST_URI_PATH_QUERY" type="java.lang.String" transient="false" @@ -23963,17 +21323,6 @@ visibility="public" > </field> -<field name="SUGGEST_URI_PATH_SHORTCUT" - type="java.lang.String" - transient="false" - volatile="false" - value=""search_suggest_shortcut"" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> <field name="USER_QUERY" type="java.lang.String" transient="false" @@ -92674,7 +90023,7 @@ type="int" transient="false" volatile="false" - value="10000" + value="4" static="true" final="true" deprecated="not deprecated" @@ -111850,6 +109199,17 @@ visibility="public" > </field> +<field name="ACTION_TTS_DATA_INSTALLED" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.speech.tts.engine.TTS_DATA_INSTALLED"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="CHECK_VOICE_DATA_BAD_DATA" type="int" transient="false" @@ -111916,6 +109276,17 @@ visibility="public" > </field> +<field name="EXTRA_TTS_DATA_INSTALLED" + type="java.lang.String" + transient="false" + volatile="false" + value=""dataInstalled"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="EXTRA_VOICE_DATA_FILES" type="java.lang.String" transient="false" @@ -181038,6 +178409,211 @@ </parameter> </method> </class> +<class name="ZoomButtonsController" + extends="java.lang.Object" + abstract="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<implements name="android.view.View.OnTouchListener"> +</implements> +<constructor name="ZoomButtonsController" + type="android.widget.ZoomButtonsController" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="ownerView" type="android.view.View"> +</parameter> +</constructor> +<method name="getContainer" + return="android.view.ViewGroup" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getZoomControls" + return="android.view.View" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isAutoDismissed" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isVisible" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="onTouch" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="v" type="android.view.View"> +</parameter> +<parameter name="event" type="android.view.MotionEvent"> +</parameter> +</method> +<method name="setAutoDismissed" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="autoDismiss" type="boolean"> +</parameter> +</method> +<method name="setFocusable" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="focusable" type="boolean"> +</parameter> +</method> +<method name="setOnZoomListener" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="listener" type="android.widget.ZoomButtonsController.OnZoomListener"> +</parameter> +</method> +<method name="setVisible" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="visible" type="boolean"> +</parameter> +</method> +<method name="setZoomInEnabled" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="enabled" type="boolean"> +</parameter> +</method> +<method name="setZoomOutEnabled" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="enabled" type="boolean"> +</parameter> +</method> +<method name="setZoomSpeed" + return="void" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="speed" type="long"> +</parameter> +</method> +</class> +<interface name="ZoomButtonsController.OnZoomListener" + abstract="true" + static="true" + final="false" + deprecated="not deprecated" + visibility="public" +> +<method name="onVisibilityChanged" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="visible" type="boolean"> +</parameter> +</method> +<method name="onZoom" + return="void" + abstract="true" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="zoomIn" type="boolean"> +</parameter> +</method> +</interface> <class name="ZoomControls" extends="android.widget.LinearLayout" abstract="false" diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 4ac3b9e..f2905a7 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -2521,7 +2521,7 @@ public class Activity extends ContextThemeWrapper * no extra data is required. * @param globalSearch If false, this will only launch the search that has been specifically * defined by the application (which is usually defined as a local search). If no default - * search is defined in the current application or activity, no search will be launched. + * search is defined in the current application or activity, global search will be launched. * If true, this will always launch a platform-global (e.g. web-based) search instead. * * @see android.app.SearchManager diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 32a2891..e045105 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -1701,6 +1701,14 @@ public final class ActivityThread { printRow(pw, TWO_COUNT_COLUMNS, "numPagers:", stats.numPagers, "inactivePageKB:", (stats.totalBytes - stats.referencedBytes) / 1024); printRow(pw, ONE_COUNT_COLUMN, "activePageKB:", stats.referencedBytes / 1024); + + // Asset details. + String assetAlloc = AssetManager.getAssetAllocations(); + if (assetAlloc != null) { + pw.println(" "); + pw.println(" Asset Allocations"); + pw.print(assetAlloc); + } } private void printRow(PrintWriter pw, String format, Object...objs) { diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java index 70aceeb..5844079 100644 --- a/core/java/android/app/SearchDialog.java +++ b/core/java/android/app/SearchDialog.java @@ -67,6 +67,7 @@ import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; +import android.widget.ListAdapter; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; @@ -427,7 +428,7 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS mSearchAutoComplete.setAdapter((SuggestionsAdapter)null); // close any leftover cursor if (mSuggestionsAdapter != null) { - mSuggestionsAdapter.changeCursor(null); + mSuggestionsAdapter.close(); } mSuggestionsAdapter = null; } @@ -1743,7 +1744,14 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS } // If the drop-down obscures the keyboard, the user wouldn't see anything // happening when pressing back, so we dismiss the entire dialog instead. - if (isInputMethodNotNeeded()) { + // + // also: if there is no text entered, we also want to dismiss the whole dialog, + // not just the soft keyboard. the exception to this is if there are shortcuts + // that aren't displayed (e.g are being obscured by the soft keyboard); in that + // case we want to dismiss the soft keyboard so the user can see the rest of the + // shortcuts. + if (isInputMethodNotNeeded() || + (isEmpty() && getDropDownChildCount() >= getAdapterCount())) { mSearchDialog.cancel(); return true; } @@ -1751,6 +1759,11 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS } return false; } + + private int getAdapterCount() { + final ListAdapter adapter = getAdapter(); + return adapter == null ? 0 : adapter.getCount(); + } } protected boolean handleBackKey(int keyCode, KeyEvent event) { diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java index fd559d6..62faadc 100644 --- a/core/java/android/app/SearchManager.java +++ b/core/java/android/app/SearchManager.java @@ -40,7 +40,7 @@ import java.util.List; * methods and the the {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} * {@link android.content.Intent Intent}. This class does provide a basic * overview of search services and how to integrate them with your activities. - * If you do require direct access to the Search Manager, do not instantiate + * If you do require direct access to the SearchManager, do not instantiate * this class directly; instead, retrieve it through * {@link android.content.Context#getSystemService * context.getSystemService(Context.SEARCH_SERVICE)}. @@ -49,8 +49,7 @@ import java.util.List; * <ol> * <li><a href="#DeveloperGuide">Developer Guide</a> * <li><a href="#HowSearchIsInvoked">How Search Is Invoked</a> - * <li><a href="#QuerySearchApplications">Query-Search Applications</a> - * <li><a href="#FilterSearchApplications">Filter-Search Applications</a> + * <li><a href="#ImplementingSearchForYourApp">Implementing Search for Your App</a> * <li><a href="#Suggestions">Search Suggestions</a> * <li><a href="#ActionKeys">Action Keys</a> * <li><a href="#SearchabilityMetadata">Searchability Metadata</a> @@ -62,37 +61,18 @@ import java.util.List; * <h3>Developer Guide</h3> * * <p>The ability to search for user, system, or network based data is considered to be - * a core user-level feature of the android platform. At any time, the user should be + * a core user-level feature of the Android platform. At any time, the user should be * able to use a familiar command, button, or keystroke to invoke search, and the user - * should be able to search any data which is available to them. The goal is to make search - * appear to the user as a seamless, system-wide feature. + * should be able to search any data which is available to them. * - * <p>In terms of implementation, there are three broad classes of Applications: - * <ol> - * <li>Applications that are not inherently searchable</li> - * <li>Query-Search Applications</li> - * <li>Filter-Search Applications</li> - * </ol> - * <p>These categories, as well as related topics, are discussed in - * the sections below. + * <p>To make search appear to the user as a seamless system-wide feature, the application + * framework centrally controls it, offering APIs to individual applications to control how they + * are searched. Applications can customize how search is invoked, how the search dialog looks, + * and what type of search results are available, including suggestions that are available as the + * user types. * - * <p>Even if your application is not <i>searchable</i>, it can still support the invocation of - * search. Please review the section <a href="#HowSearchIsInvoked">How Search Is Invoked</a> - * for more information on how to support this. - * - * <p>Many applications are <i>searchable</i>. These are - * the applications which can convert a query string into a list of results. - * Within this subset, applications can be grouped loosely into two families: - * <ul><li><i>Query Search</i> applications perform batch-mode searches - each query string is - * converted to a list of results.</li> - * <li><i>Filter Search</i> applications provide live filter-as-you-type searches.</li></ul> - * <p>Generally speaking, you would use query search for network-based data, and filter - * search for local data, but this is not a hard requirement and applications - * are free to use the model that fits them best (or invent a new model). - * <p>It should be clear that the search implementation decouples "search - * invocation" from "searchable". This satisfies the goal of making search appear - * to be "universal". The user should be able to launch any search from - * almost any context. + * <p>Even applications which are not searchable will by default support the invocation of + * search to trigger Quick Search Box, the system's 'global search'. * * <a name="HowSearchIsInvoked"></a> * <h3>How Search Is Invoked</h3> @@ -100,14 +80,15 @@ import java.util.List; * <p>Unless impossible or inapplicable, all applications should support * invoking the search UI. This means that when the user invokes the search command, * a search UI will be presented to them. The search command is currently defined as a menu - * item called "Search" (with an alphabetic shortcut key of "S"), or on some devices, a dedicated + * item called "Search" (with an alphabetic shortcut key of "S"), or on many devices, a dedicated * search button key. - * <p>If your application is not inherently searchable, you can also allow the search UI - * to be invoked in a "web search" mode. If the user enters a search term and clicks the - * "Search" button, this will bring the browser to the front and will launch a web-based + * <p>If your application is not inherently searchable, the default implementation will cause + * the search UI to be invoked in a "global search" mode known as Quick Search Box. As the user + * types, search suggestions from across the device and the web will be surfaced, and if they + * click the "Search" button, this will bring the browser to the front and will launch a web-based * search. The user will be able to click the "Back" button and return to your application. * <p>In general this is implemented by your activity, or the {@link android.app.Activity Activity} - * base class, which captures the search command and invokes the Search Manager to + * base class, which captures the search command and invokes the SearchManager to * display and operate the search UI. You can also cause the search UI to be presented in response * to user keystrokes in your activity (for example, to instantly start filter searching while * viewing a list and typing any key). @@ -124,7 +105,7 @@ import java.util.List; * button or menu item - and invoking the search UI directly.</li> * <li>You can provide a <i>type-to-search</i> feature, in which search is invoked automatically * when the user enters any characters.</li> - * <li>Even if your application is not inherently searchable, you can allow web search, + * <li>Even if your application is not inherently searchable, you can allow global search, * via the search key (or even via a search menu item). * <li>You can disable search entirely. This should only be used in very rare circumstances, * as search is a system-wide feature and users will expect it to be available in all contexts.</li> @@ -148,21 +129,23 @@ import java.util.List; * setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL); // search within your activity * setDefaultKeyMode(DEFAULT_KEYS_SEARCH_GLOBAL); // search using platform global search</pre> * - * <p><b>How to enable web-based search.</b> In addition to searching within your activity or - * application, you can also use the Search Manager to invoke a platform-global search, typically - * a web search. There are two ways to do this: + * <p><b>How to enable global search with Quick Search Box.</b> In addition to searching within + * your activity or application, you can also use the Search Manager to invoke a platform-global + * search, which uses Quick Search Box to search across the device and the web. There are two ways + * to do this: * <ul><li>You can simply define "search" within your application or activity to mean global search. * This is described in more detail in the * <a href="#SearchabilityMetadata">Searchability Metadata</a> section. Briefly, you will * add a single meta-data entry to your manifest, declaring that the default search * for your application is "*". This indicates to the system that no application-specific * search activity is provided, and that it should launch web-based search instead.</li> - * <li>You can specify this at invocation time via default keys (see above), overriding - * {@link android.app.Activity#onSearchRequested}, or via a direct call to - * {@link android.app.Activity#startSearch}. This is most useful if you wish to provide local - * searchability <i>and</i> access to global search.</li></ul> + * <li>Simply do nothing and the default implementation of + * {@link android.app.Activity#onSearchRequested} will cause global search to be triggered. + * (You can also always trigger search via a direct call to {@link android.app.Activity#startSearch}. + * This is most useful if you wish to provide local searchability <i>and</i> access to global + * search.)</li></ul> * - * <p><b>How to disable search from your activity.</b> search is a system-wide feature and users + * <p><b>How to disable search from your activity.</b> Search is a system-wide feature and users * will expect it to be available in all contexts. If your UI design absolutely precludes * launching search, override {@link android.app.Activity#onSearchRequested onSearchRequested} * as shown: @@ -172,7 +155,7 @@ import java.util.List; * return false; * }</pre> * - * <p><b>Managing focus and knowing if Search is active.</b> The search UI is not a separate + * <p><b>Managing focus and knowing if search is active.</b> The search UI is not a separate * activity, and when the UI is invoked or dismissed, your activity will not typically be paused, * resumed, or otherwise notified by the methods defined in * <a href="{@docRoot}guide/topics/fundamentals.html#actlife">Application Fundamentals: @@ -194,17 +177,10 @@ import java.util.List; * the search UI. More details on searchable activities and search intents are provided in the * sections below. * - * <a name="QuerySearchApplications"></a> - * <h3>Query-Search Applications</h3> - * - * <p>Query-search applications are those that take a single query (e.g. a search - * string) and present a set of results that may fit. Primary examples include - * web queries, map lookups, or email searches (with the common thread being - * network query dispatch). It may also be the case that certain local searches - * are treated this way. It's up to the application to decide. + * <a name="ImplementingSearchForYourApp"></a> + * <h3>Implementing Search for Your App</h3> * - * <p><b>What you need to do:</b> The following steps are necessary in order to - * implement query search. + * <p>The following steps are necessary in order to implement search. * <ul> * <li>Implement search invocation as described above. (Strictly speaking, * these are decoupled, but it would make little sense to be "searchable" but not @@ -220,16 +196,16 @@ import java.util.List; * {@link #QUERY getStringExtra(SearchManager.QUERY)}.</li> * <li>To identify and support your searchable activity, you'll need to * provide an XML file providing searchability configuration parameters, a reference to that - * in your searchable activity's <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest</a> - * entry, and an intent-filter declaring that you can - * receive ACTION_SEARCH intents. This is described in more detail in the - * <a href="#SearchabilityMetadata">Searchability Metadata</a> section.</li> - * <li>Your <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest</a> also needs a metadata entry - * providing a global reference to the searchable activity. This is the "glue" directing the search - * UI, when invoked from any of your <i>other</i> activities, to use your application as the - * default search context. This is also described in more detail in the + * in your searchable activity's + * <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest</a> entry, and an + * intent-filter declaring that you can receive ACTION_SEARCH intents. This is described in more + * detail in the <a href="#SearchabilityMetadata">Searchability Metadata</a> section.</li> + * <li>Your <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest</a> also needs a + * metadata entry providing a global reference to the searchable activity. This is the "glue" + * directing the search UI, when invoked from any of your <i>other</i> activities, to use your + * application as the default search context. This is also described in more detail in the * <a href="#SearchabilityMetadata">Searchability Metadata</a> section.</li> - * <li>Finally, you may want to define your search results activity as with the + * <li>Finally, you may want to define your search results activity as single-top with the * {@link android.R.attr#launchMode singleTop} launchMode flag. This allows the system * to launch searches from/to the same activity without creating a pile of them on the * activity stack. If you do this, be sure to also override @@ -255,25 +231,10 @@ import java.util.List; * doSearchWithQuery(queryString); * }</pre> * - * <a name="FilterSearchApplications"></a> - * <h3>Filter-Search Applications</h3> - * - * <p>Filter-search applications are those that use live text entry (e.g. keystrokes)) to - * display and continuously update a list of results. Primary examples include applications - * that use locally-stored data. - * - * <p>Filter search is not directly supported by the Search Manager. Most filter search - * implementations will use variants of {@link android.widget.Filterable}, such as a - * {@link android.widget.ListView} bound to a {@link android.widget.SimpleCursorAdapter}. However, - * you may find it useful to mix them together, by declaring your filtered view searchable. With - * this configuration, you can still present the standard search dialog in all activities - * within your application, but transition to a filtered search when you enter the activity - * and display the results. - * * <a name="Suggestions"></a> * <h3>Search Suggestions</h3> * - * <p>A powerful feature of the Search Manager is the ability of any application to easily provide + * <p>A powerful feature of the search system is the ability of any application to easily provide * live "suggestions" in order to prompt the user. Each application implements suggestions in a * different, unique, and appropriate way. Suggestions be drawn from many sources, including but * not limited to: @@ -285,12 +246,6 @@ import java.util.List; * <li>Summaries of possible results</li> * </ul> * - * <p>Another feature of suggestions is that they can expose queries or results before the user - * ever visits the application. This reduces the amount of context switching required, and helps - * the user access their data quickly and with less context shifting. In order to provide this - * capability, suggestions are accessed via a - * {@link android.content.ContentProvider Content Provider}. - * * <p>The primary form of suggestions is known as <i>queried suggestions</i> and is based on query * text that the user has already typed. This would generally be based on partial matches in * the available data. In certain situations - for example, when no query text has been typed yet - @@ -299,7 +254,8 @@ import java.util.List; * available, they should be weighted based on other factors - for example, most recent queries * or most recent results. * - * <p><b>Overview of how suggestions are provided.</b> When the search manager identifies a + * <p><b>Overview of how suggestions are provided.</b> Suggestions are accessed via a + * {@link android.content.ContentProvider Content Provider}. When the search manager identifies a * particular activity as searchable, it will check for certain metadata which indicates that * there is also a source of suggestions. If suggestions are provided, the following steps are * taken. @@ -405,7 +361,26 @@ import java.util.List; * forget to decode it. (See {@link android.net.Uri#getPathSegments} and * {@link android.net.Uri#getLastPathSegment} for helpful utilities you can use here.)</li> * </ul> - * + * + * <p><b>Providing access to Content Providers that require permissions.</b> If your content + * provider declares an android:readPermission in your application's manifest, you must provide + * access to the search infrastructure to the search suggestion path by including a path-permission + * that grants android:readPermission access to "android.permission.GLOBAL_SEARCH". Granting access + * explicitly to the search infrastructure ensures it will be able to access the search suggestions + * without needing to know ahead of time any other details of the permissions protecting your + * provider. Content providers that require no permissions are already available to the search + * infrastructure. Here is an example of a provider that protects access to it with permissions, + * and provides read access to the search infrastructure to the path that it expects to receive the + * suggestion query on: + * <pre class="prettyprint"> + * <provider android:name="MyProvider" android:authorities="myprovider" + * android:readPermission="android.permission.READ_MY_DATA" + * android:writePermission="android.permission.WRITE_MY_DATA"> + * <path-permission android:path="/search_suggest_query" + * android:readPermission="android.permission.GLOBAL_SEARCH" /> + * </provider> + * </pre> + * * <p><b>Handling empty queries.</b> Your application should handle the "empty query" * (no user text entered) case properly, and generate useful suggestions in this case. There are a * number of ways to do this; Two are outlined here: @@ -413,7 +388,7 @@ import java.util.List; * unfiltered. (example: People)</li> * <li>For a query search, you could simply present the most recent queries. This allows the user * to quickly repeat a recent search.</li></ul> - * + * * <p><b>The Format of Individual Suggestions.</b> Your suggestions are communicated back to the * Search Manager by way of a {@link android.database.Cursor Cursor}. The Search Manager will * usually pass a null Projection, which means that your provider can simply return all appropriate @@ -489,13 +464,22 @@ import java.util.List; * <td align="center">No</td> * </tr> * + * <tr><th>{@link #SUGGEST_COLUMN_INTENT_EXTRA_DATA}</th> + * <td>If this column exists <i>and</i> this element exists at a given row, this is the + * data that will be used when forming the suggestion's intent. If not provided, + * the Intent's extra data field will be null. This column allows suggestions to + * provide additional arbitrary data which will be included as an extra under the + * key {@link #EXTRA_DATA_KEY}.</td> + * <td align="center">No.</td> + * </tr> + * * <tr><th>{@link #SUGGEST_COLUMN_QUERY}</th> * <td>If this column exists <i>and</i> this element exists at the given row, this is the * data that will be used when forming the suggestion's query.</td> * <td align="center">Required if suggestion's action is * {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH}, optional otherwise.</td> * </tr> - * + * * <tr><th><i>Other Columns</i></th> * <td>Finally, if you have defined any <a href="#ActionKeys">Action Keys</a> and you wish * for them to have suggestion-specific definitions, you'll need to define one @@ -704,7 +688,7 @@ import java.util.List; * entered.</td> * <td align="center">No</td> * </tr> - * + * * <tr><th>android:searchButtonText</th> * <td>If provided, this text will replace the default text in the "Search" button.</td> * <td align="center">No</td> @@ -884,7 +868,7 @@ import java.util.List; * * </tbody> * </table> - * + * * <p><b>Additional metadata for search action keys.</b> For each action key that you would like to * define, you'll need to add an additional element defining that key, and using the attributes * discussed in <a href="#ActionKeys">Action Keys</a>. A simple example is shown here: @@ -1262,12 +1246,16 @@ public class SearchManager * result indicates the shortcut refers to a no longer valid sugggestion. * * @see #SUGGEST_COLUMN_SHORTCUT_ID + * + * @hide pending enabling of global search for third parties */ public final static String SUGGEST_URI_PATH_SHORTCUT = "search_suggest_shortcut"; /** * MIME type for shortcut validation. You'll use this in your suggestions content provider * in the getType() function. + * + * @hide pending enabling of global search for third parties */ public final static String SHORTCUT_MIME_TYPE = "vnd.android.cursor.item/vnd.android.search.suggest"; @@ -1280,7 +1268,7 @@ public class SearchManager * In addition to the columns below, the suggestion columns are used to pass along the full * suggestion so it can be shortcutted. * - * @hide + * @hide an implementation detail not part of the public api */ public final static String SEARCH_CLICK_REPORT_AUTHORITY = "com.android.globalsearch.stats"; @@ -1288,21 +1276,21 @@ public class SearchManager /** * The path the write goes to. * - * @hide + * @hide an implementation detail not part of the public api */ public final static String SEARCH_CLICK_REPORT_URI_PATH = "click"; /** * The column storing the query for the click. * - * @hide + * @hide an implementation detail not part of the public api */ public final static String SEARCH_CLICK_REPORT_COLUMN_QUERY = "query"; /** * The column storing the component name of the application that was pivoted into. * - * @hide + * @hide an implementation detail not part of the public api */ public final static String SEARCH_CLICK_REPORT_COLUMN_COMPONENT = "component"; @@ -1387,7 +1375,7 @@ public class SearchManager * {@link #COMPONENT_NAME_KEY}. For use by the global search system only - if other providers * attempt to use this column, the value will be overwritten by global search. * - * @hide + * @hide an implementation detail not part of the public api */ public final static String SUGGEST_COLUMN_INTENT_COMPONENT_NAME = "suggest_intent_component"; /** @@ -1407,11 +1395,13 @@ public class SearchManager /** * Column name for suggestions cursor. <i>Optional.</i> This column is used to indicate whether - * a search suggestion should be stored as a shortcut, and whether it should be validated. If + * a search suggestion should be stored as a shortcut, and whether it should be refreshed. If * missing, the result will be stored as a shortcut and never validated. If set to * {@link #SUGGEST_NEVER_MAKE_SHORTCUT}, the result will not be stored as a shortcut. - * Otherwise, the shortcut id will be used to check back for validation via + * Otherwise, the shortcut id will be used to check back for an up to date suggestion using * {@link #SUGGEST_URI_PATH_SHORTCUT}. + * + * @hide pending reenabling of global search for third parties */ public final static String SUGGEST_COLUMN_SHORTCUT_ID = "suggest_shortcut_id"; @@ -1420,7 +1410,7 @@ public class SearchManager * cursor item's background color if it needs a non-default background color. A non-zero value * indicates a valid background color to override the default. * - * @hide For internal use, not part of the public API. + * @hide an implementation detail not part of the public api */ public final static String SUGGEST_COLUMN_BACKGROUND_COLOR = "suggest_background_color"; @@ -1428,6 +1418,8 @@ public class SearchManager * Column name for suggestions cursor. <i>Optional.</i> This column is used to specify * that a spinner should be shown in lieu of an icon2 while the shortcut of this suggestion * is being refreshed. + * + * @hide pending reenabling of global search for third parties */ public final static String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING = "suggest_spinner_while_refreshing"; @@ -1435,6 +1427,8 @@ public class SearchManager /** * Column value for suggestion column {@link #SUGGEST_COLUMN_SHORTCUT_ID} when a suggestion * should not be stored as a shortcut in global search. + * + * @hide pending reenabling of global search for third parties */ public final static String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1"; @@ -1481,6 +1475,8 @@ public class SearchManager * Intent action for starting a web search provider's settings activity. * Web search providers should handle this intent if they have provider-specific * settings to implement. + * + * @hide implementation detail only relevent to web search providers */ public final static String INTENT_ACTION_WEB_SEARCH_SETTINGS = "android.search.action.WEB_SEARCH_SETTINGS"; @@ -1495,8 +1491,7 @@ public class SearchManager /** * Intent action broadcasted to inform that the search settings have changed in some way. - * Either searchables have been enabled or disabled, or a different web search provider - * has been chosen. + * Either searchables have been enabled or disabled. */ public final static String INTENT_ACTION_SEARCH_SETTINGS_CHANGED = "android.search.action.SETTINGS_CHANGED"; @@ -1505,7 +1500,7 @@ public class SearchManager * If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION}, * the search dialog will take no action. * - * @hide + * @hide an implentation detail not part of the public api */ public final static String INTENT_ACTION_NONE = "android.search.action.ZILCH"; @@ -1577,7 +1572,7 @@ public class SearchManager * no extra data is required. * @param globalSearch If false, this will only launch the search that has been specifically * defined by the application (which is usually defined as a local search). If no default - * search is defined in the current application or activity, no search will be launched. + * search is defined in the current application or activity, global search will be launched. * If true, this will always launch a platform-global (e.g. web-based) search instead. * * @see android.app.Activity#onSearchRequested diff --git a/core/java/android/app/SuggestionsAdapter.java b/core/java/android/app/SuggestionsAdapter.java index bd4e66e..90f8c50 100644 --- a/core/java/android/app/SuggestionsAdapter.java +++ b/core/java/android/app/SuggestionsAdapter.java @@ -65,6 +65,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter { private WeakHashMap<String, Drawable.ConstantState> mOutsideDrawablesCache; private SparseArray<Drawable.ConstantState> mBackgroundsCache; private boolean mGlobalSearchMode; + private boolean mClosed = false; // Cached column indexes, updated when the cursor changes. private int mFormatCol; @@ -73,6 +74,14 @@ class SuggestionsAdapter extends ResourceCursorAdapter { private int mIconName1Col; private int mIconName2Col; private int mBackgroundColorCol; + + // The extra used to tell a cursor to close itself. This is a hack, see the description by + // its use later in this file. + private static final String EXTRA_CURSOR_RESPOND_CLOSE_CURSOR = "cursor_respond_close_cursor"; + + // The bundle which contains {EXTRA_CURSOR_RESPOND_CLOSE_CURSOR=true}, just cached once + // so we don't bother recreating it a bunch. + private final Bundle mCursorRespondCloseCursorBundle; // This value is stored in SuggestionsAdapter by the SearchDialog to indicate whether // a particular list item should be selected upon the next call to notifyDataSetChanged. @@ -129,6 +138,10 @@ class SuggestionsAdapter extends ResourceCursorAdapter { mSearchDialog.setWorking(false); } }; + + // Create this once because we'll reuse it a bunch. + mCursorRespondCloseCursorBundle = new Bundle(); + mCursorRespondCloseCursorBundle.putBoolean(EXTRA_CURSOR_RESPOND_CLOSE_CURSOR, true); // delay 500ms when deleting getFilter().setDelayer(new Filter.Delayer() { @@ -187,6 +200,12 @@ class SuggestionsAdapter extends ResourceCursorAdapter { } } + public void close() { + if (DBG) Log.d(LOG_TAG, "close()"); + changeCursor(null); + mClosed = true; + } + /** * Cache columns. */ @@ -194,8 +213,28 @@ class SuggestionsAdapter extends ResourceCursorAdapter { public void changeCursor(Cursor c) { if (DBG) Log.d(LOG_TAG, "changeCursor(" + c + ")"); + if (mClosed) { + Log.w(LOG_TAG, "Tried to change cursor after adapter was closed."); + if (c != null) c.close(); + return; + } + try { + Cursor oldCursor = getCursor(); super.changeCursor(c); + + // We send a special respond to the cursor to tell it to close itself directly because + // it may not happen correctly for some cursors currently. This was originally + // included as a fix to http://b/2036290, in which the search dialog was holding + // on to references to the web search provider unnecessarily. This is being caused by + // the fact that the cursor is not being correctly closed in + // BulkCursorToCursorAdapter#close, which remains unfixed (see http://b/2015069). + // + // TODO: Remove this hack once http://b/2015069 is fixed. + if (oldCursor != null && oldCursor != c) { + oldCursor.respond(mCursorRespondCloseCursorBundle); + } + if (c != null) { mFormatCol = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_FORMAT); mText1Col = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_1); diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java index 62d9267..9799ac4 100644 --- a/core/java/android/appwidget/AppWidgetHostView.java +++ b/core/java/android/appwidget/AppWidgetHostView.java @@ -18,11 +18,13 @@ package android.appwidget; import android.content.Context; import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.SystemClock; +import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; @@ -31,6 +33,7 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.RemoteViews; import android.widget.TextView; +import android.widget.FrameLayout.LayoutParams; /** * Provides the glue to show AppWidget views. This class offers automatic animation @@ -58,7 +61,8 @@ public class AppWidgetHostView extends FrameLayout { }; Context mContext; - + Context mRemoteContext; + int mAppWidgetId; AppWidgetProviderInfo mInfo; View mView; @@ -104,6 +108,16 @@ public class AppWidgetHostView extends FrameLayout { return mInfo; } + /** {@inheritDoc} */ + @Override + public LayoutParams generateLayoutParams(AttributeSet attrs) { + // We're being asked to inflate parameters, probably by a LayoutInflater + // in a remote Context. To help resolve any remote references, we + // inflate through our last mRemoteContext when it exists. + final Context context = mRemoteContext != null ? mRemoteContext : mContext; + return new FrameLayout.LayoutParams(context, attrs); + } + /** * Process a set of {@link RemoteViews} coming in as an update from the * AppWidget provider. Will animate into these new views as needed. @@ -143,6 +157,9 @@ public class AppWidgetHostView extends FrameLayout { mLayoutId = -1; mViewMode = VIEW_MODE_DEFAULT; } else { + // Prepare a local reference to the remote Context so we're ready to + // inflate any requested LayoutParams. + mRemoteContext = getRemoteContext(remoteViews); int layoutId = remoteViews.getLayoutId(); // If our stale view has been prepared to match active, and the new @@ -203,6 +220,24 @@ public class AppWidgetHostView extends FrameLayout { } } + /** + * Build a {@link Context} cloned into another package name, usually for the + * purposes of reading remote resources. + */ + private Context getRemoteContext(RemoteViews views) { + // Bail if missing package name + final String packageName = views.getPackage(); + if (packageName == null) return mContext; + + try { + // Return if cloned successfully, otherwise default + return mContext.createPackageContext(packageName, Context.CONTEXT_RESTRICTED); + } catch (NameNotFoundException e) { + Log.e(TAG, "Package name " + packageName + " not found"); + return mContext; + } + } + protected boolean drawChild(Canvas canvas, View child, long drawingTime) { if (CROSSFADE) { int alpha; @@ -246,17 +281,15 @@ public class AppWidgetHostView extends FrameLayout { * {@link FrameLayout.LayoutParams} before inserting. */ protected void prepareView(View view) { - // Take requested dimensions from parent, but apply default gravity. - ViewGroup.LayoutParams requested = view.getLayoutParams(); + // Take requested dimensions from child, but apply default gravity. + FrameLayout.LayoutParams requested = (FrameLayout.LayoutParams)view.getLayoutParams(); if (requested == null) { requested = new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); } - - FrameLayout.LayoutParams params = - new FrameLayout.LayoutParams(requested.width, requested.height); - params.gravity = Gravity.CENTER; - view.setLayoutParams(params); + + requested.gravity = Gravity.CENTER; + view.setLayoutParams(requested); } /** diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java index 8ebe093..0bc8a9d 100644 --- a/core/java/android/content/res/AssetManager.java +++ b/core/java/android/content/res/AssetManager.java @@ -667,6 +667,11 @@ public final class AssetManager { /** * {@hide} */ + public native static final String getAssetAllocations(); + + /** + * {@hide} + */ public native static final int getGlobalAssetManagerCount(); private native final int newTheme(); diff --git a/core/java/android/net/SSLCertificateSocketFactory.java b/core/java/android/net/SSLCertificateSocketFactory.java index deaa3c3..a97b9e5 100644 --- a/core/java/android/net/SSLCertificateSocketFactory.java +++ b/core/java/android/net/SSLCertificateSocketFactory.java @@ -41,6 +41,7 @@ import javax.net.ssl.X509TrustManager; import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache; import org.apache.harmony.xnet.provider.jsse.SSLContextImpl; +import org.apache.harmony.xnet.provider.jsse.SSLParameters; /** * SSLSocketFactory that provides optional (on debug devices, only) skipping of ssl certificfate @@ -54,28 +55,6 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { private static final String LOG_TAG = "SSLCertificateSocketFactory"; - private static X509TrustManager sDefaultTrustManager; - - static { - try { - TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509"); - tmf.init((KeyStore)null); - TrustManager[] tms = tmf.getTrustManagers(); - if (tms != null) { - for (TrustManager tm : tms) { - if (tm instanceof X509TrustManager) { - sDefaultTrustManager = (X509TrustManager)tm; - break; - } - } - } - } catch (NoSuchAlgorithmException e) { - Log.e(LOG_TAG, "Unable to get X509 Trust Manager ", e); - } catch (KeyStoreException e) { - Log.e(LOG_TAG, "Key Store exception while initializing TrustManagerFactory ", e); - } - } - private static final TrustManager[] TRUST_MANAGER = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { @@ -155,20 +134,13 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { private boolean hasValidCertificateChain(Certificate[] certs) throws IOException { - if (sDefaultTrustManager == null) { - if (Config.LOGD) { - Log.d(LOG_TAG,"hasValidCertificateChain():" + - " null default trust manager!"); - } - throw new IOException("null default trust manager"); - } - boolean trusted = (certs != null && (certs.length > 0)); if (trusted) { try { // the authtype we pass in doesn't actually matter - sDefaultTrustManager.checkServerTrusted((X509Certificate[]) certs, "RSA"); + SSLParameters.getDefaultTrustManager() + .checkServerTrusted((X509Certificate[]) certs, "RSA"); } catch (GeneralSecurityException e) { String exceptionMessage = e != null ? e.getMessage() : "none"; if (Config.LOGD) { diff --git a/core/java/android/net/http/CertificateChainValidator.java b/core/java/android/net/http/CertificateChainValidator.java index 91fa900..ed6b4c2 100644 --- a/core/java/android/net/http/CertificateChainValidator.java +++ b/core/java/android/net/http/CertificateChainValidator.java @@ -16,6 +16,8 @@ package android.net.http; +import org.apache.harmony.xnet.provider.jsse.SSLParameters; + import java.io.IOException; import java.security.cert.Certificate; @@ -47,11 +49,6 @@ class CertificateChainValidator { = new CertificateChainValidator(); /** - * Default trust manager (used to perform CA certificate validation) - */ - private X509TrustManager mDefaultTrustManager; - - /** * @return The singleton instance of the certificator chain validator */ public static CertificateChainValidator getInstance() { @@ -62,28 +59,7 @@ class CertificateChainValidator { * Creates a new certificate chain validator. This is a pivate constructor. * If you need a Certificate chain validator, call getInstance(). */ - private CertificateChainValidator() { - try { - TrustManagerFactory trustManagerFactory - = TrustManagerFactory.getInstance("X509"); - trustManagerFactory.init((KeyStore)null); - TrustManager[] trustManagers = - trustManagerFactory.getTrustManagers(); - if (trustManagers != null && trustManagers.length > 0) { - for (TrustManager trustManager : trustManagers) { - if (trustManager instanceof X509TrustManager) { - mDefaultTrustManager = (X509TrustManager)(trustManager); - break; - } - } - } - } catch (Exception exc) { - if (HttpLog.LOGV) { - HttpLog.v("CertificateChainValidator():" + - " failed to initialize the trust manager"); - } - } - } + private CertificateChainValidator() {} /** * Performs the handshake and server certificates validation @@ -156,7 +132,7 @@ class CertificateChainValidator { // report back to the user. // try { - mDefaultTrustManager.checkServerTrusted( + SSLParameters.getDefaultTrustManager().checkServerTrusted( serverCertificates, "RSA"); // no errors!!! @@ -186,7 +162,7 @@ class CertificateChainValidator { // check if the last certificate in the chain (root) is trusted X509Certificate[] rootCertificateChain = { currCertificate }; try { - mDefaultTrustManager.checkServerTrusted( + SSLParameters.getDefaultTrustManager().checkServerTrusted( rootCertificateChain, "RSA"); } catch (CertificateExpiredException e) { String errorMessage = e.getMessage(); diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java index 830b0bd..1775a4b 100644 --- a/core/java/android/os/Build.java +++ b/core/java/android/os/Build.java @@ -120,9 +120,18 @@ public class Build { * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission to be * able to modify the contents of the SD card. (Apps targeting * earlier versions will always request the permission.) + * <li> They must explicitly request the + * {@link android.Manifest.permission#READ_PHONE_STATE} permission to be + * able to be able to retrieve phone state info. (Apps targeting + * earlier versions will always request the permission.) + * <li> They are assumed to support different screen densities and + * sizes. (Apps targeting earlier versions are assumed to only support + * medium density normal size screens unless otherwise indicated). + * They can still explicitly specify screen support either way with the + * supports-screens manifest tag. * </ul> */ - public static final int DONUT = CUR_DEVELOPMENT; + public static final int DONUT = 4; } /** The type of build, like "user" or "eng". */ diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 9a9ddc9..4a4d2de 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -2973,6 +2973,18 @@ public final class Settings { "vending_pd_resend_frequency_ms"; /** + * Size of buffer in bytes for Vending to use when reading cache files. + */ + public static final String VENDING_DISK_INPUT_BUFFER_BYTES = + "vending_disk_input_buffer_bytes"; + + /** + * Size of buffer in bytes for Vending to use when writing cache files. + */ + public static final String VENDING_DISK_OUTPUT_BUFFER_BYTES = + "vending_disk_output_buffer_bytes"; + + /** * Frequency in milliseconds at which we should cycle through the promoted applications * on the home screen or the categories page. */ diff --git a/core/java/android/server/search/Searchables.java b/core/java/android/server/search/Searchables.java index c615957..a2add73 100644 --- a/core/java/android/server/search/Searchables.java +++ b/core/java/android/server/search/Searchables.java @@ -26,6 +26,7 @@ import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.content.pm.ApplicationInfo; import android.os.Bundle; import android.util.Log; @@ -230,14 +231,16 @@ public class Searchables { : webSearchInfoList.get(ii - search_count); ActivityInfo ai = info.activityInfo; // Check first to avoid duplicate entries. - if (newSearchablesMap.get(new ComponentName(ai.packageName, ai.name)) == null) { - SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai); - if (searchable != null) { - newSearchablesList.add(searchable); - newSearchablesMap.put(searchable.getSearchActivity(), searchable); - if (searchable.shouldIncludeInGlobalSearch()) { - newSearchablesInGlobalSearchList.add(searchable); - } + if (newSearchablesMap.containsKey(new ComponentName(ai.packageName, ai.name))) { + continue; + } + SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai); + if (searchable != null) { + newSearchablesList.add(searchable); + newSearchablesMap.put(searchable.getSearchActivity(), searchable); + if (searchable.shouldIncludeInGlobalSearch() + && isWhitelistedForGlobalSearch(pm, searchable.getSearchActivity())) { + newSearchablesInGlobalSearchList.add(searchable); } } } @@ -289,6 +292,25 @@ public class Searchables { } /** + * Determines whether an activity may be included in quick search box. For now this is + * restricted to system installed apps. + * + * TODO: remove when we are ready to enable global search for third party applications. + * + * @param pm The package manager. + * @param searchActivity The component of the search activity. + * @return True if the search activity may include its search suggestions in quick search box. + */ + private boolean isWhitelistedForGlobalSearch(PackageManager pm, ComponentName searchActivity) { + try { + ActivityInfo ai = pm.getActivityInfo(searchActivity, 0); + return ((ai.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0); + } catch (PackageManager.NameNotFoundException e) { + return false; + } + } + + /** * Checks if the given activity component is present in the system and if so makes it the * preferred activity for handling ACTION_WEB_SEARCH. * @param component Name of the component to check and set as preferred. diff --git a/core/java/android/speech/RecognitionResult.java b/core/java/android/speech/RecognitionResult.java index 8d031fc..978106b 100644 --- a/core/java/android/speech/RecognitionResult.java +++ b/core/java/android/speech/RecognitionResult.java @@ -60,9 +60,11 @@ public class RecognitionResult implements Parcelable { * * @param contact the contact name. * @param phoneType the phone type. + * @param callAction whether this result included a command to "call", or just the contact name. */ - public static RecognitionResult newContactResult(String contact, int phoneType) { - return new RecognitionResult(CONTACT_RESULT, contact, phoneType); + public static RecognitionResult newContactResult(String contact, int phoneType, + boolean callAction) { + return new RecognitionResult(CONTACT_RESULT, contact, phoneType, callAction); } /** @@ -112,8 +114,16 @@ public class RecognitionResult implements Parcelable { */ public final String mUrl; - /** Phone number type. This is valid only when mResultType == CONTACT_RESULT */ + /** + * Phone number type. This is valid only when mResultType == CONTACT_RESULT. + */ public final int mPhoneType; + + /** + * Whether a contact recognition result included a command to "call". This is valid only + * when mResultType == CONTACT_RESULT. + */ + public final boolean mCallAction; private RecognitionResult(int type, String query, String html, String url) { mResultType = type; @@ -121,14 +131,16 @@ public class RecognitionResult implements Parcelable { mHtml = html; mUrl = url; mPhoneType = -1; + mCallAction = false; } - private RecognitionResult(int type, String query, int at) { + private RecognitionResult(int type, String query, int phoneType, boolean callAction) { mResultType = type; mText = query; - mPhoneType = at; + mPhoneType = phoneType; mHtml = null; mUrl = null; + mCallAction = callAction; } private RecognitionResult(Parcel in) { @@ -137,6 +149,7 @@ public class RecognitionResult implements Parcelable { mHtml= in.readString(); mUrl= in.readString(); mPhoneType = in.readInt(); + mCallAction = (in.readInt() == 1); } public void writeToParcel(Parcel out, int flags) { @@ -145,6 +158,7 @@ public class RecognitionResult implements Parcelable { out.writeString(mHtml); out.writeString(mUrl); out.writeInt(mPhoneType); + out.writeInt(mCallAction ? 1 : 0); } diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java index b033c6a..a6d76d6 100755 --- a/core/java/android/speech/tts/TextToSpeech.java +++ b/core/java/android/speech/tts/TextToSpeech.java @@ -61,7 +61,7 @@ public class TextToSpeech { /** - * Denotes the language is available exactly as specified by the locale + * Denotes the language is available exactly as specified by the locale. */ public static final int LANG_COUNTRY_VAR_AVAILABLE = 2; @@ -176,7 +176,7 @@ public class TextToSpeech { // intents to ask engine to install data or check its data /** - * Broadcast Action: Triggers the platform Text-To-Speech engine to + * Activity Action: Triggers the platform Text-To-Speech engine to * start the activity that installs the resource files on the device * that are required for TTS to be operational. Since the installation * of the data can be interrupted or declined by the user, the application @@ -184,12 +184,20 @@ public class TextToSpeech { * and if need be, should check installation status with * {@link #ACTION_CHECK_TTS_DATA}. */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_INSTALL_TTS_DATA = "android.speech.tts.engine.INSTALL_TTS_DATA"; /** - * Broadcast Action: Starts the activity from the platform Text-To-Speech + * Broadcast Action: broadcast to signal the completion of the installation of + * the data files used by the synthesis engine. Success or failure is indicated in the + * {@link #EXTRA_TTS_DATA_INSTALLED} extra. + */ + @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + public static final String ACTION_TTS_DATA_INSTALLED = + "android.speech.tts.engine.TTS_DATA_INSTALLED"; + /** + * Activity Action: Starts the activity from the platform Text-To-Speech * engine to verify the proper installation and availability of the * resource files on the system. Upon completion, the activity will * return one of the following codes: @@ -211,7 +219,7 @@ public class TextToSpeech { * and YYY is the 3-letter ISO country code.</li> * </ul> */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_CHECK_TTS_DATA = "android.speech.tts.engine.CHECK_TTS_DATA"; @@ -233,6 +241,16 @@ public class TextToSpeech { */ public static final String EXTRA_VOICE_DATA_FILES_INFO = "dataFilesInfo"; + // extras for a TTS engine's data installation + /** + * Extra information received with the {@link #ACTION_TTS_DATA_INSTALLED} intent. + * It indicates whether the data files for the synthesis engine were successfully + * installed. The installation was initiated with the {@link #ACTION_INSTALL_TTS_DATA} + * intent. The possible values for this extra are + * {@link TextToSpeech#SUCCESS} and {@link TextToSpeech#ERROR}. + */ + public static final String EXTRA_TTS_DATA_INSTALLED = "dataInstalled"; + // keys for the parameters passed with speak commands. Hidden keys are used internally // to maintain engine state for each TextToSpeech instance. /** @@ -1016,7 +1034,7 @@ public class TextToSpeech { } try { String[] locStrings = mITts.getLanguage(); - if (locStrings.length == 3) { + if ((locStrings != null) && (locStrings.length == 3)) { return new Locale(locStrings[0], locStrings[1], locStrings[2]); } else { return null; diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java index dd5a440..74f01cc 100644 --- a/core/java/android/util/DisplayMetrics.java +++ b/core/java/android/util/DisplayMetrics.java @@ -24,6 +24,9 @@ import android.os.*; /** * A structure describing general information about a display, such as its * size, density, and font scaling. + * <p>To access the DisplayMetrics members, initialize an object like this:</p> + * <pre> DisplayMetrics metrics = new DisplayMetrics(); + * getWindowManager().getDefaultDisplay().getMetrics(metrics);</pre> */ public class DisplayMetrics { /** diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java index f7cb06b..0c5d853 100644 --- a/core/java/android/view/ViewRoot.java +++ b/core/java/android/view/ViewRoot.java @@ -1277,6 +1277,11 @@ public final class ViewRoot extends Handler implements ViewParent, // TODO: we should ask the window manager to do something! // for now we just do nothing return; + } catch (IllegalArgumentException e) { + Log.e("ViewRoot", "IllegalArgumentException locking surface", e); + // TODO: we should ask the window manager to do something! + // for now we just do nothing + return; } try { diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java index 456f8ed..02d77d1 100644 --- a/core/java/android/widget/AutoCompleteTextView.java +++ b/core/java/android/widget/AutoCompleteTextView.java @@ -862,6 +862,16 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe return ListView.INVALID_POSITION; } + + /** + * @hide + * @return {@link android.widget.ListView#getChildCount()} of the drop down if it is showing, + * otherwise 0. + */ + protected int getDropDownChildCount() { + return mDropDownList == null ? 0 : mDropDownList.getChildCount(); + } + /** * <p>Starts filtering the content of the drop down list. The filtering * pattern is the content of the edit box. Subclasses should override this diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java index 2c9e71e..b179a13 100644 --- a/core/java/android/widget/ProgressBar.java +++ b/core/java/android/widget/ProgressBar.java @@ -190,10 +190,12 @@ public class ProgressBar extends View { mBehavior = a.getInt(R.styleable.ProgressBar_indeterminateBehavior, mBehavior); - final int resID = a.getResourceId(com.android.internal.R.styleable.ProgressBar_interpolator, -1); + final int resID = a.getResourceId( + com.android.internal.R.styleable.ProgressBar_interpolator, + android.R.anim.linear_interpolator); // default to linear interpolator if (resID > 0) { setInterpolator(context, resID); - } + } setMax(a.getInt(R.styleable.ProgressBar_max, mMax)); diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 3fab692..260799e 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -7210,6 +7210,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (word != null) { Intent i = new Intent("com.android.settings.USER_DICTIONARY_INSERT"); i.putExtra("word", word); + i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK); getContext().startActivity(i); } diff --git a/core/java/android/widget/ZoomButtonsController.java b/core/java/android/widget/ZoomButtonsController.java index bae4dad..a41e2e3 100644 --- a/core/java/android/widget/ZoomButtonsController.java +++ b/core/java/android/widget/ZoomButtonsController.java @@ -69,7 +69,6 @@ import android.view.WindowManager.LayoutParams; * {@link #setVisible(boolean) setVisible(false)} from the * {@link View#onDetachedFromWindow}. * - * @hide */ public class ZoomButtonsController implements View.OnTouchListener { diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index f67a235..94149e1 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -291,6 +291,15 @@ public class ZygoteInit { } else { missingClasses += " " + line; } + } catch (Throwable t) { + Log.e(TAG, "Error preloading " + line + ".", t); + if (t instanceof Error) { + throw (Error) t; + } + if (t instanceof RuntimeException) { + throw (RuntimeException) t; + } + throw new RuntimeException(t); } } diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index a6b63d8..b4c60f1 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -129,6 +129,8 @@ static void read_mapinfo(FILE *fp, stats_t* stats) isDalvikHeap = 1; } else if (strstr(line, "/dalvik-heap-bitmap/")) { isDalvikHeap = 1; + } else if (strstr(line, "/data/dalvik-cache/")) { + isDalvikHeap = 1; } else if (strstr(line, "/tmp/sqlite-heap")) { isSqliteHeap = 1; } @@ -158,9 +160,9 @@ static void read_mapinfo(FILE *fp, stats_t* stats) private_dirty = temp; } else if (sscanf(line, "Referenced: %d kB", &temp) == 1) { referenced = temp; - } else if (strlen(line) > 40 && line[8] == '-' && line[17] == ' ') { + } else if (strlen(line) > 30 && line[8] == '-' && line[17] == ' ') { // looks like a new mapping - // example: "0000a000-00232000 rwxp 0000a000 00:00 0 [heap]" + // example: "10000000-10001000 ---p 10000000 00:00 0" break; } } @@ -178,8 +180,8 @@ static void read_mapinfo(FILE *fp, stats_t* stats) // ignore } else { stats->otherPss += pss; - stats->otherPrivateDirty += shared_dirty; - stats->otherSharedDirty += private_dirty; + stats->otherPrivateDirty += private_dirty; + stats->otherSharedDirty += shared_dirty; } } } diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp index 66b2506..562cc8f 100644 --- a/core/jni/android_util_AssetManager.cpp +++ b/core/jni/android_util_AssetManager.cpp @@ -1536,6 +1536,22 @@ static jint android_content_AssetManager_getGlobalAssetCount(JNIEnv* env, jobjec return Asset::getGlobalCount(); } +static jobject android_content_AssetManager_getAssetAllocations(JNIEnv* env, jobject clazz) +{ + String8 alloc = Asset::getAssetAllocations(); + if (alloc.length() <= 0) { + return NULL; + } + + jstring str = env->NewStringUTF(alloc.string()); + if (str == NULL) { + doThrow(env, "java/lang/OutOfMemoryError"); + return NULL; + } + + return str; +} + static jint android_content_AssetManager_getGlobalAssetManagerCount(JNIEnv* env, jobject clazz) { return AssetManager::getGlobalCount(); @@ -1646,6 +1662,8 @@ static JNINativeMethod gAssetManagerMethods[] = { (void*) android_content_AssetManager_destroy }, { "getGlobalAssetCount", "()I", (void*) android_content_AssetManager_getGlobalAssetCount }, + { "getAssetAllocations", "()Ljava/lang/String;", + (void*) android_content_AssetManager_getAssetAllocations }, { "getGlobalAssetManagerCount", "()I", (void*) android_content_AssetManager_getGlobalAssetCount }, }; diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp index aee0ed7..98fe0e6 100644 --- a/core/jni/android_util_Process.cpp +++ b/core/jni/android_util_Process.cpp @@ -251,10 +251,27 @@ void android_os_Process_setProcessGroup(JNIEnv* env, jobject clazz, int pid, jin } while ((de = readdir(d))) { + int t_pid; + int t_pri; + if (de->d_name[0] == '.') continue; + t_pid = atoi(de->d_name); + + if (!t_pid) { + LOGE("Error getting pid for '%s'\n", de->d_name); + continue; + } - if (add_pid_to_cgroup(atoi(de->d_name), grp)) { + t_pri = getpriority(PRIO_PROCESS, t_pid); + + if (grp == ANDROID_TGROUP_DEFAULT && + t_pri >= ANDROID_PRIORITY_BACKGROUND) { + // This task wants to stay at background + continue; + } + + if (add_pid_to_cgroup(t_pid, grp)) { // If the thread exited on us, ignore it and keep going if (errno != ESRCH && errno != ENOENT) { signalExceptionForGroupError(env, clazz, errno); diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 4558660..cf2184c 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -49,7 +49,6 @@ <protected-broadcast android:name="android.intent.action.ACTION_SHUTDOWN" /> <protected-broadcast android:name="android.intent.action.DEVICE_STORAGE_LOW" /> <protected-broadcast android:name="android.intent.action.DEVICE_STORAGE_OK" /> - <protected-broadcast android:name="android.intent.action.AIRPLANE_MODE" /> <protected-broadcast android:name="android.intent.action.NEW_OUTGOING_CALL" /> <protected-broadcast android:name="android.intent.action.REBOOT" /> diff --git a/core/res/res/drawable/sym_def_app_icon.png b/core/res/res/drawable/sym_def_app_icon.png Binary files differindex 7502484..8be3b54 100644 --- a/core/res/res/drawable/sym_def_app_icon.png +++ b/core/res/res/drawable/sym_def_app_icon.png diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index ad52251..8c6704e 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -168,7 +168,7 @@ <string name="permdesc_receiveSms" msgid="6298292335965966117">"Umožňuje aplikaci pÅ™ijÃmat a zpracovávat zprávy SMS. Å kodlivé aplikace mohou sledovat vaÅ¡e zprávy nebo je smazat, aniž by vám byly zobrazeny."</string> <string name="permlab_receiveMms" msgid="8894700916188083287">"pÅ™Ãjem zpráv MMS"</string> <string name="permdesc_receiveMms" msgid="4563346832000174373">"Umožňuje aplikaci pÅ™ijÃmat a zpracovávat zprávy MMS. Å kodlivé aplikace mohou sledovat vaÅ¡e zprávy nebo je smazat, aniž by vám byly zobrazeny."</string> - <string name="permlab_sendSms" msgid="5600830612147671529">"odesÃlat zprávy SMS"</string> + <string name="permlab_sendSms" msgid="5600830612147671529">"odesÃlanà zpráv SMS"</string> <string name="permdesc_sendSms" msgid="1946540351763502120">"Umožňuje aplikaci odesÃlat zprávy SMS. Å kodlivé aplikace mohou bez vaÅ¡eho potvrzenà odesÃlat zpoplatnÄ›né zprávy."</string> <string name="permlab_readSms" msgid="4085333708122372256">"Ätenà zpráv SMS a MMS"</string> <string name="permdesc_readSms" msgid="3002170087197294591">"Umožňuje aplikaci ÄÃst zprávy SMS uložené ve vaÅ¡em telefonu nebo na kartÄ› SIM. Å kodlivé aplikace mohou naÄÃst vaÅ¡e soukromé zprávy."</string> @@ -182,7 +182,7 @@ <string name="permdesc_reorderTasks" msgid="126252774270522835">"Umožňuje aplikaci pÅ™esouvat úlohy do popÅ™edà Äi pozadÃ. Å kodlivé aplikace mohou vynutit své pÅ™esunutà do popÅ™edà bez vaÅ¡eho pÅ™iÄinÄ›nÃ."</string> <string name="permlab_setDebugApp" msgid="4339730312925176742">"povolit ladÄ›nà aplikacÃ"</string> <string name="permdesc_setDebugApp" msgid="5584310661711990702">"Umožňuje aplikaci povolit ladÄ›nà jiné aplikace. Å kodlivé aplikace mohou pomocà tohoto nastavenà ukonÄit jiné aplikace."</string> - <string name="permlab_changeConfiguration" msgid="8214475779521218295">"zmÄ›ny vaÅ¡eho nastavenà uživatelského rozhranÃ"</string> + <string name="permlab_changeConfiguration" msgid="8214475779521218295">"zmÄ›na vaÅ¡eho nastavenà uživatelského rozhranÃ"</string> <string name="permdesc_changeConfiguration" msgid="3465121501528064399">"Umožňuje aplikaci zmÄ›nit aktuálnà konfiguraci, napÅ™. národnà prostÅ™edà Äi obecnou velikost pÃsma."</string> <string name="permlab_restartPackages" msgid="2386396847203622628">"restartovánà ostatnÃch aplikacÃ"</string> <string name="permdesc_restartPackages" msgid="1076364837492936814">"Umožňuje aplikaci vynutit restartovánà jiných aplikacÃ."</string> @@ -190,9 +190,9 @@ <string name="permdesc_forceBack" msgid="6534109744159919013">"Umožňuje aplikaci vynutit zavÅ™enà a pÅ™esunutà libovolné Äinnosti v popÅ™edà na pozadÃ. Běžné aplikace by toto nastavenà nemÄ›ly nikdy využÃvat."</string> <string name="permlab_dump" msgid="1681799862438954752">"naÄtenà internÃho stavu systému"</string> <string name="permdesc_dump" msgid="2198776174276275220">"Umožňuje aplikaci naÄÃst internà stav systému. Å kodlivé aplikace mohou naÄÃst řádu soukromých a zabezpeÄených informacÃ, které by nikdy nemÄ›ly potÅ™ebovat."</string> - <string name="permlab_shutdown" msgid="7185747824038909016">"ČásteÄné vypnutÃ"</string> + <string name="permlab_shutdown" msgid="7185747824038909016">"ÄásteÄné vypnutÃ"</string> <string name="permdesc_shutdown" msgid="7046500838746291775">"Uvede správce Äinnostà do vypnutého stavu. Nedojde vÅ¡ak k úplnému vypnutÃ."</string> - <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"Zabránit pÅ™epÃnánà aplikacÃ"</string> + <string name="permlab_stopAppSwitches" msgid="4138608610717425573">"zabránÄ›nà pÅ™epÃnánà aplikacÃ"</string> <string name="permdesc_stopAppSwitches" msgid="3857886086919033794">"Zabránà uživateli pÅ™epnout na jinou aplikaci."</string> <string name="permlab_runSetActivityWatcher" msgid="7811586187574696296">"sledovánà a Å™Ãzenà spouÅ¡tÄ›nà vÅ¡ech aplikacÃ"</string> <string name="permdesc_runSetActivityWatcher" msgid="3228701938345388092">"Umožňuje aplikaci sledovat a Å™Ãdit spouÅ¡tÄ›nà Äinnostà systémem. Å kodlivé aplikace mohou zcela ovládnout systém. Toto oprávnÄ›nà je zapotÅ™ebà pouze pro úÄely vývoje, nikdy pro běžné použità telefonu."</string> @@ -208,13 +208,13 @@ <string name="permdesc_setAlwaysFinish" msgid="8773936403987091620">"Umožňuje aplikaci ovládat, zda jsou Äinnosti vždy dokonÄeny po pÅ™esunutà do pozadÃ. Běžné aplikace toto nastavenà nikdy nevyužÃvajÃ."</string> <string name="permlab_batteryStats" msgid="7863923071360031652">"zmÄ›na statistických údajů o baterii"</string> <string name="permdesc_batteryStats" msgid="5847319823772230560">"Umožňuje zmÄ›nu shromáždÄ›ných statistických údajů o baterii. Nenà urÄeno pro běžné aplikace."</string> - <string name="permlab_backup" msgid="470013022865453920">"Ovládat zálohovánà a obnovu systému"</string> + <string name="permlab_backup" msgid="470013022865453920">"ovládánà zálohovánà a obnovy systému"</string> <string name="permdesc_backup" msgid="2305432853944929371">"Umožňuje aplikaci ovládat mechanizmus zálohovánà a obnovy systému. Nenà urÄeno k použità v běžných aplikacÃch."</string> <string name="permlab_internalSystemWindow" msgid="2148563628140193231">"zobrazenà nepovolených oken"</string> <string name="permdesc_internalSystemWindow" msgid="5895082268284998469">"Umožňuje vytvoÅ™enà oken, která majà být použita internÃm systémem uživatelského rozhranÃ. Běžné aplikace toto nastavenà nepoužÃvajÃ."</string> <string name="permlab_systemAlertWindow" msgid="3372321942941168324">"zobrazenà upozornÄ›nà systémové úrovnÄ›"</string> <string name="permdesc_systemAlertWindow" msgid="5109622689323490558">"Umožňuje aplikaci zobrazit okna s výstrahami systému. Å kodlivé aplikace mohou pÅ™evzÃt kontrolu nad celou obrazovkou telefonu."</string> - <string name="permlab_setAnimationScale" msgid="2805103241153907174">"globálnà zmÄ›ny rychlosti animace"</string> + <string name="permlab_setAnimationScale" msgid="2805103241153907174">"zmÄ›na globálnà rychlosti animace"</string> <string name="permdesc_setAnimationScale" msgid="7181522138912391988">"Umožňuje aplikaci kdykoli globálnÄ› zmÄ›nit rychlost animace (rychlejÅ¡Ã Äi pomalejÅ¡Ã animace)."</string> <string name="permlab_manageAppTokens" msgid="17124341698093865">"správa tokenů aplikacÃ"</string> <string name="permdesc_manageAppTokens" msgid="977127907524195988">"Umožňuje aplikaci vytvoÅ™it a spravovat své vlastnà tokeny a obejÃt jejich obvyklé Å™azenà typu Z. Toto nastavenà by nikdy nemÄ›lo být potÅ™eba pro běžné aplikace."</string> @@ -250,11 +250,11 @@ <string name="permdesc_changeComponentState" msgid="4569107043246700630">"Umožňuje aplikaci zmÄ›nit, zda je komponenta jiné aplikace povolena nebo ne. Å kodlivé aplikace mohou pomocà tohoto nastavenà vypnout důležité funkce telefonu. Je tÅ™eba postupovat opatrnÄ›, protože je možné způsobit nepoužitelnost, nekonzistenci Äi nestabilitu komponent aplikacÃ."</string> <string name="permlab_setPreferredApplications" msgid="3393305202145172005">"nastavenà upÅ™ednostňovaných aplikacÃ"</string> <string name="permdesc_setPreferredApplications" msgid="760008293501937546">"Umožňuje aplikaci zmÄ›nit vaÅ¡e upÅ™ednostňované aplikace. Toto nastavenà může Å¡kodlivým aplikacÃm umožnit nepozorovanÄ› zmÄ›nit spouÅ¡tÄ›né aplikace a oklamat vaÅ¡e existujÃcà aplikace tak, aby shromažÄovaly vaÅ¡e soukromá data."</string> - <string name="permlab_writeSettings" msgid="1365523497395143704">"zmÄ›ny globálnÃch nastavenà systému"</string> + <string name="permlab_writeSettings" msgid="1365523497395143704">"zmÄ›na globálnÃch nastavenà systému"</string> <string name="permdesc_writeSettings" msgid="838789419871034696">"Umožňuje aplikaci upravit data nastavenà systému. Å kodlivé aplikace mohou poÅ¡kodit konfiguraci vaÅ¡eho systému."</string> <string name="permlab_writeSecureSettings" msgid="204676251876718288">"zmÄ›ny zabezpeÄených nastavenà systému"</string> <string name="permdesc_writeSecureSettings" msgid="4116616249170428132">"Umožňuje aplikaci zmÄ›nit data zabezpeÄených nastavenà systému. Běžné aplikace toto nastavenà nevyužÃvajÃ."</string> - <string name="permlab_writeGservices" msgid="2149426664226152185">"zmÄ›ny mapy služeb Google"</string> + <string name="permlab_writeGservices" msgid="2149426664226152185">"zmÄ›na mapy služeb Google"</string> <string name="permdesc_writeGservices" msgid="6602362746516676175">"Umožňuje aplikaci zmÄ›nit mapu služeb Google. Běžné aplikace toto nastavenà nevyužÃvajÃ."</string> <string name="permlab_receiveBootCompleted" msgid="7776779842866993377">"automatické spuÅ¡tÄ›nà pÅ™i startu"</string> <string name="permdesc_receiveBootCompleted" msgid="698336728415008796">"Umožňuje aplikaci spuÅ¡tÄ›nà ihned po spuÅ¡tÄ›nà systému. Toto nastavenà může zpomalit spuÅ¡tÄ›nà telefonu a umožnit aplikaci celkovÄ› zpomalit telefon, protože bude neustále spuÅ¡tÄ›na."</string> @@ -276,7 +276,7 @@ <string name="permdesc_accessMockLocation" msgid="7648286063459727252">"Vytvářà simulované zdroje polohy pro úÄely testovánÃ. Å kodlivé aplikace mohou pomocà tohoto nastavenà zmÄ›nit polohu Äi stav vrácený zdroji skuteÄné polohy, jako je napÅ™. jednotka GPS Äi poskytovatelé sÃtÄ›."</string> <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"pÅ™Ãstup k dalÅ¡Ãm pÅ™Ãkazům poskytovatele polohy"</string> <string name="permdesc_accessLocationExtraCommands" msgid="1948144701382451721">"Umožňuje zÃskat pÅ™Ãstup k dalÅ¡Ãm pÅ™Ãkazům poskytovatele polohy. Å kodlivé aplikace mohou pomocà tohoto nastavenà naruÅ¡it funkci GPS Äi jiných zdrojů polohy."</string> - <string name="permlab_installLocationProvider" msgid="6578101199825193873">"OprávnÄ›nà k instalaci poskytovatele polohy"</string> + <string name="permlab_installLocationProvider" msgid="6578101199825193873">"oprávnÄ›nà k instalaci poskytovatele polohy"</string> <string name="permdesc_installLocationProvider" msgid="5449175116732002106">"VytvoÅ™it simulace zdrojů polohy pro úÄely testovánÃ. Å kodlivé aplikace mohou toto nastavenà využÃt k pÅ™epsánà polohy nebo stavu vráceného zdroji skuteÄné polohy, napÅ™Ãklad systémem GPS nebo poskytovateli sÃtÃ. Mohou také monitorovat polohu a ohlásit ji externÃmu zdroji."</string> <string name="permlab_accessFineLocation" msgid="8116127007541369477">"upÅ™esnÄ›nà polohy (GPS)"</string> <string name="permdesc_accessFineLocation" msgid="7411213317434337331">"Umožňuje aplikaci pÅ™Ãstup ke zdrojům pÅ™esné polohy v telefonu, jako je napÅ™Ãklad systém GPS, je-li k dispozici. Å kodlivé aplikace mohou pomocà tohoto nastavenà zjistit vaÅ¡i polohu a mohou zvýšit spotÅ™ebu baterie."</string> @@ -316,12 +316,10 @@ <string name="permdesc_checkinProperties" msgid="7150307006141883832">"Umožňuje Ätenà i zápis vlastnostà nahraných službou Checkin. Běžné aplikace toto nastavenà obvykle nevyužÃvajÃ."</string> <string name="permlab_bindGadget" msgid="776905339015863471">"zvolit widgety"</string> <string name="permdesc_bindGadget" msgid="2098697834497452046">"Umožňuje aplikaci sdÄ›lit systému, které aplikace mohou použÃvat které widgety. Aplikace s tÃmto oprávnÄ›nÃm mohou zpÅ™Ãstupnit osobnà údaje jiným aplikacÃm. Nenà urÄeno pro běžné aplikace."</string> - <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"zmÄ›ny stavu telefonu"</string> + <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"zmÄ›na stavu telefonu"</string> <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"Umožňuje aplikaci ovládat telefonnà funkce zaÅ™ÃzenÃ. Aplikace s tÃmto oprávnÄ›nÃm může pÅ™epÃnat sÃtÄ› nebo zapnout Äi vypnout bezdrátové pÅ™ipojenà telefonu bez vaÅ¡eho svolenÃ."</string> - <!-- no translation found for permlab_readPhoneState (2326172951448691631) --> - <skip /> - <!-- no translation found for permdesc_readPhoneState (188877305147626781) --> - <skip /> + <string name="permlab_readPhoneState" msgid="2326172951448691631">"Ätenà stavu a identity telefonu"</string> + <string name="permdesc_readPhoneState" msgid="188877305147626781">"Umožňuje aplikaci zÃskat pÅ™Ãstup k telefonnÃm funkcÃm zaÅ™ÃzenÃ. Aplikace s tÃmto oprávnÄ›nÃm mohou urÄit telefonnà a sériové ÄÃslo tohoto telefonu, zda zrovna probÃhá hovor, volané telefonnà ÄÃslo a podobnÄ›."</string> <string name="permlab_wakeLock" msgid="573480187941496130">"zabránÄ›nà pÅ™echodu telefonu do režimu spánku"</string> <string name="permdesc_wakeLock" msgid="7584036471227467099">"Umožňuje aplikaci zabránit pÅ™echodu telefonu do režimu spánku."</string> <string name="permlab_devicePower" msgid="4928622470980943206">"zapnutà Äi vypnutà telefonu"</string> @@ -342,7 +340,7 @@ <string name="permdesc_accessNetworkState" msgid="558721128707712766">"Umožňuje aplikaci zobrazit stav vÅ¡ech sÃtÃ."</string> <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"plný pÅ™Ãstup k Internetu"</string> <string name="permdesc_createNetworkSockets" msgid="4593339106921772192">"Umožňuje aplikaci vytvoÅ™it sÃÅ¥ové sokety."</string> - <string name="permlab_writeApnSettings" msgid="7823599210086622545">"zápis nastavenà pro název pÅ™Ãstupového bodu (APN)"</string> + <string name="permlab_writeApnSettings" msgid="7823599210086622545">"zápis nastavenà názvu pÅ™Ãstupového bodu (APN)"</string> <string name="permdesc_writeApnSettings" msgid="7443433457842966680">"Umožňuje aplikaci zmÄ›nit nastavenà APN, jako je napÅ™Ãklad proxy Äi port APN."</string> <string name="permlab_changeNetworkState" msgid="958884291454327309">"zmÄ›na pÅ™ipojenà k sÃti"</string> <string name="permdesc_changeNetworkState" msgid="6278115726355634395">"Umožňuje aplikaci zmÄ›nit stav pÅ™ipojenà k sÃti."</string> @@ -350,9 +348,9 @@ <string name="permdesc_changeBackgroundDataSetting" msgid="1001482853266638864">"Umožňuje aplikaci zmÄ›nit nastavenà použità dat na pozadÃ."</string> <string name="permlab_accessWifiState" msgid="8100926650211034400">"zobrazenà stavu WiFi"</string> <string name="permdesc_accessWifiState" msgid="485796529139236346">"Umožňuje aplikaci zobrazit informace o stavu pÅ™ipojenà WiFi."</string> - <string name="permlab_changeWifiState" msgid="7280632711057112137">"ZmÄ›nit stav WiFi"</string> + <string name="permlab_changeWifiState" msgid="7280632711057112137">"zmÄ›na stavu WiFi"</string> <string name="permdesc_changeWifiState" msgid="2950383153656873267">"Umožňuje aplikaci pÅ™ipojit se k pÅ™Ãstupovým bodům WiFi Äi se od nich odpojit a provádÄ›t zmÄ›ny nakonfigurovaných sÃtà WiFi."</string> - <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Povolit pÅ™Ãjem Wi-Fi Multicast"</string> + <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"povolenà pÅ™Ãjmu Wi-Fi Multicast"</string> <string name="permdesc_changeWifiMulticastState" msgid="8199464507656067553">"Povoluje aplikaci pÅ™ijÃmat pakety, které nebyly adresovány pÅ™Ãmo vaÅ¡emu zaÅ™ÃzenÃ. Pomocà této možnosti můžete objevit služby nabÃzené ve vaÅ¡Ã blÃzkosti. SpotÅ™eba energie je vyÅ¡Å¡Ã než u režimu bez vÃcesmÄ›rového vysÃlánà (multicast)."</string> <string name="permlab_bluetoothAdmin" msgid="1092209628459341292">"správa rozhranà Bluetooth"</string> <string name="permdesc_bluetoothAdmin" msgid="7256289774667054555">"Umožňuje aplikaci konfigurovat mÃstnà telefon s rozhranÃm Bluetooth a vyhledávat a párovat vzdálená zaÅ™ÃzenÃ."</string> @@ -370,11 +368,11 @@ <string name="permdesc_subscribedFeedsRead" msgid="3622200625634207660">"Umožňuje aplikaci zÃskat podrobnosti o aktuálnÄ› synchronizovaných zdrojÃch."</string> <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"zápis odebÃraných zdrojů"</string> <string name="permdesc_subscribedFeedsWrite" msgid="8121607099326533878">"Umožňuje aplikaci upravit vaÅ¡e aktuálnÄ› synchronizované zdroje. To může Å¡kodlivým aplikacÃm umožnit zmÄ›nu vaÅ¡ich synchronizovaných zdrojů."</string> - <string name="permlab_readDictionary" msgid="432535716804748781">"ÄÃst slovnÃk definovaný uživatelem"</string> + <string name="permlab_readDictionary" msgid="432535716804748781">"Älenà slovnÃku definovaného uživatelem"</string> <string name="permdesc_readDictionary" msgid="1082972603576360690">"Umožnà aplikaci ÄÃst soukromá slova, jména a fráze, která uživatel mohl uložit do svého slovnÃku."</string> - <string name="permlab_writeDictionary" msgid="6703109511836343341">"zapisovat do slovnÃku definovaného uživatelem"</string> + <string name="permlab_writeDictionary" msgid="6703109511836343341">"zápis do slovnÃku definovaného uživatelem"</string> <string name="permdesc_writeDictionary" msgid="2241256206524082880">"Umožnà aplikaci zapisovat nová slova do uživatelského slovnÃku."</string> - <string name="permlab_sdcardWrite" msgid="8079403759001777291">"ZmÄ›nit/smazat obsah karty SD"</string> + <string name="permlab_sdcardWrite" msgid="8079403759001777291">"zmÄ›na/smazánà obsah karty SD"</string> <string name="permdesc_sdcardWrite" msgid="6643963204976471878">"Umožnà aplikaci zápis na kartu SD."</string> <string-array name="phoneTypes"> <item msgid="8901098336658710359">"Domů"</item> @@ -473,10 +471,10 @@ <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string> <string name="js_dialog_before_unload" msgid="1901675448179653089">"Chcete opustit tuto stránku?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Vyberte OK, chcete-li pokraÄovat, nebo ZruÅ¡it, chcete-li na stránce zůstat."</string> <string name="save_password_label" msgid="6860261758665825069">"Potvrdit"</string> - <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"ÄŒtenà historie a záložek prohlÞeÄe"</string> - <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Umožňuje aplikaci ÄÃst vÅ¡echny navÅ¡tÃvené adresy URL a záložky prohlÞeÄe."</string> - <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"Zapisovat historii a záložky prohlÞeÄe"</string> - <string name="permdesc_writeHistoryBookmarks" msgid="945571990357114950">"Umožnà aplikaci zmÄ›nit historii Äi záložky prohlÞeÄe uložené v telefonu. Å kodlivé aplikace mohou pomocà tohoto nastavenà vymazat Äi pozmÄ›nit data prohlÞeÄe."</string> + <string name="permlab_readHistoryBookmarks" msgid="1284843728203412135">"Ätenà historie a záložek ProhlÞeÄe"</string> + <string name="permdesc_readHistoryBookmarks" msgid="4981489815467617191">"Umožňuje aplikaci ÄÃst vÅ¡echny navÅ¡tÃvené adresy URL a záložky ProhlÞeÄe."</string> + <string name="permlab_writeHistoryBookmarks" msgid="9009434109836280374">"zápis do historie a záložek ProhlÞeÄe"</string> + <string name="permdesc_writeHistoryBookmarks" msgid="945571990357114950">"Umožnà aplikaci zmÄ›nit historii Äi záložky prohlÞeÄe uložené v telefonu. Å kodlivé aplikace mohou pomocà tohoto nastavenà vymazat Äi pozmÄ›nit data ProhlÞeÄe."</string> <string name="save_password_message" msgid="767344687139195790">"Chcete, aby si prohlÞeÄ zapamatoval toto heslo?"</string> <string name="save_password_notnow" msgid="6389675316706699758">"Nynà ne"</string> <string name="save_password_remember" msgid="6491879678996749466">"Zapamatovat"</string> @@ -630,7 +628,7 @@ <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"PÅ™ehrávánà pomocà rozhranà Bluetooth"</string> <string name="volume_call" msgid="3941680041282788711">"Hlasitost hovoru"</string> <string name="volume_bluetooth_call" msgid="2002891926351151534">"Hlasitost pÅ™ÃchozÃch hovorů pÅ™i pÅ™ipojenà Bluetooth"</string> - <string name="volume_alarm" msgid="1985191616042689100">"Hlasitost upozornÄ›nà a budÃku"</string> + <string name="volume_alarm" msgid="1985191616042689100">"Hlasitost budÃku"</string> <string name="volume_notification" msgid="2422265656744276715">"Hlasitost oznámenÃ"</string> <string name="volume_unknown" msgid="1400219669770445902">"Hlasitost"</string> <string name="ringtone_default" msgid="3789758980357696936">"Výchozà vyzvánÄ›cà tón"</string> diff --git a/core/res/res/values-de/donottranslate-cldr.xml b/core/res/res/values-de/donottranslate-cldr.xml index babf1a0..8a9c1a7 100644 --- a/core/res/res/values-de/donottranslate-cldr.xml +++ b/core/res/res/values-de/donottranslate-cldr.xml @@ -91,17 +91,17 @@ <string name="today">Heute</string> <string name="tomorrow">Morgen</string> - <string name="hour_minute_24">%-k:%M h</string> + <string name="hour_minute_24">%-k:%M</string> <string name="hour_minute_ampm">%-l:%M %p</string> <string name="hour_minute_cap_ampm">%-l:%M %^p</string> <string name="twelve_hour_time_format">h:mm a</string> - <string name="twenty_four_hour_time_format">H:mm \'h\'</string> + <string name="twenty_four_hour_time_format">H:mm</string> <string name="numeric_date">%d.%m.%Y</string> <string name="numeric_date_format">dd.MM.yyyy</string> <string name="numeric_date_template">"%s.%s.%s"</string> <string name="month_day_year">%-e. %B %Y</string> - <string name="time_of_day">%H:%M:%S h</string> - <string name="date_and_time">%d.%m.%Y, %H:%M:%S h</string> + <string name="time_of_day">%H:%M:%S</string> + <string name="date_and_time">%d.%m.%Y, %H:%M:%S</string> <string name="date_time">%1$s, %2$s</string> <string name="time_date">%3$s, %1$s</string> <string name="abbrev_month_day_year">%d.%m.%Y</string> @@ -111,37 +111,37 @@ <string name="abbrev_month_day">%-e. %b</string> <string name="abbrev_month">%-b</string> <string name="abbrev_month_year">%b %Y</string> - <string name="time1_time2">%1$s bis %2$s</string> - <string name="date1_date2">%2$s bis %5$s</string> - <string name="numeric_md1_md2">%3$s.%2$s. bis %8$s.%7$s.</string> - <string name="numeric_wday1_md1_wday2_md2">%1$s, %3$s.%2$s. bis %6$s, %8$s.%7$s.</string> - <string name="numeric_mdy1_mdy2">%3$s.%2$s.%4$s bis %8$s.%7$s.%9$s</string> - <string name="numeric_wday1_mdy1_wday2_mdy2">%1$s, %3$s.%2$s.%4$s bis %6$s, %8$s.%7$s.%9$s</string> - <string name="numeric_wday1_mdy1_time1_wday2_mdy2_time2">%1$s, %3$s.%2$s.%4$s, %5$s bis %6$s, %8$s.%7$s.%9$s, %10$s</string> - <string name="numeric_md1_time1_md2_time2">%3$s.%2$s., %5$s bis %8$s.%7$s., %10$s</string> - <string name="numeric_wday1_md1_time1_wday2_md2_time2">%1$s, %3$s.%2$s., %5$s bis %6$s, %8$s.%7$s., %10$s</string> - <string name="numeric_mdy1_time1_mdy2_time2">%3$s.%2$s.%4$s, %5$s bis %8$s.%7$s.%9$s, %10$s</string> - <string name="wday1_date1_time1_wday2_date2_time2">%1$s, %2$s, %3$s bis %4$s, %5$s, %6$s</string> - <string name="wday1_date1_wday2_date2">%1$s, %2$s bis %4$s, %5$s</string> - <string name="date1_time1_date2_time2">%2$s, %3$s bis %5$s, %6$s</string> + <string name="time1_time2">%1$s - %2$s</string> + <string name="date1_date2">%2$s - %5$s</string> + <string name="numeric_md1_md2">%3$s.%2$s. - %8$s.%7$s.</string> + <string name="numeric_wday1_md1_wday2_md2">%1$s, %3$s.%2$s. - %6$s, %8$s.%7$s.</string> + <string name="numeric_mdy1_mdy2">%3$s.%2$s.%4$s - %8$s.%7$s.%9$s</string> + <string name="numeric_wday1_mdy1_wday2_mdy2">%1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s</string> + <string name="numeric_wday1_mdy1_time1_wday2_mdy2_time2">%1$s, %3$s.%2$s.%4$s, %5$s - %6$s, %8$s.%7$s.%9$s, %10$s</string> + <string name="numeric_md1_time1_md2_time2">%3$s.%2$s., %5$s - %8$s.%7$s., %10$s</string> + <string name="numeric_wday1_md1_time1_wday2_md2_time2">%1$s, %3$s.%2$s., %5$s - %6$s, %8$s.%7$s., %10$s</string> + <string name="numeric_mdy1_time1_mdy2_time2">%3$s.%2$s.%4$s, %5$s - %8$s.%7$s.%9$s, %10$s</string> + <string name="wday1_date1_time1_wday2_date2_time2">%1$s, %2$s, %3$s - %4$s, %5$s, %6$s</string> + <string name="wday1_date1_wday2_date2">%1$s, %2$s - %4$s, %5$s</string> + <string name="date1_time1_date2_time2">%2$s, %3$s - %5$s, %6$s</string> <string name="time_wday_date">%2$s, %3$s, %1$s</string> <string name="wday_date">%2$s, %3$s</string> <string name="time_wday">%2$s, %1$s</string> - <string name="same_year_md1_md2">%3$s. %2$s bis %8$s. %7$s</string> - <string name="same_year_wday1_md1_wday2_md2">%1$s, %3$s. %2$s bis %6$s, %8$s. %7$s</string> - <string name="same_year_md1_time1_md2_time2">%3$s. %2$s, %5$s bis %8$s. %7$s, %10$s</string> - <string name="same_month_md1_time1_md2_time2">%3$s. %2$s, %5$s bis %8$s. %7$s, %10$s</string> - <string name="same_year_wday1_md1_time1_wday2_md2_time2">%1$s, %3$s. %2$s, %5$s bis %6$s, %8$s. %7$s, %10$s</string> - <string name="same_month_wday1_md1_time1_wday2_md2_time2">%1$s, %3$s. %2$s, %5$s bis %6$s, %8$s. %7$s, %10$s</string> - <string name="same_year_mdy1_time1_mdy2_time2">%3$s. %2$s %4$s, %5$s bis %8$s. %7$s %9$s, %10$s</string> - <string name="same_month_mdy1_time1_mdy2_time2">%3$s. %2$s %4$s, %5$s bis %8$s. %7$s %9$s, %10$s</string> - <string name="same_year_wday1_mdy1_time1_wday2_mdy2_time2">%1$s, %3$s. %2$s %4$s, %5$s bis %6$s, %8$s. %7$s %9$s, %10$s</string> - <string name="same_month_wday1_mdy1_time1_wday2_mdy2_time2">%1$s, %3$s. %2$s %4$s, %5$s bis %6$s, %8$s. %7$s %9$s, %10$s</string> - <string name="same_month_wday1_mdy1_wday2_mdy2">%1$s, %3$s. %2$s %4$s bis %6$s, %8$s. %7$s %9$s</string> - <string name="same_month_md1_md2">%3$s. bis %8$s. %2$s</string> - <string name="same_month_wday1_md1_wday2_md2">%1$s, %3$s. %2$s bis %6$s, %8$s. %7$s</string> - <string name="same_year_mdy1_mdy2">%3$s. %2$s bis %8$s. %7$s %9$s</string> - <string name="same_month_mdy1_mdy2">%3$s. bis %8$s. %2$s %9$s</string> - <string name="same_year_wday1_mdy1_wday2_mdy2">%1$s, %3$s. %2$s bis %6$s, %8$s. %7$s %9$s</string> + <string name="same_year_md1_md2">%3$s. %2$s - %8$s. %7$s</string> + <string name="same_year_wday1_md1_wday2_md2">%1$s, %3$s. %2$s - %6$s, %8$s. %7$s</string> + <string name="same_year_md1_time1_md2_time2">%3$s. %2$s, %5$s - %8$s. %7$s, %10$s</string> + <string name="same_month_md1_time1_md2_time2">%3$s. %2$s, %5$s - %8$s. %7$s, %10$s</string> + <string name="same_year_wday1_md1_time1_wday2_md2_time2">%1$s, %3$s. %2$s, %5$s - %6$s, %8$s. %7$s, %10$s</string> + <string name="same_month_wday1_md1_time1_wday2_md2_time2">%1$s, %3$s. %2$s, %5$s - %6$s, %8$s. %7$s, %10$s</string> + <string name="same_year_mdy1_time1_mdy2_time2">%3$s. %2$s %4$s, %5$s - %8$s. %7$s %9$s, %10$s</string> + <string name="same_month_mdy1_time1_mdy2_time2">%3$s. %2$s %4$s, %5$s - %8$s. %7$s %9$s, %10$s</string> + <string name="same_year_wday1_mdy1_time1_wday2_mdy2_time2">%1$s, %3$s. %2$s %4$s, %5$s - %6$s, %8$s. %7$s %9$s, %10$s</string> + <string name="same_month_wday1_mdy1_time1_wday2_mdy2_time2">%1$s, %3$s. %2$s %4$s, %5$s - %6$s, %8$s. %7$s %9$s, %10$s</string> + <string name="same_month_wday1_mdy1_wday2_mdy2">%1$s, %3$s. %2$s %4$s - %6$s, %8$s. %7$s %9$s</string> + <string name="same_month_md1_md2">%3$s. - %8$s. %2$s</string> + <string name="same_month_wday1_md1_wday2_md2">%1$s, %3$s. %2$s - %6$s, %8$s. %7$s</string> + <string name="same_year_mdy1_mdy2">%3$s. %2$s - %8$s. %7$s %9$s</string> + <string name="same_month_mdy1_mdy2">%3$s. - %8$s. %2$s %9$s</string> + <string name="same_year_wday1_mdy1_wday2_mdy2">%1$s, %3$s. %2$s - %6$s, %8$s. %7$s %9$s</string> <string name="short_format_month">%b</string> </resources> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 34e52a5..10a736c 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -318,10 +318,8 @@ <string name="permdesc_bindGadget" msgid="2098697834497452046">"Ermöglicht der Anwendung, dem System zu melden, welche Widgets von welcher Anwendung verwendet werden können. Mit dieser Berechtigung können Anwendungen anderen Anwendungen Zugriff auf persönliche Daten gewähren. Nicht für normale Anwendungen vorgesehen."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"Telefonstatus ändern"</string> <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"Ermöglicht einer Anwendung, die Telefonfunktionen des Gerätes zu steuern. Eine Anwendung mit dieser Berechtigung kann unter anderem das Netzwerk wechseln oder die Mobilfunkverbindung des Telefons ein- und ausschalten, ohne Sie darüber zu informieren."</string> - <!-- no translation found for permlab_readPhoneState (2326172951448691631) --> - <skip /> - <!-- no translation found for permdesc_readPhoneState (188877305147626781) --> - <skip /> + <string name="permlab_readPhoneState" msgid="2326172951448691631">"Telefonstatus lesen und identifizieren"</string> + <string name="permdesc_readPhoneState" msgid="188877305147626781">"Ermöglicht der Anwendung, auf die Telefonfunktionen des Gerätes zuzugreifen. Eine Anwendung mit dieser Berechtigung kann unter anderem bestimmen, welche Telefonnummer dieses Telefon verwendet, ob ein Anruf aktiv ist oder mit welcher Nummer der Anrufer verbunden ist."</string> <string name="permlab_wakeLock" msgid="573480187941496130">"Standby-Modus deaktivieren"</string> <string name="permdesc_wakeLock" msgid="7584036471227467099">"Ermöglicht einer Anwendung, den Standby-Modus des Telefons zu deaktivieren."</string> <string name="permlab_devicePower" msgid="4928622470980943206">"Gerät ein- oder ausschalten"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index f9fd376..c00a4be 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -318,10 +318,8 @@ <string name="permdesc_bindGadget" msgid="2098697834497452046">"Permite que una aplicación indique al sistema los widgets que puede utilizar cada aplicación. Se trata de un permiso que no pueden utilizar las aplicaciones normales y que permite que una aplicación conceda acceso a datos personales a otras aplicaciones."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar estado del teléfono"</string> <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"Permite que la aplicación controle las funciones de teléfono del dispositivo. Una aplicación con este permiso puede cambiar redes, activar y desactivar la señal móvil, etc., sin necesidad de notificar al usuario."</string> - <!-- no translation found for permlab_readPhoneState (2326172951448691631) --> - <skip /> - <!-- no translation found for permdesc_readPhoneState (188877305147626781) --> - <skip /> + <string name="permlab_readPhoneState" msgid="2326172951448691631">"leer la identidad y el estado del teléfono"</string> + <string name="permdesc_readPhoneState" msgid="188877305147626781">"Permite que la aplicación acceda a las funciones de teléfono del dispositivo. Una aplicación con este permiso puede determinar el número de teléfono y el número de serie de este teléfono, si una llamada está activa, el número al que está vinculada esa llamada, etc."</string> <string name="permlab_wakeLock" msgid="573480187941496130">"impedir que el teléfono entre en modo de suspensión"</string> <string name="permdesc_wakeLock" msgid="7584036471227467099">"Permite que una aplicación impida que el teléfono entre en modo de suspensión."</string> <string name="permlab_devicePower" msgid="4928622470980943206">"encender o apagar el teléfono"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 865b2d1..377d202 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -318,10 +318,8 @@ <string name="permdesc_bindGadget" msgid="2098697834497452046">"Permet à l\'application de signaler au système quels widgets peuvent être utilisés par quelle application. Grâce à cette autorisation, les applications peuvent accorder l\'accès à des données personnelles à d\'autres applications. Cette option n\'est pas utilisée par les applications standard."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"Modification de l\'état du téléphone"</string> <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"Permet à une application de contrôler les fonctionnalités téléphoniques de l\'appareil. Une application bénéficiant de cette autorisation peut changer de réseau, éteindre et allumer le signal radio du téléphone, etc., sans vous en avertir."</string> - <!-- no translation found for permlab_readPhoneState (2326172951448691631) --> - <skip /> - <!-- no translation found for permdesc_readPhoneState (188877305147626781) --> - <skip /> + <string name="permlab_readPhoneState" msgid="2326172951448691631">"Lire l\'état et l\'identité du téléphone"</string> + <string name="permdesc_readPhoneState" msgid="188877305147626781">"Permet à l\'application d\'accéder aux fonctionnalités d\'appel du téléphone. L\'application peut alors déterminer le numéro de téléphone et le numéro de série de l\'appareil, savoir si un appel est en cours, identifier le numéro appelé, etc."</string> <string name="permlab_wakeLock" msgid="573480187941496130">"Arrêt du mode veille sur le téléphone"</string> <string name="permdesc_wakeLock" msgid="7584036471227467099">"Permet à une application d\'empêcher votre téléphone de passer en mode veille."</string> <string name="permlab_devicePower" msgid="4928622470980943206">"Éteindre ou allumer le téléphone"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 9ccc6f3..fde4f23 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -318,10 +318,8 @@ <string name="permdesc_bindGadget" msgid="2098697834497452046">"Consente all\'applicazione di indicare al sistema quali widget possono essere utilizzati e da quale applicazione. Con questa autorizzazione, le applicazioni possono consentire ad altre applicazioni di accedere a dati personali. Da non usare per normali applicazioni."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modifica stato del telefono"</string> <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"Consente all\'applicazione di controllare le funzioni telefoniche del dispositivo. Un\'applicazione con questa autorizzazione può cambiare rete, attivare e disattivare il segnale cellulare e così via, senza alcuna notifica."</string> - <!-- no translation found for permlab_readPhoneState (2326172951448691631) --> - <skip /> - <!-- no translation found for permdesc_readPhoneState (188877305147626781) --> - <skip /> + <string name="permlab_readPhoneState" msgid="2326172951448691631">"lettura stato e identità del telefono"</string> + <string name="permdesc_readPhoneState" msgid="188877305147626781">"Consente l\'accesso dell\'applicazione alle funzioni telefoniche del dispositivo. Un\'applicazione con questa autorizzazione può determinare il numero del telefono in uso e il suo numero di serie, se una chiamata è attiva o meno, il numero a cui è collegata la chiamata e simili."</string> <string name="permlab_wakeLock" msgid="573480187941496130">"disattivazione stand-by del telefono"</string> <string name="permdesc_wakeLock" msgid="7584036471227467099">"Consente a un\'applicazione di impedire lo stand-by del telefono."</string> <string name="permlab_devicePower" msgid="4928622470980943206">"accensione o spegnimento del telefono"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index b8bfdf6..f6a546f 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -318,10 +318,8 @@ <string name="permdesc_bindGadget" msgid="2098697834497452046">"ã©ã®ã‚¢ãƒ—リケーションãŒã©ã®ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã‚’使用ã§ãã‚‹ã‹ã‚·ã‚¹ãƒ†ãƒ ã«æŒ‡å®šã™ã‚‹ã“ã¨ã‚’ã“ã®ã‚¢ãƒ—リケーションã«è¨±å¯ã—ã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーション間ã§å€‹äººãƒ‡ãƒ¼ã‚¿ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚通常ã®ã‚¢ãƒ—リケーションã§ã¯ä½¿ç”¨ã—ã¾ã›ã‚“。"</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"端末ステータスã®å¤‰æ›´"</string> <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"端末ã®é›»è©±æ©Ÿèƒ½ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã‚’アプリケーションã«è¨±å¯ã—ã¾ã™ã€‚アプリケーションã¯ã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®åˆ‡ã‚Šæ›¿ãˆã€æºå¸¯é›»è©±ã®ç„¡ç·šé€šä¿¡ã®ã‚ªãƒ³/オフãªã©ã‚’通知ã›ãšã«è¡Œã†ã“ã¨ãŒã§ãã¾ã™ã€‚"</string> - <!-- no translation found for permlab_readPhoneState (2326172951448691631) --> - <skip /> - <!-- no translation found for permdesc_readPhoneState (188877305147626781) --> - <skip /> + <string name="permlab_readPhoneState" msgid="2326172951448691631">"æºå¸¯ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¨IDã®èªã¿å–ã‚Š"</string> + <string name="permdesc_readPhoneState" msgid="188877305147626781">"端末ã®é›»è©±æ©Ÿèƒ½ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’アプリケーションã«è¨±å¯ã—ã¾ã™ã€‚ã“ã®æ¨©é™ãŒè¨±å¯ã•ã‚ŒãŸã‚¢ãƒ—リケーションã§ã¯ã€ã“ã®æºå¸¯ã®é›»è©±ç•ªå·ã‚„シリアル番å·ã€é€šè©±ä¸ã‹ã©ã†ã‹ã€é€šè©±ç›¸æ‰‹ã®é›»è©±ç•ªå·ãªã©ã‚’特定ã§ãã¾ã™ã€‚"</string> <string name="permlab_wakeLock" msgid="573480187941496130">"端末ã®ã‚¹ãƒªãƒ¼ãƒ—を無効ã«ã™ã‚‹"</string> <string name="permdesc_wakeLock" msgid="7584036471227467099">"端末ã®ã‚¹ãƒªãƒ¼ãƒ—を無効ã«ã™ã‚‹ã“ã¨ã‚’アプリケーションã«è¨±å¯ã—ã¾ã™ã€‚"</string> <string name="permlab_devicePower" msgid="4928622470980943206">"é›»æºã®ON/OFF"</string> @@ -455,7 +453,7 @@ <string name="lockscreen_glogin_invalid_input" msgid="1364051473347485908">"ユーザーåã¾ãŸã¯ãƒ‘スワードãŒæ£ã—ãã‚ã‚Šã¾ã›ã‚“。"</string> <string name="hour_ampm" msgid="4329881288269772723">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%P</xliff:g>"</string> <string name="hour_cap_ampm" msgid="1829009197680861107">"<xliff:g id="HOUR">%-l</xliff:g><xliff:g id="AMPM">%p</xliff:g>"</string> - <string name="status_bar_clear_all_button" msgid="7774721344716731603">"クリア"</string> + <string name="status_bar_clear_all_button" msgid="7774721344716731603">"通知を消去"</string> <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"通知ãªã—"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"実行ä¸"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"通知"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 00b03d8..709e7cc 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -318,10 +318,8 @@ <string name="permdesc_bindGadget" msgid="2098697834497452046">"Hiermee kan een toepassing het systeem melden welke widgets door welke toepassing kunnen worden gebruikt. Met deze toestemming kunnen toepassingen andere toepassingen toegang geven tot persoonlijke gegevens. Niet voor gebruik door normale toepassingen."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"telefoonstatus wijzigen"</string> <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"Hiermee kan de toepassing de telefoonfuncties van het apparaat beheren. Een toepassing met deze machtiging kan schakelen tussen netwerken, de radio van de telefoon in- of uitschakelen en dergelijke zonder dat u hiervan op de hoogte wordt gesteld."</string> - <!-- no translation found for permlab_readPhoneState (2326172951448691631) --> - <skip /> - <!-- no translation found for permdesc_readPhoneState (188877305147626781) --> - <skip /> + <string name="permlab_readPhoneState" msgid="2326172951448691631">"telefoonstatus en -identiteit lezen"</string> + <string name="permdesc_readPhoneState" msgid="188877305147626781">"Hiermee krijgt de toepassing toegang tot de telefoonfuncties van het apparaat. Een toepassing met de betreffende machtiging kan het telefoonnummer en serienummer van deze telefoon achterhalen, bepalen of een oproep actief is, het gekozen nummer achterhalen en dergelijke."</string> <string name="permlab_wakeLock" msgid="573480187941496130">"voorkomen dat telefoon overschakelt naar slaapmodus"</string> <string name="permdesc_wakeLock" msgid="7584036471227467099">"Hiermee kan een toepassing voorkomen dat de telefoon overschakelt naar de slaapmodus."</string> <string name="permlab_devicePower" msgid="4928622470980943206">"telefoon in- of uitschakelen"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 45e0795..a33e94e 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -318,10 +318,8 @@ <string name="permdesc_bindGadget" msgid="2098697834497452046">"Zezwala aplikacjom na wskazywanie systemowi, które widżety mogÄ… być używane przez inne aplikacje. Z użyciem tego pozwolenia aplikacje mogÄ… udzielać dostÄ™pu do danych osobistych innym aplikacjom. Nie jest ono przeznaczone dla zwykÅ‚ych aplikacji."</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"zmiana stanu telefonu"</string> <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"Pozwala aplikacji na kontrolowanie funkcji telefonu w urzÄ…dzeniu. Aplikacja z tymi uprawnieniami może zmieniać, wÅ‚Ä…czać i wyÅ‚Ä…czać sieci bezprzewodowe itp. bez informowania użytkownika."</string> - <!-- no translation found for permlab_readPhoneState (2326172951448691631) --> - <skip /> - <!-- no translation found for permdesc_readPhoneState (188877305147626781) --> - <skip /> + <string name="permlab_readPhoneState" msgid="2326172951448691631">"odczytywanie stanu i informacji o telefonie"</string> + <string name="permdesc_readPhoneState" msgid="188877305147626781">"Umożliwia aplikacji dostÄ™p do funkcji telefonu w tym urzÄ…dzeniu. Aplikacja z takim pozwoleniem może okreÅ›lić numer telefonu i numer seryjny tego telefonu, czy aktywne jest poÅ‚Ä…czenie, numer, z którym nawiÄ…zane jest poÅ‚Ä…czenie itp."</string> <string name="permlab_wakeLock" msgid="573480187941496130">"zapobieganie przejÅ›ciu telefonu w stan uÅ›pienia"</string> <string name="permdesc_wakeLock" msgid="7584036471227467099">"Pozwala aplikacji na zapobieganie przejÅ›ciu telefonu w stan uÅ›pienia."</string> <string name="permlab_devicePower" msgid="4928622470980943206">"wÅ‚Ä…czanie lub wyÅ‚Ä…czanie telefonu"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index d0126ab..7b4b962 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -318,10 +318,8 @@ <string name="permdesc_bindGadget" msgid="2098697834497452046">"å…許應用程å¼å‘ŠçŸ¥ç³»çµ±å“ªå€‹æ‡‰ç”¨ç¨‹å¼å¯ä»¥ä½¿ç”¨å“ªäº›å°å·¥å…·ã€‚é–‹å•Ÿæ¤æ¬Šé™å¾Œï¼Œæ‡‰ç”¨ç¨‹å¼æœƒè®“其他程å¼ä½¿ç”¨å€‹äººè³‡æ–™ï¼Œä½†ä¸€èˆ¬æ‡‰ç”¨ç¨‹å¼ä¸é©åˆä½¿ç”¨æ¤åŠŸèƒ½ã€‚"</string> <string name="permlab_modifyPhoneState" msgid="8423923777659292228">"修改手機狀態"</string> <string name="permdesc_modifyPhoneState" msgid="3302284561346956587">"å…許應用程å¼æŽ§åˆ¶é›»è©±åŠŸèƒ½ã€‚æ“有æ¤æ¬Šé™çš„程å¼å¯è‡ªè¡Œåˆ‡æ›ç¶²è·¯ã€é–‹é—œç„¡ç·šé€šè¨ŠåŠŸèƒ½ã€‚"</string> - <!-- no translation found for permlab_readPhoneState (2326172951448691631) --> - <skip /> - <!-- no translation found for permdesc_readPhoneState (188877305147626781) --> - <skip /> + <string name="permlab_readPhoneState" msgid="2326172951448691631">"讀å–手機狀態和è˜åˆ¥ç¢¼"</string> + <string name="permdesc_readPhoneState" msgid="188877305147626781">"å…許應用程å¼å˜å–è£ç½®çš„電話功能資料。ç²å¾—æ¤æ¬Šé™çš„應用程å¼å¯å–得手機的號碼和åºè™Ÿã€æ˜¯å¦åœ¨é€šè©±ä¸ï¼Œä»¥åŠé€šè©±å¦ä¸€æ–¹çš„電話號碼ç‰è³‡æ–™ã€‚"</string> <string name="permlab_wakeLock" msgid="573480187941496130">"防æ¢æ‰‹æ©Ÿé€²å…¥å¾…命狀態"</string> <string name="permdesc_wakeLock" msgid="7584036471227467099">"å…許應用程å¼é˜²æ¢æ‰‹æ©Ÿé€²å…¥å¾…命。"</string> <string name="permlab_devicePower" msgid="4928622470980943206">"開啟或關閉電æº"</string> @@ -426,7 +424,7 @@ <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"緊急電話號碼"</string> <string name="lockscreen_carrier_default" msgid="8812714795156374435">"(沒有æœå‹™)"</string> <string name="lockscreen_screen_locked" msgid="7288443074806832904">"螢幕已鎖定。"</string> - <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"按下 [é¸å–®] 解鎖或撥打緊急電話。"</string> + <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"按下 [Menu] 解鎖或撥打緊急電話。"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"按下 Menu éµè§£éŽ–。"</string> <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"畫出解鎖圖形"</string> <string name="lockscreen_emergency_call" msgid="5347633784401285225">"緊急電話"</string> @@ -484,7 +482,7 @@ <string name="open_permission_deny" msgid="5661861460947222274">"您沒有開啟æ¤é 的權é™ã€‚"</string> <string name="text_copied" msgid="4985729524670131385">"æ–‡å—已複製到剪貼簿。"</string> <string name="more_item_label" msgid="4650918923083320495">"更多"</string> - <string name="prepend_shortcut_label" msgid="2572214461676015642">"[é¸å–®] +"</string> + <string name="prepend_shortcut_label" msgid="2572214461676015642">"[Menu] +"</string> <string name="menu_space_shortcut_label" msgid="2410328639272162537">"空白éµ"</string> <string name="menu_enter_shortcut_label" msgid="2743362785111309668">"輸入"</string> <string name="menu_delete_shortcut_label" msgid="3658178007202748164">"刪除"</string> diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index fd78f83..d5f8dcb 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2866,16 +2866,16 @@ when the user clicks a suggestion. <i>Optional attribute.</i> --> <attr name="searchSuggestIntentData" format="string" /> - <!-- If provided, this is the minimum number of characters needed to trigger + <!-- @hide If provided, this is the minimum number of characters needed to trigger search suggestions. The default value is 0. <i>Optional attribute.</i> --> <attr name="searchSuggestThreshold" format="integer" /> - <!-- If provided and <code>true</code>, this searchable activity will be + <!-- @hide If provided and <code>true</code>, this searchable activity will be included in any global lists of search targets. - The default value is <code>false</code>. <i>Optional attribute.</i>. --> + The default value is <code>false</code>. <i>Optional attribute.</i>.--> <attr name="includeInGlobalSearch" format="boolean" /> - <!-- If provided and <code>true</code>, this searchable activity will be invoked for all + <!-- @hide If provided and <code>true</code>, this searchable activity will be invoked for all queries in a particular session. If set to <code>false</code> and the activity returned zero results for a query, it will not be invoked again in that session for supersets of that zero-results query. For example, if the activity returned zero @@ -2883,7 +2883,7 @@ The default value is <code>false</code>. <i>Optional attribute.</i>. --> <attr name="queryAfterZeroResults" format="boolean" /> - <!-- If provided, this string will be used to describe the searchable item in the + <!-- @hide If provided, this string will be used to describe the searchable item in the searchable items settings within system search settings. <i>Optional attribute.</i> --> <attr name="searchSettingsDescription" format="string" /> diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 48b565f..442357e 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -577,9 +577,7 @@ backup and restore of the application's settings to external storage. --> <attr name="backupAgent" format="string" /> - <!-- Whether the application allows its data to be backed up at all. This - attribute defaults to 'true': unless the application opts out, the - user will be able to back up its data to desktop storage. --> + <!-- This is not the attribute you are looking for. --> <attr name="allowBackup" format="boolean" /> <!-- The <code>manifest</code> tag is the root of an diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 6a6b7fc..d722413 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -1092,74 +1092,56 @@ <eat-comment /> <public type="attr" name="tension" id="0x0101026a" /> - <public type="attr" name="extraTension" /> - <public type="attr" name="anyDensity" /> - <public type="attr" name="searchSuggestThreshold" /> - <public type="attr" name="includeInGlobalSearch" /> - <public type="attr" name="onClick" /> - <public type="attr" name="targetSdkVersion" /> - <public type="attr" name="maxSdkVersion" /> - <public type="attr" name="testOnly" /> - <public type="attr" name="contentDescription" /> - <public type="attr" name="gestureStrokeWidth" /> - <public type="attr" name="gestureColor" /> - <public type="attr" name="uncertainGestureColor" /> - <public type="attr" name="fadeOffset" /> - <public type="attr" name="fadeDuration" /> - <public type="attr" name="gestureStrokeType" /> - <public type="attr" name="gestureStrokeLengthThreshold" /> - <public type="attr" name="gestureStrokeSquarenessThreshold" /> - <public type="attr" name="gestureStrokeAngleThreshold" /> - <public type="attr" name="eventsInterceptionEnabled" /> - <public type="attr" name="fadeEnabled" /> - <public type="attr" name="backupAgent" /> - <public type="attr" name="allowBackup" /> - <public type="attr" name="glEsVersion" /> - <public type="attr" name="queryAfterZeroResults" /> - <public type="attr" name="dropDownHeight" /> - <public type="attr" name="smallScreens" /> - <public type="attr" name="normalScreens" /> - <public type="attr" name="largeScreens" /> - <public type="attr" name="progressBarStyleInverse" /> - <public type="attr" name="progressBarStyleSmallInverse" /> - <public type="attr" name="progressBarStyleLargeInverse" /> - <public type="attr" name="searchSettingsDescription" /> - <public type="attr" name="textColorPrimaryInverseDisableOnly" /> - <public type="attr" name="autoUrlDetect" /> - <public type="attr" name="resizeable" /> + <public type="attr" name="extraTension" id="0x0101026b" /> + <public type="attr" name="anyDensity" id="0x0101026c" /> + <!-- {@hide} --> + <public type="attr" name="searchSuggestThreshold" id="0x0101026d" /> + <!-- {@hide} --> + <public type="attr" name="includeInGlobalSearch" id="0x0101026e" /> + <public type="attr" name="onClick" id="0x0101026f" /> + <public type="attr" name="targetSdkVersion" id="0x01010270" /> + <public type="attr" name="maxSdkVersion" id="0x01010271" /> + <public type="attr" name="testOnly" id="0x01010272" /> + <public type="attr" name="contentDescription" id="0x01010273" /> + <public type="attr" name="gestureStrokeWidth" id="0x01010274" /> + <public type="attr" name="gestureColor" id="0x01010275" /> + <public type="attr" name="uncertainGestureColor" id="0x01010276" /> + <public type="attr" name="fadeOffset" id="0x01010277" /> + <public type="attr" name="fadeDuration" id="0x01010278" /> + <public type="attr" name="gestureStrokeType" id="0x01010279" /> + <public type="attr" name="gestureStrokeLengthThreshold" id="0x0101027a" /> + <public type="attr" name="gestureStrokeSquarenessThreshold" id="0x0101027b" /> + <public type="attr" name="gestureStrokeAngleThreshold" id="0x0101027c" /> + <public type="attr" name="eventsInterceptionEnabled" id="0x0101027d" /> + <public type="attr" name="fadeEnabled" id="0x0101027e" /> + <public type="attr" name="backupAgent" id="0x0101027f" /> + <public type="attr" name="allowBackup" id="0x01010280" /> + <public type="attr" name="glEsVersion" id="0x01010281" /> + <!-- {@hide} --> + <public type="attr" name="queryAfterZeroResults" id="0x01010282" /> + <public type="attr" name="dropDownHeight" id="0x01010283" /> + <public type="attr" name="smallScreens" id="0x01010284" /> + <public type="attr" name="normalScreens" id="0x01010285" /> + <public type="attr" name="largeScreens" id="0x01010286" /> + <public type="attr" name="progressBarStyleInverse" id="0x01010287" /> + <public type="attr" name="progressBarStyleSmallInverse" id="0x01010288" /> + <public type="attr" name="progressBarStyleLargeInverse" id="0x01010289" /> + <!-- {@hide} --> + <public type="attr" name="searchSettingsDescription" id="0x0101028a" /> + <public type="attr" name="textColorPrimaryInverseDisableOnly" id="0x0101028b" /> + <public type="attr" name="autoUrlDetect" id="0x0101028c" /> + <public type="attr" name="resizeable" id="0x0101028d" /> - <public-padding type="attr" name="donut_resource_pad" end="0x0101029f" /> - - <public-padding type="id" name="donut_resource_pad" end="0x01020040" /> - <public type="style" name="Widget.ProgressBar.Inverse" id="0x0103005b" /> <public type="style" name="Widget.ProgressBar.Large.Inverse" id="0x0103005c" /> <public type="style" name="Widget.ProgressBar.Small.Inverse" id="0x0103005d" /> - <public-padding type="style" name="donut_resource_pad" end="0x01030070" /> - - <public-padding type="string" name="donut_resource_pad" end="0x01040030" /> - - <public-padding type="dimen" name="donut_resource_pad" end="0x01050010" /> - - <public-padding type="color" name="donut_resource_pad" end="0x01060030" /> - - <public-padding type="array" name="donut_resource_pad" end="0x01070010" /> - <public type="drawable" name="stat_sys_vp_phone_call" /> - <public type="drawable" name="stat_sys_vp_phone_call_on_hold" /> - - <public-padding type="drawable" name="donut_resource_pad" end="0x010800d0" /> - - <public-padding type="layout" name="donut_resource_pad" end="0x01090020" /> - - <public type="anim" name="anticipate_interpolator" /> - <public type="anim" name="overshoot_interpolator" /> - <public type="anim" name="anticipate_overshoot_interpolator" /> - <public type="anim" name="bounce_interpolator" /> - <public type="anim" name="linear_interpolator" /> - - <public-padding type="anim" name="donut_resource_pad" end="0x010a0020" /> - - <public-padding type="integer" name="donut_resource_pad" end="0x010e0010" /> + <public type="drawable" name="stat_sys_vp_phone_call" id="0x010800a7" /> + <public type="drawable" name="stat_sys_vp_phone_call_on_hold" id="0x010800a8" /> + <public type="anim" name="anticipate_interpolator" id="0x010a0007" /> + <public type="anim" name="overshoot_interpolator" id="0x010a0008" /> + <public type="anim" name="anticipate_overshoot_interpolator" id="0x010a0009" /> + <public type="anim" name="bounce_interpolator" id="0x010a000a" /> + <public type="anim" name="linear_interpolator" id="0x010a000b" /> </resources> diff --git a/docs/html/guide/developing/device.jd b/docs/html/guide/developing/device.jd index 8051678..5a2a751 100644 --- a/docs/html/guide/developing/device.jd +++ b/docs/html/guide/developing/device.jd @@ -7,11 +7,12 @@ page.title=Developing on a Device <ol> <li><a href="#devices">Available Devices</a> <ol> - <li><a href="#g1">T-Mobile G1</a></li> + <li><a href="#consumer">Consumer devices</a></li> <li><a href="#dev-phone-1">Android Dev Phone 1</a></li> </ol> </li> <li><a href="#setting-up">Setting up a Device for Development</a></li> + <li><a href="#WinUsbDriver">Installing the WinUsb Driver</a></li> </ol> </div> </div> @@ -23,20 +24,24 @@ developing and debugging.</p> <h2 id="devices">Available Devices</h2> -<p>While developers can use regular -consumer devices purchased at retail to test and use their apps, some developers -may choose not to use a retail device, preferring an unlocked or no-contract -device. Here are some options for obtaining devices capable of testing your applications.</p> +<p>Here are some options for obtaining devices capable of testing your applications.</p> -<h3 id="g1">T-Mobile G1</h3> +<h3 id="consumer">Consumer devices</h3> -<p>The T-Mobile G1 device makes an excellent development device. You can write -applications in the SDK and install them on the G1, then run them as users -would, using the same hardware, system, and network.</p> +<p>It's likely that one of your local mobile carriers offers an Android-powered device. +Any Android-powered device (even one bought from your mobile carrier) is a perfectly good +device for running and testing your own Android applications. +You can write applications using the Android SDK and then install them +directly onto the device for testing.</p> + +<p>Check with the service providers in your area to determine which Android-powered +devices are available.</p> + +<p>Be aware that consumer devices are not designed to allow system image updates by the +user. If you're interested in manually updating the device with custom system images, then +you'll need a developer device such as the <a href="#dev-phone-1">Android Dev Phone 1</a>.</p> -<p>For more information about obtaining a G1, visit the <a -href="http://www.t-mobileg1.com">T-Mobile G1 site</a>. </p> <h3 id="dev-phone-1">Android Dev Phone 1</h3> @@ -60,6 +65,7 @@ href="http://www.t-mobileg1.com">T-Mobile G1 site</a>. </p> </ul> </div> </div> + <p>The Android Dev Phone 1 is a SIM-unlocked and hardware-unlocked device that is designed for advanced developers. The device ships with a system image that is fully compatible with Android 1.0, so you can rely on it when developing your @@ -67,7 +73,7 @@ applications. You can use any SIM in the device and can flash custom Android builds that will work with the unlocked bootloader. Unlike the bootloader on retail devices, the bootloader on the Android Dev Phone 1 does not enforce signed system images. The Android Dev Phone 1 should also appeal to developers -who live outside of T-Mobile geographies. </p> +who live in geographies where local mobile carriers do not currently offer Android-powered devices. </p> <p>To purchase an Android Dev Phone 1 device, you must first register as an Android developer on the Android Market site, if you haven't done so already. @@ -82,25 +88,30 @@ Singapore, Switzerland, Netherlands, Austria, Sweden, Finland, Poland, and Hungary. We will continue to expand this program into new geographies over time. Check this page for updated information.</p> -<p>Note that Android Dev Phone 1 devices are <em>not</em> intended for +<p>Android Dev Phone 1 devices are <em>not</em> intended for non-developer end-users. Because the device can be configured with system software not provided by or supported by Google or any other company, end-users operate these devices at their own risk.</p> +<p>Note that your Android Dev Phone 1 will not receive automated +over-the-air (OTA) updates for the system image. System updates must be flashed manually. +See the HTC site for a guide to <a href="http://www.htc.com/www/support/android/adp.html">Flashing +your Android Dev Phone with a Factory System Image</a>.</p> + <p>For full device specs and more information about obtaining an Android Dev Phone 1 device, see the <a href="http://market.android.com/publish">Android Market</a> site.</p> + <h2 id="setting-up">Setting up a Device for Development</h2> -<p>With a T-mobile G1 or Android Dev Phone 1, you can develop and debug your Android applications just as you +<p>With an Android-powered device, you can develop and debug your Android applications just as you would on the emulator. There are just a few things to do before you can start.</p> <ol> <li>Declare your application as "debuggable" in your Android Manifest. <p>In Eclipse, you can do this from the <b>Application</b> tab when viewing the Manifest (on the right side, set <b>Debuggable</b> to <em>true</em>). Otherwise, in the <code>AndroidManifest.xml</code> - file, add <code>android:debuggable="true"</code> to the <code><application></code> element.</p> </li> <li>Turn on "USB Debugging" on your device. @@ -110,30 +121,8 @@ would on the emulator. There are just a few things to do before you can start.</ </li> <li>Setup your system to detect your device. <ul> - <li>If you're developing on 32-bit Windows, you need to install the 32-bit USB driver for adb. - The USB driver is included in the SDK package. To install it, follow these steps:</p> - <ol> - <li>Connect your Android device via USB. When the <em>Found New Hardware Wizard</em> appears, - you'll be asked if you'd like Windows Update to search for software. Select <em>No, not this - time</em> and click <b>Next</b>.</li> - - <li>Select <em>Install from a list or specified location</em> and click <b>Next</b>.</li> - <li>Select <em>Search for the best driver in these locations</em>. Browse to the <code>usb_driver/x86</code> in the SDK package (<code><sdk>\usb_driver\x86</code>).</li> - <li>Click <b>Finish</b>. The system should install the driver files as necessary. Your machine may require a reboot.</li> - </ol> - </li> - <li>If you're developing on 64-bit Windows Vista, you need to install the 64-bit USB driver for adb. - The USB driver is included in the SDK package. To install it, follow these steps:</p> - <ol> - <li>Connect your Android device via USB. When the <em>Found New Hardware Wizard</em> appears, - you'll be asked if you'd like Windows Update to search for software. Select <em>No, not this - time</em> and click <b>Next</b>.</li> - - <li>Select <em>Install from a list or specified location</em> and click <b>Next</b>.</li> - <li>Select <em>Search for the best driver in these locations</em>. Browse to the <code>usb_driver/amd64</code> in the SDK package (<code><sdk>\usb_driver\amd64</code>).</li> - <li>Click <b>Finish</b>. The system should install the driver files as necessary. Your machine may require a reboot.</li> - </ol> - </li> + <li>If you're developing on Windows, you need to install a USB driver for adb. + Follow the steps below for <a href="#WinUsbDriver">Installing the WinUsb Driver</a>.</li> <li>If you're developing on Mac OS X, it just works. Skip this step.</li> <li>If you're developing on Ubuntu Linux, you need to add a rules file: <ol> @@ -145,7 +134,7 @@ would on the emulator. There are just a few things to do before you can start.</ <code>SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0bb4", MODE="0666"</code></p> </li> <li>Now execute:<br/> - <code>chmod a+rx /etc/udev/rules.d/50-android.rules</code> + <code>chmod a+rx /etc/udev/rules.d/51-android.rules</code> </li> </ol> @@ -161,3 +150,156 @@ Select the device to install and run the application there.</p> <p>If using the <a href="{@docRoot}guide/developing/tools/adb.html">Android Debug Bridge</a> (adb), you can issue commands with the <code>-d</code> flag to target your connected device.</p> + + + + +<h2 id="WinUsbDriver">Installing the WinUsb Driver</h2> + +<p>A WinUsb-based driver is needed in order to use your Android-powered device for development on a Windows machine. +The USB installation package can be found in the <code><em><sdk></em>\usb_driver\</code> +folder of your SDK package.</p> + +<p class="note"><strong>Note:</strong> If you are connecting an Android-powered device to your computer +for the first time, folllow the procedure to "Perform a fresh installation." +Android SDKs older than version 1.6 included a non-WinUsb-based driver +for connecting your device. If you installed the older USB driver and it is working properly, +you do not need to upgrade to the new driver. However, if you are having problems with the driver or +would simply like to upgrade to the latest version, follow the procedure to "Upgrade an existing +driver." </p> + +<p>Before you begin installing or upgrading the USB driver, you must +copy the USB installation package to a secure location on your computer. +For example, you might want to create a directory at <code>C:\Android\Windows\USB\install\</code> and +move it there. Once you've moved the installation package, select the appropriate procedure below, +based on your operating system and whether you're installing for the first time or upgrading.</p> + +<ol class="nolist"> + <li>Windows Vista: + <ol class="nolist"> + <li><a href="#VistaFreshInstall">Perform a fresh installation</a></li> + <li><a href="#VistaUprade">Upgrade an existing driver</a></li> + </ol> + </li> + <li>Windows XP: + <ol class="nolist"> + <li><a href="#XPFreshInstall">Perform a fresh installation</a></li> + <li><a href="#XPUpgrade">Upgrade an existing driver</a></li> + </ol> + </li> +</ol> + + +<p class="caution"><strong>Caution:</strong> +You may make changes to <code>android_winusb.inf</code> file found inside <code>usb_driver\</code> +(e.g., to add support for new devices), +however, this will lead to security warnings when you install or upgrade the +driver. Making any other changes to the driver files may break the installation process.</p> + +<h3 id="VistaFreshInstall">Windows Vista: Perform a fresh installation</h3> + +<p>To install the Android USB driver on Windows Vista for the first time:</p> + +<ol> + <li>Connect your Android-powered device to your computer's USB port. Windows will detect the device + and launch the Found New Hardware wizard.</li> + <li>Select "Locate and install driver software."</li> + <li>Select "Don't search online."</li> + <li>Select "I don't have the disk. Show me other options."</li> + <li>Select "Browse my computer for driver software."</li> + <li>Click "Browse..." and locate the folder where you copied the + installation package. As long as you specified the exact location of the + installation package, you may leave "Include subfolders" checked or unchecked—it doesn't matter.</li> + <li>Click "Next." Vista may prompt you to confirm the privilege elevation required for driver + installation. Confirm it.</li> + <li>When Vista asks if you'd like to install the Google ADB Interface device, click "Install" + to install the driver.</li> +</ol> + +<p>Return to <a href="#setting-up">Setting up a Device for Development</a>.</p> + + + +<h3 id="VistaUpgrade">Windows Vista: Upgrade an existing driver</h3> + +<p>To upgrade an existing Android USB driver on Windows Vista with the new one:</p> + +<ol> + <li>Connect your Android-powered device to your computer's USB port.</li> + <li>Right-click on "Computer" from your desktop or Windows Explorer, + and select "Manage."</li> + <li>Select "Device Manager" in the left pane of the Computer Management window.</li> + <li>Locate and expand "ADB Interface" in the right pane.</li> + <li>Right-click on "HTC Dream Composite ADB Interface", and select "Update Driver Software..."</li> + <li>When Vista starts updating the driver, a prompt will ask how you want to search for the driver + software. Select "Browse my computer for driver software."</li> + <li>Click "Browse..." and locate the folder where you copied the + installation package. As long as you specified the exact location of the + installation package, you may leave "Include subfolders" checked or unchecked—it doesn't matter.</li> + <li>Click "Next." Vista may prompt you to confirm the privilege elevation required for driver + installation. Confirm it.</li> + <li>When Vista asks if you'd like to install the Google ADB Interface device, click "Install" + to install the driver.</li> +</ol> + +<p>Return to <a href="#setting-up">Setting up a Device for Development</a>.</p> + + + +<h3 id="XPFreshInstall">Windows XP: Perform a fresh installation</h3> + +<p>To install the Android USB driver on Windows XP for the first time:</p> + +<ol> + <li>Connect your Android-powered device to your computer's USB port. Windows + will detect the device and launch the Hardware Update Wizard.</li> + <li>Select "Install from a list or specific location" and click + "Next."</li> + <li>Select "Search for the best driver in these locations"; uncheck "Search + removable media"; and check "Include this location in the search."</li> + <li>Click "Browse..." and locate the folder where you copied the installation + package.</li> + <li>Click "Next" to install the driver.</li> +</ol> + +<p>Return to <a href="#setting-up">Setting up a Device for Development</a>.</p> + + + +<h3 id="XPUpgrade">Windows XP: Upgrade an existing driver</h3> + +<p>To upgrade an existing Android USB driver on Windows XP with the new one:</p> + +<ol> + <li>Connect your Android-powered device to your computer's USB port.</li> + <li>Right-click on "My Computer" from your desktop or Windows Explorer, + and select "Manage."</li> + <li>Select "Device Manager" in the left pane of the Computer Management window.</li> + <li>Locate and expand "Android Phone" in the right pane.</li> + <li>Right-click "Android Composite ADB Interface" and select "Update Driver..." + This will launch the Hardware Update Wizard.</li> + <li>Select "Install from a list or specific location" and click + "Next."</li> + <li>Select "Search for the best driver in these locations"; uncheck "Search + removable media"; and check "Include this location in the search."</li> + <li>Click "Browse..." and locate the folder where you copied the installation + package.</li> + <li>Click "Next" to install the driver.</li> +</ol> + +<p>Return to <a href="#setting-up">Setting up a Device for Development</a>.</p> + + + + + + + + + + + + + + + diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs index 2127187..459ad37 100644 --- a/docs/html/guide/guide_toc.cs +++ b/docs/html/guide/guide_toc.cs @@ -139,13 +139,16 @@ <li><a href="<?cs var:toroot ?>guide/topics/manifest/intent-filter-element.html"><intent-filter></a></li> <li><a href="<?cs var:toroot ?>guide/topics/manifest/manifest-element.html"><manifest></a></li> <li><a href="<?cs var:toroot ?>guide/topics/manifest/meta-data-element.html"><meta-data></a></li> + <li><a href="<?cs var:toroot ?>guide/topics/manifest/path-permission-element.html"><path-permission></a></li> <li><a href="<?cs var:toroot ?>guide/topics/manifest/permission-element.html"><permission></a></li> <li><a href="<?cs var:toroot ?>guide/topics/manifest/permission-group-element.html"><permission-group></a></li> <li><a href="<?cs var:toroot ?>guide/topics/manifest/permission-tree-element.html"><permission-tree></a></li> <li><a href="<?cs var:toroot ?>guide/topics/manifest/provider-element.html"><provider></a></li> <li><a href="<?cs var:toroot ?>guide/topics/manifest/receiver-element.html"><receiver></a></li> <li><a href="<?cs var:toroot ?>guide/topics/manifest/service-element.html"><service></a></li> + <li><a href="<?cs var:toroot ?>guide/topics/manifest/supports-screens-element.html"><supports-screens></a></li> <!-- ##api level 4## --> <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-configuration-element.html"><uses-configuration></a></li> + <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-feature-element.html"><uses-feature></a></li> <!-- ##api level 4## --> <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-library-element.html"><uses-library></a></li> <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-permission-element.html"><uses-permission></a></li> <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-sdk-element.html"><uses-sdk></a></li> @@ -384,17 +387,30 @@ <li><a href="<?cs var:toroot ?>guide/samples/ApiDemos/index.html"> <span class="en">API Demos</span> </a></li> + <li><a href="<?cs var:toroot ?>guide/samples/Home/index.html"> + <span class="en">Home</span> + </a></li> + <li><a href="<?cs var:toroot ?>guide/samples/JetBoy/index.html"> + <span class="en">JetBoy</span> + </a></li> <li><a href="<?cs var:toroot ?>guide/samples/LunarLander/index.html"> <span class="en">Lunar Lander</span> </a></li> <li><a href="<?cs var:toroot ?>guide/samples/NotePad/index.html"> - <span class="en">NotePad</span> + <span class="en">Note Pad</span> + </a></li> + <li><a href="<?cs var:toroot ?>guide/samples/Snake/index.html"> + <span class="en">Snake</span> + </a></li> + <li><a href="<?cs var:toroot ?>guide/samples/SoftKeyboard/index.html"> + <span class="en">Soft Keyboard</span> </a></li> </ul> </li> <?cs /if ?> </ul> </li> + <li> <h2><span class="en">Appendix</span> @@ -407,6 +423,9 @@ <span class="zh-TW">附錄</span> </h2> <ul> + <li><a href="<?cs var:toroot ?>guide/appendix/api-levels.html"> + <span class="en">Android API Levels</span> + </a></li> <li><a href="<?cs var:toroot ?>guide/appendix/media-formats.html"> <span class="en">Supported Media Formats</span> </a></li> diff --git a/docs/html/guide/samples/images/HomeSample.png b/docs/html/guide/samples/images/HomeSample.png Binary files differnew file mode 100644 index 0000000..990bebb --- /dev/null +++ b/docs/html/guide/samples/images/HomeSample.png diff --git a/docs/html/guide/samples/images/JetBoy.png b/docs/html/guide/samples/images/JetBoy.png Binary files differnew file mode 100644 index 0000000..3da0448 --- /dev/null +++ b/docs/html/guide/samples/images/JetBoy.png diff --git a/docs/html/guide/samples/images/Snake.png b/docs/html/guide/samples/images/Snake.png Binary files differnew file mode 100644 index 0000000..c5211d8 --- /dev/null +++ b/docs/html/guide/samples/images/Snake.png diff --git a/docs/html/guide/samples/images/SoftKeyboard.png b/docs/html/guide/samples/images/SoftKeyboard.png Binary files differnew file mode 100644 index 0000000..8a4ec63 --- /dev/null +++ b/docs/html/guide/samples/images/SoftKeyboard.png diff --git a/docs/html/guide/samples/images/sample_lunarlander.png b/docs/html/guide/samples/images/sample_lunarlander.png Binary files differnew file mode 100644 index 0000000..a2ff75a --- /dev/null +++ b/docs/html/guide/samples/images/sample_lunarlander.png diff --git a/docs/html/guide/samples/images/sample_note.png b/docs/html/guide/samples/images/sample_note.png Binary files differnew file mode 100644 index 0000000..8fc9dcc --- /dev/null +++ b/docs/html/guide/samples/images/sample_note.png diff --git a/docs/html/guide/samples/images/sample_notepad.png b/docs/html/guide/samples/images/sample_notepad.png Binary files differnew file mode 100644 index 0000000..46f2211 --- /dev/null +++ b/docs/html/guide/samples/images/sample_notepad.png diff --git a/docs/html/guide/samples/index.jd b/docs/html/guide/samples/index.jd index 365284d..d8bbc41 100644 --- a/docs/html/guide/samples/index.jd +++ b/docs/html/guide/samples/index.jd @@ -15,11 +15,28 @@ in the SDK. You can find the sample applications for each platform version in th <p>You can easily add these applications as projects in your development environment, so that you can modify them and watch them execute. </p> <dl> + <dt><a href="ApiDemos/index.html">API Demos</a></dt> - <dd>A variety of small applications that demonstrate simple views and widgets.</dd> + <dd>A variety of small applications that demonstrate an extensive collection of framework topics.</dd> + + <dt><a href="Home/index.html">Home</a></dt> + <dd>An application for saving notes. Similar (but not identical) to the + <a href="{@docRoot}guide/tutorials/notepad/index.html">Notepad tutorial</a>.</dd> + + <dt><a href="JetBoy/index.html">JetBoy</a></dt> + <dd>JetBoy is a game that demonstrates the SONiVOX JET interactive music technology, with {@link android.media.JetPlayer}.</dd> + <dt><a href="LunarLander/index.html">Lunar Lander</a></dt> <dd>A classic Lunar Lander game.</dd> + <dt><a href="NotePad/index.html">Note Pad</a></dt> <dd>An application for saving notes. Similar (but not identical) to the <a href="{@docRoot}guide/tutorials/notepad/index.html">Notepad tutorial</a>.</dd> + + <dt><a href="Snake/index.html">Snake</a></dt> + <dd>An implementation of the classic game "Snake."</dd> + + <dt><a href="SoftKeyboard/index.html">Soft Keyboard</a></dt> + <dd>An example of writing an input method for a software keyboard.</dd> + </dl> diff --git a/docs/html/guide/topics/manifest/manifest-intro.jd b/docs/html/guide/topics/manifest/manifest-intro.jd index 1907024..89171c1 100644 --- a/docs/html/guide/topics/manifest/manifest-intro.jd +++ b/docs/html/guide/topics/manifest/manifest-intro.jd @@ -78,10 +78,11 @@ other mention of the element name. <a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission /></a> <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html"><permission-tree /></a> <a href="{@docRoot}guide/topics/manifest/permission-group-element.html"><permission-group /></a> - <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html"><instrumentation /></a> - <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><uses-sdk /></a> + <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html"><uses-configuration /></a> <!-- ##api level 3## --> + <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><uses-feature /></a> <!-- ##api level 4## --> + <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><supports-screens /></a> <!-- ##api level 4## --> <a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a> @@ -111,11 +112,11 @@ other mention of the element name. <a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a> <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html"><grant-uri-permission /></a> + <a href="{@docRoot}guide/topics/manifest/path-permission-element.html"><path-permission /></a> <a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data /></a> <a href="{@docRoot}guide/topics/manifest/provider-element.html"></provider></a> <a href="{@docRoot}guide/topics/manifest/uses-library-element.html"><uses-library /></a> - <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html"><uses-configuration /></a> <!-- ##api level 3## --> <a href="{@docRoot}guide/topics/manifest/application-element.html"></application></a> @@ -140,19 +141,23 @@ add your own elements or attributes. <br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"><intent-filter></a></code> <br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code> <br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data></a></code> +<br/><code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html"><path-permission /></a></code> <br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission></a></code> <br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html"><permission-group></a></code> <br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html"><permission-tree></a></code> <br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a></code> <br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html"><receiver></a></code> <br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html"><service></a></code> +<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><supports-screens></a></code> <!-- ##api level 4## --> <br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html"><uses-configuration></a></code> <!-- ##api level 3## --> +<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><uses-feature></a></code> <!-- ##api level 4## --> <br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html"><uses-library></a></code> <br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code> <br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><uses-sdk></a></code> </p> + <h2 id="filec">File Conventions</h2> diff --git a/docs/html/guide/topics/manifest/path-permission-element.jd b/docs/html/guide/topics/manifest/path-permission-element.jd new file mode 100644 index 0000000..5c271a7 --- /dev/null +++ b/docs/html/guide/topics/manifest/path-permission-element.jd @@ -0,0 +1,104 @@ +page.title=<path-permission> +@jd:body + +<dl class="xml"> +<dt>syntax:</dt> +<dd><pre class="stx"> +<path-permission android:<a href="#path">path</a>="<i>string</i>" + android:<a href="#pathPrefix">pathPrefix</a>="<i>string</i>" + android:<a href="#pathPattern">pathPattern</a>="<i>string</i>" + android:<a href="#permission">permission</a>="<i>string</i>" + android:<a href="#readPermission">readPermission</a>="<i>string</i>" + android:<a href="#writePermission">writePermission</a>="<i>string</i>" /> +</pre></dd> + +<dt>contained in:</dt> +<dd><code><a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a></code></dd> + +<!-- +<dt>can contain:</dt> +</dd> +--> + +<dt>description:</dt> +<dd>Defines the path and required permissions for a specific subset of data +within a content provider. This element can be +specified multiple times to supply multiple paths. + +</dd> + +<dt>attributes:</dt> + +<dd><dl class="attr"> +<dt><a name="path"></a>{@code android:path}</dt> +<dd>A complete URI path for a subset of content provider data. +Permission can be granted only to the particular data identified by this path. +When used to provide search suggestion content, it must be appended +with "/search_suggest_query". +</dd> + +<dt><a name="pathPrefix"></a>{@code android:pathPrefix}</dt> +<dd>The initial part of a URI path for a subset of content provider data. +Permission can be granted to all data subsets with paths that share this initial part. +</dd> + +<dt><a name="pathPattern"></a>{@code android:pathPattern}</dt> +<dd>A complete URI path for a subset of content provider data, +but one that can use the following wildcards: + +<ul> +<li>An asterisk ('<code class="Code prettyprint">*</code>'). This matches a sequence of 0 to many occurrences of +the immediately preceding character.</li> + +<li>A period followed by an asterisk ("<code class="Code prettyprint">.*</code>"). This matches any sequence of +0 or more characters.</li> +</ul> + +<p> +Because '<code class="Code prettyprint">\</code>' is used as an escape character when the string is read +from XML (before it is parsed as a pattern), you will need to double-escape. +For example, a literal '<code class="Code prettyprint">*</code>' would be written as "<code class="Code prettyprint">\\*</code>" and a +literal '<code class="Code prettyprint">\</code>' would be written as "<code class="Code prettyprint">\\</code>". This is basically +the same as what you would need to write if constructing the string in Java code. +</p> +<p> +For more information on these types of patterns, see the descriptions of +<a href="/reference/android/os/PatternMatcher.html#PATTERN_LITERAL">PATTERN_LITERAL</a>, +<a href="/reference/android/os/PatternMatcher.html#PATTERN_PREFIX">PATTERN_PREFIX</a>, and +<a href="/reference/android/os/PatternMatcher.html#PATTERN_SIMPLE_GLOB">PATTERN_SIMPLE_GLOB</a> in the +<a href="/reference/android/os/PatternMatcher.html">PatternMatcher</a> class. +</p> +</dd> + +<dt><a name="permission"></a>{@code android:permission}</dt> +<dd>The name of a permission that clients must have in order to read or write the +content provider's data. This attribute is a convenient way of setting a +single permission for both reading and writing. However, the +<code>readPermission</code> and +<code>writePermission</code> attributes take precedence +over this one. +</dd> + +<dt><a name="readPermission"></a>{@code android:readPermission}</dt> +<dd>A permission that clients must have in order to query the content provider. +</dd> + +<dt><a name="writePermission"></a>{@code android:writePermission}</dt> +<dd>A permission that clients must have in order to make changes to the data controlled by the content provider. +</dd> + + + +</dl></dd> + +<!-- ##api level indication## --> +<dt>introduced in:</dt> +<dd>API Level 4</dd> + +<dt>see also:</dt> +<dd>{@link android.app.SearchManager}</dd> +<dd>{@link android.Manifest.permission}</dd> +<dd><a href="/guide/topics/security/security.html">Security and +Permissions</a></dd> + +</dl> diff --git a/docs/html/guide/topics/manifest/provider-element.jd b/docs/html/guide/topics/manifest/provider-element.jd index 2bb4ff4..3942f95 100644 --- a/docs/html/guide/topics/manifest/provider-element.jd +++ b/docs/html/guide/topics/manifest/provider-element.jd @@ -25,7 +25,9 @@ page.title=<provider> <dt>can contain:</dt> <dd><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data></a></code> -<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html"><grant-uri-permission></a></code></dd> +<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html"><grant-uri-permission></a></code> +<br/><code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html"><path-permission /></a></code> +</dd> <dt>description:</dt> <dd>Declares a content provider — a subclass of diff --git a/docs/html/guide/topics/manifest/supports-screens-element.jd b/docs/html/guide/topics/manifest/supports-screens-element.jd new file mode 100644 index 0000000..00797ed --- /dev/null +++ b/docs/html/guide/topics/manifest/supports-screens-element.jd @@ -0,0 +1,123 @@ +page.title=<supports-screens> +@jd:body + +<dl class="xml"> + +<dt>syntax:</dt> +<dd> +<pre class="stx"> +<supports-screens android:<a href="#small">smallScreens</a>=["true" | "false"] + android:<a href="#normal">normalScreens</a>=["true" | "false"] + android:<a href="#large">largeScreens</a>=["true" | "false"] + android:<a href="#any">anyDensity</a>=["true" | "false"] /> +</pre> +</dd> + +<dt>contained in:</dt> +<dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code></dd> + +<dt>description:</dt> +<dd>Lets you specify the screen dimensions the +application supports. By default a modern application (using API Level 4 or higher) supports all +screen sizes and must explicitly disable certain screen sizes here; +older applications are assumed to support only the "normal" +screen size. Note that screen size is a separate axis from +density. Screen size is determined as the available pixels to an application +after density scaling has been applied. + +<p>Based on the target device screen density, the Android +framework will scale down assets by a factor of 0.75 (low dpi screens) +or scale them up by a factor of 1.5 (high dpi screens). +The screen density is expressed as dots-per-inch (dpi).</p> + +<p>Currently supported densities:</p> +<ul> + <li>Low density: 120 dpi</li> + <li>Medium density: 160 dpi</li> + <li>High density: 240 dpi</li> +</ul> + +<p>Table of display types:</p> + +<table> +<tr> + <th></th><th>Low Density</th><th>Medium Density</th><th>High Density</th> +</tr> +<tr> + <th>Small Screen</th> + <td>QVGA</td> + <td>n/a</td> + <td>VGA</td> +</tr> +<tr> + <th>Normal Screen</th> + <td>WQVGA</td> + <td>HVGA</td> + <td>WVGA, FWVGA</td> +</tr> +<tr> + <th>Large Screen</th> + <td>n/a</td> + <td>VGA, WVGA, FWVGA</td> + <td>n/a</td> +</tr> +</table> + +</dd> + + +<dt>attributes:</dt> + +<dd> +<dl class="attr"><dt><a name="small"></a>{@code android:smallScreens}</dt> + <dd>Indicates whether the application supports smaller screen form-factors. + A small screen is defined as one with a smaller aspect ratio than + the "normal" (traditional HVGA) screen. An application that does + not support small screens <em>will not be available</em> for + small screen devices, because there is little the platform can do + to make such an application work on a smaller screen. Applications using + API Level 4 or higher default this to "true", others are "false". + </dd> + + <dt><a name="normal"></a>{@code android:normalScreens}</dt> + <dd>Indicates whether an application supports the "normal" screen + form-factors. Traditionally this is an HVGA medium density + screen, but WQVGA low density and WVGA high density are also + considered to be normal. This attribute is "true" by default, + and applications currently should leave it that way. + </dd> + + <dt><a name="large"></a>{@code android:largeScreens}</dt> + <dd>Indicates whether the application supports larger screen form-factors. + A large screen is defined as a screen that is significantly larger + than a "normal" phone screen, and thus may require some special care + on the application's part to make good use of it. An application that + does not support large screens will be placed as a "postage stamp" on + such a screen, so that it retains the dimensions it was originally + designed for. Applications using API Level 4 or higher default + to "true", others are "false". + </dd> + + <dt><a name="any"></a>{@code android:anyDensity}</dt> + <dd>Indicates whether the application can accommodate any screen + density. Older applications (pre API Level 4) are assumed unable to + accomodate all densities and this is "false" by default. Applications using + API Level 4 or higher are assumed able to and this is "true" by default. + You can explicitly supply your abilities here. + </dd> + + +</dl></dd> + +<!-- ##api level indication## --> +<dt>introduced in:</dt> +<dd>API Level 4</dd> + +<dt>see also:</dt> +<dd> + <ul> + <li>{@link android.util.DisplayMetrics}</li> + </ul> +</dd> + +</dl> diff --git a/docs/html/guide/topics/manifest/uses-configuration-element.jd b/docs/html/guide/topics/manifest/uses-configuration-element.jd index b26881e..4578c63 100755 --- a/docs/html/guide/topics/manifest/uses-configuration-element.jd +++ b/docs/html/guide/topics/manifest/uses-configuration-element.jd @@ -168,9 +168,14 @@ The value must be one of the following strings: <dd>API Level 3</dd> <dt>see also:</dt> -<dd><code><a href="{@docRoot}guide/topics/manifest/activity-element.html#config">configChanges</a></code> +<dd> + <ul> + <li><code><a href="{@docRoot}guide/topics/manifest/activity-element.html#config">configChanges</a></code> attribute of the <code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> -element</dd> +element</dd></li> + <li>{@link android.content.pm.ConfigurationInfo}</li> + </ul> +</dd> </dl> diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd new file mode 100644 index 0000000..2626735 --- /dev/null +++ b/docs/html/guide/topics/manifest/uses-feature-element.jd @@ -0,0 +1,52 @@ +page.title=<uses-feature> +@jd:body + +<dl class="xml"> + +<dt>syntax:</dt> +<dd> +<pre class="stx"> +<uses-feature android:<a href="#glEsVersion">glEsVersion</a>=["true" | "false"] /> +</pre> +</dd> + +<dt>contained in:</dt> +<dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code></dd> + +<dt>description:</dt> +<dd>This element specifies specific features used by the application. +Android provides some features that may not be equally supported by all +Android devices. In a manner similar to the <code><a href="uses-sdk-element.html"><uses-sdk></a></code> +element, this element allows an application to specify which potentially variable +features it requires. In this way, the application +will not be installed on devices that do not offer the required feature.</p> + +<p>For example, an application might specify that it requires a certain version of Open GL. +If a device does not support that version of Open GL, then it will not allow installation of the application.</p> +</dd> + + +<dt>attributes:</dt> + +<dd> +<dl class="attr"><dt><a name="glEsVersion"></a>{@code android:glEsVersion}</dt> + <dd>The GLES version needed by the application. + The higher 16 bits represent the major number and the lower 16 bits + represent the minor number. For example, for GL 1.2 referring to + 0x00000102, the actual value should be set as 0x00010002. + </dd> +</dl> +</dd> + +<!-- ##api level indication## --> +<dt>introduced in:</dt> +<dd>API Level 4</dd> + +<dt>see also:</dt> +<dd> + <ul> + <li>{@link android.content.pm.ConfigurationInfo}</li> + </ul> +</dd> + +</dl> diff --git a/docs/html/guide/topics/manifest/uses-sdk-element.jd b/docs/html/guide/topics/manifest/uses-sdk-element.jd index b6e7374..adcdc28 100644 --- a/docs/html/guide/topics/manifest/uses-sdk-element.jd +++ b/docs/html/guide/topics/manifest/uses-sdk-element.jd @@ -11,50 +11,68 @@ page.title=<uses-sdk> <dt>description:</dt> <dd>Lets you express an application's compatibility with one or more versions of the Android platform, by means of an API Level integer. The API Level expressed by an application will be compared to the -API Level of a given Android system, which may vary among different Android devices. To declare your -application's minimum API Level compatibility, use the <a href="#min">minSdkVersion</a> attribute. +API Level of a given Android system, which may vary among different Android devices. </p> <p> -The default level is 1. -</p> - -<p> -For more information on the API level, see the -<a href="{@docRoot}guide/publishing/versioning.html#minsdkversion">Specifying -Minimum System API Version</a> section of -<a href="{@docRoot}guide/publishing/versioning.html">Versioning Your -Applications</a>. -</p></dd> - - -<dt>attributes:</dt> -<dd><dl class="attr"> -<dt><a name="min"></a>{@code android:minSdkVersion}</dt> -<dd>An integer designating the minimum level of the Android API that's required -for the application to run. - -<p> -Despite its name, this attribute specifies the API Level, <em>not</em> the +Despite its name, this element is used to specify the API Level, <em>not</em> the version number of the SDK (software development kit). The API Level is always a single integer; the SDK version may be split into major and minor components (such as 1.5). You cannot derive the API Level from the SDK version number (for example, it is not the same as the major version or the sum of the major -and minor versions). To learn what the API Level is, check the notes that -came with the SDK you're using.</p> +and minor versions).</p> + +<p>For more information, read about +<a href="{@docRoot}guide/appendix/api-levels.html">Android API Levels</a> and +<a href="{@docRoot}guide/publishing/versioning.html">Versioning Your Applications</a>. +</p></dd> + -<p>Prior to installing an application, the Android system checks the value of this -attribute and allows the installation only if the -API Level is less than or equal to the API Level used by the system itself.</p> +<dt>attributes:</dt> -<p>If you do not declare this attribute, then a value of "1" is assumed, which -indicates that your application is compatible with all versions of Android. If your -application is <em>not</em> universally compatible (for instance if it uses APIs -introduced in Android 1.5) and you have not declared the proper <code>minSdkVersion</code>, -then when installed on a system with a lower API Level, the application -will crash during runtime. For this reason, be certain to declare the appropriate API Level -in the <code>minSdkVersion</code> attribute.</p> -</dd> +<dd> +<dl class="attr"> + <dt><a name="min"></a>{@code android:minSdkVersion}</dt> + <dd>An integer designating the minimum level of the Android API that's required + for the application to run. + + <p>Prior to installing an application, the Android system checks the value of this + attribute and allows the installation only if it + is less than or equal to the API Level used by the system itself.</p> + + <p>If you do not declare this attribute, then a value of "1" is assumed, which + indicates that your application is compatible with all versions of Android. If your + application is <em>not</em> universally compatible (for instance if it uses APIs + introduced in Android 1.5) and you have not declared the proper <code>minSdkVersion</code>, + then when installed on a system with a lower API Level, the application + will crash during runtime. For this reason, be certain to declare the appropriate API Level + in the <code>minSdkVersion</code> attribute.</p> + </dd> + + <dt><a name="max"></a>{@code android:maxSdkVersion}</dt> + <dd>An integer designating the maximum level of the Android API that the application is + compatible with. You can use this to ensure your application is filtered out + of later versions of the platform when you know you have incompatibility with them.</p> + + <p>Prior to installing an application, the Android system checks the value of this + attribute and allows the installation only it + is greater than or equal to the API Level used by the system itself.</p> + + <p>Introduced in: API Level 4</p> + </dd> + + <dt><a name="target"></a>{@code android:targetSdkVersion}</dt> + <dd>An integer designating the API Level that the application is targetting. + + <p>With this attribute set, the application says that is is be able to run on + older versions (down to {@code minSdkVersion}), but was explicitly tested to work + with the version specified here. + Specifying this version allows the platform to disable compatibility + code that is not required or enable newer features that are not + available to older applications.</p> + + <p>Introduced in: API Level 4</p> + </dd> </dl></dd> diff --git a/include/utils/Asset.h b/include/utils/Asset.h index 453a204..5908bcc 100644 --- a/include/utils/Asset.h +++ b/include/utils/Asset.h @@ -45,6 +45,7 @@ public: virtual ~Asset(void); static int32_t getGlobalCount(); + static String8 getAssetAllocations(); /* used when opening an asset */ typedef enum AccessMode { @@ -110,6 +111,12 @@ public: virtual int openFileDescriptor(off_t* outStart, off_t* outLength) const = 0; /* + * Return whether this asset's buffer is allocated in RAM (not mmapped). + * Note: not virtual so it is safe to call even when being destroyed. + */ + virtual bool isAllocated(void) const { return false; } + + /* * Get a string identifying the asset's source. This might be a full * path, it might be a colon-separated list of identifiers. * @@ -197,6 +204,9 @@ private: AccessMode mAccessMode; // how the asset was opened String8 mAssetSource; // debug string + + Asset* mNext; // linked list. + Asset* mPrev; }; @@ -239,6 +249,7 @@ public: virtual off_t getLength(void) const { return mLength; } virtual off_t getRemainingLength(void) const { return mLength-mOffset; } virtual int openFileDescriptor(off_t* outStart, off_t* outLength) const; + virtual bool isAllocated(void) const { return mBuf != NULL; } private: off_t mStart; // absolute file offset of start of chunk @@ -295,6 +306,7 @@ public: virtual off_t getLength(void) const { return mUncompressedLen; } virtual off_t getRemainingLength(void) const { return mUncompressedLen-mOffset; } virtual int openFileDescriptor(off_t* outStart, off_t* outLength) const { return -1; } + virtual bool isAllocated(void) const { return mBuf != NULL; } private: off_t mStart; // offset to start of compressed data diff --git a/keystore/MODULE_LICENSE_APACHE2 b/keystore/MODULE_LICENSE_APACHE2 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/keystore/MODULE_LICENSE_APACHE2 diff --git a/keystore/NOTICE b/keystore/NOTICE new file mode 100644 index 0000000..64aaa8d --- /dev/null +++ b/keystore/NOTICE @@ -0,0 +1,190 @@ + + Copyright (c) 2009, 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. + + 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. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp index f5bdeda..da7cc8a 100644 --- a/libs/audioflinger/AudioFlinger.cpp +++ b/libs/audioflinger/AudioFlinger.cpp @@ -202,8 +202,8 @@ void AudioFlinger::setA2dpEnabled_l(bool enable) SortedVector < sp<MixerThread::Track> > tracks; SortedVector < wp<MixerThread::Track> > activeTracks; - LOGV_IF(enable, "set output to A2DP\n"); - LOGV_IF(!enable, "set output to hardware audio\n"); + LOGD_IF(enable, "set output to A2DP\n"); + LOGD_IF(!enable, "set output to hardware audio\n"); // Transfer tracks playing on MUSIC stream from one mixer to the other if (enable) { @@ -212,6 +212,7 @@ void AudioFlinger::setA2dpEnabled_l(bool enable) } else { mA2dpMixerThread->getTracks_l(tracks, activeTracks); mHardwareMixerThread->putTracks_l(tracks, activeTracks); + mA2dpMixerThread->mOutput->standby(); } mA2dpEnabled = enable; mNotifyA2dpChange = true; diff --git a/libs/utils/Asset.cpp b/libs/utils/Asset.cpp index 23cb72d..4295123 100644 --- a/libs/utils/Asset.cpp +++ b/libs/utils/Asset.cpp @@ -27,6 +27,7 @@ #include <utils/ZipUtils.h> #include <utils/ZipFileRO.h> #include <utils/Log.h> +#include <utils/threads.h> #include <string.h> #include <memory.h> @@ -40,24 +41,71 @@ using namespace android; # define O_BINARY 0 #endif -static volatile int32_t gCount = 0; +static Mutex gAssetLock; +static int32_t gCount = 0; +static Asset* gHead = NULL; +static Asset* gTail = NULL; int32_t Asset::getGlobalCount() { + AutoMutex _l(gAssetLock); return gCount; } +String8 Asset::getAssetAllocations() +{ + AutoMutex _l(gAssetLock); + String8 res; + Asset* cur = gHead; + while (cur != NULL) { + if (cur->isAllocated()) { + res.append(" "); + res.append(cur->getAssetSource()); + off_t size = (cur->getLength()+512)/1024; + char buf[64]; + sprintf(buf, ": %dK\n", (int)size); + res.append(buf); + } + cur = cur->mNext; + } + + return res; +} + Asset::Asset(void) : mAccessMode(ACCESS_UNKNOWN) { - int count = android_atomic_inc(&gCount)+1; - //LOGI("Creating Asset %p #%d\n", this, count); + AutoMutex _l(gAssetLock); + gCount++; + mNext = mPrev = NULL; + if (gTail == NULL) { + gHead = gTail = this; + } else { + mPrev = gTail; + gTail->mNext = this; + gTail = this; + } + //LOGI("Creating Asset %p #%d\n", this, gCount); } Asset::~Asset(void) { - int count = android_atomic_dec(&gCount); - //LOGI("Destroying Asset in %p #%d\n", this, count); + AutoMutex _l(gAssetLock); + gCount--; + if (gHead == this) { + gHead = mNext; + } + if (gTail == this) { + gTail = mPrev; + } + if (mNext != NULL) { + mNext->mPrev = mPrev; + } + if (mPrev != NULL) { + mPrev->mNext = mNext; + } + mNext = mPrev = NULL; + //LOGI("Destroying Asset in %p #%d\n", this, gCount); } /* diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java index 645f3f6..6d7c0ae 100644 --- a/media/java/android/media/ExifInterface.java +++ b/media/java/android/media/ExifInterface.java @@ -128,7 +128,10 @@ public class ExifInterface { } public void setFilename(String filename) { - mFilename = filename; + if (mFilename == null || !mFilename.equals(filename)) { + mFilename = filename; + mCachedAttributes = null; + } } /** diff --git a/media/libdrm/mobile1/Android.mk b/media/libdrm/mobile1/Android.mk index 2065cd2..f105799 100644 --- a/media/libdrm/mobile1/Android.mk +++ b/media/libdrm/mobile1/Android.mk @@ -36,15 +36,15 @@ LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/include/objmng \ $(LOCAL_PATH)/include/parser \ $(LOCAL_PATH)/include/xml \ - external/aes \ + external/openssl/include \ $(call include-path-for, system-core)/cutils LOCAL_CFLAGS := $(LOCAL_DRM_CFLAG) LOCAL_SHARED_LIBRARIES := \ - libaes \ - libutils \ - libcutils + libutils \ + libcutils \ + libcrypto LOCAL_MODULE := libdrm1 @@ -66,15 +66,14 @@ LOCAL_SRC_FILES := \ # Header files path LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/include \ - $(LOCAL_PATH)/include/parser \ + $(LOCAL_PATH)/include/parser \ $(JNI_H_INCLUDE) \ - $(call include-path-for, system-core)/cutils \ - external/aes + $(call include-path-for, system-core)/cutils LOCAL_SHARED_LIBRARIES := libdrm1 \ - libutils \ - libcutils + libutils \ + libcutils LOCAL_MODULE := libdrm1_jni diff --git a/media/libdrm/mobile1/include/objmng/drm_rights_manager.h b/media/libdrm/mobile1/include/objmng/drm_rights_manager.h index dd2116c..d81e7a1 100644 --- a/media/libdrm/mobile1/include/objmng/drm_rights_manager.h +++ b/media/libdrm/mobile1/include/objmng/drm_rights_manager.h @@ -21,9 +21,9 @@ extern "C" { #endif +#include <openssl/aes.h> #include <drm_common_types.h> #include <parser_rel.h> -#include <aes.h> #ifdef DRM_DEVICE_ARCH_ARM #define ANDROID_DRM_CORE_PATH "/data/drm/rights/" @@ -141,12 +141,12 @@ void drm_discardPaddingByte(uint8_t *decryptedBuf, int32_t *decryptedBufLen); * * \param Buffer The buffer to decrypted and also used to save the output data. * \param BufferLen The length of the buffer data and also save the output data length. - * \param ctx The structure of the CEK. + * \param key The structure of the CEK. * * \return * -0 */ -int32_t drm_aesDecBuffer(uint8_t * Buffer, int32_t * BufferLen, aes_decrypt_ctx ctx[1]); +int32_t drm_aesDecBuffer(uint8_t * Buffer, int32_t * BufferLen, AES_KEY *key); /** * Update the DCF data length according the CEK. diff --git a/media/libdrm/mobile1/src/objmng/drm_api.c b/media/libdrm/mobile1/src/objmng/drm_api.c index 0e453de..249cdbe 100644 --- a/media/libdrm/mobile1/src/objmng/drm_api.c +++ b/media/libdrm/mobile1/src/objmng/drm_api.c @@ -22,7 +22,6 @@ #include <drm_rights_manager.h> #include <drm_time.h> #include <drm_decoder.h> -#include <aes.h> #include "log.h" /** @@ -1578,7 +1577,7 @@ static int32_t drm_readAesContent(T_DRM_Session_Node* s, int32_t offset, uint8_t int32_t readBytes = 0; int32_t bufLen, piece, i, copyBytes, leftBytes; int32_t aesStart, mediaStart, mediaBufOff; - aes_decrypt_ctx ctx[1]; + AES_KEY key; if (FALSE == drm_getKey(s->contentID, keyValue)) return DRM_NO_RIGHTS; @@ -1600,7 +1599,7 @@ static int32_t drm_readAesContent(T_DRM_Session_Node* s, int32_t offset, uint8_t piece = (offset + readBytes - 1) / DRM_ONE_AES_BLOCK_LEN - offset / DRM_ONE_AES_BLOCK_LEN + 2; mediaStart = offset % DRM_ONE_AES_BLOCK_LEN; - aes_decrypt_key128(keyValue, ctx); + AES_set_decrypt_key(keyValue, DRM_KEY_LEN * 8, &key); mediaBufOff = 0; leftBytes = readBytes; @@ -1608,7 +1607,7 @@ static int32_t drm_readAesContent(T_DRM_Session_Node* s, int32_t offset, uint8_t memcpy(buf, s->rawContent + aesStart + i * DRM_ONE_AES_BLOCK_LEN, DRM_TWO_AES_BLOCK_LEN); bufLen = DRM_TWO_AES_BLOCK_LEN; - if (drm_aesDecBuffer(buf, &bufLen, ctx) < 0) + if (drm_aesDecBuffer(buf, &bufLen, &key) < 0) return DRM_MEDIA_DATA_INVALID; if (0 != i) @@ -1651,7 +1650,7 @@ static int32_t drm_readAesContent(T_DRM_Session_Node* s, int32_t offset, uint8_t piece = (offset + leftBytes - 1) / DRM_ONE_AES_BLOCK_LEN - offset / DRM_ONE_AES_BLOCK_LEN + 2; mediaBufOff = readBytes; - aes_decrypt_key128(keyValue, ctx); + AES_set_decrypt_key(keyValue, DRM_KEY_LEN * 8, &key); for (i = 0; i < piece - 1; i++) { if (-1 == (res = drm_readAesData(buf, s, aesStart, DRM_TWO_AES_BLOCK_LEN))) @@ -1663,7 +1662,7 @@ static int32_t drm_readAesContent(T_DRM_Session_Node* s, int32_t offset, uint8_t bufLen = DRM_TWO_AES_BLOCK_LEN; aesStart += DRM_ONE_AES_BLOCK_LEN; - if (drm_aesDecBuffer(buf, &bufLen, ctx) < 0) + if (drm_aesDecBuffer(buf, &bufLen, &key) < 0) return DRM_MEDIA_DATA_INVALID; drm_discardPaddingByte(buf, &bufLen); diff --git a/media/libdrm/mobile1/src/objmng/drm_rights_manager.c b/media/libdrm/mobile1/src/objmng/drm_rights_manager.c index 80901f5..df22327 100644 --- a/media/libdrm/mobile1/src/objmng/drm_rights_manager.c +++ b/media/libdrm/mobile1/src/objmng/drm_rights_manager.c @@ -573,7 +573,7 @@ void drm_discardPaddingByte(uint8_t *decryptedBuf, int32_t *decryptedBufLen) return; } -int32_t drm_aesDecBuffer(uint8_t * Buffer, int32_t * BufferLen, aes_decrypt_ctx ctx[1]) +int32_t drm_aesDecBuffer(uint8_t * Buffer, int32_t * BufferLen, AES_KEY *key) { uint8_t dbuf[3 * DRM_ONE_AES_BLOCK_LEN], buf[DRM_ONE_AES_BLOCK_LEN]; uint64_t i, len, wlen = DRM_ONE_AES_BLOCK_LEN, curLen, restLen; @@ -596,7 +596,7 @@ int32_t drm_aesDecBuffer(uint8_t * Buffer, int32_t * BufferLen, aes_decrypt_ctx if (len < 2 * DRM_ONE_AES_BLOCK_LEN) { /* The original file is less than one block in length */ len -= DRM_ONE_AES_BLOCK_LEN; /* Decrypt from position len to position len + DRM_ONE_AES_BLOCK_LEN */ - aes_decrypt((dbuf + len), (dbuf + len), ctx); + AES_decrypt((dbuf + len), (dbuf + len), key); /* Undo the CBC chaining */ for (i = 0; i < len; ++i) @@ -620,7 +620,7 @@ int32_t drm_aesDecBuffer(uint8_t * Buffer, int32_t * BufferLen, aes_decrypt_ctx Buffer += len; /* Decrypt the b2 block */ - aes_decrypt((uint8_t *)b2, buf, ctx); + AES_decrypt((uint8_t *)b2, buf, key); if (len == 0 || len == DRM_ONE_AES_BLOCK_LEN) { /* No ciphertext stealing */ /* Unchain CBC using the previous ciphertext block in b1 */ @@ -639,7 +639,7 @@ int32_t drm_aesDecBuffer(uint8_t * Buffer, int32_t * BufferLen, aes_decrypt_ctx b3[i] = buf[i]; /* Decrypt the C[N-1] block in b3 */ - aes_decrypt((uint8_t *)b3, (uint8_t *)b3, ctx); + AES_decrypt((uint8_t *)b3, (uint8_t *)b3, key); /* Produce the last but one plaintext block by xoring with */ /* The last but two ciphertext block */ @@ -669,15 +669,15 @@ int32_t drm_aesDecBuffer(uint8_t * Buffer, int32_t * BufferLen, aes_decrypt_ctx int32_t drm_updateDcfDataLen(uint8_t* pDcfLastData, uint8_t* keyValue, int32_t* moreBytes) { - aes_decrypt_ctx ctx[1]; + AES_KEY key; int32_t len = DRM_TWO_AES_BLOCK_LEN; if (NULL == pDcfLastData || NULL == keyValue) return FALSE; - aes_decrypt_key128(keyValue, ctx); + AES_set_decrypt_key(keyValue, DRM_KEY_LEN * 8, &key); - if (drm_aesDecBuffer(pDcfLastData, &len, ctx) < 0) + if (drm_aesDecBuffer(pDcfLastData, &len, &key) < 0) return FALSE; drm_discardPaddingByte(pDcfLastData, &len); diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java index bd4c88e..442c35b 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java @@ -304,7 +304,8 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi public boolean validateMemoryResult (int startPid, int startMemory, Writer output) throws Exception { mEndPid = getMediaserverPid(); mEndMemory = getMediaserverVsize(); - + Log.v(TAG, "End Memory " + mEndMemory); + output.write("End Memory :" + mEndMemory + "\n"); //Write the total memory different into the output file output.write("The total diff = " + (mEndMemory - startMemory)); output.write("\n\n"); @@ -331,13 +332,17 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi public void testH263VideoPlaybackMemoryUsage() throws Exception { boolean memoryResult = false; mStartPid = getMediaserverPid(); - mStartMemory = getMediaserverVsize(); File h263MemoryOut = new File(MEDIA_MEMORY_OUTPUT); Writer output = new BufferedWriter(new FileWriter(h263MemoryOut, true)); output.write("H263 Video Playback Only\n"); for (int i = 0; i < NUM_STRESS_LOOP; i++) { mediaStressPlayback(MediaNames.VIDEO_HIGHRES_H263); + if (i == 0) { + mStartMemory = getMediaserverVsize(); + output.write("Start memory : " + mStartMemory + "\n"); + Log.v(TAG, "first mem : " + mStartMemory); + } getMemoryWriteToLog(output); } output.write("\n"); @@ -351,13 +356,16 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi public void testH264VideoPlaybackMemoryUsage() throws Exception { boolean memoryResult = false; mStartPid = getMediaserverPid(); - mStartMemory = getMediaserverVsize(); File h264MemoryOut = new File(MEDIA_MEMORY_OUTPUT); Writer output = new BufferedWriter(new FileWriter(h264MemoryOut, true)); output.write("H264 Video Playback only\n"); for (int i = 0; i < NUM_STRESS_LOOP; i++) { mediaStressPlayback(MediaNames.VIDEO_H264_AMR); + if (i == 0) { + mStartMemory = getMediaserverVsize(); + output.write("Start memory : " + mStartMemory + "\n"); + } getMemoryWriteToLog(output); } output.write("\n"); @@ -371,13 +379,16 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi public void testWMVVideoPlaybackMemoryUsage() throws Exception { boolean memoryResult = false; mStartPid = getMediaserverPid(); - mStartMemory = getMediaserverVsize(); File wmvMemoryOut = new File(MEDIA_MEMORY_OUTPUT); Writer output = new BufferedWriter(new FileWriter(wmvMemoryOut, true)); output.write("WMV video playback only\n"); for (int i = 0; i < NUM_STRESS_LOOP; i++) { mediaStressPlayback(MediaNames.VIDEO_WMV); + if (i == 0) { + mStartMemory = getMediaserverVsize(); + output.write("Start memory : " + mStartMemory + "\n"); + } getMemoryWriteToLog(output); } output.write("\n"); @@ -391,7 +402,6 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi public void testH263RecordVideoOnlyMemoryUsage() throws Exception { boolean memoryResult = false; mStartPid = getMediaserverPid(); - mStartMemory = getMediaserverVsize(); File videoH263RecordOnlyMemoryOut = new File(MEDIA_MEMORY_OUTPUT); Writer output = new BufferedWriter(new FileWriter(videoH263RecordOnlyMemoryOut, true)); @@ -399,6 +409,10 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi for (int i = 0; i < NUM_STRESS_LOOP; i++) { stressVideoRecord(20, 352, 288, MediaRecorder.VideoEncoder.H263, MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_VIDEO_3GP, true); + if (i == 0) { + mStartMemory = getMediaserverVsize(); + output.write("Start memory : " + mStartMemory + "\n"); + } getMemoryWriteToLog(output); } output.write("\n"); @@ -412,7 +426,6 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi public void testMpeg4RecordVideoOnlyMemoryUsage() throws Exception { boolean memoryResult = false; mStartPid = getMediaserverPid(); - mStartMemory = getMediaserverVsize(); File videoMp4RecordOnlyMemoryOut = new File(MEDIA_MEMORY_OUTPUT); Writer output = new BufferedWriter(new FileWriter(videoMp4RecordOnlyMemoryOut, true)); @@ -420,6 +433,10 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi for (int i = 0; i < NUM_STRESS_LOOP; i++) { stressVideoRecord(20, 352, 288, MediaRecorder.VideoEncoder.MPEG_4_SP, MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_VIDEO_3GP, true); + if (i == 0) { + mStartMemory = getMediaserverVsize(); + output.write("Start memory : " + mStartMemory + "\n"); + } getMemoryWriteToLog(output); } output.write("\n"); @@ -434,7 +451,6 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi public void testRecordVidedAudioMemoryUsage() throws Exception { boolean memoryResult = false; mStartPid = getMediaserverPid(); - mStartMemory = getMediaserverVsize(); File videoRecordAudioMemoryOut = new File(MEDIA_MEMORY_OUTPUT); Writer output = new BufferedWriter(new FileWriter(videoRecordAudioMemoryOut, true)); @@ -442,6 +458,10 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi for (int i = 0; i < NUM_STRESS_LOOP; i++) { stressVideoRecord(20, 352, 288, MediaRecorder.VideoEncoder.H263, MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_VIDEO_3GP, false); + if (i == 0) { + mStartMemory = getMediaserverVsize(); + output.write("Start memory : " + mStartMemory + "\n"); + } getMemoryWriteToLog(output); } output.write("\n"); @@ -455,13 +475,16 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi public void testRecordAudioOnlyMemoryUsage() throws Exception { boolean memoryResult = false; mStartPid = getMediaserverPid(); - mStartMemory = getMediaserverVsize(); File audioOnlyMemoryOut = new File(MEDIA_MEMORY_OUTPUT); Writer output = new BufferedWriter(new FileWriter(audioOnlyMemoryOut, true)); output.write("Audio record only\n"); for (int i = 0; i < NUM_STRESS_LOOP; i++) { stressAudioRecord(MediaNames.RECORDER_OUTPUT); + if (i == 0) { + mStartMemory = getMediaserverVsize(); + output.write("Start memory : " + mStartMemory + "\n"); + } getMemoryWriteToLog(output); } output.write("\n"); diff --git a/packages/TtsService/jni/android_tts_SynthProxy.cpp b/packages/TtsService/jni/android_tts_SynthProxy.cpp index 99d7723..1bab717 100644 --- a/packages/TtsService/jni/android_tts_SynthProxy.cpp +++ b/packages/TtsService/jni/android_tts_SynthProxy.cpp @@ -26,16 +26,25 @@ #include <android_runtime/AndroidRuntime.h> #include <tts/TtsEngine.h> #include <media/AudioTrack.h> +#include <math.h> #include <dlfcn.h> #define DEFAULT_TTS_RATE 16000 #define DEFAULT_TTS_FORMAT AudioSystem::PCM_16_BIT #define DEFAULT_TTS_NB_CHANNELS 1 -#define DEFAULT_TTS_BUFFERSIZE 1024 +#define DEFAULT_TTS_BUFFERSIZE 2048 // TODO use the TTS stream type when available #define DEFAULT_TTS_STREAM_TYPE AudioSystem::MUSIC +// EQ + BOOST parameters +#define FILTER_LOWSHELF_ATTENUATION -18.0f // in dB +#define FILTER_TRANSITION_FREQ 1100.0f // in Hz +#define FILTER_SHELF_SLOPE 1.0f // Q +#define FILTER_GAIN 6.0f // linear gain +// such a huge gain is justified by how much energy in the low frequencies is "wasted" at the output +// of the synthesis. The low shelving filter removes it, leaving room for amplification. + #define USAGEMODE_PLAY_IMMEDIATELY 0 #define USAGEMODE_WRITE_TO_FILE 1 @@ -57,6 +66,79 @@ struct afterSynthData_t { }; // ---------------------------------------------------------------------------- +// EQ data +double amp; +double w; +double sinw; +double cosw; +double beta; +double a0, a1, a2, b0, b1, b2; +double m_fa, m_fb, m_fc, m_fd, m_fe; +double x0; // x[n] +double x1; // x[n-1] +double x2; // x[n-2] +double out0;// y[n] +double out1;// y[n-1] +double out2;// y[n-2] + +void initializeEQ() { + + amp = float(pow(10.0, FILTER_LOWSHELF_ATTENUATION / 40.0)); + w = 2.0 * M_PI * (FILTER_TRANSITION_FREQ / DEFAULT_TTS_RATE); + sinw = float(sin(w)); + cosw = float(cos(w)); + beta = float(sqrt(amp)/FILTER_SHELF_SLOPE); + + // initialize low-shelf parameters + b0 = amp * ((amp+1.0F) - ((amp-1.0F)*cosw) + (beta*sinw)); + b1 = 2.0F * amp * ((amp-1.0F) - ((amp+1.0F)*cosw)); + b2 = amp * ((amp+1.0F) - ((amp-1.0F)*cosw) - (beta*sinw)); + a0 = (amp+1.0F) + ((amp-1.0F)*cosw) + (beta*sinw); + a1 = 2.0F * ((amp-1.0F) + ((amp+1.0F)*cosw)); + a2 = -((amp+1.0F) + ((amp-1.0F)*cosw) - (beta*sinw)); + + m_fa = FILTER_GAIN * b0/a0; + m_fb = FILTER_GAIN * b1/a0; + m_fc = FILTER_GAIN * b2/a0; + m_fd = a1/a0; + m_fe = a2/a0; +} + +void initializeFilter() { + x0 = 0.0f; + x1 = 0.0f; + x2 = 0.0f; + out0 = 0.0f; + out1 = 0.0f; + out2 = 0.0f; +} + +void applyFilter(int16_t* buffer, size_t sampleCount) { + + for (size_t i=0 ; i<sampleCount ; i++) { + + x0 = (double) buffer[i]; + + out0 = (m_fa*x0) + (m_fb*x1) + (m_fc*x2) + (m_fd*out1) + (m_fe*out2); + + x2 = x1; + x1 = x0; + + out2 = out1; + out1 = out0; + + if (out0 > 32767.0f) { + buffer[i] = 32767; + } else if (out0 < -32768.0f) { + buffer[i] = -32768; + } else { + buffer[i] = (int16_t) out0; + } + } +} + + +// ---------------------------------------------------------------------------- static fields_t javaTTSFields; // TODO move to synth member once we have multiple simultaneous engines running @@ -198,12 +280,13 @@ static tts_callback_status ttsSynthDoneCB(void *& userdata, uint32_t rate, if (wav == NULL) { delete pForAfter; - LOGI("Null: speech has completed"); + LOGV("Null: speech has completed"); } if (bufferSize > 0) { prepAudioTrack(pJniData, pForAfter->streamType, rate, format, channel); if (pJniData->mAudioOut) { + applyFilter((int16_t*)wav, bufferSize/2); pJniData->mAudioOut->write(wav, bufferSize); memset(wav, 0, bufferSize); //LOGV("AudioTrack wrote: %d bytes", bufferSize); @@ -212,13 +295,14 @@ static tts_callback_status ttsSynthDoneCB(void *& userdata, uint32_t rate, } } } else if (pForAfter->usageMode == USAGEMODE_WRITE_TO_FILE) { - LOGV("Save to file"); + //LOGV("Save to file"); if (wav == NULL) { delete pForAfter; LOGV("Null: speech has completed"); return TTS_CALLBACK_HALT; } if (bufferSize > 0){ + applyFilter((int16_t*)wav, bufferSize/2); fwrite(wav, 1, bufferSize, pForAfter->outputFile); memset(wav, 0, bufferSize); } @@ -289,6 +373,8 @@ android_tts_SynthProxy_native_setup(JNIEnv *env, jobject thiz, env->SetIntField(thiz, javaTTSFields.synthProxyFieldJniData, (int)pJniStorage); + initializeEQ(); + env->ReleaseStringUTFChars(nativeSoLib, nativeSoLibNativeString); } @@ -479,6 +565,8 @@ android_tts_SynthProxy_synthesizeToFile(JNIEnv *env, jobject thiz, jint jniData, return result; } + initializeFilter(); + Mutex::Autolock l(engineMutex); // Retrieve audio parameters before writing the file header @@ -583,6 +671,8 @@ android_tts_SynthProxy_speak(JNIEnv *env, jobject thiz, jint jniData, return result; } + initializeFilter(); + Mutex::Autolock l(engineMutex); SynthProxyJniStorage* pSynthData = (SynthProxyJniStorage*)jniData; diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java index 1b99d32..cd24727 100755 --- a/packages/TtsService/src/android/tts/TtsService.java +++ b/packages/TtsService/src/android/tts/TtsService.java @@ -172,10 +172,18 @@ public class TtsService extends Service implements OnCompletionListener { @Override public void onDestroy() { super.onDestroy(); + + // TODO replace the call to stopAll() with a method to clear absolutely all upcoming + // uses of the native synth, including synthesis to a file, and delete files for which + // synthesis was not complete. + stopAll(""); + // Don't hog the media player cleanUpPlayer(); - sNativeSynth.shutdown(); + if (sNativeSynth != null) { + sNativeSynth.shutdown(); + } sNativeSynth = null; // Unregister all callbacks. @@ -243,38 +251,70 @@ public class TtsService extends Service implements OnCompletionListener { private int setSpeechRate(String callingApp, int rate) { - if (isDefaultEnforced()) { - return sNativeSynth.setSpeechRate(getDefaultRate()); - } else { - return sNativeSynth.setSpeechRate(rate); + int res = TextToSpeech.ERROR; + try { + if (isDefaultEnforced()) { + res = sNativeSynth.setSpeechRate(getDefaultRate()); + } else { + res = sNativeSynth.setSpeechRate(rate); + } + } catch (NullPointerException e) { + // synth will become null during onDestroy() + res = TextToSpeech.ERROR; } + return res; } private int setPitch(String callingApp, int pitch) { - return sNativeSynth.setPitch(pitch); + int res = TextToSpeech.ERROR; + try { + res = sNativeSynth.setPitch(pitch); + } catch (NullPointerException e) { + // synth will become null during onDestroy() + res = TextToSpeech.ERROR; + } + return res; } private int isLanguageAvailable(String lang, String country, String variant) { //Log.v("TtsService", "TtsService.isLanguageAvailable(" + lang + ", " + country + ", " +variant+")"); - return sNativeSynth.isLanguageAvailable(lang, country, variant); + int res = TextToSpeech.LANG_NOT_SUPPORTED; + try { + res = sNativeSynth.isLanguageAvailable(lang, country, variant); + } catch (NullPointerException e) { + // synth will become null during onDestroy() + res = TextToSpeech.LANG_NOT_SUPPORTED; + } + return res; } private String[] getLanguage() { - return sNativeSynth.getLanguage(); + try { + return sNativeSynth.getLanguage(); + } catch (Exception e) { + return null; + } } private int setLanguage(String callingApp, String lang, String country, String variant) { Log.v("TtsService", "TtsService.setLanguage(" + lang + ", " + country + ", " + variant + ")"); - if (isDefaultEnforced()) { - return sNativeSynth.setLanguage(getDefaultLanguage(), getDefaultCountry(), - getDefaultLocVariant()); - } else { - return sNativeSynth.setLanguage(lang, country, variant); + int res = TextToSpeech.ERROR; + try { + if (isDefaultEnforced()) { + res = sNativeSynth.setLanguage(getDefaultLanguage(), getDefaultCountry(), + getDefaultLocVariant()); + } else { + res = sNativeSynth.setLanguage(lang, country, variant); + } + } catch (NullPointerException e) { + // synth will become null during onDestroy() + res = TextToSpeech.ERROR; } + return res; } @@ -402,7 +442,12 @@ public class TtsService extends Service implements OnCompletionListener { } if ((mCurrentSpeechItem != null) && mCurrentSpeechItem.mCallingApp.equals(callingApp)) { - result = sNativeSynth.stop(); + try { + result = sNativeSynth.stop(); + } catch (NullPointerException e1) { + // synth will become null during onDestroy() + result = TextToSpeech.ERROR; + } mKillList.put(mCurrentSpeechItem, true); if (mPlayer != null) { try { @@ -434,7 +479,8 @@ public class TtsService extends Service implements OnCompletionListener { /** - * Stops all speech output and removes any utterances still in the queue globally. + * Stops all speech output and removes any utterances still in the queue globally, except + * those intended to be synthesized to file. */ private int stopAll(String callingApp) { int result = TextToSpeech.ERROR; @@ -451,7 +497,12 @@ public class TtsService extends Service implements OnCompletionListener { if ((mCurrentSpeechItem != null) && ((mCurrentSpeechItem.mType != SpeechItem.TEXT_TO_FILE) || mCurrentSpeechItem.mCallingApp.equals(callingApp))) { - result = sNativeSynth.stop(); + try { + result = sNativeSynth.stop(); + } catch (NullPointerException e1) { + // synth will become null during onDestroy() + result = TextToSpeech.ERROR; + } mKillList.put(mCurrentSpeechItem, true); if (mPlayer != null) { try { @@ -591,7 +642,12 @@ public class TtsService extends Service implements OnCompletionListener { if (speechRate.length() > 0){ setSpeechRate("", Integer.parseInt(speechRate)); } - sNativeSynth.speak(speechItem.mText, streamType); + try { + sNativeSynth.speak(speechItem.mText, streamType); + } catch (NullPointerException e) { + // synth will become null during onDestroy() + Log.v("TtsService", " null synth, can't speak"); + } } } catch (InterruptedException e) { Log.e("TtsService", "TTS speakInternalOnly(): tryLock interrupted"); @@ -660,7 +716,12 @@ public class TtsService extends Service implements OnCompletionListener { if (speechRate.length() > 0){ setSpeechRate("", Integer.parseInt(speechRate)); } - sNativeSynth.synthesizeToFile(speechItem.mText, speechItem.mFilename); + try { + sNativeSynth.synthesizeToFile(speechItem.mText, speechItem.mFilename); + } catch (NullPointerException e) { + // synth will become null during onDestroy() + Log.v("TtsService", " null synth, can't synthesize to file"); + } } } catch (InterruptedException e) { Log.e("TtsService", "TTS synthToFileInternalOnly(): tryLock interrupted"); diff --git a/packages/VpnServices/src/com/android/server/vpn/VpnService.java b/packages/VpnServices/src/com/android/server/vpn/VpnService.java index f410c7b..e3ac996 100644 --- a/packages/VpnServices/src/com/android/server/vpn/VpnService.java +++ b/packages/VpnServices/src/com/android/server/vpn/VpnService.java @@ -133,11 +133,7 @@ abstract class VpnService<E extends VpnProfile> implements Serializable { if (VpnState.CONNECTED.equals(mState)) { Log.i("VpnService", " recovered: " + mProfile.getName()); - new Thread(new Runnable() { - public void run() { - enterConnectivityLoop(); - } - }).start(); + startConnectivityMonitor(); } } @@ -213,16 +209,18 @@ abstract class VpnService<E extends VpnProfile> implements Serializable { SystemProperties.get(VPN_STATUS))) { onConnected(); return; - } else if (mDaemonHelper.anySocketError()) { - return; + } else { + int err = mDaemonHelper.getSocketError(); + if (err != 0) { + onError(err); + return; + } } sleep(500); // 0.5 second } - synchronized (VpnService.this) { - if (mState == VpnState.CONNECTING) { - onError(new IOException("Connecting timed out")); - } + if (mState == VpnState.CONNECTING) { + onError(new IOException("Connecting timed out")); } } @@ -235,13 +233,15 @@ abstract class VpnService<E extends VpnProfile> implements Serializable { mStartTime = System.currentTimeMillis(); - // set DNS after saving the states in case the process gets killed - // before states are saved + // Correct order to make sure VpnService doesn't break when killed: + // (1) set state to CONNECTED + // (2) save states + // (3) set DNS + setState(VpnState.CONNECTED); saveSelf(); setVpnDns(); - setState(VpnState.CONNECTED); - enterConnectivityLoop(); + startConnectivityMonitor(); } private void saveSelf() throws IOException { @@ -340,23 +340,28 @@ abstract class VpnService<E extends VpnProfile> implements Serializable { } } - private void enterConnectivityLoop() { - Log.i(TAG, "VPN connectivity monitor running"); - try { - for (;;) { - synchronized (VpnService.this) { - if (mState != VpnState.CONNECTED || !checkConnectivity()) { - break; + private void startConnectivityMonitor() { + new Thread(new Runnable() { + public void run() { + Log.i(TAG, "VPN connectivity monitor running"); + try { + for (;;) { + synchronized (VpnService.this) { + if ((mState != VpnState.CONNECTED) + || !checkConnectivity()) { + break; + } + mNotification.update(); + checkDns(); + VpnService.this.wait(1000); // 1 second + } } - mNotification.update(); - checkDns(); - VpnService.this.wait(1000); // 1 second + } catch (InterruptedException e) { + onError(e); } + Log.i(TAG, "VPN connectivity monitor stopped"); } - } catch (InterruptedException e) { - onError(e); - } - Log.i(TAG, "VPN connectivity monitor stopped"); + }).start(); } private void saveLocalIpAndInterface(String serverIp) throws IOException { @@ -432,11 +437,7 @@ abstract class VpnService<E extends VpnProfile> implements Serializable { } synchronized void stopAll() { - if (mDaemonList.isEmpty()) { - onFinalCleanUp(); - } else { - for (DaemonProxy s : mDaemonList) s.stop(); - } + for (DaemonProxy s : mDaemonList) s.stop(); } synchronized void closeSockets() { @@ -461,30 +462,26 @@ abstract class VpnService<E extends VpnProfile> implements Serializable { } } - synchronized boolean anySocketError() { + synchronized int getSocketError() { for (DaemonProxy s : mDaemonList) { switch (getResultFromSocket(s)) { case 0: continue; case AUTH_ERROR_CODE: - onError(VpnManager.VPN_ERROR_AUTH); - return true; + return VpnManager.VPN_ERROR_AUTH; case CHALLENGE_ERROR_CODE: - onError(VpnManager.VPN_ERROR_CHALLENGE); - return true; + return VpnManager.VPN_ERROR_CHALLENGE; case REMOTE_HUNG_UP_ERROR_CODE: - onError(VpnManager.VPN_ERROR_REMOTE_HUNG_UP); - return true; + return VpnManager.VPN_ERROR_REMOTE_HUNG_UP; default: - onError(VpnManager.VPN_ERROR_CONNECTION_FAILED); - return true; + return VpnManager.VPN_ERROR_CONNECTION_FAILED; } } - return false; + return 0; } } diff --git a/preloaded-classes b/preloaded-classes index 0520e41..69c596c 100644 --- a/preloaded-classes +++ b/preloaded-classes @@ -1,194 +1,248 @@ # Classes which are preloaded by com.android.internal.os.ZygoteInit. +# Automatically generated by frameworks/base/tools/preload/WritePreloadedClassFile.java. +# MIN_LOAD_TIME_MICROS=1250 +SQLite.Blob +SQLite.Database +SQLite.FunctionContext +SQLite.Stmt +SQLite.Vm android.R$styleable -android.accounts.AccountMonitor -android.accounts.AccountMonitor$AccountUpdater +android.accounts.IAccountsService$Stub android.app.Activity android.app.ActivityGroup -android.app.ActivityManager$MemoryInfo$1 +android.app.ActivityManager +android.app.ActivityManager$MemoryInfo android.app.ActivityManagerNative android.app.ActivityManagerProxy android.app.ActivityThread -android.app.ActivityThread$ActivityRecord -android.app.ActivityThread$AppBindData android.app.ActivityThread$ApplicationThread -android.app.ActivityThread$ContextCleanupInfo -android.app.ActivityThread$GcIdler android.app.ActivityThread$H -android.app.ActivityThread$Idler -android.app.ActivityThread$PackageInfo -android.app.ActivityThread$PackageInfo$ReceiverDispatcher -android.app.ActivityThread$PackageInfo$ReceiverDispatcher$InnerReceiver -android.app.ActivityThread$PackageInfo$ServiceDispatcher -android.app.ActivityThread$PackageInfo$ServiceDispatcher$InnerConnection -android.app.ActivityThread$ProviderRecord -android.app.ActivityThread$ProviderRefCount android.app.AlertDialog android.app.Application android.app.ApplicationContext android.app.ApplicationContext$ApplicationContentResolver android.app.ApplicationContext$ApplicationPackageManager -android.app.ApplicationContext$ApplicationPackageManager$PackageRemovedReceiver -android.app.ApplicationContext$ApplicationPackageManager$ResourceName -android.app.ApplicationContext$SharedPreferencesImpl -android.app.ApplicationLoaders +android.app.ApplicationContext$WallpaperCallback android.app.ApplicationThreadNative +android.app.DatePickerDialog android.app.Dialog android.app.ExpandableListActivity android.app.IActivityManager -android.app.IActivityManager$ContentProviderHolder$1 +android.app.IActivityManager$ContentProviderHolder android.app.IAlarmManager$Stub -android.app.IAlarmManager$Stub$Proxy -android.app.IApplicationThread android.app.INotificationManager$Stub -android.app.INotificationManager$Stub$Proxy -android.app.ISearchManager android.app.ISearchManager$Stub -android.app.ISearchManager$Stub$Proxy +android.app.ISearchManagerCallback$Stub +android.app.IStatusBar$Stub +android.app.ITransientNotification$Stub +android.app.IWallpaperService$Stub +android.app.IWallpaperServiceCallback$Stub android.app.Instrumentation -android.app.IntentReceiverLeaked +android.app.IntentService android.app.ListActivity -android.app.ListActivity$1 -android.app.ListActivity$2 android.app.LocalActivityManager android.app.Notification -android.app.NotificationManager android.app.PendingIntent -android.app.PendingIntent$1 android.app.ProgressDialog -android.app.ReceiverRestrictedContext android.app.ResultInfo -android.app.ResultInfo$1 -android.app.SearchDialog -android.app.SearchDialog$SearchAutoComplete +android.app.SearchManager$SearchManagerCallback android.app.Service -android.app.ServiceConnectionLeaked +android.app.StatusBarManager android.app.TabActivity +android.app.TimePickerDialog +android.appwidget.AppWidgetHost +android.appwidget.AppWidgetHostView +android.appwidget.AppWidgetManager +android.appwidget.AppWidgetProvider +android.appwidget.AppWidgetProviderInfo +android.backup.BackupDataInput +android.backup.BackupDataInput$EntityHeader +android.backup.BackupDataOutput +android.backup.BackupHelperDispatcher +android.backup.BackupHelperDispatcher$Header +android.backup.FileBackupHelperBase +android.bluetooth.BluetoothAudioGateway +android.bluetooth.BluetoothDevice +android.bluetooth.Database +android.bluetooth.HeadsetBase +android.bluetooth.IBluetoothA2dp +android.bluetooth.IBluetoothA2dp$Stub +android.bluetooth.IBluetoothDevice +android.bluetooth.IBluetoothDevice$Stub +android.bluetooth.IBluetoothDevice$Stub$Proxy +android.bluetooth.RfcommSocket +android.bluetooth.ScoSocket android.content.AbstractSyncableContentProvider android.content.AbstractTableMerger -android.content.AsyncQueryHandler$WorkerHandler -android.content.BroadcastReceiver -android.content.ComponentCallbacks android.content.ComponentName -android.content.ComponentName$1 android.content.ContentProvider$Transport -android.content.ContentProviderProxy -android.content.ContentQueryMap -android.content.ContentQueryMap$1 android.content.ContentResolver android.content.ContentResolver$CursorWrapperInner android.content.ContentValues android.content.Context android.content.ContextWrapper -android.content.DialogInterface -android.content.DialogInterface$OnCancelListener -android.content.DialogInterface$OnDismissListener -android.content.IContentProvider -android.content.IContentService +android.content.DialogInterface$OnMultiChoiceClickListener android.content.IContentService$Stub +android.content.ISyncAdapter$Stub android.content.Intent -android.content.Intent$1 +android.content.Intent$ShortcutIconResource android.content.IntentFilter -android.content.SearchRecentSuggestionsProvider -android.content.ServiceConnection -android.content.SharedPreferences +android.content.SyncAdapter$Transport android.content.SyncResult -android.content.SyncResult$1 +android.content.SyncStateContentProviderHelper android.content.SyncStats -android.content.SyncStats$1 android.content.SyncableContentProvider +android.content.TempProviderSyncAdapter android.content.UriMatcher android.content.pm.ActivityInfo -android.content.pm.ActivityInfo$1 android.content.pm.ApplicationInfo -android.content.pm.ApplicationInfo$1 -android.content.pm.ComponentInfo -android.content.pm.IPackageManager +android.content.pm.ConfigurationInfo +android.content.pm.IPackageDataObserver$Stub +android.content.pm.IPackageDeleteObserver$Stub android.content.pm.IPackageManager$Stub android.content.pm.IPackageManager$Stub$Proxy +android.content.pm.IPackageStatsObserver$Stub android.content.pm.InstrumentationInfo -android.content.pm.InstrumentationInfo$1 -android.content.pm.PackageItemInfo +android.content.pm.PackageInfo android.content.pm.PackageManager -android.content.pm.PackageManager$NameNotFoundException +android.content.pm.PackageStats +android.content.pm.PathPermission android.content.pm.PermissionInfo -android.content.pm.ProviderInfo -android.content.pm.ProviderInfo$1 -android.content.pm.ResolveInfo$1 -android.content.pm.ServiceInfo$1 +android.content.pm.ResolveInfo +android.content.pm.Signature +android.content.res.AssetFileDescriptor +android.content.res.AssetFileDescriptor$1 android.content.res.AssetManager android.content.res.AssetManager$AssetInputStream android.content.res.ColorStateList android.content.res.ColorStateList$1 +android.content.res.CompatibilityInfo +android.content.res.CompatibilityInfo$1 android.content.res.Configuration +android.content.res.Configuration$1 android.content.res.Resources -android.content.res.Resources$Theme +android.content.res.Resources$1 android.content.res.StringBlock android.content.res.TypedArray android.content.res.XmlBlock android.content.res.XmlBlock$Parser +android.content.res.XmlResourceParser android.database.AbstractCursor -android.database.AbstractCursor$SelfContentObserver android.database.AbstractWindowedCursor -android.database.BulkCursorNative -android.database.BulkCursorProxy android.database.BulkCursorToCursorAdaptor -android.database.ContentObservable -android.database.ContentObserver$Transport -android.database.Cursor +android.database.CharArrayBuffer +android.database.CursorJoiner$Result android.database.CursorToBulkCursorAdaptor -android.database.CursorToBulkCursorAdaptor$ContentObserverProxy android.database.CursorWindow +android.database.CursorWindow$1 android.database.CursorWrapper -android.database.DataSetObservable -android.database.IContentObserver$Stub$Proxy +android.database.DatabaseUtils +android.database.MatrixCursor android.database.MergeCursor +android.database.sqlite.SQLiteClosable android.database.sqlite.SQLiteCursor android.database.sqlite.SQLiteDatabase -android.database.sqlite.SQLiteDatabase$CursorFactory +android.database.sqlite.SQLiteDatabase$ConflictAlgorithm +android.database.sqlite.SQLiteDebug +android.database.sqlite.SQLiteDebug$PagerStats android.database.sqlite.SQLiteDirectCursorDriver +android.database.sqlite.SQLiteProgram android.database.sqlite.SQLiteQuery +android.database.sqlite.SQLiteQueryBuilder android.database.sqlite.SQLiteStatement -android.ddm.DdmHandleAppName -android.ddm.DdmHandleExit android.ddm.DdmHandleHeap android.ddm.DdmHandleHello android.ddm.DdmHandleNativeHeap +android.ddm.DdmHandleProfiling android.ddm.DdmHandleThread android.ddm.DdmRegister +android.debug.JNITest +android.emoji.EmojiFactory +android.graphics.AvoidXfermode android.graphics.Bitmap +android.graphics.Bitmap$1 +android.graphics.Bitmap$CompressFormat +android.graphics.Bitmap$Config +android.graphics.BitmapFactory +android.graphics.BitmapFactory$Options android.graphics.BitmapShader +android.graphics.BlurMaskFilter +android.graphics.Camera android.graphics.Canvas -android.graphics.Canvas$EdgeType android.graphics.Color +android.graphics.ColorFilter +android.graphics.ColorMatrixColorFilter +android.graphics.ComposePathEffect +android.graphics.ComposeShader +android.graphics.CornerPathEffect +android.graphics.DashPathEffect +android.graphics.DiscretePathEffect +android.graphics.DrawFilter +android.graphics.EmbossMaskFilter android.graphics.Interpolator +android.graphics.LayerRasterizer +android.graphics.LightingColorFilter android.graphics.LinearGradient +android.graphics.MaskFilter android.graphics.Matrix -android.graphics.Matrix$ScaleToFit +android.graphics.Movie android.graphics.NinePatch android.graphics.Paint +android.graphics.Paint$Align +android.graphics.Paint$Cap +android.graphics.Paint$FontMetrics +android.graphics.Paint$FontMetricsInt +android.graphics.Paint$Join +android.graphics.Paint$Style android.graphics.PaintFlagsDrawFilter android.graphics.Path -android.graphics.Path$Direction +android.graphics.Path$FillType +android.graphics.PathDashPathEffect +android.graphics.PathEffect +android.graphics.PathMeasure android.graphics.Picture -android.graphics.PorterDuff +android.graphics.PixelFormat +android.graphics.PixelXorXfermode +android.graphics.Point +android.graphics.PointF android.graphics.PorterDuff$Mode +android.graphics.PorterDuffColorFilter android.graphics.PorterDuffXfermode +android.graphics.RadialGradient +android.graphics.Rasterizer android.graphics.Rect +android.graphics.Rect$1 android.graphics.RectF +android.graphics.RectF$1 android.graphics.Region +android.graphics.Region$1 android.graphics.Region$Op +android.graphics.RegionIterator android.graphics.Shader android.graphics.Shader$TileMode +android.graphics.SumPathEffect +android.graphics.SweepGradient android.graphics.Typeface android.graphics.Xfermode +android.graphics.drawable.Animatable +android.graphics.drawable.AnimatedRotateDrawable +android.graphics.drawable.AnimatedRotateDrawable$AnimatedRotateState android.graphics.drawable.AnimationDrawable +android.graphics.drawable.AnimationDrawable$AnimationState android.graphics.drawable.BitmapDrawable android.graphics.drawable.BitmapDrawable$BitmapState +android.graphics.drawable.ClipDrawable +android.graphics.drawable.ClipDrawable$ClipState android.graphics.drawable.ColorDrawable android.graphics.drawable.ColorDrawable$ColorState android.graphics.drawable.Drawable +android.graphics.drawable.Drawable$Callback +android.graphics.drawable.Drawable$ConstantState android.graphics.drawable.DrawableContainer +android.graphics.drawable.DrawableContainer$DrawableContainerState android.graphics.drawable.GradientDrawable +android.graphics.drawable.GradientDrawable$GradientState +android.graphics.drawable.GradientDrawable$Orientation android.graphics.drawable.LayerDrawable android.graphics.drawable.LayerDrawable$ChildDrawable android.graphics.drawable.LayerDrawable$LayerState @@ -196,379 +250,432 @@ android.graphics.drawable.NinePatchDrawable android.graphics.drawable.NinePatchDrawable$NinePatchState android.graphics.drawable.PaintDrawable android.graphics.drawable.RotateDrawable -android.graphics.drawable.RotateDrawable$RotateState -android.graphics.drawable.ScaleDrawable -android.graphics.drawable.ScaleDrawable$ScaleState android.graphics.drawable.ShapeDrawable -android.graphics.drawable.ShapeDrawable$ShapeState android.graphics.drawable.StateListDrawable android.graphics.drawable.StateListDrawable$StateListState android.graphics.drawable.TransitionDrawable android.graphics.drawable.TransitionDrawable$TransitionState android.graphics.drawable.shapes.RoundRectShape +android.hardware.Camera +android.hardware.ISensorService$Stub android.hardware.SensorManager +android.inputmethodservice.AbstractInputMethodService +android.inputmethodservice.AbstractInputMethodService$AbstractInputMethodSessionImpl +android.inputmethodservice.ExtractButton +android.inputmethodservice.ExtractEditText +android.inputmethodservice.IInputMethodSessionWrapper +android.inputmethodservice.IInputMethodSessionWrapper$InputMethodEventCallbackWrapper +android.inputmethodservice.IInputMethodWrapper +android.inputmethodservice.InputMethodService +android.inputmethodservice.Keyboard +android.inputmethodservice.Keyboard$Key android.inputmethodservice.KeyboardView +android.inputmethodservice.KeyboardView$2 +android.location.Address +android.location.Criteria android.location.ILocationManager$Stub +android.location.ILocationManager$Stub$Proxy +android.location.ILocationProvider +android.location.ILocationProvider$Stub android.location.Location +android.location.LocationManager +android.location.LocationManager$ListenerTransport +android.location.LocationManager$LpPowerComparator +android.media.AudioFormat android.media.AudioManager +android.media.AudioRecord +android.media.AudioSystem +android.media.AudioTrack +android.media.ExifInterface +android.media.FaceDetector +android.media.FaceDetector$Face android.media.IAudioService$Stub android.media.IAudioService$Stub$Proxy +android.media.JetPlayer +android.media.MediaMetadataRetriever android.media.MediaPlayer +android.media.MediaRecorder +android.media.MediaScanner +android.media.MediaScanner$MyMediaScannerClient +android.media.Ringtone +android.media.RingtoneManager +android.media.ToneGenerator +android.net.ConnectivityManager +android.net.Credentials +android.net.DhcpInfo +android.net.DhcpInfo$1 +android.net.IConnectivityManager$Stub +android.net.LocalServerSocket android.net.LocalSocket -android.net.LocalSocketAddress android.net.LocalSocketAddress$Namespace android.net.LocalSocketImpl android.net.LocalSocketImpl$SocketInputStream android.net.LocalSocketImpl$SocketOutputStream -android.net.NetworkConnectivityListener$State +android.net.NetworkConnectivityListener android.net.NetworkInfo android.net.NetworkInfo$DetailedState -android.net.SSLCertificateSocketFactory +android.net.NetworkUtils android.net.Uri -android.net.Uri$1 -android.net.Uri$AbstractHierarchicalUri -android.net.Uri$AbstractPart android.net.Uri$HierarchicalUri android.net.Uri$OpaqueUri android.net.Uri$Part -android.net.Uri$Part$EmptyPart -android.net.Uri$PathPart -android.net.Uri$PathSegments android.net.Uri$StringUri android.net.WebAddress android.net.http.AndroidHttpClient -android.net.http.AndroidHttpClient$1 android.net.http.AndroidHttpClient$2 -android.net.http.AndroidHttpClient$CurlLogger -android.net.http.DomainNameChecker android.net.http.CertificateChainValidator +android.net.http.Connection +android.net.http.DomainNameChecker android.net.http.EventHandler +android.net.http.Headers android.net.http.HttpsConnection +android.net.http.Request android.net.http.RequestQueue -android.net.http.SslError +android.net.http.SslCertificate +android.net.vpn.IVpnService$Stub +android.net.vpn.PptpProfile +android.net.vpn.VpnManager +android.net.vpn.VpnProfile +android.net.vpn.VpnState +android.net.vpn.VpnType android.net.wifi.IWifiManager$Stub -android.net.wifi.SupplicantState -android.net.wifi.WifiConfiguration -android.net.wifi.WifiInfo -android.opengl.Material +android.net.wifi.IWifiManager$Stub$Proxy +android.net.wifi.WifiManager +android.net.wifi.WifiNative +android.opengl.GLES10 +android.opengl.GLES10Ext +android.opengl.GLES11 +android.opengl.GLES11Ext +android.opengl.GLU +android.opengl.GLUtils +android.opengl.Matrix +android.opengl.Visibility +android.os.Base64Utils android.os.Binder android.os.BinderProxy android.os.Build +android.os.Build$VERSION android.os.Bundle -android.os.Bundle$1 +android.os.DeadObjectException +android.os.Debug +android.os.Debug$MemoryInfo android.os.Environment +android.os.Exec +android.os.FileObserver$ObserverThread android.os.FileUtils +android.os.FileUtils$FileStatus android.os.Handler -android.os.HandlerThread +android.os.Hardware android.os.IBinder +android.os.ICheckinService$Stub android.os.IHardwareService$Stub -android.os.IHardwareService$Stub$Proxy +android.os.IInterface +android.os.IMountService$Stub +android.os.IParentalControlCallback$Stub android.os.IPowerManager$Stub -android.os.IPowerManager$Stub$Proxy -android.os.IServiceManager android.os.Looper +android.os.MemoryFile android.os.Message -android.os.Message$1 -android.os.MessageQueue -android.os.MessageQueue$IdleHandler +android.os.NetStat android.os.Parcel +android.os.Parcel$1 +android.os.ParcelFileDescriptor +android.os.ParcelFileDescriptor$1 +android.os.Parcelable +android.os.Parcelable$Creator android.os.PatternMatcher -android.os.PatternMatcher$1 -android.os.PowerManager -android.os.PowerManager$WakeLock -android.os.PowerManager$WakeLock$1 +android.os.Power android.os.Process -android.os.ServiceManager -android.os.ServiceManagerNative -android.os.ServiceManagerProxy -android.os.Vibrator +android.os.ResultReceiver +android.os.StatFs +android.os.SystemClock +android.os.SystemProperties +android.os.UEventObserver +android.pim.EventRecurrence android.preference.CheckBoxPreference +android.preference.CheckBoxPreference$SavedState android.preference.DialogPreference android.preference.EditTextPreference android.preference.ListPreference +android.preference.ListPreference$SavedState android.preference.Preference android.preference.PreferenceActivity android.preference.PreferenceGroup android.preference.PreferenceGroupAdapter +android.preference.PreferenceInflater android.preference.PreferenceManager android.preference.PreferenceScreen android.preference.RingtonePreference +android.preference.VolumePreference +android.preference.VolumePreference$SeekBarVolumizer +android.provider.Browser +android.provider.Calendar$Attendees +android.provider.Calendar$BusyBits +android.provider.Calendar$CalendarAlerts +android.provider.Calendar$Calendars +android.provider.Calendar$Events +android.provider.Calendar$Instances +android.provider.CallLog$Calls +android.provider.Checkin$Events$Tag +android.provider.Checkin$Properties +android.provider.Checkin$Properties$Tag +android.provider.Checkin$Stats$Tag +android.provider.Contacts +android.provider.Contacts$ContactMethods +android.provider.Contacts$People +android.provider.Contacts$Phones +android.provider.Contacts$Presence +android.provider.Contacts$Settings +android.provider.Downloads +android.provider.Gmail +android.provider.Gmail$AttachmentOrigin +android.provider.Gmail$AttachmentRendition +android.provider.Gmail$ConversationCursor +android.provider.Gmail$CursorStatus +android.provider.Gmail$LabelMap +android.provider.Gmail$MessageCursor +android.provider.Gmail$PersonalLevel +android.provider.Gmail$Settings +android.provider.Im$Account +android.provider.Im$Avatars +android.provider.Im$Chats +android.provider.Im$Contacts +android.provider.Im$LastRmqId +android.provider.Im$Messages +android.provider.Im$OutgoingRmq +android.provider.Im$Presence +android.provider.Im$Provider +android.provider.Im$ProviderSettings +android.provider.MediaStore +android.provider.MediaStore$Audio$Albums +android.provider.MediaStore$Audio$Artists +android.provider.MediaStore$Audio$Artists$Albums +android.provider.MediaStore$Audio$Media +android.provider.MediaStore$Audio$Playlists +android.provider.MediaStore$Images$Media +android.provider.MediaStore$Images$Thumbnails +android.provider.SearchRecentSuggestions +android.provider.Settings$Gservices +android.provider.Settings$Secure +android.provider.Settings$System +android.provider.SubscribedFeeds$Feeds +android.provider.Telephony$Carriers +android.provider.Telephony$Mms +android.provider.Telephony$MmsSms +android.provider.Telephony$MmsSms$PendingMessages +android.provider.Telephony$Sms +android.provider.Telephony$Sms$Conversations +android.provider.Telephony$Threads +android.provider.UserDictionary +android.provider.UserDictionary$Words android.sax.RootElement +android.sax.RootElement$Handler +android.security.Keystore +android.security.Keystore$FileKeystore +android.security.Md5MessageDigest +android.security.MessageDigest +android.security.ServiceCommand +android.security.Sha1MessageDigest +android.server.BluetoothA2dpService +android.server.BluetoothDeviceService +android.server.BluetoothEventLoop +android.server.data.BuildData +android.server.data.CrashData +android.server.data.ThrowableData android.server.search.SearchableInfo -android.server.search.SearchableInfo$1 +android.server.search.Searchables +android.speech.IRecognitionListener$Stub +android.speech.IRecognitionService$Stub +android.speech.RecognitionResult +android.speech.RecognitionServiceUtil +android.speech.srec.MicrophoneInputStream +android.speech.srec.Recognizer +android.speech.tts.ITts$Stub +android.speech.tts.ITts$Stub$Proxy +android.speech.tts.TextToSpeech android.telephony.PhoneNumberUtils -android.telephony.PhoneStateListener +android.telephony.PhoneStateListener$1 android.telephony.ServiceState -android.telephony.TelephonyManager -android.telephony.SmsManager +android.telephony.SignalStrength android.telephony.SmsMessage +android.telephony.TelephonyManager +android.text.AndroidCharacter +android.text.Annotation android.text.AutoText android.text.BoringLayout -android.text.BoringLayout$Metrics android.text.DynamicLayout -android.text.DynamicLayout$ChangeWatcher -android.text.Editable -android.text.Editable$Factory -android.text.GetChars -android.text.GraphicsOperations +android.text.Html android.text.Html$HtmlParser -android.text.InputFilter +android.text.HtmlToSpannedConverter +android.text.IClipboard$Stub android.text.Layout -android.text.Layout$Alignment -android.text.Layout$Directions -android.text.Layout$Ellipsizer -android.text.NoCopySpan -android.text.NoCopySpan$Concrete -android.text.PackedIntVector -android.text.PackedObjectVector -android.text.ParcelableSpan android.text.Selection -android.text.Selection$END -android.text.Selection$START -android.text.SpanWatcher -android.text.Spannable -android.text.Spannable$Factory -android.text.SpannableString android.text.SpannableStringBuilder -android.text.SpannableStringInternal -android.text.Spanned android.text.SpannedString android.text.StaticLayout -android.text.Styled -android.text.TextPaint android.text.TextUtils -android.text.TextUtils$1 -android.text.TextUtils$EllipsizeCallback -android.text.TextUtils$SimpleStringSplitter -android.text.TextUtils$TruncateAt -android.text.TextWatcher android.text.format.DateUtils +android.text.format.Formatter android.text.format.Time android.text.method.ArrowKeyMovementMethod android.text.method.BaseKeyListener -android.text.method.KeyListener +android.text.method.DialerKeyListener +android.text.method.DigitsKeyListener +android.text.method.LinkMovementMethod android.text.method.MetaKeyKeyListener -android.text.method.MovementMethod android.text.method.QwertyKeyListener -android.text.method.ReplacementTransformationMethod android.text.method.ReplacementTransformationMethod$SpannedReplacementCharSequence android.text.method.SingleLineTransformationMethod android.text.method.TextKeyListener -android.text.method.TextKeyListener$Capitalize -android.text.method.TextKeyListener$SettingsObserver -android.text.method.TransformationMethod -android.text.style.AlignmentSpan -android.text.style.CharacterStyle -android.text.style.ForegroundColorSpan -android.text.style.LeadingMarginSpan -android.text.style.LineBackgroundSpan -android.text.style.LineHeightSpan +android.text.style.BulletSpan +android.text.style.ImageSpan android.text.style.MetricAffectingSpan -android.text.style.ParagraphStyle -android.text.style.ReplacementSpan android.text.style.StyleSpan +android.text.style.TextAppearanceSpan android.text.style.URLSpan -android.text.style.UpdateAppearance -android.text.style.UpdateLayout -android.text.style.WrapTogetherSpan android.text.util.Linkify android.text.util.Regex -android.util.AndroidRuntimeException +android.text.util.Rfc822Validator android.util.AttributeSet android.util.DisplayMetrics +android.util.EventLog +android.util.EventLog$Event +android.util.EventLog$List android.util.FloatMath +android.util.Log +android.util.LongSparseArray android.util.SparseArray +android.util.StateSet android.util.TypedValue -android.util.Xml$XmlSerializerFactory +android.util.Xml +android.util.Xml$Encoding android.view.AbsSavedState -android.view.ContextMenu -android.view.ContextMenu$ContextMenuInfo android.view.ContextThemeWrapper android.view.Display android.view.FocusFinder -android.view.FocusFinder$1 +android.view.GestureDetector android.view.GestureDetector$SimpleOnGestureListener -android.view.Gravity -android.view.IWindow -android.view.IWindow$Stub -android.view.IWindowManager +android.view.IRotationWatcher$Stub android.view.IWindowManager$Stub android.view.IWindowManager$Stub$Proxy -android.view.IWindowSession android.view.IWindowSession$Stub -android.view.IWindowSession$Stub$Proxy android.view.KeyCharacterMap +android.view.KeyCharacterMap$KeyData android.view.KeyEvent -android.view.KeyEvent$1 -android.view.KeyEvent$Callback android.view.LayoutInflater -android.view.LayoutInflater$Factory -android.view.Menu -android.view.MenuInflater -android.view.MenuItem +android.view.MenuInflater$MenuState android.view.MotionEvent -android.view.MotionEvent$1 android.view.Surface -android.view.SurfaceHolder +android.view.Surface$1 +android.view.SurfaceSession android.view.SurfaceView -android.view.TouchDelegate android.view.VelocityTracker android.view.View -android.view.View$AttachInfo android.view.View$AttachInfo$Callbacks +android.view.View$AttachInfo$InvalidateInfo android.view.View$BaseSavedState -android.view.View$BaseSavedState$1 -android.view.View$MeasureSpec -android.view.View$OnCreateContextMenuListener -android.view.View$ScrollabilityCache -android.view.ViewConfiguration android.view.ViewGroup -android.view.ViewGroup$LayoutParams -android.view.ViewGroup$MarginLayoutParams -android.view.ViewManager +android.view.ViewParent android.view.ViewRoot -android.view.ViewRoot$1 -android.view.ViewRoot$InputMethodCallback -android.view.ViewRoot$RunQueue -android.view.ViewRoot$TrackballAxis -android.view.ViewRoot$W android.view.ViewStub -android.view.ViewTreeObserver -android.view.ViewTreeObserver$InternalInsetsInfo -android.view.ViewTreeObserver$OnPreDrawListener android.view.Window -android.view.Window$Callback -android.view.Window$LocalWindowManager -android.view.WindowLeaked -android.view.WindowManager android.view.WindowManager$LayoutParams -android.view.WindowManager$LayoutParams$1 android.view.WindowManagerImpl -android.view.animation.AccelerateDecelerateInterpolator -android.view.animation.AlphaAnimation +android.view.accessibility.AccessibilityEvent +android.view.accessibility.AccessibilityEvent$1 android.view.animation.Animation android.view.animation.AnimationSet -android.view.animation.LinearInterpolator -android.view.animation.Transformation android.view.inputmethod.BaseInputConnection android.view.inputmethod.CompletionInfo -android.view.inputmethod.CompletionInfo$1 - android.view.inputmethod.EditorInfo -android.view.inputmethod.EditorInfo$1 - android.view.inputmethod.ExtractedText -android.view.inputmethod.ExtractedText$1 - -android.view.inputmethod.ExtractedTextRequest -android.view.inputmethod.ExtractedTextRequest$1 - -android.view.inputmethod.InputBinding -android.view.inputmethod.InputBinding$1 -android.view.inputmethod.InputConnection -android.view.inputmethod.InputMethod -android.view.inputmethod.InputMethod$SessionCallback - android.view.inputmethod.InputMethodInfo -android.view.inputmethod.InputMethodInfo$1 android.view.inputmethod.InputMethodManager android.view.inputmethod.InputMethodManager$1 -android.view.inputmethod.InputMethodManager$2 -android.view.inputmethod.InputMethodManager$ControlledInputConnectionWrapper -android.view.inputmethod.InputMethodManager$H - -android.view.inputmethod.InputMethodSession -android.view.inputmethod.InputMethodSession$EventCallback android.webkit.BrowserFrame +android.webkit.CacheLoader android.webkit.CacheManager android.webkit.CallbackProxy +android.webkit.CallbackProxy$ResultTransport android.webkit.CookieManager android.webkit.CookieSyncManager +android.webkit.DataLoader +android.webkit.GearsPermissionsManager android.webkit.HttpDateTime android.webkit.JWebCoreJavaBridge android.webkit.LoadListener android.webkit.MimeTypeMap android.webkit.TextDialog android.webkit.URLUtil -android.webkit.WebBackForwardList -android.webkit.WebHistoryItem -android.webkit.WebIconDatabase -android.webkit.WebIconDatabase$EventHandler -android.webkit.WebIconDatabase$EventHandler$1 -android.webkit.WebIconDatabase$EventHandler$IconResult +android.webkit.WebIconDatabase$IconListener android.webkit.WebSettings -android.webkit.WebSettings$EventHandler -android.webkit.WebSettings$EventHandler$1 -android.webkit.WebSettings$LayoutAlgorithm -android.webkit.WebSettings$RenderPriority android.webkit.WebSettings$TextSize -android.webkit.WebSyncManager -android.webkit.WebSyncManager$SyncHandler android.webkit.WebView -android.webkit.WebView$ExtendedZoomControls -android.webkit.WebView$FocusNode -android.webkit.WebView$PrivateHandler +android.webkit.WebView$HitTestResult android.webkit.WebViewCore -android.webkit.WebViewCore$EventHub -android.webkit.WebViewCore$EventHub$1 -android.webkit.WebViewCore$FocusData -android.webkit.WebViewCore$WebCoreThread -android.webkit.WebViewCore$WebCoreThread$1 android.webkit.WebViewDatabase +android.webkit.gears.ApacheHttpRequestAndroid +android.webkit.gears.ApacheHttpRequestAndroid$Buffer +android.webkit.gears.NativeDialog android.widget.AbsListView -android.widget.AbsListView$CheckForLongPress -android.widget.AbsListView$CheckForTap -android.widget.AbsListView$LayoutParams +android.widget.AbsListView$3 android.widget.AbsListView$PerformClick -android.widget.AbsListView$RecycleBin android.widget.AbsListView$SavedState -android.widget.AbsListView$SavedState$1 android.widget.AbsSeekBar android.widget.AbsSpinner +android.widget.AbsSpinner$SavedState android.widget.AbsoluteLayout -android.widget.AbsoluteLayout$LayoutParams android.widget.AdapterView -android.widget.AdapterView$AdapterDataSetObserver +android.widget.AnalogClock +android.widget.AppSecurityPermissions +android.widget.AppSecurityPermissions$State android.widget.ArrayAdapter android.widget.AutoCompleteTextView -android.widget.AutoCompleteTextView$DropDownItemClickListener android.widget.AutoCompleteTextView$DropDownListView android.widget.BaseAdapter -android.widget.Button +android.widget.BaseExpandableListAdapter android.widget.CheckBox -android.widget.Checkable android.widget.CheckedTextView +android.widget.Chronometer android.widget.CompoundButton +android.widget.CompoundButton$SavedState android.widget.CursorAdapter -android.widget.CursorAdapter$ChangeObserver -android.widget.CursorAdapter$MyDataSetObserver android.widget.CursorTreeAdapter +android.widget.DatePicker android.widget.EditText +android.widget.ExpandableListConnector +android.widget.ExpandableListConnector$GroupMetadata android.widget.ExpandableListView +android.widget.FastScroller android.widget.FrameLayout -android.widget.FrameLayout$LayoutParams android.widget.Gallery +android.widget.GridView android.widget.HeaderViewListAdapter android.widget.ImageView android.widget.ImageView$ScaleType android.widget.LinearLayout -android.widget.LinearLayout$LayoutParams android.widget.ListView -android.widget.ListView$ArrowScrollFocusResult android.widget.ListView$SavedState -android.widget.ListView$SavedState$1 +android.widget.MediaController +android.widget.MultiAutoCompleteTextView android.widget.PopupWindow +android.widget.PopupWindow$PopupViewContainer android.widget.ProgressBar +android.widget.ProgressBar$SavedState +android.widget.RadioButton android.widget.RadioGroup android.widget.RatingBar android.widget.RelativeLayout -android.widget.RelativeLayout$LayoutParams +android.widget.RelativeLayout$DependencyGraph$Node android.widget.RemoteViews +android.widget.ResourceCursorAdapter +android.widget.ResourceCursorTreeAdapter android.widget.ScrollBarDrawable android.widget.ScrollView -android.widget.Scroller android.widget.SeekBar +android.widget.SimpleAdapter android.widget.SimpleCursorAdapter +android.widget.SimpleCursorTreeAdapter android.widget.SlidingDrawer android.widget.Spinner android.widget.Spinner$DropDownAdapter @@ -577,248 +684,335 @@ android.widget.TabWidget android.widget.TableLayout android.widget.TableRow android.widget.TextView -android.widget.TextView$1 -android.widget.TextView$Blink android.widget.TextView$BufferType -android.widget.TextView$ChangeWatcher -android.widget.TextView$CharWrapper -android.widget.TextView$Drawables -android.widget.TextView$InputContentType -android.widget.TextView$InputMethodState -android.widget.TextView$Marquee -android.widget.TextView$MenuHandler +android.widget.TextView$CommitSelectionReceiver android.widget.TextView$SavedState -android.widget.TextView$SavedState$1 -android.widget.ToggleButton +android.widget.TimePicker +android.widget.TimePicker$SavedState +android.widget.Toast +android.widget.Toast$TN android.widget.TwoLineListItem +android.widget.VideoView android.widget.ViewAnimator android.widget.ViewSwitcher android.widget.ZoomButton +android.widget.ZoomButtonsController android.widget.ZoomControls +com.android.internal.R$drawable +com.android.internal.R$styleable +com.android.internal.app.AlertActivity +com.android.internal.app.AlertController +com.android.internal.app.AlertController$AlertParams +com.android.internal.app.AlertController$AlertParams$1 +com.android.internal.app.AlertController$RecycleListView +com.android.internal.app.ChooserActivity +com.android.internal.app.ResolverActivity +com.android.internal.app.ResolverActivity$ResolveListAdapter +com.android.internal.app.RingtonePickerActivity +com.android.internal.appwidget.IAppWidgetHost$Stub +com.android.internal.appwidget.IAppWidgetService$Stub com.android.internal.database.ArrayListCursor com.android.internal.database.SortCursor -com.android.internal.appwidget.IAppWidgetService$Stub -com.android.internal.http.multipart.FilePart -com.android.internal.http.multipart.MultipartEntity -com.android.internal.http.multipart.Part -com.android.internal.http.multipart.PartSource -com.android.internal.http.multipart.StringPart -com.android.internal.logging.AndroidConfig +com.android.internal.database.SortCursor$1 +com.android.internal.graphics.NativeUtils +com.android.internal.location.DummyLocationProvider +com.android.internal.location.GpsLocationProvider com.android.internal.logging.AndroidHandler com.android.internal.os.AndroidPrintStream +com.android.internal.os.BinderInternal com.android.internal.os.BinderInternal$GcWatcher com.android.internal.os.LoggingPrintStream -com.android.internal.os.LoggingPrintStream$1 com.android.internal.os.RuntimeInit com.android.internal.os.RuntimeInit$1 -com.android.internal.os.RuntimeInit$UncaughtHandler -com.android.internal.os.ZygoteInit$MethodAndArgsCaller -com.android.internal.policy.IPolicy +com.android.internal.os.ZygoteConnection +com.android.internal.os.ZygoteConnection$Arguments +com.android.internal.os.ZygoteInit com.android.internal.policy.PolicyManager com.android.internal.policy.impl.PhoneLayoutInflater com.android.internal.policy.impl.PhoneWindow -com.android.internal.policy.impl.PhoneWindow$1 -com.android.internal.policy.impl.PhoneWindow$ContextMenuCallback com.android.internal.policy.impl.PhoneWindow$DecorView -com.android.internal.policy.impl.PhoneWindow$PanelFeatureState com.android.internal.policy.impl.PhoneWindow$PanelFeatureState$SavedState -com.android.internal.policy.impl.PhoneWindow$PanelFeatureState$SavedState$1 +com.android.internal.policy.impl.PhoneWindowManager com.android.internal.policy.impl.Policy -com.android.internal.telephony.Connection$DisconnectCause -com.android.internal.telephony.Connection$PostDialState +com.android.internal.telephony.GsmAlphabet com.android.internal.telephony.IPhoneStateListener$Stub +com.android.internal.telephony.IPhoneSubInfo$Stub com.android.internal.telephony.ITelephony$Stub -com.android.internal.telephony.Phone -com.android.internal.telephony.Phone$DataActivityState -com.android.internal.telephony.Phone$DataState +com.android.internal.telephony.ITelephony$Stub$Proxy +com.android.internal.telephony.ITelephonyRegistry$Stub +com.android.internal.telephony.IccCard$State com.android.internal.telephony.Phone$State -com.android.internal.telephony.Phone$SuppService -com.android.internal.telephony.PhoneBase com.android.internal.telephony.PhoneStateIntentReceiver -com.android.internal.telephony.IccCard$State -com.android.internal.telephony.BaseCommands -com.android.internal.telephony.CallForwardInfo -com.android.internal.telephony.CommandsInterface -com.android.internal.telephony.DriverCall -com.android.internal.telephony.DriverCall$State -com.android.internal.telephony.gsm.GsmConnection -com.android.internal.telephony.gsm.GSMPhone -com.android.internal.telephony.GsmAlphabet -com.android.internal.telephony.gsm.GsmMmiCode -com.android.internal.telephony.gsm.SimCard -com.android.internal.telephony.ISms$Stub -com.android.internal.telephony.RIL -com.android.internal.telephony.ServiceStateTracker - -com.android.internal.telephony.gsm.stk.ComprehensionTlvTag -com.android.internal.telephony.gsm.stk.ResultCode +com.android.internal.telephony.SmsMessageBase +com.android.internal.telephony.gsm.GsmSmsAddress +com.android.internal.telephony.gsm.SmsMessage +com.android.internal.telephony.gsm.SmsMessage$SubmitPdu +com.android.internal.util.ArrayUtils com.android.internal.util.FastXmlSerializer com.android.internal.view.IInputConnectionWrapper -com.android.internal.view.IInputConnectionWrapper$MyHandler -com.android.internal.view.IInputConnectionWrapper$SomeArgs - -com.android.internal.view.IInputContext com.android.internal.view.IInputContext$Stub -com.android.internal.view.IInputContext$Stub$Proxy - -com.android.internal.view.IInputContextCallback -com.android.internal.view.IInputContextCallback$Stub -com.android.internal.view.IInputContextCallback$Stub$Proxy - -com.android.internal.view.IInputMethod com.android.internal.view.IInputMethod$Stub -com.android.internal.view.IInputMethod$Stub$Proxy - -com.android.internal.view.IInputMethodCallback -com.android.internal.view.IInputMethodCallback$Stub -com.android.internal.view.IInputMethodCallback$Stub$Proxy - -com.android.internal.view.IInputMethodClient -com.android.internal.view.IInputMethodClient$Stub -com.android.internal.view.IInputMethodClient$Stub$Proxy - -com.android.internal.view.IInputMethodManager com.android.internal.view.IInputMethodManager$Stub -com.android.internal.view.IInputMethodManager$Stub$Proxy - -com.android.internal.view.IInputMethodSession -com.android.internal.view.IInputMethodSession$Stub -com.android.internal.view.IInputMethodSession$Stub$Proxy - -com.android.internal.view.InputBindResult -com.android.internal.view.InputBindResult$1 - -com.android.internal.view.InputConnectionWrapper com.android.internal.view.InputConnectionWrapper$InputContextCallback com.android.internal.view.menu.ExpandedMenuView com.android.internal.view.menu.IconMenuItemView com.android.internal.view.menu.IconMenuView +com.android.internal.view.menu.IconMenuView$SavedState com.android.internal.view.menu.ListMenuItemView com.android.internal.view.menu.MenuBuilder -com.android.internal.view.menu.MenuBuilder$Callback -com.android.internal.view.menu.MenuDialogHelper com.android.internal.view.menu.MenuItemImpl com.android.internal.view.menu.SubMenuBuilder -com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient -com.android.internal.widget.LockPatternView +com.android.internal.widget.LockPatternUtils com.android.internal.widget.NumberPicker com.android.internal.widget.NumberPickerButton +com.android.internal.widget.Smileys com.google.android.gdata.client.AndroidGDataClient -com.google.android.gdata.client.AndroidGDataClient$PostRequestCreator +com.google.android.gdata.client.AndroidXmlParserFactory com.google.android.gles_jni.EGLImpl com.google.android.gles_jni.GLImpl -com.google.android.mms.ContentType -com.google.android.mms.pdu.CharacterSets -com.google.android.mms.pdu.PduPart com.google.android.mms.pdu.PduPersister +com.google.android.mms.util.PduCache com.google.android.net.GoogleHttpClient +com.google.android.net.NetworkStatsEntity com.google.android.net.UrlRules com.google.android.net.UrlRules$Rule -com.google.android.util.SimplePullParser com.google.common.Config +com.google.common.Log +com.google.common.android.AndroidConfig +com.google.common.async.AsyncHttpRequestFactory$AsyncHttpRequestImpl +com.google.common.graphics.android.AndroidGraphics +com.google.common.io.BaseHttpConnectionFactory +com.google.common.io.IoUtil +com.google.common.io.android.AndroidHttpClient +com.google.common.io.android.AndroidHttpConnectionFactory +com.google.common.io.android.AndroidPersistentStore com.google.common.io.protocol.ProtoBuf com.google.common.io.protocol.ProtoBufType com.google.common.util.text.TextUtil +com.google.masf.BlockingByteQueue +com.google.masf.MobileServiceMux +com.google.masf.protocol.PlainRequest +com.google.masf.services.EventLogService +com.google.masf.services.LogserviceMessageTypes +com.google.masf.services.resume.WindowResumeService +com.google.wireless.gdata.calendar.client.CalendarClient +com.google.wireless.gdata.client.GDataServiceClient +com.google.wireless.gdata.contacts.client.ContactsClient +com.google.wireless.gdata.contacts.parser.xml.XmlContactsGDataParserFactory com.ibm.icu4jni.charset.CharsetDecoderICU com.ibm.icu4jni.charset.CharsetEncoderICU com.ibm.icu4jni.charset.CharsetICU -com.ibm.icu4jni.text.CollationAttribute +com.ibm.icu4jni.charset.CharsetProviderICU +com.ibm.icu4jni.charset.NativeConverter +com.ibm.icu4jni.common.ErrorCode +com.ibm.icu4jni.lang.UCharacter +com.ibm.icu4jni.regex.NativeRegEx com.ibm.icu4jni.text.DecimalFormat -com.ibm.icu4jni.text.DecimalFormatSymbols +com.ibm.icu4jni.text.NativeBreakIterator +com.ibm.icu4jni.text.NativeCollation +com.ibm.icu4jni.text.NativeDecimalFormat com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol -com.ibm.icu4jni.text.RuleBasedCollator -dalvik.system.DexFile +com.ibm.icu4jni.text.RuleBasedNumberFormat +com.ibm.icu4jni.util.Resources +dalvik.system.NativeStart dalvik.system.PathClassLoader +dalvik.system.TouchDex +dalvik.system.VMDebug +dalvik.system.VMRuntime +dalvik.system.VMStack +dalvik.system.Zygote java.beans.PropertyChangeEvent -java.beans.PropertyChangeListener java.beans.PropertyChangeSupport java.io.BufferedInputStream -java.io.ByteArrayInputStream -java.io.ByteArrayOutputStream +java.io.BufferedReader +java.io.Closeable +java.io.DataInput +java.io.DataOutput +java.io.DataOutputStream +java.io.EmulatedFieldsForDumping +java.io.EmulatedFieldsForLoading java.io.File java.io.FileDescriptor java.io.FileInputStream java.io.FileInputStream$RepositioningLock -java.io.FileNotFoundException -java.io.FilterInputStream -java.io.IOException +java.io.FileOutputStream +java.io.FilterOutputStream +java.io.Flushable +java.io.InputStream +java.io.InputStreamReader +java.io.ObjectInput +java.io.ObjectInputStream +java.io.ObjectOutput +java.io.ObjectOutputStream java.io.ObjectStreamClass +java.io.ObjectStreamConstants +java.io.ObjectStreamField +java.io.OutputStream +java.io.PrintStream java.io.PrintWriter +java.io.PushbackReader java.io.RandomAccessFile -java.io.RandomAccessFile$RepositionLock +java.io.Reader +java.io.Serializable java.io.StringWriter -java.io.Writer +java.lang.AbstractStringBuilder +java.lang.Appendable +java.lang.ArrayIndexOutOfBoundsException +java.lang.Boolean +java.lang.BootClassLoader +java.lang.Byte +java.lang.CharSequence +java.lang.Character java.lang.Character$valueOfCache java.lang.Class java.lang.ClassCache -java.lang.ClassNotFoundException +java.lang.ClassCache$EnumComparator +java.lang.ClassLoader +java.lang.ClassLoader$SystemClassLoader +java.lang.Cloneable +java.lang.Comparable +java.lang.Double +java.lang.Enum +java.lang.Error +java.lang.Exception +java.lang.Float java.lang.IllegalArgumentException -java.lang.IllegalStateException java.lang.Integer java.lang.Integer$valueOfCache +java.lang.InternalError +java.lang.InterruptedException +java.lang.Iterable +java.lang.LangAccessImpl java.lang.LinkageError java.lang.Long java.lang.Long$valueOfCache +java.lang.Math java.lang.NoClassDefFoundError +java.lang.Number java.lang.NumberFormatException java.lang.Object +java.lang.OutOfMemoryError +java.lang.Readable +java.lang.Runnable java.lang.Runtime java.lang.RuntimeException +java.lang.RuntimePermission +java.lang.SecurityException +java.lang.Short java.lang.Short$valueOfCache +java.lang.StackOverflowError +java.lang.StackTraceElement +java.lang.StrictMath java.lang.String +java.lang.String$CaseInsensitiveComparator java.lang.StringBuffer java.lang.StringBuilder +java.lang.System +java.lang.SystemProperties java.lang.Thread -java.lang.ThreadLocal -java.lang.ThreadLocal$Values +java.lang.Thread$State +java.lang.Thread$UncaughtExceptionHandler +java.lang.ThreadGroup +java.lang.ThreadGroup$ChildrenGroupsLock +java.lang.ThreadGroup$ChildrenThreadsLock java.lang.Throwable +java.lang.UnsatisfiedLinkError +java.lang.UnsupportedOperationException +java.lang.VMClassLoader java.lang.VMThread +java.lang.VirtualMachineError +java.lang.Void +java.lang.annotation.Annotation +java.lang.ref.Reference java.lang.ref.ReferenceQueue java.lang.ref.SoftReference java.lang.ref.WeakReference +java.lang.reflect.AccessibleObject +java.lang.reflect.AnnotatedElement +java.lang.reflect.Array java.lang.reflect.Constructor +java.lang.reflect.Field +java.lang.reflect.GenericDeclaration +java.lang.reflect.InvocationHandler +java.lang.reflect.Member java.lang.reflect.Method java.lang.reflect.Modifier +java.lang.reflect.Proxy +java.lang.reflect.ReflectionAccessImpl +java.lang.reflect.Type java.math.BigDecimal java.math.BigInt java.math.BigInteger java.math.Multiplication -java.net.ContentHandler +java.net.DatagramPacket +java.net.HttpURLConnection +java.net.Inet4Address java.net.InetAddress -java.net.InetAddress$CacheElement java.net.InetAddress$WaitReachable +java.net.InetSocketAddress java.net.JarURLConnection -java.net.NegativeCache -java.net.NetPermission +java.net.NetworkInterface +java.net.Proxy +java.net.ProxySelector java.net.ProxySelectorImpl -java.net.Socket$ConnectLock +java.net.ServerSocket +java.net.Socket +java.net.SocketImpl +java.net.SocketOptions java.net.URI java.net.URL java.net.URLConnection -java.net.URLConnection$DefaultContentHandler -java.net.URLStreamHandler +java.nio.BaseByteBuffer +java.nio.Buffer +java.nio.BufferFactory +java.nio.ByteBuffer java.nio.ByteOrder +java.nio.CharArrayBuffer +java.nio.CharBuffer java.nio.CharSequenceAdapter +java.nio.CharToByteBufferAdapter java.nio.DirectByteBuffer +java.nio.FloatBuffer +java.nio.FloatToByteBufferAdapter +java.nio.HeapByteBuffer +java.nio.IntToByteBufferAdapter +java.nio.NIOAccess +java.nio.ReadWriteCharArrayBuffer java.nio.ReadWriteDirectByteBuffer +java.nio.ReadWriteHeapByteBuffer java.nio.ReadWriteIntArrayBuffer -java.nio.ReadWriteShortArrayBuffer -java.nio.ShortBuffer java.nio.ShortToByteBufferAdapter +java.nio.channels.ByteChannel +java.nio.channels.Channel +java.nio.channels.FileChannel +java.nio.channels.GatheringByteChannel +java.nio.channels.InterruptibleChannel +java.nio.channels.ReadableByteChannel +java.nio.channels.ScatteringByteChannel +java.nio.channels.WritableByteChannel +java.nio.channels.spi.AbstractInterruptibleChannel +java.nio.channels.spi.AbstractInterruptibleChannel$1 +java.nio.charset.Charset +java.nio.charset.Charset$1 +java.nio.charset.CharsetDecoder java.nio.charset.CharsetEncoder -java.security.AccessControlContext -java.security.GeneralSecurityException +java.nio.charset.CoderResult +java.nio.charset.CodingErrorAction +java.nio.charset.spi.CharsetProvider +java.security.AccessController +java.security.BasicPermission +java.security.Guard java.security.KeyStore java.security.MessageDigest -java.security.ProtectionDomain +java.security.Permission +java.security.PrivilegedAction +java.security.PrivilegedExceptionAction java.security.Provider java.security.SecureRandom java.security.Security -java.security.cert.CertPathValidator -java.security.cert.CertificateFactory +java.security.cert.CertificateParsingException java.security.cert.PKIXParameters -java.security.cert.TrustAnchor java.security.cert.X509CertSelector java.security.cert.X509Certificate java.text.Collator @@ -826,358 +1020,339 @@ java.text.DateFormat java.text.DateFormat$Field java.text.DecimalFormat java.text.DecimalFormatSymbols -java.text.MessageFormat +java.text.Format java.text.NumberFormat -java.text.RuleBasedCollator java.text.SimpleDateFormat -java.util.AbstractList$FullListIterator -java.util.AbstractList$SimpleListIterator +java.util.AbstractCollection +java.util.AbstractList +java.util.AbstractMap +java.util.AbstractSet java.util.ArrayList java.util.Arrays -java.util.Arrays$ArrayList +java.util.BitSet java.util.Calendar -java.util.Collections$SynchronizedCollection +java.util.Collection +java.util.Collections +java.util.Collections$EmptyList +java.util.Collections$EmptyMap +java.util.Collections$EmptySet +java.util.Collections$SynchronizedList +java.util.Collections$SynchronizedRandomAccessList +java.util.Collections$UnmodifiableCollection +java.util.Collections$UnmodifiableCollection$1 java.util.Collections$UnmodifiableList -java.util.Collections$UnmodifiableMap -java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1 +java.util.Collections$UnmodifiableRandomAccessList +java.util.Collections$UnmodifiableSet +java.util.Comparator java.util.Date +java.util.Dictionary java.util.EnumMap -java.util.EventListener -java.util.EventObject +java.util.EnumSet +java.util.Enumeration java.util.Formatter java.util.GregorianCalendar java.util.HashMap java.util.HashMap$1 -java.util.HashMap$2 -java.util.HashMap$2$1 +java.util.HashMap$1$1 java.util.HashMap$Entry -java.util.HashMap$HashMapEntrySet -java.util.HashMap$HashMapEntrySet$1 +java.util.HashMap$HashMapIterator java.util.HashSet java.util.Hashtable -java.util.Hashtable$4 -java.util.Hashtable$4$1 +java.util.Hashtable$1 java.util.Hashtable$Entry -java.util.Hashtable$HashEnumerator -java.util.Hashtable$HashIterator java.util.IdentityHashMap -java.util.LinkedHashMap -java.util.LinkedHashMap$LinkedHashMapEntry +java.util.Iterator java.util.LinkedList -java.util.LinkedList$Link java.util.List java.util.Locale +java.util.Map +java.util.Map$Entry +java.util.MapEntry +java.util.MapEntry$Type +java.util.PriorityQueue java.util.Properties -java.util.Random +java.util.PropertyPermission +java.util.RandomAccess java.util.ResourceBundle +java.util.Scanner +java.util.Set java.util.SimpleTimeZone +java.util.SortedMap +java.util.SortedSet +java.util.SpecialAccess +java.util.Stack +java.util.StringTokenizer java.util.TimeZone +java.util.Timer java.util.TreeMap -java.util.TreeMap$Entry java.util.TreeSet java.util.Vector +java.util.Vector$1 java.util.WeakHashMap java.util.WeakHashMap$Entry +java.util.concurrent.AbstractExecutorService +java.util.concurrent.ArrayBlockingQueue java.util.concurrent.ConcurrentHashMap -java.util.concurrent.ConcurrentLinkedQueue +java.util.concurrent.ConcurrentHashMap$Segment +java.util.concurrent.CopyOnWriteArrayList java.util.concurrent.DelayQueue +java.util.concurrent.Executors$DelegatedExecutorService +java.util.concurrent.Executors$DelegatedScheduledExecutorService java.util.concurrent.LinkedBlockingQueue java.util.concurrent.ScheduledThreadPoolExecutor java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue +java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask +java.util.concurrent.Semaphore +java.util.concurrent.SynchronousQueue +java.util.concurrent.SynchronousQueue$Node +java.util.concurrent.ThreadPoolExecutor java.util.concurrent.TimeUnit -java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicInteger +java.util.concurrent.atomic.AtomicLong +java.util.concurrent.atomic.AtomicReference java.util.concurrent.atomic.UnsafeAccess java.util.concurrent.locks.AbstractQueuedSynchronizer -java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject -java.util.concurrent.locks.AbstractQueuedSynchronizer$Node -java.util.concurrent.locks.Lock -java.util.concurrent.locks.LockSupport java.util.concurrent.locks.ReentrantLock -java.util.concurrent.locks.ReentrantLock$FairSync -java.util.concurrent.locks.ReentrantLock$NonfairSync java.util.concurrent.locks.ReentrantLock$Sync -java.util.concurrent.locks.ReentrantReadWriteLock -java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync -java.util.concurrent.locks.UnsafeAccess -java.util.jar.Attributes java.util.jar.Attributes$Name -java.util.jar.InitManifest -java.util.jar.JarEntry java.util.jar.JarFile -java.util.jar.JarFile$1JarFileEnumerator -java.util.jar.JarFile$JarFileInputStream -java.util.jar.JarVerifier java.util.jar.Manifest -java.util.logging.ErrorManager -java.util.logging.Formatter -java.util.logging.Handler java.util.logging.Level java.util.logging.LogManager -java.util.logging.LogManager$1 -java.util.logging.LogManager$2 -java.util.logging.LogManager$2$1 -java.util.logging.LogManager$3 java.util.logging.LogRecord java.util.logging.Logger -java.util.logging.LoggingPermission -java.util.logging.SimpleFormatter +java.util.regex.MatchResult java.util.regex.Matcher java.util.regex.Pattern +java.util.zip.Adler32 +java.util.zip.CRC32 +java.util.zip.Checksum +java.util.zip.Deflater java.util.zip.DeflaterOutputStream java.util.zip.Inflater -java.util.zip.InflaterInputStream -java.util.zip.ZipConstants -java.util.zip.ZipEntry -java.util.zip.ZipEntry$LittleEndianReader java.util.zip.ZipFile -java.util.zip.ZipFile$2 -java.util.zip.ZipFile$RAFStream +javax.crypto.Cipher +javax.crypto.spec.SecretKeySpec +javax.microedition.khronos.egl.EGL +javax.microedition.khronos.egl.EGL10 javax.microedition.khronos.egl.EGLContext +javax.microedition.khronos.opengles.GL +javax.microedition.khronos.opengles.GL10 +javax.microedition.khronos.opengles.GL10Ext +javax.microedition.khronos.opengles.GL11 +javax.microedition.khronos.opengles.GL11Ext +javax.microedition.khronos.opengles.GL11ExtensionPack +javax.net.ssl.DefaultHostnameVerifier javax.net.ssl.HttpsURLConnection +javax.net.ssl.SSLContext javax.net.ssl.SSLHandshakeException -javax.security.auth.x500.X500Principal +javax.net.ssl.SSLServerSocket +javax.net.ssl.SSLSession +javax.net.ssl.SSLSocket javax.security.cert.X509Certificate -javax.security.cert.X509Certificate$2 junit.framework.Assert org.apache.commons.codec.binary.Base64 org.apache.commons.codec.binary.Hex org.apache.commons.logging.LogFactory org.apache.commons.logging.impl.Jdk14Logger -org.apache.harmony.archive.util.Util -org.apache.harmony.dalvik.ddmc.Chunk +org.apache.harmony.dalvik.NativeTestTarget org.apache.harmony.dalvik.ddmc.ChunkHandler org.apache.harmony.dalvik.ddmc.DdmServer -org.apache.harmony.dalvik.ddmc.DdmVmInternal -org.apache.harmony.luni.internal.net.www.protocol.file.FileURLConnection -org.apache.harmony.luni.internal.net.www.protocol.file.Handler -org.apache.harmony.luni.internal.net.www.protocol.http.Handler +org.apache.harmony.kernel.vm.LangAccess +org.apache.harmony.kernel.vm.ReflectionAccess +org.apache.harmony.lang.annotation.AnnotationFactory +org.apache.harmony.lang.annotation.AnnotationMember +org.apache.harmony.lang.annotation.AnnotationMember$DefaultValues +org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection org.apache.harmony.luni.internal.net.www.protocol.https.Handler org.apache.harmony.luni.internal.net.www.protocol.jar.Handler org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection -org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$1 -org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$CacheEntry -org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$JarURLConnectionInputStream -org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$LRUComparator -org.apache.harmony.luni.internal.util.TimezoneGetter -org.apache.harmony.luni.internal.util.ZoneInfo org.apache.harmony.luni.internal.util.ZoneInfoDB +org.apache.harmony.luni.net.GenericIPMreq org.apache.harmony.luni.net.PlainSocketImpl -org.apache.harmony.luni.net.PlainSocketImpl2 +org.apache.harmony.luni.platform.AdapterManager +org.apache.harmony.luni.platform.Endianness +org.apache.harmony.luni.platform.IAdaptable +org.apache.harmony.luni.platform.IAdapterManager +org.apache.harmony.luni.platform.ICommonDataTypes +org.apache.harmony.luni.platform.IFileSystem +org.apache.harmony.luni.platform.IMemorySystem +org.apache.harmony.luni.platform.INetworkSystem +org.apache.harmony.luni.platform.ISystemComponent +org.apache.harmony.luni.platform.OSComponent +org.apache.harmony.luni.platform.OSComponentFactory +org.apache.harmony.luni.platform.OSFileSystem +org.apache.harmony.luni.platform.OSMemory +org.apache.harmony.luni.platform.OSNetworkSystem +org.apache.harmony.luni.platform.Platform org.apache.harmony.luni.platform.PlatformAddress -org.apache.harmony.luni.util.TwoKeyHashMap +org.apache.harmony.luni.platform.PlatformAddressFactory +org.apache.harmony.luni.util.FloatingPointParser +org.apache.harmony.luni.util.NumberConverter +org.apache.harmony.luni.util.PriviAction +org.apache.harmony.luni.util.Util +org.apache.harmony.nio.AddressUtil +org.apache.harmony.nio.FileChannelFactory +org.apache.harmony.nio.internal.DirectBuffer +org.apache.harmony.nio.internal.FileChannelImpl org.apache.harmony.nio.internal.FileChannelImpl$RepositioningLock org.apache.harmony.nio.internal.LockManager org.apache.harmony.nio.internal.LockManager$1 -org.apache.harmony.nio.internal.ReadOnlyFileChannel -org.apache.harmony.security.asn1.ASN1BitString -org.apache.harmony.security.asn1.ASN1BitString$ASN1NamedBitList -org.apache.harmony.security.asn1.ASN1Boolean -org.apache.harmony.security.asn1.ASN1Explicit +org.apache.harmony.nio.internal.WriteOnlyFileChannel org.apache.harmony.security.asn1.ASN1GeneralizedTime -org.apache.harmony.security.asn1.ASN1Implicit org.apache.harmony.security.asn1.ASN1Integer -org.apache.harmony.security.asn1.ASN1OctetString -org.apache.harmony.security.asn1.ASN1SetOf +org.apache.harmony.security.asn1.ASN1Oid +org.apache.harmony.security.asn1.ASN1Sequence org.apache.harmony.security.asn1.ASN1StringType -org.apache.harmony.security.asn1.ASN1StringType$1 -org.apache.harmony.security.asn1.ASN1StringType$2 -org.apache.harmony.security.asn1.ASN1StringType$3 -org.apache.harmony.security.asn1.ASN1StringType$4 -org.apache.harmony.security.asn1.ASN1StringType$5 -org.apache.harmony.security.asn1.ASN1StringType$6 -org.apache.harmony.security.asn1.ASN1StringType$7 -org.apache.harmony.security.asn1.ASN1UTCTime -org.apache.harmony.security.asn1.BitString -org.apache.harmony.security.fortress.Engine -org.apache.harmony.security.fortress.SecurityUtils +org.apache.harmony.security.asn1.DerInputStream +org.apache.harmony.security.asn1.DerOutputStream org.apache.harmony.security.fortress.Services org.apache.harmony.security.pkcs7.ContentInfo +org.apache.harmony.security.provider.cert.DRLCertFactory org.apache.harmony.security.provider.cert.X509CertFactoryImpl org.apache.harmony.security.provider.cert.X509CertImpl org.apache.harmony.security.provider.cert.X509CertPathImpl org.apache.harmony.security.provider.crypto.RandomBitsSupplier org.apache.harmony.security.provider.crypto.SHA1PRNG_SecureRandomImpl +org.apache.harmony.security.provider.crypto.SHA1_MessageDigestImpl org.apache.harmony.security.utils.AlgNameMapper org.apache.harmony.security.x501.AttributeTypeAndValue -org.apache.harmony.security.x501.AttributeValue org.apache.harmony.security.x501.DirectoryString -org.apache.harmony.security.x501.DirectoryString$1 org.apache.harmony.security.x501.Name -org.apache.harmony.security.x501.Name$1 org.apache.harmony.security.x509.AlgorithmIdentifier -org.apache.harmony.security.x509.AlgorithmIdentifier$1 org.apache.harmony.security.x509.BasicConstraints -org.apache.harmony.security.x509.BasicConstraints$1 org.apache.harmony.security.x509.Certificate -org.apache.harmony.security.x509.Certificate$1 +org.apache.harmony.security.x509.EDIPartyName org.apache.harmony.security.x509.Extension -org.apache.harmony.security.x509.Extension$1 -org.apache.harmony.security.x509.Extension$2 org.apache.harmony.security.x509.Extensions -org.apache.harmony.security.x509.Extensions$1 org.apache.harmony.security.x509.GeneralName org.apache.harmony.security.x509.GeneralNames org.apache.harmony.security.x509.KeyUsage org.apache.harmony.security.x509.ORAddress +org.apache.harmony.security.x509.OtherName +org.apache.harmony.security.x509.PolicyQualifierInfo org.apache.harmony.security.x509.SubjectPublicKeyInfo -org.apache.harmony.security.x509.SubjectPublicKeyInfo$1 org.apache.harmony.security.x509.TBSCertificate -org.apache.harmony.security.x509.TBSCertificate$1 org.apache.harmony.security.x509.Time -org.apache.harmony.security.x509.Time$1 org.apache.harmony.security.x509.Validity -org.apache.harmony.security.x509.Validity$1 +org.apache.harmony.text.BidiWrapper +org.apache.harmony.xml.ExpatAttributes org.apache.harmony.xml.ExpatParser org.apache.harmony.xml.ExpatPullParser +org.apache.harmony.xml.ExpatPullParser$ByteDocument org.apache.harmony.xml.ExpatReader -org.apache.harmony.xnet.provider.jsse.ClientSessionContext +org.apache.harmony.xml.dom.AttrImpl +org.apache.harmony.xml.dom.CharacterDataImpl +org.apache.harmony.xml.dom.CommentImpl +org.apache.harmony.xml.dom.DocumentImpl +org.apache.harmony.xml.dom.ElementImpl +org.apache.harmony.xml.dom.InnerNodeImpl +org.apache.harmony.xml.dom.NodeImpl +org.apache.harmony.xml.dom.TextImpl +org.apache.harmony.xml.parsers.DocumentBuilderFactoryImpl +org.apache.harmony.xml.parsers.DocumentBuilderImpl +org.apache.harmony.xml.parsers.SAXParserFactoryImpl +org.apache.harmony.xnet.provider.jsse.AbstractSessionContext +org.apache.harmony.xnet.provider.jsse.FileClientSessionCache +org.apache.harmony.xnet.provider.jsse.NativeCrypto +org.apache.harmony.xnet.provider.jsse.OpenSSLServerSocketImpl org.apache.harmony.xnet.provider.jsse.OpenSSLSessionImpl +org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$Finalizer -org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream -org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream +org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$LoggerHolder +org.apache.harmony.xnet.provider.jsse.ProtocolVersion org.apache.harmony.xnet.provider.jsse.SSLContextImpl org.apache.harmony.xnet.provider.jsse.SSLParameters -org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl -org.apache.harmony.xnet.provider.jsse.TrustManagerImpl -org.apache.http.HttpHost -org.apache.http.HttpRequestInterceptor +org.apache.harmony.xnet.provider.jsse.ServerSessionContext org.apache.http.HttpVersion -org.apache.http.auth.AuthSchemeRegistry +org.apache.http.NoHttpResponseException +org.apache.http.ProtocolException org.apache.http.client.HttpClient -org.apache.http.client.RequestDirector +org.apache.http.client.methods.HttpEntityEnclosingRequestBase +org.apache.http.client.methods.HttpGet +org.apache.http.client.methods.HttpPost org.apache.http.client.methods.HttpRequestBase -org.apache.http.client.protocol.RequestAddCookies -org.apache.http.client.protocol.RequestDefaultHeaders -org.apache.http.client.protocol.RequestProxyAuthentication -org.apache.http.client.protocol.RequestTargetAuthentication -org.apache.http.client.protocol.ResponseProcessCookies -org.apache.http.conn.params.ConnManagerParams$1 +org.apache.http.conn.BasicManagedEntity +org.apache.http.conn.params.ConnManagerParams org.apache.http.conn.params.ConnRouteParams org.apache.http.conn.routing.HttpRoute -org.apache.http.conn.routing.RouteInfo$LayerType -org.apache.http.conn.routing.RouteInfo$TunnelType -org.apache.http.conn.routing.RouteTracker org.apache.http.conn.scheme.PlainSocketFactory -org.apache.http.conn.scheme.Scheme -org.apache.http.conn.scheme.SchemeRegistry -org.apache.http.conn.ssl.AllowAllHostnameVerifier -org.apache.http.conn.ssl.BrowserCompatHostnameVerifier +org.apache.http.conn.ssl.AbstractVerifier org.apache.http.conn.ssl.SSLSocketFactory -org.apache.http.conn.ssl.StrictHostnameVerifier org.apache.http.conn.util.InetAddressUtils -org.apache.http.cookie.CookieSpecRegistry -org.apache.http.impl.DefaultConnectionReuseStrategy -org.apache.http.impl.DefaultHttpResponseFactory +org.apache.http.entity.BasicHttpEntity +org.apache.http.entity.InputStreamEntity +org.apache.http.entity.StringEntity +org.apache.http.impl.AbstractHttpClientConnection org.apache.http.impl.EnglishReasonPhraseCatalog org.apache.http.impl.HttpConnectionMetricsImpl org.apache.http.impl.SocketHttpClientConnection -org.apache.http.impl.auth.BasicSchemeFactory -org.apache.http.impl.auth.DigestSchemeFactory org.apache.http.impl.client.AbstractAuthenticationHandler org.apache.http.impl.client.AbstractHttpClient -org.apache.http.impl.client.BasicCredentialsProvider org.apache.http.impl.client.DefaultHttpClient -org.apache.http.impl.client.DefaultHttpRequestRetryHandler -org.apache.http.impl.client.DefaultProxyAuthenticationHandler -org.apache.http.impl.client.DefaultRedirectHandler -org.apache.http.impl.client.DefaultTargetAuthenticationHandler -org.apache.http.impl.client.DefaultUserTokenHandler org.apache.http.impl.client.EntityEnclosingRequestWrapper org.apache.http.impl.conn.AbstractClientConnAdapter +org.apache.http.impl.conn.AbstractPooledConnAdapter org.apache.http.impl.conn.DefaultClientConnection -org.apache.http.impl.conn.DefaultClientConnectionOperator -org.apache.http.impl.conn.DefaultHttpRoutePlanner -org.apache.http.impl.conn.DefaultResponseParser -org.apache.http.impl.conn.IdleConnectionHandler -org.apache.http.impl.conn.tsccm.BasicPoolEntry -org.apache.http.impl.conn.tsccm.BasicPoolEntryRef +org.apache.http.impl.conn.SingleClientConnManager org.apache.http.impl.conn.tsccm.ConnPoolByRoute -org.apache.http.impl.conn.tsccm.RefQueueWorker -org.apache.http.impl.conn.tsccm.RouteSpecificPool org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager org.apache.http.impl.cookie.BasicClientCookie -org.apache.http.impl.cookie.BestMatchSpecFactory -org.apache.http.impl.cookie.BrowserCompatSpecFactory +org.apache.http.impl.cookie.BrowserCompatSpec org.apache.http.impl.cookie.DateUtils -org.apache.http.impl.cookie.NetscapeDraftSpecFactory -org.apache.http.impl.cookie.RFC2109SpecFactory -org.apache.http.impl.cookie.RFC2965SpecFactory -org.apache.http.impl.entity.EntityDeserializer -org.apache.http.impl.entity.EntitySerializer -org.apache.http.impl.entity.LaxContentLengthStrategy -org.apache.http.impl.entity.StrictContentLengthStrategy -org.apache.http.impl.io.HttpRequestWriter -org.apache.http.impl.io.HttpTransportMetricsImpl +org.apache.http.impl.cookie.RFC2109Spec +org.apache.http.impl.cookie.RFC2965Spec +org.apache.http.impl.io.AbstractSessionInputBuffer org.apache.http.impl.io.SocketInputBuffer -org.apache.http.impl.io.SocketOutputBuffer -org.apache.http.message.BasicHeaderValueParser +org.apache.http.message.AbstractHttpMessage +org.apache.http.message.BasicHeaderElement org.apache.http.message.BasicHttpEntityEnclosingRequest +org.apache.http.message.BasicHttpRequest org.apache.http.message.BasicHttpResponse org.apache.http.message.BasicLineFormatter org.apache.http.message.BasicLineParser +org.apache.http.message.BasicTokenIterator +org.apache.http.params.AbstractHttpParams org.apache.http.params.BasicHttpParams org.apache.http.protocol.BasicHttpProcessor org.apache.http.protocol.HTTP -org.apache.http.protocol.HttpRequestExecutor -org.apache.http.protocol.HttpRequestInterceptorList -org.apache.http.protocol.HttpResponseInterceptorList -org.apache.http.protocol.RequestConnControl -org.apache.http.protocol.RequestContent -org.apache.http.protocol.RequestExpectContinue -org.apache.http.protocol.RequestTargetHost -org.apache.http.protocol.RequestUserAgent -org.apache.http.util.ByteArrayBuffer -org.apache.http.util.CharArrayBuffer -org.apache.http.util.EntityUtils -org.apache.http.util.VersionInfo -org.bouncycastle.asn1.DERBitString -org.bouncycastle.asn1.DERIA5String -org.bouncycastle.asn1.DERInteger +org.bouncycastle.asn1.DERNull org.bouncycastle.asn1.DERObject org.bouncycastle.asn1.DERObjectIdentifier -org.bouncycastle.asn1.DEROctetString -org.bouncycastle.asn1.DERPrintableString -org.bouncycastle.asn1.DERSequence -org.bouncycastle.asn1.DERSet -org.bouncycastle.asn1.DERTaggedObject -org.bouncycastle.asn1.DERUTCTime -org.bouncycastle.asn1.DERUTF8String -org.bouncycastle.asn1.OrderedTable +org.bouncycastle.asn1.iana.IANAObjectIdentifiers org.bouncycastle.asn1.nist.NISTObjectIdentifiers +org.bouncycastle.asn1.oiw.OIWObjectIdentifiers org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers -org.bouncycastle.asn1.x509.AlgorithmIdentifier -org.bouncycastle.asn1.x509.RSAPublicKeyStructure -org.bouncycastle.asn1.x509.SubjectPublicKeyInfo -org.bouncycastle.asn1.x509.TBSCertificateStructure -org.bouncycastle.asn1.x509.Time -org.bouncycastle.asn1.x509.X509CertificateStructure -org.bouncycastle.asn1.x509.X509Extension org.bouncycastle.asn1.x509.X509Extensions org.bouncycastle.asn1.x509.X509Name -org.bouncycastle.asn1.x509.X509NameElementList -org.bouncycastle.asn1.x9.X9ObjectIdentifiers +org.bouncycastle.crypto.digests.SHA1Digest org.bouncycastle.crypto.engines.AESFastEngine +org.bouncycastle.crypto.generators.PKCS12ParametersGenerator +org.bouncycastle.crypto.macs.HMac +org.bouncycastle.jce.provider.BouncyCastleProvider org.bouncycastle.jce.provider.CertPathValidatorUtilities +org.bouncycastle.jce.provider.JCEBlockCipher org.bouncycastle.jce.provider.JCEBlockCipher$AES -org.bouncycastle.jce.provider.JCERSAPublicKey +org.bouncycastle.jce.provider.JCEMac +org.bouncycastle.jce.provider.JDKKeyFactory org.bouncycastle.jce.provider.JDKKeyFactory$RSA org.bouncycastle.jce.provider.JDKKeyStore -org.bouncycastle.jce.provider.JDKKeyStore$StoreEntry +org.bouncycastle.jce.provider.JDKX509CertificateFactory org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi -org.bouncycastle.jce.provider.RSAUtil +org.bouncycastle.jce.provider.WrapCipherSpi org.bouncycastle.jce.provider.X509CertificateObject +org.ccil.cowan.tagsoup.AttributesImpl org.ccil.cowan.tagsoup.HTMLScanner +org.ccil.cowan.tagsoup.HTMLSchema org.ccil.cowan.tagsoup.Parser -org.json.JSONArray org.json.JSONObject -org.json.JSONStringer org.kxml2.io.KXmlParser org.kxml2.io.KXmlSerializer +org.openssl.NativeBN +org.xml.sax.Attributes org.xml.sax.helpers.DefaultHandler -org.xml.sax.helpers.NewInstance -org.xmlpull.v1.XmlPullParserFactory +org.xmlpull.v1.XmlPullParser +org.xmlpull.v1.XmlPullParserException org.xmlpull.v1.sax2.Driver sun.misc.Unsafe - diff --git a/services/java/com/android/server/AppWidgetService.java b/services/java/com/android/server/AppWidgetService.java index 78db6f9..5439f8b 100644 --- a/services/java/com/android/server/AppWidgetService.java +++ b/services/java/com/android/server/AppWidgetService.java @@ -1009,8 +1009,7 @@ class AppWidgetService extends IAppWidgetService.Stub if (success) { // delete any hosts that didn't manage to get connected (should happen) // if it matters, they'll be reconnected. - final int N = mHosts.size(); - for (int i=0; i<N; i++) { + for (int i=mHosts.size()-1; i>=0; i--) { pruneHostLocked(mHosts.get(i)); } } else { diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index fab97b1..3f268c9 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -120,6 +120,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run private IGpsStatusProvider mGpsStatusProvider; private LocationWorkerHandler mLocationHandler; + // Cache the real providers for use in addTestProvider() and removeTestProvider() + LocationProviderProxy mNetworkLocationProvider; + LocationProviderProxy mGpsLocationProvider; + // Handler messages private static final int MESSAGE_LOCATION_CHANGED = 1; @@ -539,6 +543,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run mGpsStatusProvider = provider.getGpsStatusProvider(); LocationProviderProxy proxy = new LocationProviderProxy(LocationManager.GPS_PROVIDER, provider); addProvider(proxy); + mGpsLocationProvider = proxy; } updateProvidersLocked(); @@ -616,6 +621,9 @@ public class LocationManagerService extends ILocationManager.Stub implements Run LocationProviderProxy proxy = new LocationProviderProxy(name, provider); addProvider(proxy); updateProvidersLocked(); + if (LocationManager.NETWORK_PROVIDER.equals(name)) { + mNetworkLocationProvider = proxy; + } // notify provider of current network state proxy.updateNetworkState(mNetworkState); @@ -1789,16 +1797,22 @@ public class LocationManagerService extends ILocationManager.Stub implements Run requiresNetwork, requiresSatellite, requiresCell, hasMonetaryCost, supportsAltitude, supportsSpeed, supportsBearing, powerRequirement, accuracy); + // remove the real provider if we are replacing GPS or network provider + if (LocationManager.GPS_PROVIDER.equals(name) + || LocationManager.NETWORK_PROVIDER.equals(name)) { + LocationProviderProxy proxy = mProvidersByName.get(name); + if (proxy != null) { + proxy.enableLocationTracking(false); + removeProvider(proxy); + } + } if (mProvidersByName.get(name) != null) { throw new IllegalArgumentException("Provider \"" + name + "\" already exists"); } - - // clear calling identity so INSTALL_LOCATION_PROVIDER permission is not required - long identity = Binder.clearCallingIdentity(); addProvider(new LocationProviderProxy(name, provider)); mMockProviders.put(name, provider); + mLastKnownLocation.put(name, null); updateProvidersLocked(); - Binder.restoreCallingIdentity(identity); } } @@ -1811,6 +1825,15 @@ public class LocationManagerService extends ILocationManager.Stub implements Run } removeProvider(mProvidersByName.get(provider)); mMockProviders.remove(mockProvider); + // reinstall real provider if we were mocking GPS or network provider + if (LocationManager.GPS_PROVIDER.equals(provider) && + mGpsLocationProvider != null) { + addProvider(mGpsLocationProvider); + } else if (LocationManager.NETWORK_PROVIDER.equals(provider) && + mNetworkLocationProvider != null) { + addProvider(mNetworkLocationProvider); + } + mLastKnownLocation.put(provider, null); updateProvidersLocked(); } } diff --git a/services/java/com/android/server/ProcessStats.java b/services/java/com/android/server/ProcessStats.java index 58f8980..af80e20 100644 --- a/services/java/com/android/server/ProcessStats.java +++ b/services/java/com/android/server/ProcessStats.java @@ -46,18 +46,23 @@ public class ProcessStats { PROC_SPACE_TERM, PROC_SPACE_TERM, PROC_SPACE_TERM, + PROC_SPACE_TERM|PROC_OUT_LONG, // 9: minor faults PROC_SPACE_TERM, - PROC_SPACE_TERM, - PROC_SPACE_TERM, + PROC_SPACE_TERM|PROC_OUT_LONG, // 11: major faults PROC_SPACE_TERM, PROC_SPACE_TERM|PROC_OUT_LONG, // 13: utime PROC_SPACE_TERM|PROC_OUT_LONG // 14: stime }; + static final int PROCESS_STAT_MINOR_FAULTS = 0; + static final int PROCESS_STAT_MAJOR_FAULTS = 1; + static final int PROCESS_STAT_UTIME = 2; + static final int PROCESS_STAT_STIME = 3; + /** Stores user time and system time in 100ths of a second. */ - private final long[] mProcessStatsData = new long[2]; + private final long[] mProcessStatsData = new long[4]; /** Stores user time and system time in 100ths of a second. */ - private final long[] mSinglePidStatsData = new long[2]; + private final long[] mSinglePidStatsData = new long[4]; private static final int[] PROCESS_FULL_STATS_FORMAT = new int[] { PROC_SPACE_TERM, @@ -151,6 +156,11 @@ public class ProcessStats { public int rel_utime; public int rel_stime; + public long base_minfaults; + public long base_majfaults; + public int rel_minfaults; + public int rel_majfaults; + public boolean active; public boolean added; public boolean removed; @@ -313,12 +323,16 @@ public class ProcessStats { continue; } - final long utime = procStats[0]; - final long stime = procStats[1]; + final long minfaults = procStats[PROCESS_STAT_MINOR_FAULTS]; + final long majfaults = procStats[PROCESS_STAT_MAJOR_FAULTS]; + final long utime = procStats[PROCESS_STAT_UTIME]; + final long stime = procStats[PROCESS_STAT_STIME]; if (utime == st.base_utime && stime == st.base_stime) { st.rel_utime = 0; st.rel_stime = 0; + st.rel_minfaults = 0; + st.rel_majfaults = 0; if (st.active) { st.active = false; } @@ -342,6 +356,10 @@ public class ProcessStats { st.rel_stime = (int)(stime - st.base_stime); st.base_utime = utime; st.base_stime = stime; + st.rel_minfaults = (int)(minfaults - st.base_minfaults); + st.rel_majfaults = (int)(majfaults - st.base_majfaults); + st.base_minfaults = minfaults; + st.base_majfaults = majfaults; //Log.i("Load", "Stats changed " + name + " pid=" + st.pid // + " name=" + st.name + " utime=" + utime // + " stime=" + stime); @@ -364,11 +382,13 @@ public class ProcessStats { procStats, null)) { st.baseName = parentPid < 0 ? procStatsString[0] : Integer.toString(pid); - st.base_utime = procStats[1]; - st.base_stime = procStats[2]; + st.base_utime = 0; //procStats[1]; + st.base_stime = 0; //procStats[2]; + st.base_minfaults = st.base_majfaults = 0; } else { st.baseName = "<unknown>"; st.base_utime = st.base_stime = 0; + st.base_minfaults = st.base_majfaults = 0; } if (parentPid < 0) { @@ -386,6 +406,8 @@ public class ProcessStats { //Log.i("Load", "New process: " + st.pid + " " + st.name); st.rel_utime = 0; st.rel_stime = 0; + st.rel_minfaults = 0; + st.rel_majfaults = 0; st.added = true; if (!first) { workingProcs.add(st); @@ -396,6 +418,8 @@ public class ProcessStats { // This process has gone away! st.rel_utime = 0; st.rel_stime = 0; + st.rel_minfaults = 0; + st.rel_majfaults = 0; st.removed = true; workingProcs.add(st); allProcs.remove(curStatsIndex); @@ -412,6 +436,8 @@ public class ProcessStats { final Stats st = allProcs.get(curStatsIndex); st.rel_utime = 0; st.rel_stime = 0; + st.rel_minfaults = 0; + st.rel_majfaults = 0; st.removed = true; workingProcs.add(st); allProcs.remove(curStatsIndex); @@ -427,7 +453,8 @@ public class ProcessStats { final long[] statsData = mSinglePidStatsData; if (Process.readProcFile(statFile, PROCESS_STATS_FORMAT, null, statsData, null)) { - long time = statsData[0] + statsData[1]; + long time = statsData[PROCESS_STAT_UTIME] + + statsData[PROCESS_STAT_STIME]; return time; } return 0; @@ -497,33 +524,35 @@ public class ProcessStats { pw.print(now-mCurrentSampleTime); pw.println("ms ago:"); - final int totalTime = mRelUserTime + mRelSystemTime + mRelIoWaitTime + mRelIrqTime + - mRelSoftIrqTime + mRelIdleTime; + final int totalTime = mRelUserTime + mRelSystemTime + mRelIoWaitTime + + mRelIrqTime + mRelSoftIrqTime + mRelIdleTime; int N = mWorkingProcs.size(); for (int i=0; i<N; i++) { Stats st = mWorkingProcs.get(i); printProcessCPU(pw, st.added ? " +" : (st.removed ? " -": " "), - st.name, totalTime, st.rel_utime, st.rel_stime, 0, 0, 0); + st.name, totalTime, st.rel_utime, st.rel_stime, 0, 0, 0, + st.rel_minfaults, st.rel_majfaults); if (!st.removed && st.workingThreads != null) { int M = st.workingThreads.size(); for (int j=0; j<M; j++) { Stats tst = st.workingThreads.get(j); printProcessCPU(pw, tst.added ? " +" : (tst.removed ? " -": " "), - tst.name, totalTime, tst.rel_utime, tst.rel_stime, 0, 0, 0); + tst.name, totalTime, tst.rel_utime, tst.rel_stime, + 0, 0, 0, 0, 0); } } } - printProcessCPU(pw, "", "TOTAL", totalTime, mRelUserTime, mRelSystemTime, mRelIoWaitTime, - mRelIrqTime, mRelSoftIrqTime); + printProcessCPU(pw, "", "TOTAL", totalTime, mRelUserTime, mRelSystemTime, + mRelIoWaitTime, mRelIrqTime, mRelSoftIrqTime, 0, 0); return sw.toString(); } private void printProcessCPU(PrintWriter pw, String prefix, String label, int totalTime, - int user, int system, int iowait, int irq, int softIrq) { + int user, int system, int iowait, int irq, int softIrq, int minFaults, int majFaults) { pw.print(prefix); pw.print(label); pw.print(": "); @@ -549,6 +578,19 @@ public class ProcessStats { pw.print((softIrq*100)/totalTime); pw.print("% softirq"); } + if (minFaults > 0 || majFaults > 0) { + pw.print(" / faults:"); + if (minFaults > 0) { + pw.print(" "); + pw.print(minFaults); + pw.print(" minor"); + } + if (majFaults > 0) { + pw.print(" "); + pw.print(majFaults); + pw.print(" major"); + } + } pw.println(); } diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index aa1a5cf..b2848ac 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -19,7 +19,6 @@ package com.android.server; import com.android.server.am.ActivityManagerService; import com.android.server.status.StatusBarService; -import dalvik.system.PathClassLoader; import dalvik.system.VMRuntime; import android.app.ActivityManagerNative; @@ -32,7 +31,6 @@ import android.content.pm.IPackageManager; import android.database.ContentObserver; import android.database.Cursor; import android.media.AudioService; -import android.os.IBinder; import android.os.Looper; import android.os.RemoteException; import android.os.ServiceManager; @@ -46,9 +44,6 @@ import android.server.search.SearchManagerService; import android.util.EventLog; import android.util.Log; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; - class ServerThread extends Thread { private static final String TAG = "SystemServer"; private final static boolean INCLUDE_DEMO = false; diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index ae790c9..5d34d00 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -237,6 +237,9 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // How long to wait after going idle before forcing apps to GC. static final int GC_TIMEOUT = 5*1000; + // The minimum amount of time between successive GC requests for a process. + static final int GC_MIN_INTERVAL = 60*1000; + // How long we wait until giving up on an activity telling us it has // finished destroying itself. static final int DESTROY_TIMEOUT = 10*1000; @@ -251,10 +254,23 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // is no longer considered to be a relaunch of the service. static final int SERVICE_RESTART_DURATION = 5*1000; + // How long a service needs to be running until it will start back at + // SERVICE_RESTART_DURATION after being killed. + static final int SERVICE_RESET_RUN_DURATION = 60*1000; + + // Multiplying factor to increase restart duration time by, for each time + // a service is killed before it has run for SERVICE_RESET_RUN_DURATION. + static final int SERVICE_RESTART_DURATION_FACTOR = 4; + + // The minimum amount of time between restarting services that we allow. + // That is, when multiple services are restarting, we won't allow each + // to restart less than this amount of time from the last one. + static final int SERVICE_MIN_RESTART_TIME_BETWEEN = 10*1000; + // Maximum amount of time for there to be no activity on a service before // we consider it non-essential and allow its process to go on the // LRU background list. - static final int MAX_SERVICE_INACTIVITY = 10*60*1000; + static final int MAX_SERVICE_INACTIVITY = 30*60*1000; // How long we wait until we timeout on key dispatching. static final int KEY_DISPATCHING_TIMEOUT = 5*1000; @@ -924,6 +940,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen static final int RESUME_TOP_ACTIVITY_MSG = 19; static final int PROC_START_TIMEOUT_MSG = 20; static final int DO_PENDING_ACTIVITY_LAUNCHES_MSG = 21; + static final int KILL_APPLICATION_MSG = 22; AlertDialog mUidAlert; @@ -1089,8 +1106,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } } } - break; - } + } break; case SHOW_UID_ERROR_MSG: { // XXX This is a temporary dialog, no need to localize. AlertDialog d = new BaseErrorDialog(mContext); @@ -1134,7 +1150,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen synchronized (ActivityManagerService.this) { resumeTopActivityLocked(null); } - } + } break; case PROC_START_TIMEOUT_MSG: { if (mDidDexOpt) { mDidDexOpt = false; @@ -1147,12 +1163,20 @@ public final class ActivityManagerService extends ActivityManagerNative implemen synchronized (ActivityManagerService.this) { processStartTimedOutLocked(app); } - } + } break; case DO_PENDING_ACTIVITY_LAUNCHES_MSG: { synchronized (ActivityManagerService.this) { doPendingActivityLaunchesLocked(true); } - } + } break; + case KILL_APPLICATION_MSG: { + synchronized (ActivityManagerService.this) { + int uid = msg.arg1; + boolean restart = (msg.arg2 == 1); + String pkg = (String) msg.obj; + uninstallPackageLocked(pkg, uid, restart); + } + } break; } } }; @@ -4417,17 +4441,26 @@ public final class ActivityManagerService extends ActivityManagerNative implemen if (!haveBg) { Log.i(TAG, "Low Memory: No more background processes."); EventLog.writeEvent(LOG_AM_LOW_MEMORY, mLRUProcesses.size()); + long now = SystemClock.uptimeMillis(); for (i=0; i<count; i++) { ProcessRecord rec = mLRUProcesses.get(i); - if (rec.thread != null) { - rec.lastRequestedGc = SystemClock.uptimeMillis(); - try { - rec.thread.scheduleLowMemory(); - } catch (RemoteException e) { - // Don't care if the process is gone. + if (rec.thread != null && + (rec.lastLowMemory+GC_MIN_INTERVAL) <= now) { + // The low memory report is overriding any current + // state for a GC request. Make sure to do + // visible/foreground processes first. + if (rec.setAdj <= VISIBLE_APP_ADJ) { + rec.lastRequestedGc = 0; + } else { + rec.lastRequestedGc = rec.lastLowMemory; } + rec.reportLowMemory = true; + rec.lastLowMemory = now; + mProcessesToGc.remove(rec); + addProcessToGcListLocked(rec); } } + scheduleAppGcsLocked(); } } } else if (Config.LOGD) { @@ -4449,7 +4482,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } final void appNotRespondingLocked(ProcessRecord app, HistoryRecord activity, - final String annotation) { + HistoryRecord reportedActivity, final String annotation) { if (app.notResponding || app.crashing) { return; } @@ -4477,8 +4510,13 @@ public final class ActivityManagerService extends ActivityManagerNative implemen StringBuilder info = mStringBuilder; info.setLength(0); - info.append("ANR (application not responding) in process: "); + info.append("ANR in process: "); info.append(app.processName); + if (reportedActivity != null && reportedActivity.app != null) { + info.append(" (last in "); + info.append(reportedActivity.app.processName); + info.append(")"); + } if (annotation != null) { info.append("\nAnnotation: "); info.append(annotation); @@ -4498,10 +4536,44 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } else { // Dumping traces to a file so dump all active processes we know about synchronized (this) { - for (int i = mLRUProcesses.size() - 1 ; i >= 0 ; i--) { + // First, these are the most important processes. + final int[] imppids = new int[3]; + int i=0; + imppids[0] = app.pid; + i++; + if (reportedActivity != null && reportedActivity.app != null + && reportedActivity.app.thread != null + && reportedActivity.app.pid != app.pid) { + imppids[i] = reportedActivity.app.pid; + i++; + } + imppids[i] = Process.myPid(); + for (i=0; i<imppids.length && imppids[i] != 0; i++) { + Process.sendSignal(imppids[i], Process.SIGNAL_QUIT); + synchronized (this) { + try { + wait(200); + } catch (InterruptedException e) { + } + } + } + for (i = mLRUProcesses.size() - 1 ; i >= 0 ; i--) { ProcessRecord r = mLRUProcesses.get(i); - if (r.thread != null) { + boolean done = false; + for (int j=0; j<imppids.length && imppids[j] != 0; j++) { + if (imppids[j] == r.pid) { + done = true; + break; + } + } + if (!done && r.thread != null) { Process.sendSignal(r.pid, Process.SIGNAL_QUIT); + synchronized (this) { + try { + wait(200); + } catch (InterruptedException e) { + } + } } } } @@ -4565,7 +4637,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen if (!dir.exists()) { fileReady = dir.mkdirs(); FileUtils.setPermissions(dir.getAbsolutePath(), - FileUtils.S_IRWXU | FileUtils.S_IRWXG | FileUtils.S_IRWXO, -1, -1); + FileUtils.S_IRWXU | FileUtils.S_IRWXG | FileUtils.S_IXOTH, -1, -1); } else if (dir.isDirectory()) { fileReady = true; } @@ -4575,6 +4647,18 @@ public final class ActivityManagerService extends ActivityManagerNative implemen Log.i(TAG, "Removing old ANR trace file from " + tracesPath); fileReady = f.delete(); } + + if (removeExisting) { + try { + f.createNewFile(); + FileUtils.setPermissions(f.getAbsolutePath(), + FileUtils.S_IRWXU | FileUtils.S_IRWXG + | FileUtils.S_IWOTH | FileUtils.S_IROTH, -1, -1); + fileReady = true; + } catch (IOException e) { + Log.w(TAG, "Unable to make ANR traces file", e); + } + } } return fileReady; @@ -4753,7 +4837,12 @@ public final class ActivityManagerService extends ActivityManagerNative implemen int callerUid = Binder.getCallingUid(); // Only the system server can kill an application if (callerUid == Process.SYSTEM_UID) { - uninstallPackageLocked(pkg, uid, false); + // Post an aysnc message to kill the application + Message msg = mHandler.obtainMessage(KILL_APPLICATION_MSG); + msg.arg1 = uid; + msg.arg2 = 0; + msg.obj = pkg; + mHandler.sendMessage(msg); } else { throw new SecurityException(callerUid + " cannot kill pkg: " + pkg); @@ -5047,7 +5136,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen app.instrumentationArguments, app.instrumentationWatcher, testMode, isRestrictedBackupMode, mConfiguration, getCommonServicesLocked()); updateLRUListLocked(app, false); - app.lastRequestedGc = SystemClock.uptimeMillis(); + app.lastRequestedGc = app.lastLowMemory = SystemClock.uptimeMillis(); } catch (Exception e) { // todo: Yikes! What should we do? For now we will try to // start another process, but that could easily get us in @@ -8730,6 +8819,24 @@ public final class ActivityManagerService extends ActivityManagerNative implemen "OnHold Norm", "OnHold PERS", false); } + if (mProcessesToGc.size() > 0) { + if (needSep) pw.println(" "); + needSep = true; + pw.println(" Processes that are waiting to GC:"); + long now = SystemClock.uptimeMillis(); + for (int i=0; i<mProcessesToGc.size(); i++) { + ProcessRecord proc = mProcessesToGc.get(i); + pw.print(" Process "); pw.println(proc); + pw.print(" lowMem="); pw.print(proc.reportLowMemory); + pw.print(", last gced="); + pw.print(now-proc.lastRequestedGc); + pw.print(" ms ago, last lowMwm="); + pw.print(now-proc.lastLowMemory); + pw.println(" ms ago"); + + } + } + if (mProcessCrashTimes.getMap().size() > 0) { if (needSep) pw.println(" "); needSep = true; @@ -9842,6 +9949,8 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } private final void scheduleServiceRestartLocked(ServiceRecord r) { + final long now = SystemClock.uptimeMillis(); + r.totalRestartCount++; if (r.restartDelay == 0) { r.restartCount++; @@ -9852,19 +9961,41 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // the beginning, so we don't infinitely increase the duration // on a service that just occasionally gets killed (which is // a normal case, due to process being killed to reclaim memory). - long now = SystemClock.uptimeMillis(); - if (now > (r.restartTime+(SERVICE_RESTART_DURATION*2*2*2))) { + if (now > (r.restartTime+SERVICE_RESET_RUN_DURATION)) { r.restartCount = 1; r.restartDelay = SERVICE_RESTART_DURATION; } else { - r.restartDelay *= 2; + r.restartDelay *= SERVICE_RESTART_DURATION_FACTOR; } } + + r.nextRestartTime = now + r.restartDelay; + + // Make sure that we don't end up restarting a bunch of services + // all at the same time. + boolean repeat; + do { + repeat = false; + for (int i=mRestartingServices.size()-1; i>=0; i--) { + ServiceRecord r2 = mRestartingServices.get(i); + if (r2 != r && r.nextRestartTime + >= (r2.nextRestartTime-SERVICE_MIN_RESTART_TIME_BETWEEN) + && r.nextRestartTime + < (r2.nextRestartTime+SERVICE_MIN_RESTART_TIME_BETWEEN)) { + r.nextRestartTime = r2.nextRestartTime + SERVICE_MIN_RESTART_TIME_BETWEEN; + r.restartDelay = r.nextRestartTime - now; + repeat = true; + break; + } + } + } while (repeat); + if (!mRestartingServices.contains(r)) { mRestartingServices.add(r); } + mHandler.removeCallbacks(r.restarter); - mHandler.postDelayed(r.restarter, r.restartDelay); + mHandler.postAtTime(r.restarter, r.nextRestartTime); r.nextRestartTime = SystemClock.uptimeMillis() + r.restartDelay; Log.w(TAG, "Scheduling restart of crashed service " + r.shortName + " in " + r.restartDelay + "ms"); @@ -10597,7 +10728,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } if (timeout != null && mLRUProcesses.contains(proc)) { Log.w(TAG, "Timeout executing service: " + timeout); - appNotRespondingLocked(proc, null, "Executing service " + appNotRespondingLocked(proc, null, null, "Executing service " + timeout.name); } else { Message msg = mHandler.obtainMessage(SERVICE_TIMEOUT_MSG); @@ -11392,7 +11523,8 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } if (app != null) { - appNotRespondingLocked(app, null, "Broadcast of " + r.intent.toString()); + appNotRespondingLocked(app, null, null, + "Broadcast of " + r.intent.toString()); } if (mPendingBroadcast == r) { @@ -12238,15 +12370,15 @@ public final class ActivityManagerService extends ActivityManagerNative implemen if (app == TOP_APP) { // The last app on the list is the foreground app. adj = FOREGROUND_APP_ADJ; - app.adjType = "top"; + app.adjType = "top-activity"; } else if (app.instrumentationClass != null) { // Don't want to kill running instrumentation. adj = FOREGROUND_APP_ADJ; - app.adjType = "instr"; + app.adjType = "instrumentation"; } else if (app.persistentActivities > 0) { // Special persistent activities... shouldn't be used these days. adj = FOREGROUND_APP_ADJ; - app.adjType = "pers"; + app.adjType = "persistent"; } else if (app.curReceiver != null || (mPendingBroadcast != null && mPendingBroadcast.curApp == app)) { // An app that is currently receiving a broadcast also @@ -12275,6 +12407,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } else if ((N=app.activities.size()) != 0) { // This app is in the background with paused activities. adj = hiddenAdj; + app.adjType = "bg-activities"; for (int j=0; j<N; j++) { if (((HistoryRecord)app.activities.get(j)).visible) { // This app has a visible activity! @@ -12314,7 +12447,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // its services we may bump it up from there. if (adj > hiddenAdj) { adj = hiddenAdj; - app.adjType = "services"; + app.adjType = "bg-services"; } final long now = SystemClock.uptimeMillis(); // This process is more important if the top activity is @@ -12456,7 +12589,12 @@ public final class ActivityManagerService extends ActivityManagerNative implemen try { app.lastRequestedGc = SystemClock.uptimeMillis(); if (app.thread != null) { - app.thread.processInBackground(); + if (app.reportLowMemory) { + app.reportLowMemory = false; + app.thread.scheduleLowMemory(); + } else { + app.thread.processInBackground(); + } } } catch (Exception e) { // whatever. @@ -12485,14 +12623,24 @@ public final class ActivityManagerService extends ActivityManagerNative implemen if (canGcNow()) { while (mProcessesToGc.size() > 0) { ProcessRecord proc = mProcessesToGc.remove(0); - if (proc.curRawAdj > VISIBLE_APP_ADJ) { - // To avoid spamming the system, we will GC processes one - // at a time, waiting a few seconds between each. - performAppGcLocked(proc); - scheduleAppGcsLocked(); - return; + if (proc.curRawAdj > VISIBLE_APP_ADJ || proc.reportLowMemory) { + if ((proc.lastRequestedGc+GC_MIN_INTERVAL) + <= SystemClock.uptimeMillis()) { + // To avoid spamming the system, we will GC processes one + // at a time, waiting a few seconds between each. + performAppGcLocked(proc); + scheduleAppGcsLocked(); + return; + } else { + // It hasn't been long enough since we last GCed this + // process... put it in the list to wait for its time. + addProcessToGcListLocked(proc); + break; + } } } + + scheduleAppGcsLocked(); } } @@ -12513,8 +12661,39 @@ public final class ActivityManagerService extends ActivityManagerNative implemen */ final void scheduleAppGcsLocked() { mHandler.removeMessages(GC_BACKGROUND_PROCESSES_MSG); - Message msg = mHandler.obtainMessage(GC_BACKGROUND_PROCESSES_MSG); - mHandler.sendMessageDelayed(msg, GC_TIMEOUT); + + if (mProcessesToGc.size() > 0) { + // Schedule a GC for the time to the next process. + ProcessRecord proc = mProcessesToGc.get(0); + Message msg = mHandler.obtainMessage(GC_BACKGROUND_PROCESSES_MSG); + + long when = mProcessesToGc.get(0).lastRequestedGc + GC_MIN_INTERVAL; + long now = SystemClock.uptimeMillis(); + if (when < (now+GC_TIMEOUT)) { + when = now + GC_TIMEOUT; + } + mHandler.sendMessageAtTime(msg, when); + } + } + + /** + * Add a process to the array of processes waiting to be GCed. Keeps the + * list in sorted order by the last GC time. The process can't already be + * on the list. + */ + final void addProcessToGcListLocked(ProcessRecord proc) { + boolean added = false; + for (int i=mProcessesToGc.size()-1; i>=0; i--) { + if (mProcessesToGc.get(i).lastRequestedGc < + proc.lastRequestedGc) { + added = true; + mProcessesToGc.add(i+1, proc); + break; + } + } + if (!added) { + mProcessesToGc.add(0, proc); + } } /** @@ -12524,11 +12703,11 @@ public final class ActivityManagerService extends ActivityManagerNative implemen */ final void scheduleAppGcLocked(ProcessRecord app) { long now = SystemClock.uptimeMillis(); - if ((app.lastRequestedGc+5000) > now) { + if ((app.lastRequestedGc+GC_MIN_INTERVAL) > now) { return; } if (!mProcessesToGc.contains(app)) { - mProcessesToGc.add(app); + addProcessToGcListLocked(app); scheduleAppGcsLocked(); } } diff --git a/services/java/com/android/server/am/HistoryRecord.java b/services/java/com/android/server/am/HistoryRecord.java index b3fc313..84ded22 100644 --- a/services/java/com/android/server/am/HistoryRecord.java +++ b/services/java/com/android/server/am/HistoryRecord.java @@ -470,7 +470,8 @@ class HistoryRecord extends IApplicationToken.Stub { } if (r.app.instrumentationClass == null) { - service.appNotRespondingLocked(r.app, r, "keyDispatchingTimedOut"); + service.appNotRespondingLocked(r.app, r, this, + "keyDispatchingTimedOut"); } else { Bundle info = new Bundle(); info.putString("shortMsg", "keyDispatchingTimedOut"); diff --git a/services/java/com/android/server/am/ProcessRecord.java b/services/java/com/android/server/am/ProcessRecord.java index 544d034..76fdf09 100644 --- a/services/java/com/android/server/am/ProcessRecord.java +++ b/services/java/com/android/server/am/ProcessRecord.java @@ -71,6 +71,8 @@ class ProcessRecord implements Watchdog.PssRequestor { ComponentName instrumentationResultClass;// copy of instrumentationClass BroadcastRecord curReceiver;// receiver currently running in the app long lastRequestedGc; // When we last asked the app to do a gc + long lastLowMemory; // When we last told the app that memory is low + boolean reportLowMemory; // Set to true when waiting to report low mem int lastPss; // Last pss size reported by app. String adjType; // Debugging: primary thing impacting oom_adj. Object adjSource; // Debugging: option dependent object. diff --git a/services/java/com/android/server/am/ServiceRecord.java b/services/java/com/android/server/am/ServiceRecord.java index fc93b69..98df4b3 100644 --- a/services/java/com/android/server/am/ServiceRecord.java +++ b/services/java/com/android/server/am/ServiceRecord.java @@ -88,22 +88,23 @@ class ServiceRecord extends Binder { if (permission != null) { pw.print(prefix); pw.print("permission="); pw.println(permission); } + long now = SystemClock.uptimeMillis(); pw.print(prefix); pw.print("baseDir="); pw.print(baseDir); if (!resDir.equals(baseDir)) pw.print(" resDir="); pw.print(resDir); pw.print(" dataDir="); pw.println(dataDir); pw.print(prefix); pw.print("app="); pw.println(app); pw.print(prefix); pw.print("isForeground="); pw.print(isForeground); - pw.print(" lastActivity="); pw.println(lastActivity); + pw.print(" lastActivity="); pw.println(lastActivity-now); pw.print(prefix); pw.print("startRequested="); pw.print(startRequested); pw.print(" startId="); pw.print(lastStartId); pw.print(" executeNesting="); pw.print(executeNesting); - pw.print(" executingStart="); pw.print(executingStart); + pw.print(" executingStart="); pw.print(executingStart-now); pw.print(" crashCount="); pw.println(crashCount); pw.print(prefix); pw.print("totalRestartCount="); pw.print(totalRestartCount); pw.print(" restartCount="); pw.print(restartCount); pw.print(" restartDelay="); pw.print(restartDelay); - pw.print(" restartTime="); pw.print(restartTime); - pw.print(" nextRestartTime="); pw.println(nextRestartTime); + pw.print(" restartTime="); pw.print(restartTime-now); + pw.print(" nextRestartTime="); pw.println(nextRestartTime-now); if (bindings.size() > 0) { Iterator<IntentBindRecord> it = bindings.values().iterator(); while (it.hasNext()) { diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index c33d4b6..d48c941 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -412,7 +412,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { * @return false while no data connection if all above requirements are met. */ public boolean isDataConnectionAsDesired() { - boolean roaming = phone.getServiceState().getRoaming(); + boolean roaming = getDataRoaming(); if (mGsmPhone.mSIMRecords.getRecordsLoaded() && mGsmPhone.mSST.getCurrentGprsState() == ServiceState.STATE_IN_SERVICE && @@ -424,6 +424,10 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { return true; } + private boolean getDataRoaming() { + return mGsmPhone.mSST.getDataRoaming(); + } + private boolean isApnTypeActive(String type) { // TODO: to support simultaneous, mActiveApn can be a List instead. return mActiveApn != null && mActiveApn.canHandleType(type); @@ -533,7 +537,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { } private boolean isDataAllowed() { - boolean roaming = phone.getServiceState().getRoaming(); + boolean roaming = getDataRoaming(); return getAnyDataEnabled() && (!roaming || getDataOnRoamingEnabled()); } @@ -580,7 +584,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { } int gprsState = mGsmPhone.mSST.getCurrentGprsState(); - boolean roaming = phone.getServiceState().getRoaming(); + boolean roaming = getDataRoaming(); boolean desiredPowerState = mGsmPhone.mSST.getDesiredPowerState(); if ((state == State.IDLE || state == State.SCANNING) @@ -1245,16 +1249,38 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { } } + /** + * Check the data roaming consistency since this can be triggered by + * voice roaming flag of ServiceState in setDataOnRoamingEnabled() + * + * TODO make this triggered by data roaming state only + */ + @Override protected void onRoamingOff() { - trySetupData(Phone.REASON_ROAMING_OFF); + if (!getDataRoaming()) { //data roaming is off + trySetupData(Phone.REASON_ROAMING_OFF); + } else { // Inconsistent! data roaming is on + sendMessage(obtainMessage(EVENT_ROAMING_ON)); + } } + /** + * Check the data roaming consistency since this can be triggered by + * voice roaming flag of ServiceState in setDataOnRoamingEnabled() + * + * TODO make this triggered by data roaming state only + */ + @Override protected void onRoamingOn() { - if (getDataOnRoamingEnabled()) { - trySetupData(Phone.REASON_ROAMING_ON); - } else { - if (DBG) log("Tear down data connection on roaming."); - cleanUpConnection(true, Phone.REASON_ROAMING_ON); + if (getDataRoaming()) { // data roaming is on + if (getDataOnRoamingEnabled()) { + trySetupData(Phone.REASON_ROAMING_ON); + } else { + if (DBG) log("Tear down data connection on roaming."); + cleanUpConnection(true, Phone.REASON_ROAMING_ON); + } + } else { // Inconsistent! data roaming is off + sendMessage(obtainMessage(EVENT_ROAMING_OFF)); } } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java index b3b4345..60d4e8f 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java @@ -88,6 +88,9 @@ final class GsmServiceStateTracker extends ServiceStateTracker { private int newNetworkType = 0; /* gsm roaming status solely based on TS 27.007 7.2 CREG */ private boolean mGsmRoaming = false; + /* data roaming status solely based on TS 27.007 10.1.19 CGREG */ + private boolean mDataRoaming = false; + private boolean newDataRoaming = false; private RegistrantList gprsAttachedRegistrants = new RegistrantList(); private RegistrantList gprsDetachedRegistrants = new RegistrantList(); @@ -309,6 +312,10 @@ final class GsmServiceStateTracker extends ServiceStateTracker { psRestrictDisabledRegistrants.remove(h); } + /*protected*/ boolean getDataRoaming() { + return mDataRoaming; + } + //***** Called from GSMPhone public void getLacAndCid(Message onComplete) { @@ -666,6 +673,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { } } newGPRSState = regCodeToServiceState(regState); + newDataRoaming = regCodeIsRoaming(regState); newNetworkType = type; break; @@ -693,6 +701,11 @@ final class GsmServiceStateTracker extends ServiceStateTracker { if (pollingContext[0] == 0) { newSS.setRoaming(isRoamingBetweenOperators(mGsmRoaming, newSS)); + // when both roaming indicators are true but not roaming between + // operators, roaming should set to false. + if (newDataRoaming && mGsmRoaming && !newSS.getRoaming()) { + newDataRoaming = false; + } pollStateDone(); } @@ -722,6 +735,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { newCellLoc.setStateInvalid(); setSignalStrengthDefaultValues(); mGotCountryCode = false; + newDataRoaming = false; pollStateDone(); break; @@ -731,6 +745,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { newCellLoc.setStateInvalid(); setSignalStrengthDefaultValues(); mGotCountryCode = false; + newDataRoaming = false; pollStateDone(); break; @@ -745,6 +760,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker { newCellLoc.setStateInvalid(); setSignalStrengthDefaultValues(); mGotCountryCode = false; + newDataRoaming = false; + mDataRoaming = false; //NOTE: pollStateDone() is not needed in this case break; @@ -829,9 +846,9 @@ final class GsmServiceStateTracker extends ServiceStateTracker { boolean hasChanged = !newSS.equals(ss); - boolean hasRoamingOn = !ss.getRoaming() && newSS.getRoaming(); + boolean hasRoamingOn = !mDataRoaming && newDataRoaming; - boolean hasRoamingOff = ss.getRoaming() && !newSS.getRoaming(); + boolean hasRoamingOff = mDataRoaming && !newDataRoaming; boolean hasLocationChanged = !newCellLoc.equals(cellLoc); @@ -848,6 +865,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { gprsState = newGPRSState; networkType = newNetworkType; + mDataRoaming = newDataRoaming; newSS.setStateOutOfService(); // clean slate for next time diff --git a/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java b/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java index f1207e4..af59126 100644 --- a/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java +++ b/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java @@ -277,10 +277,12 @@ public class SmsMessage extends SmsMessageBase{ } if (header != null) { - userData = new byte[header.length + textPart.length]; + // Need 1 byte for UDHL + userData = new byte[header.length + textPart.length + 1]; - System.arraycopy(header, 0, userData, 0, header.length); - System.arraycopy(textPart, 0, userData, header.length, textPart.length); + userData[0] = (byte)header.length; + System.arraycopy(header, 0, userData, 1, header.length); + System.arraycopy(textPart, 0, userData, header.length + 1, textPart.length); } else { userData = textPart; diff --git a/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewCallbacks.java b/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewCallbacks.java index 89421e4..29000dd 100644 --- a/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewCallbacks.java +++ b/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewCallbacks.java @@ -19,8 +19,8 @@ package android.widget; import android.app.Instrumentation; import android.test.ActivityInstrumentationTestCase2; import android.test.FlakyTest; -import android.test.suitebuilder.annotation.MediumTest; +// TODO: tests fail intermittently. Add back MediumTest annotation when fixed public class AutoCompleteTextViewCallbacks extends ActivityInstrumentationTestCase2<AutoCompleteTextViewSimple> { @@ -32,7 +32,6 @@ public class AutoCompleteTextViewCallbacks /** Test that the initial popup of the suggestions does not select anything. */ - @MediumTest @FlakyTest(tolerance=3) public void testPopupNoSelection() throws Exception { AutoCompleteTextViewSimple theActivity = getActivity(); @@ -57,7 +56,6 @@ public class AutoCompleteTextViewCallbacks } /** Test that arrow-down into the popup calls the onSelected callback. */ - @MediumTest @FlakyTest(tolerance=3) public void testPopupEnterSelection() throws Exception { AutoCompleteTextViewSimple theActivity = getActivity(); @@ -95,7 +93,6 @@ public class AutoCompleteTextViewCallbacks } /** Test that arrow-up out of the popup calls the onNothingSelected callback */ - @MediumTest @FlakyTest(tolerance=3) public void testPopupLeaveSelection() { AutoCompleteTextViewSimple theActivity = getActivity(); diff --git a/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewPopup.java b/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewPopup.java index 1e4cd20..c48c056 100644 --- a/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewPopup.java +++ b/tests/FrameworkTest/tests/src/android/widget/AutoCompleteTextViewPopup.java @@ -20,10 +20,11 @@ import android.app.Instrumentation; import android.test.ActivityInstrumentationTestCase2; import android.test.FlakyTest; import android.test.suitebuilder.annotation.MediumTest; -import android.util.Log; /** * A collection of tests on aspects of the AutoCompleteTextView's popup + * + * TODO: tests fail intermittently. Add back MediumTest annotation when fixed */ public class AutoCompleteTextViewPopup extends ActivityInstrumentationTestCase2<AutoCompleteTextViewSimple> { @@ -40,7 +41,6 @@ public class AutoCompleteTextViewPopup } /** Test that we can move the selection and it responds as expected */ - @MediumTest @FlakyTest(tolerance=3) public void testPopupSetListSelection() throws Throwable { AutoCompleteTextViewSimple theActivity = getActivity(); @@ -73,7 +73,6 @@ public class AutoCompleteTextViewPopup } /** Test that we can look at the selection as we move around */ - @MediumTest @FlakyTest(tolerance=3) public void testPopupGetListSelection() throws Throwable { AutoCompleteTextViewSimple theActivity = getActivity(); @@ -101,7 +100,6 @@ public class AutoCompleteTextViewPopup } /** Test that we can clear the selection */ - @MediumTest @FlakyTest(tolerance=3) public void testPopupClearListSelection() throws Throwable { AutoCompleteTextViewSimple theActivity = getActivity(); @@ -135,7 +133,6 @@ public class AutoCompleteTextViewPopup } /** Make sure we handle an empty adapter properly */ - @MediumTest @FlakyTest(tolerance=3) public void testPopupNavigateNoAdapter() throws Throwable { AutoCompleteTextViewSimple theActivity = getActivity(); @@ -170,7 +167,6 @@ public class AutoCompleteTextViewPopup } /** Test the show/hide behavior of the drop-down. */ - @MediumTest @FlakyTest(tolerance=3) public void testPopupShow() throws Throwable { AutoCompleteTextViewSimple theActivity = getActivity(); diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp index e04491d..5f80ade 100644 --- a/tools/aapt/Command.cpp +++ b/tools/aapt/Command.cpp @@ -321,6 +321,7 @@ enum { LABEL_ATTR = 0x01010001, ICON_ATTR = 0x01010002, MIN_SDK_VERSION_ATTR = 0x0101020c, + MAX_SDK_VERSION_ATTR = 0x01010271, REQ_TOUCH_SCREEN_ATTR = 0x01010227, REQ_KEYBOARD_TYPE_ATTR = 0x01010228, REQ_HARD_KEYBOARD_ATTR = 0x01010229, @@ -585,6 +586,10 @@ int doDump(Bundle* bundle) targetSdk = code; printf("sdkVersion:'%d'\n", code); } + code = getIntegerAttribute(tree, MAX_SDK_VERSION_ATTR, NULL, -1); + if (code != -1) { + printf("maxSdkVersion:'%d'\n", code); + } code = getIntegerAttribute(tree, TARGET_SDK_VERSION_ATTR, &error); if (error != "") { error = ""; diff --git a/tools/layoutlib/bridge/src/android/graphics/Bitmap.java b/tools/layoutlib/bridge/src/android/graphics/Bitmap.java index 6bc01b1..7dde634 100644 --- a/tools/layoutlib/bridge/src/android/graphics/Bitmap.java +++ b/tools/layoutlib/bridge/src/android/graphics/Bitmap.java @@ -16,7 +16,6 @@ package android.graphics; -import com.android.layoutlib.bridge.BridgeCanvas; import java.awt.image.BufferedImage; import java.io.File; @@ -25,15 +24,15 @@ import java.io.IOException; import javax.imageio.ImageIO; public final class Bitmap extends _Original_Bitmap { - + private BufferedImage mImage; public Bitmap(File input) throws IOException { super(1, true, null); - + mImage = ImageIO.read(input); } - + Bitmap(BufferedImage image) { super(1, true, null); mImage = image; @@ -42,9 +41,9 @@ public final class Bitmap extends _Original_Bitmap { public BufferedImage getImage() { return mImage; } - + // ----- overriden methods - + public enum Config { // these native values must match up with the enum in SkBitmap.h ALPHA_8 (2), @@ -56,27 +55,26 @@ public final class Bitmap extends _Original_Bitmap { this.nativeInt = ni; } final int nativeInt; - + /* package */ static Config nativeToConfig(int ni) { return sConfigs[ni]; } - + private static Config sConfigs[] = { null, null, ALPHA_8, null, RGB_565, ARGB_4444, ARGB_8888 }; } - @Override public int getWidth() { return mImage.getWidth(); } - + @Override public int getHeight() { return mImage.getHeight(); } - + /** * Returns an immutable bitmap from the source bitmap. The new bitmap may * be the same object as source, or a copy may have been made. @@ -100,7 +98,7 @@ public final class Bitmap extends _Original_Bitmap { int width, int height) { return new Bitmap(source.mImage.getSubimage(x, y, width, height)); } - + /** * Returns an immutable bitmap from subset of the source bitmap, * transformed by the optional matrix. @@ -158,7 +156,7 @@ public final class Bitmap extends _Original_Bitmap { neww = Math.round(deviceR.width()); newh = Math.round(deviceR.height()); - BridgeCanvas canvas = new BridgeCanvas(neww, newh); + Canvas canvas = new Canvas(neww, newh); canvas.translate(-deviceR.left, -deviceR.top); canvas.concat(m); @@ -169,10 +167,10 @@ public final class Bitmap extends _Original_Bitmap { } canvas.drawBitmap(source, srcR, dstR, paint); - + return new Bitmap(canvas.getImage()); } - + /** * Returns a mutable bitmap with the specified width and height. * @@ -184,7 +182,7 @@ public final class Bitmap extends _Original_Bitmap { public static Bitmap createBitmap(int width, int height, Config config) { return new Bitmap(new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB)); } - + /** * Returns a immutable bitmap with the specified width and height, with each * pixel value set to the corresponding value in the colors array. @@ -215,7 +213,7 @@ public final class Bitmap extends _Original_Bitmap { || (lastScanline + width > length)) { throw new ArrayIndexOutOfBoundsException(); } - + // TODO: create an immutable bitmap... throw new UnsupportedOperationException(); } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeCanvas.java b/tools/layoutlib/bridge/src/android/graphics/Canvas.java index 4710691..3fa1d1d 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeCanvas.java +++ b/tools/layoutlib/bridge/src/android/graphics/Canvas.java @@ -14,24 +14,16 @@ * limitations under the License. */ -package com.android.layoutlib.bridge; +package android.graphics; import com.android.layoutlib.api.ILayoutLog; -import android.graphics.Bitmap; -import android.graphics.Canvas; import android.graphics.DrawFilter; -import android.graphics.LinearGradient; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.Path; import android.graphics.Picture; import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Region; -import android.graphics.Shader; import android.graphics.Xfermode; import android.graphics.Paint.Align; import android.graphics.Paint.Style; @@ -43,6 +35,7 @@ import java.awt.Composite; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; +import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.util.Stack; @@ -51,36 +44,59 @@ import javax.microedition.khronos.opengles.GL; /** * Re-implementation of the Canvas, 100% in java on top of a BufferedImage. */ -public class BridgeCanvas extends Canvas { - +public class Canvas extends _Original_Canvas { + private BufferedImage mBufferedImage; private final Stack<Graphics2D> mGraphicsStack = new Stack<Graphics2D>(); private final ILayoutLog mLogger; - public BridgeCanvas(int width, int height, ILayoutLog logger) { + public Canvas() { + mLogger = null; + // the mBufferedImage will be taken from a bitmap in #setBitmap() + } + + public Canvas(Bitmap bitmap) { + mLogger = null; + mBufferedImage = bitmap.getImage(); + mGraphicsStack.push(mBufferedImage.createGraphics()); + } + + public Canvas(int nativeCanvas) { + mLogger = null; + throw new UnsupportedOperationException("Can't create Canvas(int)"); + } + + public Canvas(javax.microedition.khronos.opengles.GL gl) { + mLogger = null; + throw new UnsupportedOperationException("Can't create Canvas(javax.microedition.khronos.opengles.GL)"); + } + + // custom constructors for our use. + public Canvas(int width, int height, ILayoutLog logger) { mLogger = logger; mBufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); mGraphicsStack.push(mBufferedImage.createGraphics()); } - - public BridgeCanvas(int width, int height) { + + public Canvas(int width, int height) { this(width, height, null /* logger*/); } - + + // custom mehtods public BufferedImage getImage() { return mBufferedImage; } - - Graphics2D getGraphics2d() { + + public Graphics2D getGraphics2d() { return mGraphicsStack.peek(); } - - void dispose() { + + public void dispose() { while (mGraphicsStack.size() > 0) { mGraphicsStack.pop().dispose(); } } - + /** * Creates a new {@link Graphics2D} based on the {@link Paint} parameters. * <p/>The object must be disposed ({@link Graphics2D#dispose()}) after being used. @@ -91,11 +107,11 @@ public class BridgeCanvas extends Canvas { g.setColor(new Color(paint.getColor())); int alpha = paint.getAlpha(); float falpha = alpha / 255.f; - + Xfermode xfermode = paint.getXfermode(); if (xfermode instanceof PorterDuffXfermode) { PorterDuff.Mode mode = ((PorterDuffXfermode)xfermode).getMode(); - + setModeInGraphics(mode, g, falpha); } else { if (mLogger != null && xfermode != null) { @@ -105,7 +121,7 @@ public class BridgeCanvas extends Canvas { } g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, falpha)); } - + Shader shader = paint.getShader(); if (shader instanceof LinearGradient) { g.setPaint(((LinearGradient)shader).getPaint()); @@ -116,10 +132,10 @@ public class BridgeCanvas extends Canvas { shader.getClass().getCanonicalName())); } } - + return g; } - + private void setModeInGraphics(PorterDuff.Mode mode, Graphics2D g, float falpha) { switch (mode) { case CLEAR: @@ -168,14 +184,43 @@ public class BridgeCanvas extends Canvas { break; } } - + + + // -------------------- + // OVERRIDEN ENUMS + // This is needed since we rename Canvas into _Original_Canvas + // -------------------- + + public enum EdgeType { + BW(0), //!< treat edges by just rounding to nearest pixel boundary + AA(1); //!< treat edges by rounding-out, since they may be antialiased + + EdgeType(int nativeInt) { + this.nativeInt = nativeInt; + } + final int nativeInt; + } + + // -------------------- - + // OVERRIDEN METHODS + // -------------------- + @Override public void finalize() throws Throwable { // pass } - + + /* (non-Javadoc) + * @see android.graphics.Canvas#setBitmap(android.graphics.Bitmap) + */ + @Override + public void setBitmap(Bitmap bitmap) { + mBufferedImage = bitmap.getImage(); + mGraphicsStack.push(mBufferedImage.createGraphics()); + } + + /* (non-Javadoc) * @see android.graphics.Canvas#translate(float, float) */ @@ -183,7 +228,7 @@ public class BridgeCanvas extends Canvas { public void translate(float dx, float dy) { getGraphics2d().translate(dx, dy); } - + /* (non-Javadoc) * @see android.graphics.Canvas#save() */ @@ -191,7 +236,7 @@ public class BridgeCanvas extends Canvas { public int save() { Graphics2D g = (Graphics2D)getGraphics2d().create(); mGraphicsStack.push(g); - + return mGraphicsStack.size() - 1; } @@ -203,7 +248,7 @@ public class BridgeCanvas extends Canvas { // For now we ignore saveFlags return save(); } - + /* (non-Javadoc) * @see android.graphics.Canvas#restore() */ @@ -221,7 +266,7 @@ public class BridgeCanvas extends Canvas { mGraphicsStack.pop(); } } - + /* (non-Javadoc) * @see android.graphics.Canvas#getSaveCount() */ @@ -229,8 +274,8 @@ public class BridgeCanvas extends Canvas { public int getSaveCount() { return mGraphicsStack.size() - 1; } - - + + /* (non-Javadoc) * @see android.graphics.Canvas#clipRect(float, float, float, float, android.graphics.Region.Op) */ @@ -288,23 +333,36 @@ public class BridgeCanvas extends Canvas { public boolean clipRect(RectF rect) { return clipRect(rect.left, rect.top, rect.right, rect.bottom); } - - @Override + public boolean quickReject(RectF rect, EdgeType type) { return false; } @Override + public boolean quickReject(RectF rect, _Original_Canvas.EdgeType type) { + throw new UnsupportedOperationException("CALL TO PARENT FORBIDDEN"); + } + public boolean quickReject(Path path, EdgeType type) { return false; } @Override + public boolean quickReject(Path path, _Original_Canvas.EdgeType type) { + throw new UnsupportedOperationException("CALL TO PARENT FORBIDDEN"); + } + public boolean quickReject(float left, float top, float right, float bottom, EdgeType type) { return false; } + @Override + public boolean quickReject(float left, float top, float right, float bottom, + _Original_Canvas.EdgeType type) { + throw new UnsupportedOperationException("CALL TO PARENT FORBIDDEN"); + } + /** * Retrieve the clip bounds, returning true if they are non-empty. * @@ -324,31 +382,31 @@ public class BridgeCanvas extends Canvas { } return false; } - + /* (non-Javadoc) * @see android.graphics.Canvas#drawColor(int, android.graphics.PorterDuff.Mode) */ @Override public void drawColor(int color, PorterDuff.Mode mode) { Graphics2D g = getGraphics2d(); - + // save old color Color c = g.getColor(); - + Composite composite = g.getComposite(); - + // get the alpha from the color int alpha = color >>> 24; float falpha = alpha / 255.f; - + setModeInGraphics(mode, g, falpha); - + g.setColor(new Color(color)); - + getGraphics2d().fillRect(0, 0, getWidth(), getHeight()); - + g.setComposite(composite); - + // restore color g.setColor(c); } @@ -360,7 +418,7 @@ public class BridgeCanvas extends Canvas { public void drawColor(int color) { drawColor(color, PorterDuff.Mode.SRC_OVER); } - + /* (non-Javadoc) * @see android.graphics.Canvas#drawARGB(int, int, int, int) */ @@ -368,7 +426,7 @@ public class BridgeCanvas extends Canvas { public void drawARGB(int a, int r, int g, int b) { drawColor(a << 24 | r << 16 | g << 8 | b, PorterDuff.Mode.SRC_OVER); } - + /* (non-Javadoc) * @see android.graphics.Canvas#drawRGB(int, int, int) */ @@ -377,7 +435,7 @@ public class BridgeCanvas extends Canvas { drawColor(0xFF << 24 | r << 16 | g << 8 | b, PorterDuff.Mode.SRC_OVER); } - + /* (non-Javadoc) * @see android.graphics.Canvas#getWidth() */ @@ -385,7 +443,7 @@ public class BridgeCanvas extends Canvas { public int getWidth() { return mBufferedImage.getWidth(); } - + /* (non-Javadoc) * @see android.graphics.Canvas#getHeight() */ @@ -401,7 +459,7 @@ public class BridgeCanvas extends Canvas { public void drawPaint(Paint paint) { drawColor(paint.getColor()); } - + /* (non-Javadoc) * @see android.graphics.Canvas#drawBitmap(android.graphics.Bitmap, float, float, android.graphics.Paint) */ @@ -417,7 +475,32 @@ public class BridgeCanvas extends Canvas { */ @Override public void drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) { - throw new UnsupportedOperationException(); + boolean needsRestore = false; + if (matrix.isIdentity() == false) { + // create a new graphics and apply the matrix to it + save(); // this creates a new Graphics2D, and stores it for children call to use + needsRestore = true; + Graphics2D g = getGraphics2d(); // get the newly create Graphics2D + + // get the Graphics2D current matrix + AffineTransform currentTx = g.getTransform(); + // get the AffineTransform from the matrix + AffineTransform matrixTx = matrix.getTransform(); + + // combine them so that the matrix is applied after. + currentTx.preConcatenate(matrixTx); + + // give it to the graphics as a new matrix replacing all previous transform + g.setTransform(currentTx); + } + + // draw the bitmap + drawBitmap(bitmap, 0, 0, paint); + + if (needsRestore) { + // remove the new graphics + restore(); + } } /* (non-Javadoc) @@ -456,39 +539,42 @@ public class BridgeCanvas extends Canvas { int height, boolean hasAlpha, Paint paint) { throw new UnsupportedOperationException(); } - + private void drawBitmap(Bitmap bitmap, int sleft, int stop, int sright, int sbottom, int dleft, int dtop, int dright, int dbottom, Paint paint) { BufferedImage image = bitmap.getImage(); - + Graphics2D g = getGraphics2d(); - + Composite c = null; - - if (paint.isFilterBitmap()) { - g = (Graphics2D)g.create(); - g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, - RenderingHints.VALUE_INTERPOLATION_BILINEAR); - } - - if (paint.getAlpha() != 0xFF) { - c = g.getComposite(); - g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, - paint.getAlpha()/255.f)); + + if (paint != null) { + if (paint.isFilterBitmap()) { + g = (Graphics2D)g.create(); + g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, + RenderingHints.VALUE_INTERPOLATION_BILINEAR); + } + + if (paint.getAlpha() != 0xFF) { + c = g.getComposite(); + g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, + paint.getAlpha()/255.f)); + } } - + g.drawImage(image, dleft, dtop, dright, dbottom, sleft, stop, sright, sbottom, null); - if (paint.isFilterBitmap()) { - g.dispose(); - } - - if (c != null) { - g.setComposite(c); + if (paint != null) { + if (paint.isFilterBitmap()) { + g.dispose(); + } + if (c != null) { + g.setComposite(c); + } } } - + /* (non-Javadoc) * @see android.graphics.Canvas#rotate(float, float, float) */ @@ -509,7 +595,7 @@ public class BridgeCanvas extends Canvas { public void rotate(float degrees) { getGraphics2d().rotate(Math.toRadians(degrees)); } - + /* (non-Javadoc) * @see android.graphics.Canvas#scale(float, float, float, float) */ @@ -528,19 +614,19 @@ public class BridgeCanvas extends Canvas { public void scale(float sx, float sy) { getGraphics2d().scale(sx, sy); } - + /* (non-Javadoc) * @see android.graphics.Canvas#drawText(char[], int, int, float, float, android.graphics.Paint) */ @Override public void drawText(char[] text, int index, int count, float x, float y, Paint paint) { Graphics2D g = getGraphics2d(); - + g = (Graphics2D)g.create(); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - + g.setFont(paint.getFont()); - + // set the color. because this only handles RGB we have to handle the alpha separately g.setColor(new Color(paint.getColor())); int alpha = paint.getAlpha(); @@ -557,9 +643,9 @@ public class BridgeCanvas extends Canvas { x -= m; } } - + g.drawChars(text, index, count, (int)x, (int)y); - + g.dispose(); } @@ -586,7 +672,7 @@ public class BridgeCanvas extends Canvas { public void drawText(String text, int start, int end, float x, float y, Paint paint) { drawText(text.toCharArray(), start, end - start, x, y, paint); } - + /* (non-Javadoc) * @see android.graphics.Canvas#drawRect(android.graphics.RectF, android.graphics.Paint) */ @@ -594,7 +680,7 @@ public class BridgeCanvas extends Canvas { public void drawRect(RectF rect, Paint paint) { doDrawRect((int)rect.left, (int)rect.top, (int)rect.width(), (int)rect.height(), paint); } - + /* (non-Javadoc) * @see android.graphics.Canvas#drawRect(float, float, float, float, android.graphics.Paint) */ @@ -614,11 +700,11 @@ public class BridgeCanvas extends Canvas { private final void doDrawRect(int left, int top, int width, int height, Paint paint) { // get current graphisc Graphics2D g = getGraphics2d(); - + g = getNewGraphics(paint, g); Style style = paint.getStyle(); - + // draw if (style == Style.FILL || style == Style.FILL_AND_STROKE) { g.fillRect(left, top, width, height); @@ -639,16 +725,16 @@ public class BridgeCanvas extends Canvas { public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) { // get current graphisc Graphics2D g = getGraphics2d(); - + g = getNewGraphics(paint, g); Style style = paint.getStyle(); - + // draw - + int arcWidth = (int)(rx * 2); int arcHeight = (int)(ry * 2); - + if (style == Style.FILL || style == Style.FILL_AND_STROKE) { g.fillRoundRect((int)rect.left, (int)rect.top, (int)rect.width(), (int)rect.height(), arcWidth, arcHeight); @@ -671,7 +757,7 @@ public class BridgeCanvas extends Canvas { public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) { // get current graphisc Graphics2D g = getGraphics2d(); - + g = getNewGraphics(paint, g); g.drawLine((int)startX, (int)startY, (int)stopX, (int)stopY); @@ -679,7 +765,7 @@ public class BridgeCanvas extends Canvas { // dispose Graphics2D object g.dispose(); } - + /* (non-Javadoc) * @see android.graphics.Canvas#drawLines(float[], int, int, android.graphics.Paint) */ @@ -687,7 +773,7 @@ public class BridgeCanvas extends Canvas { public void drawLines(float[] pts, int offset, int count, Paint paint) { // get current graphisc Graphics2D g = getGraphics2d(); - + g = getNewGraphics(paint, g); for (int i = 0 ; i < count ; i += 4) { @@ -706,7 +792,7 @@ public class BridgeCanvas extends Canvas { public void drawLines(float[] pts, Paint paint) { drawLines(pts, 0, pts.length, paint); } - + /* (non-Javadoc) * @see android.graphics.Canvas#drawCircle(float, float, float, android.graphics.Paint) */ @@ -714,11 +800,11 @@ public class BridgeCanvas extends Canvas { public void drawCircle(float cx, float cy, float radius, Paint paint) { // get current graphisc Graphics2D g = getGraphics2d(); - + g = getNewGraphics(paint, g); Style style = paint.getStyle(); - + int size = (int)(radius * 2); // draw @@ -741,11 +827,11 @@ public class BridgeCanvas extends Canvas { public void drawOval(RectF oval, Paint paint) { // get current graphics Graphics2D g = getGraphics2d(); - + g = getNewGraphics(paint, g); Style style = paint.getStyle(); - + // draw if (style == Style.FILL || style == Style.FILL_AND_STROKE) { g.fillOval((int)oval.left, (int)oval.top, (int)oval.width(), (int)oval.height()); @@ -758,7 +844,7 @@ public class BridgeCanvas extends Canvas { // dispose Graphics2D object g.dispose(); } - + /* (non-Javadoc) * @see android.graphics.Canvas#drawPath(android.graphics.Path, android.graphics.Paint) */ @@ -766,11 +852,11 @@ public class BridgeCanvas extends Canvas { public void drawPath(Path path, Paint paint) { // get current graphics Graphics2D g = getGraphics2d(); - + g = getNewGraphics(paint, g); Style style = paint.getStyle(); - + // draw if (style == Style.FILL || style == Style.FILL_AND_STROKE) { g.fill(path.getAwtShape()); @@ -783,7 +869,7 @@ public class BridgeCanvas extends Canvas { // dispose Graphics2D object g.dispose(); } - + /* (non-Javadoc) * @see android.graphics.Canvas#setMatrix(android.graphics.Matrix) */ @@ -795,10 +881,10 @@ public class BridgeCanvas extends Canvas { // get the new current graphics Graphics2D g = getGraphics2d(); - + // and apply the matrix g.setTransform(matrix.getTransform()); - + if (mLogger != null && matrix.hasPerspective()) { mLogger.warning("android.graphics.Canvas#setMatrix(android.graphics.Matrix) only supports affine transformations in the Layout Editor."); } @@ -1059,15 +1145,6 @@ public class BridgeCanvas extends Canvas { } /* (non-Javadoc) - * @see android.graphics.Canvas#setBitmap(android.graphics.Bitmap) - */ - @Override - public void setBitmap(Bitmap bitmap) { - // TODO Auto-generated method stub - super.setBitmap(bitmap); - } - - /* (non-Javadoc) * @see android.graphics.Canvas#setDrawFilter(android.graphics.DrawFilter) */ @Override diff --git a/tools/layoutlib/bridge/src/android/graphics/Matrix.java b/tools/layoutlib/bridge/src/android/graphics/Matrix.java index 18c0e17..3974e08 100644 --- a/tools/layoutlib/bridge/src/android/graphics/Matrix.java +++ b/tools/layoutlib/bridge/src/android/graphics/Matrix.java @@ -17,6 +17,7 @@ package android.graphics; import java.awt.geom.AffineTransform; +import java.awt.geom.NoninvertibleTransformException; /** @@ -747,7 +748,24 @@ public class Matrix extends _Original_Matrix { * inverted, ignore inverse and return false. */ public boolean invert(Matrix inverse) { - throw new UnsupportedOperationException("STUB NEEDED"); + if (inverse == null) { + return false; + } + + try { + AffineTransform affineTransform = getTransform(); + AffineTransform inverseTransform = affineTransform.createInverse(); + inverse.mValues[0] = (float)inverseTransform.getScaleX(); + inverse.mValues[1] = (float)inverseTransform.getShearX(); + inverse.mValues[2] = (float)inverseTransform.getTranslateX(); + inverse.mValues[3] = (float)inverseTransform.getScaleX(); + inverse.mValues[4] = (float)inverseTransform.getShearY(); + inverse.mValues[5] = (float)inverseTransform.getTranslateY(); + + return true; + } catch (NoninvertibleTransformException e) { + return false; + } } @Override @@ -770,7 +788,19 @@ public class Matrix extends _Original_Matrix { public void mapPoints(float[] dst, int dstIndex, float[] src, int srcIndex, int pointCount) { checkPointArrays(src, srcIndex, dst, dstIndex, pointCount); - throw new UnsupportedOperationException("STUB NEEDED"); + + for (int i = 0 ; i < pointCount ; i++) { + // just in case we are doing in place, we better put this in temp vars + float x = mValues[0] * src[i + srcIndex] + + mValues[1] * src[i + srcIndex + 1] + + mValues[2]; + float y = mValues[3] * src[i + srcIndex] + + mValues[4] * src[i + srcIndex + 1] + + mValues[5]; + + dst[i + dstIndex] = x; + dst[i + dstIndex + 1] = y; + } } /** @@ -858,7 +888,26 @@ public class Matrix extends _Original_Matrix { if (dst == null || src == null) { throw new NullPointerException(); } - throw new UnsupportedOperationException("STUB NEEDED"); + + // array with 4 corners + float[] corners = new float[] { + src.left, src.top, + src.right, src.top, + src.right, src.bottom, + src.left, src.bottom, + }; + + // apply the transform to them. + mapPoints(corners); + + // now put the result in the rect. We take the min/max of Xs and min/max of Ys + dst.left = Math.min(Math.min(corners[0], corners[2]), Math.min(corners[4], corners[6])); + dst.right = Math.max(Math.max(corners[0], corners[2]), Math.max(corners[4], corners[6])); + + dst.top = Math.min(Math.min(corners[1], corners[3]), Math.min(corners[5], corners[7])); + dst.bottom = Math.max(Math.max(corners[1], corners[3]), Math.max(corners[5], corners[7])); + + return rectStaysRect(); } /** diff --git a/tools/layoutlib/bridge/src/android/os/ServiceManager.java b/tools/layoutlib/bridge/src/android/os/ServiceManager.java new file mode 100644 index 0000000..6a68ee2 --- /dev/null +++ b/tools/layoutlib/bridge/src/android/os/ServiceManager.java @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2009 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 android.os; + +import java.util.Map; + +public final class ServiceManager { + + /** + * Returns a reference to a service with the given name. + * + * @param name the name of the service to get + * @return a reference to the service, or <code>null</code> if the service doesn't exist + */ + public static IBinder getService(String name) { + return null; + } + + /** + * Place a new @a service called @a name into the service + * manager. + * + * @param name the name of the new service + * @param service the service object + */ + public static void addService(String name, IBinder service) { + // pass + } + + /** + * Retrieve an existing service called @a name from the + * service manager. Non-blocking. + */ + public static IBinder checkService(String name) { + return null; + } + + /** + * Return a list of all currently running services. + */ + public static String[] listServices() throws RemoteException { + // actual implementation returns null sometimes, so it's ok + // to return null instead of an empty list. + return null; + } + + /** + * This is only intended to be called when the process is first being brought + * up and bound by the activity manager. There is only one thread in the process + * at that time, so no locking is done. + * + * @param cache the cache of service references + * @hide + */ + public static void initServiceCache(Map<String, IBinder> cache) { + // pass + } +} diff --git a/tools/layoutlib/bridge/src/android/view/accessibility/AccessibilityManager.java b/tools/layoutlib/bridge/src/android/view/accessibility/AccessibilityManager.java new file mode 100644 index 0000000..251c053 --- /dev/null +++ b/tools/layoutlib/bridge/src/android/view/accessibility/AccessibilityManager.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2009 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 android.view.accessibility; + +import android.content.Context; +import android.content.pm.ServiceInfo; + +import java.util.Collections; +import java.util.List; + +/** + * System level service that serves as an event dispatch for {@link AccessibilityEvent}s. + * Such events are generated when something notable happens in the user interface, + * for example an {@link android.app.Activity} starts, the focus or selection of a + * {@link android.view.View} changes etc. Parties interested in handling accessibility + * events implement and register an accessibility service which extends + * {@link android.accessibilityservice.AccessibilityService}. + * + * @see AccessibilityEvent + * @see android.accessibilityservice.AccessibilityService + * @see android.content.Context#getSystemService + */ +public final class AccessibilityManager { + private static AccessibilityManager sInstance = new AccessibilityManager(); + + /** + * Get an AccessibilityManager instance (create one if necessary). + * + * @hide + */ + public static AccessibilityManager getInstance(Context context) { + return sInstance; + } + + /** + * Create an instance. + * + * @param context A {@link Context}. + */ + private AccessibilityManager() { + } + + /** + * Returns if the {@link AccessibilityManager} is enabled. + * + * @return True if this {@link AccessibilityManager} is enabled, false otherwise. + */ + public boolean isEnabled() { + return false; + } + + /** + * Sends an {@link AccessibilityEvent}. If this {@link AccessibilityManager} is not + * enabled the call is a NOOP. + * + * @param event The {@link AccessibilityEvent}. + * + * @throws IllegalStateException if a client tries to send an {@link AccessibilityEvent} + * while accessibility is not enabled. + */ + public void sendAccessibilityEvent(AccessibilityEvent event) { + } + + /** + * Requests interruption of the accessibility feedback from all accessibility services. + */ + public void interrupt() { + } + + /** + * Returns the {@link ServiceInfo}s of the installed accessibility services. + * + * @return An unmodifiable list with {@link ServiceInfo}s. + */ + public List<ServiceInfo> getAccessibilityServiceList() { + // normal implementation does this in some case, so let's do the same + // (unmodifiableList wrapped around null). + List<ServiceInfo> services = null; + return Collections.unmodifiableList(services); + } +} diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java index fd77d51..145a045 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java @@ -31,6 +31,7 @@ import com.android.tools.layoutlib.create.MethodAdapter; import com.android.tools.layoutlib.create.OverrideMethod; import android.graphics.Bitmap; +import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.Region; import android.graphics.Typeface; @@ -358,7 +359,7 @@ public final class Bridge implements ILayoutBridge { windowBackground = context.findItemInStyle(currentTheme, "windowBackground"); windowBackground = context.resolveResValue(windowBackground); - screenOffset = getScreenOffset(currentTheme, context); + screenOffset = getScreenOffset(frameworkResources, currentTheme, context); } // we need to make sure the Looper has been initialized for this thread. @@ -401,8 +402,7 @@ public final class Bridge implements ILayoutBridge { view.layout(0, screenOffset, screenWidth, screenHeight); // draw them - BridgeCanvas canvas = new BridgeCanvas(screenWidth, screenHeight - screenOffset, - logger); + Canvas canvas = new Canvas(screenWidth, screenHeight - screenOffset, logger); root.draw(canvas); canvas.dispose(); @@ -673,9 +673,13 @@ public final class Bridge implements ILayoutBridge { /** * Returns the top screen offset. This depends on whether the current theme defines the user * of the title and status bars. + * @param frameworkResources The framework resources + * @param currentTheme The current theme + * @param context The context * @return the pixel height offset */ - private int getScreenOffset(IStyleResourceValue currentTheme, BridgeContext context) { + private int getScreenOffset(Map<String, Map<String, IResourceValue>> frameworkResources, + IStyleResourceValue currentTheme, BridgeContext context) { int offset = 0; // get the title bar flag from the current theme. @@ -687,22 +691,25 @@ public final class Bridge implements ILayoutBridge { // if there's a value and it's true (default is false) if (value == null || value.getValue() == null || XmlUtils.convertValueToBoolean(value.getValue(), false /* defValue */) == false) { + // default size of the window title bar + int defaultOffset = DEFAULT_TITLE_BAR_HEIGHT; + // get value from the theme. value = context.findItemInStyle(currentTheme, "windowTitleSize"); // resolve it value = context.resolveResValue(value); - // default value - offset = DEFAULT_TITLE_BAR_HEIGHT; - - // get the real value; if (value != null) { + // get the numerical value, if available TypedValue typedValue = ResourceHelper.getValue(value.getValue()); if (typedValue != null) { - offset = (int)typedValue.getDimension(context.getResources().mMetrics); + // compute the pixel value based on the display metrics + defaultOffset = (int)typedValue.getDimension(context.getResources().mMetrics); } } + + offset += defaultOffset; } // get the fullscreen flag from the current theme. @@ -713,8 +720,25 @@ public final class Bridge implements ILayoutBridge { if (value == null || value.getValue() == null || XmlUtils.convertValueToBoolean(value.getValue(), false /* defValue */) == false) { - // FIXME: Right now this is hard-coded in the platform, but once there's a constant, we'll need to use it. - offset += DEFAULT_STATUS_BAR_HEIGHT; + + // default value + int defaultOffset = DEFAULT_STATUS_BAR_HEIGHT; + + // get the real value, first the list of Dimensions from the framework map + Map<String, IResourceValue> dimens = frameworkResources.get(BridgeConstants.RES_DIMEN); + + // now get the value + value = dimens.get("status_bar_height"); + if (value != null) { + TypedValue typedValue = ResourceHelper.getValue(value.getValue()); + if (typedValue != null) { + // compute the pixel value based on the display metrics + defaultOffset = (int)typedValue.getDimension(context.getResources().mMetrics); + } + } + + // add the computed offset. + offset += defaultOffset; } return offset; diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeConstants.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeConstants.java index b426247..b5b7ceb 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeConstants.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeConstants.java @@ -45,11 +45,12 @@ public class BridgeConstants { public final static String PREFIX_RESOURCE_REF = "@"; public final static String PREFIX_ANDROID_THEME_REF = "?android:"; public final static String PREFIX_THEME_REF = "?"; - + public final static String PREFIX_ANDROID = "android:"; - + public final static String RES_STYLE = "style"; public final static String RES_ATTR = "attr"; + public final static String RES_DIMEN = "dimen"; public final static String RES_DRAWABLE = "drawable"; public final static String RES_COLOR = "color"; public final static String RES_LAYOUT = "layout"; diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeContext.java index 69f3d9c..f48c8db 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeContext.java @@ -64,7 +64,7 @@ import java.util.Map.Entry; * Custom implementation of Context to handle non compiled resources. */ public final class BridgeContext extends Context { - + private Resources mResources; private Theme mTheme; private HashMap<View, Object> mViewKeyMap = new HashMap<View, Object>(); @@ -73,12 +73,12 @@ public final class BridgeContext extends Context { private Map<String, Map<String, IResourceValue>> mProjectResources; private Map<String, Map<String, IResourceValue>> mFrameworkResources; private Map<IStyleResourceValue, IStyleResourceValue> mStyleInheritanceMap; - + // maps for dynamically generated id representing style objects (IStyleResourceValue) private Map<Integer, IStyleResourceValue> mDynamicIdToStyleMap; private Map<IStyleResourceValue, Integer> mStyleToDynamicIdMap; private int mDynamicIdGenerator = 0x01030000; // Base id for framework R.style - + // cache for TypedArray generated from IStyleResourceValue object private Map<int[], Map<Integer, TypedArray>> mTypedArrayCache; private BridgeInflater mInflater; @@ -112,7 +112,7 @@ public final class BridgeContext extends Context { mProjectCallback = customViewLoader; mLogger = logger; Configuration config = new Configuration(); - + AssetManager assetManager = BridgeAssetManager.initSystem(); mResources = BridgeResources.initSystem( this, @@ -120,19 +120,19 @@ public final class BridgeContext extends Context { metrics, config, customViewLoader); - + mTheme = mResources.newTheme(); - + mThemeValues = currentTheme; mProjectResources = projectResources; mFrameworkResources = frameworkResources; mStyleInheritanceMap = styleInheritanceMap; } - + public void setBridgeInflater(BridgeInflater inflater) { mInflater = inflater; } - + public void addViewKey(View view, Object viewKey) { mViewKeyMap.put(view, viewKey); } @@ -140,19 +140,19 @@ public final class BridgeContext extends Context { public Object getViewKey(View view) { return mViewKeyMap.get(view); } - + public Object getProjectKey() { return mProjectKey; } - + public IProjectCallback getProjectCallback() { return mProjectCallback; } - + public ILayoutLog getLogger() { return mLogger; } - + // ------------ Context methods @Override @@ -169,14 +169,14 @@ public final class BridgeContext extends Context { public ClassLoader getClassLoader() { return this.getClass().getClassLoader(); } - + @Override public Object getSystemService(String service) { if (LAYOUT_INFLATER_SERVICE.equals(service)) { return mInflater; } - - // AutoCompleteTextView and MultiAutoCompleteTextView want a window + + // AutoCompleteTextView and MultiAutoCompleteTextView want a window // service. We don't have any but it's not worth an exception. if (WINDOW_SERVICE.equals(service)) { return null; @@ -196,38 +196,38 @@ public final class BridgeContext extends Context { throws Resources.NotFoundException { // get the IStyleResourceValue based on the resId; IStyleResourceValue style = getStyleByDynamicId(resid); - + if (style == null) { throw new Resources.NotFoundException(); } if (mTypedArrayCache == null) { mTypedArrayCache = new HashMap<int[], Map<Integer,TypedArray>>(); - + Map<Integer, TypedArray> map = new HashMap<Integer, TypedArray>(); mTypedArrayCache.put(attrs, map); BridgeTypedArray ta = createStyleBasedTypedArray(style, attrs); map.put(resid, ta); - + return ta; } - + // get the 2nd map Map<Integer, TypedArray> map = mTypedArrayCache.get(attrs); if (map == null) { map = new HashMap<Integer, TypedArray>(); mTypedArrayCache.put(attrs, map); } - + // get the array from the 2nd map TypedArray ta = map.get(resid); - + if (ta == null) { ta = createStyleBasedTypedArray(style, attrs); map.put(resid, ta); } - + return ta; } @@ -235,11 +235,11 @@ public final class BridgeContext extends Context { public final TypedArray obtainStyledAttributes(AttributeSet set, int[] attrs) { return obtainStyledAttributes(set, attrs, 0, 0); } - + @Override public TypedArray obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes) { - + // Hint: for XmlPullParser, attach source //DEVICE_SRC/dalvik/libcore/xml/src/java BridgeXmlBlockParser parser = null; if (set instanceof BridgeXmlBlockParser) { @@ -252,10 +252,10 @@ public final class BridgeContext extends Context { boolean[] frameworkAttributes = new boolean[1]; TreeMap<Integer, String> styleNameMap = searchAttrs(attrs, frameworkAttributes); - + BridgeTypedArray ta = ((BridgeResources) mResources).newTypeArray(attrs.length, parser.isPlatformFile()); - + // resolve the defStyleAttr value into a IStyleResourceValue IStyleResourceValue defStyleValues = null; if (defStyleAttr != 0) { @@ -265,7 +265,7 @@ public final class BridgeContext extends Context { // look for the style in the current theme, and its parent: if (mThemeValues != null) { IResourceValue item = findItemInStyle(mThemeValues, defStyleName); - + if (item != null) { // item is a reference to a style entry. Search for it. item = findResValue(item.getValue()); @@ -279,12 +279,12 @@ public final class BridgeContext extends Context { } } } - + if (defStyleRes != 0) { // FIXME: See what we need to do with this. throw new UnsupportedOperationException(); } - + String namespace = BridgeConstants.NS_RESOURCES; if (frameworkAttributes[0] == false) { // need to use the application namespace @@ -294,32 +294,32 @@ public final class BridgeContext extends Context { if (styleNameMap != null) { for (Entry<Integer, String> styleAttribute : styleNameMap.entrySet()) { int index = styleAttribute.getKey().intValue(); - + String name = styleAttribute.getValue(); String value = parser.getAttributeValue(namespace, name); - + // if there's no direct value for this attribute in the XML, we look for default // values in the widget defStyle, and then in the theme. if (value == null) { IResourceValue resValue = null; - + // look for the value in the defStyle first (and its parent if needed) if (defStyleValues != null) { resValue = findItemInStyle(defStyleValues, name); } - + // if the item is not present in the defStyle, we look in the main theme (and // its parent themes) if (resValue == null && mThemeValues != null) { resValue = findItemInStyle(mThemeValues, name); } - + // if we found a value, we make sure this doesn't reference another value. // So we resolve it. if (resValue != null) { resValue = resolveResValue(resValue); } - + ta.bridgeSetValue(index, name, resValue); } else { // there is a value in the XML, but we need to resolve it in case it's @@ -328,15 +328,20 @@ public final class BridgeContext extends Context { } } } - + ta.sealArray(); - + return ta; } - - + + @Override + public Looper getMainLooper() { + return Looper.myLooper(); + } + + // ------------- private new methods - + /** * Creates a {@link BridgeTypedArray} by filling the values defined by the int[] with the * values found in the given style. @@ -345,30 +350,30 @@ public final class BridgeContext extends Context { private BridgeTypedArray createStyleBasedTypedArray(IStyleResourceValue style, int[] attrs) throws Resources.NotFoundException { TreeMap<Integer, String> styleNameMap = searchAttrs(attrs, null); - + BridgeTypedArray ta = ((BridgeResources) mResources).newTypeArray(attrs.length, false /* platformResourceFlag */); - + // loop through all the values in the style map, and init the TypedArray with // the style we got from the dynamic id for (Entry<Integer, String> styleAttribute : styleNameMap.entrySet()) { int index = styleAttribute.getKey().intValue(); String name = styleAttribute.getValue(); - + // get the value from the style, or its parent styles. IResourceValue resValue = findItemInStyle(style, name); - + // resolve it to make sure there are no references left. ta.bridgeSetValue(index, name, resolveResValue(resValue)); } - + ta.sealArray(); return ta; } - + /** * Resolves the value of a resource, if the value references a theme or resource value. * <p/> @@ -391,13 +396,13 @@ public final class BridgeContext extends Context { // get the IResourceValue referenced by this value IResourceValue resValue = findResValue(value); - + // if resValue is null, but value is not null, this means it was not a reference. // we return the name/value wrapper in a IResourceValue if (resValue == null) { return new ResourceValue(type, name, value); } - + // we resolved a first reference, but we need to make sure this isn't a reference also. return resolveResValue(resValue); } @@ -411,7 +416,7 @@ public final class BridgeContext extends Context { * <p/> * If a value that does not need to be resolved is given, the method will return the input * value. - * + * * @param value the value containing the reference to resolve. * @return a {@link IResourceValue} object or <code>null</code> */ @@ -419,7 +424,7 @@ public final class BridgeContext extends Context { if (value == null) { return null; } - + // if the resource value is a style, we simply return it. if (value instanceof IStyleResourceValue) { return value; @@ -436,7 +441,7 @@ public final class BridgeContext extends Context { // otherwise, we attempt to resolve this new value as well return resolveResValue(resolvedValue); } - + /** * Searches for, and returns a {@link IResourceValue} by its reference. * <p/> @@ -451,7 +456,7 @@ public final class BridgeContext extends Context { * <p/> * The actual format of a reference is <pre>@[namespace:]resType/resName</pre> but this method * only support the android namespace. - * + * * @param reference the resource reference to search for. * @return a {@link IResourceValue} or <code>null</code>. */ @@ -481,7 +486,7 @@ public final class BridgeContext extends Context { // we look for the referenced item name. String referenceName = null; - + if (segments.length == 2) { // there was a resType in the reference. If it's attr, we ignore it // else, we assert for now. @@ -495,7 +500,7 @@ public final class BridgeContext extends Context { // it's just an item name. referenceName = segments[0]; } - + // now we look for android: in the referenceName in order to support format // such as: ?attr/android:name if (referenceName.startsWith(BridgeConstants.PREFIX_ANDROID)) { @@ -512,9 +517,9 @@ public final class BridgeContext extends Context { return findItemInStyle(mThemeValues, referenceName); } else if (reference.startsWith(BridgeConstants.PREFIX_RESOURCE_REF)) { boolean frameworkOnly = false; - + // check for the specific null reference value. - if (BridgeConstants.REFERENCE_NULL.equals(reference)) { + if (BridgeConstants.REFERENCE_NULL.equals(reference)) { return null; } @@ -526,20 +531,20 @@ public final class BridgeContext extends Context { } else { reference = reference.substring(BridgeConstants.PREFIX_RESOURCE_REF.length()); } - + // at this point, value contains type/[android:]name (drawable/foo for instance) String[] segments = reference.split("\\/"); - + // now we look for android: in the resource name in order to support format // such as: @drawable/android:name if (segments[1].startsWith(BridgeConstants.PREFIX_ANDROID)) { frameworkOnly = true; segments[1] = segments[1].substring(BridgeConstants.PREFIX_ANDROID.length()); } - + return findResValue(segments[0], segments[1], frameworkOnly); } - + // Looks like the value didn't reference anything. Return null. return null; } @@ -565,7 +570,7 @@ public final class BridgeContext extends Context { } } } - + // now search in the framework resources. typeMap = mFrameworkResources.get(resType); if (typeMap != null) { @@ -574,11 +579,11 @@ public final class BridgeContext extends Context { return item; } } - + // didn't find the resource anywhere. return null; } - + /** * Returns a framework resource by type and name. The returned resource is resolved. * @param resourceType the type of the resource @@ -587,7 +592,7 @@ public final class BridgeContext extends Context { public IResourceValue getFrameworkResource(String resourceType, String resourceName) { return getResource(resourceType, resourceName, mFrameworkResources); } - + /** * Returns a project resource by type and name. The returned resource is resolved. * @param resourceType the type of the resource @@ -596,7 +601,7 @@ public final class BridgeContext extends Context { public IResourceValue getProjectResource(String resourceType, String resourceName) { return getResource(resourceType, resourceName, mProjectResources); } - + IResourceValue getResource(String resourceType, String resourceName, Map<String, Map<String, IResourceValue>> resourceRepository) { Map<String, IResourceValue> typeMap = resourceRepository.get(resourceType); @@ -607,12 +612,12 @@ public final class BridgeContext extends Context { return item; } } - + // didn't find the resource anywhere. return null; - + } - + /** * Returns the {@link IResourceValue} matching a given name in a given style. If the * item is not directly available in the style, the method looks in its parent style. @@ -622,7 +627,7 @@ public final class BridgeContext extends Context { */ IResourceValue findItemInStyle(IStyleResourceValue style, String itemName) { IResourceValue item = style.findItem(itemName); - + // if we didn't find it, we look in the parent style (if applicable) if (item == null && mStyleInheritanceMap != null) { IStyleResourceValue parentStyle = mStyleInheritanceMap.get(style); @@ -630,7 +635,7 @@ public final class BridgeContext extends Context { return findItemInStyle(parentStyle, itemName); } } - + return item; } @@ -642,7 +647,7 @@ public final class BridgeContext extends Context { * attrs == com.android.internal.R.styleable.View, this returns the list of the "xyz" where * there's a field com.android.internal.R.styleable.View_xyz and the field value is the index * that is used to reference the attribute later in the TypedArray. - * + * * @param attrs An attribute array reference given to obtainStyledAttributes. * @return A sorted map Attribute-Value to Attribute-Name for all attributes declared by the * attribute array. Returns null if nothing is found. @@ -662,14 +667,14 @@ public final class BridgeContext extends Context { attributes.put(i, null); } } - + if (outFrameworkFlag != null) { outFrameworkFlag[0] = true; } - + return attributes; } - + // if the name was not found in the framework resources, look in the project // resources arrayName = mProjectCallback.resolveResourceValue(attrs); @@ -697,7 +702,7 @@ public final class BridgeContext extends Context { /** * Searches for the attribute referenced by its internal id. - * + * * @param attr An attribute reference given to obtainStyledAttributes such as defStyle. * @return The unique name of the attribute, if found, e.g. "buttonStyle". Returns null * if nothing is found. @@ -707,12 +712,12 @@ public final class BridgeContext extends Context { if (info != null) { return info[0]; } - + info = mProjectCallback.resolveResourceValue(attr); if (info != null) { return info[0]; } - + return null; } @@ -722,27 +727,27 @@ public final class BridgeContext extends Context { mDynamicIdToStyleMap = new HashMap<Integer, IStyleResourceValue>(); mStyleToDynamicIdMap = new HashMap<IStyleResourceValue, Integer>(); } - + // look for an existing id Integer id = mStyleToDynamicIdMap.get(resValue); - + if (id == null) { // generate a new id id = Integer.valueOf(++mDynamicIdGenerator); - + // and add it to the maps. mDynamicIdToStyleMap.put(id, resValue); mStyleToDynamicIdMap.put(resValue, id); } - + return id; } - + private IStyleResourceValue getStyleByDynamicId(int i) { if (mDynamicIdToStyleMap != null) { return mDynamicIdToStyleMap.get(i); } - + return null; } @@ -751,10 +756,10 @@ public final class BridgeContext extends Context { if (value != null) { return value.intValue(); } - + return defValue; } - + int getProjectIdValue(String idName, int defValue) { if (mProjectCallback != null) { Integer value = mProjectCallback.getResourceValue(BridgeConstants.RES_ID, idName); @@ -762,7 +767,7 @@ public final class BridgeContext extends Context { return value.intValue(); } } - + return defValue; } @@ -820,7 +825,7 @@ public final class BridgeContext extends Context { @Override public void clearWallpaper() { // TODO Auto-generated method stub - + } @Override @@ -850,46 +855,46 @@ public final class BridgeContext extends Context { @Override public void enforceCallingOrSelfPermission(String arg0, String arg1) { // TODO Auto-generated method stub - + } @Override public void enforceCallingOrSelfUriPermission(Uri arg0, int arg1, String arg2) { // TODO Auto-generated method stub - + } @Override public void enforceCallingPermission(String arg0, String arg1) { // TODO Auto-generated method stub - + } @Override public void enforceCallingUriPermission(Uri arg0, int arg1, String arg2) { // TODO Auto-generated method stub - + } @Override public void enforcePermission(String arg0, int arg1, int arg2, String arg3) { // TODO Auto-generated method stub - + } @Override public void enforceUriPermission(Uri arg0, int arg1, int arg2, int arg3, String arg4) { // TODO Auto-generated method stub - + } @Override public void enforceUriPermission(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5, String arg6) { // TODO Auto-generated method stub - + } @Override @@ -965,7 +970,7 @@ public final class BridgeContext extends Context { // TODO Auto-generated method stub return null; } - + @Override public String getPackageResourcePath() { // TODO Auto-generated method stub @@ -1003,7 +1008,7 @@ public final class BridgeContext extends Context { @Override public void grantUriPermission(String arg0, Uri arg1, int arg2) { // TODO Auto-generated method stub - + } @SuppressWarnings("unused") @@ -1051,31 +1056,31 @@ public final class BridgeContext extends Context { @Override public void removeStickyBroadcast(Intent arg0) { // TODO Auto-generated method stub - + } @Override public void revokeUriPermission(Uri arg0, int arg1) { // TODO Auto-generated method stub - + } @Override public void sendBroadcast(Intent arg0) { // TODO Auto-generated method stub - + } @Override public void sendBroadcast(Intent arg0, String arg1) { // TODO Auto-generated method stub - + } @Override public void sendOrderedBroadcast(Intent arg0, String arg1) { // TODO Auto-generated method stub - + } @Override @@ -1083,39 +1088,39 @@ public final class BridgeContext extends Context { BroadcastReceiver arg2, Handler arg3, int arg4, String arg5, Bundle arg6) { // TODO Auto-generated method stub - + } @Override public void sendStickyBroadcast(Intent arg0) { // TODO Auto-generated method stub - + } @Override public void setTheme(int arg0) { // TODO Auto-generated method stub - + } @SuppressWarnings("unused") @Override public void setWallpaper(Bitmap arg0) throws IOException { // TODO Auto-generated method stub - + } @SuppressWarnings("unused") @Override public void setWallpaper(InputStream arg0) throws IOException { // TODO Auto-generated method stub - + } @Override public void startActivity(Intent arg0) { // TODO Auto-generated method stub - + } @Override @@ -1140,20 +1145,15 @@ public final class BridgeContext extends Context { @Override public void unbindService(ServiceConnection arg0) { // TODO Auto-generated method stub - + } @Override public void unregisterReceiver(BroadcastReceiver arg0) { // TODO Auto-generated method stub - - } - @Override - public Looper getMainLooper() { - throw new UnsupportedOperationException(); } - + @Override public Context getApplicationContext() { throw new UnsupportedOperationException(); diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeResources.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeResources.java index 0bcc7fd..2b0100b 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeResources.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeResources.java @@ -43,14 +43,14 @@ import java.io.FileReader; import java.io.InputStream; /** - * + * */ public final class BridgeResources extends Resources { private BridgeContext mContext; private IProjectCallback mProjectCallback; private boolean[] mPlatformResourceFlag = new boolean[1]; - + /** * This initializes the static field {@link Resources#mSystem} which is used * by methods who get global resources using {@link Resources#getSystem()}. @@ -59,7 +59,7 @@ public final class BridgeResources extends Resources { * <p/> * {@link Bridge} calls this method after setting up a new bridge. */ - /*package*/ static Resources initSystem(BridgeContext context, + /*package*/ static Resources initSystem(BridgeContext context, AssetManager assets, DisplayMetrics metrics, Configuration config, @@ -73,7 +73,7 @@ public final class BridgeResources extends Resources { } return Resources.mSystem; } - + /** * Clears the static {@link Resources#mSystem} to make sure we don't leave objects * around that would prevent us from unloading the library. @@ -92,15 +92,15 @@ public final class BridgeResources extends Resources { mContext = context; mProjectCallback = projectCallback; } - + public BridgeTypedArray newTypeArray(int numEntries, boolean platformFile) { return new BridgeTypedArray(this, mContext, numEntries, platformFile); } - + private IResourceValue getResourceValue(int id, boolean[] platformResFlag_out) { // first get the String related to this id in the framework String[] resourceInfo = Bridge.resolveResourceValue(id); - + if (resourceInfo != null) { platformResFlag_out[0] = true; return mContext.getFrameworkResource(resourceInfo[1], resourceInfo[0]); @@ -109,7 +109,7 @@ public final class BridgeResources extends Resources { // didn't find a match in the framework? look in the project. if (mProjectCallback != null) { resourceInfo = mProjectCallback.resolveResourceValue(id); - + if (resourceInfo != null) { platformResFlag_out[0] = false; return mContext.getProjectResource(resourceInfo[1], resourceInfo[0]); @@ -118,26 +118,26 @@ public final class BridgeResources extends Resources { return null; } - + @Override public Drawable getDrawable(int id) throws NotFoundException { IResourceValue value = getResourceValue(id, mPlatformResourceFlag); - + if (value != null) { return ResourceHelper.getDrawable(value.getValue(), mContext, value.isFramework()); } - + // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return null; } - + @Override public int getColor(int id) throws NotFoundException { IResourceValue value = getResourceValue(id, mPlatformResourceFlag); - + if (value != null) { try { return ResourceHelper.getColor(value.getValue()); @@ -145,18 +145,18 @@ public final class BridgeResources extends Resources { return 0; } } - + // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return 0; } - + @Override public ColorStateList getColorStateList(int id) throws NotFoundException { IResourceValue value = getResourceValue(id, mPlatformResourceFlag); - + if (value != null) { try { int color = ResourceHelper.getColor(value.getValue()); @@ -165,33 +165,33 @@ public final class BridgeResources extends Resources { return null; } } - + // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return null; } - + @Override public CharSequence getText(int id) throws NotFoundException { IResourceValue value = getResourceValue(id, mPlatformResourceFlag); - + if (value != null) { return value.getValue(); } - + // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return null; } - + @Override public XmlResourceParser getLayout(int id) throws NotFoundException { IResourceValue value = getResourceValue(id, mPlatformResourceFlag); - + if (value != null) { File xml = new File(value.getValue()); if (xml.isFile()) { @@ -201,7 +201,7 @@ public final class BridgeResources extends Resources { KXmlParser parser = new KXmlParser(); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); parser.setInput(new FileReader(xml)); - + return new BridgeXmlBlockParser(parser, mContext, mPlatformResourceFlag[0]); } catch (XmlPullParserException e) { mContext.getLogger().error(e); @@ -215,22 +215,22 @@ public final class BridgeResources extends Resources { // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return null; } - + @Override public TypedArray obtainAttributes(AttributeSet set, int[] attrs) { return mContext.obtainStyledAttributes(set, attrs); } - + @Override public TypedArray obtainTypedArray(int id) throws NotFoundException { throw new UnsupportedOperationException(); } - - + + @Override public float getDimension(int id) throws NotFoundException { IResourceValue value = getResourceValue(id, mPlatformResourceFlag); @@ -244,7 +244,7 @@ public final class BridgeResources extends Resources { } else if (v.equals(BridgeConstants.WRAP_CONTENT)) { return LayoutParams.WRAP_CONTENT; } - + if (ResourceHelper.stringToFloat(v, mTmpValue) && mTmpValue.type == TypedValue.TYPE_DIMENSION) { return mTmpValue.getDimension(mMetrics); @@ -254,7 +254,7 @@ public final class BridgeResources extends Resources { // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return 0; } @@ -276,7 +276,7 @@ public final class BridgeResources extends Resources { // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return 0; } @@ -298,7 +298,7 @@ public final class BridgeResources extends Resources { // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return 0; } @@ -306,7 +306,7 @@ public final class BridgeResources extends Resources { @Override public int getInteger(int id) throws NotFoundException { IResourceValue value = getResourceValue(id, mPlatformResourceFlag); - + if (value != null && value.getValue() != null) { String v = value.getValue(); int radix = 10; @@ -320,10 +320,10 @@ public final class BridgeResources extends Resources { // return exception below } } - + // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return 0; } @@ -348,12 +348,12 @@ public final class BridgeResources extends Resources { String s = getString(id); if (s != null) { return String.format(s, formatArgs); - + } // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return null; } @@ -361,14 +361,14 @@ public final class BridgeResources extends Resources { @Override public String getString(int id) throws NotFoundException { IResourceValue value = getResourceValue(id, mPlatformResourceFlag); - + if (value != null && value.getValue() != null) { return value.getValue(); } // id was not found or not resolved. Throw a NotFoundException. throwException(id); - + // this is not used since the method above always throws return null; } @@ -385,6 +385,11 @@ public final class BridgeResources extends Resources { if (ResourceHelper.stringToFloat(v, outValue)) { return; } + + // else it's a string + outValue.type = TypedValue.TYPE_STRING; + outValue.string = v; + return; } } @@ -413,7 +418,7 @@ public final class BridgeResources extends Resources { KXmlParser parser = new KXmlParser(); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); parser.setInput(new FileReader(f)); - + return new BridgeXmlBlockParser(parser, mContext, mPlatformResourceFlag[0]); } catch (XmlPullParserException e) { NotFoundException newE = new NotFoundException(); @@ -436,6 +441,33 @@ public final class BridgeResources extends Resources { } @Override + public XmlResourceParser loadXmlResourceParser(String file, int id, + int assetCookie, String type) throws NotFoundException { + // even though we know the XML file to load directly, we still need to resolve the + // id so that we can know if it's a platform or project resource. + // (mPlatformResouceFlag will get the result and will be used later). + getResourceValue(id, mPlatformResourceFlag); + + File f = new File(file); + try { + KXmlParser parser = new KXmlParser(); + parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); + parser.setInput(new FileReader(f)); + + return new BridgeXmlBlockParser(parser, mContext, mPlatformResourceFlag[0]); + } catch (XmlPullParserException e) { + NotFoundException newE = new NotFoundException(); + newE.initCause(e); + throw newE; + } catch (FileNotFoundException e) { + NotFoundException newE = new NotFoundException(); + newE.initCause(e); + throw newE; + } + } + + + @Override public InputStream openRawResource(int id) throws NotFoundException { IResourceValue value = getResourceValue(id, mPlatformResourceFlag); @@ -465,6 +497,24 @@ public final class BridgeResources extends Resources { } @Override + public InputStream openRawResource(int id, TypedValue value) throws NotFoundException { + getValue(id, value, true); + + File f = new File(value.string.toString()); + if (f.isFile()) { + try { + return new FileInputStream(f); + } catch (FileNotFoundException e) { + NotFoundException exception = new NotFoundException(); + exception.initCause(e); + throw exception; + } + } + + throw new NotFoundException(); + } + + @Override public AssetFileDescriptor openRawResourceFd(int id) throws NotFoundException { throw new UnsupportedOperationException(); } @@ -482,7 +532,7 @@ public final class BridgeResources extends Resources { if (resourceInfo == null && mProjectCallback != null) { resourceInfo = mProjectCallback.resolveResourceValue(id); } - + String message = null; if (resourceInfo != null) { message = String.format( @@ -492,7 +542,7 @@ public final class BridgeResources extends Resources { message = String.format( "Could not resolve resource value: 0x%1$X.", id); } - + throw new NotFoundException(message); } } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/NinePatchDrawable.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/NinePatchDrawable.java index 5f0852e..abbf2f0 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/NinePatchDrawable.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/NinePatchDrawable.java @@ -30,17 +30,17 @@ public class NinePatchDrawable extends Drawable { NinePatchDrawable(NinePatch ninePatch) { m9Patch = ninePatch; } - + @Override public int getMinimumWidth() { return m9Patch.getWidth(); } - + @Override public int getMinimumHeight() { return m9Patch.getHeight(); } - + /** * Return the intrinsic width of the underlying drawable object. Returns * -1 if it has no intrinsic width, such as with a solid color. @@ -58,7 +58,7 @@ public class NinePatchDrawable extends Drawable { public int getIntrinsicHeight() { return m9Patch.getHeight(); } - + /** * Return in padding the insets suggested by this Drawable for placing * content inside the drawable's bounds. Positive values move toward the @@ -76,24 +76,18 @@ public class NinePatchDrawable extends Drawable { padding.bottom = padd[3]; return true; } - + @Override public void draw(Canvas canvas) { - if (canvas instanceof BridgeCanvas) { - BridgeCanvas bridgeCanvas = (BridgeCanvas)canvas; - - Rect r = getBounds(); - m9Patch.draw(bridgeCanvas.getGraphics2d(), r.left, r.top, r.width(), r.height()); - - return; - } - - throw new UnsupportedOperationException(); + Rect r = getBounds(); + m9Patch.draw(canvas.getGraphics2d(), r.left, r.top, r.width(), r.height()); + + return; } - + // ----------- Not implemented methods --------------- - + @Override public int getOpacity() { diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java index 76bd8d4..47184f1 100644 --- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java +++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java @@ -40,7 +40,7 @@ public class Main { for (String path : osJarPath) { log.info("Input : %1$s", path); } - + try { AsmGenerator agen = new AsmGenerator(log, osDestJar[0], new Class<?>[] { // classes to inject in the final JAR @@ -54,20 +54,23 @@ public class Main { }, new String[] { // classes to rename (so that we can replace them in layoutlib) // original-platform-class-name ======> renamed-class-name + "android.graphics.Bitmap", "android.graphics._Original_Bitmap", + "android.graphics.BitmapShader", "android.graphics._Original_BitmapShader", + "android.graphics.Canvas", "android.graphics._Original_Canvas", + "android.graphics.ComposeShader", "android.graphics._Original_ComposeShader", + "android.graphics.LinearGradient", "android.graphics._Original_LinearGradient", "android.graphics.Matrix", "android.graphics._Original_Matrix", "android.graphics.Paint", "android.graphics._Original_Paint", - "android.graphics.Typeface", "android.graphics._Original_Typeface", - "android.graphics.Bitmap", "android.graphics._Original_Bitmap", "android.graphics.Path", "android.graphics._Original_Path", "android.graphics.PorterDuffXfermode", "android.graphics._Original_PorterDuffXfermode", - "android.graphics.Shader", "android.graphics._Original_Shader", - "android.graphics.LinearGradient", "android.graphics._Original_LinearGradient", - "android.graphics.BitmapShader", "android.graphics._Original_BitmapShader", - "android.graphics.ComposeShader", "android.graphics._Original_ComposeShader", "android.graphics.RadialGradient", "android.graphics._Original_RadialGradient", + "android.graphics.Shader", "android.graphics._Original_Shader", "android.graphics.SweepGradient", "android.graphics._Original_SweepGradient", + "android.graphics.Typeface", "android.graphics._Original_Typeface", + "android.os.ServiceManager", "android.os._Original_ServiceManager", "android.util.FloatMath", "android.util._Original_FloatMath", "android.view.SurfaceView", "android.view._Original_SurfaceView", + "android.view.accessibility.AccessibilityManager", "android.view.accessibility._Original_AccessibilityManager", }, new String[] { // methods deleted from their return type. "android.graphics.Paint", // class to delete method from @@ -101,7 +104,7 @@ public class Main { }); aa.analyze(); agen.generate(); - + // Throw an error if any class failed to get renamed by the generator // // IMPORTANT: if you're building the platform and you get this error message, @@ -123,7 +126,7 @@ public class Main { } System.exit(1); } - + System.exit(0); } catch (IOException e) { log.exception(e, "Failed to load jar"); @@ -158,7 +161,7 @@ public class Main { return false; } } - + if (osJarPath.isEmpty()) { log.error("Missing parameter: path to input jar"); return false; diff --git a/tools/preload/20090811.compiled b/tools/preload/20090811.compiled Binary files differnew file mode 100644 index 0000000..6dbeca0 --- /dev/null +++ b/tools/preload/20090811.compiled diff --git a/tools/preload/Android.mk b/tools/preload/Android.mk index e6fa103..f325870 100644 --- a/tools/preload/Android.mk +++ b/tools/preload/Android.mk @@ -3,13 +3,13 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := \ - ClassRank.java \ Compile.java \ LoadedClass.java \ MemoryUsage.java \ Operation.java \ Policy.java \ PrintCsv.java \ + PrintHtmlDiff.java \ PrintPsTree.java \ Proc.java \ Record.java \ diff --git a/tools/preload/ClassRank.java b/tools/preload/ClassRank.java deleted file mode 100644 index 3699b89..0000000 --- a/tools/preload/ClassRank.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2008 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. - */ - -import java.util.Comparator; - -/** - * Ranks classes for preloading based on how long their operations took - * and how early the operations happened. Higher ranked classes come first. - */ -class ClassRank implements Comparator<Operation> { - - /** - * Increase this number to add more weight to classes which were loaded - * earlier. - */ - static final int SEQUENCE_WEIGHT = 500; // 5 ms - - static final int BUCKET_SIZE = 5; - - public int compare(Operation a, Operation b) { - // Higher ranked operations should come first. - int result = rankOf(b) - rankOf(a); - if (result != 0) { - return result; - } - - // Make sure we don't drop one of two classes w/ the same rank. - // If a load and an initialization have the same rank, it's OK - // to treat the operations equally. - return a.loadedClass.name.compareTo(b.loadedClass.name); - } - - /** Ranks the given operation. */ - private static int rankOf(Operation o) { - return o.medianExclusiveTimeMicros() - + SEQUENCE_WEIGHT / (o.index / BUCKET_SIZE + 1); - } -} - - diff --git a/tools/preload/LoadedClass.java b/tools/preload/LoadedClass.java index 5782807..86e5dfc 100644 --- a/tools/preload/LoadedClass.java +++ b/tools/preload/LoadedClass.java @@ -15,10 +15,7 @@ */ import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Set; +import java.util.*; /** * A loaded class. @@ -54,7 +51,7 @@ class LoadedClass implements Serializable, Comparable<LoadedClass> { } void measureMemoryUsage() { - this.memoryUsage = MemoryUsage.forClass(name); + this.memoryUsage = MemoryUsage.forClass(name); } int mlt = -1; @@ -79,6 +76,10 @@ class LoadedClass implements Serializable, Comparable<LoadedClass> { return mit = calculateMedian(initializations); } + int medianTimeMicros() { + return medianInitTimeMicros() + medianLoadTimeMicros(); + } + /** Calculates the median duration for a list of operations. */ private static int calculateMedian(List<Operation> operations) { int size = operations.size(); @@ -102,31 +103,20 @@ class LoadedClass implements Serializable, Comparable<LoadedClass> { } } - /** - * Counts loads by apps. - */ - int appLoads() { - return operationsByApps(loads); + /** Returns names of processes that loaded this class. */ + Set<String> processNames() { + Set<String> names = new HashSet<String>(); + addProcessNames(loads, names); + addProcessNames(initializations, names); + return names; } - /** - * Counts inits by apps. - */ - int appInits() { - return operationsByApps(initializations); - } - - /** - * Counts number of app operations in the given list. - */ - private static int operationsByApps(List<Operation> operations) { - int byApps = 0; - for (Operation operation : operations) { - if (operation.process.isApplication()) { - byApps++; + private void addProcessNames(List<Operation> ops, Set<String> names) { + for (Operation operation : ops) { + if (operation.process.fromZygote()) { + names.add(operation.process.name); } } - return byApps; } public int compareTo(LoadedClass o) { @@ -137,27 +127,4 @@ class LoadedClass implements Serializable, Comparable<LoadedClass> { public String toString() { return name; } - - /** - * Returns true if this class's initialization causes the given class to - * initialize. - */ - public boolean initializes(LoadedClass clazz, Set<LoadedClass> visited) { - // Avoid infinite recursion. - if (!visited.add(this)) { - return false; - } - - if (clazz == this) { - return true; - } - - for (Operation initialization : initializations) { - if (initialization.loadedClass.initializes(clazz, visited)) { - return true; - } - } - - return false; - } } diff --git a/tools/preload/MemoryUsage.java b/tools/preload/MemoryUsage.java index e5dfb2a..bc21b6f 100644 --- a/tools/preload/MemoryUsage.java +++ b/tools/preload/MemoryUsage.java @@ -34,8 +34,8 @@ class MemoryUsage implements Serializable { static final MemoryUsage NOT_AVAILABLE = new MemoryUsage(); static int errorCount = 0; - static final int MAXIMUM_ERRORS = 10; // give up after this many fails + // These values are in 1kB increments (not 4kB like you'd expect). final int nativeSharedPages; final int javaSharedPages; final int otherSharedPages; @@ -123,15 +123,24 @@ class MemoryUsage implements Serializable { return allocSize - freedSize; } + int totalHeap() { + return javaHeapSize() + (int) nativeHeapSize; + } + int javaPagesInK() { - return (javaSharedPages + javaPrivatePages) * 4; + return javaSharedPages + javaPrivatePages; } int nativePagesInK() { - return (nativeSharedPages + nativePrivatePages) * 4; + return nativeSharedPages + nativePrivatePages; } int otherPagesInK() { - return (otherSharedPages + otherPrivatePages) * 4; + return otherSharedPages + otherPrivatePages; + } + + int totalPages() { + return javaSharedPages + javaPrivatePages + nativeSharedPages + + nativePrivatePages + otherSharedPages + otherPrivatePages; } /** @@ -163,13 +172,6 @@ class MemoryUsage implements Serializable { * Measures memory usage for the given class. */ static MemoryUsage forClass(String className) { - - // This is a coarse approximation for determining that no device is connected, - // or that the communication protocol has changed, but we'll keep going and stop whining. - if (errorCount >= MAXIMUM_ERRORS) { - return NOT_AVAILABLE; - } - MeasureWithTimeout measurer = new MeasureWithTimeout(className); new Thread(measurer).start(); @@ -280,4 +282,17 @@ class MemoryUsage implements Serializable { e.printStackTrace(); } } + + /** Measures memory usage information and stores it in the model. */ + public static void main(String[] args) throws IOException, + ClassNotFoundException { + Root root = Root.fromFile(args[0]); + root.baseline = baseline(); + for (LoadedClass loadedClass : root.loadedClasses.values()) { + if (loadedClass.systemClass) { + loadedClass.measureMemoryUsage(); + } + } + root.toFile(args[0]); + } } diff --git a/tools/preload/Policy.java b/tools/preload/Policy.java index 554966b..7a190ac 100644 --- a/tools/preload/Policy.java +++ b/tools/preload/Policy.java @@ -19,52 +19,43 @@ import java.util.HashSet; import java.util.Set; /** - * This is not instantiated - we just provide data for other classes to use + * Policy that governs which classes are preloaded. */ public class Policy { - - /** - * This location (in the build system) of the preloaded-classes file. - */ - private static final String PRELOADED_CLASS_FILE = "frameworks/base/preloaded-classes"; - + /** - * The internal process name of the system process. Note, this also shows up as - * "system_process", e.g. in ddms. + * No constructor - use static methods only */ - private static final String SYSTEM_SERVER_PROCESS_NAME = "system_server"; + private Policy() {} - /** - * Names of non-application processes - these will not be checked for preloaded classes. - * - * TODO: Replace this hardcoded list with a walk up the parent chain looking for zygote. + /** + * This location (in the build system) of the preloaded-classes file. */ - private static final Set<String> NOT_FROM_ZYGOTE = new HashSet<String>(Arrays.asList( - "zygote", - "dexopt", - "unknown", - SYSTEM_SERVER_PROCESS_NAME, - "com.android.development", - "app_process" // am & other shell commands - )); + static final String PRELOADED_CLASS_FILE + = "frameworks/base/preloaded-classes"; - /** - * Long running services. These are restricted in their contribution to the preloader - * because their launch time is less critical. + /** + * Long running services. These are restricted in their contribution to the + * preloader because their launch time is less critical. */ + // TODO: Generate this automatically from package manager. private static final Set<String> SERVICES = new HashSet<String>(Arrays.asList( - SYSTEM_SERVER_PROCESS_NAME, - "com.android.acore", - // Commented out to make sure DefaultTimeZones gets preloaded. - // "com.android.phone", - "com.google.process.content", - "android.process.media" + "system_server", + "com.google.process.content", + "android.process.media", + "com.android.phone", + "com.google.android.apps.maps.FriendService", + "com.google.android.apps.maps.LocationFriendService", + "com.google.android.googleapps", + "com.google.process.gapps", + "android.tts" )); /** * Classes which we shouldn't load from the Zygote. */ - private static final Set<String> EXCLUDED_CLASSES = new HashSet<String>(Arrays.asList( + private static final Set<String> EXCLUDED_CLASSES + = new HashSet<String>(Arrays.asList( // Binders "android.app.AlarmManager", "android.app.SearchManager", @@ -75,40 +66,18 @@ public class Policy { "android.os.AsyncTask", "android.pim.ContactsAsyncHelper", "java.lang.ProcessManager" - )); /** - * No constructor - use static methods only - */ - private Policy() {} - - /** - * Returns the path/file name of the preloaded classes file that will be written - * by WritePreloadedClassFile. - */ - public static String getPreloadedClassFileName() { - return PRELOADED_CLASS_FILE; - } - - /** - * Reports if a given process name was created from zygote - */ - public static boolean isFromZygote(String processName) { - return !NOT_FROM_ZYGOTE.contains(processName); - } - - /** - * Reports if the given process name is a "long running" process or service + * Returns true if the given process name is a "long running" process or + * service. */ public static boolean isService(String processName) { return SERVICES.contains(processName); } - - /** - * Reports if the given class should never be preloaded - */ - public static boolean isPreloadableClass(String className) { - return !EXCLUDED_CLASSES.contains(className); + + /**Reports if the given class should be preloaded. */ + public static boolean isPreloadable(LoadedClass clazz) { + return clazz.systemClass && !EXCLUDED_CLASSES.contains(clazz.name); } } diff --git a/tools/preload/PrintCsv.java b/tools/preload/PrintCsv.java index 9f2a318..1820830 100644 --- a/tools/preload/PrintCsv.java +++ b/tools/preload/PrintCsv.java @@ -18,6 +18,12 @@ import java.io.IOException; import java.io.FileInputStream; import java.io.ObjectInputStream; import java.io.BufferedInputStream; +import java.io.Writer; +import java.io.PrintStream; +import java.util.Set; +import java.util.HashSet; +import java.util.TreeSet; +import java.util.Iterator; /** * Prints raw information in CSV format. @@ -33,10 +39,25 @@ public class PrintCsv { Root root = Root.fromFile(args[0]); - System.out.println("Name" + printHeaders(System.out); + + MemoryUsage baseline = MemoryUsage.baseline(); + + for (LoadedClass loadedClass : root.loadedClasses.values()) { + if (!loadedClass.systemClass) { + continue; + } + + printRow(System.out, baseline, loadedClass); + } + } + + static void printHeaders(PrintStream out) { + out.println("Name" + ",Preloaded" + ",Median Load Time (us)" + ",Median Init Time (us)" + + ",Process Names" + ",Load Count" + ",Init Count" + ",Managed Heap (B)" @@ -44,46 +65,63 @@ public class PrintCsv { + ",Managed Pages (kB)" + ",Native Pages (kB)" + ",Other Pages (kB)"); + } - MemoryUsage baseline = root.baseline; + static void printRow(PrintStream out, MemoryUsage baseline, + LoadedClass loadedClass) { + out.print(loadedClass.name); + out.print(','); + out.print(loadedClass.preloaded); + out.print(','); + out.print(loadedClass.medianLoadTimeMicros()); + out.print(','); + out.print(loadedClass.medianInitTimeMicros()); + out.print(','); + out.print('"'); - for (LoadedClass loadedClass : root.loadedClasses.values()) { - if (!loadedClass.systemClass) { - continue; - } + Set<String> procNames = new TreeSet<String>(); + for (Operation op : loadedClass.loads) + procNames.add(op.process.name); + for (Operation op : loadedClass.initializations) + procNames.add(op.process.name); - System.out.print(loadedClass.name); - System.out.print(','); - System.out.print(loadedClass.preloaded); - System.out.print(','); - System.out.print(loadedClass.medianLoadTimeMicros()); - System.out.print(','); - System.out.print(loadedClass.medianInitTimeMicros()); - System.out.print(','); - System.out.print(loadedClass.loads.size()); - System.out.print(','); - System.out.print(loadedClass.initializations.size()); - - if (loadedClass.memoryUsage.isAvailable()) { - MemoryUsage subtracted - = loadedClass.memoryUsage.subtract(baseline); - - System.out.print(','); - System.out.print(subtracted.javaHeapSize()); - System.out.print(','); - System.out.print(subtracted.nativeHeapSize); - System.out.print(','); - System.out.print(subtracted.javaPagesInK()); - System.out.print(','); - System.out.print(subtracted.nativePagesInK()); - System.out.print(','); - System.out.print(subtracted.otherPagesInK()); - - } else { - System.out.print(",n/a,n/a,n/a,n/a,n/a"); + if (procNames.size() <= 3) { + for (String name : procNames) { + out.print(name + "\n"); } + } else { + Iterator<String> i = procNames.iterator(); + out.print(i.next() + "\n"); + out.print(i.next() + "\n"); + out.print("...and " + (procNames.size() - 2) + + " others."); + } + + out.print('"'); + out.print(','); + out.print(loadedClass.loads.size()); + out.print(','); + out.print(loadedClass.initializations.size()); + + if (loadedClass.memoryUsage.isAvailable()) { + MemoryUsage subtracted + = loadedClass.memoryUsage.subtract(baseline); - System.out.println(); + out.print(','); + out.print(subtracted.javaHeapSize()); + out.print(','); + out.print(subtracted.nativeHeapSize); + out.print(','); + out.print(subtracted.javaPagesInK()); + out.print(','); + out.print(subtracted.nativePagesInK()); + out.print(','); + out.print(subtracted.otherPagesInK()); + + } else { + out.print(",n/a,n/a,n/a,n/a,n/a"); } + + out.println(); } } diff --git a/tools/preload/PrintHtmlDiff.java b/tools/preload/PrintHtmlDiff.java new file mode 100644 index 0000000..b101c85 --- /dev/null +++ b/tools/preload/PrintHtmlDiff.java @@ -0,0 +1,142 @@ +/* + * Copyright (C) 2009 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. + */ + +import java.io.IOException; +import java.io.FileReader; +import java.io.BufferedReader; +import java.io.PrintStream; +import java.util.Set; +import java.util.TreeSet; +import java.util.HashSet; +import java.util.Iterator; + +/** + * Prints HTML containing removed and added files. + */ +public class PrintHtmlDiff { + + private static final String OLD_PRELOADED_CLASSES + = "old-preloaded-classes"; + + public static void main(String[] args) throws IOException, + ClassNotFoundException { + Root root = Root.fromFile(args[0]); + + BufferedReader oldClasses = new BufferedReader( + new FileReader(OLD_PRELOADED_CLASSES)); + + // Classes loaded implicitly by the zygote. + Set<LoadedClass> zygote = new HashSet<LoadedClass>(); + for (Proc proc : root.processes.values()) { + if (proc.name.equals("zygote")) { + for (Operation op : proc.operations) { + zygote.add(op.loadedClass); + } + break; + } + } + + Set<LoadedClass> removed = new TreeSet<LoadedClass>(); + Set<LoadedClass> added = new TreeSet<LoadedClass>(); + + for (LoadedClass loadedClass : root.loadedClasses.values()) { + if (loadedClass.preloaded && !zygote.contains(loadedClass)) { + added.add(loadedClass); + } + } + + String line; + while ((line = oldClasses.readLine()) != null) { + line = line.trim(); + LoadedClass clazz = root.loadedClasses.get(line); + if (clazz != null) { + added.remove(clazz); + if (!clazz.preloaded) removed.add(clazz); + } + } + + PrintStream out = System.out; + + out.println("<html><body>"); + out.println("<style>"); + out.println("a, th, td, h2 { font-family: arial }"); + out.println("th, td { font-size: small }"); + out.println("</style>"); + out.println("<script src=\"sorttable.js\"></script>"); + out.println("<p><a href=\"#removed\">Removed</a>"); + out.println("<a name=\"added\"/><h2>Added</h2>"); + printTable(out, root.baseline, added); + out.println("<a name=\"removed\"/><h2>Removed</h2>"); + printTable(out, root.baseline, removed); + out.println("</body></html>"); + } + + static void printTable(PrintStream out, MemoryUsage baseline, + Iterable<LoadedClass> classes) { + out.println("<table border=\"1\" cellpadding=\"5\"" + + " class=\"sortable\">"); + + out.println("<thead><tr>"); + out.println("<th>Name</th>"); + out.println("<th>Load Time (us)</th>"); + out.println("<th>Loaded By</th>"); + out.println("<th>Heap (B)</th>"); + out.println("<th>Pages</th>"); + out.println("</tr></thead>"); + + for (LoadedClass clazz : classes) { + out.println("<tr>"); + out.println("<td>" + clazz.name + "</td>"); + out.println("<td>" + clazz.medianTimeMicros() + "</td>"); + + out.println("<td>"); + Set<String> procNames = new TreeSet<String>(); + for (Operation op : clazz.loads) procNames.add(op.process.name); + for (Operation op : clazz.initializations) { + procNames.add(op.process.name); + } + if (procNames.size() <= 3) { + for (String name : procNames) { + out.print(name + "<br/>"); + } + } else { + Iterator<String> i = procNames.iterator(); + out.print(i.next() + "<br/>"); + out.print(i.next() + "<br/>"); + out.print("...and " + (procNames.size() - 2) + + " others."); + } + out.println("</td>"); + + if (clazz.memoryUsage.isAvailable()) { + MemoryUsage subtracted + = clazz.memoryUsage.subtract(baseline); + + out.println("<td>" + (subtracted.javaHeapSize() + + subtracted.nativeHeapSize) + "</td>"); + out.println("<td>" + subtracted.totalPages() + "</td>"); + } else { + for (int i = 0; i < 2; i++) { + out.println("<td>n/a</td>"); + } + } + + out.println("</tr>"); + } + + out.println("</table>"); + } +} diff --git a/tools/preload/Proc.java b/tools/preload/Proc.java index 22697f8..2105021 100644 --- a/tools/preload/Proc.java +++ b/tools/preload/Proc.java @@ -14,16 +14,11 @@ * limitations under the License. */ -import java.util.Set; -import java.util.HashSet; -import java.util.Arrays; import java.util.List; import java.util.ArrayList; import java.util.LinkedList; import java.util.Map; import java.util.HashMap; -import java.util.Collections; -import java.util.TreeSet; import java.io.Serializable; /** @@ -33,16 +28,6 @@ class Proc implements Serializable { private static final long serialVersionUID = 0; - /** - * Default percentage of time to cut off of app class loading times. - */ - static final int PERCENTAGE_TO_PRELOAD = 75; - - /** - * Maximum number of classes to preload for a given process. - */ - static final int MAX_TO_PRELOAD = 100; - /** Parent process. */ final Proc parent; @@ -88,89 +73,11 @@ class Proc implements Serializable { } /** - * Returns the percentage of time we should cut by preloading for this - * app. - */ - int percentageToPreload() { - return PERCENTAGE_TO_PRELOAD; - } - - /** - * Returns a list of classes which should be preloaded. - * - * @param takeAllClasses forces all classes to be taken (irrespective of ranking) - */ - List<LoadedClass> highestRankedClasses(boolean takeAllClasses) { - if (!isApplication()) { - return Collections.emptyList(); - } - - // Sort by rank. - Operation[] ranked = new Operation[operations.size()]; - ranked = operations.toArray(ranked); - Arrays.sort(ranked, new ClassRank()); - - // The percentage of time to save by preloading. - int timeToSave = totalTimeMicros() * percentageToPreload() / 100; - int timeSaved = 0; - - boolean service = Policy.isService(this.name); - - List<LoadedClass> highest = new ArrayList<LoadedClass>(); - for (Operation operation : ranked) { - - // These are actual ranking decisions, which can be overridden - if (!takeAllClasses) { - if (highest.size() >= MAX_TO_PRELOAD) { - System.out.println(name + " got " - + (timeSaved * 100 / timeToSave) + "% through"); - break; - } - - if (timeSaved >= timeToSave) { - break; - } - } - - // The remaining rules apply even to wired-down processes - if (!Policy.isPreloadableClass(operation.loadedClass.name)) { - continue; - } - - if (!operation.loadedClass.systemClass) { - continue; - } - - // Only load java.* class for services. - if (!service || operation.loadedClass.name.startsWith("java.")) { - highest.add(operation.loadedClass); - } - - // For services, still count the time even if it's not in java.* - timeSaved += operation.medianExclusiveTimeMicros(); - } - - return highest; - } - - /** - * Total time spent class loading and initializing. - */ - int totalTimeMicros() { - int totalTime = 0; - for (Operation operation : operations) { - totalTime += operation.medianExclusiveTimeMicros(); - } - return totalTime; - } - - /** - * Returns true if this process is an app. - * - * TODO: Replace the hardcoded list with a walk up the parent chain looking for zygote. + * Returns true if this process comes from the zygote. */ - public boolean isApplication() { - return Policy.isFromZygote(name); + public boolean fromZygote() { + return parent != null && parent.name.equals("zygote") + && !name.equals("com.android.development"); } /** diff --git a/tools/preload/Root.java b/tools/preload/Root.java index 949f9b7..0bc29bf 100644 --- a/tools/preload/Root.java +++ b/tools/preload/Root.java @@ -46,7 +46,7 @@ public class Root implements Serializable { final Map<String, LoadedClass> loadedClasses = new HashMap<String, LoadedClass>(); - final MemoryUsage baseline = MemoryUsage.baseline(); + MemoryUsage baseline = MemoryUsage.baseline(); /** * Records class loads and initializations. diff --git a/tools/preload/WritePreloadedClassFile.java b/tools/preload/WritePreloadedClassFile.java index d87b1f0..96c539b 100644 --- a/tools/preload/WritePreloadedClassFile.java +++ b/tools/preload/WritePreloadedClassFile.java @@ -20,83 +20,125 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.List; import java.util.Set; import java.util.TreeSet; /** - * Writes /frameworks/base/preloaded-classes. Also updates LoadedClass.preloaded - * fields and writes over compiled log file. + * Writes /frameworks/base/preloaded-classes. Also updates + * {@link LoadedClass#preloaded} fields and writes over compiled log file. */ public class WritePreloadedClassFile { - public static void main(String[] args) throws IOException, ClassNotFoundException { - - // Process command-line arguments first - List<String> wiredProcesses = new ArrayList<String>(); - String inputFileName = null; - int argOffset = 0; - try { - while ("--preload-all-process".equals(args[argOffset])) { - argOffset++; - wiredProcesses.add(args[argOffset++]); - } - - inputFileName = args[argOffset++]; - } catch (RuntimeException e) { - System.err.println("Usage: WritePreloadedClassFile " + - "[--preload-all-process process-name] " + - "[compiled log file]"); - System.exit(0); - } + /** + * Preload any class that take longer to load than MIN_LOAD_TIME_MICROS us. + */ + static final int MIN_LOAD_TIME_MICROS = 1250; - Root root = Root.fromFile(inputFileName); + public static void main(String[] args) throws IOException, + ClassNotFoundException { + if (args.length != 1) { + System.err.println("Usage: WritePreloadedClassFile [compiled log]"); + System.exit(-1); + } + String rootFile = args[0]; + Root root = Root.fromFile(rootFile); + // No classes are preloaded to start. for (LoadedClass loadedClass : root.loadedClasses.values()) { loadedClass.preloaded = false; } + // Open preloaded-classes file for output. Writer out = new BufferedWriter(new OutputStreamWriter( - new FileOutputStream(Policy.getPreloadedClassFileName()), + new FileOutputStream(Policy.PRELOADED_CLASS_FILE), Charset.forName("US-ASCII"))); - out.write("# Classes which are preloaded by com.android.internal.os.ZygoteInit.\n"); - out.write("# Automatically generated by /frameworks/base/tools/preload.\n"); - out.write("# percent=" + Proc.PERCENTAGE_TO_PRELOAD + ", weight=" - + ClassRank.SEQUENCE_WEIGHT - + ", bucket_size=" + ClassRank.BUCKET_SIZE - + "\n"); - for (String wiredProcess : wiredProcesses) { - out.write("# forcing classes loaded by: " + wiredProcess + "\n"); - } + out.write("# Classes which are preloaded by" + + " com.android.internal.os.ZygoteInit.\n"); + out.write("# Automatically generated by frameworks/base/tools/preload/" + + WritePreloadedClassFile.class.getSimpleName() + ".java.\n"); + out.write("# MIN_LOAD_TIME_MICROS=" + MIN_LOAD_TIME_MICROS + "\n"); - Set<LoadedClass> highestRanked = new TreeSet<LoadedClass>(); - for (Proc proc : root.processes.values()) { - // test to see if this is one of the wired-down ("take all classes") processes - boolean isWired = wiredProcesses.contains(proc.name); - - List<LoadedClass> highestForProc = proc.highestRankedClasses(isWired); + /* + * The set of classes to preload. We preload a class if: + * + * a) it's loaded in the bootclasspath (i.e., is a system class) + * b) it takes > MIN_LOAD_TIME_MICROS us to load, and + * c) it's loaded by more than one process, or it's loaded by an + * application (i.e., not a long running service) + */ + Set<LoadedClass> toPreload = new TreeSet<LoadedClass>(); - System.out.println(proc.name + ": " + highestForProc.size()); + // Preload classes that were loaded by at least 2 processes. Hopefully, + // the memory associated with these classes will be shared. + for (LoadedClass loadedClass : root.loadedClasses.values()) { + Set<String> names = loadedClass.processNames(); + if (shouldPreload(loadedClass) && names.size() > 1) { + toPreload.add(loadedClass); + } + } + + int initialSize = toPreload.size(); + System.out.println(initialSize + + " classses were loaded by more than one app."); - for (LoadedClass loadedClass : highestForProc) { - loadedClass.preloaded = true; + // Preload eligable classes from applications (not long-running + // services). + for (Proc proc : root.processes.values()) { + if (proc.fromZygote() && !Policy.isService(proc.name)) { + for (Operation operation : proc.operations) { + LoadedClass loadedClass = operation.loadedClass; + if (shouldPreload(loadedClass)) { + toPreload.add(loadedClass); + } + } } - highestRanked.addAll(highestForProc); } - for (LoadedClass loadedClass : highestRanked) { - out.write(loadedClass.name); - out.write('\n'); + System.out.println("Added " + (toPreload.size() - initialSize) + + " more to speed up applications."); + + System.out.println(toPreload.size() + + " total classes will be preloaded."); + + // Make classes that were implicitly loaded by the zygote explicit. + // This adds minimal overhead but avoid confusion about classes not + // appearing in the list. + addAllClassesFrom("zygote", root, toPreload); + + for (LoadedClass loadedClass : toPreload) { + out.write(loadedClass.name + "\n"); } out.close(); - System.out.println(highestRanked.size() - + " classes will be preloaded."); - // Update data to reflect LoadedClass.preloaded changes. - root.toFile(inputFileName); + for (LoadedClass loadedClass : toPreload) { + loadedClass.preloaded = true; + } + root.toFile(rootFile); + } + + private static void addAllClassesFrom(String processName, Root root, + Set<LoadedClass> toPreload) { + for (Proc proc : root.processes.values()) { + if (proc.name.equals(processName)) { + for (Operation operation : proc.operations) { + boolean preloadable + = Policy.isPreloadable(operation.loadedClass); + if (preloadable) { + toPreload.add(operation.loadedClass); + } + } + } + } + } + + /** + * Returns true if the class should be preloaded. + */ + private static boolean shouldPreload(LoadedClass clazz) { + return Policy.isPreloadable(clazz) + && clazz.medianTimeMicros() > MIN_LOAD_TIME_MICROS; } } diff --git a/tools/preload/loadclass/LoadClass.java b/tools/preload/loadclass/LoadClass.java index 471cc84..a71b6a8 100644 --- a/tools/preload/loadclass/LoadClass.java +++ b/tools/preload/loadclass/LoadClass.java @@ -35,7 +35,11 @@ class LoadClass { if (args.length > 0) { try { + long start = System.currentTimeMillis(); Class.forName(args[0]); + long elapsed = System.currentTimeMillis() - start; + Log.i("LoadClass", "Loaded " + args[0] + " in " + elapsed + + "ms."); } catch (ClassNotFoundException e) { Log.w("LoadClass", e); return; diff --git a/tools/preload/preload.iml b/tools/preload/preload.iml index d1fab57..2d87c55 100644 --- a/tools/preload/preload.iml +++ b/tools/preload/preload.iml @@ -1,15 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <module relativePaths="true" type="JAVA_MODULE" version="4"> <component name="NewModuleRootManager" inherit-compiler-output="false"> - <output url="file:///tmp/preload/" /> + <output url="file:///tmp/preload" /> + <output-test url="file:///tmp/preload" /> <exclude-output /> - <output-test url="file:///tmp/preload/" /> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$" isTestSource="false" /> </content> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> - <orderEntryProperties /> </component> </module> diff --git a/tools/preload/preload.ipr b/tools/preload/preload.ipr index c5613ad..0c9621c 100644 --- a/tools/preload/preload.ipr +++ b/tools/preload/preload.ipr @@ -25,7 +25,28 @@ <option name="USE_PROJECT_LEVEL_SETTINGS" value="false" /> </component> <component name="CodeStyleSettingsManager"> - <option name="PER_PROJECT_SETTINGS" /> + <option name="PER_PROJECT_SETTINGS"> + <value> + <ADDITIONAL_INDENT_OPTIONS fileType="java"> + <option name="INDENT_SIZE" value="4" /> + <option name="CONTINUATION_INDENT_SIZE" value="8" /> + <option name="TAB_SIZE" value="4" /> + <option name="USE_TAB_CHARACTER" value="false" /> + <option name="SMART_TABS" value="false" /> + <option name="LABEL_INDENT_SIZE" value="0" /> + <option name="LABEL_INDENT_ABSOLUTE" value="false" /> + </ADDITIONAL_INDENT_OPTIONS> + <ADDITIONAL_INDENT_OPTIONS fileType="xml"> + <option name="INDENT_SIZE" value="4" /> + <option name="CONTINUATION_INDENT_SIZE" value="8" /> + <option name="TAB_SIZE" value="4" /> + <option name="USE_TAB_CHARACTER" value="false" /> + <option name="SMART_TABS" value="false" /> + <option name="LABEL_INDENT_SIZE" value="0" /> + <option name="LABEL_INDENT_ABSOLUTE" value="false" /> + </ADDITIONAL_INDENT_OPTIONS> + </value> + </option> <option name="USE_PER_PROJECT_SETTINGS" value="false" /> </component> <component name="CompilerConfiguration"> @@ -114,6 +135,7 @@ <option name="ADDITIONAL_OPTIONS_STRING" value="" /> <option name="MAXIMUM_HEAP_SIZE" value="128" /> </component> + <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" /> <component name="EntryPointsManager"> <entry_points version="2.0" /> </component> @@ -125,13 +147,13 @@ <component name="IdProvider" IDEtalkID="D171F99B9178C1675593DC9A76A5CC7E" /> <component name="InspectionProjectProfileManager"> <option name="PROJECT_PROFILE" value="Project Default" /> - <option name="USE_PROJECT_LEVEL_SETTINGS" value="false" /> - <scopes /> + <option name="USE_PROJECT_PROFILE" value="true" /> + <version value="1.0" /> <profiles> <profile version="1.0" is_locked="false"> <option name="myName" value="Project Default" /> <option name="myLocal" value="false" /> - <inspection_tool class="JavaDoc" level="WARNING" enabled="false"> + <inspection_tool class="JavaDoc" enabled="false" level="WARNING" enabled_by_default="false"> <option name="TOP_LEVEL_CLASS_OPTIONS"> <value> <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" /> @@ -160,14 +182,19 @@ <option name="IGNORE_JAVADOC_PERIOD" value="true" /> <option name="myAdditionalJavadocTags" value="" /> </inspection_tool> - <inspection_tool class="OnDemandImport" level="WARNING" enabled="true" /> - <inspection_tool class="SamePackageImport" level="WARNING" enabled="true" /> - <inspection_tool class="JavaLangImport" level="WARNING" enabled="true" /> - <inspection_tool class="RedundantImport" level="WARNING" enabled="true" /> - <inspection_tool class="UnusedImport" level="WARNING" enabled="true" /> + <inspection_tool class="JavaLangImport" enabled="true" level="WARNING" enabled_by_default="true" /> + <inspection_tool class="OnDemandImport" enabled="true" level="WARNING" enabled_by_default="true" /> + <inspection_tool class="RedundantImport" enabled="true" level="WARNING" enabled_by_default="true" /> + <inspection_tool class="SamePackageImport" enabled="true" level="WARNING" enabled_by_default="true" /> + <inspection_tool class="UnusedImport" enabled="true" level="WARNING" enabled_by_default="true" /> </profile> </profiles> - <list size="0" /> + <list size="4"> + <item index="0" class="java.lang.String" itemvalue="WARNING" /> + <item index="1" class="java.lang.String" itemvalue="SERVER PROBLEM" /> + <item index="2" class="java.lang.String" itemvalue="INFO" /> + <item index="3" class="java.lang.String" itemvalue="ERROR" /> + </list> </component> <component name="JavacSettings"> <option name="DEBUGGING_INFO" value="true" /> @@ -332,13 +359,19 @@ <option name="USE_CLIENT_FILTER" value="true" /> <option name="CLIENT" value="" /> </component> + <component name="ProjectDetails"> + <option name="projectName" value="preload" /> + </component> <component name="ProjectFileVersion" converted="true" /> + <component name="ProjectKey"> + <option name="state" value="project:///Volumes/Android/donut/frameworks/base/tools/preload/preload.ipr" /> + </component> <component name="ProjectModuleManager"> <modules> <module fileurl="file://$PROJECT_DIR$/preload.iml" filepath="$PROJECT_DIR$/preload.iml" /> </modules> </component> - <component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="true" project-jdk-name="1.5" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="1.5" project-jdk-type="JavaSDK"> <output url="file:///tmp/preload" /> </component> <component name="RmicSettings"> @@ -374,6 +407,9 @@ <option name="myValidatorValidationEnabled" value="true" /> <option name="myReportErrorsAsWarnings" value="true" /> </component> + <component name="SvnBranchConfigurationManager"> + <option name="mySupportsUserInfoFilter" value="true" /> + </component> <component name="SvnChangesBrowserSettings"> <option name="USE_AUTHOR_FIELD" value="true" /> <option name="AUTHOR" value="" /> @@ -381,15 +417,6 @@ <option name="USE_PROJECT_SETTINGS" value="true" /> <option name="USE_ALTERNATE_LOCATION" value="false" /> </component> - <component name="SvnConfiguration"> - <option name="USER" value="" /> - <option name="PASSWORD" value="" /> - <option name="PROCESS_UNRESOLVED" value="false" /> - <option name="LAST_MERGED_REVISION" /> - <option name="UPDATE_RUN_STATUS" value="false" /> - <option name="UPDATE_RECURSIVELY" value="true" /> - <option name="MERGE_DRY_RUN" value="false" /> - </component> <component name="VCS.FileViewConfiguration"> <option name="SELECTED_STATUSES" value="DEFAULT" /> <option name="SELECTED_COLUMNS" value="DEFAULT" /> @@ -399,6 +426,7 @@ </component> <component name="VcsDirectoryMappings"> <mapping directory="" vcs="Perforce" /> + <mapping directory="/Volumes/Android/donut/frameworks/base" vcs="Git" /> </component> <component name="VssConfiguration"> <option name="CLIENT_PATH" value="" /> diff --git a/tools/preload/sorttable.js b/tools/preload/sorttable.js new file mode 100644 index 0000000..25bccb2 --- /dev/null +++ b/tools/preload/sorttable.js @@ -0,0 +1,493 @@ +/* + SortTable + version 2 + 7th April 2007 + Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/ + + Instructions: + Download this file + Add <script src="sorttable.js"></script> to your HTML + Add class="sortable" to any table you'd like to make sortable + Click on the headers to sort + + Thanks to many, many people for contributions and suggestions. + Licenced as X11: http://www.kryogenix.org/code/browser/licence.html + This basically means: do what you want with it. +*/ + + +var stIsIE = /*@cc_on!@*/false; + +sorttable = { + init: function() { + // quit if this function has already been called + if (arguments.callee.done) return; + // flag this function so we don't do the same thing twice + arguments.callee.done = true; + // kill the timer + if (_timer) clearInterval(_timer); + + if (!document.createElement || !document.getElementsByTagName) return; + + sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/; + + forEach(document.getElementsByTagName('table'), function(table) { + if (table.className.search(/\bsortable\b/) != -1) { + sorttable.makeSortable(table); + } + }); + + }, + + makeSortable: function(table) { + if (table.getElementsByTagName('thead').length == 0) { + // table doesn't have a tHead. Since it should have, create one and + // put the first table row in it. + the = document.createElement('thead'); + the.appendChild(table.rows[0]); + table.insertBefore(the,table.firstChild); + } + // Safari doesn't support table.tHead, sigh + if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0]; + + if (table.tHead.rows.length != 1) return; // can't cope with two header rows + + // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as + // "total" rows, for example). This is B&R, since what you're supposed + // to do is put them in a tfoot. So, if there are sortbottom rows, + // for backwards compatibility, move them to tfoot (creating it if needed). + sortbottomrows = []; + for (var i=0; i<table.rows.length; i++) { + if (table.rows[i].className.search(/\bsortbottom\b/) != -1) { + sortbottomrows[sortbottomrows.length] = table.rows[i]; + } + } + if (sortbottomrows) { + if (table.tFoot == null) { + // table doesn't have a tfoot. Create one. + tfo = document.createElement('tfoot'); + table.appendChild(tfo); + } + for (var i=0; i<sortbottomrows.length; i++) { + tfo.appendChild(sortbottomrows[i]); + } + delete sortbottomrows; + } + + // work through each column and calculate its type + headrow = table.tHead.rows[0].cells; + for (var i=0; i<headrow.length; i++) { + // manually override the type with a sorttable_type attribute + if (!headrow[i].className.match(/\bsorttable_nosort\b/)) { // skip this col + mtch = headrow[i].className.match(/\bsorttable_([a-z0-9]+)\b/); + if (mtch) { override = mtch[1]; } + if (mtch && typeof sorttable["sort_"+override] == 'function') { + headrow[i].sorttable_sortfunction = sorttable["sort_"+override]; + } else { + headrow[i].sorttable_sortfunction = sorttable.guessType(table,i); + } + // make it clickable to sort + headrow[i].sorttable_columnindex = i; + headrow[i].sorttable_tbody = table.tBodies[0]; + dean_addEvent(headrow[i],"click", function(e) { + + if (this.className.search(/\bsorttable_sorted\b/) != -1) { + // if we're already sorted by this column, just + // reverse the table, which is quicker + sorttable.reverse(this.sorttable_tbody); + this.className = this.className.replace('sorttable_sorted', + 'sorttable_sorted_reverse'); + this.removeChild(document.getElementById('sorttable_sortfwdind')); + sortrevind = document.createElement('span'); + sortrevind.id = "sorttable_sortrevind"; + sortrevind.innerHTML = stIsIE ? ' <font face="webdings">5</font>' : ' ▴'; + this.appendChild(sortrevind); + return; + } + if (this.className.search(/\bsorttable_sorted_reverse\b/) != -1) { + // if we're already sorted by this column in reverse, just + // re-reverse the table, which is quicker + sorttable.reverse(this.sorttable_tbody); + this.className = this.className.replace('sorttable_sorted_reverse', + 'sorttable_sorted'); + this.removeChild(document.getElementById('sorttable_sortrevind')); + sortfwdind = document.createElement('span'); + sortfwdind.id = "sorttable_sortfwdind"; + sortfwdind.innerHTML = stIsIE ? ' <font face="webdings">6</font>' : ' ▾'; + this.appendChild(sortfwdind); + return; + } + + // remove sorttable_sorted classes + theadrow = this.parentNode; + forEach(theadrow.childNodes, function(cell) { + if (cell.nodeType == 1) { // an element + cell.className = cell.className.replace('sorttable_sorted_reverse',''); + cell.className = cell.className.replace('sorttable_sorted',''); + } + }); + sortfwdind = document.getElementById('sorttable_sortfwdind'); + if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); } + sortrevind = document.getElementById('sorttable_sortrevind'); + if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); } + + this.className += ' sorttable_sorted'; + sortfwdind = document.createElement('span'); + sortfwdind.id = "sorttable_sortfwdind"; + sortfwdind.innerHTML = stIsIE ? ' <font face="webdings">6</font>' : ' ▾'; + this.appendChild(sortfwdind); + + // build an array to sort. This is a Schwartzian transform thing, + // i.e., we "decorate" each row with the actual sort key, + // sort based on the sort keys, and then put the rows back in order + // which is a lot faster because you only do getInnerText once per row + row_array = []; + col = this.sorttable_columnindex; + rows = this.sorttable_tbody.rows; + for (var j=0; j<rows.length; j++) { + row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]]; + } + /* If you want a stable sort, uncomment the following line */ + //sorttable.shaker_sort(row_array, this.sorttable_sortfunction); + /* and comment out this one */ + row_array.sort(this.sorttable_sortfunction); + + tb = this.sorttable_tbody; + for (var j=0; j<row_array.length; j++) { + tb.appendChild(row_array[j][1]); + } + + delete row_array; + }); + } + } + }, + + guessType: function(table, column) { + // guess the type of a column based on its first non-blank row + sortfn = sorttable.sort_alpha; + for (var i=0; i<table.tBodies[0].rows.length; i++) { + text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]); + if (text != '') { + if (text.match(/^-?[£$¤]?[\d,.]+%?$/)) { + return sorttable.sort_numeric; + } + // check for a date: dd/mm/yyyy or dd/mm/yy + // can have / or . or - as separator + // can be mm/dd as well + possdate = text.match(sorttable.DATE_RE) + if (possdate) { + // looks like a date + first = parseInt(possdate[1]); + second = parseInt(possdate[2]); + if (first > 12) { + // definitely dd/mm + return sorttable.sort_ddmm; + } else if (second > 12) { + return sorttable.sort_mmdd; + } else { + // looks like a date, but we can't tell which, so assume + // that it's dd/mm (English imperialism!) and keep looking + sortfn = sorttable.sort_ddmm; + } + } + } + } + return sortfn; + }, + + getInnerText: function(node) { + // gets the text we want to use for sorting for a cell. + // strips leading and trailing whitespace. + // this is *not* a generic getInnerText function; it's special to sorttable. + // for example, you can override the cell text with a customkey attribute. + // it also gets .value for <input> fields. + + hasInputs = (typeof node.getElementsByTagName == 'function') && + node.getElementsByTagName('input').length; + + if (node.getAttribute("sorttable_customkey") != null) { + return node.getAttribute("sorttable_customkey"); + } + else if (typeof node.textContent != 'undefined' && !hasInputs) { + return node.textContent.replace(/^\s+|\s+$/g, ''); + } + else if (typeof node.innerText != 'undefined' && !hasInputs) { + return node.innerText.replace(/^\s+|\s+$/g, ''); + } + else if (typeof node.text != 'undefined' && !hasInputs) { + return node.text.replace(/^\s+|\s+$/g, ''); + } + else { + switch (node.nodeType) { + case 3: + if (node.nodeName.toLowerCase() == 'input') { + return node.value.replace(/^\s+|\s+$/g, ''); + } + case 4: + return node.nodeValue.replace(/^\s+|\s+$/g, ''); + break; + case 1: + case 11: + var innerText = ''; + for (var i = 0; i < node.childNodes.length; i++) { + innerText += sorttable.getInnerText(node.childNodes[i]); + } + return innerText.replace(/^\s+|\s+$/g, ''); + break; + default: + return ''; + } + } + }, + + reverse: function(tbody) { + // reverse the rows in a tbody + newrows = []; + for (var i=0; i<tbody.rows.length; i++) { + newrows[newrows.length] = tbody.rows[i]; + } + for (var i=newrows.length-1; i>=0; i--) { + tbody.appendChild(newrows[i]); + } + delete newrows; + }, + + /* sort functions + each sort function takes two parameters, a and b + you are comparing a[0] and b[0] */ + sort_numeric: function(a,b) { + aa = parseFloat(a[0].replace(/[^0-9.-]/g,'')); + if (isNaN(aa)) aa = 0; + bb = parseFloat(b[0].replace(/[^0-9.-]/g,'')); + if (isNaN(bb)) bb = 0; + return aa-bb; + }, + sort_alpha: function(a,b) { + if (a[0]==b[0]) return 0; + if (a[0]<b[0]) return -1; + return 1; + }, + sort_ddmm: function(a,b) { + mtch = a[0].match(sorttable.DATE_RE); + y = mtch[3]; m = mtch[2]; d = mtch[1]; + if (m.length == 1) m = '0'+m; + if (d.length == 1) d = '0'+d; + dt1 = y+m+d; + mtch = b[0].match(sorttable.DATE_RE); + y = mtch[3]; m = mtch[2]; d = mtch[1]; + if (m.length == 1) m = '0'+m; + if (d.length == 1) d = '0'+d; + dt2 = y+m+d; + if (dt1==dt2) return 0; + if (dt1<dt2) return -1; + return 1; + }, + sort_mmdd: function(a,b) { + mtch = a[0].match(sorttable.DATE_RE); + y = mtch[3]; d = mtch[2]; m = mtch[1]; + if (m.length == 1) m = '0'+m; + if (d.length == 1) d = '0'+d; + dt1 = y+m+d; + mtch = b[0].match(sorttable.DATE_RE); + y = mtch[3]; d = mtch[2]; m = mtch[1]; + if (m.length == 1) m = '0'+m; + if (d.length == 1) d = '0'+d; + dt2 = y+m+d; + if (dt1==dt2) return 0; + if (dt1<dt2) return -1; + return 1; + }, + + shaker_sort: function(list, comp_func) { + // A stable sort function to allow multi-level sorting of data + // see: http://en.wikipedia.org/wiki/Cocktail_sort + // thanks to Joseph Nahmias + var b = 0; + var t = list.length - 1; + var swap = true; + + while(swap) { + swap = false; + for(var i = b; i < t; ++i) { + if ( comp_func(list[i], list[i+1]) > 0 ) { + var q = list[i]; list[i] = list[i+1]; list[i+1] = q; + swap = true; + } + } // for + t--; + + if (!swap) break; + + for(var i = t; i > b; --i) { + if ( comp_func(list[i], list[i-1]) < 0 ) { + var q = list[i]; list[i] = list[i-1]; list[i-1] = q; + swap = true; + } + } // for + b++; + + } // while(swap) + } +} + +/* ****************************************************************** + Supporting functions: bundled here to avoid depending on a library + ****************************************************************** */ + +// Dean Edwards/Matthias Miller/John Resig + +/* for Mozilla/Opera9 */ +if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", sorttable.init, false); +} + +/* for Internet Explorer */ +/*@cc_on @*/ +/*@if (@_win32) + document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>"); + var script = document.getElementById("__ie_onload"); + script.onreadystatechange = function() { + if (this.readyState == "complete") { + sorttable.init(); // call the onload handler + } + }; +/*@end @*/ + +/* for Safari */ +if (/WebKit/i.test(navigator.userAgent)) { // sniff + var _timer = setInterval(function() { + if (/loaded|complete/.test(document.readyState)) { + sorttable.init(); // call the onload handler + } + }, 10); +} + +/* for other browsers */ +window.onload = sorttable.init; + +// written by Dean Edwards, 2005 +// with input from Tino Zijdel, Matthias Miller, Diego Perini + +// http://dean.edwards.name/weblog/2005/10/add-event/ + +function dean_addEvent(element, type, handler) { + if (element.addEventListener) { + element.addEventListener(type, handler, false); + } else { + // assign each event handler a unique ID + if (!handler.$$guid) handler.$$guid = dean_addEvent.guid++; + // create a hash table of event types for the element + if (!element.events) element.events = {}; + // create a hash table of event handlers for each element/event pair + var handlers = element.events[type]; + if (!handlers) { + handlers = element.events[type] = {}; + // store the existing event handler (if there is one) + if (element["on" + type]) { + handlers[0] = element["on" + type]; + } + } + // store the event handler in the hash table + handlers[handler.$$guid] = handler; + // assign a global event handler to do all the work + element["on" + type] = handleEvent; + } +}; +// a counter used to create unique IDs +dean_addEvent.guid = 1; + +function removeEvent(element, type, handler) { + if (element.removeEventListener) { + element.removeEventListener(type, handler, false); + } else { + // delete the event handler from the hash table + if (element.events && element.events[type]) { + delete element.events[type][handler.$$guid]; + } + } +}; + +function handleEvent(event) { + var returnValue = true; + // grab the event object (IE uses a global event object) + event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event); + // get a reference to the hash table of event handlers + var handlers = this.events[event.type]; + // execute each event handler + for (var i in handlers) { + this.$$handleEvent = handlers[i]; + if (this.$$handleEvent(event) === false) { + returnValue = false; + } + } + return returnValue; +}; + +function fixEvent(event) { + // add W3C standard event methods + event.preventDefault = fixEvent.preventDefault; + event.stopPropagation = fixEvent.stopPropagation; + return event; +}; +fixEvent.preventDefault = function() { + this.returnValue = false; +}; +fixEvent.stopPropagation = function() { + this.cancelBubble = true; +} + +// Dean's forEach: http://dean.edwards.name/base/forEach.js +/* + forEach, version 1.0 + Copyright 2006, Dean Edwards + License: http://www.opensource.org/licenses/mit-license.php +*/ + +// array-like enumeration +if (!Array.forEach) { // mozilla already supports this + Array.forEach = function(array, block, context) { + for (var i = 0; i < array.length; i++) { + block.call(context, array[i], i, array); + } + }; +} + +// generic enumeration +Function.prototype.forEach = function(object, block, context) { + for (var key in object) { + if (typeof this.prototype[key] == "undefined") { + block.call(context, object[key], key, object); + } + } +}; + +// character enumeration +String.forEach = function(string, block, context) { + Array.forEach(string.split(""), function(chr, index) { + block.call(context, chr, index, string); + }); +}; + +// globally resolve forEach enumeration +var forEach = function(object, block, context) { + if (object) { + var resolve = Object; // default + if (object instanceof Function) { + // functions have a "length" property + resolve = Function; + } else if (object.forEach instanceof Function) { + // the object implements a custom forEach method so use that + object.forEach(block, context); + return; + } else if (typeof object == "string") { + // the object is a string + resolve = String; + } else if (typeof object.length == "number") { + // the object is array-like + resolve = Array; + } + resolve.forEach(object, block, context); + } +}; + |