Loading api/current.xml +330 −15 Original line number Diff line number Diff line Loading @@ -27761,6 +27761,17 @@ visibility="public" > </field> <field name="ACTION_USER_PRESENT" type="java.lang.String" transient="false" volatile="false" value=""android.intent.action.USER_PRESENT"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="ACTION_VIEW" type="java.lang.String" transient="false" Loading Loading @@ -108917,6 +108928,21 @@ <parameter name="what" type="java.lang.Object"> </parameter> </method> <method name="isSelectingMetaTracker" return="boolean" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="text" type="java.lang.CharSequence"> </parameter> <parameter name="what" type="java.lang.Object"> </parameter> </method> <method name="onKeyDown" return="boolean" abstract="false" Loading Loading @@ -123194,6 +123220,19 @@ visibility="public" > </method> <method name="checkInputConnectionProxy" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="view" type="android.view.View"> </parameter> </method> <method name="clearAnimation" return="void" abstract="false" Loading Loading @@ -135200,7 +135239,7 @@ type="int" transient="false" volatile="false" value="5" value="6" static="true" final="true" deprecated="not deprecated" Loading @@ -135211,7 +135250,7 @@ type="int" transient="false" volatile="false" value="1" value="2" static="true" final="true" deprecated="not deprecated" Loading @@ -135222,7 +135261,7 @@ type="int" transient="false" volatile="false" value="4" value="5" static="true" final="true" deprecated="not deprecated" Loading @@ -135233,7 +135272,7 @@ type="int" transient="false" volatile="false" value="0" value="1" static="true" final="true" deprecated="not deprecated" Loading @@ -135244,7 +135283,7 @@ type="int" transient="false" volatile="false" value="2" value="3" static="true" final="true" deprecated="not deprecated" Loading @@ -135255,51 +135294,51 @@ type="int" transient="false" volatile="false" value="3" value="4" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="IME_FLAG_NO_ENTER_ACTION" <field name="IME_ACTION_UNSPECIFIED" type="int" transient="false" volatile="false" value="1073741824" value="0" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="IME_MASK_ACTION" <field name="IME_FLAG_NO_ENTER_ACTION" type="int" transient="false" volatile="false" value="255" value="1073741824" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="IME_NORMAL" <field name="IME_MASK_ACTION" type="int" transient="false" volatile="false" value="0" value="255" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="IME_UNDEFINED" <field name="IME_NULL" type="int" transient="false" volatile="false" value="-2147483648" value="0" static="true" final="true" deprecated="not deprecated" Loading Loading @@ -135501,6 +135540,17 @@ visibility="public" > </field> <field name="FLAG_SELECTING" type="int" transient="false" volatile="false" value="2" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="FLAG_SINGLE_LINE" type="int" transient="false" Loading Loading @@ -136071,6 +136121,271 @@ > </field> </interface> <class name="InputConnectionWrapper" extends="java.lang.Object" abstract="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <implements name="android.view.inputmethod.InputConnection"> </implements> <constructor name="InputConnectionWrapper" type="android.view.inputmethod.InputConnectionWrapper" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="target" type="android.view.inputmethod.InputConnection"> </parameter> </constructor> <method name="beginBatchEdit" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="clearMetaKeyStates" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="states" type="int"> </parameter> </method> <method name="commitCompletion" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="text" type="android.view.inputmethod.CompletionInfo"> </parameter> </method> <method name="commitText" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="text" type="java.lang.CharSequence"> </parameter> <parameter name="newCursorPosition" type="int"> </parameter> </method> <method name="deleteSurroundingText" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="leftLength" type="int"> </parameter> <parameter name="rightLength" type="int"> </parameter> </method> <method name="endBatchEdit" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="finishComposingText" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getCursorCapsMode" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="reqModes" type="int"> </parameter> </method> <method name="getExtractedText" return="android.view.inputmethod.ExtractedText" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="request" type="android.view.inputmethod.ExtractedTextRequest"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <method name="getTextAfterCursor" return="java.lang.CharSequence" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="n" type="int"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <method name="getTextBeforeCursor" return="java.lang.CharSequence" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="n" type="int"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <method name="performContextMenuAction" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="id" type="int"> </parameter> </method> <method name="performEditorAction" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="editorAction" type="int"> </parameter> </method> <method name="performPrivateCommand" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="action" type="java.lang.String"> </parameter> <parameter name="data" type="android.os.Bundle"> </parameter> </method> <method name="reportFullscreenMode" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="enabled" type="boolean"> </parameter> </method> <method name="sendKeyEvent" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="event" type="android.view.KeyEvent"> </parameter> </method> <method name="setComposingText" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="text" type="java.lang.CharSequence"> </parameter> <parameter name="newCursorPosition" type="int"> </parameter> </method> <method name="setSelection" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="start" type="int"> </parameter> <parameter name="end" type="int"> </parameter> </method> </class> <interface name="InputMethod" abstract="true" static="false" Loading Loading @@ -155853,7 +156168,7 @@ <parameter name="depth" type="int"> </parameter> </method> <method name="didTouchFocusSelectAll" <method name="didTouchFocusSelect" return="boolean" abstract="false" native="false" core/java/android/content/Intent.java +8 −0 Original line number Diff line number Diff line Loading @@ -1042,6 +1042,14 @@ public class Intent implements Parcelable { */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON"; /** * Broadcast Action: Sent when the user is present after device wakes up (e.g when the * keyguard is gone). */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_USER_PRESENT= "android.intent.action.USER_PRESENT"; /** * Broadcast Action: The current time has changed. Sent every * minute. You can <em>not</em> receive this through components declared Loading core/java/android/content/pm/PackageParser.java +3 −2 Original line number Diff line number Diff line Loading @@ -260,8 +260,9 @@ public class PackageParser { boolean assetError = true; try { assmgr = new AssetManager(); if(assmgr.addAssetPath(mArchiveSourcePath) != 0) { parser = assmgr.openXmlResourceParser("AndroidManifest.xml"); int cookie = assmgr.addAssetPath(mArchiveSourcePath); if(cookie != 0) { parser = assmgr.openXmlResourceParser(cookie, "AndroidManifest.xml"); assetError = false; } else { Log.w(TAG, "Failed adding asset path:"+mArchiveSourcePath); Loading core/java/android/content/res/AssetManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -567,8 +567,8 @@ public final class AssetManager { /** * Add an additional set of assets to the asset manager. This can be * either a directory or ZIP file. Not for use by applications. A * zero return value indicates failure. * either a directory or ZIP file. Not for use by applications. Returns * the cookie of the added asset, or 0 on failure. * {@hide} */ public native final int addAssetPath(String path); Loading core/java/android/emoji/EmojiFactory.java 0 → 100644 +273 −0 Original line number Diff line number Diff line /* * 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.emoji; import android.graphics.Bitmap; import java.lang.ref.WeakReference; import java.util.LinkedHashMap; import java.util.Map; /** * A class for the factories which produce Emoji (pictgram) images. * This is intended to be used by IME, Email app, etc. * There's no plan to make this public for now. * @hide */ public final class EmojiFactory { // private static final String LOG_TAG = "EmojiFactory"; private int sCacheSize = 100; // HashMap for caching Bitmap object. In order not to make an cache object // blow up, we use LinkedHashMap with size limit. private class CustomLinkedHashMap<K, V> extends LinkedHashMap<K, V> { public CustomLinkedHashMap() { // These magic numbers are gotten from the source code of // LinkedHashMap.java and HashMap.java. super(16, 0.75f, true); } /* * If size() becomes more than sCacheSize, least recently used cache * is erased. * @see java.util.LinkedHashMap#removeEldestEntry(java.util.Map.Entry) */ @Override protected boolean removeEldestEntry(Map.Entry<K, V> eldest) { return size() > sCacheSize; } } // A pointer to native EmojiFactory object. private int mNativeEmojiFactory; private String mName; // Cache. private Map<Integer, WeakReference<Bitmap>> mCache; /** * @noinspection UnusedDeclaration */ /* * Private constructor that must received an already allocated native * EmojiFactory int (pointer). * * This can be called from JNI code. */ private EmojiFactory(int nativeEmojiFactory, String name) { mNativeEmojiFactory = nativeEmojiFactory; mName = name; mCache = new CustomLinkedHashMap<Integer, WeakReference<Bitmap>>(); } @Override protected void finalize() throws Throwable { try { nativeDestructor(mNativeEmojiFactory); } finally { super.finalize(); } } public String name() { return mName; } /** * Returns Bitmap object corresponding to the AndroidPua. * * Note that each Bitmap is cached by this class, which means that, if you modify a * Bitmap object (using setPos() method), all same emoji Bitmap will be modified. * If it is unacceptable, please copy the object before modifying it. * * @param pua A unicode codepoint. * @return Bitmap object when this factory knows the Bitmap relevant to the codepoint. * Otherwise null is returned. */ public synchronized Bitmap getBitmapFromAndroidPua(int pua) { WeakReference<Bitmap> cache = mCache.get(pua); if (cache == null) { Bitmap ret = nativeGetBitmapFromAndroidPua(mNativeEmojiFactory, pua); // There is no need to cache returned null, since in most cases it means there // is no map from the AndroidPua to a specific image. In other words, it usually does // not include the cost of creating Bitmap object. if (ret != null) { mCache.put(pua, new WeakReference<Bitmap>(ret)); } return ret; } else { Bitmap tmp = cache.get(); if (tmp == null) { Bitmap ret = nativeGetBitmapFromAndroidPua(mNativeEmojiFactory, pua); mCache.put(pua, new WeakReference<Bitmap>(ret)); return ret; } else { return tmp; } } } /** * Returns Bitmap object corresponding to the vendor specified sjis. * * See comments in getBitmapFromAndroidPua(). * * @param sjis sjis code specific to each career(vendor) * @return Bitmap object when this factory knows the Bitmap relevant to the code. Otherwise * null is returned. */ public synchronized Bitmap getBitmapFromVendorSpecificSjis(char sjis) { return getBitmapFromAndroidPua(getAndroidPuaFromVendorSpecificSjis(sjis)); } /** * Returns Bitmap object corresponding to the vendor specific Unicode. * * See comments in getBitmapFromAndroidPua(). * * @param vsp vendor specific PUA. * @return Bitmap object when this factory knows the Bitmap relevant to the code. Otherwise * null is returned. */ public synchronized Bitmap getBitmapFromVendorSpecificPua(int vsp) { return getBitmapFromAndroidPua(getAndroidPuaFromVendorSpecificPua(vsp)); } /** * Returns Unicode PUA for Android corresponding to the vendor specific sjis. * * @param sjis vendor specific sjis * @return Unicode PUA for Android, or -1 if there's no map for the sjis. */ public int getAndroidPuaFromVendorSpecificSjis(char sjis) { return nativeGetAndroidPuaFromVendorSpecificSjis(mNativeEmojiFactory, sjis); } /** * Returns vendor specific sjis corresponding to the Unicode AndroidPua. * * @param pua Unicode PUA for Android, * @return vendor specific sjis, or -1 if there's no map for the AndroidPua. */ public int getVendorSpecificSjisFromAndroidPua(int pua) { return nativeGetVendorSpecificSjisFromAndroidPua(mNativeEmojiFactory, pua); } /** * Returns Unicode PUA for Android corresponding to the vendor specific Unicode. * * @param vsp vendor specific PUA. * @return Unicode PUA for Android, or -1 if there's no map for the * Unicode. */ public int getAndroidPuaFromVendorSpecificPua(int vsp) { return nativeGetAndroidPuaFromVendorSpecificPua(mNativeEmojiFactory, vsp); } public String getAndroidPuaFromVendorSpecificPua(String vspString) { if (vspString == null) { return null; } int minVsp = nativeGetMinimumVendorSpecificPua(mNativeEmojiFactory); int maxVsp = nativeGetMaximumVendorSpecificPua(mNativeEmojiFactory); int len = vspString.length(); int[] codePoints = new int[vspString.codePointCount(0, len)]; int new_len = 0; for (int i = 0; i < len; i = vspString.offsetByCodePoints(i, 1), new_len++) { int codePoint = vspString.codePointAt(i); if (minVsp <= codePoint && codePoint <= maxVsp) { int newCodePoint = getAndroidPuaFromVendorSpecificPua(codePoint); if (newCodePoint > 0) { codePoints[new_len] = newCodePoint; continue; } } codePoints[new_len] = codePoint; } return new String(codePoints, 0, new_len); } /** * Returns vendor specific Unicode corresponding to the Unicode AndroidPua. * * @param pua Unicode PUA for Android, * @return vendor specific sjis, or -1 if there's no map for the AndroidPua. */ public int getVendorSpecificPuaFromAndroidPua(int pua) { return nativeGetVendorSpecificPuaFromAndroidPua(mNativeEmojiFactory, pua); } public String getVendorSpecificPuaFromAndroidPua(String puaString) { if (puaString == null) { return null; } int minVsp = nativeGetMinimumAndroidPua(mNativeEmojiFactory); int maxVsp = nativeGetMaximumAndroidPua(mNativeEmojiFactory); int len = puaString.length(); int[] codePoints = new int[puaString.codePointCount(0, len)]; int new_len = 0; for (int i = 0; i < len; i = puaString.offsetByCodePoints(i, 1), new_len++) { int codePoint = puaString.codePointAt(i); if (minVsp <= codePoint && codePoint <= maxVsp) { int newCodePoint = getVendorSpecificPuaFromAndroidPua(codePoint); if (newCodePoint > 0) { codePoints[new_len] = newCodePoint; continue; } } codePoints[new_len] = codePoint; } return new String(codePoints, 0, new_len); } /** * Constructs an instance of EmojiFactory corresponding to the name. * * @param class_name Name of the factory. This must include complete package name. * @return A concrete EmojiFactory instance corresponding to factory_name. * If factory_name is invalid, null is returned. */ public static native EmojiFactory newInstance(String class_name); /** * Constructs an instance of available EmojiFactory. * * @return A concrete EmojiFactory instance. If there are several available * EmojiFactory class, preferred one is chosen by the system. If there isn't, null * is returned. */ public static native EmojiFactory newAvailableInstance(); // native methods private native void nativeDestructor(int factory); private native Bitmap nativeGetBitmapFromAndroidPua(int nativeEmojiFactory, int AndroidPua); private native int nativeGetAndroidPuaFromVendorSpecificSjis(int nativeEmojiFactory, char sjis); private native int nativeGetVendorSpecificSjisFromAndroidPua(int nativeEmojiFactory, int pua); private native int nativeGetAndroidPuaFromVendorSpecificPua(int nativeEmojiFactory, int vsp); private native int nativeGetVendorSpecificPuaFromAndroidPua(int nativeEmojiFactory, int pua); private native int nativeGetMaximumVendorSpecificPua(int nativeEmojiFactory); private native int nativeGetMinimumVendorSpecificPua(int nativeEmojiFactory); private native int nativeGetMaximumAndroidPua(int nativeEmojiFactory); private native int nativeGetMinimumAndroidPua(int nativeEmojiFactory); } Loading
api/current.xml +330 −15 Original line number Diff line number Diff line Loading @@ -27761,6 +27761,17 @@ visibility="public" > </field> <field name="ACTION_USER_PRESENT" type="java.lang.String" transient="false" volatile="false" value=""android.intent.action.USER_PRESENT"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="ACTION_VIEW" type="java.lang.String" transient="false" Loading Loading @@ -108917,6 +108928,21 @@ <parameter name="what" type="java.lang.Object"> </parameter> </method> <method name="isSelectingMetaTracker" return="boolean" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="text" type="java.lang.CharSequence"> </parameter> <parameter name="what" type="java.lang.Object"> </parameter> </method> <method name="onKeyDown" return="boolean" abstract="false" Loading Loading @@ -123194,6 +123220,19 @@ visibility="public" > </method> <method name="checkInputConnectionProxy" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="view" type="android.view.View"> </parameter> </method> <method name="clearAnimation" return="void" abstract="false" Loading Loading @@ -135200,7 +135239,7 @@ type="int" transient="false" volatile="false" value="5" value="6" static="true" final="true" deprecated="not deprecated" Loading @@ -135211,7 +135250,7 @@ type="int" transient="false" volatile="false" value="1" value="2" static="true" final="true" deprecated="not deprecated" Loading @@ -135222,7 +135261,7 @@ type="int" transient="false" volatile="false" value="4" value="5" static="true" final="true" deprecated="not deprecated" Loading @@ -135233,7 +135272,7 @@ type="int" transient="false" volatile="false" value="0" value="1" static="true" final="true" deprecated="not deprecated" Loading @@ -135244,7 +135283,7 @@ type="int" transient="false" volatile="false" value="2" value="3" static="true" final="true" deprecated="not deprecated" Loading @@ -135255,51 +135294,51 @@ type="int" transient="false" volatile="false" value="3" value="4" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="IME_FLAG_NO_ENTER_ACTION" <field name="IME_ACTION_UNSPECIFIED" type="int" transient="false" volatile="false" value="1073741824" value="0" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="IME_MASK_ACTION" <field name="IME_FLAG_NO_ENTER_ACTION" type="int" transient="false" volatile="false" value="255" value="1073741824" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="IME_NORMAL" <field name="IME_MASK_ACTION" type="int" transient="false" volatile="false" value="0" value="255" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="IME_UNDEFINED" <field name="IME_NULL" type="int" transient="false" volatile="false" value="-2147483648" value="0" static="true" final="true" deprecated="not deprecated" Loading Loading @@ -135501,6 +135540,17 @@ visibility="public" > </field> <field name="FLAG_SELECTING" type="int" transient="false" volatile="false" value="2" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="FLAG_SINGLE_LINE" type="int" transient="false" Loading Loading @@ -136071,6 +136121,271 @@ > </field> </interface> <class name="InputConnectionWrapper" extends="java.lang.Object" abstract="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <implements name="android.view.inputmethod.InputConnection"> </implements> <constructor name="InputConnectionWrapper" type="android.view.inputmethod.InputConnectionWrapper" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="target" type="android.view.inputmethod.InputConnection"> </parameter> </constructor> <method name="beginBatchEdit" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="clearMetaKeyStates" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="states" type="int"> </parameter> </method> <method name="commitCompletion" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="text" type="android.view.inputmethod.CompletionInfo"> </parameter> </method> <method name="commitText" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="text" type="java.lang.CharSequence"> </parameter> <parameter name="newCursorPosition" type="int"> </parameter> </method> <method name="deleteSurroundingText" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="leftLength" type="int"> </parameter> <parameter name="rightLength" type="int"> </parameter> </method> <method name="endBatchEdit" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="finishComposingText" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getCursorCapsMode" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="reqModes" type="int"> </parameter> </method> <method name="getExtractedText" return="android.view.inputmethod.ExtractedText" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="request" type="android.view.inputmethod.ExtractedTextRequest"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <method name="getTextAfterCursor" return="java.lang.CharSequence" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="n" type="int"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <method name="getTextBeforeCursor" return="java.lang.CharSequence" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="n" type="int"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <method name="performContextMenuAction" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="id" type="int"> </parameter> </method> <method name="performEditorAction" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="editorAction" type="int"> </parameter> </method> <method name="performPrivateCommand" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="action" type="java.lang.String"> </parameter> <parameter name="data" type="android.os.Bundle"> </parameter> </method> <method name="reportFullscreenMode" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="enabled" type="boolean"> </parameter> </method> <method name="sendKeyEvent" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="event" type="android.view.KeyEvent"> </parameter> </method> <method name="setComposingText" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="text" type="java.lang.CharSequence"> </parameter> <parameter name="newCursorPosition" type="int"> </parameter> </method> <method name="setSelection" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="start" type="int"> </parameter> <parameter name="end" type="int"> </parameter> </method> </class> <interface name="InputMethod" abstract="true" static="false" Loading Loading @@ -155853,7 +156168,7 @@ <parameter name="depth" type="int"> </parameter> </method> <method name="didTouchFocusSelectAll" <method name="didTouchFocusSelect" return="boolean" abstract="false" native="false"
core/java/android/content/Intent.java +8 −0 Original line number Diff line number Diff line Loading @@ -1042,6 +1042,14 @@ public class Intent implements Parcelable { */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON"; /** * Broadcast Action: Sent when the user is present after device wakes up (e.g when the * keyguard is gone). */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_USER_PRESENT= "android.intent.action.USER_PRESENT"; /** * Broadcast Action: The current time has changed. Sent every * minute. You can <em>not</em> receive this through components declared Loading
core/java/android/content/pm/PackageParser.java +3 −2 Original line number Diff line number Diff line Loading @@ -260,8 +260,9 @@ public class PackageParser { boolean assetError = true; try { assmgr = new AssetManager(); if(assmgr.addAssetPath(mArchiveSourcePath) != 0) { parser = assmgr.openXmlResourceParser("AndroidManifest.xml"); int cookie = assmgr.addAssetPath(mArchiveSourcePath); if(cookie != 0) { parser = assmgr.openXmlResourceParser(cookie, "AndroidManifest.xml"); assetError = false; } else { Log.w(TAG, "Failed adding asset path:"+mArchiveSourcePath); Loading
core/java/android/content/res/AssetManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -567,8 +567,8 @@ public final class AssetManager { /** * Add an additional set of assets to the asset manager. This can be * either a directory or ZIP file. Not for use by applications. A * zero return value indicates failure. * either a directory or ZIP file. Not for use by applications. Returns * the cookie of the added asset, or 0 on failure. * {@hide} */ public native final int addAssetPath(String path); Loading
core/java/android/emoji/EmojiFactory.java 0 → 100644 +273 −0 Original line number Diff line number Diff line /* * 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.emoji; import android.graphics.Bitmap; import java.lang.ref.WeakReference; import java.util.LinkedHashMap; import java.util.Map; /** * A class for the factories which produce Emoji (pictgram) images. * This is intended to be used by IME, Email app, etc. * There's no plan to make this public for now. * @hide */ public final class EmojiFactory { // private static final String LOG_TAG = "EmojiFactory"; private int sCacheSize = 100; // HashMap for caching Bitmap object. In order not to make an cache object // blow up, we use LinkedHashMap with size limit. private class CustomLinkedHashMap<K, V> extends LinkedHashMap<K, V> { public CustomLinkedHashMap() { // These magic numbers are gotten from the source code of // LinkedHashMap.java and HashMap.java. super(16, 0.75f, true); } /* * If size() becomes more than sCacheSize, least recently used cache * is erased. * @see java.util.LinkedHashMap#removeEldestEntry(java.util.Map.Entry) */ @Override protected boolean removeEldestEntry(Map.Entry<K, V> eldest) { return size() > sCacheSize; } } // A pointer to native EmojiFactory object. private int mNativeEmojiFactory; private String mName; // Cache. private Map<Integer, WeakReference<Bitmap>> mCache; /** * @noinspection UnusedDeclaration */ /* * Private constructor that must received an already allocated native * EmojiFactory int (pointer). * * This can be called from JNI code. */ private EmojiFactory(int nativeEmojiFactory, String name) { mNativeEmojiFactory = nativeEmojiFactory; mName = name; mCache = new CustomLinkedHashMap<Integer, WeakReference<Bitmap>>(); } @Override protected void finalize() throws Throwable { try { nativeDestructor(mNativeEmojiFactory); } finally { super.finalize(); } } public String name() { return mName; } /** * Returns Bitmap object corresponding to the AndroidPua. * * Note that each Bitmap is cached by this class, which means that, if you modify a * Bitmap object (using setPos() method), all same emoji Bitmap will be modified. * If it is unacceptable, please copy the object before modifying it. * * @param pua A unicode codepoint. * @return Bitmap object when this factory knows the Bitmap relevant to the codepoint. * Otherwise null is returned. */ public synchronized Bitmap getBitmapFromAndroidPua(int pua) { WeakReference<Bitmap> cache = mCache.get(pua); if (cache == null) { Bitmap ret = nativeGetBitmapFromAndroidPua(mNativeEmojiFactory, pua); // There is no need to cache returned null, since in most cases it means there // is no map from the AndroidPua to a specific image. In other words, it usually does // not include the cost of creating Bitmap object. if (ret != null) { mCache.put(pua, new WeakReference<Bitmap>(ret)); } return ret; } else { Bitmap tmp = cache.get(); if (tmp == null) { Bitmap ret = nativeGetBitmapFromAndroidPua(mNativeEmojiFactory, pua); mCache.put(pua, new WeakReference<Bitmap>(ret)); return ret; } else { return tmp; } } } /** * Returns Bitmap object corresponding to the vendor specified sjis. * * See comments in getBitmapFromAndroidPua(). * * @param sjis sjis code specific to each career(vendor) * @return Bitmap object when this factory knows the Bitmap relevant to the code. Otherwise * null is returned. */ public synchronized Bitmap getBitmapFromVendorSpecificSjis(char sjis) { return getBitmapFromAndroidPua(getAndroidPuaFromVendorSpecificSjis(sjis)); } /** * Returns Bitmap object corresponding to the vendor specific Unicode. * * See comments in getBitmapFromAndroidPua(). * * @param vsp vendor specific PUA. * @return Bitmap object when this factory knows the Bitmap relevant to the code. Otherwise * null is returned. */ public synchronized Bitmap getBitmapFromVendorSpecificPua(int vsp) { return getBitmapFromAndroidPua(getAndroidPuaFromVendorSpecificPua(vsp)); } /** * Returns Unicode PUA for Android corresponding to the vendor specific sjis. * * @param sjis vendor specific sjis * @return Unicode PUA for Android, or -1 if there's no map for the sjis. */ public int getAndroidPuaFromVendorSpecificSjis(char sjis) { return nativeGetAndroidPuaFromVendorSpecificSjis(mNativeEmojiFactory, sjis); } /** * Returns vendor specific sjis corresponding to the Unicode AndroidPua. * * @param pua Unicode PUA for Android, * @return vendor specific sjis, or -1 if there's no map for the AndroidPua. */ public int getVendorSpecificSjisFromAndroidPua(int pua) { return nativeGetVendorSpecificSjisFromAndroidPua(mNativeEmojiFactory, pua); } /** * Returns Unicode PUA for Android corresponding to the vendor specific Unicode. * * @param vsp vendor specific PUA. * @return Unicode PUA for Android, or -1 if there's no map for the * Unicode. */ public int getAndroidPuaFromVendorSpecificPua(int vsp) { return nativeGetAndroidPuaFromVendorSpecificPua(mNativeEmojiFactory, vsp); } public String getAndroidPuaFromVendorSpecificPua(String vspString) { if (vspString == null) { return null; } int minVsp = nativeGetMinimumVendorSpecificPua(mNativeEmojiFactory); int maxVsp = nativeGetMaximumVendorSpecificPua(mNativeEmojiFactory); int len = vspString.length(); int[] codePoints = new int[vspString.codePointCount(0, len)]; int new_len = 0; for (int i = 0; i < len; i = vspString.offsetByCodePoints(i, 1), new_len++) { int codePoint = vspString.codePointAt(i); if (minVsp <= codePoint && codePoint <= maxVsp) { int newCodePoint = getAndroidPuaFromVendorSpecificPua(codePoint); if (newCodePoint > 0) { codePoints[new_len] = newCodePoint; continue; } } codePoints[new_len] = codePoint; } return new String(codePoints, 0, new_len); } /** * Returns vendor specific Unicode corresponding to the Unicode AndroidPua. * * @param pua Unicode PUA for Android, * @return vendor specific sjis, or -1 if there's no map for the AndroidPua. */ public int getVendorSpecificPuaFromAndroidPua(int pua) { return nativeGetVendorSpecificPuaFromAndroidPua(mNativeEmojiFactory, pua); } public String getVendorSpecificPuaFromAndroidPua(String puaString) { if (puaString == null) { return null; } int minVsp = nativeGetMinimumAndroidPua(mNativeEmojiFactory); int maxVsp = nativeGetMaximumAndroidPua(mNativeEmojiFactory); int len = puaString.length(); int[] codePoints = new int[puaString.codePointCount(0, len)]; int new_len = 0; for (int i = 0; i < len; i = puaString.offsetByCodePoints(i, 1), new_len++) { int codePoint = puaString.codePointAt(i); if (minVsp <= codePoint && codePoint <= maxVsp) { int newCodePoint = getVendorSpecificPuaFromAndroidPua(codePoint); if (newCodePoint > 0) { codePoints[new_len] = newCodePoint; continue; } } codePoints[new_len] = codePoint; } return new String(codePoints, 0, new_len); } /** * Constructs an instance of EmojiFactory corresponding to the name. * * @param class_name Name of the factory. This must include complete package name. * @return A concrete EmojiFactory instance corresponding to factory_name. * If factory_name is invalid, null is returned. */ public static native EmojiFactory newInstance(String class_name); /** * Constructs an instance of available EmojiFactory. * * @return A concrete EmojiFactory instance. If there are several available * EmojiFactory class, preferred one is chosen by the system. If there isn't, null * is returned. */ public static native EmojiFactory newAvailableInstance(); // native methods private native void nativeDestructor(int factory); private native Bitmap nativeGetBitmapFromAndroidPua(int nativeEmojiFactory, int AndroidPua); private native int nativeGetAndroidPuaFromVendorSpecificSjis(int nativeEmojiFactory, char sjis); private native int nativeGetVendorSpecificSjisFromAndroidPua(int nativeEmojiFactory, int pua); private native int nativeGetAndroidPuaFromVendorSpecificPua(int nativeEmojiFactory, int vsp); private native int nativeGetVendorSpecificPuaFromAndroidPua(int nativeEmojiFactory, int pua); private native int nativeGetMaximumVendorSpecificPua(int nativeEmojiFactory); private native int nativeGetMinimumVendorSpecificPua(int nativeEmojiFactory); private native int nativeGetMaximumAndroidPua(int nativeEmojiFactory); private native int nativeGetMinimumAndroidPua(int nativeEmojiFactory); }