From f69b61b49638c2ac9e344cd3096a19cf6a8582e9 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi <> Date: Fri, 17 Apr 2009 11:22:35 -0700 Subject: [PATCH 01/72] AI 146751: Finalize AudioTrack javadoc. BUG=1795799 Automated import of CL 146751 --- media/java/android/media/AudioTrack.java | 111 ++++++++++++++--------- 1 file changed, 67 insertions(+), 44 deletions(-) diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index 4196ef398b65..3cd841de4145 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -32,22 +32,24 @@ import android.util.Log; * It allows to stream PCM audio buffers to the audio hardware for playback. This is * achieved by "pushing" the data to the AudioTrack object using one of the * {@link #write(byte[], int, int)} and {@link #write(short[], int, int)} methods. - *

An AudioTrack instance can operate under two modes: static of streaming.
- * The Streaming mode consists in continuously writing data to the AudioTrack, using one - * of the write() methods. These are blocking and return when the data has been transferred - * from the Java layer to the native layer, and is queued for playback. The streaming mode + * + *

An AudioTrack instance can operate under two modes: static or streaming.
+ * In Streaming mode, the application writes a continuous stream of data to the AudioTrack, using + * one of the write() methods. These are blocking and return when the data has been transferred + * from the Java layer to the native layer and queued for playback. The streaming mode * is most useful when playing blocks of audio data that for instance are: *

* The static mode is to be chosen when dealing with short sounds that fit in memory and - * that need to be played with the smallest latency possible. Static mode AudioTrack instances can - * play the sound without the need to transfer the audio data from Java to the audio hardware + * that need to be played with the smallest latency possible. AudioTrack instances in static mode + * can play the sound without the need to transfer the audio data from Java to native layer * each time the sound is to be played. The static mode will therefore be preferred for UI and * game sounds that are played often, and with the smallest overhead possible. + * *

Upon creation, an AudioTrack object initializes its associated audio buffer. * The size of this buffer, specified during the construction, determines how long an AudioTrack * can play before running out of data.
@@ -66,11 +68,11 @@ public class AudioTrack /** Maximum value for a channel volume */ private static final float VOLUME_MAX = 1.0f; - /** state of an AudioTrack this is stopped */ + /** indicates AudioTrack state is stopped */ public static final int PLAYSTATE_STOPPED = 1; // matches SL_PLAYSTATE_STOPPED - /** state of an AudioTrack this is paused */ + /** indicates AudioTrack state is paused */ public static final int PLAYSTATE_PAUSED = 2; // matches SL_PLAYSTATE_PAUSED - /** state of an AudioTrack this is playing */ + /** indicates AudioTrack state is playing */ public static final int PLAYSTATE_PLAYING = 3; // matches SL_PLAYSTATE_PLAYING /** @@ -85,7 +87,7 @@ public class AudioTrack public static final int MODE_STREAM = 1; /** - * State of an AudioTrack that was not successfully initialized upon creation + * State of an AudioTrack that was not successfully initialized upon creation. */ public static final int STATE_UNINITIALIZED = 0; /** @@ -126,11 +128,11 @@ public class AudioTrack // Events: // to keep in sync with frameworks/base/include/media/AudioTrack.h /** - * Event id for when the playback head has reached a previously set marker. + * Event id denotes when playback head has reached a previously set marker. */ private static final int NATIVE_EVENT_MARKER = 3; /** - * Event id for when the previously set update period has passed during playback. + * Event id denotes when previously set update period has elapsed during playback. */ private static final int NATIVE_EVENT_NEW_POS = 4; @@ -141,11 +143,11 @@ public class AudioTrack // Member variables //-------------------- /** - * Indicates the state of the AudioTrack instance + * Indicates the state of the AudioTrack instance. */ private int mState = STATE_UNINITIALIZED; /** - * Indicates the play state of the AudioTrack instance + * Indicates the play state of the AudioTrack instance. */ private int mPlayState = PLAYSTATE_STOPPED; /** @@ -159,7 +161,7 @@ public class AudioTrack */ private OnPlaybackPositionUpdateListener mPositionListener = null; /** - * Lock to protect event listener updates against event notifications + * Lock to protect event listener updates against event notifications. */ private final Object mPositionListenerLock = new Object(); /** @@ -167,11 +169,11 @@ public class AudioTrack */ private int mNativeBufferSizeInBytes = 0; /** - * Handler for marker events coming from the native code + * Handler for marker events coming from the native code. */ private NativeEventHandlerDelegate mEventHandlerDelegate = null; /** - * Looper associated with the thread that creates the AudioTrack instance + * Looper associated with the thread that creates the AudioTrack instance. */ private Looper mInitializationLooper = null; /** @@ -179,7 +181,7 @@ public class AudioTrack */ private int mSampleRate = 22050; /** - * The number of input audio channels (1 is mono, 2 is stereo) + * The number of input audio channels (1 is mono, 2 is stereo). */ private int mChannelCount = 1; /** @@ -194,7 +196,7 @@ public class AudioTrack */ private int mDataLoadMode = MODE_STREAM; /** - * The current audio channel configuration + * The current audio channel configuration. */ private int mChannelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO; /** @@ -209,7 +211,7 @@ public class AudioTrack // Used exclusively by native code //-------------------- /** - * Accessed by native methods: provides access to C++ AudioTrack object + * Accessed by native methods: provides access to C++ AudioTrack object. */ @SuppressWarnings("unused") private int mNativeTrackInJavaObj; @@ -227,17 +229,14 @@ public class AudioTrack /** * Class constructor. * @param streamType the type of the audio stream. See - * {@link AudioManager#STREAM_VOICE_CALL}, {@link AudioManager#STREAM_SYSTEM}, * {@link AudioManager#STREAM_RING}, {@link AudioManager#STREAM_MUSIC} and * {@link AudioManager#STREAM_ALARM} * @param sampleRateInHz the sample rate expressed in Hertz. Examples of rates are (but * not limited to) 44100, 22050 and 11025. * @param channelConfig describes the configuration of the audio channels. - * See {@link AudioFormat#CHANNEL_CONFIGURATION_MONO} and * {@link AudioFormat#CHANNEL_CONFIGURATION_STEREO} - * @param audioFormat the format in which the audio data is represented. * See {@link AudioFormat#ENCODING_PCM_16BIT} and * {@link AudioFormat#ENCODING_PCM_8BIT} @@ -245,6 +244,9 @@ public class AudioTrack * from for playback. If using the AudioTrack in streaming mode, you can write data into * this buffer in smaller chunks than this size. If using the AudioTrack in static mode, * this is the maximum size of the sound that will be played for this instance. + * See {@link #getMinBufferSize(int, int, int)} to determine the minimum required buffer size + * for the successful creation of an AudioTrack instance in streaming mode. Using values + * smaller than getMinBufferSize() will result in an initialization failure. * @param mode streaming or static buffer. See {@link #MODE_STATIC} and {@link #MODE_STREAM} * @throws java.lang.IllegalArgumentException */ @@ -423,8 +425,8 @@ public class AudioTrack } /** - * Returns the current playback rate in Hz. Note that this rate may differ from one set using - * {@link #setPlaybackRate(int)} as the value effectively set is implementation-dependent. + * Returns the current playback rate in Hz. Note that this rate may differ from the one set + * with {@link #setPlaybackRate(int)} as the value effectively used is implementation-dependent. */ public int getPlaybackRate() { return native_get_playback_rate(); @@ -470,6 +472,9 @@ public class AudioTrack * AudioTrack instance has been created to check if it was initialized * properly. This ensures that the appropriate hardware resources have been * acquired. + * @see #STATE_INITIALIZED + * @see #STATE_NO_STATIC_DATA + * @see #STATE_UNINITIALIZED */ public int getState() { return mState; @@ -486,28 +491,28 @@ public class AudioTrack } /** - * Returns the native frame count used by the hardware + * Returns the native frame count used by the hardware. */ protected int getNativeFrameCount() { return native_get_native_frame_count(); } /** - * @return marker position in frames + * Returns marker position expressed in frames. */ public int getNotificationMarkerPosition() { return native_get_marker_pos(); } /** - * @return update period in frames + * Returns the notification update period expressed in frames. */ public int getPositionNotificationPeriod() { return native_get_pos_update_period(); } /** - * @return playback head position in frames + * Returns the playback head position expressed in frames */ public int getPlaybackHeadPosition() { return native_get_position(); @@ -522,7 +527,9 @@ public class AudioTrack /** * Returns the minimum buffer size required for the successful creation of an AudioTrack - * object to be created in the {@link #MODE_STREAM} mode. + * object to be created in the {@link #MODE_STREAM} mode. Note that this size doesn't + * guarantee a smooth playback under load, and higher values should be chosen according to + * the expected frequency at which the buffer will be refilled with additional data to play. * @param sampleRateInHz the sample rate expressed in Hertz. * @param channelConfig describes the configuration of the audio channels. * See {@link AudioFormat#CHANNEL_CONFIGURATION_MONO} and @@ -533,7 +540,7 @@ public class AudioTrack * @return {@link #ERROR_BAD_VALUE} if an invalid parameter was passed, * or {@link #ERROR} if the implementation was unable to query the hardware for its output * properties, - * or the minimum buffer size expressed in number of bytes. + * or the minimum buffer size expressed in bytes. */ static public int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat) { int channelCount = 0; @@ -577,13 +584,22 @@ public class AudioTrack /** * Sets the listener the AudioTrack notifies when a previously set marker is reached or * for each periodic playback head position update. + * Notifications will be received in the same thread as the one in which the AudioTrack + * instance was created. * @param listener */ public void setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener listener) { setPlaybackPositionUpdateListener(listener, null); } - + /** + * Sets the listener the AudioTrack notifies when a previously set marker is reached or + * for each periodic playback head position update. + * Use this method to receive AudioTrack events in the Handler associated with another + * thread than the one in which you created the AudioTrack instance. + * @param listener + * @param handler the Handler that will receive the event notification messages. + */ public void setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener listener, Handler handler) { synchronized (mPositionListenerLock) { @@ -636,13 +652,17 @@ public class AudioTrack * the audio data will be consumed and played back, not the original sampling rate of the * content. Setting it to half the sample rate of the content will cause the playback to * last twice as long, but will also result result in a negative pitch shift. - * The current implementation supports a maximum sample rate of twice the hardware output - * sample rate (see {@link #getNativeOutputSampleRate(int)}). Use {@link #getSampleRate()} to - * check the rate actually used in hardware after potential clamping. - * @param sampleRateInHz + * The current implementation supports a maximum sample rate of 64kHz. + * Use {@link #getSampleRate()} to check the rate actually used in hardware after + * potential clamping. + * @param sampleRateInHz the sample rate expressed in Hz * @return error code or success, see {@link #SUCCESS}, {@link #ERROR_BAD_VALUE}, * {@link #ERROR_INVALID_OPERATION} */ + // FIXME: the implementation should support twice the hardware output sample rate + // (see {@link #getNativeOutputSampleRate(int)}), but currently + // due to the representation of the sample rate in the native layer, the sample rate + // is limited to 65535Hz public int setPlaybackRate(int sampleRateInHz) { if (mState != STATE_INITIALIZED) { return ERROR_INVALID_OPERATION; @@ -656,7 +676,7 @@ public class AudioTrack /** - * + * Sets the position of the notification marker. * @param markerInFrames marker in frames * @return error code or success, see {@link #SUCCESS}, {@link #ERROR_BAD_VALUE}, * {@link #ERROR_INVALID_OPERATION} @@ -670,7 +690,8 @@ public class AudioTrack /** - * @param periodInFrames update period in frames + * Sets the period for the periodic notification event. + * @param periodInFrames update period expressed in frames * @return error code or success, see {@link #SUCCESS}, {@link #ERROR_INVALID_OPERATION} */ public int setPositionNotificationPeriod(int periodInFrames) { @@ -683,7 +704,7 @@ public class AudioTrack /** * Sets the playback head position. The track must be stopped for the position to be changed. - * @param positionInFrames playback head position in frames + * @param positionInFrames playback head position expressed in frames * @return error code or success, see {@link #SUCCESS}, {@link #ERROR_BAD_VALUE}, * {@link #ERROR_INVALID_OPERATION} */ @@ -699,8 +720,8 @@ public class AudioTrack /** * Sets the loop points and the loop count. The loop can be infinite. - * @param startInFrames loop start marker in frames - * @param endInFrames loop end marker in frames + * @param startInFrames loop start marker expressed in frames + * @param endInFrames loop end marker expressed in frames * @param loopCount the number of times the loop is looped. * A value of -1 means infinite looping. * @return error code or success, see {@link #SUCCESS}, {@link #ERROR_BAD_VALUE}, @@ -797,7 +818,8 @@ public class AudioTrack /** * Writes the audio data to the audio hardware for playback. * @param audioData the array that holds the data to play. - * @param offsetInBytes the offset in audioData where the data to play starts. + * @param offsetInBytes the offset expressed in bytes in audioData where the data to play + * starts. * @param sizeInBytes the number of bytes to read in audioData after the offset. * @return the number of bytes that were written or {@link #ERROR_INVALID_OPERATION} * if the object wasn't properly initialized, or {@link #ERROR_BAD_VALUE} if @@ -827,7 +849,8 @@ public class AudioTrack /** * Writes the audio data to the audio hardware for playback. * @param audioData the array that holds the data to play. - * @param offsetInShorts the offset in audioData where the data to play starts. + * @param offsetInShorts the offset expressed in shorts in audioData where the data to play + * starts. * @param sizeInShorts the number of bytes to read in audioData after the offset. * @return the number of shorts that were written or {@link #ERROR_INVALID_OPERATION} * if the object wasn't properly initialized, or {@link #ERROR_BAD_VALUE} if -- GitLab From 62200dd153cc5d0d1f3222f169a51007fdb17667 Mon Sep 17 00:00:00 2001 From: Dave Sparks <> Date: Fri, 17 Apr 2009 11:29:35 -0700 Subject: [PATCH 02/72] AI 146754: Fix some problems in the SoundPool docs and add additional text. BUG=1795461 Automated import of CL 146754 --- media/java/android/media/SoundPool.java | 133 +++++++++++++++++------- 1 file changed, 95 insertions(+), 38 deletions(-) diff --git a/media/java/android/media/SoundPool.java b/media/java/android/media/SoundPool.java index ab3274b1aa66..b13c2e6ace1e 100644 --- a/media/java/android/media/SoundPool.java +++ b/media/java/android/media/SoundPool.java @@ -46,6 +46,19 @@ import java.io.IOException; * number of streams helps to cap CPU loading and reducing the likelihood that * audio mixing will impact visuals or UI performance.

* + *

Sounds can be looped by setting a non-zero loop value. A value of -1 + * causes the sound to loop forever. In this case, the application must + * explicitly call the stop() function to stop the sound. Any other non-zero + * value will cause the sound to repeat the specified number of times, e.g. + * a value of 3 causes the sound to play a total of 4 times.

+ * + *

The playback rate can also be changed. A playback rate of 1.0 causes + * the sound to play at its original frequency (resampled, if necessary, + * to the hardware output frequency). A playback rate of 2.0 causes the + * sound to play at twice its original frequency, and a playback rate of + * 0.5 causes it to play at half its original frequency. The playback + * rate range is 0.5 to 2.0.

+ * *

Priority runs low to high, i.e. higher numbers are higher priority. * Priority is used when a call to play() would cause the number of active * streams to exceed the value established by the maxStreams parameter when @@ -72,6 +85,13 @@ import java.io.IOException; * adjusting the playback rate in real-time for doppler or synthesis * effects.

* + *

Note that since streams can be stopped due to resource constraints, the + * streamID is a reference to a particular instance of a stream. If the stream + * is stopped to allow a higher priority stream to play, the stream is no + * longer be valid. However, the application is allowed to call methods on + * the streamID without error. This may help simplify program logic since + * the application need not concern itself with the stream lifecycle.

+ * *

In our example, when the player has completed the level, the game * logic should call SoundPool.release() to release all the native resources * in use and then set the SoundPool reference to null. If the player starts @@ -104,10 +124,11 @@ public class SoundPool } /** - * Load the sound from the specified path - * + * Load the sound from the specified path. + * * @param path the path to the audio file - * @param priority the priority of the sound. Currently has no effect. + * @param priority the priority of the sound. Currently has no effect. Use + * a value of 1 for future compatibility. * @return a sound ID. This value can be used to play or unload the sound. */ public int load(String path, int priority) @@ -133,17 +154,18 @@ public class SoundPool } /** - * Load the sound from the specified APK resource + * Load the sound from the specified APK resource. * - *

Note that the extension is dropped. For example, if you want to load + * Note that the extension is dropped. For example, if you want to load * a sound from the raw resource file "explosion.mp3", you would specify * "R.raw.explosion" as the resource ID. Note that this means you cannot * have both an "explosion.wav" and an "explosion.mp3" in the res/raw - * directory.

+ * directory. * * @param context the application context * @param resId the resource ID - * @param priority the priority of the sound. Currently has no effect. + * @param priority the priority of the sound. Currently has no effect. Use + * a value of 1 for future compatibility. * @return a sound ID. This value can be used to play or unload the sound. */ public int load(Context context, int resId, int priority) { @@ -162,10 +184,11 @@ public class SoundPool } /** - * Load the sound from an asset file descriptor + * Load the sound from an asset file descriptor. * * @param afd an asset file descriptor - * @param priority the priority of the sound. Currently has no effect. + * @param priority the priority of the sound. Currently has no effect. Use + * a value of 1 for future compatibility. * @return a sound ID. This value can be used to play or unload the sound. */ public int load(AssetFileDescriptor afd, int priority) { @@ -181,16 +204,17 @@ public class SoundPool } /** - * Load the sound from a FileDescriptor + * Load the sound from a FileDescriptor. * - *

This version is useful if you store multiple sounds in a single + * This version is useful if you store multiple sounds in a single * binary. The offset specifies the offset from the start of the file - * and the length specifies the length of the sound within the file.

+ * and the length specifies the length of the sound within the file. * * @param fd a FileDescriptor object * @param offset offset to the start of the sound * @param length length of the sound - * @param priority the priority of the sound. Currently has no effect. + * @param priority the priority of the sound. Currently has no effect. Use + * a value of 1 for future compatibility. * @return a sound ID. This value can be used to play or unload the sound. */ public int load(FileDescriptor fd, long offset, long length, int priority) { @@ -202,11 +226,11 @@ public class SoundPool private native final int _load(FileDescriptor fd, long offset, long length, int priority); /** - * Unload a sound from a sound ID + * Unload a sound from a sound ID. * - *

Unloads the sound specified by the soundID. This is the value + * Unloads the sound specified by the soundID. This is the value * returned by the load() function. Returns true if the sound is - * successfully unloaded, false if the sound was already unloaded.

+ * successfully unloaded, false if the sound was already unloaded. * * @param soundID a soundID returned by the load() function * @return true if just unloaded, false if previously unloaded @@ -214,66 +238,77 @@ public class SoundPool public native final boolean unload(int soundID); /** - * Play a sound from a sound ID + * Play a sound from a sound ID. * - *

Play the sound specified by the soundID. This is the value + * Play the sound specified by the soundID. This is the value * returned by the load() function. Returns a non-zero streamID * if successful, zero if it fails. The streamID can be used to * further control playback. Note that calling play() may cause * another sound to stop playing if the maximum number of active - * streams is exceeded.

+ * streams is exceeded. A loop value of -1 means loop forever, + * a value of 0 means don't loop, other values indicate the + * number of repeats, e.g. a value of 1 plays the audio twice. + * The playback rate allows the application to vary the playback + * rate (pitch) of the sound. A value of 1.0 means play back at + * the original frequency. A value of 2.0 means play back twice + * as fast, and a value of 0.5 means playback at half speed. * * @param soundID a soundID returned by the load() function + * @param leftVolume left volume value (range = 0.0 to 1.0) + * @param rightVolume right volume value (range = 0.0 to 1.0) + * @param priority stream priority (0 = lowest priority) + * @param loop loop mode (0 = no loop, -1 = loop forever) + * @param rate playback rate (1.0 = normal playback, range 0.5 to 2.0) * @return non-zero streamID if successful, zero if failed */ public native final int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate); /** - * Pause a playback stream + * Pause a playback stream. * - *

Pause the stream specified by the streamID. This is the + * Pause the stream specified by the streamID. This is the * value returned by the play() function. If the stream is * playing, it will be paused. If the stream is not playing * (e.g. is stopped or was previously paused), calling this - * function will have no effect.

+ * function will have no effect. * * @param streamID a streamID returned by the play() function */ public native final void pause(int streamID); /** - * Resume a playback stream + * Resume a playback stream. * - *

Resume the stream specified by the streamID. This + * Resume the stream specified by the streamID. This * is the value returned by the play() function. If the stream * is paused, this will resume playback. If the stream was not - * previously paused, calling this function will have no effect.

+ * previously paused, calling this function will have no effect. * * @param streamID a streamID returned by the play() function */ public native final void resume(int streamID); /** - * Stop a playback stream + * Stop a playback stream. * - *

Stop the stream specified by the streamID. This + * Stop the stream specified by the streamID. This * is the value returned by the play() function. If the stream * is playing, it will be stopped. It also releases any native * resources associated with this stream. If the stream is not - * playing, it will have no effect.

+ * playing, it will have no effect. * * @param streamID a streamID returned by the play() function */ public native final void stop(int streamID); /** - * Set stream volume + * Set stream volume. * - *

Sets the volume on the stream specified by the streamID. + * Sets the volume on the stream specified by the streamID. * This is the value returned by the play() function. The * value must be in the range of 0.0 to 1.0. If the stream does - * not exist, it will have no effect.

+ * not exist, it will have no effect. * * @param streamID a streamID returned by the play() function * @param leftVolume left volume value (range = 0.0 to 1.0) @@ -283,29 +318,51 @@ public class SoundPool float leftVolume, float rightVolume); /** - * Change stream priority + * Change stream priority. * - *

Change the priority of the stream specified by the streamID. + * Change the priority of the stream specified by the streamID. * This is the value returned by the play() function. Affects the - * order in which streams are re-used to play new sounds. + * order in which streams are re-used to play new sounds. If the + * stream does not exist, it will have no effect. * * @param streamID a streamID returned by the play() function */ public native final void setPriority(int streamID, int priority); /** - * Change stream priority + * Set loop mode. * - *

Change the priority of the stream specified by the streamID. - * This is the value returned by the play() function. Affects the - * order in which streams are re-used to play new sounds. + * Change the loop mode. A loop value of -1 means loop forever, + * a value of 0 means don't loop, other values indicate the + * number of repeats, e.g. a value of 1 plays the audio twice. + * If the stream does not exist, it will have no effect. * * @param streamID a streamID returned by the play() function + * @param loop loop mode (0 = no loop, -1 = loop forever) */ public native final void setLoop(int streamID, int loop); + /** + * Change playback rate. + * + * The playback rate allows the application to vary the playback + * rate (pitch) of the sound. A value of 1.0 means playback at + * the original frequency. A value of 2.0 means playback twice + * as fast, and a value of 0.5 means playback at half speed. + * If the stream does not exist, it will have no effect. + * + * @param streamID a streamID returned by the play() function + * @param rate playback rate (1.0 = normal playback, range 0.5 to 2.0) + */ public native final void setRate(int streamID, float rate); + /** + * Release the SoundPool resources. + * + * Release all memory and native resources used by the SoundPool + * object. The SoundPool can no longer be used and the reference + * should be set to null. + */ public native final void release(); private native final void native_setup(Object mediaplayer_this, -- GitLab From a9a66950d6827cbd6cb94ca56fcf9db656bad5a5 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi <> Date: Mon, 20 Apr 2009 10:45:02 -0700 Subject: [PATCH 03/72] AI 146937: Finalize AudioRecord javadoc. BUG=1797606 Automated import of CL 146937 --- media/java/android/media/AudioRecord.java | 81 +++++++++++++---------- 1 file changed, 46 insertions(+), 35 deletions(-) diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java index a49bd67b772a..3346bed93e30 100644 --- a/media/java/android/media/AudioRecord.java +++ b/media/java/android/media/AudioRecord.java @@ -40,7 +40,7 @@ import android.util.Log; *

Upon creation, an AudioRecord object initializes its associated audio buffer that it will * fill with the new audio data. The size of this buffer, specified during the construction, * determines how long an AudioRecord can record before "over-running" data that has not - * been read yet. Data should be from the audio hardware in chunks of sizes inferior to + * been read yet. Data should be read from the audio hardware in chunks of sizes inferior to * the total recording buffer size. */ public class AudioRecord @@ -49,20 +49,20 @@ public class AudioRecord // Constants //-------------------- /** - * State of an AudioRecord that was not successfully initialized upon creation + * indicates AudioRecord state is not successfully initialized. */ public static final int STATE_UNINITIALIZED = 0; /** - * State of an AudioRecord that is ready to be used + * indicates AudioRecord state is ready to be used */ public static final int STATE_INITIALIZED = 1; /** - * State of an AudioRecord this is not recording + * indicates AudioRecord recording state is not recording */ public static final int RECORDSTATE_STOPPED = 1; // matches SL_RECORDSTATE_STOPPED /** - * State of an AudioRecord this is recording + * indicates AudioRecord recording state is recording */ public static final int RECORDSTATE_RECORDING = 3;// matches SL_RECORDSTATE_RECORDING @@ -94,11 +94,11 @@ public class AudioRecord // Events: // to keep in sync with frameworks/base/include/media/AudioRecord.h /** - * Event id for when the recording head has reached a previously set marker. + * Event id denotes when record head has reached a previously set marker. */ private static final int NATIVE_EVENT_MARKER = 2; /** - * Event id for when the previously set update period has passed during recording. + * Event id denotes when previously set update period has elapsed during recording. */ private static final int NATIVE_EVENT_NEW_POS = 3; @@ -188,7 +188,7 @@ public class AudioRecord */ private int mNativeBufferSizeInBytes = 0; - + //--------------------------------------------------------- // Constructor, Finalize //-------------------- @@ -206,7 +206,9 @@ public class AudioRecord * {@link AudioFormat#ENCODING_PCM_8BIT} * @param bufferSizeInBytes the total size (in bytes) of the buffer where audio data is written * to during the recording. New audio data can be read from this buffer in smaller chunks - * than this size. + * than this size. See {@link #getMinBufferSize(int, int, int)} to determine the minimum + * required buffer size for the successful creation of an AudioRecord instance. Using values + * smaller than getMinBufferSize() will result in an initialization failure. * @throws java.lang.IllegalArgumentException */ public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, @@ -319,11 +321,13 @@ public class AudioRecord mNativeBufferSizeInBytes = audioBufferSize; } - - + + /** * Releases the native AudioRecord resources. + * The object can no longer be used and the reference should be set to null + * after a call to release() */ public void release() { try { @@ -334,7 +338,7 @@ public class AudioRecord native_release(); mState = STATE_UNINITIALIZED; } - + @Override protected void finalize() { @@ -404,24 +408,27 @@ public class AudioRecord public int getRecordingState() { return mRecordingState; } - + /** - * @return marker position in frames + * Returns the notification marker position expressed in frames. */ public int getNotificationMarkerPosition() { return native_get_marker_pos(); } /** - * @return update period in frames + * Returns the notification update period expressed in frames. */ public int getPositionNotificationPeriod() { return native_get_pos_update_period(); } - + /** * Returns the minimum buffer size required for the successful creation of an AudioRecord * object. + * Note that this size doesn't guarantee a smooth recording under load, and higher values + * should be chosen according to the expected frequency at which the AudioRecord instance + * will be polled for new data. * @param sampleRateInHz the sample rate expressed in Hertz. * @param channelConfig describes the configuration of the audio channels. * See {@link AudioFormat#CHANNEL_CONFIGURATION_MONO} and @@ -432,7 +439,7 @@ public class AudioRecord * hardware, or an invalid parameter was passed, * or {@link #ERROR} if the implementation was unable to query the hardware for its * output properties, - * or the minimum buffer size expressed in of bytes. + * or the minimum buffer size expressed in bytes. */ static public int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat) { int channelCount = 0; @@ -516,7 +523,7 @@ public class AudioRecord /** * Reads audio data from the audio hardware for recording into a buffer. * @param audioData the array to which the recorded audio data is written. - * @param offsetInBytes index in audioData from which the data is written. + * @param offsetInBytes index in audioData from which the data is written expressed in bytes. * @param sizeInBytes the number of requested bytes. * @return the number of bytes that were read or or {@link #ERROR_INVALID_OPERATION} * if the object wasn't properly initialized, or {@link #ERROR_BAD_VALUE} if @@ -540,9 +547,9 @@ public class AudioRecord /** * Reads audio data from the audio hardware for recording into a buffer. * @param audioData the array to which the recorded audio data is written. - * @param offsetInShorts index in audioData from which the data is written. + * @param offsetInShorts index in audioData from which the data is written expressed in shorts. * @param sizeInShorts the number of requested shorts. - * @return the number of bytes that were read or or {@link #ERROR_INVALID_OPERATION} + * @return the number of shorts that were read or or {@link #ERROR_INVALID_OPERATION} * if the object wasn't properly initialized, or {@link #ERROR_BAD_VALUE} if * the parameters don't resolve to valid data and indexes. * The number of shorts will not exceed sizeInShorts. @@ -595,8 +602,15 @@ public class AudioRecord public void setRecordPositionUpdateListener(OnRecordPositionUpdateListener listener) { setRecordPositionUpdateListener(listener, null); } - + /** + * Sets the listener the AudioRecord notifies when a previously set marker is reached or + * for each periodic record head position update. + * Use this method to receive AudioRecord events in the Handler associated with another + * thread than the one in which you created the AudioTrack instance. + * @param listener + * @param handler the Handler that will receive the event notification messages. + */ public void setRecordPositionUpdateListener(OnRecordPositionUpdateListener listener, Handler handler) { synchronized (mPositionListenerLock) { @@ -616,8 +630,8 @@ public class AudioRecord } } - - + + /** * Sets the marker position at which the listener is called, if set with * {@link #setRecordPositionUpdateListener(OnRecordPositionUpdateListener)} or @@ -629,8 +643,8 @@ public class AudioRecord public int setNotificationMarkerPosition(int markerInFrames) { return native_set_marker_pos(markerInFrames); } - - + + /** * Sets the period at which the listener is called, if set with * {@link #setRecordPositionUpdateListener(OnRecordPositionUpdateListener)} or @@ -648,7 +662,9 @@ public class AudioRecord //-------------------- /** * Interface definition for a callback to be invoked when an AudioRecord has - * reached a notification marker set by setNotificationMarkerPosition(). + * reached a notification marker set by {@link AudioRecord#setNotificationMarkerPosition(int)} + * or for periodic updates on the progress of the record head, as set by + * {@link AudioRecord#setPositionNotificationPeriod(int)}. */ public interface OnRecordPositionUpdateListener { /** @@ -663,10 +679,9 @@ public class AudioRecord */ void onPeriodicNotification(AudioRecord recorder); } - - - + + //--------------------------------------------------------- // Inner classes //-------------------- @@ -678,12 +693,12 @@ public class AudioRecord private class NativeEventHandler extends Handler { private final AudioRecord mAudioRecord; - + NativeEventHandler(AudioRecord recorder, Looper looper) { super(looper); mAudioRecord = recorder; } - + @Override public void handleMessage(Message msg) { OnRecordPositionUpdateListener listener = null; @@ -779,7 +794,3 @@ public class AudioRecord } - - - - -- GitLab From 26dea0f211c433f2d3a12dcc85bb069664112a03 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi <> Date: Mon, 20 Apr 2009 16:29:19 -0700 Subject: [PATCH 04/72] AI 147032: Finalize JetPlayer javadoc. BUG=1801229 Automated import of CL 147032 --- media/java/android/media/JetPlayer.java | 173 ++++++++++++++++++++++-- 1 file changed, 165 insertions(+), 8 deletions(-) diff --git a/media/java/android/media/JetPlayer.java b/media/java/android/media/JetPlayer.java index c9efac5cdb19..4fb0ead7ff59 100644 --- a/media/java/android/media/JetPlayer.java +++ b/media/java/android/media/JetPlayer.java @@ -30,8 +30,29 @@ import android.util.Log; /** * JetPlayer provides access to JET content playback and control. - *

- * Use JetPlayer.getJetPlayer() to get an instance of this class. + * + *

Please refer to the JET Creator User Manual for a presentation of the JET interactive + * music concept and how to use the JetCreator tool to create content to be player by JetPlayer. + * + *

Use of the JetPlayer class is based around the playback of a number of JET segments + * sequentially added to a playback FIFO queue. The rendering of the MIDI content stored in each + * segment can be dynamically affected by two mechanisms: + *

+ * As a result of the rendering and playback of the JET segments, the user of the JetPlayer instance + * can receive notifications from the JET engine relative to: + * + * Use {@link #getJetPlayer()} to construct a JetPlayer instance. JetPlayer is a singleton class. * */ public class JetPlayer @@ -40,7 +61,7 @@ public class JetPlayer // Constants //------------------------ /** - * The maximum number of simultaneous tracks. Use __link #getMaxTracks()} to + * The maximum number of simultaneous tracks. Use {@link #getMaxTracks()} to * access this value. */ private static int MAXTRACKS = 32; @@ -107,6 +128,10 @@ public class JetPlayer //-------------------------------------------- // Constructor, finalize //------------------------ + /** + * Factory method for the JetPlayer class. + * @return the singleton JetPlayer instance + */ public static JetPlayer getJetPlayer() { if (singletonRef == null) { singletonRef = new JetPlayer(); @@ -114,7 +139,9 @@ public class JetPlayer return singletonRef; } - + /** + * Cloning a JetPlayer instance is not supported. Calling clone() will generate an exception. + */ public Object clone() throws CloneNotSupportedException { // JetPlayer is a singleton class, // so you can't clone a JetPlayer instance @@ -149,6 +176,11 @@ public class JetPlayer } + /** + * Stops the current JET playback, and releases all associated native resources. + * The object can no longer be used and the reference should be set to null + * after a call to release(). + */ public void release() { native_release(); } @@ -158,7 +190,7 @@ public class JetPlayer // Getters //------------------------ /** - * Returns the maximum number of simultaneous MIDI tracks supported by the Jet player + * Returns the maximum number of simultaneous MIDI tracks supported by JetPlayer */ public static int getMaxTracks() { return JetPlayer.MAXTRACKS; @@ -168,11 +200,21 @@ public class JetPlayer //-------------------------------------------- // Jet functionality //------------------------ + /** + * Loads a .jet file from a given path. + * @param path the path to the .jet file, for instance "/sdcard/mygame/music.jet". + * @return true if loading the .jet file was successful, false if loading failed. + */ public boolean loadJetFile(String path) { return native_loadJetFromFile(path); } + /** + * Loads a .jet file from an asset file descriptor. + * @param afd the asset file descriptor. + * @return true if loading the .jet file was successful, false if loading failed. + */ public boolean loadJetFile(AssetFileDescriptor afd) { long len = afd.getLength(); if (len < 0) { @@ -182,22 +224,54 @@ public class JetPlayer afd.getFileDescriptor(), afd.getStartOffset(), len); } - + /** + * Closes the resource containing the JET content. + * @return true if successfully closed, false otherwise. + */ public boolean closeJetFile() { return native_closeJetFile(); } + /** + * Starts playing the JET segment queue. + * @return true if rendering and playback is successfully started, false otherwise. + */ public boolean play() { return native_playJet(); } + /** + * Pauses the playback of the JET segment queue. + * @return true if rendering and playback is successfully paused, false otherwise. + */ public boolean pause() { return native_pauseJet(); } + /** + * Queues the specified segment in the JET queue. + * @param segmentNum the identifier of the segment. + * @param libNum the index of the sound bank associated with the segment. Use -1 to indicate + * that no sound bank (DLS file) is associated with this segment, in which case JET will use + * the General MIDI library. + * @param repeatCount the number of times the segment will be repeated. 0 means the segment will + * only play once. -1 means the segment will repeat indefinitely. + * @param transpose the amount of pitch transposition. Set to 0 for normal playback. + * Range is -12 to +12. + * @param muteFlags a bitmask to specify which MIDI tracks will be muted during playback. Bit 0 + * affects track 0, bit 1 affects track 1 etc. + * @param userID a value specified by the application that uniquely identifies the segment. + * this value is received in the + * {@link OnJetEventListener#onJetUserIdUpdate(JetPlayer, int, int)} event listener method. + * Normally, the application will keep a byte value that is incremented each time a new + * segment is queued up. This can be used to look up any special characteristics of that + * track including trigger clips and mute flags. + * @return true if the segment was successfully queued, false if the queue is full or if the + * parameters are invalid. + */ public boolean queueJetSegment(int segmentNum, int libNum, int repeatCount, int transpose, int muteFlags, byte userID) { return native_queueJetSegment(segmentNum, libNum, repeatCount, @@ -205,6 +279,28 @@ public class JetPlayer } + /** + * Queues the specified segment in the JET queue. + * @param segmentNum the identifier of the segment. + * @param libNum the index of the soundbank associated with the segment. Use -1 to indicate that + * no sound bank (DLS file) is associated with this segment, in which case JET will use + * the General MIDI library. + * @param repeatCount the number of times the segment will be repeated. 0 means the segment will + * only play once. -1 means the segment will repeat indefinitely. + * @param transpose the amount of pitch transposition. Set to 0 for normal playback. + * Range is -12 to +12. + * @param muteArray an array of booleans to specify which MIDI tracks will be muted during + * playback. The value at index 0 affects track 0, value at index 1 affects track 1 etc. + * The length of the array must be {@link #getMaxTracks()} for the call to succeed. + * @param userID a value specified by the application that uniquely identifies the segment. + * this value is received in the + * {@link OnJetEventListener#onJetUserIdUpdate(JetPlayer, int, int)} event listener method. + * Normally, the application will keep a byte value that is incremented each time a new + * segment is queued up. This can be used to look up any special characteristics of that + * track including trigger clips and mute flags. + * @return true if the segment was successfully queued, false if the queue is full or if the + * parameters are invalid. + */ public boolean queueJetSegmentMuteArray(int segmentNum, int libNum, int repeatCount, int transpose, boolean[] muteArray, byte userID) { if (muteArray.length != JetPlayer.getMaxTracks()) { @@ -215,11 +311,32 @@ public class JetPlayer } + /** + * Modifies the mute flags. + * @param muteFlags a bitmask to specify which MIDI tracks are muted. Bit 0 affects track 0, + * bit 1 affects track 1 etc. + * @param sync if false, the new mute flags will be applied as soon as possible by the JET + * render and playback engine. If true, the mute flags will be updated at the start of the + * next segment. If the segment is repeated, the flags will take effect the next time + * segment is repeated. + * @return true if the mute flags were successfully updated, false otherwise. + */ public boolean setMuteFlags(int muteFlags, boolean sync) { return native_setMuteFlags(muteFlags, sync); } + /** + * Modifies the mute flags for the current active segment. + * @param muteArray an array of booleans to specify which MIDI tracks are muted. The value at + * index 0 affects track 0, value at index 1 affects track 1 etc. + * The length of the array must be {@link #getMaxTracks()} for the call to succeed. + * @param sync if false, the new mute flags will be applied as soon as possible by the JET + * render and playback engine. If true, the mute flags will be updated at the start of the + * next segment. If the segment is repeated, the flags will take effect the next time + * segment is repeated. + * @return true if the mute flags were successfully updated, false otherwise. + */ public boolean setMuteArray(boolean[] muteArray, boolean sync) { if(muteArray.length != JetPlayer.getMaxTracks()) return false; @@ -227,16 +344,41 @@ public class JetPlayer } + /** + * Mutes or unmutes a single track. + * @param trackId the index of the track to mute. + * @param muteFlag set to true to mute, false to unmute. + * @param sync if false, the new mute flags will be applied as soon as possible by the JET + * render and playback engine. If true, the mute flag will be updated at the start of the + * next segment. If the segment is repeated, the flag will take effect the next time + * segment is repeated. + * @return true if the mute flag was successfully updated, false otherwise. + */ public boolean setMuteFlag(int trackId, boolean muteFlag, boolean sync) { return native_setMuteFlag(trackId, muteFlag, sync); } + /** + * Schedules the playback of a clip. + * This will automatically update the mute flags in sync with the JET Clip Marker (controller + * 103). The parameter clipID must be in the range of 0-63. After the call to triggerClip, when + * JET next encounters a controller event 103 with bits 0-5 of the value equal to clipID and + * bit 6 set to 1, it will automatically unmute the track containing the controller event. + * When JET encounters the complementary controller event 103 with bits 0-5 of the value equal + * to clipID and bit 6 set to 0, it will mute the track again. + * @param clipId the identifier of the clip to trigger. + * @return true if the clip was successfully triggered, false otherwise. + */ public boolean triggerClip(int clipId) { return native_triggerClip(clipId); } + /** + * Empties the segment queue, and clears all clips that are scheduled for playback. + * @return true if the queue was successfully cleared, false otherwise. + */ public boolean clearQueue() { return native_clearQueue(); } @@ -302,10 +444,25 @@ public class JetPlayer //-------------------------------------------- // Jet event listener //------------------------ + /** + * Sets the listener JetPlayer notifies when a JET event is generated by the rendering and + * playback engine. + * Notifications will be received in the same thread as the one in which the JetPlayer + * instance was created. + * @param listener + */ public void setEventListener(OnJetEventListener listener) { setEventListener(listener, null); } + /** + * Sets the listener JetPlayer notifies when a JET event is generated by the rendering and + * playback engine. + * Use this method to receive JET events in the Handler associated with another + * thread than the one in which you created the JetPlayer instance. + * @param listener + * @param handler the Handler that will receive the event notification messages. + */ public void setEventListener(OnJetEventListener listener, Handler handler) { synchronized(mEventListenerLock) { @@ -343,7 +500,7 @@ public class JetPlayer void onJetEvent(JetPlayer player, short segment, byte track, byte channel, byte controller, byte value); /** - * Callback for when JET's currently playing segment userID is updated. + * Callback for when JET's currently playing segment's userID is updated. * * @param player the JET player the status update is coming from * @param userId the ID of the currently playing segment @@ -363,7 +520,7 @@ public class JetPlayer * Callback for when JET pause state is updated. * * @param player the JET player the status update is coming from - * @param paused indicates whether JET is paused or not + * @param paused indicates whether JET is paused (1) or not (0) */ void onJetPauseUpdate(JetPlayer player, int paused); } -- GitLab From b5a4c5a473f37700a654a3323afb9682e524c66c Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Mon, 20 Apr 2009 17:54:52 -0700 Subject: [PATCH 05/72] AI 147053: Add -hdf primer vars for the platform and release ID associated with the current (most recent) SDK. Currently, the docs that are specific to each SDK release -- downloading, installing, upgrading, requirements -- are stored in a directory with release-derived name, such as "1.1_r1". This change lets documents use generic links to point into the most recent version specific docs, eg href="{@docRoot}sdk/{sdkCurrent}/installing.html" instead of href="{@docRoot}sdk/1.1_r1/installing.html". BUG=1790234 Automated import of CL 147053 --- Android.mk | 29 ++++++++++++++++++----------- docs/html/offline.jd | 4 ++-- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/Android.mk b/Android.mk index 1246c73cf16f..e3738595a6d7 100644 --- a/Android.mk +++ b/Android.mk @@ -292,12 +292,6 @@ framework_docs_LOCAL_DROIDDOC_OPTIONS := \ framework_docs_LOCAL_ADDITIONAL_JAVA_DIR:=$(call intermediates-dir-for,JAVA_LIBRARIES,framework) -web_docs_sample_code_flags := \ - -hdf android.hasSamples 1 \ - -samplecode samples/ApiDemos guide/samples/ApiDemos "API Demos" \ - -samplecode samples/LunarLander guide/samples/LunarLander "Lunar Lander" \ - -samplecode samples/NotePad guide/samples/NotePad "Note Pad" - sample_dir := development/samples web_docs_sample_code_flags := \ @@ -309,6 +303,19 @@ web_docs_sample_code_flags := \ -samplecode $(sample_dir)/NotePad \ guide/samples/NotePad "Note Pad" +# SDK version identifiers used in the published docs. + +# major[.minor] version for SDK. Typically identical to the +# most current Android platform version included in the SDK package. +framework_docs_SDK_VERSION := 1.5 +# release version for SDK (ie "Release x") +framework_docs_SDK_REL_ID := 1 +framework_docs_SDK_CURRENT_DIR := $(framework_docs_SDK_VERSION)_r$(framework_docs_SDK_REL_ID) + +framework_docs_LOCAL_DROIDDOC_OPTIONS += \ + -hdf sdk.version $(framework_docs_SDK_VERSION) \ + -hdf sdk.rel.id $(framework_docs_SDK_REL_ID) \ + -hdf sdk.current $(framework_docs_SDK_CURRENT_DIR) # ==== static html in the sdk ================================== include $(CLEAR_VARS) @@ -341,7 +348,7 @@ include $(BUILD_DROIDDOC) static_doc_index_redirect := $(out_dir)/index.html $(static_doc_index_redirect): \ - $(LOCAL_PATH)/docs/docs-documentation-redirect.html | $(ACP) + $(LOCAL_PATH)/docs/docs-documentation-redirect.html | $(ACP) $(hide) mkdir -p $(dir $@) $(hide) $(ACP) $< $@ @@ -366,10 +373,10 @@ LOCAL_ADDITIONAL_JAVA_DIR:=$(framework_docs_LOCAL_ADDITIONAL_JAVA_DIR) LOCAL_MODULE := online-sdk LOCAL_DROIDDOC_OPTIONS:= \ - $(framework_docs_LOCAL_DROIDDOC_OPTIONS) \ - $(web_docs_sample_code_flags) \ - -toroot / \ - -hdf android.whichdoc online + $(framework_docs_LOCAL_DROIDDOC_OPTIONS) \ + $(web_docs_sample_code_flags) \ + -toroot / \ + -hdf android.whichdoc online LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk LOCAL_DROIDDOC_CUSTOM_ASSET_DIR:=assets-sdk diff --git a/docs/html/offline.jd b/docs/html/offline.jd index d41459b4d64c..57c55c7ff559 100644 --- a/docs/html/offline.jd +++ b/docs/html/offline.jd @@ -9,10 +9,10 @@ page.title=Welcome

If you've just downloaded the SDK, then continue with -Installing the Android SDK.

+Installing the Android SDK.

If you're upgrading from a previously installed version, then refer to the -Upgrading guide.

+Upgrading guide.

Once you've completed the SDK installation, you can start learning about development on the Android framework by reading the Date: Mon, 20 Apr 2009 21:53:32 -0700 Subject: [PATCH 06/72] AI 147081: Add document describing AVDs and usage. (doc change only) BUG=1790234 Automated import of CL 147081 --- docs/html/guide/developing/tools/avd.jd | 496 ++++++++++++++++++++++++ 1 file changed, 496 insertions(+) create mode 100644 docs/html/guide/developing/tools/avd.jd diff --git a/docs/html/guide/developing/tools/avd.jd b/docs/html/guide/developing/tools/avd.jd new file mode 100644 index 000000000000..7ba79685eef7 --- /dev/null +++ b/docs/html/guide/developing/tools/avd.jd @@ -0,0 +1,496 @@ +page.title=Android Virtual Devices +@jd:body + +

+
+ +

AVD quickview

+
    +
  • You need to create an AVD to run any app in the Android emulator
  • +
  • Each AVD is a completely independent virtual device, with its own + hardware options, system image, and data storage. +
  • You create AVD configurations to model different device environments + in the Android emulator.
  • +
+

In this document

+
    +
  1. Creating an AVD +
      +
    1. Listing targets
    2. +
    3. Selecting a target
    4. +
    5. Creating the AVD
    6. +
    7. Setting hardware emulation options
    8. +
    9. Default location of the AVD files
    10. +
    11. Command-line options, create avd
    12. +
    +
  2. +
  3. Managing AVDs +
      +
    1. Moving an AVD
    2. +
    3. Deleting an AVD
    4. +
    5. Deleting an AVD
    6. +
    +
  4. +
  5. Command-line options
  6. +
+

See Also

+
    +
  1. Android Emulator
  2. +
+
+
+ +

Android Virtual Devices (AVDs) are configurations of emulator options that let +you better model an actual device.

+ +

Each AVD is made up of:

+ + + +

You can create as many AVDs as you need, based on the types of devices you +want to model and the Android platforms and external libraries you want to run +your application on.

+ +

In addition to the options in an AVD configuration, you can also +specify emulator command-line options at launch or by using the emulator +console to change behaviors or characteristics at run time. For a complete +reference of emulator options, please see the Emulator +documentation.

+ +

To create and manage AVDs, you use the android tool provided in the Android +SDK. For more information about how to work with AVDs from inside +your development environment, see Developing in Eclipse with +ADT or Developing in +Other IDEs, as appropriate for your environment.

+ +

Creating an AVD

+ + + +

To create an AVD, you use the android tool, a command-line utility +available in the <sdk>/tools/ directory. Managing AVDs is one +of the two main function of the android tool (the other is creating and updating +Android projects). Open a terminal window and change to the +<sdk>/tools/ directory, if needed

+ +

To create each AVD, you issue the command android avd create, +with options that specify a name for the new AVD and the system image you want +to run on the emulator when the AVD is invoked. You can specify other options on +the command line also, such as to create an emulated SD card for the new AVD, set +the emulator skin to use, or set a custom location for the AVD's files.

+ +

Here's the command-line usage for creating an AVD:

+ +
android -n <name> -t <targetID> [-<option> <value>] ... 
+ +

You can use any name you want for the AVD, but since you are likely to be +creating multiple AVDs, you should choose a name that lets you recognize the +general characteristics offered by the AVD.

+ +

As shown in the usage above, you must use the -t (or +--target) argument when creating a new AVD. The argument sets up a +mapping between the AVD and the system image that you want to use whenever the +AVD is invoked. You can specify any Android system image that is available in +your local SDK — it can be the system image of a standard Android platform +version or that of any SDK add-on. Later, when applications use the AVD, they'll +be running on the system that you specify in the -t argument.

+ +

To specify the system image to use, you refer to its target ID +— an integer — as assigned by the android tool. The target ID is not +derived from the system image name, version, or API Level, or other attribute, +so you need to have the android tool list the available system images and the +target ID of each, as described in the next section. You should do this +before you run the android create avd command. +

+ +

Listing targets

+ +

To generate a list of system image targets, use this command:

+ +
android list targets
+ +

The android tool scans the <sdk>/platforms and +<sdk>/add-ons directories looking for valid system images and +then generates the list of targets. Here's an example of the command output: +

+ +
Available Android targets:
+id:1
+    Name: Android 1.1
+    Type: platform
+    API level: 2
+    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
+id:2
+    Name: Android 1.5
+    Type: platform
+    API level: 3
+    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
+id:3
+    Name: Google APIs
+    Type: add-on
+    Vendor: Google Inc.
+    Description: Android + Google APIs
+    Based on Android 1.5 (API level 3)
+    Libraries:
+    * com.google.android.maps (maps.jar)
+        API for Google Maps
+    Skins: HVGA (default), HVGA-L, QVGA-P, HVGA-P, QVGA-L
+ +

Selecting a target

+ +

Once you have generated the list of targets available, you can look at the +characteristics of each system image — name, API Level, external +libraries, and so on — and determine which target is appropriate for the +new AVD.

+ +

Keep these points in mind when you are selecting a system image target for +your AVD:

+ + +

Creating the AVD

+ +

When you've selected the target you want to use and made a note of its ID, +use the android create avd command to create the AVD, supplying the +target ID as the -t argument. Here's an example that creates an +AVD with name "my_android1.5" and target ID "2" (the standard Android 1.5 +system image in the list above):

+ +
android create avd -n my_android1.5 -t 2
+ +

If the target you selected was a standard Android system image ("Type: +platform"), the android tool next asks you whether you want to create a custom +hardware profile.

+ +
Android 1.5 is a basic Android platform.
+Do you wish to create a custom hardware profile [no]
+ +

If you want to set custom hardware emulation options for the AVD, enter +"yes" and set values as needed. If you want to use the default hardware +emulation options for the AVD, just press the return key (the default is "no"). +The android tool creates the AVD with name and system image mapping you +requested, with the options you specified. + +

If you are creating an AVD whose target is an SDK add-on, +the android tool does not allow you to set hardware emulation options. It +assumes that the provider of the add-on has set emulation options appropriately +for the device that the add-on is modeling, and so prevents you from resetting +the options.

+ +

For a list of options you can use in the android create avd +command, see the table in Command-line options for AVDs, +at the bottom of +this page.

+ +

Setting hardware emulation options

+ +

When are creating a new AVD that uses a standard Android system image ("Type: +platform"), the android tool lets you set hardware emulation options for virtual +device. The table below lists the options available and the default values, as +well as the names of properties that store the emulated hardware options in the AVD's +configuration file (the config.ini file in the AVD's local directory).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CharacteristicDescriptionProperty
Device ram sizeThe amount of physical RAM on the device, in megabytes. Default value is "96". +hw.ramSize
Touch-screen supportWhether there is a touch screen or not on the device. Default value is "yes".hw.touchScreen + + +
Trackball support Whether there is a trackball on the device. Default value is "yes".hw.trackBall
Keyboard supportWhether the device has a QWERTY keyboard. Default value is "yes".hw.keyboard
DPad supportWhether the device has DPad keys. Default value is "yes".hw.dPad
GSM modem supportWhether there is a GSM modem in the device. Default value is "yes".hw.gsmModem
Camera supportWhether the device has a camera. Default value is "no".hw.camera
Maximum horizontal camera pixelsDefault value is "640".hw.camera.maxHorizontalPixels
Maximum vertical camera pixelsDefault value is "480".hw.camera.maxVerticalPixels
GPS supportWhether there is a GPS in the device. Default value is "yes".hw.gps
Battery supportWhether the device can run on a battery. Default value is "yes".hw.battery
AccelerometerWhether there is an accelerometer in the device. Default value is "yes".hw.accelerometer
Audio recording supportWhether the device can record audio. Default value is "yes".hw.audioInput
Audio playback supportWhether the device can play audio. Default value is "yes".hw.audioOutput
SD Card supportWhether the device supports insertion/removal of virtual SD Cards. Default value is "yes".hw.sdCard
Cache partition supportWhether we use a /cache partition on the device. Default value is "yes".disk.cachePartition
Cache partition sizeDefault value is "66MB".disk.cachePartition.size
+ +

Default location of the AVD files

+ +

When you create an AVD, the android tool creates a dedicated directory for it +on your development computer. The directory contains the AVD configuration file, +the user data image and SD card image (if available), and any other files +associated with the device. Note that the directory does not contain a system +image — instead, the AVD configuration file contains a mapping to the +system image, which it loads when the AVD is launched.

+ +

The android tool also creates a <AVD name>.ini file for the AVD at the +root of the .android/avd directory on your computer. The file specifies the +location of the AVD directory and always remains at the root the .android +directory.

+ +

By default, the android tool creates the AVD directory inside +~/.android/avd/ (on Linux/Mac), C:\Documents and +Settings\<user>\.android\ on Windows XP, and +C:\Users\<user>\.android\ on Windows Vista. +If you want to use a custom location for the AVD directory, you +can do so by using the -p <path> option when +you create the AVD:

+ +
android create avd -n my_android1.5 -t 2 -p path/to/my/avd
+ +

If the .android directory is hosted on a network drive, we recommend using +the -p option to place the AVD directory in another location. +The AVD's .ini file remains in the .android directory on the network +drive, regardless of the location of the AVD directory.

+ +

Moving an AVD

+ +

If you want to move or rename an AVD, you can do so using this command:

+ +
android move avd -n <name> [-<option> <value>] ...
+ +

The options for this command are listed in Command-line +options for AVDs at the bottom of this page.

+ +

Updating an AVD

+ +

If, for any reason, the platform/add-on root folder has its name changed (maybe because the user has installed an update of the platform/add-on) then the AVD will not be able to load the system image that it is mapped to. In this case, the android list targets command will produce this output: + +

The following Android Virtual Devices could not be loaded: 
+Name: foo 
+Path: <path>/.android/avd/foo.avd 
+Error: Invalid value in image.sysdir. Run 'android update avd -n foo' 
+ +

To fix this error, use the android update avd command to recompute the path to the system images.

+ +

Deleting an AVD

+ +

You can use the android tool to delete an AVD. Here is the command usage:

+ +
android delete avd -n <name> 
+ +

When you issue the command, the android tool looks for an AVD matching the +specified name deletes the AVD's directory and files.

+ + +

Command-line options for AVDs

+ +

The table below lists the command-line options you can use with the +android tool.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionOptionDescriptionComments
list avds List all known AVDs, with name, path, target, and skin.  
create avd-n <name> or
The name for the AVD.Required
-t <targetID>Target ID of the system image to use with the new AVD.Required. To obtain a list of available targets, use android list + targets.
-c <path> or
+ -c <size>[K|M]
The path to the SD card image to use with this AVD or the size of a new SD + card image to create for this AVD.Examples: -c path/to/sdcard or -c 1000M
-fForce creation of the AVDBy default, if the name of the AVD being created matches that of an + existing AVD, the android tool will not create the new AVD or overwrite + the existing AVD. If you specify the -f option, however, the + android tool will automatically overwrite any existing AVD that has the + same name as the new AVD. The files and data of the existing AVD are + deleted.
-p <path>Path to the location at which to create the directory for this AVD's +files. 
-s <name> or
+ -s <dimensions>
The skin to use for this AVD, identified by name or dimensions.The android tool scans for a matching skin by name or dimension in the +skins/ directory of the target referenced in the -t +<targetID> argument. Example: -s HVGA-L
delete avd-n <name>Delete the specified AVD.Required
move avd-n <name>The name of the AVD to move.Required
-p <path>The path to the new location for the AVD. 
-r <new-name>Rename the AVD. 
update avds Recompute the paths to all system images. 
+ -- GitLab From 54bd245f574379319769471279c7cbf295feac46 Mon Sep 17 00:00:00 2001 From: Andy Stadler <> Date: Tue, 21 Apr 2009 11:48:54 -0700 Subject: [PATCH 07/72] AI 147162: Emphasize in the javadoc that the "pkg" parameters to InstrumentationTestCase and its descendants should be the package manager package name (not the java package name, and not the test package) of the package holding the Activity under test. Added similar notations to the ApiDemos call sites. JAVADOC ONLY - should be safe change for cupcake sdk. BUG=1783981 Automated import of CL 147162 --- core/java/android/test/InstrumentationTestCase.java | 9 +++++++++ .../test/ActivityInstrumentationTestCase.java | 12 ++++++++++-- .../test/ActivityInstrumentationTestCase2.java | 6 +++++- .../android/test/SingleLaunchActivityTestCase.java | 6 +++++- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/core/java/android/test/InstrumentationTestCase.java b/core/java/android/test/InstrumentationTestCase.java index 82f2ef9dd8eb..470ab0d9a48e 100644 --- a/core/java/android/test/InstrumentationTestCase.java +++ b/core/java/android/test/InstrumentationTestCase.java @@ -62,6 +62,10 @@ public class InstrumentationTestCase extends TestCase { * action = {@link Intent#ACTION_MAIN} * extras = null, unless a custom bundle is provided here * All other fields are null or empty. + * + *

NOTE: The parameter pkg must refer to the package identifier of the + * package hosting the activity to be launched, which is specified in the AndroidManifest.xml + * file. This is not necessarily the same as the java package name. * * @param pkg The package hosting the activity to be launched. * @param activityCls The activity class to launch. @@ -82,6 +86,11 @@ public class InstrumentationTestCase extends TestCase { /** * Utility method for launching an activity with a specific Intent. + * + *

NOTE: The parameter pkg must refer to the package identifier of the + * package hosting the activity to be launched, which is specified in the AndroidManifest.xml + * file. This is not necessarily the same as the java package name. + * * @param pkg The package hosting the activity to be launched. * @param activityCls The activity class to launch. * @param intent The intent to launch with diff --git a/test-runner/android/test/ActivityInstrumentationTestCase.java b/test-runner/android/test/ActivityInstrumentationTestCase.java index e5a9991ae557..f6b31ad208f7 100644 --- a/test-runner/android/test/ActivityInstrumentationTestCase.java +++ b/test-runner/android/test/ActivityInstrumentationTestCase.java @@ -40,7 +40,11 @@ public abstract class ActivityInstrumentationTestCase boolean mInitialTouchMode = false; /** - * @param pkg The package of the instrumentation. + * NOTE: The parameter pkg must refer to the package identifier of the + * package hosting the activity to be launched, which is specified in the AndroidManifest.xml + * file. This is not necessarily the same as the java package name. + * + * @param pkg The package hosting the activity to be launched. * @param activityClass The activity to test. */ public ActivityInstrumentationTestCase(String pkg, Class activityClass) { @@ -48,7 +52,11 @@ public abstract class ActivityInstrumentationTestCase } /** - * @param pkg The package of the instrumentation. + * NOTE: The parameter pkg must refer to the package identifier of the + * package hosting the activity to be launched, which is specified in the AndroidManifest.xml + * file. This is not necessarily the same as the java package name. + * + * @param pkg The package hosting the activity to be launched. * @param activityClass The activity to test. * @param initialTouchMode true = in touch mode */ diff --git a/test-runner/android/test/ActivityInstrumentationTestCase2.java b/test-runner/android/test/ActivityInstrumentationTestCase2.java index 7a84ecae7b38..679f6346537b 100644 --- a/test-runner/android/test/ActivityInstrumentationTestCase2.java +++ b/test-runner/android/test/ActivityInstrumentationTestCase2.java @@ -46,7 +46,11 @@ public abstract class ActivityInstrumentationTestCase2 Intent mActivityIntent = null; /** - * @param pkg The package of the instrumentation. + * NOTE: The parameter pkg must refer to the package identifier of the + * package hosting the activity to be launched, which is specified in the AndroidManifest.xml + * file. This is not necessarily the same as the java package name. + * + * @param pkg The package hosting the activity to be launched. * @param activityClass The activity to test. */ public ActivityInstrumentationTestCase2(String pkg, Class activityClass) { diff --git a/test-runner/android/test/SingleLaunchActivityTestCase.java b/test-runner/android/test/SingleLaunchActivityTestCase.java index 8d43b732cf85..b63b3ce19759 100644 --- a/test-runner/android/test/SingleLaunchActivityTestCase.java +++ b/test-runner/android/test/SingleLaunchActivityTestCase.java @@ -37,7 +37,11 @@ public abstract class SingleLaunchActivityTestCase private static boolean sActivityLaunchedFlag = false; /** - * @param pkg The package of the instrumentation. + * NOTE: The parameter pkg must refer to the package identifier of the + * package hosting the activity to be launched, which is specified in the AndroidManifest.xml + * file. This is not necessarily the same as the java package name. + * + * @param pkg The package hosting the activity to be launched. * @param activityClass The activity to test. */ public SingleLaunchActivityTestCase(String pkg, Class activityClass) { -- GitLab From a1cde99f322693e1f12fc224e98bc5340ebfdf1b Mon Sep 17 00:00:00 2001 From: Andy Stadler <> Date: Tue, 21 Apr 2009 11:50:39 -0700 Subject: [PATCH 08/72] AI 147163: Copy documentation for the various search-by-voice flags that were already listed in attrs.xml into SearchManager.java. Add a (brief - no time for more) description about how to add search by voice to apps. JAVADOC ONLY - should be safe change for cupcake sdk. BUG=1554704 Automated import of CL 147163 --- core/java/android/app/SearchManager.java | 82 +++++++++++++++++++++++- core/res/res/values/attrs.xml | 7 +- 2 files changed, 84 insertions(+), 5 deletions(-) diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java index c1d66f4e7d7b..ecdd3f8cb579 100644 --- a/core/java/android/app/SearchManager.java +++ b/core/java/android/app/SearchManager.java @@ -807,7 +807,7 @@ import android.view.KeyEvent; * this way would be if you wish to partition it into separate sections with different search * behaviors; Otherwise this configuration is not recommended. * - *

Additional Metadata for search suggestions. If you have defined a content provider + *

Additional metadata for search suggestions. If you have defined a content provider * to generate search suggestions, you'll need to publish it to the system, and you'll need to * provide a bit of additional XML metadata in order to configure communications with it. * @@ -880,7 +880,7 @@ import android.view.KeyEvent; * * * - *

Additional Metadata for search action keys. For each action key that you would like to + *

Additional metadata for search action keys. 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 Action Keys. A simple example is shown here: * @@ -956,6 +956,84 @@ import android.view.KeyEvent; * * * + *

Additional metadata for enabling voice search. To enable voice search for your + * activity, you can add fields to the metadata that enable and configure voice search. When + * enabled (and available on the device), a voice search button will be displayed in the + * Search UI. Clicking this button will launch a voice search activity. When the user has + * finished speaking, the voice search phrase will be transcribed into text and presented to the + * searchable activity as if it were a typed query. + * + *

Elements of search metadata that support voice search: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Attribute Description Required?
android:voiceSearchModeIf provided and non-zero, enables voice search. (Voice search may not be + * provided by the device, in which case these flags will have no effect.) The + * following mode bits are defined: + * + * + * + * + * + * + * + * + * + * + * + * + *
showVoiceSearchButtonIf set, display a voice search button. This only takes effect if voice + * search is available on the device. If set, then launchWebSearch or + * launchRecognizer must also be set.
launchWebSearchIf set, the voice search button will take the user directly to a + * built-in voice web search activity. Most applications will not use this + * flag, as it will take the user away from the activity in which search + * was invoked.
launchRecognizerIf set, the voice search button will take the user directly to a + * built-in voice recording activity. This activity will prompt the user + * to speak, transcribe the spoken text, and forward the resulting query + * text to the searchable activity, just as if the user had typed it into + * the search UI and clicked the search button.
No
android:voiceLanguageModelIf provided, this specifies the language model that should be used by the voice + * recognition system. + * See {@link android.speech.RecognizerIntent#EXTRA_LANGUAGE_MODEL} + * for more information. If not provided, the default value + * {@link android.speech.RecognizerIntent#LANGUAGE_MODEL_FREE_FORM} will be used.No
android:voicePromptTextIf provided, this specifies a prompt that will be displayed during voice input. + * (If not provided, a default prompt will be displayed.)No
android:voiceLanguageIf provided, this specifies the spoken language to be expected. This is only + * needed if it is different from the current value of + * {@link java.util.Locale#getDefault()}. + * No
android:voiceMaxResultsIf provided, enforces the maximum number of results to return, including the "best" + * result which will always be provided as the SEARCH intent's primary query. Must be + * one or greater. Use {@link android.speech.RecognizerIntent#EXTRA_RESULTS} + * to get the results from the intent. If not provided, the recognizer will choose + * how many results to return.No
+ * * *

Passing Search Context

* diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 425880419348..88b8316022bf 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2703,12 +2703,13 @@ + will take the user away from the activity in which search was invoked. --> + transcribe the spoken text, and forward the resulting query + text to the searchable activity, just as if the user had typed it into + the search UI and clicked the search button. --> -- GitLab From f87d0580d2a6aadf7c84e922ef3f7b774885dfda Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 14:11:32 -0700 Subject: [PATCH 09/72] AI 147211: Update emulator doc for new usage with avds. BUG=1790234 Automated import of CL 147211 --- docs/html/guide/developing/tools/emulator.jd | 263 ++++++++++++------- 1 file changed, 163 insertions(+), 100 deletions(-) diff --git a/docs/html/guide/developing/tools/emulator.jd b/docs/html/guide/developing/tools/emulator.jd index 769491b4f14b..11c0da5afa54 100644 --- a/docs/html/guide/developing/tools/emulator.jd +++ b/docs/html/guide/developing/tools/emulator.jd @@ -14,30 +14,31 @@ using your mouse or keyboard to generate events for your application. It also provides a screen in which your application is displayed, together with any other Android applications running.

-

To help you model and test your application, the emulator lets your application -use the services of the Android platform to invoke other applications, access the -network, play audio and video, store and retrieve data, notify the user, and render -graphical transitions and themes.

+

To let you model and test your application more easily, the emulator supports +Android Virtual Device (AVD) configurations. AVDs let you specify the Android +platform that you want to run on the emulator, as well as the hardware options +and emulator skin files tht you want to use. Once your application is running on +the emulator, it can use the services of the Android platform to invoke other +applications, access the network, play audio and video, store and retrieve data, +notify the user, and render graphical transitions and themes.

The emulator also includes a variety of debug capabilities, such as a console from which you can log kernel output, simulate application interrupts (such as arriving SMS messages or phone calls), and simulate latency effects and dropouts on the data channel.

- - -

In this document:

  1. Overview
  2. Starting and Stopping the Emulator
  3. +
  4. Android Virtual Devices and the Emulator
  5. Controlling the Emulator
  6. Emulator Startup Options
  7. Working with Emulator Disk Images
      -
    1. System Images
    2. +
    3. Default Images
    4. Runtime Images: User Data and SD Card
    5. Temporary Images
  8. @@ -76,7 +77,8 @@ on the data channel.

  9. Installing Applications on the Emulator
  10. SD Card Emulation
      -
    1. Creating a Disk Image
    2. +
    3. Creating an SD card image using the android tool
    4. +
    5. Creating an SD card image using mksdcard
    6. Copying Files to a Disk Image
    7. Loading the Disk Image at Emulator Startup
  11. @@ -92,12 +94,14 @@ on the data channel.

    Overview

    The Android emulator is a QEMU-based application that provides a virtual ARM -mobile device on which you can run your Android applications. It provides a full -Android system stack, down to the kernel level, and includes a set of +mobile device on which you can run your Android applications. It runs a full +Android system stack, down to the kernel level, that includes a set of preinstalled applications (such as the dialer) that you can access from your -applications. It provides a skinnable mobile device UI, customizable key -mappings, and a variety of commands and options for controlling the behaviors of -the emulated environment.

    +applications. You can choose what version of the Android system you want to +run in the emulator by configuring AVDs, and you can also customize the +mobile device skin and key mappings. When launching the emulator and at runtime, +you can use a variety of commands and options to control the its behaviors. +

    The Android system image distributed in the SDK contains ARM machine code for the Android Linux kernel, the native libraries, the Dalvik VM, and the various @@ -132,9 +136,9 @@ it for developing Android applications.

    During development and testing of your application, you install and run your application in the Android emulator. You can launch the emulator as a standalone application, from a command line, or you can use it as part of your Eclipse -development environment. In either case, you can specify the startup options -described in this document to control the emulator. -

    +development environment. In either case, you specify the AVD configuration to +load and any startup options you want to use, as described in this document. +

    You can run your application on a single instance of the emulator or, depending on your needs, you can start multiple emulator instances and run your @@ -146,9 +150,14 @@ Emulation, SMS Emulation, and Emulator Networking

    To start an instance of the emulator from the command line, change to the -tools/ folder of the SDK and enter emulator or -./emulator. This initializes the Android system and you will see -the emulator window appear on your screen.

    +tools/ folder of the SDK. Enter emulator command +like this:

    + +
    emulator -avd <avd_name>
    + +

    This initializes the emulator and loads an AVD configuration (see the next +section for more information about AVDs). You will see the emulator window +appear on your screen.

    If you are working in Eclipse, the ADT plugin for Eclipse installs your application and starts the emulator automatically, when you run or debug @@ -163,6 +172,27 @@ on the Emulator for information about how to install your application.

    + + +

    Android Virtual Devices and the Emulator

    + +

    To use the emulator, you first must create one or more AVD configurations. In each +configuration, you specify an Android platform to run in the emulator and the set of hardware +options and emulator skin you want to use. Then, when you launch the emulator, you specify +the AVD configuration that you want to load.

    + +

    To specify the AVD you want to load when starting the emulator, you use the +-avd argument, as shown in the previous section.

    + +

    Each AVD functions as an independent device, with its own private storage for +user data, SD card, and so on. When you launch the emulator with an AVD configuration, +it automatically loads the user data and SD card data from the AVD directory. By default, +the emulator stores the user data, SD card data, and cache in the AVD directory.

    + +

    To create and manage AVDs you use the android tool, a command-line utility +included in the SDK. For complete information about how to set up AVDs, see Android Virtual Devices.

    +

    Controlling the Emulator

    You can use emulator startup options and when launching the emulator, to control its appearance or behavior. Here's the command-line usage for launching the emulator with options:

    -
    emulator [-<option> [<value>]] ... [-<qemu args>]
    +
    emulator -avd <avd_name> [-<option> [<value>]] ... [-<qemu args>]

    The table below summarizes the available options.

    @@ -292,7 +322,7 @@ Here's the command-line usage for launching the emulator with options:

    - Help + Help -help Print a list of all emulator options.   @@ -331,9 +361,22 @@ Here's the command-line usage for launching the emulator with options:

    Print help for defining a custom key mappings file.   - - Disk Images + -help-virtual-device + Print help for Android Virtual Device usage. +   + + + AVD + -avd <avd_name> or
    + @<avd_name> + Required. Specifies the AVD to load for this emulator + instance. + You must create an AVD configuration before launching the emulator. For + information, see
    Android + Virtual Devices. + + Disk Images -cache <filepath> Use <filepath> as the working cache partition image. Optionally, you can specify a path relative to the current working directory. @@ -345,13 +388,7 @@ Here's the command-line usage for launching the emulator with options:

    Use <filepath> as the working user-data disk image. Optionally, you can specify a path relative to the current working directory. If -data is not used, the emulator looks for a file named "userdata-qemu.img" - in the directory specified in <datadir>. ~/.android/SDK-1.0 (on Linux/Mac) or - C:\Documents and Settings\<user>\Local Settings\Application Data\Android\SDK-1.0 (on Windows). -

    If you use -data <filepath> but the file does not exist, the emulator creates - a file at that location using the specified name.

    -

    See Running Multiple Emulator Instances for information about how - to use -data to let multiple emulator instances preserve their user data across sessions.

    -

    For more information on disk images, use -help-disk-images.

    + in the storage area of the AVD being used (see -avd). + -initdata <filepath> When resetting the user-data image (through -wipe-data), copy the contents of this file to the new user-data disk image. By default, the emulator copies the <system>/userdata.img. Optionally, you can specify a path relative to the current working directory. See also -wipe-data.

    For more information on disk images, use -help-disk-images.

    + -nocache Start the emulator without a cache partition. @@ -400,12 +441,14 @@ Here's the command-line usage for launching the emulator with options:

    Optionally, you can specify a path relative to the current working directory. For more information on disk images, use -help-disk-images.

    + -wipe-data Reset the current user-data disk image (that is, the file specified by -datadir and @@ -679,7 +722,8 @@ scale in direct relationship with <delay> values.

    -skin <skinID> Start the emulator with the specified skin. - The SDK includes a choice of four skins:
    + The standard Android platforms includes a choice of + four skins:
  12. HVGA-L (480x320, landscape)
  13. HVGA-P (320x480, portrait) (default)
  14. QVGA-L (320x240, landscape)
  15. @@ -702,10 +746,16 @@ disk image containing an emulator-specific kernel, the Android system, a ramdisk image, and writeable images for user data and simulated SD card.

    To run properly, the emulator requires access to a specific set of disk image -files. The Android SDK includes default versions of the required images, stored -in predetermined locations in the SDK directory structure. At startup, the -emulator looks for and reads the image files, using their default names and -storage locations.

    +files. By default, the Emulator always looks for the disk images in the +private storage area of the AVD in use. If no images exist there when +the Emulator is launched, it creates the images in the AVD directory based on +default versions stored in the SDK.

    + +

    Note: The default storage location for +AVDs is in ~/.android/avd on OS X and Linux, C:\Documents and +Settings\<user>\.android\ on Windows XP, and +C:\Users\<user>\.android\ +on Windows Vista.

    To let you use alternate or custom versions of the image files, the emulator provides startup options that override the default locations and filenames of @@ -713,32 +763,26 @@ the image files. When you use the options, the emulator searches for the image file under the image name or location that you specify; if it can not locate the image, it reverts to using the default names and location.

    -

    The emulator uses three types of image files: system image files, runtime +

    The emulator uses three types of image files: default image files, runtime image files, and temporary image files. The sections below describe how to override the location/name of each type of file.

    - -

    System Images

    + +

    Default Images

    -

    System images contain system data and default settings without which the -emulator can not run. The image files are read-only — the emulator reads -the images at startup and does not modify them during the session.

    - -

    All of the system image files are stored in a single directory. By default, -the system images are stored in the lib/images' under the -emulator's program location.

    +

    When the emulator launches but does not find an existing user data image in +the active AVD's storage area, it creates a new one from a default version +included in the SDK. The default user data image is read-only. The image +files are read-only.

    The emulator provides the -system <dir> startup option to -let you override the location under which the emulator looks for the system -images files.

    +let you override the location under which the emulator looks for the default +user data image.

    -

    The emulator also provides startup options that let you override the names of -the system images, as described in the table below. When you use one of the -options, the emulator looks in the default directory, or in a custom location -(if you specified -system <dir>). Note that, if you provide -alternate system image file, it must contain the same type of data as the -default. For example, your override of the system.img file must point to a disk -image containing an Android system.

    +

    The emulator also provides a startup option that lets you override the name +of the default user data image, as described in the table below. When you use the +option, the emulator looks in the default directory, or in a custom location +(if you specified -system <dir>).

    @@ -748,6 +792,7 @@ image containing an Android system.

    + @@ -784,13 +829,7 @@ partition and removable storage media on actual device.

    The emulator provides a default user-data disk image. At startup, the emulator creates the default image as a copy of the system user-data image (user-data.img), -described above. The emulator stores the default image in this location on -on your development machine:

    - -
      -
    • Linux and OS X: ~/.android/SDK-1.0
    • -
    • Windows: C:\Documents and Settings\<user>\Local Settings\Application Data\Android\SDK-1.0
    • -
    +described above. The emulator stores the new image with the files of the active AVD.

    + + + + + +API Differences between 2 and 3 + + + + + + + + + + + + + + +<H2> +Frame Alert +</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to <A HREF="changes/changes-summary.html" target="_top">Non-frame version.</A> + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html new file mode 100644 index 000000000000..41f78ab79d97 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html @@ -0,0 +1,3144 @@ + + + + + + + + + +All Additions Index + + + + + + + + +
    Comments
    userdata.img The initial user-data disk image
    + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    + +ACCELEROMETER_ROTATION +
    + +ACTION_AIRPLANE_MODE_SETTINGS +
    + +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    + +ACTION_AUDIO_BECOMING_NOISY +
    + +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    + +ACTION_DATA_ROAMING_SETTINGS +
    + +ACTION_IMAGE_CAPTURE +
    + +ACTION_INPUT_METHOD_CHANGED +
    + +ACTION_INPUT_METHOD_SETTINGS +
    + +ACTION_INTERNAL_STORAGE_SETTINGS +
    + +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    + +ACTION_MEDIA_CHECKING +
    + +ACTION_MEDIA_NOFS +
    + +ACTION_MEMORY_CARD_SETTINGS +
    + +ACTION_NETWORK_OPERATOR_SETTINGS +
    + +ACTION_OUTSIDE +
    + +ACTION_PACKAGE_DATA_CLEARED +
    + +ACTION_PACKAGE_REPLACED +
    + +ACTION_PHONE_STATE_CHANGED +
    + +ACTION_QUICK_LAUNCH_SETTINGS +
    + +ACTION_SEARCH_LONG_PRESS +
    + +ACTION_SYNC_SETTINGS +
    + +ACTION_SYSTEM_TUTORIAL +
    + +ACTION_USER_DICTIONARY_SETTINGS +
    + +ACTION_USER_PRESENT +
    + +ACTION_VIDEO_CAPTURE +
    + +ACTION_WIFI_IP_SETTINGS +
    + +ActivityInstrumentationTestCase2
    + +ActivityManager.RunningAppProcessInfo
    + +addGpsStatusListener +(Listener)
    + +addOnScrollChangedListener +(OnScrollChangedListener)
    + +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    + +addToDictionary +
    + +adjustMetaAfterKeypress +(long)
    + +ALIGN_BASELINE +
    + +ALIGN_BOTTOM +
    + +AlignmentSpan.Standard +(Parcel) constructor
    + +allowSingleTap +
    + +AlphabetIndexer
    + +android.appwidget
    + +android.inputmethodservice
    + +android.speech
    + +android.text.format
    + +android.view.inputmethod
    + +animateOnClick +
    + +Annotation +(Parcel) constructor
    + +applyDisplay +(int, Rect, Rect)
    + +AssetFileDescriptor.AutoCloseInputStream
    + +AssetFileDescriptor.AutoCloseOutputStream
    + +AsyncTask
    + +AsyncTask.Status
    + +AudioFormat
    + +AudioRecord
    + +AudioRecord.OnRecordPositionUpdateListener
    + +AudioTrack
    + +AudioTrack.OnPlaybackPositionUpdateListener
    + +AXIS_CLIP +
    + +AXIS_MINUS_X +
    + +AXIS_MINUS_Y +
    + +AXIS_MINUS_Z +
    + +AXIS_X +
    + +AXIS_Y +
    + +AXIS_Z +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    + +backgroundDimEnabled +
    + +beginBatchEdit +()
    + +BIND_APPWIDGET +
    + +BIND_INPUT_METHOD +
    + +BOOKMARK +
    + +bottomOffset +
    + +bringPointIntoView +(int)
    + +BUCKET_DISPLAY_NAME +
    + +BUCKET_ID +
    + +BulletSpan +(Parcel) constructor
    + +BUTTON_NEGATIVE +
    + +BUTTON_NEUTRAL +
    + +BUTTON_POSITIVE +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    + +callActivityOnUserLeaving +(Activity)
    + +candidatesArea +
    + +candidatesTextStyleSpans +
    + +CAP_MODE_CHARACTERS +
    + +CAP_MODE_SENTENCES +
    + +CAP_MODE_WORDS +
    + +CATEGORY_INFO +
    + +changeAction +(KeyEvent, int)
    + +changeCursorAndColumns +(Cursor, String[], int[])
    + +changeFlags +(KeyEvent, int)
    + +changeTimeRepeat +(KeyEvent, long, int)
    + +checkInputConnectionProxy +(View)
    + +Chronometer.OnChronometerTickListener
    + +clearComposingText +()
    + +clearListSelection +()
    + +clearMatches +()
    + +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    + +clearTestProviderEnabled +(String)
    + +clearTestProviderLocation +(String)
    + +clearTestProviderStatus +(String)
    + +CLIP_HORIZONTAL +
    + +CLIP_VERTICAL +
    + +close +()
    + +closeButton +
    + +closeContextMenu +()
    + +codes +
    + +computeDurationHint +()
    + +configPreferences +
    + +ConfigurationInfo
    + +configure +
    + +content +
    + +copy +
    + +copyPixelsFromBuffer +(Buffer)
    + +copyUrl +
    + +createInputStream +()
    + +createOutputStream +()
    + +createWifiLock +(int, String)
    + +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + + in  +android.graphics.RectF +
    + +cut +
    + + +
    D  +A +B +C +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +dark_header +
    + +DEBUG_ENABLE_ASSERT +
    + +DEBUG_ENABLE_CHECKJNI +
    + +DEBUG_ENABLE_DEBUGGER +
    + +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    + +  type  +() in android.graphics.RectF +
    + +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +deviceHasKey +(int)
    + +deviceHasKeys +(int[])
    + +DexClassLoader
    + +dialog_alert_title +
    + +didTouchFocusSelect +()
    + +dispatchKeyEventPreIme +(KeyEvent)
    + +DISPLAY +
    + +DISPLAY_CLIP_HORIZONTAL +
    + +DISPLAY_CLIP_VERTICAL +
    + +drag +(InstrumentationTestCase, float, float, float, float, int)
    + +dragQuarterScreenDown +(InstrumentationTestCase, Activity)
    + +dragQuarterScreenUp +(InstrumentationTestCase, Activity)
    + +dragViewBy +(InstrumentationTestCase, View, int, int, int)
    + +dragViewTo +(InstrumentationTestCase, View, int, int, int)
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX +(InstrumentationTestCase, View, int, int)
    + +dragViewToY +(InstrumentationTestCase, View, int, int)
    + +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    + +dropDownAnchor +
    + +dropDownWidth +
    + +dump
    +  type  +(Printer, String) in android.location.Location +
    + +  type  +(FileDescriptor, String[]) in android.os.Binder +
    + +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    + +dumpCapturedView +(String, Object)
    + +dumpHprofData
    +  type  +(String) in android.os.Debug +
    + +  type  +(String) in dalvik.system.VMDebug +
    + +dumpSpans +(CharSequence, Printer, String)
    + +DynamicDrawableSpan +(int) constructor
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +editorExtras +
    + +endBatchEdit +()
    + +EXTRA_APPLICATION_ID +
    + +EXTRA_CREATE_DESCRIPTION +
    + +EXTRA_DATA_REMOVED +
    + +EXTRA_FINISH_ON_COMPLETION +
    + +EXTRA_FORCE_CREATE +
    + +EXTRA_INCOMING_NUMBER +
    + +EXTRA_MAX_BYTES +
    + +EXTRA_MEDIA_ALBUM +
    + +EXTRA_MEDIA_ARTIST +
    + +EXTRA_MEDIA_FOCUS +
    + +EXTRA_MEDIA_TITLE +
    + +EXTRA_OUTPUT +
    + +EXTRA_REPLACING +
    + +EXTRA_SCREEN_ORIENTATION +
    + +EXTRA_STATE +
    + +EXTRA_STATE_IDLE +
    + +EXTRA_STATE_OFFHOOK +
    + +EXTRA_STATE_RINGING +
    + +EXTRA_VIDEO_QUALITY +
    + +extractArea +
    + +extractText +(ExtractedTextRequest, ExtractedText)
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +fastScrollEnabled +
    + +fillEnabled +
    + +findAll +(String)
    + +findNext +(boolean)
    + +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    + +FLAG_ACTIVITY_NO_USER_ACTION +
    + +FLAG_ACTIVITY_REORDER_TO_FRONT +
    + +FLAG_ALT_FOCUSABLE_IM +
    + +FLAG_EDITOR_ACTION +
    + +FLAG_FROM_SYSTEM +
    + +FLAG_KEEP_TOUCH_MODE +
    + +FLAG_NO_HISTORY +
    + +FLAG_SOFT_KEYBOARD +
    + +FLAG_UPDATE_CURRENT +
    + +FLAG_WATCH_OUTSIDE_TOUCH +
    + +footerDividersEnabled +
    + +ForegroundColorSpan +(Parcel) constructor
    + +forkAndSpecialize +(int, int, int[], int, int[][])
    + +forkSystemServer +(int, int, int[], int, int[][])
    + +FORMAT_JAPAN +
    + +formatJapaneseNumber +(Editable)
    + +FX_KEYPRESS_DELETE +
    + +FX_KEYPRESS_RETURN +
    + +FX_KEYPRESS_SPACEBAR +
    + +FX_KEYPRESS_STANDARD +
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +GeomagneticField
    + +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    + +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +GestureDetector.OnDoubleTapListener
    + +get +(Context)
    + +GET_CONFIGURATIONS +
    + +GET_UNINSTALLED_PACKAGES +
    + +getAllowFileAccess +()
    + +getBackgroundDataSetting +()
    + +getBoolean +(int)
    + +getBuiltInZoomControls +()
    + +getButton +(int)
    + +getCapsMode +(CharSequence, int, int)
    + +getCharacters +()
    + +getDeclaredLength +()
    + +getDefaultSensor +(int)
    + +getDeviceConfigurationInfo +()
    + +getDialog +()
    + +getDoubleTapTimeout +()
    + +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    + +  type  +() in android.graphics.drawable.ScaleDrawable +
    + +getDropDownAnchor +()
    + +getDropDownWidth +()
    + +getEditableText +()
    + +getFraction +(int, int, int)
    + +getGpsStatus +(GpsStatus)
    + +getImeActionId +()
    + +getImeActionLabel +()
    + +getImeOptions +()
    + +getInclination +(float[])
    + +getInitialScrollX +(TextView, Spannable)
    + +getInitialScrollY +(TextView, Spannable)
    + +getInputExtras +(boolean)
    + +getInputMethodMode +()
    + +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    + +  type  +() in android.text.method.DateTimeKeyListener +
    + +  type  +() in android.text.method.DialerKeyListener +
    + +  type  +() in android.text.method.DigitsKeyListener +
    + +  type  +() in android.text.method.KeyListener +
    + +  type  +() in android.text.method.MultiTapKeyListener +
    + +  type  +() in android.text.method.QwertyKeyListener +
    + +  type  +() in android.text.method.TextKeyListener +
    + +  type  +() in android.text.method.TimeKeyListener +
    + +  type  +() in android.widget.TextView +
    + +getItem +(int)
    + +getKeyProgressIncrement +()
    + +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    + +  type  +(String) in android.test.mock.MockPackageManager +
    + +getLayoutDimension +(int, int)
    + +getListSelection +()
    + +getListView +()
    + +getLoggingMXBean +()
    + +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    + +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    + +getMaxAvailableHeight +(View, int)
    + +getMaxKeyCode +()
    + +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +getNeighboringCellInfo +()
    + +getOnChronometerTickListener +()
    + +getOnItemClickListener +()
    + +getOnItemSelectedListener +()
    + +getOrientation +(float[], float[])
    + +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    + +  type  +() in android.webkit.WebView +
    + +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    + +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    + +getPrivateImeOptions +()
    + +getRotationMatrix +(float[], float[], float[], float[])
    + +getRunningAppProcesses +()
    + +getScaledDoubleTapSlop +()
    + +getScaledEdgeSlop +()
    + +getScaledFadingEdgeLength +()
    + +getScaledMaximumDrawingCacheSize +()
    + +getScaledMinimumFlingVelocity +()
    + +getScaledScrollBarSize +()
    + +getScaledTouchSlop +()
    + +getScaledWindowTouchSlop +()
    + +getSensorList +(int)
    + +getSize +(View)
    + +getSpanTypeId
    +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +getStartX +()
    + +getStartY +()
    + +getStatSize +()
    + +getSubtype +()
    + +getSubtypeName +()
    + +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +getTextFilter +()
    + +getThread +()
    + +getTimeZoneDatabaseVersion +()
    + +getUserAgentString +()
    + +getVerticalAlignment +()
    + +getWindowVisibleDisplayFrame +(Rect)
    + +GLSurfaceView
    + +GLSurfaceView.EGLConfigChooser
    + +GLSurfaceView.GLWrapper
    + +GLSurfaceView.Renderer
    + +GpsSatellite
    + +GpsStatus
    + +GpsStatus.Listener
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +handle +
    + +handleKeyDown +(long, int, KeyEvent)
    + +handleKeyUp +(long, int, KeyEvent)
    + +Handler
    +  Handler +(Callback) constructor
    + +  Handler +(Looper, Callback) constructor
    + +Handler.Callback
    + +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + + in  +android.view.View +
    + +HapticFeedbackConstants
    + +hapticFeedbackEnabled +
    + +hardKeyboardHidden +
    + +HARDKEYBOARDHIDDEN_NO +
    + +HARDKEYBOARDHIDDEN_UNDEFINED +
    + +HARDKEYBOARDHIDDEN_YES +
    + +hasSoftInputMode +()
    + +hasWindowFocus +()
    + +headerDividersEnabled +
    + +horizontalGap +
    + +HorizontalScrollView
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +ic_btn_speak_now +
    + +iconPreview +
    + +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    + +  ImageSpan +(Context, int, int) constructor
    + +  ImageSpan +(Bitmap, int) constructor
    + +  ImageSpan +(Drawable, int) constructor
    + +  ImageSpan +(Drawable, String, int) constructor
    + +imeActionId +
    + +imeActionLabel +
    + +imeExtractEnterAnimation +
    + +imeExtractExitAnimation +
    + +imeFullscreenBackground +
    + +imeOptions +
    + +inferStreamType +()
    + +initialLayout +
    + +innerRadius +
    + +INPUT_METHOD_FROM_FOCUSABLE +
    + +INPUT_METHOD_NEEDED +
    + +INPUT_METHOD_NOT_NEEDED +
    + +INPUT_METHOD_SERVICE +
    + +inputArea +
    + +inputExtractEditText +
    + +InputType
    + +inputType +
    + +INSTALL_FAILED_CONFLICTING_PROVIDER +
    + +INTENT_ACTION_MEDIA_SEARCH +
    + +INTENT_ACTION_STILL_IMAGE_CAMERA +
    + +INTENT_ACTION_VIDEO_CAMERA +
    + +intentForPosition +(int)
    + +IntentService
    + +INTERVAL_DAY +
    + +INTERVAL_FIFTEEN_MINUTES +
    + +INTERVAL_HALF_DAY +
    + +INTERVAL_HALF_HOUR +
    + +INTERVAL_HOUR +
    + +isAboveAnchor +()
    + +isBluetoothA2dpOn +()
    + +isClippingEnabled +()
    + +isDebuggingEnabled +()
    + +isDefault +
    + +isFastScrollEnabled +()
    + +isFillEnabled +()
    + +isHapticFeedbackEnabled +()
    + +isInEditMode +()
    + +isInputMethodTarget +()
    + +isLooping +()
    + +isModifier +
    + +isOutsideTouchable +()
    + +isPerformingCompletion +()
    + +isRepeatable +
    + +isRoaming +()
    + +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +isScrollContainer +
    + +isSelectingMetaTracker +(CharSequence, Object)
    + +isSmoothScrollbarEnabled +()
    + +isSticky +
    + +isTouchable +()
    + + +java.beans
    + +JetPlayer
    + +JetPlayer.OnJetEventListener
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +KEY_LOCATION_CHANGED +
    + +KEY_PROVIDER_ENABLED +
    + +KEY_STATUS_CHANGED +
    + +keyBackground +
    + +keyboardMode +
    + +keyboardView +
    + +KEYCODE_MEDIA_FAST_FORWARD +
    + +KEYCODE_MEDIA_NEXT +
    + +KEYCODE_MEDIA_PLAY_PAUSE +
    + +KEYCODE_MEDIA_PREVIOUS +
    + +KEYCODE_MEDIA_REWIND +
    + +KEYCODE_MEDIA_STOP +
    + +KEYCODE_MUTE +
    + +keyEdgeFlags +
    + +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    + +  KeyEvent +(long, String, int, int) constructor
    + +keyHeight +
    + +keyIcon +
    + +keyLabel +
    + +keyOutputText +
    + +keyPreviewHeight +
    + +keyPreviewLayout +
    + +keyPreviewOffset +
    + +keyTextColor +
    + +keyTextSize +
    + +keyWidth +
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +labelTextSize +
    + +launchActivityWithIntent +(String, Class<T>, Intent)
    + +LauncherActivity.IconResizer
    + +LauncherActivity.ListItem
    + +LeadingMarginSpan.Standard +(Parcel) constructor
    + +LiveFolders
    + +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    + +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    + +loadDex +(String, String, int)
    + +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +longClickView +(InstrumentationTestCase, View)
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +makeListItems +()
    + +mayUseInputMethod +(int)
    + +MEDIA_CHECKING +
    + +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    + +MEDIA_INFO_BAD_INTERLEAVING +
    + +MEDIA_INFO_NOT_SEEKABLE +
    + +MEDIA_INFO_UNKNOWN +
    + +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    + +MEDIA_NOFS +
    + +MEDIA_RECORDER_ERROR_UNKNOWN +
    + +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    + +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    + +MEDIA_RECORDER_INFO_UNKNOWN +
    + +MediaPlayer.OnInfoListener
    + +MediaPlayer.OnVideoSizeChangedListener
    + +MediaRecorder.OnErrorListener
    + +MediaRecorder.OnInfoListener
    + +MediaRecorder.VideoEncoder
    + +MediaRecorder.VideoSource
    + +MODE_APPEND +
    + +MOUNT_FORMAT_FILESYSTEMS +
    + +moveCursorToVisibleOffset +()
    + +mutate +()
    + +mVerticalAlignment +
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +NeighboringCellInfo
    + +NoCopySpan
    + +NoCopySpan.Concrete
    + +noHistory +
    + +NUMBER_OF_SONGS_FOR_ARTIST +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y + TOP +

    +onBeginBatchEdit +()
    + +onCheckIsTextEditor +()
    + +onCommitCompletion +(CompletionInfo)
    + +onContentChanged +()
    + +onCreateInputConnection +(EditorInfo)
    + +onDoubleTap +(MotionEvent)
    + +onDoubleTapEvent +(MotionEvent)
    + +onEditorAction +(int)
    + +onEndBatchEdit +()
    + +onFinishTemporaryDetach +()
    + +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    + +onKeyPreIme +(int, KeyEvent)
    + +onPrivateIMECommand +(String, Bundle)
    + +onSelectionChanged +(int, int)
    + +onSingleTapConfirmed +(MotionEvent)
    + +onStartTemporaryDetach +()
    + +onTextContextMenuItem +(int)
    + +onUserInteraction +()
    + +onUserLeaveHint +()
    + +openAssetFile +(Uri, String)
    + +openAssetFileDescriptor +(Uri, String)
    + +openOutputStream +(Uri, String)
    + +openRawResource +(int, TypedValue)
    + +OrientationEventListener
    + +OrientationListener +(Context, int) constructor
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y + TOP +

    +ParcelableSpan
    + +parseBundleExtra +(String, AttributeSet, Bundle)
    + +parseBundleExtras +(XmlResourceParser, Bundle)
    + +paste +
    + +peekService +(Context, Intent)
    + +performHapticFeedback
    +  type  +(int) in android.view.View +
    + +  type  +(int, int) in android.view.View +
    + +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + + in  +android.provider.Contacts.PeopleColumns +
    + +playSoundEffect +(int, float)
    + +PluginData
    + +popupCharacters +
    + +popupKeyboard +
    + +popupLayout +
    + +PrintStreamPrinter
    + +privateImeOptions +
    + +ProviderTestCase2
    + +putLong +(ContentResolver, String, long)
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y + TOP +

    +QuoteSpan +(Parcel) constructor
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y + TOP +

    +R.bool
    + +R.integer
    + +RAW_AMR +
    + +readFromParcel +(Parcel)
    + +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    + +RelativeSizeSpan +(Parcel) constructor
    + +remapCoordinateSystem +(float[], int, int, float[])
    + +RemoteViews.ActionException +(Exception) constructor
    + +removeAt +(int)
    + +removeGpsStatusListener +(Listener)
    + +removeOnScrollChangedListener +(OnScrollChangedListener)
    + +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +removeTestProvider +(String)
    + +removeUpdates +(PendingIntent)
    + +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    + +  type  +(Bundle) in android.content.Intent +
    + +reqFiveWayNav +
    + +reqHardKeyboard +
    + +reqKeyboardType +
    + +reqNavigation +
    + +reqTouchScreen +
    + +requestChildRectangleOnScreen +(View, Rect, boolean)
    + +requestLocationUpdates +(String, long, float, PendingIntent)
    + +resetLockedMeta +(long)
    + +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +restartPackage +(String)
    + +restorePicture +(Bundle, File)
    + +ResultReceiver
    + +ROUTE_BLUETOOTH_A2DP +
    + +ROUTE_BLUETOOTH_SCO +
    + +rowEdgeFlags +
    + +runTestOnUiThread +(Runnable)
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y + TOP +

    +savePicture +(Bundle, File)
    + +ScaleXSpan +(Parcel) constructor
    + +SCREEN_BRIGHTNESS_CHANGED +
    + +SCREEN_ORIENTATION_CHANGED +
    + +screenBrightness +
    + +screenOrientation +
    + +scrollToBottom +(InstrumentationTestCase, Activity, ViewGroup)
    + +scrollToTop +(InstrumentationTestCase, Activity, ViewGroup)
    + +SECONDARY_EMAIL +
    + +SECONDARY_EMAIL_TYPE +
    + +SECONDARY_PHONE +
    + +SECONDARY_PHONE_TYPE +
    + +SectionIndexer
    + +selectAll +
    + +sendExtraCommand +(String, String, Bundle)
    + +Sensor
    + +SensorEvent
    + +SensorEventListener
    + +setAllowFileAccess +(boolean)
    + +setBitmap +(int, String, Bitmap)
    + +setBluetoothA2dpOn +(boolean)
    + +setBoolean +(int, String, boolean)
    + +setBuiltInZoomControls +(boolean)
    + +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setByte +(int, String, byte)
    + +setCamera +(Camera)
    + +setChar +(int, String, char)
    + +setCharSequence +(int, String, CharSequence)
    + +setClippingEnabled +(boolean)
    + +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    + +setDouble +(int, String, double)
    + +setDropDownAnchor +(int)
    + +setDropDownWidth +(int)
    + +setExtractedText +(ExtractedText)
    + +setFastScrollEnabled +(boolean)
    + +setFillEnabled +(boolean)
    + +setFloat +(int, String, float)
    + +setFooterDividersEnabled +(boolean)
    + +setHapticFeedbackEnabled +(boolean)
    + +setHeaderDividersEnabled +(boolean)
    + +setImageViewBitmap +(int, Bitmap)
    + +setImeActionLabel +(CharSequence, int)
    + +setImeOptions +(int)
    + +setInexactRepeating +(int, long, long, PendingIntent)
    + +setInputExtras +(int)
    + +setInputMethodMode +(int)
    + +setInputType +(int)
    + +setInt +(int, String, int)
    + +setKeyProgressIncrement +(int)
    + +setListSelection +(int)
    + +setLong +(int, String, long)
    + +setMaxDuration +(int)
    + +setMaxFileSize +(long)
    + +setNetworkAvailable +(boolean)
    + +setOnChronometerTickListener +(OnChronometerTickListener)
    + +setOnClickPendingIntent +(int, PendingIntent)
    + +setOnDoubleTapListener +(OnDoubleTapListener)
    + +setOnEditorActionListener +(OnEditorActionListener)
    + +setOnErrorListener +(OnErrorListener)
    + +setOneShotPreviewCallback +(PreviewCallback)
    + +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    + +  type  +(OnInfoListener) in android.media.MediaRecorder +
    + +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    + +setOutputFile +(FileDescriptor)
    + +setOutsideTouchable +(boolean)
    + +setPrivateImeOptions +(String)
    + +setRawInputType +(int)
    + +setScrollContainer +(boolean)
    + +setShort +(int, String, short)
    + +setSmoothScrollbarEnabled +(boolean)
    + +setSoftInputMode +(int)
    + +setStaticTransformationsEnabled +(boolean)
    + +setString +(int, String, String)
    + +setTestProviderEnabled +(String, boolean)
    + +setTestProviderLocation +(String, Location)
    + +setTestProviderStatus +(String, int, Bundle, long)
    + +setTextColor +(int, int)
    + +Settings.Secure
    + +settingsActivity +
    + +setTouchable +(boolean)
    + +setTouchInterceptor +(OnTouchListener)
    + +setUri +(int, String, Uri)
    + +setUserAgentString +(String)
    + +setVideoEncoder +(int)
    + +setVideoFrameRate +(int)
    + +setVideoSize +(int, int)
    + +setVideoSource +(int)
    + +setView +(View, int, int, int, int)
    + +setViewResource +(int)
    + +setVisible +(boolean)
    + +setWindowAnimations +(int)
    + +setWindowLayoutMode +(int, int)
    + +sharedUserId +
    + +sharedUserLabel
    + in  +android.R.attr +
    + + in  +android.content.pm.PackageInfo +
    + +SHOW_OR_CREATE_CONTACT +
    + +SlidingDrawer
    + +SlidingDrawer.OnDrawerCloseListener
    + +SlidingDrawer.OnDrawerOpenListener
    + +SlidingDrawer.OnDrawerScrollListener
    + +smoothScrollbar +
    + +SOFT_INPUT_ADJUST_PAN +
    + +SOFT_INPUT_ADJUST_RESIZE +
    + +SOFT_INPUT_ADJUST_UNSPECIFIED +
    + +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    + +SOFT_INPUT_MASK_ADJUST +
    + +SOFT_INPUT_MASK_STATE +
    + +SOFT_INPUT_MODE_CHANGED +
    + +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    + +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    + +SOFT_INPUT_STATE_HIDDEN +
    + +SOFT_INPUT_STATE_UNCHANGED +
    + +SOFT_INPUT_STATE_UNSPECIFIED +
    + +SOFT_INPUT_STATE_VISIBLE +
    + +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + + in  +android.view.WindowManager.LayoutParams +
    + +sort +(Comparator<? super T>)
    + +SPAN_COMPOSING +
    + +SPAN_INTERMEDIATE +
    + +SPAN_POINT_MARK_MASK +
    + +startSelectingText +
    + +state_long_pressable +
    + +stopSelectingText +
    + +STREAM_NOTIFICATION +
    + +STRETCH_SPACING_UNIFORM +
    + +StrikethroughSpan +(Parcel) constructor
    + +StyleSpan +(Parcel) constructor
    + +SubscriptSpan +(Parcel) constructor
    + +SuperscriptSpan +(Parcel) constructor
    + +switchInputMethod +
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y + TOP +

    +TERTIARY_EMAIL +
    + +TERTIARY_EMAIL_TYPE +
    + +TERTIARY_PHONE +
    + +TERTIARY_PHONE_TYPE +
    + +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    + +  TestMethod +(TestCase) constructor
    + +TextAppearanceSpan +(Parcel) constructor
    + +TextView.OnEditorActionListener
    + +Theme_InputMethod +
    + +Theme_Light_Panel +
    + +Theme_NoDisplay +
    + +Theme_Panel +
    + +thickness +
    + +title_bar_tall +
    + +topOffset +
    + +toShortString
    +  type  +() in android.graphics.Rect +
    + +  type  +() in android.view.animation.Transformation +
    + +TransitionDrawable +(Drawable[]) constructor
    + +TYPE_APPLICATION_ATTACHED_DIALOG +
    + +TYPE_INPUT_METHOD +
    + +TYPE_INPUT_METHOD_DIALOG +
    + +TypefaceSpan +(Parcel) constructor
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y + TOP +

    +UnderlineSpan +(Parcel) constructor
    + +UNKNOWN_LENGTH +
    + +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    + +update
    +  type  +() in android.widget.PopupWindow +
    + +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +UPDATE_DEVICE_STATS +
    + +UpdateAppearance
    + +updatePeriodMillis +
    + +URLSpan +(Parcel) constructor
    + +UserDictionary
    + +UserDictionary.Words
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y + TOP +

    +verticalCorrection +
    + +verticalGap +
    + +VideoView_error_text_invalid_progressive_playback +
    + +ViewDebug.CapturedViewProperty
    + +ViewTreeObserver.OnScrollChangedListener
    + +Visibility
    + +voiceLanguage +
    + +voiceLanguageModel +
    + +voiceMaxResults +
    + +voicePromptText +
    + +voiceSearchMode +
    + +VOLUME_NOTIFICATION +
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y + TOP +

    +Widget_KeyboardView +
    + +WIFI_MAX_DHCP_RETRY_COUNT +
    + +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    + +WIFI_MODE_FULL +
    + +WIFI_MODE_SCAN_ONLY +
    + +WIFI_SLEEP_POLICY +
    + +WIFI_SLEEP_POLICY_DEFAULT +
    + +WIFI_SLEEP_POLICY_NEVER +
    + +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    + +windowDisablePreview +
    + +windowNoDisplay +
    + +windowSoftInputMode +
    + +WRITE_SECURE_SETTINGS +
    + +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    + +  type  +(Parcel, int) in android.graphics.RectF +
    + +  type  +(Parcel, int) in android.text.Annotation +
    + +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.BulletSpan +
    + +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    + +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    + +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    + +  type  +(Parcel, int) in android.text.style.StyleSpan +
    + +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    + +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    + +  type  +(Parcel, int) in android.text.style.URLSpan +
    + +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html new file mode 100644 index 000000000000..48da98bb8776 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html @@ -0,0 +1,4178 @@ + + + + + + + + + +All Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +AbsListView
    + +AbsoluteLayout
    + +AbsoluteSizeSpan
    +  android.text.style
    + +  AbsoluteSizeSpan +(Parcel) constructor
    + +AbsSeekBar
    + +ACCELEROMETER_ROTATION +
    + +ACTION_AIRPLANE_MODE_SETTINGS +
    + +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    + +ACTION_AUDIO_BECOMING_NOISY +
    + +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    + +ACTION_DATA_ROAMING_SETTINGS +
    + +ACTION_IMAGE_CAPTURE +
    + +ACTION_INPUT_METHOD_CHANGED +
    + +ACTION_INPUT_METHOD_SETTINGS +
    + +ACTION_INTERNAL_STORAGE_SETTINGS +
    + +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    + +ACTION_MEDIA_CHECKING +
    + +ACTION_MEDIA_NOFS +
    + +ACTION_MEMORY_CARD_SETTINGS +
    + +ACTION_NETWORK_OPERATOR_SETTINGS +
    + +ACTION_OUTSIDE +
    + +ACTION_PACKAGE_DATA_CLEARED +
    + +ACTION_PACKAGE_REPLACED +
    + +ACTION_PHONE_STATE_CHANGED +
    + +ACTION_QUICK_LAUNCH_SETTINGS +
    + +ACTION_SEARCH_LONG_PRESS +
    + +ACTION_SYNC_SETTINGS +
    + +ACTION_SYSTEM_TUTORIAL +
    + +ACTION_USER_DICTIONARY_SETTINGS +
    + +ACTION_USER_PRESENT +
    + +ACTION_VIDEO_CAPTURE +
    + +ACTION_WIFI_IP_SETTINGS +
    + +Activity
    + +ActivityInfo
    + +ActivityInstrumentationTestCase
    + +ActivityInstrumentationTestCase2
    + +ActivityManager
    + +ActivityManager.RunningAppProcessInfo
    + +ADB_ENABLED +
    + +addGpsStatusListener +(Listener)
    + +addOnScrollChangedListener +(OnScrollChangedListener)
    + +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +addRequirements +(Predicate<TestMethod>)
    + +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    + +addToDictionary +
    + +adjustMetaAfterKeypress +(long)
    + +AlarmManager
    + +AlertDialog
    + +ALIGN_BASELINE +
    + +ALIGN_BOTTOM +
    + +AlignmentSpan.Standard
    +  android.text.style
    + +  AlignmentSpan.Standard +(Parcel) constructor
    + +allowSingleTap +
    + +AlphabetIndexer
    + +android
    + +android.app
    + +android.appwidget
    + +android.content
    + +android.content.pm
    + +android.content.res
    + +android.database
    + +android.database.sqlite
    + +android.graphics
    + +android.graphics.drawable
    + +android.graphics.drawable.shapes
    + +android.hardware
    + +android.inputmethodservice
    + +android.location
    + +android.media
    + +android.net
    + +android.net.wifi
    + +android.opengl
    + +android.os
    + +android.preference
    + +android.provider
    + +android.speech
    + +android.telephony
    + +android.telephony.gsm
    + +android.test
    + +android.test.mock
    + +android.test.suitebuilder
    + +android.text
    + +android.text.format
    + +android.text.method
    + +android.text.style
    + +android.util
    + +android.view
    + +android.view.animation
    + +android.view.inputmethod
    + +android.webkit
    + +android.widget
    + +ANDROID_ID +
    + +animateOnClick +
    + +Animation
    + +Annotation
    +  android.text
    + +  Annotation +(Parcel) constructor
    + +appendEscapedSQLString +(StringBuilder, String)
    + +applyDisplay +(int, Rect, Rect)
    + +ArrayAdapter
    + +ArrowKeyMovementMethod
    + +AssetFileDescriptor
    + +AssetFileDescriptor.AutoCloseInputStream
    + +AssetFileDescriptor.AutoCloseOutputStream
    + +AsyncTask
    + +AsyncTask.Status
    + +AudioFormat
    + +AudioManager
    + +AudioRecord
    + +AudioRecord.OnRecordPositionUpdateListener
    + +AudioTrack
    + +AudioTrack.OnPlaybackPositionUpdateListener
    + +AutoCompleteTextView
    + +AutoText
    + +autoText +
    + +AXIS_CLIP +
    + +AXIS_MINUS_X +
    + +AXIS_MINUS_Y +
    + +AXIS_MINUS_Z +
    + +AXIS_X +
    + +AXIS_Y +
    + +AXIS_Z +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +BackgroundColorSpan
    +  android.text.style
    + +  BackgroundColorSpan +(Parcel) constructor
    + +backgroundDimEnabled +
    + +BaseKeyListener
    + +beginBatchEdit +()
    + +BIND_APPWIDGET +
    + +BIND_INPUT_METHOD +
    + +Binder
    + +Bitmap
    + +BLUETOOTH_ON +
    + +BOOKMARK +
    + +bottomOffset +
    + +bringPointIntoView +(int)
    + +BroadcastReceiver
    + +Browser
    + +BUCKET_DISPLAY_NAME +
    + +BUCKET_ID +
    + +Build
    + +BulletSpan
    +  android.text.style
    + +  BulletSpan +(Parcel) constructor
    + +BUTTON1 +
    + +BUTTON2 +
    + +BUTTON3 +
    + +BUTTON_NEGATIVE +
    + +BUTTON_NEUTRAL +
    + +BUTTON_POSITIVE +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +calculateLength +(CharSequence, boolean)
    + +callActivityOnUserLeaving +(Activity)
    + +Camera
    + +candidatesArea +
    + +candidatesTextStyleSpans +
    + +Canvas
    + +CAP_MODE_CHARACTERS +
    + +CAP_MODE_SENTENCES +
    + +CAP_MODE_WORDS +
    + +capitalize +
    + +CATEGORY_GADGET +
    + +CATEGORY_INFO +
    + +changeAction +(KeyEvent, int)
    + +changeCursorAndColumns +(Cursor, String[], int[])
    + +changeDebugPort +(int)
    + +changeFlags +(KeyEvent, int)
    + +changeTimeRepeat +(KeyEvent, long, int)
    + +Character.UnicodeBlock
    + +checkInputConnectionProxy +(View)
    + +Chronometer
    + +Chronometer.OnChronometerTickListener
    + +Class
    + +clearComposingText +()
    + +clearListSelection +()
    + +clearMatches +()
    + +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    + +clearTestProviderEnabled +(String)
    + +clearTestProviderLocation +(String)
    + +clearTestProviderStatus +(String)
    + +ClickableSpan
    + +CLIP_HORIZONTAL +
    + +CLIP_VERTICAL +
    + +clone +()
    + +close +()
    + +closeButton +
    + +closeContextMenu +()
    + +codes +
    + +computeDurationHint +()
    + +configPreferences +
    + +Configuration
    + +ConfigurationInfo
    + +configure +
    + +ConnectivityManager
    + +Contacts.Intents
    + +Contacts.Intents.Insert
    + +Contacts.PeopleColumns
    + +content +
    + +ContentProvider
    + +ContentResolver
    + +Context
    + +copy +
    + +copyPixelsFromBuffer +(Buffer)
    + +copyUrl +
    + +createInputStream +()
    + +createOutputStream +()
    + +createWifiLock +(int, String)
    + +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + + in  +android.graphics.RectF +
    + +Cursor
    + +CursorAdapter
    + +CursorWrapper
    + +cut +
    + + +dalvik.system
    + +dark_header +
    + +DATA_ROAMING +
    + +DATA_X +
    + +DATA_Y +
    + +DATA_Z +
    + +DatabaseUtils
    + +Date
    +  java.util
    + +  Date +() constructor
    + +  Date +(int, int, int, int, int, int) constructor
    + +DateKeyListener
    + +DateTimeKeyListener
    + +Debug
    + +DEBUG_ENABLE_ASSERT +
    + +DEBUG_ENABLE_CHECKJNI +
    + +DEBUG_ENABLE_DEBUGGER +
    + +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + + in  +android.provider.MediaStore.Video +
    + +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    + +  type  +() in android.graphics.RectF +
    + +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +DEVICE_PROVISIONED +
    + +deviceHasKey +(int)
    + +deviceHasKeys +(int[])
    + +DexClassLoader
    + +DexFile
    + +DialerKeyListener
    + +dialog_alert_title +
    + +DialogInterface
    + +DialogPreference
    + +didTouchFocusSelect +()
    + +DigitsKeyListener
    + +dispatchKeyEventPreIme +(KeyEvent)
    + +DISPLAY +
    + +DISPLAY_CLIP_HORIZONTAL +
    + +DISPLAY_CLIP_VERTICAL +
    + +drag
    +  type  +(InstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    + +dragQuarterScreenDown
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    + +dragQuarterScreenUp
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    + +dragViewBy
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +dragViewTo
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +dragViewToY
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +Drawable
    + +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    + +dropDownAnchor +
    + +dropDownWidth +
    + +dump
    +  type  +(Printer, String) in android.location.Location +
    + +  type  +(FileDescriptor, String[]) in android.os.Binder +
    + +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    + +dumpCapturedView +(String, Object)
    + +dumpHprofData
    +  type  +(String) in android.os.Debug +
    + +  type  +(String) in dalvik.system.VMDebug +
    + +dumpSpans +(CharSequence, Printer, String)
    + +DynamicDrawableSpan
    +  android.text.style
    + +  DynamicDrawableSpan +(int) constructor
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +editable +
    + +editorExtras +
    + +enabled +
    + +endBatchEdit +()
    + +Environment
    + +EXTRA_APPLICATION_ID +
    + +EXTRA_CREATE_DESCRIPTION +
    + +EXTRA_DATA_REMOVED +
    + +EXTRA_FINISH_ON_COMPLETION +
    + +EXTRA_FORCE_CREATE +
    + +EXTRA_INCOMING_NUMBER +
    + +EXTRA_MAX_BYTES +
    + +EXTRA_MEDIA_ALBUM +
    + +EXTRA_MEDIA_ARTIST +
    + +EXTRA_MEDIA_FOCUS +
    + +EXTRA_MEDIA_TITLE +
    + +EXTRA_OUTPUT +
    + +EXTRA_REPLACING +
    + +EXTRA_SCREEN_ORIENTATION +
    + +EXTRA_STATE +
    + +EXTRA_STATE_IDLE +
    + +EXTRA_STATE_OFFHOOK +
    + +EXTRA_STATE_RINGING +
    + +EXTRA_VIDEO_QUALITY +
    + +extractArea +
    + +extractText +(ExtractedTextRequest, ExtractedText)
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +fastScrollEnabled +
    + +fillEnabled +
    + +findAll +(String)
    + +findNext +(boolean)
    + +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    + +FLAG_ACTIVITY_NO_USER_ACTION +
    + +FLAG_ACTIVITY_REORDER_TO_FRONT +
    + +FLAG_ALT_FOCUSABLE_IM +
    + +FLAG_EDITOR_ACTION +
    + +FLAG_FROM_SYSTEM +
    + +FLAG_KEEP_TOUCH_MODE +
    + +FLAG_NO_HISTORY +
    + +FLAG_SOFT_KEYBOARD +
    + +FLAG_UPDATE_CURRENT +
    + +FLAG_WATCH_OUTSIDE_TOUCH +
    + +footerDividersEnabled +
    + +ForegroundColorSpan
    +  android.text.style
    + +  ForegroundColorSpan +(Parcel) constructor
    + +forkAndSpecialize
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    + +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    + +forkSystemServer
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    + +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    + +FORMAT_JAPAN +
    + +formatJapaneseNumber +(Editable)
    + +forName +(String)
    + +FX_KEYPRESS_DELETE +
    + +FX_KEYPRESS_RETURN +
    + +FX_KEYPRESS_SPACEBAR +
    + +FX_KEYPRESS_STANDARD +
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +GeomagneticField
    + +GestureDetector
    +  android.view
    + +  GestureDetector +(Context, OnGestureListener) constructor
    + +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +  GestureDetector +(OnGestureListener) constructor
    + +  GestureDetector +(OnGestureListener, Handler) constructor
    + +GestureDetector.OnDoubleTapListener
    + +GestureDetector.SimpleOnGestureListener
    + +get +(Context)
    + +GET_CONFIGURATIONS +
    + +GET_UNINSTALLED_PACKAGES +
    + +getAllowFileAccess +()
    + +getBackgroundDataSetting +()
    + +getBoolean +(int)
    + +getBuiltInZoomControls +()
    + +getButton +(int)
    + +getCapsMode +(CharSequence, int, int)
    + +getCharacters +()
    + +getClasses +()
    + +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    + +  type  +(String) in android.database.CursorWrapper +
    + +getConstructors +()
    + +getCount +()
    + +getDeclaredClasses +()
    + +getDeclaredConstructors +()
    + +getDeclaredLength +()
    + +getDefaultSensor +(int)
    + +getDeviceConfigurationInfo +()
    + +getDialog +()
    + +getDoubleTapTimeout +()
    + +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    + +  type  +() in android.graphics.drawable.ScaleDrawable +
    + +getDropDownAnchor +()
    + +getDropDownWidth +()
    + +getEdgeSlop +()
    + +getEditableText +()
    + +getFadingEdgeLength +()
    + +getFraction +(int, int, int)
    + +getGpsStatus +(GpsStatus)
    + +getHandler +()
    + +getImeActionId +()
    + +getImeActionLabel +()
    + +getImeOptions +()
    + +getInclination +(float[])
    + +getInitialScrollX +(TextView, Spannable)
    + +getInitialScrollY +(TextView, Spannable)
    + +getInputExtras +(boolean)
    + +getInputMethodMode +()
    + +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    + +  type  +() in android.text.method.DateTimeKeyListener +
    + +  type  +() in android.text.method.DialerKeyListener +
    + +  type  +() in android.text.method.DigitsKeyListener +
    + +  type  +() in android.text.method.KeyListener +
    + +  type  +() in android.text.method.MultiTapKeyListener +
    + +  type  +() in android.text.method.QwertyKeyListener +
    + +  type  +() in android.text.method.TextKeyListener +
    + +  type  +() in android.text.method.TimeKeyListener +
    + +  type  +() in android.widget.TextView +
    + +getInterfaces +()
    + +getItem
    +  type  +(int) in android.view.Menu +
    + +  type  +(int) in android.widget.CursorAdapter +
    + +getItemClickListener +()
    + +getItemId +(int)
    + +getItemSelectedListener +()
    + +getKeyProgressIncrement +()
    + +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    + +  type  +(String) in android.test.mock.MockPackageManager +
    + +getLayoutDimension +(int, int)
    + +getListSelection +()
    + +getListView +()
    + +getLoggingMXBean +()
    + +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    + +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    + +getMaxAvailableHeight +(View, int)
    + +getMaximumDrawingCacheSize +()
    + +getMaxKeyCode +()
    + +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +getMinimumFlingVelocity +()
    + +getNeighboringCellInfo +()
    + +getOnChronometerTickListener +()
    + +getOnItemClickListener +()
    + +getOnItemSelectedListener +()
    + +getOrientation +(float[], float[])
    + +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    + +  type  +() in android.webkit.WebView +
    + +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    + +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    + +getPrivateImeOptions +()
    + +getProxyClass +(ClassLoader, Class<?>)
    + +getRotationMatrix +(float[], float[], float[], float[])
    + +getRunningAppProcesses +()
    + +getScaledDoubleTapSlop +()
    + +getScaledEdgeSlop +()
    + +getScaledFadingEdgeLength +()
    + +getScaledMaximumDrawingCacheSize +()
    + +getScaledMinimumFlingVelocity +()
    + +getScaledScrollBarSize +()
    + +getScaledTouchSlop +()
    + +getScaledWindowTouchSlop +()
    + +getScrollBarSize +()
    + +getSensorList +(int)
    + +getSensors +()
    + +getSize +(View)
    + +getSpanTypeId
    +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +getStartX +()
    + +getStartY +()
    + +getStatSize +()
    + +getSubtype +()
    + +getSubtypeName +()
    + +getSurrogate +(String, Map<String, String>)
    + +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +getTargetIntent +()
    + +getTextFilter +()
    + +getThread +()
    + +getTimeZoneDatabaseVersion +()
    + +getTouchSlop +()
    + +getUserAgent +()
    + +getUserAgentString +()
    + +getVerticalAlignment +()
    + +getWindowTouchSlop +()
    + +getWindowVisibleDisplayFrame +(Rect)
    + +getZoomControls +()
    + +GLSurfaceView
    + +GLSurfaceView.EGLConfigChooser
    + +GLSurfaceView.GLWrapper
    + +GLSurfaceView.Renderer
    + +GpsSatellite
    + +GpsStatus
    + +GpsStatus.Listener
    + +Gravity
    + +GridView
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +handle +
    + +handleKeyDown +(long, int, KeyEvent)
    + +handleKeyUp +(long, int, KeyEvent)
    + +Handler
    +  android.os
    + +  Handler +(Callback) constructor
    + +  Handler +(Looper, Callback) constructor
    + +Handler.Callback
    + +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + + in  +android.view.View +
    + +HapticFeedbackConstants
    + +hapticFeedbackEnabled +
    + +hardKeyboardHidden +
    + +HARDKEYBOARDHIDDEN_NO +
    + +HARDKEYBOARDHIDDEN_UNDEFINED +
    + +HARDKEYBOARDHIDDEN_YES +
    + +hasSoftInputMode +()
    + +hasWindowFocus +()
    + +headerDividersEnabled +
    + +horizontalGap +
    + +HorizontalScrollView
    + +HTTP_PROXY +
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +IBinder
    + +ic_btn_speak_now +
    + +iconPreview +
    + +ImageSpan
    +  android.text.style
    + +  ImageSpan +(Context, Uri, int) constructor
    + +  ImageSpan +(Context, int, int) constructor
    + +  ImageSpan +(Bitmap, int) constructor
    + +  ImageSpan +(Drawable, int) constructor
    + +  ImageSpan +(Drawable, String, int) constructor
    + +imeActionId +
    + +imeActionLabel +
    + +imeExtractEnterAnimation +
    + +imeExtractExitAnimation +
    + +imeFullscreenBackground +
    + +imeOptions +
    + +inferStreamType +()
    + +initialLayout +
    + +innerRadius +
    + +INPUT_METHOD_FROM_FOCUSABLE +
    + +INPUT_METHOD_NEEDED +
    + +INPUT_METHOD_NOT_NEEDED +
    + +INPUT_METHOD_SERVICE +
    + +inputArea +
    + +inputExtractEditText +
    + +inputMethod +
    + +InputType
    + +inputType +
    + +INSTALL_FAILED_CONFLICTING_PROVIDER +
    + +INSTALL_NON_MARKET_APPS +
    + +Instrumentation
    + +InstrumentationTestCase
    + +Intent
    + +INTENT_ACTION_MEDIA_SEARCH +
    + +INTENT_ACTION_STILL_IMAGE_CAMERA +
    + +INTENT_ACTION_VIDEO_CAMERA +
    + +intentForPosition +(int)
    + +IntentService
    + +INTERVAL_DAY +
    + +INTERVAL_FIFTEEN_MINUTES +
    + +INTERVAL_HALF_DAY +
    + +INTERVAL_HALF_HOUR +
    + +INTERVAL_HOUR +
    + +isAboveAnchor +()
    + +isBluetoothA2dpOn +()
    + +isClippingEnabled +()
    + +isCookielessProxyUrl +(String)
    + +isDebuggingEnabled +()
    + +isDefault +
    + +isFastScrollEnabled +()
    + +isFillEnabled +()
    + +isHapticFeedbackEnabled +()
    + +isInEditMode +()
    + +isInputMethodTarget +()
    + +isLooping +()
    + +isModifier +
    + +isOutsideTouchable +()
    + +isPerformingCompletion +()
    + +isRepeatable +
    + +isRoaming +()
    + +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +isScrollContainer +
    + +isSelectingMetaTracker +(CharSequence, Object)
    + +isSmoothScrollbarEnabled +()
    + +isSticky +
    + +isTouchable +()
    + + +java.beans
    + +java.lang
    + +java.lang.reflect
    + +java.net
    + +java.util
    + +java.util.jar
    + +java.util.logging
    + +JetPlayer
    + +JetPlayer.OnJetEventListener
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +KEY_LOCATION_CHANGED +
    + +KEY_PROVIDER_ENABLED +
    + +KEY_STATUS_CHANGED +
    + +keyBackground +
    + +keyboardMode +
    + +keyboardView +
    + +KeyCharacterMap
    + +KEYCODE_MEDIA_FAST_FORWARD +
    + +KEYCODE_MEDIA_NEXT +
    + +KEYCODE_MEDIA_PLAY_PAUSE +
    + +KEYCODE_MEDIA_PREVIOUS +
    + +KEYCODE_MEDIA_REWIND +
    + +KEYCODE_MEDIA_STOP +
    + +KEYCODE_MUTE +
    + +keyEdgeFlags +
    + +KeyEvent
    +  android.view
    + +  KeyEvent +(KeyEvent) constructor
    + +  KeyEvent +(long, String, int, int) constructor
    + +keyHeight +
    + +keyIcon +
    + +keyLabel +
    + +KeyListener
    + +keyOutputText +
    + +keyPreviewHeight +
    + +keyPreviewLayout +
    + +keyPreviewOffset +
    + +keyTextColor +
    + +keyTextSize +
    + +keyWidth +
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +labelTextSize +
    + +launchActivityWithIntent +(String, Class<T>, Intent)
    + +LauncherActivity
    + +LauncherActivity.IconResizer
    + +LauncherActivity.ListItem
    + +LeadingMarginSpan.Standard
    +  android.text.style
    + +  LeadingMarginSpan.Standard +(Parcel) constructor
    + +Level
    + +LIGHT_NO_MOON +
    + +ListView
    + +LiveFolders
    + +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    + +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    + +loadDex +(String, String, int)
    + +Location
    + +LOCATION_PROVIDERS_ALLOWED +
    + +LocationManager
    + +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +LOGGING_ID +
    + +LogManager
    + +longClickView
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +Looper
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +makeListItems +()
    + +Manifest.permission
    + +MaskFilterSpan
    + +MAX_KEYCODE +
    + +mayUseInputMethod +(int)
    + +MEDIA_CHECKING +
    + +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    + +MEDIA_INFO_BAD_INTERLEAVING +
    + +MEDIA_INFO_NOT_SEEKABLE +
    + +MEDIA_INFO_UNKNOWN +
    + +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    + +MEDIA_NOFS +
    + +MEDIA_RECORDER_ERROR_UNKNOWN +
    + +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    + +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    + +MEDIA_RECORDER_INFO_UNKNOWN +
    + +MediaPlayer
    + +MediaPlayer.OnInfoListener
    + +MediaPlayer.OnVideoSizeChangedListener
    + +MediaRecorder
    + +MediaRecorder.OnErrorListener
    + +MediaRecorder.OnInfoListener
    + +MediaRecorder.OutputFormat
    + +MediaRecorder.VideoEncoder
    + +MediaRecorder.VideoSource
    + +MediaStore
    + +MediaStore.Audio.AlbumColumns
    + +MediaStore.Audio.Media
    + +MediaStore.Images.Media
    + +MediaStore.Video
    + +MediaStore.Video.VideoColumns
    + +Menu
    + +MetaKeyKeyListener
    + +MockPackageManager
    + +MODE_APPEND +
    + +MotionEvent
    + +MOUNT_FORMAT_FILESYSTEMS +
    + +moveCursorToVisibleOffset +()
    + +MovementMethod
    + +MultiTapKeyListener
    + +mutate +()
    + +mVerticalAlignment +
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +NeighboringCellInfo
    + +NETWORK_PREFERENCE +
    + +NetworkInfo
    +  android.net
    + +  NetworkInfo +(int) constructor
    + +NoCopySpan
    + +NoCopySpan.Concrete
    + +noHistory +
    + +NUM_STREAMS +
    + +NUMBER_OF_SONGS_FOR_ARTIST +
    + +numeric +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +onBeginBatchEdit +()
    + +onCheckIsTextEditor +()
    + +onCommitCompletion +(CompletionInfo)
    + +onContentChanged +()
    + +onCreateInputConnection +(EditorInfo)
    + +onDoubleTap +(MotionEvent)
    + +onDoubleTapEvent +(MotionEvent)
    + +onEditorAction +(int)
    + +onEndBatchEdit +()
    + +onFinishTemporaryDetach +()
    + +onGlobalFocusChanged +(View, View)
    + +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    + +onKeyPreIme +(int, KeyEvent)
    + +onPrivateIMECommand +(String, Bundle)
    + +onRestoreInstanceState +(Parcelable)
    + +onSaveInstanceState +()
    + +onSelectionChanged +(int, int)
    + +onSingleTapConfirmed +(MotionEvent)
    + +onStartTemporaryDetach +()
    + +onTextContextMenuItem +(int)
    + +onUserInteraction +()
    + +onUserLeaveHint +()
    + +openAssetFile +(Uri, String)
    + +openAssetFileDescriptor +(Uri, String)
    + +openOutputStream +(Uri, String)
    + +openRawResource +(int, TypedValue)
    + +OrientationEventListener
    + +OrientationListener
    +  android.view
    + +  OrientationListener +(Context, int) constructor
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Pack200.Packer
    + +Pack200.Unpacker
    + +PackageInfo
    + +PackageManager
    + +Parcel
    + +ParcelableSpan
    + +ParcelFileDescriptor
    + +PARENTAL_CONTROL_ENABLED +
    + +PARENTAL_CONTROL_LAST_UPDATE +
    + +PARENTAL_CONTROL_REDIRECT_URL +
    + +parse +(String)
    + +parseBundleExtra +(String, AttributeSet, Bundle)
    + +parseBundleExtras +(XmlResourceParser, Bundle)
    + +password +
    + +paste +
    + +peekService +(Context, Intent)
    + +PendingIntent
    + +performHapticFeedback
    +  type  +(int) in android.view.View +
    + +  type  +(int, int) in android.view.View +
    + +phoneNumber +
    + +PhoneNumberUtils
    + +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + + in  +android.provider.Contacts.PeopleColumns +
    + +playSoundEffect
    +  type  +(int, float) in android.media.AudioManager +
    + +  type  +(int) in android.view.View +
    + +PluginData
    + +popupCharacters +
    + +popupKeyboard +
    + +popupLayout +
    + +PopupWindow
    + +PopupWindow.OnDismissListener
    + +prepare +()
    + +PrintStreamPrinter
    + +privateImeOptions +
    + +ProgressBar
    + +ProviderTestCase
    + +ProviderTestCase2
    + +Proxy
    + +putLong +(ContentResolver, String, long)
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y +Z + TOP +

    +QuoteSpan
    +  android.text.style
    + +  QuoteSpan +(Parcel) constructor
    + +QwertyKeyListener
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y +Z + TOP +

    +R.attr
    + +R.bool
    + +R.drawable
    + +R.id
    + +R.integer
    + +R.string
    + +R.style
    + +RasterizerSpan
    + +RAW_AMR +
    + +RAW_DATA_INDEX +
    + +RAW_DATA_X +
    + +RAW_DATA_Y +
    + +RAW_DATA_Z +
    + +readFromParcel +(Parcel)
    + +readHashMap +(ClassLoader)
    + +readMap +(Map, ClassLoader)
    + +Rect
    + +RectF
    + +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +RelativeSizeSpan
    +  android.text.style
    + +  RelativeSizeSpan +(Parcel) constructor
    + +remapCoordinateSystem +(float[], int, int, float[])
    + +RemoteViews
    + +RemoteViews.ActionException
    +  android.widget
    + +  RemoteViews.ActionException +(Exception) constructor
    + +removeAt +(int)
    + +removeGpsStatusListener +(Listener)
    + +removeOnScrollChangedListener +(OnScrollChangedListener)
    + +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +removeTestProvider +(String)
    + +removeUpdates +(PendingIntent)
    + +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    + +  type  +(Bundle) in android.content.Intent +
    + +reqFiveWayNav +
    + +reqHardKeyboard +
    + +reqKeyboardType +
    + +reqNavigation +
    + +reqTouchScreen +
    + +requestChildRectangleOnScreen +(View, Rect, boolean)
    + +requestLocationUpdates +(String, long, float, PendingIntent)
    + +resetLockedMeta +(long)
    + +ResourceCursorAdapter
    +  android.widget
    + +  ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +Resources
    + +restartPackage +(String)
    + +restorePicture +(Bundle, File)
    + +ResultReceiver
    + +RingtoneManager
    + +RotateDrawable
    + +ROUTE_BLUETOOTH +
    + +ROUTE_BLUETOOTH_A2DP +
    + +ROUTE_BLUETOOTH_SCO +
    + +rowEdgeFlags +
    + +runTestOnUiThread +(Runnable)
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y +Z + TOP +

    +savePicture +(Bundle, File)
    + +ScaleDrawable
    + +ScaleXSpan
    +  android.text.style
    + +  ScaleXSpan +(Parcel) constructor
    + +SCREEN_BRIGHTNESS_CHANGED +
    + +SCREEN_ORIENTATION_CHANGED +
    + +screenBrightness +
    + +screenOrientation +
    + +Scroller
    + +ScrollingMovementMethod
    + +scrollToBottom
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    + +scrollToTop
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    + +searchButtonText +
    + +SECONDARY_EMAIL +
    + +SECONDARY_EMAIL_TYPE +
    + +SECONDARY_PHONE +
    + +SECONDARY_PHONE_TYPE +
    + +SectionIndexer
    + +selectAll +
    + +sendExtraCommand +(String, String, Bundle)
    + +Sensor
    + +SENSOR_ACCELEROMETER +
    + +SENSOR_ALL +
    + +SENSOR_LIGHT +
    + +SENSOR_MAGNETIC_FIELD +
    + +SENSOR_MAX +
    + +SENSOR_MIN +
    + +SENSOR_ORIENTATION +
    + +SENSOR_ORIENTATION_RAW +
    + +SENSOR_PROXIMITY +
    + +SENSOR_TEMPERATURE +
    + +SENSOR_TRICORDER +
    + +SensorEvent
    + +SensorEventListener
    + +SensorListener
    + +SensorManager
    + +service +(String, Map<String, String>)
    + +setAllowFileAccess +(boolean)
    + +setBitmap +(int, String, Bitmap)
    + +setBluetoothA2dpOn +(boolean)
    + +setBoolean +(int, String, boolean)
    + +setBuiltInZoomControls +(boolean)
    + +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    + +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setByte +(int, String, byte)
    + +setCamera +(Camera)
    + +setChar +(int, String, char)
    + +setCharSequence +(int, String, CharSequence)
    + +setClippingEnabled +(boolean)
    + +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    + +setDouble +(int, String, double)
    + +setDropDownAnchor +(int)
    + +setDropDownWidth +(int)
    + +setExtractedText +(ExtractedText)
    + +setFastScrollEnabled +(boolean)
    + +setFillEnabled +(boolean)
    + +setFloat +(int, String, float)
    + +setFooterDividersEnabled +(boolean)
    + +setHapticFeedbackEnabled +(boolean)
    + +setHeaderDividersEnabled +(boolean)
    + +setImageViewBitmap +(int, Bitmap)
    + +setImeActionLabel +(CharSequence, int)
    + +setImeOptions +(int)
    + +setInexactRepeating +(int, long, long, PendingIntent)
    + +setInputExtras +(int)
    + +setInputMethodMode +(int)
    + +setInputType +(int)
    + +setInt +(int, String, int)
    + +setKeyProgressIncrement +(int)
    + +setListSelection +(int)
    + +setLong +(int, String, long)
    + +setMaxDuration +(int)
    + +setMaxFileSize +(long)
    + +setNetworkAvailable +(boolean)
    + +setOnChronometerTickListener +(OnChronometerTickListener)
    + +setOnClickPendingIntent +(int, PendingIntent)
    + +setOnDoubleTapListener +(OnDoubleTapListener)
    + +setOnEditorActionListener +(OnEditorActionListener)
    + +setOnErrorListener +(OnErrorListener)
    + +setOneShotPreviewCallback +(PreviewCallback)
    + +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    + +  type  +(OnInfoListener) in android.media.MediaRecorder +
    + +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    + +setOutputFile +(FileDescriptor)
    + +setOutsideTouchable +(boolean)
    + +setPreviewDisplay +(SurfaceHolder)
    + +setPrivateImeOptions +(String)
    + +setRawInputType +(int)
    + +setScrollContainer +(boolean)
    + +setShort +(int, String, short)
    + +setSmoothScrollbarEnabled +(boolean)
    + +setSoftInputMode +(int)
    + +setStaticTransformationsEnabled +(boolean)
    + +setString +(int, String, String)
    + +setTestProviderEnabled +(String, boolean)
    + +setTestProviderLocation +(String, Location)
    + +setTestProviderStatus +(String, int, Bundle, long)
    + +setTextColor +(int, int)
    + +Settings
    + +Settings.Secure
    + +Settings.System
    + +SETTINGS_CLASSNAME +
    + +settingsActivity +
    + +setTouchable +(boolean)
    + +setTouchInterceptor +(OnTouchListener)
    + +setUri +(int, String, Uri)
    + +setUserAgent +(int)
    + +setUserAgentString +(String)
    + +setVideoEncoder +(int)
    + +setVideoFrameRate +(int)
    + +setVideoSize +(int, int)
    + +setVideoSource +(int)
    + +setView +(View, int, int, int, int)
    + +setViewResource +(int)
    + +setVisible +(boolean)
    + +setWindowAnimations +(int)
    + +setWindowLayoutMode +(int, int)
    + +Shape
    + +sharedUserId +
    + +sharedUserLabel
    + in  +android.R.attr +
    + + in  +android.content.pm.PackageInfo +
    + +SHOW_OR_CREATE_CONTACT +
    + +SimpleCursorAdapter
    + +singleLine +
    + +SlidingDrawer
    + +SlidingDrawer.OnDrawerCloseListener
    + +SlidingDrawer.OnDrawerOpenListener
    + +SlidingDrawer.OnDrawerScrollListener
    + +smoothScrollbar +
    + +SmsMessage
    + +Socket
    +  java.net
    + +  Socket +() constructor
    + +  Socket +(String, int) constructor
    + +  Socket +(String, int, InetAddress, int) constructor
    + +  Socket +(Proxy) constructor
    + +  Socket +(SocketImpl) constructor
    + +SOFT_INPUT_ADJUST_PAN +
    + +SOFT_INPUT_ADJUST_RESIZE +
    + +SOFT_INPUT_ADJUST_UNSPECIFIED +
    + +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    + +SOFT_INPUT_MASK_ADJUST +
    + +SOFT_INPUT_MASK_STATE +
    + +SOFT_INPUT_MODE_CHANGED +
    + +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    + +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    + +SOFT_INPUT_STATE_HIDDEN +
    + +SOFT_INPUT_STATE_UNCHANGED +
    + +SOFT_INPUT_STATE_UNSPECIFIED +
    + +SOFT_INPUT_STATE_VISIBLE +
    + +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + + in  +android.view.WindowManager.LayoutParams +
    + +sort +(Comparator<? super T>)
    + +SoundPool
    + +SPAN_COMPOSING +
    + +SPAN_INTERMEDIATE +
    + +SPAN_POINT_MARK_MASK +
    + +Spanned
    + +SpanWatcher
    + +SparseIntArray
    + +SQLiteDatabase
    + +startSelectingText +
    + +state_long_pressable +
    + +stopSelectingText +
    + +STREAM_NOTIFICATION +
    + +STRETCH_SPACING_UNIFORM +
    + +StrikethroughSpan
    +  android.text.style
    + +  StrikethroughSpan +(Parcel) constructor
    + +String
    +  java.lang
    + +  String +() constructor
    + +  String +(byte[]) constructor
    + +  String +(byte[], int) constructor
    + +  String +(byte[], int, int) constructor
    + +  String +(byte[], int, int, int) constructor
    + +StyleSpan
    +  android.text.style
    + +  StyleSpan +(Parcel) constructor
    + +SubscriptSpan
    +  android.text.style
    + +  SubscriptSpan +(Parcel) constructor
    + +SuperscriptSpan
    +  android.text.style
    + +  SuperscriptSpan +(Parcel) constructor
    + +switchInputMethod +
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y +Z + TOP +

    +TelephonyManager
    + +TERTIARY_EMAIL +
    + +TERTIARY_EMAIL_TYPE +
    + +TERTIARY_PHONE +
    + +TERTIARY_PHONE_TYPE +
    + +TestMethod
    +  android.test.suitebuilder
    + +  TestMethod +(String, Class<TestCase>) constructor
    + +  TestMethod +(TestCase) constructor
    + +TestSuiteBuilder
    + +TextAppearanceSpan
    +  android.text.style
    + +  TextAppearanceSpan +(Parcel) constructor
    + +TextKeyListener
    + +TextUtils
    + +TextView
    + +TextView.OnEditorActionListener
    + +TextWatcher
    + +Theme_InputMethod +
    + +Theme_Light_Panel +
    + +Theme_NoDisplay +
    + +Theme_Panel +
    + +thickness +
    + +TimeKeyListener
    + +TimeUtils
    + +title_bar_tall +
    + +topOffset +
    + +toShortString
    +  type  +() in android.graphics.Rect +
    + +  type  +() in android.view.animation.Transformation +
    + +Touch
    + +TouchUtils
    + +Transformation
    + +TransitionDrawable
    +  android.graphics.drawable
    + +  TransitionDrawable +(Drawable[]) constructor
    + +TYPE_APPLICATION_ATTACHED_DIALOG +
    + +TYPE_INPUT_METHOD +
    + +TYPE_INPUT_METHOD_DIALOG +
    + +TypedArray
    + +TypefaceSpan
    +  android.text.style
    + +  TypefaceSpan +(Parcel) constructor
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y +Z + TOP +

    +UnderlineSpan
    +  android.text.style
    + +  UnderlineSpan +(Parcel) constructor
    + +UNKNOWN_LENGTH +
    + +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    + +  type  +(SensorListener) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +update
    +  type  +() in android.widget.PopupWindow +
    + +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +UPDATE_DEVICE_STATS +
    + +UpdateAppearance
    + +UpdateLayout
    + +updatePeriodMillis +
    + +UrlInterceptHandler
    + +UrlInterceptRegistry
    + +URLSpan
    +  android.text.style
    + +  URLSpan +(Parcel) constructor
    + +URLUtil
    + +USB_MASS_STORAGE_ENABLED +
    + +USE_GOOGLE_MAIL +
    + +UserDictionary
    + +UserDictionary.Words
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y +Z + TOP +

    +verticalCorrection +
    + +verticalGap +
    + +VideoView_error_text_invalid_progressive_playback +
    + +View
    + +ViewConfiguration
    +  android.view
    + +  ViewConfiguration +() constructor
    + +ViewDebug
    + +ViewDebug.CapturedViewProperty
    + +ViewGroup
    + +ViewParent
    + +ViewTreeObserver
    + +ViewTreeObserver.OnScrollChangedListener
    + +Visibility
    + +VMDebug
    + +voiceLanguage +
    + +voiceLanguageModel +
    + +voiceMaxResults +
    + +voicePromptText +
    + +voiceSearchMode +
    + +VOLUME_NOTIFICATION +
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y +Z + TOP +

    +WebHistoryItem
    + +WebSettings
    + +WebView
    + +Widget_KeyboardView +
    + +WIFI_MAX_DHCP_RETRY_COUNT +
    + +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    + +WIFI_MODE_FULL +
    + +WIFI_MODE_SCAN_ONLY +
    + +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    + +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    + +WIFI_NUM_OPEN_NETWORKS_KEPT +
    + +WIFI_ON +
    + +WIFI_SLEEP_POLICY +
    + +WIFI_SLEEP_POLICY_DEFAULT +
    + +WIFI_SLEEP_POLICY_NEVER +
    + +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    + +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    + +WIFI_WATCHDOG_AP_COUNT +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    + +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    + +WIFI_WATCHDOG_MAX_AP_CHECKS +
    + +WIFI_WATCHDOG_ON +
    + +WIFI_WATCHDOG_PING_COUNT +
    + +WIFI_WATCHDOG_PING_DELAY_MS +
    + +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + +WifiManager
    + +Window
    + +windowDisablePreview +
    + +WindowManager.LayoutParams
    + +windowNoDisplay +
    + +windowSoftInputMode +
    + +WRITE_SECURE_SETTINGS +
    + +writeMap +(Map)
    + +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    + +  type  +(Parcel, int) in android.graphics.RectF +
    + +  type  +(Parcel, int) in android.text.Annotation +
    + +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.BulletSpan +
    + +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    + +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    + +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    + +  type  +(Parcel, int) in android.text.style.StyleSpan +
    + +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    + +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    + +  type  +(Parcel, int) in android.text.style.URLSpan +
    + +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +yieldIfContended +()
    + +yieldIfContendedSafely +()
    + + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html new file mode 100644 index 000000000000..b35bdb35ce4b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html @@ -0,0 +1,1652 @@ + + + + + + + + + +All Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +AbsListView
    + +AbsoluteLayout
    + +AbsoluteSizeSpan
    + +AbsSeekBar
    + +Activity
    + +ActivityInfo
    + +ActivityInstrumentationTestCase
    + +ActivityManager
    + +ADB_ENABLED +
    + +addRequirements +(Predicate<TestMethod>)
    + +AlarmManager
    + +AlertDialog
    + +AlignmentSpan.Standard
    + +android
    + +android.app
    + +android.content
    + +android.content.pm
    + +android.content.res
    + +android.database
    + +android.database.sqlite
    + +android.graphics
    + +android.graphics.drawable
    + +android.graphics.drawable.shapes
    + +android.hardware
    + +android.location
    + +android.media
    + +android.net
    + +android.net.wifi
    + +android.opengl
    + +android.os
    + +android.preference
    + +android.provider
    + +android.telephony
    + +android.telephony.gsm
    + +android.test
    + +android.test.mock
    + +android.test.suitebuilder
    + +android.text
    + +android.text.method
    + +android.text.style
    + +android.util
    + +android.view
    + +android.view.animation
    + +android.webkit
    + +android.widget
    + +ANDROID_ID +
    + +Animation
    + +Annotation
    + +appendEscapedSQLString +(StringBuilder, String)
    + +ArrayAdapter
    + +ArrowKeyMovementMethod
    + +AssetFileDescriptor
    + +AudioManager
    + +AutoCompleteTextView
    + +AutoText
    + +autoText +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +BackgroundColorSpan
    + +BaseKeyListener
    + +Binder
    + +Bitmap
    + +BLUETOOTH_ON +
    + +BroadcastReceiver
    + +Browser
    + +Build
    + +BulletSpan
    + +BUTTON1 +
    + +BUTTON2 +
    + +BUTTON3 +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Camera
    + +Canvas
    + +capitalize +
    + +changeDebugPort +(int)
    + +Character.UnicodeBlock
    + +Chronometer
    + +Class
    + +ClickableSpan
    + +clone +()
    + +Configuration
    + +ConnectivityManager
    + +Contacts.Intents
    + +Contacts.Intents.Insert
    + +Contacts.PeopleColumns
    + +ContentProvider
    + +ContentResolver
    + +Context
    + +Cursor
    + +CursorAdapter
    + +CursorWrapper
    + + +dalvik.system
    + +DATA_ROAMING +
    + +DATA_X +
    + +DATA_Y +
    + +DATA_Z +
    + +DatabaseUtils
    + +Date
    +  java.util
    + +  Date +() constructor
    + +  Date +(int, int, int, int, int, int) constructor
    + +DateKeyListener
    + +DateTimeKeyListener
    + +Debug
    + +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + + in  +android.provider.MediaStore.Video +
    + +DEVICE_PROVISIONED +
    + +DexFile
    + +DialerKeyListener
    + +DialogInterface
    + +DialogPreference
    + +DigitsKeyListener
    + +drag +(ActivityInstrumentationTestCase, float, float, float, float, int)
    + +dragQuarterScreenDown +(ActivityInstrumentationTestCase)
    + +dragQuarterScreenUp +(ActivityInstrumentationTestCase)
    + +dragViewBy +(ActivityInstrumentationTestCase, View, int, int, int)
    + +dragViewTo +(ActivityInstrumentationTestCase, View, int, int, int)
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX +(ActivityInstrumentationTestCase, View, int, int)
    + +dragViewToY +(ActivityInstrumentationTestCase, View, int, int)
    + +Drawable
    + +DynamicDrawableSpan
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +editable +
    + +enabled +
    + +Environment
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +ForegroundColorSpan
    + +forkAndSpecialize +(int, int, int[], boolean, int[][])
    + +forkSystemServer +(int, int, int[], boolean, int[][])
    + +forName +(String)
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +GestureDetector
    +  android.view
    + +  GestureDetector +(OnGestureListener) constructor
    + +  GestureDetector +(OnGestureListener, Handler) constructor
    + +GestureDetector.SimpleOnGestureListener
    + +getClasses +()
    + +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    + +  type  +(String) in android.database.CursorWrapper +
    + +getConstructors +()
    + +getCount +()
    + +getDeclaredClasses +()
    + +getDeclaredConstructors +()
    + +getEdgeSlop +()
    + +getFadingEdgeLength +()
    + +getHandler +()
    + +getInterfaces +()
    + +getItem +(int)
    + +getItemClickListener +()
    + +getItemId +(int)
    + +getItemSelectedListener +()
    + +getMaximumDrawingCacheSize +()
    + +getMinimumFlingVelocity +()
    + +getProxyClass +(ClassLoader, Class<?>)
    + +getScrollBarSize +()
    + +getSensors +()
    + +getSurrogate +(String, Map<String, String>)
    + +getTargetIntent +()
    + +getTouchSlop +()
    + +getUserAgent +()
    + +getWindowTouchSlop +()
    + +getZoomControls +()
    + +Gravity
    + +GridView
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Handler
    + +HTTP_PROXY +
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +IBinder
    + +ImageSpan
    + +inputMethod +
    + +INSTALL_NON_MARKET_APPS +
    + +Instrumentation
    + +InstrumentationTestCase
    + +Intent
    + +isCookielessProxyUrl +(String)
    + + +java.lang
    + +java.lang.reflect
    + +java.net
    + +java.util
    + +java.util.jar
    + +java.util.logging
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +KeyCharacterMap
    + +KeyEvent
    + +KeyListener
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +LauncherActivity
    + +LeadingMarginSpan.Standard
    + +Level
    + +LIGHT_NO_MOON +
    + +ListView
    + +Location
    + +LOCATION_PROVIDERS_ALLOWED +
    + +LocationManager
    + +LOGGING_ID +
    + +LogManager
    + +longClickView +(ActivityInstrumentationTestCase, View)
    + +Looper
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Manifest.permission
    + +MaskFilterSpan
    + +MAX_KEYCODE +
    + +MediaPlayer
    + +MediaRecorder
    + +MediaRecorder.OutputFormat
    + +MediaStore
    + +MediaStore.Audio.AlbumColumns
    + +MediaStore.Audio.Media
    + +MediaStore.Images.Media
    + +MediaStore.Video
    + +MediaStore.Video.VideoColumns
    + +Menu
    + +MetaKeyKeyListener
    + +MockPackageManager
    + +MotionEvent
    + +MovementMethod
    + +MultiTapKeyListener
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +NETWORK_PREFERENCE +
    + +NetworkInfo
    + +NUM_STREAMS +
    + +numeric +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +onGlobalFocusChanged +(View, View)
    + +onRestoreInstanceState +(Parcelable)
    + +onSaveInstanceState +()
    + +OrientationListener
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Pack200.Packer
    + +Pack200.Unpacker
    + +PackageInfo
    + +PackageManager
    + +Parcel
    + +ParcelFileDescriptor
    + +PARENTAL_CONTROL_ENABLED +
    + +PARENTAL_CONTROL_LAST_UPDATE +
    + +PARENTAL_CONTROL_REDIRECT_URL +
    + +parse +(String)
    + +password +
    + +PendingIntent
    + +phoneNumber +
    + +PhoneNumberUtils
    + +playSoundEffect +(int)
    + +PopupWindow
    + +PopupWindow.OnDismissListener
    + +prepare +()
    + +ProgressBar
    + +ProviderTestCase
    + +Proxy
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y +Z + TOP +

    +QuoteSpan
    + +QwertyKeyListener
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y +Z + TOP +

    +R.attr
    + +R.drawable
    + +R.id
    + +R.string
    + +R.style
    + +RasterizerSpan
    + +RAW_DATA_INDEX +
    + +RAW_DATA_X +
    + +RAW_DATA_Y +
    + +RAW_DATA_Z +
    + +readHashMap +(ClassLoader)
    + +readMap +(Map, ClassLoader)
    + +Rect
    + +RectF
    + +registerListener
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +RelativeSizeSpan
    + +RemoteViews
    + +RemoteViews.ActionException
    + +ResourceCursorAdapter
    + +Resources
    + +RingtoneManager
    + +RotateDrawable
    + +ROUTE_BLUETOOTH +
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y +Z + TOP +

    +ScaleDrawable
    + +ScaleXSpan
    + +Scroller
    + +ScrollingMovementMethod
    + +scrollToBottom +(ActivityInstrumentationTestCase, ViewGroup)
    + +scrollToTop +(ActivityInstrumentationTestCase, ViewGroup)
    + +searchButtonText +
    + +SENSOR_ACCELEROMETER +
    + +SENSOR_ALL +
    + +SENSOR_LIGHT +
    + +SENSOR_MAGNETIC_FIELD +
    + +SENSOR_MAX +
    + +SENSOR_MIN +
    + +SENSOR_ORIENTATION +
    + +SENSOR_ORIENTATION_RAW +
    + +SENSOR_PROXIMITY +
    + +SENSOR_TEMPERATURE +
    + +SENSOR_TRICORDER +
    + +SensorListener
    + +SensorManager
    + +service +(String, Map<String, String>)
    + +setButton
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    + +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setPreviewDisplay +(SurfaceHolder)
    + +Settings
    + +Settings.System
    + +SETTINGS_CLASSNAME +
    + +setUserAgent +(int)
    + +Shape
    + +SimpleCursorAdapter
    + +singleLine +
    + +SmsMessage
    + +Socket
    +  java.net
    + +  Socket +() constructor
    + +  Socket +(String, int) constructor
    + +  Socket +(String, int, InetAddress, int) constructor
    + +  Socket +(Proxy) constructor
    + +  Socket +(SocketImpl) constructor
    + +SoundPool
    + +Spanned
    + +SpanWatcher
    + +SparseIntArray
    + +SQLiteDatabase
    + +StrikethroughSpan
    + +String
    +  java.lang
    + +  String +() constructor
    + +  String +(byte[]) constructor
    + +  String +(byte[], int) constructor
    + +  String +(byte[], int, int) constructor
    + +  String +(byte[], int, int, int) constructor
    + +StyleSpan
    + +SubscriptSpan
    + +SuperscriptSpan
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y +Z + TOP +

    +TelephonyManager
    + +TestMethod
    + +TestSuiteBuilder
    + +TextAppearanceSpan
    + +TextKeyListener
    + +TextUtils
    + +TextView
    + +TextWatcher
    + +TimeKeyListener
    + +TimeUtils
    + +Touch
    + +TouchUtils
    + +Transformation
    + +TransitionDrawable
    + +TypedArray
    + +TypefaceSpan
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y +Z + TOP +

    +UnderlineSpan
    + +unregisterListener
    +  type  +(SensorListener) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +UpdateLayout
    + +UrlInterceptHandler
    + +UrlInterceptRegistry
    + +URLSpan
    + +URLUtil
    + +USB_MASS_STORAGE_ENABLED +
    + +USE_GOOGLE_MAIL +
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y +Z + TOP +

    +View
    + +ViewConfiguration
    +  android.view
    + +  ViewConfiguration +() constructor
    + +ViewDebug
    + +ViewGroup
    + +ViewParent
    + +ViewTreeObserver
    + +VMDebug
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y +Z + TOP +

    +WebHistoryItem
    + +WebSettings
    + +WebView
    + +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    + +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    + +WIFI_NUM_OPEN_NETWORKS_KEPT +
    + +WIFI_ON +
    + +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    + +WIFI_WATCHDOG_AP_COUNT +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    + +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    + +WIFI_WATCHDOG_MAX_AP_CHECKS +
    + +WIFI_WATCHDOG_ON +
    + +WIFI_WATCHDOG_PING_COUNT +
    + +WIFI_WATCHDOG_PING_DELAY_MS +
    + +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + +WifiManager
    + +Window
    + +WindowManager.LayoutParams
    + +writeMap +(Map)
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +yieldIfContended +()
    + + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html new file mode 100644 index 000000000000..662b26690d2e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html @@ -0,0 +1,78 @@ + + + + + + + + + +All Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    C  +N + TOP +

    +CATEGORY_GADGET +
    + + +
    N  +C + TOP +

    +NetworkInfo +(int) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html new file mode 100644 index 000000000000..76591022179e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.Manifest.permission + + + + + + + + + + +
    +
    +
    +

    +Class android.Manifest.permission +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String BIND_APPWIDGET +  
    + + String BIND_INPUT_METHOD +  
    + + String MOUNT_FORMAT_FILESYSTEMS +  
    + + String UPDATE_DEVICE_STATS +  
    + + String WRITE_SECURE_SETTINGS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.attr.html b/docs/html/sdk/api_diff/3/changes/android.R.attr.html new file mode 100644 index 000000000000..7df16a121329 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.attr.html @@ -0,0 +1,739 @@ + + + + + + + + + +android.R.attr + + + + + + + + + + +
    +
    +
    +

    +Class android.R.attr +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int allowSingleTap +  
    + + int animateOnClick +  
    + + int backgroundDimEnabled +  
    + + int bottomOffset +  
    + + int candidatesTextStyleSpans +  
    + + int codes +  
    + + int configure +  
    + + int content +  
    + + int dropDownAnchor +  
    + + int dropDownWidth +  
    + + int editorExtras +  
    + + int fastScrollEnabled +  
    + + int fillEnabled +  
    + + int footerDividersEnabled +  
    + + int handle +  
    + + int hapticFeedbackEnabled +  
    + + int headerDividersEnabled +  
    + + int horizontalGap +  
    + + int iconPreview +  
    + + int imeActionId +  
    + + int imeActionLabel +  
    + + int imeExtractEnterAnimation +  
    + + int imeExtractExitAnimation +  
    + + int imeFullscreenBackground +  
    + + int imeOptions +  
    + + int initialLayout +  
    + + int innerRadius +  
    + + int inputType +  
    + + int isDefault +  
    + + int isModifier +  
    + + int isRepeatable +  
    + + int isScrollContainer +  
    + + int isSticky +  
    + + int keyBackground +  
    + + int keyEdgeFlags +  
    + + int keyHeight +  
    + + int keyIcon +  
    + + int keyLabel +  
    + + int keyOutputText +  
    + + int keyPreviewHeight +  
    + + int keyPreviewLayout +  
    + + int keyPreviewOffset +  
    + + int keyTextColor +  
    + + int keyTextSize +  
    + + int keyWidth +  
    + + int keyboardMode +  
    + + int labelTextSize +  
    + + int noHistory +  
    + + int popupCharacters +  
    + + int popupKeyboard +  
    + + int popupLayout +  
    + + int privateImeOptions +  
    + + int reqFiveWayNav +  
    + + int reqHardKeyboard +  
    + + int reqKeyboardType +  
    + + int reqNavigation +  
    + + int reqTouchScreen +  
    + + int rowEdgeFlags +  
    + + int settingsActivity +  
    + + int sharedUserLabel +  
    + + int smoothScrollbar +  
    + + int state_long_pressable +  
    + + int thickness +  
    + + int topOffset +  
    + + int updatePeriodMillis +  
    + + int verticalCorrection +  
    + + int verticalGap +  
    + + int voiceLanguage +  
    + + int voiceLanguageModel +  
    + + int voiceMaxResults +  
    + + int voicePromptText +  
    + + int voiceSearchMode +  
    + + int windowDisablePreview +  
    + + int windowNoDisplay +  
    + + int windowSoftInputMode +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int autoText +Now deprecated.
    +
     
    + + int capitalize +Now deprecated.
    +
     
    + + int editable +Now deprecated.
    +
     
    + + int enabled +Now deprecated.
    +
     
    + + int inputMethod +Now deprecated.
    +
     
    + + int numeric +Now deprecated.
    +
     
    + + int password +Now deprecated.
    +
     
    + + int phoneNumber +Now deprecated.
    +
     
    + + int searchButtonText +Now deprecated.
    +
     
    + + int singleLine +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.drawable.html b/docs/html/sdk/api_diff/3/changes/android.R.drawable.html new file mode 100644 index 000000000000..fe046dd7370f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.drawable.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.R.drawable + + + + + + + + + + +
    +
    +
    +

    +Class android.R.drawable +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int dark_header +  
    + + int ic_btn_speak_now +  
    + + int title_bar_tall +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.id.html b/docs/html/sdk/api_diff/3/changes/android.R.id.html new file mode 100644 index 000000000000..d30fc1da3b7f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.id.html @@ -0,0 +1,221 @@ + + + + + + + + + +android.R.id + + + + + + + + + + +
    +
    +
    +

    +Class android.R.id +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int addToDictionary +  
    + + int candidatesArea +  
    + + int closeButton +  
    + + int copy +  
    + + int copyUrl +  
    + + int cut +  
    + + int extractArea +  
    + + int inputArea +  
    + + int inputExtractEditText +  
    + + int keyboardView +  
    + + int paste +  
    + + int selectAll +  
    + + int startSelectingText +  
    + + int stopSelectingText +  
    + + int switchInputMethod +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.string.html b/docs/html/sdk/api_diff/3/changes/android.R.string.html new file mode 100644 index 000000000000..5d18ffa187c6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.string.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.R.string + + + + + + + + + + +
    +
    +
    +

    +Class android.R.string +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int VideoView_error_text_invalid_progressive_playback +  
    + + int dialog_alert_title +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.style.html b/docs/html/sdk/api_diff/3/changes/android.R.style.html new file mode 100644 index 000000000000..726bab9fb2b4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.style.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.R.style + + + + + + + + + + +
    +
    +
    +

    +Class android.R.style +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int Theme_InputMethod +  
    + + int Theme_Light_Panel +  
    + + int Theme_NoDisplay +  
    + + int Theme_Panel +  
    + + int Widget_KeyboardView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.Activity.html b/docs/html/sdk/api_diff/3/changes/android.app.Activity.html new file mode 100644 index 000000000000..7ff5871e76ce --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.Activity.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.app.Activity + + + + + + + + + + +
    +
    +
    +

    +Class android.app.Activity +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void closeContextMenu() +  
    + + boolean hasWindowFocus() +  
    + + void onUserInteraction() +  
    + + void onUserLeaveHint() +  
    + + void setVisible(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html b/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html new file mode 100644 index 000000000000..bd473fb8a393 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.app.ActivityManager + + + + + + + + + + +
    +
    +
    +

    +Class android.app.ActivityManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + ConfigurationInfo getDeviceConfigurationInfo() +  
    + + List<RunningAppProcessInfo> getRunningAppProcesses() +  
    + + void restartPackage(String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html b/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html new file mode 100644 index 000000000000..b8280f2fc9b6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.app.AlarmManager + + + + + + + + + + +
    +
    +
    +

    +Class android.app.AlarmManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setInexactRepeating(int, long, long, PendingIntent) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + long INTERVAL_DAY +  
    + + long INTERVAL_FIFTEEN_MINUTES +  
    + + long INTERVAL_HALF_DAY +  
    + + long INTERVAL_HALF_HOUR +  
    + + long INTERVAL_HOUR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html b/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html new file mode 100644 index 000000000000..bb8cdb1624fe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html @@ -0,0 +1,219 @@ + + + + + + + + + +android.app.AlertDialog + + + + + + + + + + +
    +
    +
    +

    +Class android.app.AlertDialog +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Button getButton(int) +  
    + + ListView getListView() +  
    + + void setButton(CharSequence, OnClickListener) +  
    + + void setButton(CharSequence, Message) +  
    + + void setView(View, int, int, int, int) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + void setButton(int, CharSequence, OnClickListener) + +Change in signature from (CharSequence, OnClickListener) to (int, CharSequence, OnClickListener).
    +
     
    + + void setButton(int, CharSequence, Message) + +Change in signature from (CharSequence, Message) to (int, CharSequence, Message).
    +
     
    + + void setButton2(CharSequence, OnClickListener) + +Now deprecated.
    +
     
    + + void setButton2(CharSequence, Message) + +Now deprecated.
    +
     
    + + void setButton3(CharSequence, OnClickListener) + +Now deprecated.
    +
     
    + + void setButton3(CharSequence, Message) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html b/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html new file mode 100644 index 000000000000..b6f26a6df962 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.app.Instrumentation + + + + + + + + + + +
    +
    +
    +

    +Class android.app.Instrumentation +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void callActivityOnUserLeaving(Activity) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html b/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html new file mode 100644 index 000000000000..60f7f29a6071 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html @@ -0,0 +1,148 @@ + + + + + + + + + +android.app.LauncherActivity + + + + + + + + + + +
    +
    +
    +

    +Class android.app.LauncherActivity +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + Intent intentForPosition(int) +  
    + + List<ListItem> makeListItems() +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + Intent getTargetIntent() + +Changed from abstract to non-abstract. +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html new file mode 100644 index 000000000000..6155508fcd81 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.app.PendingIntent + + + + + + + + + + +
    +
    +
    +

    +Class android.app.PendingIntent +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int FLAG_UPDATE_CURRENT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html b/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html new file mode 100644 index 000000000000..bd8cc8ccadb6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.BroadcastReceiver + + + + + + + + + + +
    +
    +
    +

    +Class android.content.BroadcastReceiver +

    + + +

    + + + + + + + + +
    Added Methods +
    + + IBinder peekService(Context, Intent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html new file mode 100644 index 000000000000..c6de32605166 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.ContentProvider + + + + + + + + + + +
    +
    +
    +

    +Class android.content.ContentProvider +

    + + +

    + + + + + + + + +
    Added Methods +
    + + AssetFileDescriptor openAssetFile(Uri, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html b/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html new file mode 100644 index 000000000000..2101198a7f04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.content.ContentResolver + + + + + + + + + + +
    +
    +
    +

    +Class android.content.ContentResolver +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + AssetFileDescriptor openAssetFileDescriptor(Uri, String) +  
    + + OutputStream openOutputStream(Uri, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.Context.html b/docs/html/sdk/api_diff/3/changes/android.content.Context.html new file mode 100644 index 000000000000..ac3d99da74f2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.Context.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.Context + + + + + + + + + + +
    +
    +
    +

    +Class android.content.Context +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String INPUT_METHOD_SERVICE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html b/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html new file mode 100644 index 000000000000..17dd651368bc --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html @@ -0,0 +1,172 @@ + + + + + + + + + +android.content.DialogInterface + + + + + + + + + + +
    +
    +
    +

    +Interface android.content.DialogInterface +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int BUTTON_NEGATIVE +  
    + + int BUTTON_NEUTRAL +  
    + + int BUTTON_POSITIVE +  
    +  +

    + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int BUTTON1 +Now deprecated.
    +
     
    + + int BUTTON2 +Now deprecated.
    +
     
    + + int BUTTON3 +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.Intent.html b/docs/html/sdk/api_diff/3/changes/android.content.Intent.html new file mode 100644 index 000000000000..edb02387b0aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.Intent.html @@ -0,0 +1,251 @@ + + + + + + + + + +android.content.Intent + + + + + + + + + + +
    +
    +
    +

    +Class android.content.Intent +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + Intent replaceExtras(Intent) +  
    + + Intent replaceExtras(Bundle) +  
    +  + +

    + + + + + + + + +
    Removed Fields +
    + + String CATEGORY_GADGET +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_INPUT_METHOD_CHANGED +  
    + + String ACTION_MEDIA_CHECKING +  
    + + String ACTION_MEDIA_NOFS +  
    + + String ACTION_PACKAGE_DATA_CLEARED +  
    + + String ACTION_PACKAGE_REPLACED +  
    + + String ACTION_SEARCH_LONG_PRESS +  
    + + String ACTION_SYSTEM_TUTORIAL +  
    + + String ACTION_USER_PRESENT +  
    + + String CATEGORY_INFO +  
    + + String EXTRA_DATA_REMOVED +  
    + + String EXTRA_REPLACING +  
    + + int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +  
    + + int FLAG_ACTIVITY_NO_USER_ACTION +  
    + + int FLAG_ACTIVITY_REORDER_TO_FRONT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html new file mode 100644 index 000000000000..5c62f6b769d0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.content.pm.ActivityInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.ActivityInfo +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_NO_HISTORY +  
    + + int softInputMode +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html new file mode 100644 index 000000000000..b360d7c2bba2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.content.pm.PackageInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.PackageInfo +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + ConfigurationInfo[] configPreferences +  
    + + String sharedUserId +  
    + + int sharedUserLabel +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html new file mode 100644 index 000000000000..efd37c54f3b1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.content.pm.PackageManager + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.PackageManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Intent getLaunchIntentForPackage(String) +  
    + + String[] getSystemSharedLibraryNames() +  
    + + boolean isSafeMode() +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int GET_CONFIGURATIONS +  
    + + int GET_UNINSTALLED_PACKAGES +  
    + + int INSTALL_FAILED_CONFLICTING_PROVIDER +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html b/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html new file mode 100644 index 000000000000..458a70a74ecf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html @@ -0,0 +1,174 @@ + + + + + + + + + +android.content.res.AssetFileDescriptor + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.AssetFileDescriptor +

    +

    Added interface android.os.Parcelable.
    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + FileInputStream createInputStream() +  
    + + FileOutputStream createOutputStream() +  
    + + int describeContents() +  
    + + long getDeclaredLength() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + + + + + + + + + + + + +
    Added Fields +
    + + Creator CREATOR +  
    + + long UNKNOWN_LENGTH +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html new file mode 100644 index 000000000000..3b8f943aceb7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html @@ -0,0 +1,144 @@ + + + + + + + + + +android.content.res.Configuration + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.Configuration +

    + + + +

    + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int HARDKEYBOARDHIDDEN_NO +  
    + + int HARDKEYBOARDHIDDEN_UNDEFINED +  
    + + int HARDKEYBOARDHIDDEN_YES +  
    + + int hardKeyboardHidden +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html b/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html new file mode 100644 index 000000000000..7fde1f983310 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.content.res.Resources + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.Resources +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean getBoolean(int) +  
    + + float getFraction(int, int, int) +  
    + + InputStream openRawResource(int, TypedValue) +  
    + + void parseBundleExtra(String, AttributeSet, Bundle) +  
    + + void parseBundleExtras(XmlResourceParser, Bundle) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html b/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html new file mode 100644 index 000000000000..f1336fc7d7ed --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.res.TypedArray + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.TypedArray +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getLayoutDimension(int, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html b/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html new file mode 100644 index 000000000000..020402a4c714 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.Cursor + + + + + + + + + + +
    +
    +
    +

    +Interface android.database.Cursor +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + int getColumnIndex(String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html b/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html new file mode 100644 index 000000000000..3a7675d57da6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.CursorWrapper + + + + + + + + + + +
    +
    +
    +

    +Class android.database.CursorWrapper +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + int getColumnIndex(String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html b/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html new file mode 100644 index 000000000000..114beaeeee62 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.DatabaseUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.database.DatabaseUtils +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + void appendEscapedSQLString(StringBuilder, String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html b/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html new file mode 100644 index 000000000000..cd59c1b85431 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.database.sqlite.SQLiteDatabase + + + + + + + + + + +
    +
    +
    +

    +Class android.database.sqlite.SQLiteDatabase +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean yieldIfContendedSafely() +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + boolean yieldIfContended() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html new file mode 100644 index 000000000000..f6ddc29c10bf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Bitmap + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Bitmap +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void copyPixelsFromBuffer(Buffer) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html new file mode 100644 index 000000000000..cf8ceef7ab5f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Canvas + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Canvas +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void drawBitmap(int[], int, int, float, float, int, int, boolean, Paint) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html new file mode 100644 index 000000000000..1c0b1f342d37 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Rect + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Rect +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String toShortString() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html b/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html new file mode 100644 index 000000000000..4e9b91b2a2ed --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.graphics.RectF + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.RectF +

    +

    Added interface android.os.Parcelable.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + void readFromParcel(Parcel) +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + Creator CREATOR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html new file mode 100644 index 000000000000..faa70b96da44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.Drawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.Drawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable mutate() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html new file mode 100644 index 000000000000..8cffe1e0bdb9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.RotateDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.RotateDrawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable getDrawable() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html new file mode 100644 index 000000000000..529f38026ebe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.ScaleDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.ScaleDrawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable getDrawable() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html new file mode 100644 index 000000000000..d7dc8eafcf3c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.TransitionDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.TransitionDrawable +

    + +

    + + + + + + + + +
    Added Constructors +
    + + TransitionDrawable(Drawable[]) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html new file mode 100644 index 000000000000..836aa9215913 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html @@ -0,0 +1,128 @@ + + + + + + + + + +android.graphics.drawable.shapes.Shape + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.shapes.Shape +

    +

    Added interface java.lang.Cloneable.
    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Shape clone() + +Change in return type from Object to Shape.
    + Method was inherited from java.lang.Object, but is now defined locally. Change of visibility from protected to public.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html new file mode 100644 index 000000000000..b7a0dd37a122 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.hardware.Camera + + + + + + + + + + +
    +
    +
    +

    +Class android.hardware.Camera +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setOneShotPreviewCallback(PreviewCallback) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void setPreviewDisplay(SurfaceHolder) + +Change in exceptions thrown from no exceptions to java.io.IOException.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html new file mode 100644 index 000000000000..9b63571fcf52 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.hardware.SensorListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.hardware.SensorListener +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html new file mode 100644 index 000000000000..e42eebaf21f9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html @@ -0,0 +1,473 @@ + + + + + + + + + +android.hardware.SensorManager + + + + + + + + + + +
    +
    +
    +

    +Class android.hardware.SensorManager +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Sensor getDefaultSensor(int) +  
    + + float getInclination(float[]) +  
    + + float[] getOrientation(float[], float[]) +  
    + + boolean getRotationMatrix(float[], float[], float[], float[]) +  
    + + List<Sensor> getSensorList(int) +  
    + + boolean registerListener(SensorEventListener, Sensor, int) +  
    + + boolean registerListener(SensorEventListener, Sensor, int, Handler) +  
    + + boolean remapCoordinateSystem(float[], int, int, float[]) +  
    + + void unregisterListener(SensorEventListener) +  
    + + void unregisterListener(SensorEventListener, Sensor) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getSensors() + +Now deprecated.
    +
     
    + + boolean registerListener(SensorListener, int) + +Now deprecated.
    +
     
    + + boolean registerListener(SensorListener, int, int) + +Now deprecated.
    +
     
    + + void unregisterListener(SensorListener) + +Now deprecated.
    +
     
    + + void unregisterListener(SensorListener, int) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int AXIS_MINUS_X +  
    + + int AXIS_MINUS_Y +  
    + + int AXIS_MINUS_Z +  
    + + int AXIS_X +  
    + + int AXIS_Y +  
    + + int AXIS_Z +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int DATA_X +Now deprecated.
    +
     
    + + int DATA_Y +Now deprecated.
    +
     
    + + int DATA_Z +Now deprecated.
    +
     
    + + float LIGHT_NO_MOON +Changed in value from 0.0010f to 0.001f. +  
    + + int RAW_DATA_INDEX +Now deprecated.
    +
     
    + + int RAW_DATA_X +Now deprecated.
    +
     
    + + int RAW_DATA_Y +Now deprecated.
    +
     
    + + int RAW_DATA_Z +Now deprecated.
    +
     
    + + int SENSOR_ACCELEROMETER +Now deprecated.
    +
     
    + + int SENSOR_ALL +Now deprecated.
    +
     
    + + int SENSOR_LIGHT +Now deprecated.
    +
     
    + + int SENSOR_MAGNETIC_FIELD +Now deprecated.
    +
     
    + + int SENSOR_MAX +Now deprecated.
    +
     
    + + int SENSOR_MIN +Now deprecated.
    +
     
    + + int SENSOR_ORIENTATION +Now deprecated.
    +
     
    + + int SENSOR_ORIENTATION_RAW +Now deprecated.
    +
     
    + + int SENSOR_PROXIMITY +Now deprecated.
    +
     
    + + int SENSOR_TEMPERATURE +Now deprecated.
    +
     
    + + int SENSOR_TRICORDER +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.location.Location.html b/docs/html/sdk/api_diff/3/changes/android.location.Location.html new file mode 100644 index 000000000000..03d3f894f33c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.location.Location.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.location.Location + + + + + + + + + + +
    +
    +
    +

    +Class android.location.Location +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(Printer, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html b/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html new file mode 100644 index 000000000000..4cd68386cbd4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html @@ -0,0 +1,243 @@ + + + + + + + + + +android.location.LocationManager + + + + + + + + + + +
    +
    +
    +

    +Class android.location.LocationManager +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean addGpsStatusListener(Listener) +  
    + + void addTestProvider(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int) +  
    + + void clearTestProviderEnabled(String) +  
    + + void clearTestProviderLocation(String) +  
    + + void clearTestProviderStatus(String) +  
    + + GpsStatus getGpsStatus(GpsStatus) +  
    + + void removeGpsStatusListener(Listener) +  
    + + void removeTestProvider(String) +  
    + + void removeUpdates(PendingIntent) +  
    + + void requestLocationUpdates(String, long, float, PendingIntent) +  
    + + boolean sendExtraCommand(String, String, Bundle) +  
    + + void setTestProviderEnabled(String, boolean) +  
    + + void setTestProviderLocation(String, Location) +  
    + + void setTestProviderStatus(String, int, Bundle, long) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String KEY_LOCATION_CHANGED +  
    + + String KEY_PROVIDER_ENABLED +  
    + + String KEY_STATUS_CHANGED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html new file mode 100644 index 000000000000..a98d840ffaf7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html @@ -0,0 +1,227 @@ + + + + + + + + + +android.media.AudioManager + + + + + + + + + + +
    +
    +
    +

    +Class android.media.AudioManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean isBluetoothA2dpOn() +  
    + + void playSoundEffect(int, float) +  
    + + void setBluetoothA2dpOn(boolean) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_AUDIO_BECOMING_NOISY +  
    + + int FX_KEYPRESS_DELETE +  
    + + int FX_KEYPRESS_RETURN +  
    + + int FX_KEYPRESS_SPACEBAR +  
    + + int FX_KEYPRESS_STANDARD +  
    + + int ROUTE_BLUETOOTH_A2DP +  
    + + int ROUTE_BLUETOOTH_SCO +  
    + + int STREAM_NOTIFICATION +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Fields +
    + + int NUM_STREAMS +Now deprecated.
    +
     
    + + int ROUTE_BLUETOOTH +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html new file mode 100644 index 000000000000..7704e1232ee8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html @@ -0,0 +1,180 @@ + + + + + + + + + +android.media.MediaPlayer + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaPlayer +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean isLooping() +  
    + + void setOnInfoListener(OnInfoListener) +  
    + + void setOnVideoSizeChangedListener(OnVideoSizeChangedListener) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +  
    + + int MEDIA_INFO_BAD_INTERLEAVING +  
    + + int MEDIA_INFO_NOT_SEEKABLE +  
    + + int MEDIA_INFO_UNKNOWN +  
    + + int MEDIA_INFO_VIDEO_TRACK_LAGGING +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html new file mode 100644 index 000000000000..0967c567c7f4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.media.MediaRecorder.OutputFormat + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaRecorder.OutputFormat +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int RAW_AMR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html new file mode 100644 index 000000000000..9daf4c350aaa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html @@ -0,0 +1,240 @@ + + + + + + + + + +android.media.MediaRecorder + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaRecorder +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void setCamera(Camera) +  
    + + void setMaxDuration(int) +  
    + + void setMaxFileSize(long) +  
    + + void setOnErrorListener(OnErrorListener) +  
    + + void setOnInfoListener(OnInfoListener) +  
    + + void setOutputFile(FileDescriptor) +  
    + + void setVideoEncoder(int) +  
    + + void setVideoFrameRate(int) +  
    + + void setVideoSize(int, int) +  
    + + void setVideoSource(int) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void prepare() + +Change in exceptions thrown from java.lang.IllegalStateException to (java.io.IOException, java.lang.IllegalStateException).
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int MEDIA_RECORDER_ERROR_UNKNOWN +  
    + + int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +  
    + + int MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +  
    + + int MEDIA_RECORDER_INFO_UNKNOWN +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html b/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html new file mode 100644 index 000000000000..e9fdbfc24b04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.media.RingtoneManager + + + + + + + + + + +
    +
    +
    +

    +Class android.media.RingtoneManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int inferStreamType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html b/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html new file mode 100644 index 000000000000..6e765d837f78 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.media.SoundPool + + + + + + + + + + +
    +
    +
    +

    +Class android.media.SoundPool +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int load(AssetFileDescriptor, int) +  
    + + int load(FileDescriptor, long, long, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html b/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html new file mode 100644 index 000000000000..7b0750e02f15 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.net.ConnectivityManager + + + + + + + + + + +
    +
    +
    +

    +Class android.net.ConnectivityManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean getBackgroundDataSetting() +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + String ACTION_BACKGROUND_DATA_SETTING_CHANGED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html b/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html new file mode 100644 index 000000000000..6c3c26d2c4c4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html @@ -0,0 +1,152 @@ + + + + + + + + + +android.net.NetworkInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.net.NetworkInfo +

    + +

    + + + + + + + + +
    Removed Constructors +
    + + NetworkInfo(int) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int getSubtype() +  
    + + String getSubtypeName() +  
    + + boolean isRoaming() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html b/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html new file mode 100644 index 000000000000..2e79642e7662 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html @@ -0,0 +1,145 @@ + + + + + + + + + +android.net.wifi.WifiManager + + + + + + + + + + +
    +
    +
    +

    +Class android.net.wifi.WifiManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + WifiLock createWifiLock(int, String) +  
    +  + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int WIFI_MODE_FULL +  
    + + int WIFI_MODE_SCAN_ONLY +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Binder.html b/docs/html/sdk/api_diff/3/changes/android.os.Binder.html new file mode 100644 index 000000000000..882803adaf42 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Binder.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Binder + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Binder +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(FileDescriptor, String[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Build.html b/docs/html/sdk/api_diff/3/changes/android.os.Build.html new file mode 100644 index 000000000000..2a69a8c7c204 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Build.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Build + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Build +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String DISPLAY +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Debug.html b/docs/html/sdk/api_diff/3/changes/android.os.Debug.html new file mode 100644 index 000000000000..8e7e2db3eef8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Debug.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.os.Debug + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Debug +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dumpHprofData(String) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void changeDebugPort(int) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Environment.html b/docs/html/sdk/api_diff/3/changes/android.os.Environment.html new file mode 100644 index 000000000000..4cc764375c64 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Environment.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.os.Environment + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Environment +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + String MEDIA_CHECKING +  
    + + String MEDIA_NOFS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Handler.html b/docs/html/sdk/api_diff/3/changes/android.os.Handler.html new file mode 100644 index 000000000000..fc10c9b29cd1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Handler.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.os.Handler + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Handler +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + Handler(Callback) +  
    + + Handler(Looper, Callback) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html b/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html new file mode 100644 index 000000000000..95745dc7d4a3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.IBinder + + + + + + + + + + +
    +
    +
    +

    +Interface android.os.IBinder +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(FileDescriptor, String[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Looper.html b/docs/html/sdk/api_diff/3/changes/android.os.Looper.html new file mode 100644 index 000000000000..d79ae756786f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Looper.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Looper + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Looper +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Thread getThread() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html b/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html new file mode 100644 index 000000000000..317b722d9f0f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html @@ -0,0 +1,146 @@ + + + + + + + + + +android.os.Parcel + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Parcel +

    + + +

    + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + HashMap readHashMap(ClassLoader) + +Change from deprecated to undeprecated.
    +
     
    + + void readMap(Map, ClassLoader) + +Change from deprecated to undeprecated.
    +
     
    + + void writeMap(Map) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html b/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html new file mode 100644 index 000000000000..77641d54c4dd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.os.ParcelFileDescriptor + + + + + + + + + + +
    +
    +
    +

    +Class android.os.ParcelFileDescriptor +

    + + +

    + + + + + + + + +
    Added Methods +
    + + long getStatSize() +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int MODE_APPEND +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html b/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html new file mode 100644 index 000000000000..93e05e7c6320 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.preference.DialogPreference + + + + + + + + + + +
    +
    +
    +

    +Class android.preference.DialogPreference +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Dialog getDialog() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html b/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html new file mode 100644 index 000000000000..9a9a4b80ef09 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.Browser + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Browser +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String EXTRA_APPLICATION_ID +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html new file mode 100644 index 000000000000..32541826a888 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html @@ -0,0 +1,179 @@ + + + + + + + + + +android.provider.Contacts.Intents.Insert + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Contacts.Intents.Insert +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String PHONETIC_NAME +  
    + + String SECONDARY_EMAIL +  
    + + String SECONDARY_EMAIL_TYPE +  
    + + String SECONDARY_PHONE +  
    + + String SECONDARY_PHONE_TYPE +  
    + + String TERTIARY_EMAIL +  
    + + String TERTIARY_EMAIL_TYPE +  
    + + String TERTIARY_PHONE +  
    + + String TERTIARY_PHONE_TYPE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html new file mode 100644 index 000000000000..1f758333c47e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.provider.Contacts.Intents + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Contacts.Intents +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String EXTRA_CREATE_DESCRIPTION +  
    + + String EXTRA_FORCE_CREATE +  
    + + String SHOW_OR_CREATE_CONTACT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html new file mode 100644 index 000000000000..e8c0f4d6d2c7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.Contacts.PeopleColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.Contacts.PeopleColumns +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String PHONETIC_NAME +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html new file mode 100644 index 000000000000..ade1498b3082 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.MediaStore.Audio.AlbumColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.MediaStore.Audio.AlbumColumns +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String NUMBER_OF_SONGS_FOR_ARTIST +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html new file mode 100644 index 000000000000..52bae9d6f275 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.MediaStore.Audio.Media + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Audio.Media +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String EXTRA_MAX_BYTES +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html new file mode 100644 index 000000000000..b375c3f9959f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html @@ -0,0 +1,125 @@ + + + + + + + + + +android.provider.MediaStore.Images.Media + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Images.Media +

    + + + +

    + + + + + + + + + +
    Changed Fields +
    + + String DEFAULT_SORT_ORDER +Changed in value from "name ASC" to "bucket_display_name". +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html new file mode 100644 index 000000000000..43494502563f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.provider.MediaStore.Video.VideoColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.MediaStore.Video.VideoColumns +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String BOOKMARK +  
    + + String BUCKET_DISPLAY_NAME +  
    + + String BUCKET_ID +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html new file mode 100644 index 000000000000..60437625988c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html @@ -0,0 +1,125 @@ + + + + + + + + + +android.provider.MediaStore.Video + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Video +

    + + + +

    + + + + + + + + + +
    Changed Fields +
    + + String DEFAULT_SORT_ORDER +Changed in value from "name ASC" to "_display_name". +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html new file mode 100644 index 000000000000..0d6a4cdce690 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html @@ -0,0 +1,207 @@ + + + + + + + + + +android.provider.MediaStore + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_IMAGE_CAPTURE +  
    + + String ACTION_VIDEO_CAPTURE +  
    + + String EXTRA_FINISH_ON_COMPLETION +  
    + + String EXTRA_MEDIA_ALBUM +  
    + + String EXTRA_MEDIA_ARTIST +  
    + + String EXTRA_MEDIA_FOCUS +  
    + + String EXTRA_MEDIA_TITLE +  
    + + String EXTRA_OUTPUT +  
    + + String EXTRA_SCREEN_ORIENTATION +  
    + + String EXTRA_VIDEO_QUALITY +  
    + + String INTENT_ACTION_MEDIA_SEARCH +  
    + + String INTENT_ACTION_STILL_IMAGE_CAMERA +  
    + + String INTENT_ACTION_VIDEO_CAMERA +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html new file mode 100644 index 000000000000..b7ef86c6695a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html @@ -0,0 +1,502 @@ + + + + + + + + + +android.provider.Settings.System + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Settings.System +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long getLong(ContentResolver, String) +  
    + + long getLong(ContentResolver, String, long) +  
    + + boolean putLong(ContentResolver, String, long) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACCELEROMETER_ROTATION +  
    + + String HAPTIC_FEEDBACK_ENABLED +  
    + + String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +  
    + + String VOLUME_NOTIFICATION +  
    + + String WIFI_MAX_DHCP_RETRY_COUNT +  
    + + String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +  
    + + String WIFI_SLEEP_POLICY +  
    + + int WIFI_SLEEP_POLICY_DEFAULT +  
    + + int WIFI_SLEEP_POLICY_NEVER +  
    + + int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + String ADB_ENABLED +Now deprecated.
    +
     
    + + String ANDROID_ID +Now deprecated.
    +
     
    + + String BLUETOOTH_ON +Now deprecated.
    +
     
    + + String DATA_ROAMING +Now deprecated.
    +
     
    + + String DEVICE_PROVISIONED +Now deprecated.
    +
     
    + + String HTTP_PROXY +Now deprecated.
    +
     
    + + String INSTALL_NON_MARKET_APPS +Now deprecated.
    +
     
    + + String LOCATION_PROVIDERS_ALLOWED +Now deprecated.
    +
     
    + + String LOGGING_ID +Now deprecated.
    +
     
    + + String NETWORK_PREFERENCE +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_ENABLED +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_LAST_UPDATE +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_REDIRECT_URL +Now deprecated.
    +
     
    + + String SETTINGS_CLASSNAME +Now deprecated.
    +
     
    + + String USB_MASS_STORAGE_ENABLED +Now deprecated.
    +
     
    + + String USE_GOOGLE_MAIL +Now deprecated.
    +
     
    + + String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +Now deprecated.
    +
     
    + + String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +Now deprecated.
    +
     
    + + String WIFI_NUM_OPEN_NETWORKS_KEPT +Now deprecated.
    +
     
    + + String WIFI_ON +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_AP_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_MAX_AP_CHECKS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_ON +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_DELAY_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_TIMEOUT_MS +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html new file mode 100644 index 000000000000..227b462ed957 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html @@ -0,0 +1,200 @@ + + + + + + + + + +android.provider.Settings + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Settings +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_AIRPLANE_MODE_SETTINGS +  
    + + String ACTION_APPLICATION_DEVELOPMENT_SETTINGS +  
    + + String ACTION_DATA_ROAMING_SETTINGS +  
    + + String ACTION_INPUT_METHOD_SETTINGS +  
    + + String ACTION_INTERNAL_STORAGE_SETTINGS +  
    + + String ACTION_MANAGE_APPLICATIONS_SETTINGS +  
    + + String ACTION_MEMORY_CARD_SETTINGS +  
    + + String ACTION_NETWORK_OPERATOR_SETTINGS +  
    + + String ACTION_QUICK_LAUNCH_SETTINGS +  
    + + String ACTION_SYNC_SETTINGS +  
    + + String ACTION_USER_DICTIONARY_SETTINGS +  
    + + String ACTION_WIFI_IP_SETTINGS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html b/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html new file mode 100644 index 000000000000..6e0b240ca75b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.telephony.PhoneNumberUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.PhoneNumberUtils +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void formatJapaneseNumber(Editable) +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int FORMAT_JAPAN +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html new file mode 100644 index 000000000000..aa02f5c1f3a8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html @@ -0,0 +1,173 @@ + + + + + + + + + +android.telephony.TelephonyManager + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.TelephonyManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + List<NeighboringCellInfo> getNeighboringCellInfo() +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_PHONE_STATE_CHANGED +  
    + + String EXTRA_INCOMING_NUMBER +  
    + + String EXTRA_STATE +  
    + + String EXTRA_STATE_IDLE +  
    + + String EXTRA_STATE_OFFHOOK +  
    + + String EXTRA_STATE_RINGING +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html b/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html new file mode 100644 index 000000000000..c6069043fe40 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.telephony.gsm.SmsMessage + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.gsm.SmsMessage +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int[] calculateLength(CharSequence, boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html new file mode 100644 index 000000000000..c3360776828e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.test.ActivityInstrumentationTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.ActivityInstrumentationTestCase +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html new file mode 100644 index 000000000000..1fb403aaabe5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.test.InstrumentationTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.InstrumentationTestCase +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + T launchActivityWithIntent(String, Class<T>, Intent) +  
    + + void runTestOnUiThread(Runnable) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html new file mode 100644 index 000000000000..ffbee6091afe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.test.ProviderTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.ProviderTestCase +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html b/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html new file mode 100644 index 000000000000..75f9e5e03e2a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html @@ -0,0 +1,362 @@ + + + + + + + + + +android.test.TouchUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.test.TouchUtils +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void drag(InstrumentationTestCase, float, float, float, float, int) +  
    + + void dragQuarterScreenDown(InstrumentationTestCase, Activity) +  
    + + void dragQuarterScreenUp(InstrumentationTestCase, Activity) +  
    + + int dragViewBy(InstrumentationTestCase, View, int, int, int) +  
    + + int dragViewTo(InstrumentationTestCase, View, int, int, int) +  
    + + void dragViewToBottom(ActivityInstrumentationTestCase, View, int) +  
    + + void dragViewToBottom(InstrumentationTestCase, Activity, View, int) +  
    + + void dragViewToTop(InstrumentationTestCase, View) +  
    + + void dragViewToTop(InstrumentationTestCase, View, int) +  
    + + int dragViewToX(InstrumentationTestCase, View, int, int) +  
    + + int dragViewToY(InstrumentationTestCase, View, int, int) +  
    + + void longClickView(InstrumentationTestCase, View) +  
    + + void scrollToBottom(InstrumentationTestCase, Activity, ViewGroup) +  
    + + void scrollToTop(InstrumentationTestCase, Activity, ViewGroup) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + void drag(ActivityInstrumentationTestCase, float, float, float, float, int) + +Now deprecated.
    +
     
    + + void dragQuarterScreenDown(ActivityInstrumentationTestCase) + +Now deprecated.
    +
     
    + + void dragQuarterScreenUp(ActivityInstrumentationTestCase) + +Now deprecated.
    +
     
    + + int dragViewBy(ActivityInstrumentationTestCase, View, int, int, int) + +Now deprecated.
    +
     
    + + int dragViewTo(ActivityInstrumentationTestCase, View, int, int, int) + +Now deprecated.
    +
     
    + + void dragViewToBottom(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void dragViewToBottom(InstrumentationTestCase, Activity, View) + +Change in signature from (ActivityInstrumentationTestCase, View, int) to (InstrumentationTestCase, Activity, View).
    +
     
    + + void dragViewToTop(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void dragViewToTop(ActivityInstrumentationTestCase, View, int) + +Now deprecated.
    +
     
    + + int dragViewToX(ActivityInstrumentationTestCase, View, int, int) + +Now deprecated.
    +
     
    + + int dragViewToY(ActivityInstrumentationTestCase, View, int, int) + +Now deprecated.
    +
     
    + + void longClickView(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void scrollToBottom(ActivityInstrumentationTestCase, ViewGroup) + +Now deprecated.
    +
     
    + + void scrollToTop(ActivityInstrumentationTestCase, ViewGroup) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html new file mode 100644 index 000000000000..8e727f35f6b8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.test.mock.MockPackageManager + + + + + + + + + + +
    +
    +
    +

    +Class android.test.mock.MockPackageManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Intent getLaunchIntentForPackage(String) +  
    + + String[] getSystemSharedLibraryNames() +  
    + + boolean isSafeMode() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html new file mode 100644 index 000000000000..52467f3fbb2f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.test.suitebuilder.TestMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.test.suitebuilder.TestMethod +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + TestMethod(String, Class<TestCase>) +  
    + + TestMethod(TestCase) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html new file mode 100644 index 000000000000..548f473b72f5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.test.suitebuilder.TestSuiteBuilder + + + + + + + + + + +
    +
    +
    +

    +Class android.test.suitebuilder.TestSuiteBuilder +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + TestSuiteBuilder addRequirements(Predicate<TestMethod>) + +Change in signature from void to Predicate<TestMethod>.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html b/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html new file mode 100644 index 000000000000..863f172ffa65 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.Annotation + + + + + + + + + + +
    +
    +
    +

    +Class android.text.Annotation +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + Annotation(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html b/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html new file mode 100644 index 000000000000..04ef46d33271 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.AutoText + + + + + + + + + + +
    +
    +
    +

    +Class android.text.AutoText +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getSize(View) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html b/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html new file mode 100644 index 000000000000..fd9943a56ff2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.SpanWatcher + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.SpanWatcher +

    +

    Added interface android.text.NoCopySpan.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html b/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html new file mode 100644 index 000000000000..1c861979d671 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.text.Spanned + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.Spanned +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int SPAN_COMPOSING +  
    + + int SPAN_INTERMEDIATE +  
    + + int SPAN_POINT_MARK_MASK +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html b/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html new file mode 100644 index 000000000000..9fc8dae935ee --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html @@ -0,0 +1,159 @@ + + + + + + + + + +android.text.TextUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.text.TextUtils +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void dumpSpans(CharSequence, Printer, String) +  
    + + int getCapsMode(CharSequence, int, int) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int CAP_MODE_CHARACTERS +  
    + + int CAP_MODE_SENTENCES +  
    + + int CAP_MODE_WORDS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html b/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html new file mode 100644 index 000000000000..a3856f851c10 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.TextWatcher + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.TextWatcher +

    +

    Added interface android.text.NoCopySpan.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html new file mode 100644 index 000000000000..6a1ce5eda080 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.ArrowKeyMovementMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.ArrowKeyMovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html new file mode 100644 index 000000000000..b8dddc31cea3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.BaseKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.BaseKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(View, Editable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html new file mode 100644 index 000000000000..d49752c259cf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DateKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DateKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html new file mode 100644 index 000000000000..82734d3833ef --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DateTimeKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DateTimeKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html new file mode 100644 index 000000000000..435e701ed689 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DialerKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DialerKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html new file mode 100644 index 000000000000..f33d5fe695bd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DigitsKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DigitsKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html new file mode 100644 index 000000000000..2b24f03c022d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.text.method.KeyListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.method.KeyListener +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearMetaKeyState(View, Editable, int) +  
    + + int getInputType() +  
    + + boolean onKeyOther(View, Editable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html new file mode 100644 index 000000000000..ecdedc1edb85 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html @@ -0,0 +1,186 @@ + + + + + + + + + +android.text.method.MetaKeyKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.MetaKeyKeyListener +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long adjustMetaAfterKeypress(long) +  
    + + long clearMetaKeyState(long, int) +  
    + + void clearMetaKeyState(View, Editable, int) +  
    + + void clearMetaKeyState(Editable, int) +  
    + + int getMetaState(long) +  
    + + int getMetaState(long, int) +  
    + + long handleKeyDown(long, int, KeyEvent) +  
    + + long handleKeyUp(long, int, KeyEvent) +  
    + + boolean isSelectingMetaTracker(CharSequence, Object) +  
    + + long resetLockedMeta(long) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html new file mode 100644 index 000000000000..a86dff5fea56 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.MovementMethod + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.method.MovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html new file mode 100644 index 000000000000..b7c2f52694ec --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.MultiTapKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.MultiTapKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html new file mode 100644 index 000000000000..fff86c659b13 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.QwertyKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.QwertyKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html new file mode 100644 index 000000000000..acf5dcd844aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.ScrollingMovementMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.ScrollingMovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html new file mode 100644 index 000000000000..f905b3fe75f3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.TextKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.TextKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html new file mode 100644 index 000000000000..0545b2fb4266 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.TimeKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.TimeKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html b/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html new file mode 100644 index 000000000000..fd0f64a6a3c8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.text.method.Touch + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.Touch +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getInitialScrollX(TextView, Spannable) +  
    + + int getInitialScrollY(TextView, Spannable) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html new file mode 100644 index 000000000000..32b1098ef891 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.AbsoluteSizeSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.AbsoluteSizeSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + AbsoluteSizeSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html b/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html new file mode 100644 index 000000000000..86b03d47bbfb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.AlignmentSpan.Standard + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.AlignmentSpan.Standard +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + AlignmentSpan.Standard(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html new file mode 100644 index 000000000000..b7705aaee5f1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.BackgroundColorSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.BackgroundColorSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + BackgroundColorSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html new file mode 100644 index 000000000000..10f6d2aa0445 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.BulletSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.BulletSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + BulletSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html new file mode 100644 index 000000000000..0d7fecb93a4d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.ClickableSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ClickableSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html new file mode 100644 index 000000000000..2bc83fa5da73 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html @@ -0,0 +1,167 @@ + + + + + + + + + +android.text.style.DynamicDrawableSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.DynamicDrawableSpan +

    + +

    + + + + + + + + +
    Added Constructors +
    + + DynamicDrawableSpan(int) +  
    +  + +

    + + + + + + + + +
    Added Methods +
    + + int getVerticalAlignment() +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int ALIGN_BASELINE +  
    + + int ALIGN_BOTTOM +  
    + + int mVerticalAlignment +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html new file mode 100644 index 000000000000..fa483c002d9f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.ForegroundColorSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ForegroundColorSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + ForegroundColorSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html new file mode 100644 index 000000000000..459e2b7e510c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.text.style.ImageSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ImageSpan +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Constructors +
    + + ImageSpan(Context, Uri, int) +  
    + + ImageSpan(Context, int, int) +  
    + + ImageSpan(Bitmap, int) +  
    + + ImageSpan(Drawable, int) +  
    + + ImageSpan(Drawable, String, int) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html b/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html new file mode 100644 index 000000000000..922bcbc607bc --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.LeadingMarginSpan.Standard + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.LeadingMarginSpan.Standard +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + LeadingMarginSpan.Standard(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html new file mode 100644 index 000000000000..fbd8db93560c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.MaskFilterSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.MaskFilterSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html new file mode 100644 index 000000000000..334c2233552a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.QuoteSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.QuoteSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + QuoteSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html new file mode 100644 index 000000000000..62fb6479f8f7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.RasterizerSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.RasterizerSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html new file mode 100644 index 000000000000..17d97fba524b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.RelativeSizeSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.RelativeSizeSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + RelativeSizeSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html new file mode 100644 index 000000000000..ee289f518ff2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.ScaleXSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ScaleXSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + ScaleXSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html new file mode 100644 index 000000000000..f045b964395f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.StrikethroughSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.StrikethroughSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + StrikethroughSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html new file mode 100644 index 000000000000..fcc16080d017 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.StyleSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.StyleSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + StyleSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html new file mode 100644 index 000000000000..ec3d56242b15 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.SubscriptSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.SubscriptSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + SubscriptSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html new file mode 100644 index 000000000000..853be697af24 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.SuperscriptSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.SuperscriptSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + SuperscriptSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html new file mode 100644 index 000000000000..719e68f0ce14 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.TextAppearanceSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.TextAppearanceSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + TextAppearanceSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html new file mode 100644 index 000000000000..01b74e73408e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.TypefaceSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.TypefaceSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + TypefaceSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html new file mode 100644 index 000000000000..2a659a4e35c0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.URLSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.URLSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + URLSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html new file mode 100644 index 000000000000..6c596a03da91 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.UnderlineSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.UnderlineSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + UnderlineSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html b/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html new file mode 100644 index 000000000000..4cca7b433476 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.UpdateLayout + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.style.UpdateLayout +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html b/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html new file mode 100644 index 000000000000..5657765133fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.util.SparseIntArray + + + + + + + + + + +
    +
    +
    +

    +Class android.util.SparseIntArray +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void removeAt(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html b/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html new file mode 100644 index 000000000000..3317fae27bb3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.util.TimeUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.util.TimeUtils +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String getTimeZoneDatabaseVersion() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html new file mode 100644 index 000000000000..0e00c6047a5e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.view.GestureDetector.SimpleOnGestureListener + + + + + + + + + + +
    +
    +
    +

    +Class android.view.GestureDetector.SimpleOnGestureListener +

    +

    Added interface android.view.GestureDetector.OnDoubleTapListener.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean onDoubleTap(MotionEvent) +  
    + + boolean onDoubleTapEvent(MotionEvent) +  
    + + boolean onSingleTapConfirmed(MotionEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html new file mode 100644 index 000000000000..dec5a4d9da9a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html @@ -0,0 +1,173 @@ + + + + + + + + + +android.view.GestureDetector + + + + + + + + + + +
    +
    +
    +

    +Class android.view.GestureDetector +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + GestureDetector(Context, OnGestureListener) +  
    + + GestureDetector(Context, OnGestureListener, Handler) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Constructors +
    + + GestureDetector(OnGestureListener) + +Now deprecated.
    +
     
    + + GestureDetector(OnGestureListener, Handler) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + +
    Added Methods +
    + + void setOnDoubleTapListener(OnDoubleTapListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html b/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html new file mode 100644 index 000000000000..1aa10d3682fb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.view.Gravity + + + + + + + + + + +
    +
    +
    +

    +Class android.view.Gravity +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void applyDisplay(int, Rect, Rect) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int AXIS_CLIP +  
    + + int CLIP_HORIZONTAL +  
    + + int CLIP_VERTICAL +  
    + + int DISPLAY_CLIP_HORIZONTAL +  
    + + int DISPLAY_CLIP_VERTICAL +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html b/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html new file mode 100644 index 000000000000..7a409cbe1308 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.KeyCharacterMap + + + + + + + + + + +
    +
    +
    +

    +Class android.view.KeyCharacterMap +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + boolean deviceHasKey(int) +  
    + + boolean[] deviceHasKeys(int[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html new file mode 100644 index 000000000000..bf3ec6b22e01 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html @@ -0,0 +1,275 @@ + + + + + + + + + +android.view.KeyEvent + + + + + + + + + + +
    +
    +
    +

    +Class android.view.KeyEvent +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + KeyEvent(KeyEvent) +  
    + + KeyEvent(long, String, int, int) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + KeyEvent changeAction(KeyEvent, int) +  
    + + KeyEvent changeFlags(KeyEvent, int) +  
    + + KeyEvent changeTimeRepeat(KeyEvent, long, int) +  
    + + String getCharacters() +  
    + + int getMaxKeyCode() +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_EDITOR_ACTION +  
    + + int FLAG_FROM_SYSTEM +  
    + + int FLAG_KEEP_TOUCH_MODE +  
    + + int FLAG_SOFT_KEYBOARD +  
    + + int KEYCODE_MEDIA_FAST_FORWARD +  
    + + int KEYCODE_MEDIA_NEXT +  
    + + int KEYCODE_MEDIA_PLAY_PAUSE +  
    + + int KEYCODE_MEDIA_PREVIOUS +  
    + + int KEYCODE_MEDIA_REWIND +  
    + + int KEYCODE_MEDIA_STOP +  
    + + int KEYCODE_MUTE +  
    +  +

    + + + + + + + + + +
    Changed Fields +
    + + int MAX_KEYCODE +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Menu.html b/docs/html/sdk/api_diff/3/changes/android.view.Menu.html new file mode 100644 index 000000000000..09b910a42688 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Menu.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.Menu + + + + + + + + + + +
    +
    +
    +

    +Interface android.view.Menu +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void close() +  
    + + MenuItem getItem(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html new file mode 100644 index 000000000000..5291df778213 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.MotionEvent + + + + + + + + + + +
    +
    +
    +

    +Class android.view.MotionEvent +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int ACTION_OUTSIDE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html b/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html new file mode 100644 index 000000000000..ac58489da46a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html @@ -0,0 +1,124 @@ + + + + + + + + + +android.view.OrientationListener + + + + + + + + + + +
    +
    +
    +

    +Class android.view.OrientationListener +

    +

    Now deprecated.
    + +

    + + + + + + + + +
    Added Constructors +
    + + OrientationListener(Context, int) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.View.html b/docs/html/sdk/api_diff/3/changes/android.view.View.html new file mode 100644 index 000000000000..ccd58a9d2c8a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.View.html @@ -0,0 +1,257 @@ + + + + + + + + + +android.view.View + + + + + + + + + + +
    +
    +
    +

    +Class android.view.View +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean checkInputConnectionProxy(View) +  
    + + boolean dispatchKeyEventPreIme(KeyEvent) +  
    + + void getWindowVisibleDisplayFrame(Rect) +  
    + + boolean isHapticFeedbackEnabled() +  
    + + boolean isInEditMode() +  
    + + boolean onCheckIsTextEditor() +  
    + + InputConnection onCreateInputConnection(EditorInfo) +  
    + + void onFinishTemporaryDetach() +  
    + + boolean onKeyPreIme(int, KeyEvent) +  
    + + void onStartTemporaryDetach() +  
    + + boolean performHapticFeedback(int) +  
    + + boolean performHapticFeedback(int, int) +  
    + + void setHapticFeedbackEnabled(boolean) +  
    + + void setScrollContainer(boolean) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + Handler getHandler() + +Change of visibility from protected to public.
    +
     
    + + void playSoundEffect(int) + +Change of visibility from protected to public.
    +
     
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int HAPTIC_FEEDBACK_ENABLED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html new file mode 100644 index 000000000000..0bf487c289d7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html @@ -0,0 +1,282 @@ + + + + + + + + + +android.view.ViewConfiguration + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewConfiguration +

    + +

    + + + + + + + + + +
    Changed Constructors +
    + + ViewConfiguration() + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + ViewConfiguration get(Context) +  
    + + int getDoubleTapTimeout() +  
    + + int getScaledDoubleTapSlop() +  
    + + int getScaledEdgeSlop() +  
    + + int getScaledFadingEdgeLength() +  
    + + int getScaledMaximumDrawingCacheSize() +  
    + + int getScaledMinimumFlingVelocity() +  
    + + int getScaledScrollBarSize() +  
    + + int getScaledTouchSlop() +  
    + + int getScaledWindowTouchSlop() +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getEdgeSlop() + +Now deprecated.
    +
     
    + + int getFadingEdgeLength() + +Now deprecated.
    +
     
    + + int getMaximumDrawingCacheSize() + +Now deprecated.
    +
     
    + + int getMinimumFlingVelocity() + +Now deprecated.
    +
     
    + + int getScrollBarSize() + +Now deprecated.
    +
     
    + + int getTouchSlop() + +Now deprecated.
    +
     
    + + int getWindowTouchSlop() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html new file mode 100644 index 000000000000..17c0c8a34ebe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewDebug + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewDebug +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dumpCapturedView(String, Object) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html new file mode 100644 index 000000000000..589f266ff2cf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewGroup + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewGroup +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setStaticTransformationsEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html new file mode 100644 index 000000000000..536e7e95c4fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewParent + + + + + + + + + + +
    +
    +
    +

    +Interface android.view.ViewParent +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean requestChildRectangleOnScreen(View, Rect, boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html new file mode 100644 index 000000000000..41753a737d44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.ViewTreeObserver + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewTreeObserver +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addOnScrollChangedListener(OnScrollChangedListener) +  
    + + void removeOnScrollChangedListener(OnScrollChangedListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Window.html b/docs/html/sdk/api_diff/3/changes/android.view.Window.html new file mode 100644 index 000000000000..d84eb2b11810 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Window.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.view.Window + + + + + + + + + + +
    +
    +
    +

    +Class android.view.Window +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean hasSoftInputMode() +  
    + + void setSoftInputMode(int) +  
    + + void setWindowAnimations(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html new file mode 100644 index 000000000000..7304b0ea7876 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html @@ -0,0 +1,292 @@ + + + + + + + + + +android.view.WindowManager.LayoutParams + + + + + + + + + + +
    +
    +
    +

    +Class android.view.WindowManager.LayoutParams +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean mayUseInputMethod(int) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_ALT_FOCUSABLE_IM +  
    + + int FLAG_WATCH_OUTSIDE_TOUCH +  
    + + int SCREEN_BRIGHTNESS_CHANGED +  
    + + int SCREEN_ORIENTATION_CHANGED +  
    + + int SOFT_INPUT_ADJUST_PAN +  
    + + int SOFT_INPUT_ADJUST_RESIZE +  
    + + int SOFT_INPUT_ADJUST_UNSPECIFIED +  
    + + int SOFT_INPUT_IS_FORWARD_NAVIGATION +  
    + + int SOFT_INPUT_MASK_ADJUST +  
    + + int SOFT_INPUT_MASK_STATE +  
    + + int SOFT_INPUT_MODE_CHANGED +  
    + + int SOFT_INPUT_STATE_ALWAYS_HIDDEN +  
    + + int SOFT_INPUT_STATE_ALWAYS_VISIBLE +  
    + + int SOFT_INPUT_STATE_HIDDEN +  
    + + int SOFT_INPUT_STATE_UNCHANGED +  
    + + int SOFT_INPUT_STATE_UNSPECIFIED +  
    + + int SOFT_INPUT_STATE_VISIBLE +  
    + + int TYPE_APPLICATION_ATTACHED_DIALOG +  
    + + int TYPE_INPUT_METHOD +  
    + + int TYPE_INPUT_METHOD_DIALOG +  
    + + float screenBrightness +  
    + + int screenOrientation +  
    + + int softInputMode +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html b/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html new file mode 100644 index 000000000000..9cdf434cb74e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.view.animation.Animation + + + + + + + + + + +
    +
    +
    +

    +Class android.view.animation.Animation +

    +

    Added interface java.lang.Cloneable.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long computeDurationHint() +  
    + + boolean isFillEnabled() +  
    + + void setFillEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html b/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html new file mode 100644 index 000000000000..8c5cbf55cf32 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.animation.Transformation + + + + + + + + + + +
    +
    +
    +

    +Class android.view.animation.Transformation +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String toShortString() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html b/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html new file mode 100644 index 000000000000..cff874168f2d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.webkit.URLUtil + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.URLUtil +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + boolean isCookielessProxyUrl(String) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html new file mode 100644 index 000000000000..8664bc6e18f7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.webkit.UrlInterceptHandler + + + + + + + + + + +
    +
    +
    +

    +Interface android.webkit.UrlInterceptHandler +

    + + +

    + + + + + + + + +
    Added Methods +
    + + PluginData getPluginData(String, Map<String, String>) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + CacheResult service(String, Map<String, String>) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html new file mode 100644 index 000000000000..09d11496ddf4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.webkit.UrlInterceptRegistry + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.UrlInterceptRegistry +

    + + +

    + + + + + + + + +
    Added Methods +
    + + PluginData getPluginData(String, Map<String, String>) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + CacheResult getSurrogate(String, Map<String, String>) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html new file mode 100644 index 000000000000..10140196bb07 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.webkit.WebHistoryItem + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebHistoryItem +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String getOriginalUrl() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html new file mode 100644 index 000000000000..eb421cf63ad7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html @@ -0,0 +1,186 @@ + + + + + + + + + +android.webkit.WebSettings + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebSettings +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean getAllowFileAccess() +  
    + + boolean getBuiltInZoomControls() +  
    + + String getUserAgentString() +  
    + + void setAllowFileAccess(boolean) +  
    + + void setBuiltInZoomControls(boolean) +  
    + + void setUserAgentString(String) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getUserAgent() + +Now deprecated.
    +
     
    + + void setUserAgent(int) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html new file mode 100644 index 000000000000..cd721c8fdfff --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html @@ -0,0 +1,193 @@ + + + + + + + + + +android.webkit.WebView + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearMatches() +  
    + + int findAll(String) +  
    + + void findNext(boolean) +  
    + + String getOriginalUrl() +  
    + + boolean restorePicture(Bundle, File) +  
    + + boolean savePicture(Bundle, File) +  
    + + void setNetworkAvailable(boolean) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + View getZoomControls() + +Now deprecated.
    +
     
    + + void onGlobalFocusChanged(View, View) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html new file mode 100644 index 000000000000..6d1ed3535a44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.widget.AbsListView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsListView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + CharSequence getTextFilter() +  
    + + boolean isFastScrollEnabled() +  
    + + boolean isSmoothScrollbarEnabled() +  
    + + void setFastScrollEnabled(boolean) +  
    + + void setSmoothScrollbarEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html new file mode 100644 index 000000000000..128b31f182e9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.AbsSeekBar + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsSeekBar +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getKeyProgressIncrement() +  
    + + void setKeyProgressIncrement(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html new file mode 100644 index 000000000000..77025f08c08e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.widget.AbsoluteLayout + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsoluteLayout +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html new file mode 100644 index 000000000000..0beed263f3fb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.ArrayAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ArrayAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void sort(Comparator<? super T>) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html b/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html new file mode 100644 index 000000000000..a6e89e41b564 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html @@ -0,0 +1,214 @@ + + + + + + + + + +android.widget.AutoCompleteTextView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AutoCompleteTextView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearListSelection() +  
    + + int getDropDownAnchor() +  
    + + int getDropDownWidth() +  
    + + int getListSelection() +  
    + + OnItemClickListener getOnItemClickListener() +  
    + + OnItemSelectedListener getOnItemSelectedListener() +  
    + + boolean isPerformingCompletion() +  
    + + void setDropDownAnchor(int) +  
    + + void setDropDownWidth(int) +  
    + + void setListSelection(int) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + OnItemClickListener getItemClickListener() + +Now deprecated.
    +
     
    + + OnItemSelectedListener getItemSelectedListener() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html b/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html new file mode 100644 index 000000000000..2a82a201933a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.Chronometer + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.Chronometer +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + OnChronometerTickListener getOnChronometerTickListener() +  
    + + void setOnChronometerTickListener(OnChronometerTickListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html new file mode 100644 index 000000000000..0a890300efd1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html @@ -0,0 +1,161 @@ + + + + + + + + + +android.widget.CursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.CursorAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void onContentChanged() +  
    +  +

    + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getCount() + +Change from final to non-final.
    +
     
    + + Object getItem(int) + +Change from final to non-final.
    +
     
    + + long getItemId(int) + +Change from final to non-final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html b/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html new file mode 100644 index 000000000000..86e019ba9ce0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.GridView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.GridView +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int STRETCH_SPACING_UNIFORM +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html b/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html new file mode 100644 index 000000000000..ecaf3096e598 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.ListView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ListView +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void setFooterDividersEnabled(boolean) +  
    + + void setHeaderDividersEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html new file mode 100644 index 000000000000..2e08886708b9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.widget.PopupWindow.OnDismissListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.widget.PopupWindow.OnDismissListener +

    +

    Change of visibility from to public.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html new file mode 100644 index 000000000000..b3a33037a77e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html @@ -0,0 +1,243 @@ + + + + + + + + + +android.widget.PopupWindow + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.PopupWindow +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int getInputMethodMode() +  
    + + int getMaxAvailableHeight(View, int) +  
    + + boolean isAboveAnchor() +  
    + + boolean isClippingEnabled() +  
    + + boolean isOutsideTouchable() +  
    + + boolean isTouchable() +  
    + + void setClippingEnabled(boolean) +  
    + + void setInputMethodMode(int) +  
    + + void setOutsideTouchable(boolean) +  
    + + void setTouchInterceptor(OnTouchListener) +  
    + + void setTouchable(boolean) +  
    + + void setWindowLayoutMode(int, int) +  
    + + void update() +  
    + + void update(int, int, int, int, boolean) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int INPUT_METHOD_FROM_FOCUSABLE +  
    + + int INPUT_METHOD_NEEDED +  
    + + int INPUT_METHOD_NOT_NEEDED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html b/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html new file mode 100644 index 000000000000..eea94f2b5e04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html @@ -0,0 +1,136 @@ + + + + + + + + + +android.widget.ProgressBar + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ProgressBar +

    + + +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + void onRestoreInstanceState(Parcelable) + +Method was inherited from android.view.View, but is now defined locally. Change of visibility from protected to public.
    +
     
    + + Parcelable onSaveInstanceState() + +Method was inherited from android.view.View, but is now defined locally. Change of visibility from protected to public.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html new file mode 100644 index 000000000000..c2f5c9623291 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.RemoteViews.ActionException + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.RemoteViews.ActionException +

    + +

    + + + + + + + + +
    Added Constructors +
    + + RemoteViews.ActionException(Exception) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html new file mode 100644 index 000000000000..ef8eb0826080 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html @@ -0,0 +1,221 @@ + + + + + + + + + +android.widget.RemoteViews + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.RemoteViews +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void setBitmap(int, String, Bitmap) +  
    + + void setBoolean(int, String, boolean) +  
    + + void setByte(int, String, byte) +  
    + + void setChar(int, String, char) +  
    + + void setCharSequence(int, String, CharSequence) +  
    + + void setDouble(int, String, double) +  
    + + void setFloat(int, String, float) +  
    + + void setImageViewBitmap(int, Bitmap) +  
    + + void setInt(int, String, int) +  
    + + void setLong(int, String, long) +  
    + + void setOnClickPendingIntent(int, PendingIntent) +  
    + + void setShort(int, String, short) +  
    + + void setString(int, String, String) +  
    + + void setTextColor(int, int) +  
    + + void setUri(int, String, Uri) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html new file mode 100644 index 000000000000..cee8f59b3d29 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.widget.ResourceCursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ResourceCursorAdapter +

    + +

    + + + + + + + + +
    Added Constructors +
    + + ResourceCursorAdapter(Context, int, Cursor, boolean) +  
    +  + +

    + + + + + + + + +
    Added Methods +
    + + void setViewResource(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html b/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html new file mode 100644 index 000000000000..e5b524df6658 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.Scroller + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.Scroller +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getStartX() +  
    + + int getStartY() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html new file mode 100644 index 000000000000..63b7b132902c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.SimpleCursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.SimpleCursorAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void changeCursorAndColumns(Cursor, String[], int[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html b/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html new file mode 100644 index 000000000000..42ecdc9f58fa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html @@ -0,0 +1,333 @@ + + + + + + + + + +android.widget.TextView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.TextView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void beginBatchEdit() +  
    + + boolean bringPointIntoView(int) +  
    + + void clearComposingText() +  
    + + boolean didTouchFocusSelect() +  
    + + void endBatchEdit() +  
    + + boolean extractText(ExtractedTextRequest, ExtractedText) +  
    + + Editable getEditableText() +  
    + + int getImeActionId() +  
    + + CharSequence getImeActionLabel() +  
    + + int getImeOptions() +  
    + + Bundle getInputExtras(boolean) +  
    + + int getInputType() +  
    + + String getPrivateImeOptions() +  
    + + boolean isInputMethodTarget() +  
    + + boolean moveCursorToVisibleOffset() +  
    + + void onBeginBatchEdit() +  
    + + void onCommitCompletion(CompletionInfo) +  
    + + void onEditorAction(int) +  
    + + void onEndBatchEdit() +  
    + + boolean onPrivateIMECommand(String, Bundle) +  
    + + void onSelectionChanged(int, int) +  
    + + boolean onTextContextMenuItem(int) +  
    + + void setCompoundDrawablesWithIntrinsicBounds(int, int, int, int) +  
    + + void setExtractedText(ExtractedText) +  
    + + void setImeActionLabel(CharSequence, int) +  
    + + void setImeOptions(int) +  
    + + void setInputExtras(int) +  
    + + void setInputType(int) +  
    + + void setOnEditorActionListener(OnEditorActionListener) +  
    + + void setPrivateImeOptions(String) +  
    + + void setRawInputType(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/changes-summary.html b/docs/html/sdk/api_diff/3/changes/changes-summary.html new file mode 100644 index 000000000000..bf52a9658076 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/changes-summary.html @@ -0,0 +1,451 @@ + + + + + + + + + +Android API Differences Report + + + + + + + + + + +
    +
    +
    +
    +

    Android API Differences Report

    +

    This report details the changes in the core Android framework API between two API Level +specifications. It shows additions, modifications, and removals for packages, classes, methods, and fields. +The report also includes general statistics that characterize the extent and type of the differences.

    +

    This report is based a comparison of the Android API specifications +whose API Level identifiers are given in the upper-right corner of this page. It compares a +newer "to" API to an older "from" API, noting all changes relative to the +older API. So, for example, API elements marked as removed are no longer present in the "to" +API specification.

    +

    To navigate the report, use the "Select a Diffs Index" and "Filter the Index" +controls on the left. The report uses text formatting to indicate interface names, +links to reference documentation, and links to change +description. The statistics are accessible from the "Statistics" link in the upper-right corner.

    +

    For more information about the Android framework API and SDK, +see the Android Developers site.

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Packages +
    + + android.appwidget +  
    + + android.inputmethodservice +  
    + + android.speech +  
    + + android.text.format +  
    + + android.view.inputmethod +  
    + + java.beans +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Packages +
    + + android +  
    + + android.app +  
    + + android.content +  
    + + android.content.pm +  
    + + android.content.res +  
    + + android.database +  
    + + android.database.sqlite +  
    + + android.graphics +  
    + + android.graphics.drawable +  
    + + android.graphics.drawable.shapes +  
    + + android.hardware +  
    + + android.location +  
    + + android.media +  
    + + android.net +  
    + + android.net.wifi +  
    + + android.opengl +  
    + + android.os +  
    + + android.preference +  
    + + android.provider +  
    + + android.telephony +  
    + + android.telephony.gsm +  
    + + android.test +  
    + + android.test.mock +  
    + + android.test.suitebuilder +  
    + + android.text +  
    + + android.text.method +  
    + + android.text.style +  
    + + android.util +  
    + + android.view +  
    + + android.view.animation +  
    + + android.webkit +  
    + + android.widget +  
    + + dalvik.system +  
    + + java.lang +  
    + + java.lang.reflect +  
    + + java.net +  
    + + java.util +  
    + + java.util.jar +  
    + + java.util.logging +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_additions.html b/docs/html/sdk/api_diff/3/changes/classes_index_additions.html new file mode 100644 index 000000000000..32a68e3117fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_additions.html @@ -0,0 +1,469 @@ + + + + + + + + + +Class Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +C +D +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +ActivityInstrumentationTestCase2
    +ActivityManager.RunningAppProcessInfo
    +AlphabetIndexer
    +AssetFileDescriptor.AutoCloseInputStream
    +AssetFileDescriptor.AutoCloseOutputStream
    +AsyncTask
    +AsyncTask.Status
    +AudioFormat
    +AudioRecord
    +AudioRecord.OnRecordPositionUpdateListener
    +AudioTrack
    +AudioTrack.OnPlaybackPositionUpdateListener
    + +
    C  +A +D +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +Chronometer.OnChronometerTickListener
    +ConfigurationInfo
    + +
    D  +A +C +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +DexClassLoader
    + +
    G  +A +C +D +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +GeomagneticField
    +GestureDetector.OnDoubleTapListener
    +GLSurfaceView
    +GLSurfaceView.EGLConfigChooser
    +GLSurfaceView.GLWrapper
    +GLSurfaceView.Renderer
    +GpsSatellite
    +GpsStatus
    +GpsStatus.Listener
    + +
    H  +A +C +D +G +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +Handler.Callback
    +HapticFeedbackConstants
    +HorizontalScrollView
    + +
    I  +A +C +D +G +H +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +InputType
    +IntentService
    + +
    J  +A +C +D +G +H +I +L +M +N +O +P +R +S +T +U +V + TOP +

    +JetPlayer
    +JetPlayer.OnJetEventListener
    + +
    L  +A +C +D +G +H +I +J +M +N +O +P +R +S +T +U +V + TOP +

    +LauncherActivity.IconResizer
    +LauncherActivity.ListItem
    +LiveFolders
    + +
    M  +A +C +D +G +H +I +J +L +N +O +P +R +S +T +U +V + TOP +

    +MediaPlayer.OnInfoListener
    +MediaPlayer.OnVideoSizeChangedListener
    +MediaRecorder.OnErrorListener
    +MediaRecorder.OnInfoListener
    +MediaRecorder.VideoEncoder
    +MediaRecorder.VideoSource
    + +
    N  +A +C +D +G +H +I +J +L +M +O +P +R +S +T +U +V + TOP +

    +NeighboringCellInfo
    +NoCopySpan
    +NoCopySpan.Concrete
    + +
    O  +A +C +D +G +H +I +J +L +M +N +P +R +S +T +U +V + TOP +

    +OrientationEventListener
    + +
    P  +A +C +D +G +H +I +J +L +M +N +O +R +S +T +U +V + TOP +

    +ParcelableSpan
    +PluginData
    +PrintStreamPrinter
    +ProviderTestCase2
    + +
    R  +A +C +D +G +H +I +J +L +M +N +O +P +S +T +U +V + TOP +

    +R.bool
    +R.integer
    +ResultReceiver
    + +
    S  +A +C +D +G +H +I +J +L +M +N +O +P +R +T +U +V + TOP +

    +SectionIndexer
    +Sensor
    +SensorEvent
    +SensorEventListener
    +Settings.Secure
    +SlidingDrawer
    +SlidingDrawer.OnDrawerCloseListener
    +SlidingDrawer.OnDrawerOpenListener
    +SlidingDrawer.OnDrawerScrollListener
    + +
    T  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +U +V + TOP +

    +TextView.OnEditorActionListener
    + +
    U  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +T +V + TOP +

    +UpdateAppearance
    +UserDictionary
    +UserDictionary.Words
    + +
    V  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +T +U + TOP +

    +ViewDebug.CapturedViewProperty
    +ViewTreeObserver.OnScrollChangedListener
    +Visibility
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_all.html b/docs/html/sdk/api_diff/3/changes/classes_index_all.html new file mode 100644 index 000000000000..5815c29ca5a5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_all.html @@ -0,0 +1,963 @@ + + + + + + + + + +Class Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +AbsListView
    +AbsoluteLayout
    +AbsoluteSizeSpan
    +AbsSeekBar
    +Activity
    +ActivityInfo
    +ActivityInstrumentationTestCase
    +ActivityInstrumentationTestCase2
    +ActivityManager
    +ActivityManager.RunningAppProcessInfo
    +AlarmManager
    +AlertDialog
    +AlignmentSpan.Standard
    +AlphabetIndexer
    +Animation
    +Annotation
    +ArrayAdapter
    +ArrowKeyMovementMethod
    +AssetFileDescriptor
    +AssetFileDescriptor.AutoCloseInputStream
    +AssetFileDescriptor.AutoCloseOutputStream
    +AsyncTask
    +AsyncTask.Status
    +AudioFormat
    +AudioManager
    +AudioRecord
    +AudioRecord.OnRecordPositionUpdateListener
    +AudioTrack
    +AudioTrack.OnPlaybackPositionUpdateListener
    +AutoCompleteTextView
    +AutoText
    + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +BackgroundColorSpan
    +BaseKeyListener
    +Binder
    +Bitmap
    +BroadcastReceiver
    +Browser
    +Build
    +BulletSpan
    + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Camera
    +Canvas
    +Character.UnicodeBlock
    +Chronometer
    +Chronometer.OnChronometerTickListener
    +Class
    +ClickableSpan
    +Configuration
    +ConfigurationInfo
    +ConnectivityManager
    +Contacts.Intents
    +Contacts.Intents.Insert
    +Contacts.PeopleColumns
    +ContentProvider
    +ContentResolver
    +Context
    +Cursor
    +CursorAdapter
    +CursorWrapper
    + +
    D  +A +B +C +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +DatabaseUtils
    +Date
    +DateKeyListener
    +DateTimeKeyListener
    +Debug
    +DexClassLoader
    +DexFile
    +DialerKeyListener
    +DialogInterface
    +DialogPreference
    +DigitsKeyListener
    +Drawable
    +DynamicDrawableSpan
    + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Environment
    + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +ForegroundColorSpan
    + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +GeomagneticField
    +GestureDetector
    +GestureDetector.OnDoubleTapListener
    +GestureDetector.SimpleOnGestureListener
    +GLSurfaceView
    +GLSurfaceView.EGLConfigChooser
    +GLSurfaceView.GLWrapper
    +GLSurfaceView.Renderer
    +GpsSatellite
    +GpsStatus
    +GpsStatus.Listener
    +Gravity
    +GridView
    + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Handler
    +Handler.Callback
    +HapticFeedbackConstants
    +HorizontalScrollView
    + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +IBinder
    +ImageSpan
    +InputType
    +Instrumentation
    +InstrumentationTestCase
    +Intent
    +IntentService
    + +
    J  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +JetPlayer
    +JetPlayer.OnJetEventListener
    + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +KeyCharacterMap
    +KeyEvent
    +KeyListener
    + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +LauncherActivity
    +LauncherActivity.IconResizer
    +LauncherActivity.ListItem
    +LeadingMarginSpan.Standard
    +Level
    +ListView
    +LiveFolders
    +Location
    +LocationManager
    +LogManager
    +Looper
    + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Manifest.permission
    +MaskFilterSpan
    +MediaPlayer
    +MediaPlayer.OnInfoListener
    +MediaPlayer.OnVideoSizeChangedListener
    +MediaRecorder
    +MediaRecorder.OnErrorListener
    +MediaRecorder.OnInfoListener
    +MediaRecorder.OutputFormat
    +MediaRecorder.VideoEncoder
    +MediaRecorder.VideoSource
    +MediaStore
    +MediaStore.Audio.AlbumColumns
    +MediaStore.Audio.Media
    +MediaStore.Images.Media
    +MediaStore.Video
    +MediaStore.Video.VideoColumns
    +Menu
    +MetaKeyKeyListener
    +MockPackageManager
    +MotionEvent
    +MovementMethod
    +MultiTapKeyListener
    + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +NeighboringCellInfo
    +NetworkInfo
    +NoCopySpan
    +NoCopySpan.Concrete
    + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Z + TOP +

    +OrientationEventListener
    +OrientationListener
    + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Z + TOP +

    +Pack200.Packer
    +Pack200.Unpacker
    +PackageInfo
    +PackageManager
    +Parcel
    +ParcelableSpan
    +ParcelFileDescriptor
    +PendingIntent
    +PhoneNumberUtils
    +PluginData
    +PopupWindow
    +PopupWindow.OnDismissListener
    +PrintStreamPrinter
    +ProgressBar
    +ProviderTestCase
    +ProviderTestCase2
    +Proxy
    + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Z + TOP +

    +QuoteSpan
    +QwertyKeyListener
    + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Z + TOP +

    +R.attr
    +R.bool
    +R.drawable
    +R.id
    +R.integer
    +R.string
    +R.style
    +RasterizerSpan
    +Rect
    +RectF
    +RelativeSizeSpan
    +RemoteViews
    +RemoteViews.ActionException
    +ResourceCursorAdapter
    +Resources
    +ResultReceiver
    +RingtoneManager
    +RotateDrawable
    + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Z + TOP +

    +ScaleDrawable
    +ScaleXSpan
    +Scroller
    +ScrollingMovementMethod
    +SectionIndexer
    +Sensor
    +SensorEvent
    +SensorEventListener
    +SensorListener
    +SensorManager
    +Settings
    +Settings.Secure
    +Settings.System
    +Shape
    +SimpleCursorAdapter
    +SlidingDrawer
    +SlidingDrawer.OnDrawerCloseListener
    +SlidingDrawer.OnDrawerOpenListener
    +SlidingDrawer.OnDrawerScrollListener
    +SmsMessage
    +Socket
    +SoundPool
    +Spanned
    +SpanWatcher
    +SparseIntArray
    +SQLiteDatabase
    +StrikethroughSpan
    +String
    +StyleSpan
    +SubscriptSpan
    +SuperscriptSpan
    + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Z + TOP +

    +TelephonyManager
    +TestMethod
    +TestSuiteBuilder
    +TextAppearanceSpan
    +TextKeyListener
    +TextUtils
    +TextView
    +TextView.OnEditorActionListener
    +TextWatcher
    +TimeKeyListener
    +TimeUtils
    +Touch
    +TouchUtils
    +Transformation
    +TransitionDrawable
    +TypedArray
    +TypefaceSpan
    + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Z + TOP +

    +UnderlineSpan
    +UpdateAppearance
    +UpdateLayout
    +UrlInterceptHandler
    +UrlInterceptRegistry
    +URLSpan
    +URLUtil
    +UserDictionary
    +UserDictionary.Words
    + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Z + TOP +

    +View
    +ViewConfiguration
    +ViewDebug
    +ViewDebug.CapturedViewProperty
    +ViewGroup
    +ViewParent
    +ViewTreeObserver
    +ViewTreeObserver.OnScrollChangedListener
    +Visibility
    +VMDebug
    + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Z + TOP +

    +WebHistoryItem
    +WebSettings
    +WebView
    +WifiManager
    +Window
    +WindowManager.LayoutParams
    + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_changes.html b/docs/html/sdk/api_diff/3/changes/classes_index_changes.html new file mode 100644 index 000000000000..58d4edcbc8a7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_changes.html @@ -0,0 +1,846 @@ + + + + + + + + + +Class Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +AbsListView
    +AbsoluteLayout
    +AbsoluteSizeSpan
    +AbsSeekBar
    +Activity
    +ActivityInfo
    +ActivityInstrumentationTestCase
    +ActivityManager
    +AlarmManager
    +AlertDialog
    +AlignmentSpan.Standard
    +Animation
    +Annotation
    +ArrayAdapter
    +ArrowKeyMovementMethod
    +AssetFileDescriptor
    +AudioManager
    +AutoCompleteTextView
    +AutoText
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +BackgroundColorSpan
    +BaseKeyListener
    +Binder
    +Bitmap
    +BroadcastReceiver
    +Browser
    +Build
    +BulletSpan
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Camera
    +Canvas
    +Character.UnicodeBlock
    +Chronometer
    +Class
    +ClickableSpan
    +Configuration
    +ConnectivityManager
    +Contacts.Intents
    +Contacts.Intents.Insert
    +Contacts.PeopleColumns
    +ContentProvider
    +ContentResolver
    +Context
    +Cursor
    +CursorAdapter
    +CursorWrapper
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +DatabaseUtils
    +Date
    +DateKeyListener
    +DateTimeKeyListener
    +Debug
    +DexFile
    +DialerKeyListener
    +DialogInterface
    +DialogPreference
    +DigitsKeyListener
    +Drawable
    +DynamicDrawableSpan
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Environment
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +ForegroundColorSpan
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +GestureDetector
    +GestureDetector.SimpleOnGestureListener
    +Gravity
    +GridView
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Handler
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +IBinder
    +ImageSpan
    +Instrumentation
    +InstrumentationTestCase
    +Intent
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +KeyCharacterMap
    +KeyEvent
    +KeyListener
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +LauncherActivity
    +LeadingMarginSpan.Standard
    +Level
    +ListView
    +Location
    +LocationManager
    +LogManager
    +Looper
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Manifest.permission
    +MaskFilterSpan
    +MediaPlayer
    +MediaRecorder
    +MediaRecorder.OutputFormat
    +MediaStore
    +MediaStore.Audio.AlbumColumns
    +MediaStore.Audio.Media
    +MediaStore.Images.Media
    +MediaStore.Video
    +MediaStore.Video.VideoColumns
    +Menu
    +MetaKeyKeyListener
    +MockPackageManager
    +MotionEvent
    +MovementMethod
    +MultiTapKeyListener
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +NetworkInfo
    + +
    O  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +Q +R +S +T +U +V +W +Z + TOP +

    +OrientationListener
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +Q +R +S +T +U +V +W +Z + TOP +

    +Pack200.Packer
    +Pack200.Unpacker
    +PackageInfo
    +PackageManager
    +Parcel
    +ParcelFileDescriptor
    +PendingIntent
    +PhoneNumberUtils
    +PopupWindow
    +PopupWindow.OnDismissListener
    +ProgressBar
    +ProviderTestCase
    +Proxy
    + +
    Q  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +R +S +T +U +V +W +Z + TOP +

    +QuoteSpan
    +QwertyKeyListener
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +S +T +U +V +W +Z + TOP +

    +R.attr
    +R.drawable
    +R.id
    +R.string
    +R.style
    +RasterizerSpan
    +Rect
    +RectF
    +RelativeSizeSpan
    +RemoteViews
    +RemoteViews.ActionException
    +ResourceCursorAdapter
    +Resources
    +RingtoneManager
    +RotateDrawable
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +T +U +V +W +Z + TOP +

    +ScaleDrawable
    +ScaleXSpan
    +Scroller
    +ScrollingMovementMethod
    +SensorListener
    +SensorManager
    +Settings
    +Settings.System
    +Shape
    +SimpleCursorAdapter
    +SmsMessage
    +Socket
    +SoundPool
    +Spanned
    +SpanWatcher
    +SparseIntArray
    +SQLiteDatabase
    +StrikethroughSpan
    +String
    +StyleSpan
    +SubscriptSpan
    +SuperscriptSpan
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +U +V +W +Z + TOP +

    +TelephonyManager
    +TestMethod
    +TestSuiteBuilder
    +TextAppearanceSpan
    +TextKeyListener
    +TextUtils
    +TextView
    +TextWatcher
    +TimeKeyListener
    +TimeUtils
    +Touch
    +TouchUtils
    +Transformation
    +TransitionDrawable
    +TypedArray
    +TypefaceSpan
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +V +W +Z + TOP +

    +UnderlineSpan
    +UpdateLayout
    +UrlInterceptHandler
    +UrlInterceptRegistry
    +URLSpan
    +URLUtil
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +W +Z + TOP +

    +View
    +ViewConfiguration
    +ViewDebug
    +ViewGroup
    +ViewParent
    +ViewTreeObserver
    +VMDebug
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +Z + TOP +

    +WebHistoryItem
    +WebSettings
    +WebView
    +WifiManager
    +Window
    +WindowManager.LayoutParams
    + +
    Z  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_removals.html b/docs/html/sdk/api_diff/3/changes/classes_index_removals.html new file mode 100644 index 000000000000..bc5e2e821957 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_removals.html @@ -0,0 +1,62 @@ + + + + + + + + + +Class Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html new file mode 100644 index 000000000000..0dff7fe55a96 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html @@ -0,0 +1,409 @@ + + + + + + + + + +Constructor Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +D +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    +AlignmentSpan.Standard +(Parcel) constructor
    +Annotation +(Parcel) constructor
    + +
    B  +A +D +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    +BulletSpan +(Parcel) constructor
    + +
    D  +A +B +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +DynamicDrawableSpan +(int) constructor
    + +
    F  +A +B +D +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +ForegroundColorSpan +(Parcel) constructor
    + +
    G  +A +B +D +F +H +I +K +L +O +Q +R +S +T +U + TOP +

    +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +
    H  +A +B +D +F +G +I +K +L +O +Q +R +S +T +U + TOP +

    +Handler
    +  Handler +(Callback) constructor
    +  Handler +(Looper, Callback) constructor
    + +
    I  +A +B +D +F +G +H +K +L +O +Q +R +S +T +U + TOP +

    +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    +  ImageSpan +(Context, int, int) constructor
    +  ImageSpan +(Bitmap, int) constructor
    +  ImageSpan +(Drawable, int) constructor
    +  ImageSpan +(Drawable, String, int) constructor
    + +
    K  +A +B +D +F +G +H +I +L +O +Q +R +S +T +U + TOP +

    +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    +  KeyEvent +(long, String, int, int) constructor
    + +
    L  +A +B +D +F +G +H +I +K +O +Q +R +S +T +U + TOP +

    +LeadingMarginSpan.Standard +(Parcel) constructor
    + +
    O  +A +B +D +F +G +H +I +K +L +Q +R +S +T +U + TOP +

    +OrientationListener +(Context, int) constructor
    + +
    Q  +A +B +D +F +G +H +I +K +L +O +R +S +T +U + TOP +

    +QuoteSpan +(Parcel) constructor
    + +
    R  +A +B +D +F +G +H +I +K +L +O +Q +S +T +U + TOP +

    +RelativeSizeSpan +(Parcel) constructor
    +RemoteViews.ActionException +(Exception) constructor
    +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +
    S  +A +B +D +F +G +H +I +K +L +O +Q +R +T +U + TOP +

    +ScaleXSpan +(Parcel) constructor
    +StrikethroughSpan +(Parcel) constructor
    +StyleSpan +(Parcel) constructor
    +SubscriptSpan +(Parcel) constructor
    +SuperscriptSpan +(Parcel) constructor
    + +
    T  +A +B +D +F +G +H +I +K +L +O +Q +R +S +U + TOP +

    +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    +  TestMethod +(TestCase) constructor
    +TextAppearanceSpan +(Parcel) constructor
    +TransitionDrawable +(Drawable[]) constructor
    +TypefaceSpan +(Parcel) constructor
    + +
    U  +A +B +D +F +G +H +I +K +L +O +Q +R +S +T + TOP +

    +UnderlineSpan +(Parcel) constructor
    +URLSpan +(Parcel) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_all.html b/docs/html/sdk/api_diff/3/changes/constructors_index_all.html new file mode 100644 index 000000000000..49ad673c48aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_all.html @@ -0,0 +1,514 @@ + + + + + + + + + +Constructor Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    +AlignmentSpan.Standard +(Parcel) constructor
    +Annotation +(Parcel) constructor
    + +
    B  +A +D +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    +BulletSpan +(Parcel) constructor
    + +
    D  +A +B +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +Date
    +  Date +() constructor
    +  Date +(int, int, int, int, int, int) constructor
    +DynamicDrawableSpan +(int) constructor
    + +
    F  +A +B +D +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +ForegroundColorSpan +(Parcel) constructor
    + +
    G  +A +B +D +F +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    +  GestureDetector +(OnGestureListener) constructor
    +  GestureDetector +(OnGestureListener, Handler) constructor
    + +
    H  +A +B +D +F +G +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +Handler
    +  Handler +(Callback) constructor
    +  Handler +(Looper, Callback) constructor
    + +
    I  +A +B +D +F +G +H +K +L +N +O +Q +R +S +T +U +V + TOP +

    +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    +  ImageSpan +(Context, int, int) constructor
    +  ImageSpan +(Bitmap, int) constructor
    +  ImageSpan +(Drawable, int) constructor
    +  ImageSpan +(Drawable, String, int) constructor
    + +
    K  +A +B +D +F +G +H +I +L +N +O +Q +R +S +T +U +V + TOP +

    +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    +  KeyEvent +(long, String, int, int) constructor
    + +
    L  +A +B +D +F +G +H +I +K +N +O +Q +R +S +T +U +V + TOP +

    +LeadingMarginSpan.Standard +(Parcel) constructor
    + +
    N  +A +B +D +F +G +H +I +K +L +O +Q +R +S +T +U +V + TOP +

    +NetworkInfo +(int) constructor
    + +
    O  +A +B +D +F +G +H +I +K +L +N +Q +R +S +T +U +V + TOP +

    +OrientationListener +(Context, int) constructor
    + +
    Q  +A +B +D +F +G +H +I +K +L +N +O +R +S +T +U +V + TOP +

    +QuoteSpan +(Parcel) constructor
    + +
    R  +A +B +D +F +G +H +I +K +L +N +O +Q +S +T +U +V + TOP +

    +RelativeSizeSpan +(Parcel) constructor
    +RemoteViews.ActionException +(Exception) constructor
    +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +
    S  +A +B +D +F +G +H +I +K +L +N +O +Q +R +T +U +V + TOP +

    +ScaleXSpan +(Parcel) constructor
    +Socket
    +  Socket +() constructor
    +  Socket +(String, int) constructor
    +  Socket +(String, int, InetAddress, int) constructor
    +  Socket +(Proxy) constructor
    +  Socket +(SocketImpl) constructor
    +StrikethroughSpan +(Parcel) constructor
    +String
    +  String +() constructor
    +  String +(byte[]) constructor
    +  String +(byte[], int) constructor
    +  String +(byte[], int, int) constructor
    +  String +(byte[], int, int, int) constructor
    +StyleSpan +(Parcel) constructor
    +SubscriptSpan +(Parcel) constructor
    +SuperscriptSpan +(Parcel) constructor
    + +
    T  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +U +V + TOP +

    +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    +  TestMethod +(TestCase) constructor
    +TextAppearanceSpan +(Parcel) constructor
    +TransitionDrawable +(Drawable[]) constructor
    +TypefaceSpan +(Parcel) constructor
    + +
    U  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +V + TOP +

    +UnderlineSpan +(Parcel) constructor
    +URLSpan +(Parcel) constructor
    + +
    V  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +U + TOP +

    +ViewConfiguration +() constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html new file mode 100644 index 000000000000..8ea3eec7b034 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html @@ -0,0 +1,124 @@ + + + + + + + + + +Constructor Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    D  +G +S +V + TOP +

    +Date
    +  Date +() constructor
    +  Date +(int, int, int, int, int, int) constructor
    + +
    G  +D +S +V + TOP +

    +GestureDetector
    +  GestureDetector +(OnGestureListener) constructor
    +  GestureDetector +(OnGestureListener, Handler) constructor
    + +
    S  +D +G +V + TOP +

    +Socket
    +  Socket +() constructor
    +  Socket +(String, int) constructor
    +  Socket +(String, int, InetAddress, int) constructor
    +  Socket +(Proxy) constructor
    +  Socket +(SocketImpl) constructor
    +String
    +  String +() constructor
    +  String +(byte[]) constructor
    +  String +(byte[], int) constructor
    +  String +(byte[], int, int) constructor
    +  String +(byte[], int, int, int) constructor
    + +
    V  +D +G +S + TOP +

    +ViewConfiguration +() constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html new file mode 100644 index 000000000000..8e591c1e3fd5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html @@ -0,0 +1,68 @@ + + + + + + + + + +Constructor Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    N  + TOP +

    +NetworkInfo +(int) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html new file mode 100644 index 000000000000..ef3937c0a195 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html @@ -0,0 +1,123 @@ + + + + + + + + + +dalvik.system.DexFile + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.DexFile +

    + + +

    + + + + + + + + +
    Added Methods +
    + + DexFile loadDex(String, String, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html new file mode 100644 index 000000000000..c7ee90942566 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html @@ -0,0 +1,130 @@ + + + + + + + + + +dalvik.system.VMDebug + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.VMDebug +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void dumpHprofData(String) +  
    + + boolean isDebuggingEnabled() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html new file mode 100644 index 000000000000..d26e9e64abe2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html @@ -0,0 +1,187 @@ + + + + + + + + + +dalvik.system.Zygote + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.Zygote +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int forkAndSpecialize(int, int, int[], int, int[][]) +  
    + + int forkSystemServer(int, int, int[], int, int[][]) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + int forkAndSpecialize(int, int, int[], boolean, int[][]) + +Now deprecated.
    +
     
    + + int forkSystemServer(int, int, int[], boolean, int[][]) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int DEBUG_ENABLE_ASSERT +  
    + + int DEBUG_ENABLE_CHECKJNI +  
    + + int DEBUG_ENABLE_DEBUGGER +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_additions.html b/docs/html/sdk/api_diff/3/changes/fields_index_additions.html new file mode 100644 index 000000000000..c2c3b494595c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_additions.html @@ -0,0 +1,1129 @@ + + + + + + + + + +Field Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ACCELEROMETER_ROTATION +
    +ACTION_AIRPLANE_MODE_SETTINGS +
    +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    +ACTION_AUDIO_BECOMING_NOISY +
    +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    +ACTION_DATA_ROAMING_SETTINGS +
    +ACTION_IMAGE_CAPTURE +
    +ACTION_INPUT_METHOD_CHANGED +
    +ACTION_INPUT_METHOD_SETTINGS +
    +ACTION_INTERNAL_STORAGE_SETTINGS +
    +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    +ACTION_MEDIA_CHECKING +
    +ACTION_MEDIA_NOFS +
    +ACTION_MEMORY_CARD_SETTINGS +
    +ACTION_NETWORK_OPERATOR_SETTINGS +
    +ACTION_OUTSIDE +
    +ACTION_PACKAGE_DATA_CLEARED +
    +ACTION_PACKAGE_REPLACED +
    +ACTION_PHONE_STATE_CHANGED +
    +ACTION_QUICK_LAUNCH_SETTINGS +
    +ACTION_SEARCH_LONG_PRESS +
    +ACTION_SYNC_SETTINGS +
    +ACTION_SYSTEM_TUTORIAL +
    +ACTION_USER_DICTIONARY_SETTINGS +
    +ACTION_USER_PRESENT +
    +ACTION_VIDEO_CAPTURE +
    +ACTION_WIFI_IP_SETTINGS +
    +addToDictionary +
    +ALIGN_BASELINE +
    +ALIGN_BOTTOM +
    +allowSingleTap +
    +animateOnClick +
    +AXIS_CLIP +
    +AXIS_MINUS_X +
    +AXIS_MINUS_Y +
    +AXIS_MINUS_Z +
    +AXIS_X +
    +AXIS_Y +
    +AXIS_Z +
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +backgroundDimEnabled +
    +BIND_APPWIDGET +
    +BIND_INPUT_METHOD +
    +BOOKMARK +
    +bottomOffset +
    +BUCKET_DISPLAY_NAME +
    +BUCKET_ID +
    +BUTTON_NEGATIVE +
    +BUTTON_NEUTRAL +
    +BUTTON_POSITIVE +
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +candidatesArea +
    +candidatesTextStyleSpans +
    +CAP_MODE_CHARACTERS +
    +CAP_MODE_SENTENCES +
    +CAP_MODE_WORDS +
    +CATEGORY_INFO +
    +CLIP_HORIZONTAL +
    +CLIP_VERTICAL +
    +closeButton +
    +codes +
    +configPreferences +
    +configure +
    +content +
    +copy +
    +copyUrl +
    +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + in  +android.graphics.RectF +
    +cut +
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +dark_header +
    +DEBUG_ENABLE_ASSERT +
    +DEBUG_ENABLE_CHECKJNI +
    +DEBUG_ENABLE_DEBUGGER +
    +dialog_alert_title +
    +DISPLAY +
    +DISPLAY_CLIP_HORIZONTAL +
    +DISPLAY_CLIP_VERTICAL +
    +dropDownAnchor +
    +dropDownWidth +
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +editorExtras +
    +EXTRA_APPLICATION_ID +
    +EXTRA_CREATE_DESCRIPTION +
    +EXTRA_DATA_REMOVED +
    +EXTRA_FINISH_ON_COMPLETION +
    +EXTRA_FORCE_CREATE +
    +EXTRA_INCOMING_NUMBER +
    +EXTRA_MAX_BYTES +
    +EXTRA_MEDIA_ALBUM +
    +EXTRA_MEDIA_ARTIST +
    +EXTRA_MEDIA_FOCUS +
    +EXTRA_MEDIA_TITLE +
    +EXTRA_OUTPUT +
    +EXTRA_REPLACING +
    +EXTRA_SCREEN_ORIENTATION +
    +EXTRA_STATE +
    +EXTRA_STATE_IDLE +
    +EXTRA_STATE_OFFHOOK +
    +EXTRA_STATE_RINGING +
    +EXTRA_VIDEO_QUALITY +
    +extractArea +
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +fastScrollEnabled +
    +fillEnabled +
    +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    +FLAG_ACTIVITY_NO_USER_ACTION +
    +FLAG_ACTIVITY_REORDER_TO_FRONT +
    +FLAG_ALT_FOCUSABLE_IM +
    +FLAG_EDITOR_ACTION +
    +FLAG_FROM_SYSTEM +
    +FLAG_KEEP_TOUCH_MODE +
    +FLAG_NO_HISTORY +
    +FLAG_SOFT_KEYBOARD +
    +FLAG_UPDATE_CURRENT +
    +FLAG_WATCH_OUTSIDE_TOUCH +
    +footerDividersEnabled +
    +FORMAT_JAPAN +
    +FX_KEYPRESS_DELETE +
    +FX_KEYPRESS_RETURN +
    +FX_KEYPRESS_SPACEBAR +
    +FX_KEYPRESS_STANDARD +
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +GET_CONFIGURATIONS +
    +GET_UNINSTALLED_PACKAGES +
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +handle +
    +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + in  +android.view.View +
    +hapticFeedbackEnabled +
    +hardKeyboardHidden +
    +HARDKEYBOARDHIDDEN_NO +
    +HARDKEYBOARDHIDDEN_UNDEFINED +
    +HARDKEYBOARDHIDDEN_YES +
    +headerDividersEnabled +
    +horizontalGap +
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ic_btn_speak_now +
    +iconPreview +
    +imeActionId +
    +imeActionLabel +
    +imeExtractEnterAnimation +
    +imeExtractExitAnimation +
    +imeFullscreenBackground +
    +imeOptions +
    +initialLayout +
    +innerRadius +
    +INPUT_METHOD_FROM_FOCUSABLE +
    +INPUT_METHOD_NEEDED +
    +INPUT_METHOD_NOT_NEEDED +
    +INPUT_METHOD_SERVICE +
    +inputArea +
    +inputExtractEditText +
    +inputType +
    +INSTALL_FAILED_CONFLICTING_PROVIDER +
    +INTENT_ACTION_MEDIA_SEARCH +
    +INTENT_ACTION_STILL_IMAGE_CAMERA +
    +INTENT_ACTION_VIDEO_CAMERA +
    +INTERVAL_DAY +
    +INTERVAL_FIFTEEN_MINUTES +
    +INTERVAL_HALF_DAY +
    +INTERVAL_HALF_HOUR +
    +INTERVAL_HOUR +
    +isDefault +
    +isModifier +
    +isRepeatable +
    +isScrollContainer +
    +isSticky +
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +P +R +S +T +U +V +W + TOP +

    +KEY_LOCATION_CHANGED +
    +KEY_PROVIDER_ENABLED +
    +KEY_STATUS_CHANGED +
    +keyBackground +
    +keyboardMode +
    +keyboardView +
    +KEYCODE_MEDIA_FAST_FORWARD +
    +KEYCODE_MEDIA_NEXT +
    +KEYCODE_MEDIA_PLAY_PAUSE +
    +KEYCODE_MEDIA_PREVIOUS +
    +KEYCODE_MEDIA_REWIND +
    +KEYCODE_MEDIA_STOP +
    +KEYCODE_MUTE +
    +keyEdgeFlags +
    +keyHeight +
    +keyIcon +
    +keyLabel +
    +keyOutputText +
    +keyPreviewHeight +
    +keyPreviewLayout +
    +keyPreviewOffset +
    +keyTextColor +
    +keyTextSize +
    +keyWidth +
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +P +R +S +T +U +V +W + TOP +

    +labelTextSize +
    +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +P +R +S +T +U +V +W + TOP +

    +MEDIA_CHECKING +
    +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    +MEDIA_INFO_BAD_INTERLEAVING +
    +MEDIA_INFO_NOT_SEEKABLE +
    +MEDIA_INFO_UNKNOWN +
    +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    +MEDIA_NOFS +
    +MEDIA_RECORDER_ERROR_UNKNOWN +
    +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    +MEDIA_RECORDER_INFO_UNKNOWN +
    +MODE_APPEND +
    +MOUNT_FORMAT_FILESYSTEMS +
    +mVerticalAlignment +
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +P +R +S +T +U +V +W + TOP +

    +noHistory +
    +NUMBER_OF_SONGS_FOR_ARTIST +
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +R +S +T +U +V +W + TOP +

    +paste +
    +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + in  +android.provider.Contacts.PeopleColumns +
    +popupCharacters +
    +popupKeyboard +
    +popupLayout +
    +privateImeOptions +
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +S +T +U +V +W + TOP +

    +RAW_AMR +
    +reqFiveWayNav +
    +reqHardKeyboard +
    +reqKeyboardType +
    +reqNavigation +
    +reqTouchScreen +
    +ROUTE_BLUETOOTH_A2DP +
    +ROUTE_BLUETOOTH_SCO +
    +rowEdgeFlags +
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +T +U +V +W + TOP +

    +SCREEN_BRIGHTNESS_CHANGED +
    +SCREEN_ORIENTATION_CHANGED +
    +screenBrightness +
    +screenOrientation +
    +SECONDARY_EMAIL +
    +SECONDARY_EMAIL_TYPE +
    +SECONDARY_PHONE +
    +SECONDARY_PHONE_TYPE +
    +selectAll +
    +settingsActivity +
    +sharedUserId +
    +sharedUserLabel
    + in  +android.R.attr +
    + in  +android.content.pm.PackageInfo +
    +SHOW_OR_CREATE_CONTACT +
    +smoothScrollbar +
    +SOFT_INPUT_ADJUST_PAN +
    +SOFT_INPUT_ADJUST_RESIZE +
    +SOFT_INPUT_ADJUST_UNSPECIFIED +
    +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    +SOFT_INPUT_MASK_ADJUST +
    +SOFT_INPUT_MASK_STATE +
    +SOFT_INPUT_MODE_CHANGED +
    +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    +SOFT_INPUT_STATE_HIDDEN +
    +SOFT_INPUT_STATE_UNCHANGED +
    +SOFT_INPUT_STATE_UNSPECIFIED +
    +SOFT_INPUT_STATE_VISIBLE +
    +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + in  +android.view.WindowManager.LayoutParams +
    +SPAN_COMPOSING +
    +SPAN_INTERMEDIATE +
    +SPAN_POINT_MARK_MASK +
    +startSelectingText +
    +state_long_pressable +
    +stopSelectingText +
    +STREAM_NOTIFICATION +
    +STRETCH_SPACING_UNIFORM +
    +switchInputMethod +
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +U +V +W + TOP +

    +TERTIARY_EMAIL +
    +TERTIARY_EMAIL_TYPE +
    +TERTIARY_PHONE +
    +TERTIARY_PHONE_TYPE +
    +Theme_InputMethod +
    +Theme_Light_Panel +
    +Theme_NoDisplay +
    +Theme_Panel +
    +thickness +
    +title_bar_tall +
    +topOffset +
    +TYPE_APPLICATION_ATTACHED_DIALOG +
    +TYPE_INPUT_METHOD +
    +TYPE_INPUT_METHOD_DIALOG +
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +V +W + TOP +

    +UNKNOWN_LENGTH +
    +UPDATE_DEVICE_STATS +
    +updatePeriodMillis +
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +W + TOP +

    +verticalCorrection +
    +verticalGap +
    +VideoView_error_text_invalid_progressive_playback +
    +voiceLanguage +
    +voiceLanguageModel +
    +voiceMaxResults +
    +voicePromptText +
    +voiceSearchMode +
    +VOLUME_NOTIFICATION +
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V + TOP +

    +Widget_KeyboardView +
    +WIFI_MAX_DHCP_RETRY_COUNT +
    +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    +WIFI_MODE_FULL +
    +WIFI_MODE_SCAN_ONLY +
    +WIFI_SLEEP_POLICY +
    +WIFI_SLEEP_POLICY_DEFAULT +
    +WIFI_SLEEP_POLICY_NEVER +
    +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    +windowDisablePreview +
    +windowNoDisplay +
    +windowSoftInputMode +
    +WRITE_SECURE_SETTINGS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_all.html b/docs/html/sdk/api_diff/3/changes/fields_index_all.html new file mode 100644 index 000000000000..786a36005452 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_all.html @@ -0,0 +1,1270 @@ + + + + + + + + + +Field Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ACCELEROMETER_ROTATION +
    +ACTION_AIRPLANE_MODE_SETTINGS +
    +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    +ACTION_AUDIO_BECOMING_NOISY +
    +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    +ACTION_DATA_ROAMING_SETTINGS +
    +ACTION_IMAGE_CAPTURE +
    +ACTION_INPUT_METHOD_CHANGED +
    +ACTION_INPUT_METHOD_SETTINGS +
    +ACTION_INTERNAL_STORAGE_SETTINGS +
    +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    +ACTION_MEDIA_CHECKING +
    +ACTION_MEDIA_NOFS +
    +ACTION_MEMORY_CARD_SETTINGS +
    +ACTION_NETWORK_OPERATOR_SETTINGS +
    +ACTION_OUTSIDE +
    +ACTION_PACKAGE_DATA_CLEARED +
    +ACTION_PACKAGE_REPLACED +
    +ACTION_PHONE_STATE_CHANGED +
    +ACTION_QUICK_LAUNCH_SETTINGS +
    +ACTION_SEARCH_LONG_PRESS +
    +ACTION_SYNC_SETTINGS +
    +ACTION_SYSTEM_TUTORIAL +
    +ACTION_USER_DICTIONARY_SETTINGS +
    +ACTION_USER_PRESENT +
    +ACTION_VIDEO_CAPTURE +
    +ACTION_WIFI_IP_SETTINGS +
    +ADB_ENABLED +
    +addToDictionary +
    +ALIGN_BASELINE +
    +ALIGN_BOTTOM +
    +allowSingleTap +
    +ANDROID_ID +
    +animateOnClick +
    +autoText +
    +AXIS_CLIP +
    +AXIS_MINUS_X +
    +AXIS_MINUS_Y +
    +AXIS_MINUS_Z +
    +AXIS_X +
    +AXIS_Y +
    +AXIS_Z +
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +backgroundDimEnabled +
    +BIND_APPWIDGET +
    +BIND_INPUT_METHOD +
    +BLUETOOTH_ON +
    +BOOKMARK +
    +bottomOffset +
    +BUCKET_DISPLAY_NAME +
    +BUCKET_ID +
    +BUTTON1 +
    +BUTTON2 +
    +BUTTON3 +
    +BUTTON_NEGATIVE +
    +BUTTON_NEUTRAL +
    +BUTTON_POSITIVE +
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +candidatesArea +
    +candidatesTextStyleSpans +
    +CAP_MODE_CHARACTERS +
    +CAP_MODE_SENTENCES +
    +CAP_MODE_WORDS +
    +capitalize +
    +CATEGORY_GADGET +
    +CATEGORY_INFO +
    +CLIP_HORIZONTAL +
    +CLIP_VERTICAL +
    +closeButton +
    +codes +
    +configPreferences +
    +configure +
    +content +
    +copy +
    +copyUrl +
    +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + in  +android.graphics.RectF +
    +cut +
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +dark_header +
    +DATA_ROAMING +
    +DATA_X +
    +DATA_Y +
    +DATA_Z +
    +DEBUG_ENABLE_ASSERT +
    +DEBUG_ENABLE_CHECKJNI +
    +DEBUG_ENABLE_DEBUGGER +
    +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + in  +android.provider.MediaStore.Video +
    +DEVICE_PROVISIONED +
    +dialog_alert_title +
    +DISPLAY +
    +DISPLAY_CLIP_HORIZONTAL +
    +DISPLAY_CLIP_VERTICAL +
    +dropDownAnchor +
    +dropDownWidth +
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +editable +
    +editorExtras +
    +enabled +
    +EXTRA_APPLICATION_ID +
    +EXTRA_CREATE_DESCRIPTION +
    +EXTRA_DATA_REMOVED +
    +EXTRA_FINISH_ON_COMPLETION +
    +EXTRA_FORCE_CREATE +
    +EXTRA_INCOMING_NUMBER +
    +EXTRA_MAX_BYTES +
    +EXTRA_MEDIA_ALBUM +
    +EXTRA_MEDIA_ARTIST +
    +EXTRA_MEDIA_FOCUS +
    +EXTRA_MEDIA_TITLE +
    +EXTRA_OUTPUT +
    +EXTRA_REPLACING +
    +EXTRA_SCREEN_ORIENTATION +
    +EXTRA_STATE +
    +EXTRA_STATE_IDLE +
    +EXTRA_STATE_OFFHOOK +
    +EXTRA_STATE_RINGING +
    +EXTRA_VIDEO_QUALITY +
    +extractArea +
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +fastScrollEnabled +
    +fillEnabled +
    +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    +FLAG_ACTIVITY_NO_USER_ACTION +
    +FLAG_ACTIVITY_REORDER_TO_FRONT +
    +FLAG_ALT_FOCUSABLE_IM +
    +FLAG_EDITOR_ACTION +
    +FLAG_FROM_SYSTEM +
    +FLAG_KEEP_TOUCH_MODE +
    +FLAG_NO_HISTORY +
    +FLAG_SOFT_KEYBOARD +
    +FLAG_UPDATE_CURRENT +
    +FLAG_WATCH_OUTSIDE_TOUCH +
    +footerDividersEnabled +
    +FORMAT_JAPAN +
    +FX_KEYPRESS_DELETE +
    +FX_KEYPRESS_RETURN +
    +FX_KEYPRESS_SPACEBAR +
    +FX_KEYPRESS_STANDARD +
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +GET_CONFIGURATIONS +
    +GET_UNINSTALLED_PACKAGES +
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +handle +
    +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + in  +android.view.View +
    +hapticFeedbackEnabled +
    +hardKeyboardHidden +
    +HARDKEYBOARDHIDDEN_NO +
    +HARDKEYBOARDHIDDEN_UNDEFINED +
    +HARDKEYBOARDHIDDEN_YES +
    +headerDividersEnabled +
    +horizontalGap +
    +HTTP_PROXY +
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ic_btn_speak_now +
    +iconPreview +
    +imeActionId +
    +imeActionLabel +
    +imeExtractEnterAnimation +
    +imeExtractExitAnimation +
    +imeFullscreenBackground +
    +imeOptions +
    +initialLayout +
    +innerRadius +
    +INPUT_METHOD_FROM_FOCUSABLE +
    +INPUT_METHOD_NEEDED +
    +INPUT_METHOD_NOT_NEEDED +
    +INPUT_METHOD_SERVICE +
    +inputArea +
    +inputExtractEditText +
    +inputMethod +
    +inputType +
    +INSTALL_FAILED_CONFLICTING_PROVIDER +
    +INSTALL_NON_MARKET_APPS +
    +INTENT_ACTION_MEDIA_SEARCH +
    +INTENT_ACTION_STILL_IMAGE_CAMERA +
    +INTENT_ACTION_VIDEO_CAMERA +
    +INTERVAL_DAY +
    +INTERVAL_FIFTEEN_MINUTES +
    +INTERVAL_HALF_DAY +
    +INTERVAL_HALF_HOUR +
    +INTERVAL_HOUR +
    +isDefault +
    +isModifier +
    +isRepeatable +
    +isScrollContainer +
    +isSticky +
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +P +R +S +T +U +V +W + TOP +

    +KEY_LOCATION_CHANGED +
    +KEY_PROVIDER_ENABLED +
    +KEY_STATUS_CHANGED +
    +keyBackground +
    +keyboardMode +
    +keyboardView +
    +KEYCODE_MEDIA_FAST_FORWARD +
    +KEYCODE_MEDIA_NEXT +
    +KEYCODE_MEDIA_PLAY_PAUSE +
    +KEYCODE_MEDIA_PREVIOUS +
    +KEYCODE_MEDIA_REWIND +
    +KEYCODE_MEDIA_STOP +
    +KEYCODE_MUTE +
    +keyEdgeFlags +
    +keyHeight +
    +keyIcon +
    +keyLabel +
    +keyOutputText +
    +keyPreviewHeight +
    +keyPreviewLayout +
    +keyPreviewOffset +
    +keyTextColor +
    +keyTextSize +
    +keyWidth +
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +P +R +S +T +U +V +W + TOP +

    +labelTextSize +
    +LIGHT_NO_MOON +
    +LOCATION_PROVIDERS_ALLOWED +
    +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    +LOGGING_ID +
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +P +R +S +T +U +V +W + TOP +

    +MAX_KEYCODE +
    +MEDIA_CHECKING +
    +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    +MEDIA_INFO_BAD_INTERLEAVING +
    +MEDIA_INFO_NOT_SEEKABLE +
    +MEDIA_INFO_UNKNOWN +
    +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    +MEDIA_NOFS +
    +MEDIA_RECORDER_ERROR_UNKNOWN +
    +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    +MEDIA_RECORDER_INFO_UNKNOWN +
    +MODE_APPEND +
    +MOUNT_FORMAT_FILESYSTEMS +
    +mVerticalAlignment +
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +P +R +S +T +U +V +W + TOP +

    +NETWORK_PREFERENCE +
    +noHistory +
    +NUM_STREAMS +
    +NUMBER_OF_SONGS_FOR_ARTIST +
    +numeric +
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +R +S +T +U +V +W + TOP +

    +PARENTAL_CONTROL_ENABLED +
    +PARENTAL_CONTROL_LAST_UPDATE +
    +PARENTAL_CONTROL_REDIRECT_URL +
    +password +
    +paste +
    +phoneNumber +
    +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + in  +android.provider.Contacts.PeopleColumns +
    +popupCharacters +
    +popupKeyboard +
    +popupLayout +
    +privateImeOptions +
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +S +T +U +V +W + TOP +

    +RAW_AMR +
    +RAW_DATA_INDEX +
    +RAW_DATA_X +
    +RAW_DATA_Y +
    +RAW_DATA_Z +
    +reqFiveWayNav +
    +reqHardKeyboard +
    +reqKeyboardType +
    +reqNavigation +
    +reqTouchScreen +
    +ROUTE_BLUETOOTH +
    +ROUTE_BLUETOOTH_A2DP +
    +ROUTE_BLUETOOTH_SCO +
    +rowEdgeFlags +
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +T +U +V +W + TOP +

    +SCREEN_BRIGHTNESS_CHANGED +
    +SCREEN_ORIENTATION_CHANGED +
    +screenBrightness +
    +screenOrientation +
    +searchButtonText +
    +SECONDARY_EMAIL +
    +SECONDARY_EMAIL_TYPE +
    +SECONDARY_PHONE +
    +SECONDARY_PHONE_TYPE +
    +selectAll +
    +SENSOR_ACCELEROMETER +
    +SENSOR_ALL +
    +SENSOR_LIGHT +
    +SENSOR_MAGNETIC_FIELD +
    +SENSOR_MAX +
    +SENSOR_MIN +
    +SENSOR_ORIENTATION +
    +SENSOR_ORIENTATION_RAW +
    +SENSOR_PROXIMITY +
    +SENSOR_TEMPERATURE +
    +SENSOR_TRICORDER +
    +SETTINGS_CLASSNAME +
    +settingsActivity +
    +sharedUserId +
    +sharedUserLabel
    + in  +android.R.attr +
    + in  +android.content.pm.PackageInfo +
    +SHOW_OR_CREATE_CONTACT +
    +singleLine +
    +smoothScrollbar +
    +SOFT_INPUT_ADJUST_PAN +
    +SOFT_INPUT_ADJUST_RESIZE +
    +SOFT_INPUT_ADJUST_UNSPECIFIED +
    +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    +SOFT_INPUT_MASK_ADJUST +
    +SOFT_INPUT_MASK_STATE +
    +SOFT_INPUT_MODE_CHANGED +
    +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    +SOFT_INPUT_STATE_HIDDEN +
    +SOFT_INPUT_STATE_UNCHANGED +
    +SOFT_INPUT_STATE_UNSPECIFIED +
    +SOFT_INPUT_STATE_VISIBLE +
    +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + in  +android.view.WindowManager.LayoutParams +
    +SPAN_COMPOSING +
    +SPAN_INTERMEDIATE +
    +SPAN_POINT_MARK_MASK +
    +startSelectingText +
    +state_long_pressable +
    +stopSelectingText +
    +STREAM_NOTIFICATION +
    +STRETCH_SPACING_UNIFORM +
    +switchInputMethod +
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +U +V +W + TOP +

    +TERTIARY_EMAIL +
    +TERTIARY_EMAIL_TYPE +
    +TERTIARY_PHONE +
    +TERTIARY_PHONE_TYPE +
    +Theme_InputMethod +
    +Theme_Light_Panel +
    +Theme_NoDisplay +
    +Theme_Panel +
    +thickness +
    +title_bar_tall +
    +topOffset +
    +TYPE_APPLICATION_ATTACHED_DIALOG +
    +TYPE_INPUT_METHOD +
    +TYPE_INPUT_METHOD_DIALOG +
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +V +W + TOP +

    +UNKNOWN_LENGTH +
    +UPDATE_DEVICE_STATS +
    +updatePeriodMillis +
    +USB_MASS_STORAGE_ENABLED +
    +USE_GOOGLE_MAIL +
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +W + TOP +

    +verticalCorrection +
    +verticalGap +
    +VideoView_error_text_invalid_progressive_playback +
    +voiceLanguage +
    +voiceLanguageModel +
    +voiceMaxResults +
    +voicePromptText +
    +voiceSearchMode +
    +VOLUME_NOTIFICATION +
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V + TOP +

    +Widget_KeyboardView +
    +WIFI_MAX_DHCP_RETRY_COUNT +
    +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    +WIFI_MODE_FULL +
    +WIFI_MODE_SCAN_ONLY +
    +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    +WIFI_NUM_OPEN_NETWORKS_KEPT +
    +WIFI_ON +
    +WIFI_SLEEP_POLICY +
    +WIFI_SLEEP_POLICY_DEFAULT +
    +WIFI_SLEEP_POLICY_NEVER +
    +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    +WIFI_WATCHDOG_AP_COUNT +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    +WIFI_WATCHDOG_MAX_AP_CHECKS +
    +WIFI_WATCHDOG_ON +
    +WIFI_WATCHDOG_PING_COUNT +
    +WIFI_WATCHDOG_PING_DELAY_MS +
    +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    +windowDisablePreview +
    +windowNoDisplay +
    +windowSoftInputMode +
    +WRITE_SECURE_SETTINGS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_changes.html b/docs/html/sdk/api_diff/3/changes/fields_index_changes.html new file mode 100644 index 000000000000..3f5dd5a9b775 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_changes.html @@ -0,0 +1,471 @@ + + + + + + + + + +Field Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +ADB_ENABLED +
    +ANDROID_ID +
    +autoText +
    + +
    B  +A +C +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +BLUETOOTH_ON +
    +BUTTON1 +
    +BUTTON2 +
    +BUTTON3 +
    + +
    C  +A +B +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +capitalize +
    + +
    D  +A +B +C +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +DATA_ROAMING +
    +DATA_X +
    +DATA_Y +
    +DATA_Z +
    +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + in  +android.provider.MediaStore.Video +
    +DEVICE_PROVISIONED +
    + +
    E  +A +B +C +D +H +I +L +M +N +P +R +S +U +W + TOP +

    +editable +
    +enabled +
    + +
    H  +A +B +C +D +E +I +L +M +N +P +R +S +U +W + TOP +

    +HTTP_PROXY +
    + +
    I  +A +B +C +D +E +H +L +M +N +P +R +S +U +W + TOP +

    +inputMethod +
    +INSTALL_NON_MARKET_APPS +
    + +
    L  +A +B +C +D +E +H +I +M +N +P +R +S +U +W + TOP +

    +LIGHT_NO_MOON +
    +LOCATION_PROVIDERS_ALLOWED +
    +LOGGING_ID +
    + +
    M  +A +B +C +D +E +H +I +L +N +P +R +S +U +W + TOP +

    +MAX_KEYCODE +
    + +
    N  +A +B +C +D +E +H +I +L +M +P +R +S +U +W + TOP +

    +NETWORK_PREFERENCE +
    +NUM_STREAMS +
    +numeric +
    + +
    P  +A +B +C +D +E +H +I +L +M +N +R +S +U +W + TOP +

    +PARENTAL_CONTROL_ENABLED +
    +PARENTAL_CONTROL_LAST_UPDATE +
    +PARENTAL_CONTROL_REDIRECT_URL +
    +password +
    +phoneNumber +
    + +
    R  +A +B +C +D +E +H +I +L +M +N +P +S +U +W + TOP +

    +RAW_DATA_INDEX +
    +RAW_DATA_X +
    +RAW_DATA_Y +
    +RAW_DATA_Z +
    +ROUTE_BLUETOOTH +
    + +
    S  +A +B +C +D +E +H +I +L +M +N +P +R +U +W + TOP +

    +searchButtonText +
    +SENSOR_ACCELEROMETER +
    +SENSOR_ALL +
    +SENSOR_LIGHT +
    +SENSOR_MAGNETIC_FIELD +
    +SENSOR_MAX +
    +SENSOR_MIN +
    +SENSOR_ORIENTATION +
    +SENSOR_ORIENTATION_RAW +
    +SENSOR_PROXIMITY +
    +SENSOR_TEMPERATURE +
    +SENSOR_TRICORDER +
    +SETTINGS_CLASSNAME +
    +singleLine +
    + +
    U  +A +B +C +D +E +H +I +L +M +N +P +R +S +W + TOP +

    +USB_MASS_STORAGE_ENABLED +
    +USE_GOOGLE_MAIL +
    + +
    W  +A +B +C +D +E +H +I +L +M +N +P +R +S +U + TOP +

    +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    +WIFI_NUM_OPEN_NETWORKS_KEPT +
    +WIFI_ON +
    +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    +WIFI_WATCHDOG_AP_COUNT +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    +WIFI_WATCHDOG_MAX_AP_CHECKS +
    +WIFI_WATCHDOG_ON +
    +WIFI_WATCHDOG_PING_COUNT +
    +WIFI_WATCHDOG_PING_DELAY_MS +
    +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_removals.html b/docs/html/sdk/api_diff/3/changes/fields_index_removals.html new file mode 100644 index 000000000000..58ad6557e1eb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_removals.html @@ -0,0 +1,68 @@ + + + + + + + + + +Field Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    C  + TOP +

    +CATEGORY_GADGET +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html b/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html new file mode 100644 index 000000000000..f7c9d8f64068 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html @@ -0,0 +1,126 @@ + + + + + + + + + +java.lang.Character.UnicodeBlock + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.Character.UnicodeBlock +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + UnicodeBlock forName(String) + +Change from non-final to final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.Class.html b/docs/html/sdk/api_diff/3/changes/java.lang.Class.html new file mode 100644 index 000000000000..fa0b05639952 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.Class.html @@ -0,0 +1,166 @@ + + + + + + + + + +java.lang.Class + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.Class +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + Class[] getClasses() + +Change in return type from Class<?> to Class[].
    +
     
    + + Constructor[] getConstructors() + +Change in return type from Constructor<T> to Constructor[].
    +
     
    + + Class[] getDeclaredClasses() + +Change in return type from Class<?> to Class[].
    +
     
    + + Constructor[] getDeclaredConstructors() + +Change in return type from Constructor<T> to Constructor[].
    +
     
    + + Class[] getInterfaces() + +Change in return type from Class<?> to Class[].
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.String.html b/docs/html/sdk/api_diff/3/changes/java.lang.String.html new file mode 100644 index 000000000000..5c41b8cc893e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.String.html @@ -0,0 +1,161 @@ + + + + + + + + + +java.lang.String + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.String +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Constructors +
    + + String() + +  
    + + String(byte[]) + +  
    + + String(byte[], int) + +  
    + + String(byte[], int, int) + +  
    + + String(byte[], int, int, int) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html b/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html new file mode 100644 index 000000000000..f593c0ee8e73 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html @@ -0,0 +1,126 @@ + + + + + + + + + +java.lang.reflect.Proxy + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.reflect.Proxy +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Class<?> getProxyClass(ClassLoader, Class<?>) + +Change in signature from (ClassLoader, ) to (ClassLoader, Class<?>).
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.net.Socket.html b/docs/html/sdk/api_diff/3/changes/java.net.Socket.html new file mode 100644 index 000000000000..6027217d619c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.net.Socket.html @@ -0,0 +1,161 @@ + + + + + + + + + +java.net.Socket + + + + + + + + + + +
    +
    +
    +

    +Class java.net.Socket +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Constructors +
    + + Socket() + +  
    + + Socket(String, int) + +  
    + + Socket(String, int, InetAddress, int) + +  
    + + Socket(Proxy) + +  
    + + Socket(SocketImpl) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.Date.html b/docs/html/sdk/api_diff/3/changes/java.util.Date.html new file mode 100644 index 000000000000..6a8dd2685635 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.Date.html @@ -0,0 +1,134 @@ + + + + + + + + + +java.util.Date + + + + + + + + + + +
    +
    +
    +

    +Class java.util.Date +

    + +

    + + + + + + + + + + + + + + +
    Changed Constructors +
    + + Date() + +  
    + + Date(int, int, int, int, int, int) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html new file mode 100644 index 000000000000..75b4cbc4a8f8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html @@ -0,0 +1,130 @@ + + + + + + + + + +java.util.jar.Pack200.Packer + + + + + + + + + + +
    +
    +
    +

    +Interface java.util.jar.Pack200.Packer +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html new file mode 100644 index 000000000000..382fdea8428e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html @@ -0,0 +1,130 @@ + + + + + + + + + +java.util.jar.Pack200.Unpacker + + + + + + + + + + +
    +
    +
    +

    +Interface java.util.jar.Pack200.Unpacker +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html b/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html new file mode 100644 index 000000000000..7f5fd19782c8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.logging.Level + + + + + + + + + + +
    +
    +
    +

    +Class java.util.logging.Level +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Level parse(String) + +Change in exceptions thrown from no exceptions to java.lang.IllegalArgumentException.
    + Change from final to non-final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html b/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html new file mode 100644 index 000000000000..d259077f26d9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +java.util.logging.LogManager + + + + + + + + + + +
    +
    +
    +

    +Class java.util.logging.LogManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + LoggingMXBean getLoggingMXBean() +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_help.html b/docs/html/sdk/api_diff/3/changes/jdiff_help.html new file mode 100644 index 000000000000..21a59f92d526 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_help.html @@ -0,0 +1,135 @@ + + + + + + + + + +JDiff Help + + + + + + + + + + + + + + + + + +
    Generated by
    JDiff
    +
    + +
    +

    JDiff Documentation

    +
    +
    +JDiff is a Javadoc doclet which generates a report of the API differences between two versions of a product. It does not report changes in Javadoc comments, or changes in what a class or method does. +This help page describes the different parts of the output from JDiff. +
    +
    + See the reference page in the source for JDiff for information about how to generate a report like this one. +
    +
    +The indexes shown in the top-left frame help show each type of change in more detail. The index "All Differences" contains all the differences between the APIs, in alphabetical order. +These indexes all use the same format: +
      +
    • Removed packages, classes, constructors, methods and fields are struck through.
    • +
    • Added packages, classes, constructors, methods and fields appear in bold.
    • +
    • Changed packages, classes, constructors, methods and fields appear in normal text.
    • +
    +
    +
    +You can always tell when you are reading a JDiff page, rather than a Javadoc page, by the color of the index bar and the color of the background. +Links which take you to a Javadoc page are always in a typewriter font. +Just like Javadoc, all interface names are in italic, and class names are not italicized. Where there are multiple entries in an index with the same name, the heading for them is also in italics, but is not a link. +
    +
    +

    Javadoc

    +This is a link to the top-level Javadoc page for the new version of the product. +
    +
    +

    Overview

    +The overview is the top-level summary of what was removed, added and changed between versions. +
    +
    +

    Package

    +This is a link to the package containing the current changed class or interface. +
    +
    +

    Class

    +This is highlighted when you are looking at the changed class or interface. +
    +
    +

    Text Changes

    +This is a link to the top-level index of all documentation changes for the current package or class. +If it is not present, then there are no documentation changes for the current package or class. +This link can be removed entirely by not using the -docchanges option. +
    +
    +

    Statistics

    +This is a link to a page which shows statistics about the changes between the two APIs. +This link can be removed entirely by not using the -stats option. +
    +
    +

    Help

    +A link to this Help page for JDiff. +
    +
    +

    Prev/Next

    +These links take you to the previous and next changed package or class. +
    +
    +

    Frames/No Frames

    +These links show and hide the HTML frames. All pages are available with or without frames. +
    +
    +

    Complex Changes

    +There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. +In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html new file mode 100644 index 000000000000..6faea52ee8f0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html @@ -0,0 +1,1284 @@ + + + + + + + + + +API Change Statistics + + + + + + + + + + +
    +
    +
    +

    API Change Statistics

    +

    +The percent change statistic reported for all elements in the "to" API Level specification is defined recursively as follows:

    +
    +Percentage difference = 100 * (added + removed + 2*changed)
    +                        -----------------------------------
    +                        sum of public elements in BOTH APIs
    +
    +

    where added is the number of packages added, removed is the number of packages removed, and changed is the number of packages changed. +This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed. +The definition ensures that if all packages are removed and all new packages are +added, the change will be 100%. Values are rounded here, so a value of 0% indicates a percentage difference of less than 0.5%.

    +

    The overall difference between the two APIs is approximately 4%. +

    +

    Contents

    +
    Changed Packages
    Sorted by percentage difference
    +
    Changed Classes and Interfaces
    Sorted by percentage difference
    +
    Total of Differences
    Listed by number and type
    +
    + +

    Changed Packages, Sorted by Percentage Difference

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Percentage DifferencePackage
    33android.opengl
    27android.media
    24android.text.style
    22android.hardware
    22android.location
    13android.content.res
    12dalvik.system
    9android.telephony
    9android.text.method
    8android.app
    8android.test
    8android.test.suitebuilder
    7android
    7android.text
    6android.provider
    6android.view
    5android.widget
    5android.os
    4android.webkit
    3android.content.pm
    2android.util
    1android.content
    1java.util.jar
    1android.graphics.drawable.shapes
    <1android.net
    <1android.graphics.drawable
    <1java.util.logging
    <1android.test.mock
    <1java.lang.reflect
    <1android.view.animation
    <1android.net.wifi
    <1android.telephony.gsm
    <1java.net
    <1android.database
    <1android.graphics
    <1java.lang
    <1android.database.sqlite
    <1android.preference
    <1java.util
    +
    + +

    Changed Classes and Interfaces, Sorted by Percentage Difference

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Percentage
    Difference
    Class or Interface
    84 +android.test.TouchUtils
    81 +dalvik.system.Zygote
    66 +android.webkit.UrlInterceptHandler
    61 +android.provider.MediaStore
    53 +android.view.GestureDetector
    50 +android.app.LauncherActivity
    50 +android.text.style.AlignmentSpan.Standard
    50 +android.text.style.StrikethroughSpan
    50 +android.text.style.UnderlineSpan
    50 +android.widget.PopupWindow.OnDismissListener
    48 +android.app.AlertDialog
    46 +android.content.DialogInterface
    45 +android.view.ViewConfiguration
    42 +android.text.method.KeyListener
    40 +android.text.Annotation
    40 +android.text.style.BackgroundColorSpan
    40 +android.text.style.ForegroundColorSpan
    40 +android.text.style.SubscriptSpan
    40 +android.text.style.SuperscriptSpan
    40 +android.text.style.URLSpan
    39 +android.media.MediaRecorder
    38 +android.text.style.DynamicDrawableSpan
    36 +android.content.res.AssetFileDescriptor
    36 +android.location.LocationManager
    34 +android.hardware.SensorManager
    33 +android.text.AutoText
    33 +android.text.method.Touch
    33 +android.text.style.AbsoluteSizeSpan
    33 +android.text.style.LeadingMarginSpan.Standard
    33 +android.text.style.RelativeSizeSpan
    33 +android.text.style.ScaleXSpan
    33 +android.text.style.StyleSpan
    33 +android.text.style.TypefaceSpan
    33 +android.widget.RemoteViews.ActionException
    31 +android.widget.RemoteViews
    30 +android.provider.Settings
    28 +android.text.style.QuoteSpan
    27 +android.app.AlarmManager
    26 +android.text.style.ImageSpan
    25 +android.hardware.SensorListener
    25 +android.text.method.MetaKeyKeyListener
    25 +android.text.style.BulletSpan
    25 +android.widget.ResourceCursorAdapter
    23 +android.provider.Contacts.Intents
    21 +android.widget.PopupWindow
    20 +android.R.id
    20 +android.provider.Settings.System
    20 +android.app.ActivityManager
    20 +android.text.method.BaseKeyListener
    20 +android.util.TimeUtils
    20 +android.widget.AutoCompleteTextView
    19 +android.provider.Contacts.Intents.Insert
    17 +android.view.GestureDetector.SimpleOnGestureListener
    16 +android.provider.MediaStore.Video
    16 +android.text.SpanWatcher
    16 +android.text.TextWatcher
    16 +android.text.style.ClickableSpan
    16 +android.text.style.MaskFilterSpan
    16 +android.text.style.RasterizerSpan
    16 +android.text.style.TextAppearanceSpan
    15 +android.webkit.UrlInterceptRegistry
    14 +android.media.MediaRecorder.OutputFormat
    14 +android.net.NetworkInfo
    14 +android.test.suitebuilder.TestMethod
    14 +android.text.method.QwertyKeyListener
    14 +android.widget.AbsSeekBar
    12 +android.view.WindowManager.LayoutParams
    12 +android.test.ActivityInstrumentationTestCase
    12 +android.test.InstrumentationTestCase
    12 +android.widget.AbsoluteLayout
    12 +java.util.logging.LogManager
    11 +android.view.Gravity
    11 +android.widget.CursorAdapter
    11 +android.widget.TextView
    11 +android.text.method.DateKeyListener
    11 +android.text.method.DateTimeKeyListener
    11 +android.text.method.DialerKeyListener
    11 +android.text.method.TimeKeyListener
    11 +android.webkit.WebHistoryItem
    11 +java.util.jar.Pack200.Unpacker
    10 +android.media.MediaPlayer
    10 +android.provider.MediaStore.Video.VideoColumns
    10 +android.test.ProviderTestCase
    10 +android.test.suitebuilder.TestSuiteBuilder
    10 +android.widget.Chronometer
    10 +java.net.Socket
    9 +android.graphics.drawable.TransitionDrawable
    9 +android.text.method.MultiTapKeyListener
    8 +android.media.AudioManager
    8 +android.view.ViewTreeObserver
    8 +java.lang.reflect.Proxy
    8 +android.content.pm.PackageInfo
    7 +android.text.Spanned
    7 +android.text.method.DigitsKeyListener
    7 +android.hardware.Camera
    7 +android.R.attr
    7 +android.telephony.TelephonyManager
    7 +android.media.SoundPool
    7 +android.os.Environment
    6 +android.view.KeyEvent
    6 +java.lang.String
    6 +android.graphics.drawable.shapes.Shape
    6 +android.text.method.MovementMethod
    6 +android.view.OrientationListener
    6 +dalvik.system.DexFile
    6 +java.util.Date
    6 +android.text.TextUtils
    6 +android.os.ParcelFileDescriptor
    5 +android.webkit.WebView
    5 +android.graphics.drawable.RotateDrawable
    5 +android.graphics.drawable.ScaleDrawable
    5 +android.provider.MediaStore.Audio.AlbumColumns
    5 +android.provider.MediaStore.Audio.Media
    5 +android.webkit.WebSettings
    5 +android.content.res.Resources
    5 +android.graphics.RectF
    5 +android.os.Looper
    5 +android.provider.Contacts.PeopleColumns
    5 +android.text.method.ArrowKeyMovementMethod
    5 +android.text.method.TextKeyListener
    5 +android.view.ViewDebug
    5 +android.widget.Scroller
    5 +android.widget.AbsListView
    5 +android.net.ConnectivityManager
    5 +android.view.KeyCharacterMap
    4 +android.content.res.Configuration
    4 +android.widget.ProgressBar
    4 +android.widget.SimpleCursorAdapter
    4 +android.R.string
    4 +java.lang.Class
    4 +java.util.jar.Pack200.Packer
    4 +android.provider.MediaStore.Images.Media
    3 +android.os.Build
    3 +android.os.IBinder
    3 +android.text.method.ScrollingMovementMethod
    3 +android.util.SparseIntArray
    3 +android.content.Intent
    3 +android.content.ContentResolver
    3 +android.net.wifi.WifiManager
    3 +android.content.BroadcastReceiver
    3 +android.os.Handler
    3 +android.view.Menu
    3 +android.view.animation.Animation
    3 +android.view.animation.Transformation
    2 +android.webkit.URLUtil
    2 +java.util.logging.Level
    2 +android.R.style
    2 +android.os.Binder
    2 +android.view.ViewParent
    2 +android.widget.GridView
    2 +android.test.mock.MockPackageManager
    2 +android.view.View
    2 +android.widget.ListView
    2 +android.app.PendingIntent
    2 +android.content.pm.PackageManager
    2 +android.telephony.PhoneNumberUtils
    2 +android.content.ContentProvider
    2 +android.Manifest.permission
    2 +android.widget.ArrayAdapter
    2 +android.content.pm.ActivityInfo
    2 +dalvik.system.VMDebug
    1 +android.database.sqlite.SQLiteDatabase
    1 +android.content.res.TypedArray
    1 +android.app.Activity
    1 +android.preference.DialogPreference
    1 +android.view.Window
    1 +android.graphics.Bitmap
    1 +android.os.Debug
    1 +android.provider.Browser
    1 +android.os.Parcel
    1 +android.database.DatabaseUtils
    1 +android.media.RingtoneManager
    1 +android.graphics.Rect
    1 +android.telephony.gsm.SmsMessage
    1 +android.database.Cursor
    1 +android.database.CursorWrapper
    1 +android.view.MotionEvent
    1 +android.location.Location
    1 +android.graphics.drawable.Drawable
    <1 +android.R.drawable
    <1 +android.app.Instrumentation
    <1 +android.graphics.Canvas
    <1 +android.content.Context
    <1 +android.view.ViewGroup
    <1 +java.lang.Character.UnicodeBlock
    <1 +android.text.style.UpdateLayout
    +
    + +

    Total of Differences, by Number and Type

    +

    +The table below lists the numbers of program elements (packages, classes, constructors, methods, and fields) that were removed, added or changed. The table includes only the highest-level program elements — that is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Number of Differences
      + RemovalsAdditionsChangesTotal
    Packages063945
    Classes and Interfaces067186253
    Constructors1361552
    Methods038171452
    Fields129668365
    Total27863791167
    +
    + +
    +
    + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html new file mode 100644 index 000000000000..666c9dd3ca8d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html @@ -0,0 +1,64 @@ + + + + + + + + + +Android API Version Differences + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Select a Diffs Index:
    All Differences
    By Package
    By Class
    By Constructor
    By Method
    By Field
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_additions.html b/docs/html/sdk/api_diff/3/changes/methods_index_additions.html new file mode 100644 index 000000000000..1fa2bdb6c706 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_additions.html @@ -0,0 +1,1397 @@ + + + + + + + + + +Method Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +addGpsStatusListener +(Listener)
    +addOnScrollChangedListener +(OnScrollChangedListener)
    +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    +adjustMetaAfterKeypress +(long)
    +applyDisplay +(int, Rect, Rect)
    + +
    B  +A +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +beginBatchEdit +()
    +bringPointIntoView +(int)
    + +
    C  +A +B +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    +callActivityOnUserLeaving +(Activity)
    +changeAction +(KeyEvent, int)
    +changeCursorAndColumns +(Cursor, String[], int[])
    +changeFlags +(KeyEvent, int)
    +changeTimeRepeat +(KeyEvent, long, int)
    +checkInputConnectionProxy +(View)
    +clearComposingText +()
    +clearListSelection +()
    +clearMatches +()
    +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    +clearTestProviderEnabled +(String)
    +clearTestProviderLocation +(String)
    +clearTestProviderStatus +(String)
    +close +()
    +closeContextMenu +()
    +computeDurationHint +()
    +copyPixelsFromBuffer +(Buffer)
    +createInputStream +()
    +createOutputStream +()
    +createWifiLock +(int, String)
    + +
    D  +A +B +C +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    +  type  +() in android.graphics.RectF +
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +deviceHasKey +(int)
    +deviceHasKeys +(int[])
    +didTouchFocusSelect +()
    +dispatchKeyEventPreIme +(KeyEvent)
    +drag +(InstrumentationTestCase, float, float, float, float, int)
    +dragQuarterScreenDown +(InstrumentationTestCase, Activity)
    +dragQuarterScreenUp +(InstrumentationTestCase, Activity)
    +dragViewBy +(InstrumentationTestCase, View, int, int, int)
    +dragViewTo +(InstrumentationTestCase, View, int, int, int)
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX +(InstrumentationTestCase, View, int, int)
    +dragViewToY +(InstrumentationTestCase, View, int, int)
    +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    +dump
    +  type  +(Printer, String) in android.location.Location +
    +  type  +(FileDescriptor, String[]) in android.os.Binder +
    +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    +dumpCapturedView +(String, Object)
    +dumpHprofData
    +  type  +(String) in android.os.Debug +
    +  type  +(String) in dalvik.system.VMDebug +
    +dumpSpans +(CharSequence, Printer, String)
    + +
    E  +A +B +C +D +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +endBatchEdit +()
    +extractText +(ExtractedTextRequest, ExtractedText)
    + +
    F  +A +B +C +D +E +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +findAll +(String)
    +findNext +(boolean)
    +forkAndSpecialize +(int, int, int[], int, int[][])
    +forkSystemServer +(int, int, int[], int, int[][])
    +formatJapaneseNumber +(Editable)
    + +
    G  +A +B +C +D +E +F +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +get +(Context)
    +getAllowFileAccess +()
    +getBackgroundDataSetting +()
    +getBoolean +(int)
    +getBuiltInZoomControls +()
    +getButton +(int)
    +getCapsMode +(CharSequence, int, int)
    +getCharacters +()
    +getDeclaredLength +()
    +getDefaultSensor +(int)
    +getDeviceConfigurationInfo +()
    +getDialog +()
    +getDoubleTapTimeout +()
    +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    +  type  +() in android.graphics.drawable.ScaleDrawable +
    +getDropDownAnchor +()
    +getDropDownWidth +()
    +getEditableText +()
    +getFraction +(int, int, int)
    +getGpsStatus +(GpsStatus)
    +getImeActionId +()
    +getImeActionLabel +()
    +getImeOptions +()
    +getInclination +(float[])
    +getInitialScrollX +(TextView, Spannable)
    +getInitialScrollY +(TextView, Spannable)
    +getInputExtras +(boolean)
    +getInputMethodMode +()
    +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    +  type  +() in android.text.method.DateTimeKeyListener +
    +  type  +() in android.text.method.DialerKeyListener +
    +  type  +() in android.text.method.DigitsKeyListener +
    +  type  +() in android.text.method.KeyListener +
    +  type  +() in android.text.method.MultiTapKeyListener +
    +  type  +() in android.text.method.QwertyKeyListener +
    +  type  +() in android.text.method.TextKeyListener +
    +  type  +() in android.text.method.TimeKeyListener +
    +  type  +() in android.widget.TextView +
    +getItem +(int)
    +getKeyProgressIncrement +()
    +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    +  type  +(String) in android.test.mock.MockPackageManager +
    +getLayoutDimension +(int, int)
    +getListSelection +()
    +getListView +()
    +getLoggingMXBean +()
    +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    +getMaxAvailableHeight +(View, int)
    +getMaxKeyCode +()
    +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +getNeighboringCellInfo +()
    +getOnChronometerTickListener +()
    +getOnItemClickListener +()
    +getOnItemSelectedListener +()
    +getOrientation +(float[], float[])
    +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    +  type  +() in android.webkit.WebView +
    +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    +getPrivateImeOptions +()
    +getRotationMatrix +(float[], float[], float[], float[])
    +getRunningAppProcesses +()
    +getScaledDoubleTapSlop +()
    +getScaledEdgeSlop +()
    +getScaledFadingEdgeLength +()
    +getScaledMaximumDrawingCacheSize +()
    +getScaledMinimumFlingVelocity +()
    +getScaledScrollBarSize +()
    +getScaledTouchSlop +()
    +getScaledWindowTouchSlop +()
    +getSensorList +(int)
    +getSize +(View)
    +getSpanTypeId
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +getStartX +()
    +getStartY +()
    +getStatSize +()
    +getSubtype +()
    +getSubtypeName +()
    +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +getTextFilter +()
    +getThread +()
    +getTimeZoneDatabaseVersion +()
    +getUserAgentString +()
    +getVerticalAlignment +()
    +getWindowVisibleDisplayFrame +(Rect)
    + +
    H  +A +B +C +D +E +F +G +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +handleKeyDown +(long, int, KeyEvent)
    +handleKeyUp +(long, int, KeyEvent)
    +hasSoftInputMode +()
    +hasWindowFocus +()
    + +
    I  +A +B +C +D +E +F +G +H +L +M +O +P +R +S +T +U +W +Y + TOP +

    +inferStreamType +()
    +intentForPosition +(int)
    +isAboveAnchor +()
    +isBluetoothA2dpOn +()
    +isClippingEnabled +()
    +isDebuggingEnabled +()
    +isFastScrollEnabled +()
    +isFillEnabled +()
    +isHapticFeedbackEnabled +()
    +isInEditMode +()
    +isInputMethodTarget +()
    +isLooping +()
    +isOutsideTouchable +()
    +isPerformingCompletion +()
    +isRoaming +()
    +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +isSelectingMetaTracker +(CharSequence, Object)
    +isSmoothScrollbarEnabled +()
    +isTouchable +()
    + +
    L  +A +B +C +D +E +F +G +H +I +M +O +P +R +S +T +U +W +Y + TOP +

    +launchActivityWithIntent +(String, Class<T>, Intent)
    +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    +loadDex +(String, String, int)
    +longClickView +(InstrumentationTestCase, View)
    + +
    M  +A +B +C +D +E +F +G +H +I +L +O +P +R +S +T +U +W +Y + TOP +

    +makeListItems +()
    +mayUseInputMethod +(int)
    +moveCursorToVisibleOffset +()
    +mutate +()
    + +
    O  +A +B +C +D +E +F +G +H +I +L +M +P +R +S +T +U +W +Y + TOP +

    +onBeginBatchEdit +()
    +onCheckIsTextEditor +()
    +onCommitCompletion +(CompletionInfo)
    +onContentChanged +()
    +onCreateInputConnection +(EditorInfo)
    +onDoubleTap +(MotionEvent)
    +onDoubleTapEvent +(MotionEvent)
    +onEditorAction +(int)
    +onEndBatchEdit +()
    +onFinishTemporaryDetach +()
    +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    +onKeyPreIme +(int, KeyEvent)
    +onPrivateIMECommand +(String, Bundle)
    +onSelectionChanged +(int, int)
    +onSingleTapConfirmed +(MotionEvent)
    +onStartTemporaryDetach +()
    +onTextContextMenuItem +(int)
    +onUserInteraction +()
    +onUserLeaveHint +()
    +openAssetFile +(Uri, String)
    +openAssetFileDescriptor +(Uri, String)
    +openOutputStream +(Uri, String)
    +openRawResource +(int, TypedValue)
    + +
    P  +A +B +C +D +E +F +G +H +I +L +M +O +R +S +T +U +W +Y + TOP +

    +parseBundleExtra +(String, AttributeSet, Bundle)
    +parseBundleExtras +(XmlResourceParser, Bundle)
    +peekService +(Context, Intent)
    +performHapticFeedback
    +  type  +(int) in android.view.View +
    +  type  +(int, int) in android.view.View +
    +playSoundEffect +(int, float)
    +putLong +(ContentResolver, String, long)
    + +
    R  +A +B +C +D +E +F +G +H +I +L +M +O +P +S +T +U +W +Y + TOP +

    +readFromParcel +(Parcel)
    +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    +remapCoordinateSystem +(float[], int, int, float[])
    +removeAt +(int)
    +removeGpsStatusListener +(Listener)
    +removeOnScrollChangedListener +(OnScrollChangedListener)
    +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +removeTestProvider +(String)
    +removeUpdates +(PendingIntent)
    +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    +  type  +(Bundle) in android.content.Intent +
    +requestChildRectangleOnScreen +(View, Rect, boolean)
    +requestLocationUpdates +(String, long, float, PendingIntent)
    +resetLockedMeta +(long)
    +restartPackage +(String)
    +restorePicture +(Bundle, File)
    +runTestOnUiThread +(Runnable)
    + +
    S  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +T +U +W +Y + TOP +

    +savePicture +(Bundle, File)
    +scrollToBottom +(InstrumentationTestCase, Activity, ViewGroup)
    +scrollToTop +(InstrumentationTestCase, Activity, ViewGroup)
    +sendExtraCommand +(String, String, Bundle)
    +setAllowFileAccess +(boolean)
    +setBitmap +(int, String, Bitmap)
    +setBluetoothA2dpOn +(boolean)
    +setBoolean +(int, String, boolean)
    +setBuiltInZoomControls +(boolean)
    +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setByte +(int, String, byte)
    +setCamera +(Camera)
    +setChar +(int, String, char)
    +setCharSequence +(int, String, CharSequence)
    +setClippingEnabled +(boolean)
    +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    +setDouble +(int, String, double)
    +setDropDownAnchor +(int)
    +setDropDownWidth +(int)
    +setExtractedText +(ExtractedText)
    +setFastScrollEnabled +(boolean)
    +setFillEnabled +(boolean)
    +setFloat +(int, String, float)
    +setFooterDividersEnabled +(boolean)
    +setHapticFeedbackEnabled +(boolean)
    +setHeaderDividersEnabled +(boolean)
    +setImageViewBitmap +(int, Bitmap)
    +setImeActionLabel +(CharSequence, int)
    +setImeOptions +(int)
    +setInexactRepeating +(int, long, long, PendingIntent)
    +setInputExtras +(int)
    +setInputMethodMode +(int)
    +setInputType +(int)
    +setInt +(int, String, int)
    +setKeyProgressIncrement +(int)
    +setListSelection +(int)
    +setLong +(int, String, long)
    +setMaxDuration +(int)
    +setMaxFileSize +(long)
    +setNetworkAvailable +(boolean)
    +setOnChronometerTickListener +(OnChronometerTickListener)
    +setOnClickPendingIntent +(int, PendingIntent)
    +setOnDoubleTapListener +(OnDoubleTapListener)
    +setOnEditorActionListener +(OnEditorActionListener)
    +setOnErrorListener +(OnErrorListener)
    +setOneShotPreviewCallback +(PreviewCallback)
    +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    +  type  +(OnInfoListener) in android.media.MediaRecorder +
    +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    +setOutputFile +(FileDescriptor)
    +setOutsideTouchable +(boolean)
    +setPrivateImeOptions +(String)
    +setRawInputType +(int)
    +setScrollContainer +(boolean)
    +setShort +(int, String, short)
    +setSmoothScrollbarEnabled +(boolean)
    +setSoftInputMode +(int)
    +setStaticTransformationsEnabled +(boolean)
    +setString +(int, String, String)
    +setTestProviderEnabled +(String, boolean)
    +setTestProviderLocation +(String, Location)
    +setTestProviderStatus +(String, int, Bundle, long)
    +setTextColor +(int, int)
    +setTouchable +(boolean)
    +setTouchInterceptor +(OnTouchListener)
    +setUri +(int, String, Uri)
    +setUserAgentString +(String)
    +setVideoEncoder +(int)
    +setVideoFrameRate +(int)
    +setVideoSize +(int, int)
    +setVideoSource +(int)
    +setView +(View, int, int, int, int)
    +setViewResource +(int)
    +setVisible +(boolean)
    +setWindowAnimations +(int)
    +setWindowLayoutMode +(int, int)
    +sort +(Comparator<? super T>)
    + +
    T  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +U +W +Y + TOP +

    +toShortString
    +  type  +() in android.graphics.Rect +
    +  type  +() in android.view.animation.Transformation +
    + +
    U  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    +update
    +  type  +() in android.widget.PopupWindow +
    +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +
    W  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +Y + TOP +

    +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    +  type  +(Parcel, int) in android.graphics.RectF +
    +  type  +(Parcel, int) in android.text.Annotation +
    +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.BulletSpan +
    +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    +  type  +(Parcel, int) in android.text.style.StyleSpan +
    +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    +  type  +(Parcel, int) in android.text.style.URLSpan +
    +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + +
    Y  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W + TOP +

    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_all.html b/docs/html/sdk/api_diff/3/changes/methods_index_all.html new file mode 100644 index 000000000000..22492a352290 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_all.html @@ -0,0 +1,1600 @@ + + + + + + + + + +Method Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +addGpsStatusListener +(Listener)
    +addOnScrollChangedListener +(OnScrollChangedListener)
    +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +addRequirements +(Predicate<TestMethod>)
    +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    +adjustMetaAfterKeypress +(long)
    +appendEscapedSQLString +(StringBuilder, String)
    +applyDisplay +(int, Rect, Rect)
    + +
    B  +A +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +beginBatchEdit +()
    +bringPointIntoView +(int)
    + +
    C  +A +B +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    +callActivityOnUserLeaving +(Activity)
    +changeAction +(KeyEvent, int)
    +changeCursorAndColumns +(Cursor, String[], int[])
    +changeDebugPort +(int)
    +changeFlags +(KeyEvent, int)
    +changeTimeRepeat +(KeyEvent, long, int)
    +checkInputConnectionProxy +(View)
    +clearComposingText +()
    +clearListSelection +()
    +clearMatches +()
    +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    +clearTestProviderEnabled +(String)
    +clearTestProviderLocation +(String)
    +clearTestProviderStatus +(String)
    +clone +()
    +close +()
    +closeContextMenu +()
    +computeDurationHint +()
    +copyPixelsFromBuffer +(Buffer)
    +createInputStream +()
    +createOutputStream +()
    +createWifiLock +(int, String)
    + +
    D  +A +B +C +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    +  type  +() in android.graphics.RectF +
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +deviceHasKey +(int)
    +deviceHasKeys +(int[])
    +didTouchFocusSelect +()
    +dispatchKeyEventPreIme +(KeyEvent)
    +drag
    +  type  +(InstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    +dragQuarterScreenDown
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    +dragQuarterScreenUp
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    +dragViewBy
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +dragViewTo
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +dragViewToY
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    +dump
    +  type  +(Printer, String) in android.location.Location +
    +  type  +(FileDescriptor, String[]) in android.os.Binder +
    +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    +dumpCapturedView +(String, Object)
    +dumpHprofData
    +  type  +(String) in android.os.Debug +
    +  type  +(String) in dalvik.system.VMDebug +
    +dumpSpans +(CharSequence, Printer, String)
    + +
    E  +A +B +C +D +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +endBatchEdit +()
    +extractText +(ExtractedTextRequest, ExtractedText)
    + +
    F  +A +B +C +D +E +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +findAll +(String)
    +findNext +(boolean)
    +forkAndSpecialize
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    +forkSystemServer
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    +formatJapaneseNumber +(Editable)
    +forName +(String)
    + +
    G  +A +B +C +D +E +F +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +get +(Context)
    +getAllowFileAccess +()
    +getBackgroundDataSetting +()
    +getBoolean +(int)
    +getBuiltInZoomControls +()
    +getButton +(int)
    +getCapsMode +(CharSequence, int, int)
    +getCharacters +()
    +getClasses +()
    +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    +  type  +(String) in android.database.CursorWrapper +
    +getConstructors +()
    +getCount +()
    +getDeclaredClasses +()
    +getDeclaredConstructors +()
    +getDeclaredLength +()
    +getDefaultSensor +(int)
    +getDeviceConfigurationInfo +()
    +getDialog +()
    +getDoubleTapTimeout +()
    +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    +  type  +() in android.graphics.drawable.ScaleDrawable +
    +getDropDownAnchor +()
    +getDropDownWidth +()
    +getEdgeSlop +()
    +getEditableText +()
    +getFadingEdgeLength +()
    +getFraction +(int, int, int)
    +getGpsStatus +(GpsStatus)
    +getHandler +()
    +getImeActionId +()
    +getImeActionLabel +()
    +getImeOptions +()
    +getInclination +(float[])
    +getInitialScrollX +(TextView, Spannable)
    +getInitialScrollY +(TextView, Spannable)
    +getInputExtras +(boolean)
    +getInputMethodMode +()
    +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    +  type  +() in android.text.method.DateTimeKeyListener +
    +  type  +() in android.text.method.DialerKeyListener +
    +  type  +() in android.text.method.DigitsKeyListener +
    +  type  +() in android.text.method.KeyListener +
    +  type  +() in android.text.method.MultiTapKeyListener +
    +  type  +() in android.text.method.QwertyKeyListener +
    +  type  +() in android.text.method.TextKeyListener +
    +  type  +() in android.text.method.TimeKeyListener +
    +  type  +() in android.widget.TextView +
    +getInterfaces +()
    +getItem
    +  type  +(int) in android.view.Menu +
    +  type  +(int) in android.widget.CursorAdapter +
    +getItemClickListener +()
    +getItemId +(int)
    +getItemSelectedListener +()
    +getKeyProgressIncrement +()
    +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    +  type  +(String) in android.test.mock.MockPackageManager +
    +getLayoutDimension +(int, int)
    +getListSelection +()
    +getListView +()
    +getLoggingMXBean +()
    +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    +getMaxAvailableHeight +(View, int)
    +getMaximumDrawingCacheSize +()
    +getMaxKeyCode +()
    +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +getMinimumFlingVelocity +()
    +getNeighboringCellInfo +()
    +getOnChronometerTickListener +()
    +getOnItemClickListener +()
    +getOnItemSelectedListener +()
    +getOrientation +(float[], float[])
    +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    +  type  +() in android.webkit.WebView +
    +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    +getPrivateImeOptions +()
    +getProxyClass +(ClassLoader, Class<?>)
    +getRotationMatrix +(float[], float[], float[], float[])
    +getRunningAppProcesses +()
    +getScaledDoubleTapSlop +()
    +getScaledEdgeSlop +()
    +getScaledFadingEdgeLength +()
    +getScaledMaximumDrawingCacheSize +()
    +getScaledMinimumFlingVelocity +()
    +getScaledScrollBarSize +()
    +getScaledTouchSlop +()
    +getScaledWindowTouchSlop +()
    +getScrollBarSize +()
    +getSensorList +(int)
    +getSensors +()
    +getSize +(View)
    +getSpanTypeId
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +getStartX +()
    +getStartY +()
    +getStatSize +()
    +getSubtype +()
    +getSubtypeName +()
    +getSurrogate +(String, Map<String, String>)
    +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +getTargetIntent +()
    +getTextFilter +()
    +getThread +()
    +getTimeZoneDatabaseVersion +()
    +getTouchSlop +()
    +getUserAgent +()
    +getUserAgentString +()
    +getVerticalAlignment +()
    +getWindowTouchSlop +()
    +getWindowVisibleDisplayFrame +(Rect)
    +getZoomControls +()
    + +
    H  +A +B +C +D +E +F +G +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +handleKeyDown +(long, int, KeyEvent)
    +handleKeyUp +(long, int, KeyEvent)
    +hasSoftInputMode +()
    +hasWindowFocus +()
    + +
    I  +A +B +C +D +E +F +G +H +L +M +O +P +R +S +T +U +W +Y + TOP +

    +inferStreamType +()
    +intentForPosition +(int)
    +isAboveAnchor +()
    +isBluetoothA2dpOn +()
    +isClippingEnabled +()
    +isCookielessProxyUrl +(String)
    +isDebuggingEnabled +()
    +isFastScrollEnabled +()
    +isFillEnabled +()
    +isHapticFeedbackEnabled +()
    +isInEditMode +()
    +isInputMethodTarget +()
    +isLooping +()
    +isOutsideTouchable +()
    +isPerformingCompletion +()
    +isRoaming +()
    +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +isSelectingMetaTracker +(CharSequence, Object)
    +isSmoothScrollbarEnabled +()
    +isTouchable +()
    + +
    L  +A +B +C +D +E +F +G +H +I +M +O +P +R +S +T +U +W +Y + TOP +

    +launchActivityWithIntent +(String, Class<T>, Intent)
    +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    +loadDex +(String, String, int)
    +longClickView
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +
    M  +A +B +C +D +E +F +G +H +I +L +O +P +R +S +T +U +W +Y + TOP +

    +makeListItems +()
    +mayUseInputMethod +(int)
    +moveCursorToVisibleOffset +()
    +mutate +()
    + +
    O  +A +B +C +D +E +F +G +H +I +L +M +P +R +S +T +U +W +Y + TOP +

    +onBeginBatchEdit +()
    +onCheckIsTextEditor +()
    +onCommitCompletion +(CompletionInfo)
    +onContentChanged +()
    +onCreateInputConnection +(EditorInfo)
    +onDoubleTap +(MotionEvent)
    +onDoubleTapEvent +(MotionEvent)
    +onEditorAction +(int)
    +onEndBatchEdit +()
    +onFinishTemporaryDetach +()
    +onGlobalFocusChanged +(View, View)
    +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    +onKeyPreIme +(int, KeyEvent)
    +onPrivateIMECommand +(String, Bundle)
    +onRestoreInstanceState +(Parcelable)
    +onSaveInstanceState +()
    +onSelectionChanged +(int, int)
    +onSingleTapConfirmed +(MotionEvent)
    +onStartTemporaryDetach +()
    +onTextContextMenuItem +(int)
    +onUserInteraction +()
    +onUserLeaveHint +()
    +openAssetFile +(Uri, String)
    +openAssetFileDescriptor +(Uri, String)
    +openOutputStream +(Uri, String)
    +openRawResource +(int, TypedValue)
    + +
    P  +A +B +C +D +E +F +G +H +I +L +M +O +R +S +T +U +W +Y + TOP +

    +parse +(String)
    +parseBundleExtra +(String, AttributeSet, Bundle)
    +parseBundleExtras +(XmlResourceParser, Bundle)
    +peekService +(Context, Intent)
    +performHapticFeedback
    +  type  +(int) in android.view.View +
    +  type  +(int, int) in android.view.View +
    +playSoundEffect
    +  type  +(int, float) in android.media.AudioManager +
    +  type  +(int) in android.view.View +
    +prepare +()
    +putLong +(ContentResolver, String, long)
    + +
    R  +A +B +C +D +E +F +G +H +I +L +M +O +P +S +T +U +W +Y + TOP +

    +readFromParcel +(Parcel)
    +readHashMap +(ClassLoader)
    +readMap +(Map, ClassLoader)
    +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    +remapCoordinateSystem +(float[], int, int, float[])
    +removeAt +(int)
    +removeGpsStatusListener +(Listener)
    +removeOnScrollChangedListener +(OnScrollChangedListener)
    +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +removeTestProvider +(String)
    +removeUpdates +(PendingIntent)
    +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    +  type  +(Bundle) in android.content.Intent +
    +requestChildRectangleOnScreen +(View, Rect, boolean)
    +requestLocationUpdates +(String, long, float, PendingIntent)
    +resetLockedMeta +(long)
    +restartPackage +(String)
    +restorePicture +(Bundle, File)
    +runTestOnUiThread +(Runnable)
    + +
    S  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +T +U +W +Y + TOP +

    +savePicture +(Bundle, File)
    +scrollToBottom
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    +scrollToTop
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    +sendExtraCommand +(String, String, Bundle)
    +service +(String, Map<String, String>)
    +setAllowFileAccess +(boolean)
    +setBitmap +(int, String, Bitmap)
    +setBluetoothA2dpOn +(boolean)
    +setBoolean +(int, String, boolean)
    +setBuiltInZoomControls +(boolean)
    +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setByte +(int, String, byte)
    +setCamera +(Camera)
    +setChar +(int, String, char)
    +setCharSequence +(int, String, CharSequence)
    +setClippingEnabled +(boolean)
    +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    +setDouble +(int, String, double)
    +setDropDownAnchor +(int)
    +setDropDownWidth +(int)
    +setExtractedText +(ExtractedText)
    +setFastScrollEnabled +(boolean)
    +setFillEnabled +(boolean)
    +setFloat +(int, String, float)
    +setFooterDividersEnabled +(boolean)
    +setHapticFeedbackEnabled +(boolean)
    +setHeaderDividersEnabled +(boolean)
    +setImageViewBitmap +(int, Bitmap)
    +setImeActionLabel +(CharSequence, int)
    +setImeOptions +(int)
    +setInexactRepeating +(int, long, long, PendingIntent)
    +setInputExtras +(int)
    +setInputMethodMode +(int)
    +setInputType +(int)
    +setInt +(int, String, int)
    +setKeyProgressIncrement +(int)
    +setListSelection +(int)
    +setLong +(int, String, long)
    +setMaxDuration +(int)
    +setMaxFileSize +(long)
    +setNetworkAvailable +(boolean)
    +setOnChronometerTickListener +(OnChronometerTickListener)
    +setOnClickPendingIntent +(int, PendingIntent)
    +setOnDoubleTapListener +(OnDoubleTapListener)
    +setOnEditorActionListener +(OnEditorActionListener)
    +setOnErrorListener +(OnErrorListener)
    +setOneShotPreviewCallback +(PreviewCallback)
    +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    +  type  +(OnInfoListener) in android.media.MediaRecorder +
    +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    +setOutputFile +(FileDescriptor)
    +setOutsideTouchable +(boolean)
    +setPreviewDisplay +(SurfaceHolder)
    +setPrivateImeOptions +(String)
    +setRawInputType +(int)
    +setScrollContainer +(boolean)
    +setShort +(int, String, short)
    +setSmoothScrollbarEnabled +(boolean)
    +setSoftInputMode +(int)
    +setStaticTransformationsEnabled +(boolean)
    +setString +(int, String, String)
    +setTestProviderEnabled +(String, boolean)
    +setTestProviderLocation +(String, Location)
    +setTestProviderStatus +(String, int, Bundle, long)
    +setTextColor +(int, int)
    +setTouchable +(boolean)
    +setTouchInterceptor +(OnTouchListener)
    +setUri +(int, String, Uri)
    +setUserAgent +(int)
    +setUserAgentString +(String)
    +setVideoEncoder +(int)
    +setVideoFrameRate +(int)
    +setVideoSize +(int, int)
    +setVideoSource +(int)
    +setView +(View, int, int, int, int)
    +setViewResource +(int)
    +setVisible +(boolean)
    +setWindowAnimations +(int)
    +setWindowLayoutMode +(int, int)
    +sort +(Comparator<? super T>)
    + +
    T  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +U +W +Y + TOP +

    +toShortString
    +  type  +() in android.graphics.Rect +
    +  type  +() in android.view.animation.Transformation +
    + +
    U  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    +  type  +(SensorListener) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +update
    +  type  +() in android.widget.PopupWindow +
    +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +
    W  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +Y + TOP +

    +writeMap +(Map)
    +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    +  type  +(Parcel, int) in android.graphics.RectF +
    +  type  +(Parcel, int) in android.text.Annotation +
    +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.BulletSpan +
    +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    +  type  +(Parcel, int) in android.text.style.StyleSpan +
    +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    +  type  +(Parcel, int) in android.text.style.URLSpan +
    +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + +
    Y  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W + TOP +

    +yieldIfContended +()
    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_changes.html b/docs/html/sdk/api_diff/3/changes/methods_index_changes.html new file mode 100644 index 000000000000..1b1b305b9a44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_changes.html @@ -0,0 +1,466 @@ + + + + + + + + + +Method Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +C +D +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +addRequirements +(Predicate<TestMethod>)
    +appendEscapedSQLString +(StringBuilder, String)
    + +
    C  +A +D +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +changeDebugPort +(int)
    +clone +()
    + +
    D  +A +C +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +drag +(ActivityInstrumentationTestCase, float, float, float, float, int)
    +dragQuarterScreenDown +(ActivityInstrumentationTestCase)
    +dragQuarterScreenUp +(ActivityInstrumentationTestCase)
    +dragViewBy +(ActivityInstrumentationTestCase, View, int, int, int)
    +dragViewTo +(ActivityInstrumentationTestCase, View, int, int, int)
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX +(ActivityInstrumentationTestCase, View, int, int)
    +dragViewToY +(ActivityInstrumentationTestCase, View, int, int)
    + +
    F  +A +C +D +G +I +L +O +P +R +S +U +W +Y + TOP +

    +forkAndSpecialize +(int, int, int[], boolean, int[][])
    +forkSystemServer +(int, int, int[], boolean, int[][])
    +forName +(String)
    + +
    G  +A +C +D +F +I +L +O +P +R +S +U +W +Y + TOP +

    +getClasses +()
    +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    +  type  +(String) in android.database.CursorWrapper +
    +getConstructors +()
    +getCount +()
    +getDeclaredClasses +()
    +getDeclaredConstructors +()
    +getEdgeSlop +()
    +getFadingEdgeLength +()
    +getHandler +()
    +getInterfaces +()
    +getItem +(int)
    +getItemClickListener +()
    +getItemId +(int)
    +getItemSelectedListener +()
    +getMaximumDrawingCacheSize +()
    +getMinimumFlingVelocity +()
    +getProxyClass +(ClassLoader, Class<?>)
    +getScrollBarSize +()
    +getSensors +()
    +getSurrogate +(String, Map<String, String>)
    +getTargetIntent +()
    +getTouchSlop +()
    +getUserAgent +()
    +getWindowTouchSlop +()
    +getZoomControls +()
    + +
    I  +A +C +D +F +G +L +O +P +R +S +U +W +Y + TOP +

    +isCookielessProxyUrl +(String)
    + +
    L  +A +C +D +F +G +I +O +P +R +S +U +W +Y + TOP +

    +longClickView +(ActivityInstrumentationTestCase, View)
    + +
    O  +A +C +D +F +G +I +L +P +R +S +U +W +Y + TOP +

    +onGlobalFocusChanged +(View, View)
    +onRestoreInstanceState +(Parcelable)
    +onSaveInstanceState +()
    + +
    P  +A +C +D +F +G +I +L +O +R +S +U +W +Y + TOP +

    +parse +(String)
    +playSoundEffect +(int)
    +prepare +()
    + +
    R  +A +C +D +F +G +I +L +O +P +S +U +W +Y + TOP +

    +readHashMap +(ClassLoader)
    +readMap +(Map, ClassLoader)
    +registerListener
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +
    S  +A +C +D +F +G +I +L +O +P +R +U +W +Y + TOP +

    +scrollToBottom +(ActivityInstrumentationTestCase, ViewGroup)
    +scrollToTop +(ActivityInstrumentationTestCase, ViewGroup)
    +service +(String, Map<String, String>)
    +setButton
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setPreviewDisplay +(SurfaceHolder)
    +setUserAgent +(int)
    + +
    U  +A +C +D +F +G +I +L +O +P +R +S +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorListener) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +
    W  +A +C +D +F +G +I +L +O +P +R +S +U +Y + TOP +

    +writeMap +(Map)
    + +
    Y  +A +C +D +F +G +I +L +O +P +R +S +U +W + TOP +

    +yieldIfContended +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_removals.html b/docs/html/sdk/api_diff/3/changes/methods_index_removals.html new file mode 100644 index 000000000000..bbce14487297 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_removals.html @@ -0,0 +1,62 @@ + + + + + + + + + +Method Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_additions.html b/docs/html/sdk/api_diff/3/changes/packages_index_additions.html new file mode 100644 index 000000000000..ccd54fdc5c76 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_additions.html @@ -0,0 +1,72 @@ + + + + + + + + + +Package Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android.appwidget
    +android.inputmethodservice
    +android.speech
    +android.text.format
    +android.view.inputmethod
    + +java.beans
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_all.html b/docs/html/sdk/api_diff/3/changes/packages_index_all.html new file mode 100644 index 000000000000..5876fe92fca9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_all.html @@ -0,0 +1,112 @@ + + + + + + + + + +Package Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android
    +android.app
    +android.appwidget
    +android.content
    +android.content.pm
    +android.content.res
    +android.database
    +android.database.sqlite
    +android.graphics
    +android.graphics.drawable
    +android.graphics.drawable.shapes
    +android.hardware
    +android.inputmethodservice
    +android.location
    +android.media
    +android.net
    +android.net.wifi
    +android.opengl
    +android.os
    +android.preference
    +android.provider
    +android.speech
    +android.telephony
    +android.telephony.gsm
    +android.test
    +android.test.mock
    +android.test.suitebuilder
    +android.text
    +android.text.format
    +android.text.method
    +android.text.style
    +android.util
    +android.view
    +android.view.animation
    +android.view.inputmethod
    +android.webkit
    +android.widget
    + +dalvik.system
    + +java.beans
    +java.lang
    +java.lang.reflect
    +java.net
    +java.util
    +java.util.jar
    +java.util.logging
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_changes.html b/docs/html/sdk/api_diff/3/changes/packages_index_changes.html new file mode 100644 index 000000000000..3665a918f31f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_changes.html @@ -0,0 +1,106 @@ + + + + + + + + + +Package Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android
    +android.app
    +android.content
    +android.content.pm
    +android.content.res
    +android.database
    +android.database.sqlite
    +android.graphics
    +android.graphics.drawable
    +android.graphics.drawable.shapes
    +android.hardware
    +android.location
    +android.media
    +android.net
    +android.net.wifi
    +android.opengl
    +android.os
    +android.preference
    +android.provider
    +android.telephony
    +android.telephony.gsm
    +android.test
    +android.test.mock
    +android.test.suitebuilder
    +android.text
    +android.text.method
    +android.text.style
    +android.util
    +android.view
    +android.view.animation
    +android.webkit
    +android.widget
    + +dalvik.system
    + +java.lang
    +java.lang.reflect
    +java.net
    +java.util
    +java.util.jar
    +java.util.logging
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_removals.html b/docs/html/sdk/api_diff/3/changes/packages_index_removals.html new file mode 100644 index 000000000000..17a90d9989ca --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_removals.html @@ -0,0 +1,64 @@ + + + + + + + + + +Package Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.app.html b/docs/html/sdk/api_diff/3/changes/pkg_android.app.html new file mode 100644 index 000000000000..c1602d80f1a3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.app.html @@ -0,0 +1,198 @@ + + + + + + + + + +android.app + + + + + + + + + + +
    +
    +
    +

    +Package android.app +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes +
    + + ActivityManager.RunningAppProcessInfo +  
    + + IntentService +  
    + + LauncherActivity.IconResizer +  
    + + LauncherActivity.ListItem +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Activity +  
    + + ActivityManager +  
    + + AlarmManager +  
    + + AlertDialog +  
    + + Instrumentation +  
    + + LauncherActivity +  
    + + PendingIntent +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.html new file mode 100644 index 000000000000..8a9f4af0a243 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.html @@ -0,0 +1,155 @@ + + + + + + + + + +android.content + + + + + + + + + + +
    +
    +
    +

    +Package android.content +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + BroadcastReceiver +  
    + + ContentProvider +  
    + + ContentResolver +  
    + + Context +  
    + + DialogInterface +  
    + + Intent +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html new file mode 100644 index 000000000000..d3bddd4badc3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html @@ -0,0 +1,149 @@ + + + + + + + + + +android.content.pm + + + + + + + + + + +
    +
    +
    +

    +Package android.content.pm +

    +

    + + + + + + + + +
    Added Classes +
    + + ConfigurationInfo +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + ActivityInfo +  
    + + PackageInfo +  
    + + PackageManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html new file mode 100644 index 000000000000..81d234d2263c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html @@ -0,0 +1,163 @@ + + + + + + + + + +android.content.res + + + + + + + + + + +
    +
    +
    +

    +Package android.content.res +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + AssetFileDescriptor.AutoCloseInputStream +  
    + + AssetFileDescriptor.AutoCloseOutputStream +  
    +  +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + AssetFileDescriptor +  
    + + Configuration +  
    + + Resources +  
    + + TypedArray +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.database.html b/docs/html/sdk/api_diff/3/changes/pkg_android.database.html new file mode 100644 index 000000000000..70b964445d55 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.database.html @@ -0,0 +1,134 @@ + + + + + + + + + +android.database + + + + + + + + + + +
    +
    +
    +

    +Package android.database +

    +

    + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Cursor +  
    + + CursorWrapper +  
    + + DatabaseUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html b/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html new file mode 100644 index 000000000000..db2017bbdc9b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.database.sqlite + + + + + + + + + + +
    +
    +
    +

    +Package android.database.sqlite +

    +

    + + + + + + + + +
    Changed Classes +
    + + SQLiteDatabase +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html new file mode 100644 index 000000000000..6025b71b03d8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.graphics.drawable + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics.drawable +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Drawable +  
    + + RotateDrawable +  
    + + ScaleDrawable +  
    + + TransitionDrawable +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html new file mode 100644 index 000000000000..affdaabc6321 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.graphics.drawable.shapes + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics.drawable.shapes +

    +

    + + + + + + + + +
    Changed Classes +
    + + Shape +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html new file mode 100644 index 000000000000..c7644d5860bd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.graphics + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Bitmap +  
    + + Canvas +  
    + + Rect +  
    + + RectF +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html new file mode 100644 index 000000000000..63ebbdc19f69 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html @@ -0,0 +1,170 @@ + + + + + + + + + +android.hardware + + + + + + + + + + +
    +
    +
    +

    +Package android.hardware +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GeomagneticField +  
    + + Sensor +  
    + + SensorEvent +  
    + + SensorEventListener +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Camera +  
    + + SensorListener +  
    + + SensorManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.html b/docs/html/sdk/api_diff/3/changes/pkg_android.html new file mode 100644 index 000000000000..0cedd98cb86e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.html @@ -0,0 +1,177 @@ + + + + + + + + + +android + + + + + + + + + + +
    +
    +
    +

    +Package android +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + R.bool +  
    + + R.integer +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Manifest.permission +  
    + + R.attr +  
    + + R.drawable +  
    + + R.id +  
    + + R.string +  
    + + R.style +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.location.html b/docs/html/sdk/api_diff/3/changes/pkg_android.location.html new file mode 100644 index 000000000000..2f8af381b95d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.location.html @@ -0,0 +1,156 @@ + + + + + + + + + +android.location + + + + + + + + + + +
    +
    +
    +

    +Package android.location +

    +

    + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GpsSatellite +  
    + + GpsStatus +  
    + + GpsStatus.Listener +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Location +  
    + + LocationManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.media.html b/docs/html/sdk/api_diff/3/changes/pkg_android.media.html new file mode 100644 index 000000000000..c531240beb8d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.media.html @@ -0,0 +1,254 @@ + + + + + + + + + +android.media + + + + + + + + + + +
    +
    +
    +

    +Package android.media +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AudioFormat +  
    + + AudioRecord +  
    + + AudioRecord.OnRecordPositionUpdateListener +  
    + + AudioTrack +  
    + + AudioTrack.OnPlaybackPositionUpdateListener +  
    + + JetPlayer +  
    + + JetPlayer.OnJetEventListener +  
    + + MediaPlayer.OnInfoListener +  
    + + MediaPlayer.OnVideoSizeChangedListener +  
    + + MediaRecorder.OnErrorListener +  
    + + MediaRecorder.OnInfoListener +  
    + + MediaRecorder.VideoEncoder +  
    + + MediaRecorder.VideoSource +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + AudioManager +  
    + + MediaPlayer +  
    + + MediaRecorder +  
    + + MediaRecorder.OutputFormat +  
    + + RingtoneManager +  
    + + SoundPool +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.net.html b/docs/html/sdk/api_diff/3/changes/pkg_android.net.html new file mode 100644 index 000000000000..cf2f916cede7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.net.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.net + + + + + + + + + + +
    +
    +
    +

    +Package android.net +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + ConnectivityManager +  
    + + NetworkInfo +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html b/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html new file mode 100644 index 000000000000..99f2951d1f78 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.net.wifi + + + + + + + + + + +
    +
    +
    +

    +Package android.net.wifi +

    +

    + + + + + + + + +
    Changed Classes +
    + + WifiManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html new file mode 100644 index 000000000000..622d8612fb97 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html @@ -0,0 +1,148 @@ + + + + + + + + + +android.opengl + + + + + + + + + + +
    +
    +
    +

    +Package android.opengl +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GLSurfaceView +  
    + + GLSurfaceView.EGLConfigChooser +  
    + + GLSurfaceView.GLWrapper +  
    + + GLSurfaceView.Renderer +  
    + + Visibility +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.os.html b/docs/html/sdk/api_diff/3/changes/pkg_android.os.html new file mode 100644 index 000000000000..098864ef879d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.os.html @@ -0,0 +1,212 @@ + + + + + + + + + +android.os + + + + + + + + + + +
    +
    +
    +

    +Package android.os +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AsyncTask +  
    + + AsyncTask.Status +  
    + + Handler.Callback +  
    + + ResultReceiver +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Binder +  
    + + Build +  
    + + Debug +  
    + + Environment +  
    + + Handler +  
    + + IBinder +  
    + + Looper +  
    + + Parcel +  
    + + ParcelFileDescriptor +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html b/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html new file mode 100644 index 000000000000..5ffe3cb61f34 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.preference + + + + + + + + + + +
    +
    +
    +

    +Package android.preference +

    +

    + + + + + + + + +
    Changed Classes +
    + + DialogPreference +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html new file mode 100644 index 000000000000..f16e4fd19767 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html @@ -0,0 +1,233 @@ + + + + + + + + + +android.provider + + + + + + + + + + +
    +
    +
    +

    +Package android.provider +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes +
    + + LiveFolders +  
    + + Settings.Secure +  
    + + UserDictionary +  
    + + UserDictionary.Words +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Browser +  
    + + Contacts.Intents +  
    + + Contacts.Intents.Insert +  
    + + Contacts.PeopleColumns +  
    + + MediaStore +  
    + + MediaStore.Audio.AlbumColumns +  
    + + MediaStore.Audio.Media +  
    + + MediaStore.Images.Media +  
    + + MediaStore.Video +  
    + + MediaStore.Video.VideoColumns +  
    + + Settings +  
    + + Settings.System +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html new file mode 100644 index 000000000000..d17223483e02 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.telephony.gsm + + + + + + + + + + +
    +
    +
    +

    +Package android.telephony.gsm +

    +

    + + + + + + + + +
    Changed Classes +
    + + SmsMessage +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html new file mode 100644 index 000000000000..8131269eab82 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html @@ -0,0 +1,142 @@ + + + + + + + + + +android.telephony + + + + + + + + + + +
    +
    +
    +

    +Package android.telephony +

    +

    + + + + + + + + +
    Added Classes +
    + + NeighboringCellInfo +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + PhoneNumberUtils +  
    + + TelephonyManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.html new file mode 100644 index 000000000000..3b5edd42df00 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.html @@ -0,0 +1,163 @@ + + + + + + + + + +android.test + + + + + + + + + + +
    +
    +
    +

    +Package android.test +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + ActivityInstrumentationTestCase2 +  
    + + ProviderTestCase2 +  
    +  +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + ActivityInstrumentationTestCase +  
    + + InstrumentationTestCase +  
    + + ProviderTestCase +  
    + + TouchUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html new file mode 100644 index 000000000000..87a371cd22b1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.test.mock + + + + + + + + + + +
    +
    +
    +

    +Package android.test.mock +

    +

    + + + + + + + + +
    Changed Classes +
    + + MockPackageManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html new file mode 100644 index 000000000000..469db289da92 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.test.suitebuilder + + + + + + + + + + +
    +
    +
    +

    +Package android.test.suitebuilder +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + TestMethod +  
    + + TestSuiteBuilder +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.html new file mode 100644 index 000000000000..ffc696676f16 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.html @@ -0,0 +1,191 @@ + + + + + + + + + +android.text + + + + + + + + + + +
    +
    +
    +

    +Package android.text +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + InputType +  
    + + NoCopySpan +  
    + + NoCopySpan.Concrete +  
    + + ParcelableSpan +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Annotation +  
    + + AutoText +  
    + + SpanWatcher +  
    + + Spanned +  
    + + TextUtils +  
    + + TextWatcher +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html new file mode 100644 index 000000000000..89b94ad3125b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html @@ -0,0 +1,218 @@ + + + + + + + + + +android.text.method + + + + + + + + + + +
    +
    +
    +

    +Package android.text.method +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + ArrowKeyMovementMethod +  
    + + BaseKeyListener +  
    + + DateKeyListener +  
    + + DateTimeKeyListener +  
    + + DialerKeyListener +  
    + + DigitsKeyListener +  
    + + KeyListener +  
    + + MetaKeyKeyListener +  
    + + MovementMethod +  
    + + MultiTapKeyListener +  
    + + QwertyKeyListener +  
    + + ScrollingMovementMethod +  
    + + TextKeyListener +  
    + + TimeKeyListener +  
    + + Touch +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html new file mode 100644 index 000000000000..e1e1fec0b4e9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html @@ -0,0 +1,289 @@ + + + + + + + + + +android.text.style + + + + + + + + + + +
    +
    +
    +

    +Package android.text.style +

    +

    + + + + + + + + +
    Added Interfaces +
    + + UpdateAppearance +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + AbsoluteSizeSpan +  
    + + AlignmentSpan.Standard +  
    + + BackgroundColorSpan +  
    + + BulletSpan +  
    + + ClickableSpan +  
    + + DynamicDrawableSpan +  
    + + ForegroundColorSpan +  
    + + ImageSpan +  
    + + LeadingMarginSpan.Standard +  
    + + MaskFilterSpan +  
    + + QuoteSpan +  
    + + RasterizerSpan +  
    + + RelativeSizeSpan +  
    + + ScaleXSpan +  
    + + StrikethroughSpan +  
    + + StyleSpan +  
    + + SubscriptSpan +  
    + + SuperscriptSpan +  
    + + TextAppearanceSpan +  
    + + TypefaceSpan +  
    + + URLSpan +  
    + + UnderlineSpan +  
    + + UpdateLayout +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.util.html b/docs/html/sdk/api_diff/3/changes/pkg_android.util.html new file mode 100644 index 000000000000..7403be48c31e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.util.html @@ -0,0 +1,142 @@ + + + + + + + + + +android.util + + + + + + + + + + +
    +
    +
    +

    +Package android.util +

    +

    + + + + + + + + +
    Added Classes +
    + + PrintStreamPrinter +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + SparseIntArray +  
    + + TimeUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html b/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html new file mode 100644 index 000000000000..30c1badc27d7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.view.animation + + + + + + + + + + +
    +
    +
    +

    +Package android.view.animation +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Animation +  
    + + Transformation +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.view.html b/docs/html/sdk/api_diff/3/changes/pkg_android.view.html new file mode 100644 index 000000000000..9b4a0427dacd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.view.html @@ -0,0 +1,268 @@ + + + + + + + + + +android.view + + + + + + + + + + +
    +
    +
    +

    +Package android.view +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GestureDetector.OnDoubleTapListener +  
    + + HapticFeedbackConstants +  
    + + OrientationEventListener +  
    + + ViewDebug.CapturedViewProperty +  
    + + ViewTreeObserver.OnScrollChangedListener +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + GestureDetector +  
    + + GestureDetector.SimpleOnGestureListener +  
    + + Gravity +  
    + + KeyCharacterMap +  
    + + KeyEvent +  
    + + Menu +  
    + + MotionEvent +  
    + + OrientationListener +  
    + + View +  
    + + ViewConfiguration +  
    + + ViewDebug +  
    + + ViewGroup +  
    + + ViewParent +  
    + + ViewTreeObserver +  
    + + Window +  
    + + WindowManager.LayoutParams +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html new file mode 100644 index 000000000000..339b9ab3b479 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html @@ -0,0 +1,170 @@ + + + + + + + + + +android.webkit + + + + + + + + + + +
    +
    +
    +

    +Package android.webkit +

    +

    + + + + + + + + +
    Added Classes +
    + + PluginData +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + URLUtil +  
    + + UrlInterceptHandler +  
    + + UrlInterceptRegistry +  
    + + WebHistoryItem +  
    + + WebSettings +  
    + + WebView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html new file mode 100644 index 000000000000..fc6e9015391a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html @@ -0,0 +1,310 @@ + + + + + + + + + +android.widget + + + + + + + + + + +
    +
    +
    +

    +Package android.widget +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AlphabetIndexer +  
    + + Chronometer.OnChronometerTickListener +  
    + + HorizontalScrollView +  
    + + SectionIndexer +  
    + + SlidingDrawer +  
    + + SlidingDrawer.OnDrawerCloseListener +  
    + + SlidingDrawer.OnDrawerOpenListener +  
    + + SlidingDrawer.OnDrawerScrollListener +  
    + + TextView.OnEditorActionListener +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + AbsListView +  
    + + AbsSeekBar +  
    + + AbsoluteLayout +  
    + + ArrayAdapter +  
    + + AutoCompleteTextView +  
    + + Chronometer +  
    + + CursorAdapter +  
    + + GridView +  
    + + ListView +  
    + + PopupWindow +  
    + + PopupWindow.OnDismissListener +  
    + + ProgressBar +  
    + + RemoteViews +  
    + + RemoteViews.ActionException +  
    + + ResourceCursorAdapter +  
    + + Scroller +  
    + + SimpleCursorAdapter +  
    + + TextView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html b/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html new file mode 100644 index 000000000000..654be0fb246e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html @@ -0,0 +1,149 @@ + + + + + + + + + +dalvik.system + + + + + + + + + + +
    +
    +
    +

    +Package dalvik.system +

    +

    + + + + + + + + +
    Added Classes +
    + + DexClassLoader +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + DexFile +  
    + + VMDebug +  
    + + Zygote +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html new file mode 100644 index 000000000000..d7699273d263 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html @@ -0,0 +1,134 @@ + + + + + + + + + +java.lang + + + + + + + + + + +
    +
    +
    +

    +Package java.lang +

    +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Character.UnicodeBlock +  
    + + Class +  
    + + String +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html new file mode 100644 index 000000000000..ccc643dd8c99 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.lang.reflect + + + + + + + + + + +
    +
    +
    +

    +Package java.lang.reflect +

    +

    + + + + + + + + +
    Changed Classes +
    + + Proxy +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.net.html b/docs/html/sdk/api_diff/3/changes/pkg_java.net.html new file mode 100644 index 000000000000..98cc83d2cd89 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.net.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.net + + + + + + + + + + +
    +
    +
    +

    +Package java.net +

    +

    + + + + + + + + +
    Changed Classes +
    + + Socket +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.html new file mode 100644 index 000000000000..462c73b083b6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.util + + + + + + + + + + +
    +
    +
    +

    +Package java.util +

    +

    + + + + + + + + +
    Changed Classes +
    + + Date +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html new file mode 100644 index 000000000000..f1ac6e5d7f7d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.jar + + + + + + + + + + +
    +
    +
    +

    +Package java.util.jar +

    +

    + + + + + + + + + + + + +
    Changed Interfaces +
    + + Pack200.Packer +  
    + + Pack200.Unpacker +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html new file mode 100644 index 000000000000..f2cc23d8472e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.logging + + + + + + + + + + +
    +
    +
    +

    +Package java.util.logging +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Level +  
    + + LogManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/stylesheet-jdiff.css b/docs/html/sdk/api_diff/3/stylesheet-jdiff.css new file mode 100644 index 000000000000..b3c1b9af86b9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/stylesheet-jdiff.css @@ -0,0 +1,37 @@ + +/* (http://www.jdiff.org) */ + +div.and-diff-id {border: 1px solid #eee;position:relative;float:right;clear:both;padding:0px;} +table.diffspectable {border:1px;padding:0px;margin:0px;} +.diffspechead {background-color:#eee;} +.diffspectable tr {border:0px;padding:0px;} +.diffspectable td {background-color:eee;border:0px;font-size:90%;font-weight:normal;padding:0px;padding-left:1px;padding-right:1px;text-align:center;color:777;} +td.diffvalueold {color:orange;background-color:white;border:0px;font-size:80%;font-style:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffvaluenew {color:green;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffvalue {color:444;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffspec {background-color:white;border:0px;font-size:80%;font-weight:normal;padding:1px;color:444;text-align:right;padding-right:.5em;line-height:.95em;} +tt {font-size:11pt;font-family:monospace;} +.indexHeader { + font-size:96%; + line-height:.8em;} +.jdiffIndex td { + font-size:96%; + xline-height:.8em; + padding:2px; + padding-left:1em;} +.indexText { + font-size:100%; + padding-left:1em;} +#indexTableCaption { + font-size:96%; + margin-top:.25em; + margin-bottom:0; + } +.hiddenlink { + font-size:96%; + line-height:.8em; + text-decoration:none;} +a { + text-decoration:none;} +a:hover { + text-decoration:underline;} -- GitLab From 1596b517be4925b82ea55973b6e7595f8d5f2cf5 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 15:00:26 -0700 Subject: [PATCH 12/72] AI 147238: Update tools index, replace activitycreator with android BUG=1790234 Automated import of CL 147238 --- docs/html/guide/appendix/faq/commontasks.jd | 4 +- docs/html/guide/developing/tools/index.jd | 33 ++++++---- .../html/guide/developing/tools/othertools.jd | 64 ++++++------------- docs/html/guide/guide_toc.cs | 7 +- docs/html/samples/index.jd | 5 +- 5 files changed, 46 insertions(+), 67 deletions(-) diff --git a/docs/html/guide/appendix/faq/commontasks.jd b/docs/html/guide/appendix/faq/commontasks.jd index 9c79bddf75ea..0f89e7534a68 100644 --- a/docs/html/guide/appendix/faq/commontasks.jd +++ b/docs/html/guide/appendix/faq/commontasks.jd @@ -701,8 +701,8 @@ If the latitudeSpan, longitudeSpan, and zoomLevel attributes are not consistent,

    List of Files for an Android Application

    The following list describes the structure and files of an Android application. - Many of these files can be built for you (or stubbed out) by the activitycreator - application shipped in the tools/ menu of the SDK.

    + Many of these files can be built for you (or stubbed out) by the android tool + shipped in the tools/ menu of the SDK.

    diff --git a/docs/html/guide/developing/tools/index.jd b/docs/html/guide/developing/tools/index.jd index b491a4fcd8da..e53d5957995a 100644 --- a/docs/html/guide/developing/tools/index.jd +++ b/docs/html/guide/developing/tools/index.jd @@ -8,23 +8,29 @@ applications on the Android platform. The most important of these are the Androi Emulator and the Android Development Tools plugin for Eclipse, but the SDK also includes a variety of other tools for debugging, packaging, and installing your applications on the emulator.

    - -
    -
    Android Emulator
    -
    A virtual mobile device that runs on your computer. You use the emulator to design, - debug, and test your applications in an actual Android run-time environment.
    +
    Android Development Tools Plugin (for the Eclipse IDE)
    The ADT plugin adds powerful extensions to the Eclipse integrated environment, making creating and debugging your Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android applications.
    +
    Android Emulator
    +
    A QEMU-based device-emulation tool that you can use to design, + debug, and test your applications in an actual Android run-time environment.
    -
    Hierarchy Viewer
    -
    The Hierarchy Viewer tool allows you to debug and optimize your user interface. - It provides a visual representation of your layout's hierarchy of Views and a magnified inspector - of the current display with a pixel grid, so you can get your layout just right. -
    +
    Android Virtual Devices (AVDs)
    +
    Virtual device configurations that you create, to model device + characteristics in the Android Emulator. In each configuration, you can + specify the Android platform to run, the hardware options, and the + emulator skin to use. Each AVD functions as an independent device with + it's own storage for user data, SD card, and so on.
    + +
    Hierarchy Viewer
    +
    The Hierarchy Viewer tool allows you to debug and optimize your user interface. + It provides a visual representation of your layout's hierarchy of Views and a magnified inspector + of the current display with a pixel grid, so you can get your layout just right. +
    Draw 9-patch
    The Draw 9-patch tool allows you to easily create a @@ -79,10 +85,9 @@ applications on the emulator.

    level events. You can use the Monkey to stress-test applications that you are developing, in a random yet repeatable manner.
    -
    activitycreator
    -
    A script that generates android +
    A script that lets you manage AVDs and generate Ant build files that - you can use to compile your Android applications. If you are developing - on Eclipse with the ADT plugin, you won't need to use this script.
    + you can use to compile your Android applications.
    diff --git a/docs/html/guide/developing/tools/othertools.jd b/docs/html/guide/developing/tools/othertools.jd index eaa0b76a5f42..603609eb1ae0 100644 --- a/docs/html/guide/developing/tools/othertools.jd +++ b/docs/html/guide/developing/tools/othertools.jd @@ -3,16 +3,32 @@ page.title=Other Tools

    The sections below describe other tools that you can use when building Android applications.

    -

    All of the tools are included in the Android SDK and are accessible from the tools/ directory.

    +

    All of the tools are included in the Android SDK and are accessible from the <sdk>/tools/ directory.

    Contents

    +
    android
    mksdcard
    dx
    -
    activitycreator
    + +

    android

    + +

    The android tool is a script that lets you create and manage Android Virtual Devices (AVDs) and, if you are developing using Ant, generate template Android projects to help you get started quickly.

    + +

    For information about how to use the android tool to manage AVDs, see Android Virtual Devices.

    + +

    For information about how to use the android tool to create or update a project, see Developing in Other IDEs.

    + +

    Note that if you are developing in Eclipse with the ADT plugin, you will use the android tool to manage the AVDs you create, but you will not use the android tool for creating a project. The ADT plugin provides a New Project Wizard that helps you set up an Android project in Eclipse.

    + +

    If you are developing in Ant, you will use the android tool to manage your AVDs, and you can also use it to create or update a project.

    + +

    Note: The android tool replaces the activitycreator tool provided in previous SDK releases.

    + +

    mksdcard

    @@ -21,7 +37,7 @@ page.title=Other Tools
    mksdcard [-l label] <size>[K|M] <file>
    -

    The table below lists the available options/arguments

    +

    The table below lists the available options/arguments

    MyApp/
    @@ -57,48 +73,6 @@ You can also specify size in kilobytes or megabytes, by appending a "K" or "M" t

    The dx tool lets you generate Android bytecode from .class files. The tool converts target files and/or directories to Dalvik executable format (.dex) files, so that they can run in the Android environment. It can also dump the class files in a human-readable format and run a target unit test. You can get the usage and options for this tool by using dx --help.

    - - -

    activitycreator

    - -

    If you aren't using the Eclipse IDE and ADT plugin, you can use the the activitycreator script to get started with a new application. When you run the script, it creates the structure of a minimal Android application that you can build on and extend to meet your needs.

    - -

    For Linux and Mac, the SDK provides activitycreator, a shell script, and for Windows activitycreator.bat, a batch script that runs an executable. Regardless of platform, the usage for the script is the same:

    - -
    activitycreator [--out <folder>] [--ide intellij] your.package.name.ActivityName
    - -
    - - - - - - - - - - - - - - - -
    OptionDescription
    --out <folder>Specifies where to create the files/folders.
    --ide intellijCreates project files for IntelliJ
    - - -

    When run, the script creates these files:

    - -
      -
    • AndroidManifest.xml -- The application manifest file.
    • -
    • build.xml -- An Ant script to build/package the application.
    • -
    • res -- The resource directory.
    • -
    • src -- The source directory.
    • -
    • src/your/package/name/ActivityName.java -- The Activity class.
    • -
    • bin -- The output folder for the compiled .apk (when built by Ant).
    • -
    - -

    When you are ready, you can use Ant to build the project so that you can run it on the emulator.

    -

    If you are using Eclipse with the ADT plugin, you do not need to use activitycreator. You can use the New Project Wizard, provided by the ADT plugin, instead.

    diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs index 77d3522ce72a..3c9b7c27bbcd 100644 --- a/docs/html/guide/guide_toc.cs +++ b/docs/html/guide/guide_toc.cs @@ -61,6 +61,7 @@
  16. <provider>
  17. <receiver>
  18. <service>
  19. +
  20. <uses-configuration>
  21. <uses-library>
  22. <uses-permission>
  23. <uses-sdk>
  24. @@ -84,7 +85,7 @@
  25. Accelerometer
  26. --> -
  27. Location
  28. +
  29. Location and Maps
  30. -
  31. In Eclipse, with ADT
  32. In Other IDEs
  33. On a Device
  34. @@ -110,9 +110,10 @@
    • aapt
    • adb
    • -
    • activitycreator
    • +
    • android
    • aidl
    • +
    • AVDs
    • ddms
    • dx
    • Draw 9-Patch
    • diff --git a/docs/html/samples/index.jd b/docs/html/samples/index.jd index c5c0b7132eb9..06afd07f8ded 100644 --- a/docs/html/samples/index.jd +++ b/docs/html/samples/index.jd @@ -18,6 +18,5 @@ page.onlyfortemplate=codesite

      To run these samples, you should import them into -Eclipse or use -activitycreator.py, as described in the Installing the SDK.

      +Eclipse or build them with Ant, as described in +Developing in Other IDEs.

      -- GitLab From 46000b5841033c7171b17e429650a37ec810b4a6 Mon Sep 17 00:00:00 2001 From: Jeff Hamilton <> Date: Tue, 21 Apr 2009 15:12:16 -0700 Subject: [PATCH 13/72] AI 147250: Fix a nasty typo in the docs for ContentResolver.update(). No code changes. BUG=1067866 Automated import of CL 147250 --- core/java/android/content/ContentResolver.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index 0d886ee23e8d..0a71d572932e 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -541,7 +541,7 @@ public abstract class ContentResolver { A null value will remove an existing field value. * @param where A filter to apply to rows before deleting, formatted as an SQL WHERE clause (excluding the WHERE itself). - * @return the URL of the newly created row + * @return The number of rows updated. * @throws NullPointerException if uri or values are null */ public final int update(Uri uri, ContentValues values, String where, -- GitLab From ee378956e3ab9dd312890f4554350ee76e07b301 Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet <> Date: Tue, 21 Apr 2009 18:45:32 -0700 Subject: [PATCH 14/72] AI 147290: Update Geocoder javadoc to reflect the need for a backend service. BUG=1794552 Automated import of CL 147290 --- location/java/android/location/Geocoder.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/location/java/android/location/Geocoder.java b/location/java/android/location/Geocoder.java index 709ad23fd787..53e46b7d2001 100644 --- a/location/java/android/location/Geocoder.java +++ b/location/java/android/location/Geocoder.java @@ -36,7 +36,11 @@ import java.util.List; * coordinate into a (partial) address. The amount of detail in a * reverse geocoded location description may vary, for example one * might contain the full street address of the closest building, while - * another might contain only a city name and postal code. + * another might contain only a city name and postal code. + * + * The Geocoder class requires a backend service that is not included in + * the core android framework. The Geocoder query methods will return an + * empty list if there no backend service in the platform. */ public final class Geocoder { private static final String TAG = "Geocoder"; @@ -94,8 +98,8 @@ public final class Geocoder { * @param longitude the longitude a point for the search * @param maxResults max number of addresses to return. Smaller numbers (1 to 5) are recommended * - * @return a list of Address objects or null if no matches were - * found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if latitude is * less than -90 or greater than 90 @@ -143,7 +147,8 @@ public final class Geocoder { * @param locationName a user-supplied description of a location * @param maxResults max number of results to return. Smaller numbers (1 to 5) are recommended * - * @return a list of Address objects or null if no matches were found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if locationName is null * @throws IOException if the network is unavailable or any other @@ -192,7 +197,8 @@ public final class Geocoder { * @param upperRightLatitude the latitude of the upper right corner of the bounding box * @param upperRightLongitude the longitude of the upper right corner of the bounding box * - * @return a list of Address objects or null if no matches were found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if locationName is null * @throws IllegalArgumentException if any latitude is -- GitLab From fe1f789124ecc4b1475abecfc7d8263c0b21fb6a Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 18:52:41 -0700 Subject: [PATCH 15/72] AI 147297: Update Android 1.5 SDK Download, Release Notes, Version Notes, Highlights Please let me know if you have other "known issues", "resolved issues", or "highlights". Also, note that the installing and upgrading docs are being updated in a different CL, so the new version is not displayed on my staging server. BUG=1790234 Automated import of CL 147297 --- docs/html/sdk/1.5_r1/index.jd | 45 +++-- docs/html/sdk/RELEASENOTES.jd | 229 ++++++++++++++++++++-- docs/html/sdk/adt_download.jd | 17 +- docs/html/sdk/android-1.5-highlights.jd | 205 ++++++++++++++++++++ docs/html/sdk/android-1.5.jd | 245 +++++++++++++++++++++++- docs/html/sdk/sdk_toc.cs | 17 +- 6 files changed, 717 insertions(+), 41 deletions(-) create mode 100644 docs/html/sdk/android-1.5-highlights.jd diff --git a/docs/html/sdk/1.5_r1/index.jd b/docs/html/sdk/1.5_r1/index.jd index 412887a95257..834ab7991959 100644 --- a/docs/html/sdk/1.5_r1/index.jd +++ b/docs/html/sdk/1.5_r1/index.jd @@ -2,51 +2,72 @@ sdk.version=1.5 sdk.rel.id=1 sdk.date=April 2009 -sdk.win_download= +sdk.win_download=android-sdk-windows-1.5_r1.zip sdk.win_bytes= sdk.win_checksum= -sdk.mac_download= +sdk.mac_download=android-sdk-mac_x86-1.5_r1.zip sdk.mac_bytes= sdk.mac_checksum= -sdk.linux_download= +sdk.linux_download=android-sdk-linux_x86-1.5_r1.zip sdk.linux_bytes= sdk.linux_checksum= -page.title=Download Android SDK +page.title=Android 1.5 SDK, Release 1 @jd:body

      SDK Contents

      Development tools

      -

      The SDK includes a variety of tools for developing and debugging application code and designing an application UI. You can read about the tools in the +

      The SDK includes a full set of tools for developing and debugging application code and designing an application UI. You can read about the tools in the Dev Guide and access them in the <sdk>/tools/ directory. -

      The tools package included in this SDK includes many updates from that provided in the previous SDK and requires you to migrate your applications to the new development environment. For details, see the Upgrading the SDK document.

      +

      The tools package in this SDK includes updates from those provided in the previous SDK. The tools also require a different project structure. To use the new tools, you need to migrate your applications to the new development environment. For more information about how to migrate, see Upgrading the SDK. -

      System Images

      +

      For more information about the new tools features, see the SDK Release Notes. -

      The Android system images listed below are included in this SDK. For more information about a system image — features, applications included, localizations, API changes, and so on — see its Version Notes.

      +

      Android Platforms

      + +

      This SDK includes multiple Android platform versions that you use to develop applications. For each version, both a fully compliant Android library and system image are provided. The table below lists the platform versions included in this SDK. For more information about a platform version — features, applications included, localizations, API changes, and so on — see its Version Notes.

      - + - + - + + + +
      System ImageAPI LevelNotesDescriptionPlatformAPI LevelNotesDescription
      Android 1.5 3 Version NotesIncludes a set of standard development applications. Includes a standard Android 1.5 library and system image with a set of development applications. Does not include any external libraries (such as the Maps external library).
      Android 1.1 2 Version NotesIncludes a set of standard development applications. Includes a compliant Android 1.1 library and system image with a set of development applications. Also includes the Maps external library (due to legacy build system issues). +external library.
      + +

      SDK Add-Ons

      + +

      An SDK add-on provides a development environment for an Android external library or a customized (but fully compliant) Android system image. This SDK includes the SDK add-on listed below. The Android system API Level required by the add-on is noted.

      + + + + + + + + +
      Add-OnAPI LevelNotesDescription
      Google APIs3 Includes the com.google.android.maps external library, a compliant +system image, a {@link android.location.Geocoder Geocoder} +backend service implementation, documentation, and sample code.
      @@ -55,7 +76,6 @@ page.title=Download Android SDK

      You can look at a variety of tutorials and samples in the Dev Guide and access the sample code itself in the <sdk>/platforms/android-1.5/samples/ directory of the SDK package. Note the new location — the SDK now includes multiple platform versions that you can develop against and each has its own sample code directory.

      - diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd index bad71a2a59da..c6a887a44662 100644 --- a/docs/html/sdk/RELEASENOTES.jd +++ b/docs/html/sdk/RELEASENOTES.jd @@ -1,21 +1,209 @@ page.title=SDK Release Notes @jd:body -

      This document provides version-specific information about Android SDK releases. For the latest known issues, please ensure that you're viewing this page at: http://developer.android.com/sdk/RELEASENOTES.html.

      +

      This document provides version-specific information about Android SDK +releases. For the latest known issues, please ensure that you're viewing this +page at: +http://developer.android.com/sdk/RELEASENOTES.html.

      + +

      Android 1.5 SDK, Release 1

      + +

      This SDK provides updates to the development tools and Android system that +you use to create applications for compliant Android-powered devices.

      + +

      Release Overview

      + +

      This SDK release includes many new features for developers. Highlights of the +changes include:

      + +
        +
      • Multiple versions of the Android platform are included (Android 1.1, +Android 1.5). The tools are updated to let you deploy your application +on any platform in the SDK, which helps you ensure forward-compitility and, +if applicable, backward-compatibility.
      • +
      • Introduces Android +Virtual Devices — (AVD) configurations of options that you +run in the emulator to better model actual devices. Each AVD gets its +own dedicated storage area, making it much easier to work with multiple emulators +that are running concurrently.
      • +
      • Support for SDK add-ons, which extend the +Android SDK to give you access to one or more external Android libraries and/or +a customized (but compliant) system image that can run in the emulator.
      • +
      • The new Eclipse ADT plugin (version 0.9.0) offers new Wizards to let you +create projects targetted for specific Android configurations, generate XML +resources (such as layouts, animations, and menus), generate alternate layouts, +and export and sign your application for publishing.
      • +
      • Improved JUnit support in ADT
      • +
      • Easier profiling of performance
      • +
      • Easier management of localized applications. You can now include or +exclude locale resources when building your APK from a single +Android project.
      • +
      • A new tool called "android" replaces the activitycreator script.
      • +
      + +

      For details about the Android platforms included in the SDK — including +bug fixes, features, and API changes — please read the Version Notes +documents available at left. For a list of Android platforms included in this +release, see the Download +page.

      + +

      Installation and Upgrade Notes

      + +

      If you've been developing an application using an Android 1.1 SDK, you need +to make a few changes to your development environment to migrate to the new SDK. +Tools and documentation are provided to assist you. No changes to the source +code of an existing application should be needed, provided that your application +is not using Android internal structures or APIs.

      + +

      To ensure that your existing application will work properly on a device +running the latest version of the Android platform, you are strongly encouraged +to migrate the application to the new SDK, compile it using the platform +matching the application's original API Level, and run it against the most +current platform.

      + +

      If you're installing the Android SDK for the first time, please see +the instructions in Installing the SDK. + +

      SDK Add-Ons

      + +

      This version of the SDK introduces support for SDK add-ons, which extend the +Android SDK to give you access to one or more external Android libraries and/or +a customized (but compliant) system image that can run in the emulator. The +purpose of an SDK add-on is to give you a way to develop applications for a +specific actual device (or family of devices) that extends the APIs available to +Android applications through external libraries or system customizations.

      + +

      From the perspective of your Android development environment, an SDK add-on +is similar to any of the Android platform targets included in the SDK — it +includes an external library, a system image, as well as custom emulator skins +and system properties. The add-on differs in that the Android platform it +provides may include customized UI, resources, or behaviors, a different set of +preinstalled applications, or other similar modifications. + +

      The SDK includes a single SDK add-on — the Google APIs add-on. The +Google APIs add-on gives your application access to the com.google.android.maps +external library that is included on many (if not most) Android-powered devices. +The Google APIs add-on also includes a {@link android.location.Geocoder Geocoder} +backend service implementation. For more information, see the "Maps External +Library" section below.

      + +

      Android Virtual Devices (AVDs)

      + +

      The SDK now gives you the capability to compile an application against any +one of several system targets, then run it in the emulator on top of any +compatible system image. There are two types of targets:

      +
        +
      • Targets that represent core Android platform versions.
      • +
      • Targets that are SDK add-ons, which typically provide application access to +one or more external libraries and/or a customized (but compliant) system image +that can run in the emulator. +
      + +

      A new tool called "android" lets you discover what targets and AVDs are +available to use.

      + +

      For more information about AVDs, see Android Virtual Devices + +

      Other Notes

      + +

      Maps External Library

      + +

      In previous versions of the SDK, the com.google.android.maps package was +included in the standard Android library and system image. In the Android 1.5 +SDK, that is not the case. The Android 1.5 library and system image do not +include the Maps external library (com.google.android.maps). However, the Maps +external library is available as part of the Google APIs add-on for the Android +SDK, downloadable from this location:

      + +

      http://code.google.com +/android/add-ons/google-apis

      + +

      For your convenience, the Google APIs add-on is included in the SDK.

      + +

      For information about how to register for a Maps API Key, see + +Obtaining a Maps API Key.

      + +

      USB Drivers for Windows

      + +

      If you are using Windows and want to develop or test your application on an +Android-powered device (such as the T-Mobile G1), you need an appropriate USB +driver. For your convenience, the Windows version of the Android SDK includes +these USB drivers that you can install, to let you develop on the device:

      + +
        +
      • USB driver for 32-bit XP and Vista
      • +
      • USB driver for 64-bit Vista only
      • +
      + +

      The USB driver files are located in the +<SDK>/usb_driver directory. For details and +installation instructions, see Setting Up a +Device for Development.

      +

      + +

      Resolved Issues, Changes

      + +

      Media

      +
        +
      • Updated documentation for {@link android.media.SoundPool +android.media.SoundPool}
      • +
      • {@link android.webkit.WebView} objects no longer automatically save +thumbnails. The {@link android.webkit.WebView#capturePicture() capturePicture()} +method will need to be called manually.
      • +
      + +

      Known Issues

      + +

      Sensor problems in Emulator

      + +
        +
      • If your application uses the Sensor API and you are running it in the +emulator on the Android 1.5 system image, you may experience problems. Your +application may generate ANR messages or crash when using the sensors. The +problem is being investigated.
      • +
      + +

      Other

      + +
        +
      • We regret to inform developers that Android 1.5 will not include support for +the Zilog Z80 processor architecture.
      • +
      +

      Android 1.1 SDK, Release 1

      -

      This SDK provides the development tools and Android system image you need to create applications for Android-powered devices. Applications developed on this SDK will be compatible with mobile devices running the Android 1.1 platform.

      +

      This SDK provides the development tools and Android system image you need to +create applications for Android-powered devices. Applications developed on this +SDK will be compatible with mobile devices running the Android 1.1 platform. +

      -

      This release provides an updated system image (Android 1.1), updated documentation, and the same set of development tools provided in the Android 1.0 r2 SDK. The updated system image includes bug fixes and some smaller features, as well as a few minor API changes from the 1.0 version.

      +

      This release provides an updated system image (Android 1.1), updated +documentation, and the same set of development tools provided in the Android 1.0 +r2 SDK. The updated system image includes bug fixes and some smaller features, +as well as a few minor API changes from the 1.0 version.

      -

      For details about the Android 1.1 system image included in the SDK — including bug fixes, features, and API changes — please read the Android 1.1 Version Notes.

      +

      For details about the Android 1.1 system image included in the SDK — +including bug fixes, features, and API changes — please read the Android 1.1 Version Notes.

      App Versioning for Android 1.1

      -

      If you are using this SDK to build an application that is compatible only with Android-powered devices running the Android 1.1 platform, please note that you must set the the android:minSdkVersion attribute in the application's manifest to the API Level of Android 1.1 — "2".

      +

      If you are using this SDK to build an application that is compatible +only with Android-powered devices running the Android 1.1 platform, +please note that you must set the the +android:minSdkVersion attribute in the application's manifest to +the API Level of Android 1.1 — "2".

      -

      Specifically, you specify the android:minSdkVersion attribute in a <uses-sdk> element as a child of <manifest> in the manifest file. When set, the attribute looks like this:

      +

      Specifically, you specify the android:minSdkVersion attribute in +a <uses-sdk> element as a child of +<manifest> in the manifest file. When set, the attribute +looks like this:

      <manifest>
         ...
      @@ -24,13 +212,29 @@ page.title=SDK Release Notes
       </manifest>
       
      -

      By setting android:minSdkVersion in this way, you ensure that users will only be able to install your application if their devices are running the Android 1.1 platform. In turn, this ensures that your application will function properly on their devices, especially if it uses APIs introduced in Android 1.1.

      +

      By setting android:minSdkVersion in this way, you ensure that +users will only be able to install your application if their devices are running +the Android 1.1 platform. In turn, this ensures that your application will +function properly on their devices, especially if it uses APIs introduced in +Android 1.1.

      -

      If your application uses APIs introduced in Android 1.1 but does not declare <uses-sdk minSdkVersion="2" />, then it will run properly on Android 1.1 devices but not on Android 1.0 devices.

      +

      If your application uses APIs introduced in Android 1.1 but does not declare +<uses-sdk minSdkVersion="2" />, then it will run properly on +Android 1.1 devices but not on Android 1.0 devices.

      -

      If your application does not use any new APIs introduced in Android 1.1, you can indicate Android 1.0 compatibility by removing minSdkVersion or setting the attribute to "1". However, before publishing your application, you must make sure to compile your application against the Android 1.0 system image (available in the Android 1.0 SDK), to ensure that it builds and functions properly for Android 1.0 devices. You should test the application against system images corresponding to the API Levels that the application is designed to be compatible with.

      +

      If your application does not use any new APIs introduced in Android 1.1, you +can indicate Android 1.0 compatibility by removing minSdkVersion or +setting the attribute to "1". However, before publishing your application, you +must make sure to compile your application against the Android 1.0 system image +(available in the Android 1.0 SDK), to ensure that it builds and functions +properly for Android 1.0 devices. You should test the application against system +images corresponding to the API Levels that the application is designed to be +compatible with.

      -

      If you are sure your application is not using Android 1.1 APIs and has no need to use them, you might find it easier to keep working in the Android 1.0 SDK, rather than migrating to the Android 1.1 SDK and having to do additional testing.

      +

      If you are sure your application is not using Android 1.1 APIs and has no +need to use them, you might find it easier to keep working in the Android 1.0 +SDK, rather than migrating to the Android 1.1 SDK and having to do additional +testing.

      ADT Plugin Compatibility

      @@ -52,7 +256,7 @@ application on the Android 1.1 emulator for the first time.

      If you're installing the Android SDK for the first time, please see the instructions in Installing the SDK. +href="{@docRoot}sdk/1.5_r1/installing.html">Installing the SDK.

      Other Notes

      @@ -136,9 +340,6 @@ are not working in this release.
    - - -

    Android 1.0 SDK, Release 2

    This SDK release includes the Android 1.0 platform and application API. diff --git a/docs/html/sdk/adt_download.jd b/docs/html/sdk/adt_download.jd index 6e9eec4a2b73..6d46297830e8 100644 --- a/docs/html/sdk/adt_download.jd +++ b/docs/html/sdk/adt_download.jd @@ -26,11 +26,18 @@ page. - 0.8.0 - ADT-0.8.0.zip - 23 September 2008 - Android 1.1 SDK, Release 1
    Android 1.0 SDK, Release 1
    - Required for users of Android 1.1 SDK, Release 1 and Android 1.0 SDK, Release 1
    + 0.9.0 + ADT-0.9.0.zip + 27 April 2009 + Android 1.5 SDK + Required for users of Android 1.5 SDK (and later releases)
    + + + 0.8.0 + ADT-0.8.0.zip +
    23 September 2008 + Android 1.1 SDK
    Android 1.0 SDK
    +
    Required for users of Android 1.1 SDK and Android 1.0 SDK
    0.7.1 diff --git a/docs/html/sdk/android-1.5-highlights.jd b/docs/html/sdk/android-1.5-highlights.jd new file mode 100644 index 000000000000..46022d159d22 --- /dev/null +++ b/docs/html/sdk/android-1.5-highlights.jd @@ -0,0 +1,205 @@ +page.title=Android 1.5 Platform Highlights +sdk.version=1.5_r1 +@jd:body + +

    +April 2009 +

    + + +

    The Android 1.5 platform introduces many new features for users and developers. +The list below provides an overview of the changes.

    + + + +

    User interface refinements

    +
      +
    • System-wide: +
        +
      • Refinement of all core UI elements
      • +
      • Animated window transitions (off by default)
      • +
      • Accelerometer-based application rotations
      • +
      +
    • +
    • UI polish for: +
        +
      • In-call experience
      • +
      • Contacts, Call log, and Favorites
      • +
      • SMS & MMS
      • +
      • Browser
      • +
      • Gmail
      • +
      • Calendar
      • +
      • Email
      • +
      • Camera & Gallery
      • +
      • Application management
      • +
      +
    • +
    + +

    Performance improvements

    + +
      +
    • Faster Camera start-up and image capture
    • +
    • Much faster acquisition of GPS location (powered by SUPL AGPS)
    • +
    • Smoother page scrolling in Browser
    • +
    • Speedier GMail conversation list scrolling
    • +
    + +

    New features

    + +
      +
    • On-screen soft keyboard +
        +
      • Works in both portrait and landscape orientation
      • +
      • Support for user installation of 3rd party keyboards
      • +
      • User dictionary for custom words
      • +
      +
    • + +
    • Home screen +
        +
      • Widgets +
          +
        • Bundled home screen widgets include: analog clock, calendar, + music player, picture frame, and search
        • +
      • +
      • Live folders
      • +
      +
    • + +
    • Camera & Gallery +
        +
      • Video recording
      • +
      • Video playback (MPEG-4 & 3GP formats)
      • +
      +
    • + +
    • Bluetooth  +
        +
      • Stereo Bluetooth support (A2DP and AVCRP profiles)
      • +
      • Auto-pairing
      • +
      • Improved handsfree experience
      • +
      +
    • + +
    • Browser +
        +
      • Updated with latest Webkit browser & Squirrelfish Javascript engines
      • +
      • Copy 'n paste in browser
      • +
      • Search within a page
      • +
      • User-selectable text-encoding
      • +
      • UI changes include: +
          +
        • Unified Go and Search box
        • +
        • Tabbed bookmarks/history/most-visited screen
        • +
        +
      • +
      +
    • + +
    • Contacts +
        +
      • Shows user picture for Favorites
      • +
      • Specific date/time stamp for events in call log
      • +
      • One-touch access to a contact card from call log event
      • +
      +
    • + +
    • System +
        +
      • New Linux kernel (version 2.6.27)
      • +
      • SD card filesystem auto-checking and repair
      • +
      • SIM Application Toolkit 1.0
      • +
      +
    • + +
    • Google applications (not available in the Android 1.5 System Image that is +included in the Android SDK) +
        +
      • View Google Talk friends' status in Contacts, SMS, MMS, GMail, and + Email applications
      • +
      • Batch actions such as archive, delete, and label on Gmail messages
      • +
      • Upload videos to Youtube
      • +
      • Upload photos on Picasa
      • +
      +
    • +
    + +

    New APIs and manifest elements

    + + diff --git a/docs/html/sdk/android-1.5.jd b/docs/html/sdk/android-1.5.jd index fff911e29096..c9ab42e01e9e 100644 --- a/docs/html/sdk/android-1.5.jd +++ b/docs/html/sdk/android-1.5.jd @@ -8,7 +8,250 @@ sys.date=April 2009 API Level: 3

    -

    Please see Download the Android 1.5 Early Look SDK for more information.

    +

    This document provides version notes for the Android 1.5 system image included in the SDK.

    + + + +

    Overview

    + +

    The Android 1.5 system delivered in the SDK (as library and system image) is +the development counterpart to the Android 1.5 production system image, +deployable to Android-powered handsets starting in May 2009. The system is fully +compliant and includes no external libraries. This is the first version of the +Android SDK that does not include the Maps external library.

    + +

    The Android 1.5 system delivers an updated version of the framework +API. As with previous versions, the Android 1.5 API +is assigned an integer identifier — 3 — that is +stored in the system itself. This identifier, called the "API Level", allows the +system to correctly determine whether an application is compatible with +the system, prior to installing the application.

    + +

    Applications can reference a specific API Level value in their +manifest files, to indicate the minimum version of the Android system +required to run the application. To reference a minimum API Level, applications +can add a minSdkVersion attribute in their manifest files. +The value of the attribute is an integer corresponding to an API Level +identifier. Prior to installing an application, the system then checks the value of +minSdkVersion and allows the install only +if the referenced integer is less than or equal to the API Level integer stored +in the system itself.

    + +

    When you migrate your application to the new SDK, you will need to choose +the platform version against which you will compile your application. In +general, you should compile your application against the lowest possible +version of the platform that your application can support. After you determine +the lowest version, you should ensure that your application's manifest file +defines the API Level of the lowest compatible platform version in the +minSdkVersion attribute. + +

    After compiling your application, you should make sure to test it on the +platform specified in the application's minSdkVersion attribute. To +ensure forward-compatibility, you should also run the application on platforms +using a higher API Level than that used by your application. To run your +application against different platform versions in the emulator, you create an +AVD for each platform version that you want to test. For more information about +AVDs, see Android Virtual +Devices. If you are using a physical device for testing, ensure that you +know the API Level of the Android platform it runs.

    + +

    If you build an application using the Android 1.5 library and your +application makes use of any APIs introduced in API Level 3, you must set the +android:minSdkVersion attribute in the application's manifest to +"3".

    + +

    Specifically, you define the android:minSdkVersion +attribute in a <uses-sdk> element as a child of +<manifest> in the manifest file. When set, the +attribute looks like this:

    + +
    <manifest>
    +  ...
    +  <uses-sdk minSdkVersion="3" />
    +  ...
    +</manifest>
    + +

    By setting android:minSdkVersion in this way, you ensure that +users will only be able to install your application if their devices are running +a compatible version of the Android platform. In turn, this ensures that your +application will function properly on their devices. This is especially +important if your application uses APIs or system features +introduced in Android 1.5.

    + +

    If your application uses APIs introduced in Android 1.5 but does not +declare <uses-sdk minSdkVersion="3" />, then it will +run properly on Android 1.5 devices but not on Android 1.0 +devices. In the latter case, the application will crash at runtime when +it tries to use the Android 1.5 APIs.

    + +

    Conversely, if your application does not use any new APIs introduced in +Android 1.5, the application will in most cases function normally on devices +running a later version of the platform. However, if you have published +the application, you are strongly encouraged to install and test your +application on the Android 1.5 system image included in the SDK. This will +ensure a smooth transition for users, as they upgrade their devices to +the new version of the Android platform.

    + +

    Finally, if your application does not use any new APIs introduced since +Android 1.1, you can indicate general Android 1.1 compatibility by +setting the attribute to "2". If your application does not use any +new APIs introduced since Android 1.0, you can remove the attribute or +set it to "1". However, +before publishing your application, you must make sure to compile your +application against the Android library that corresponds to the application's +minSdkVeresion value.

    + +

    Built-in Applications

    + +

    The system image includes these built-in applications:

    +
      +
    • Alarm Clock
    • +
    • Browser
    • +
    • Calculator
    • +
    • Camcorder
    • +
    • Camera
    • +
    • Contacts
    • +
    • Custom Locale (developer app)
    • +
    • Dev Tools (developer app)
    • +
    • Dialer
    • +
    • Email
    • +
    • Gallery
    • +
    • Messaging
    • +
    • Music
    • +
    • Settings
    • +
    • Spare Parts (developer app)
    • +
    + +

    Locales

    + +

    The system image provides a variety of built-in locales. In some cases, +region-specific strings are available for the locales. In other cases, +a default version of the language is used. The languages that will be +available in the Android 1.5 system image are listed below (with +language_country/region locale descriptor).

    + +
    +
      +
    • Chinese, PRC (zh_CN)
    • +
    • Chinese, Taiwan (zh_TW)
    • +
    • Czech (cs_CZ)
    • +
    • Dutch, Netherlands (nl_NL)
    • +
    • Dutch, Belgium (nl_BE)
    • +
    • English, US (en_US)
    • +
    • English, Britain (en_GB)
    • +
    • English, Canada(en_CA)
    • +
    • English, Australia (en_AU)
    • +
    • English, New Zealand (en_NZ)
    • +
    • English, Singapore(en_SG)
    • +
    • French, France (fr_FR)
    • +
    +
    +
  35. French, Belgium (fr_BE)
  36. +
  37. French, Canada (fr_CA)
  38. +
  39. French, Switzerland (fr_CH)
  40. +
  41. German, Germany (de_DE)
  42. +
  43. German, Austria(de_AT)
  44. +
  45. German, Switzerland (de_CH)
  46. +
  47. German, Liechtenstein (de_LI)
  48. +
  49. Italian, Italy (it_IT)
  50. +
  51. Italian, Switzerland (it_CH)
  52. +
  53. Japanese (ja_JP)
  54. +
  55. Korean (ko_KR)
  56. +
  57. Polish (pl_PL)
  58. +
  59. Russian (ru_RU)
  60. +
  61. Spanish (es_ES)
  62. + +
    + +

    Localized UI strings match the locales that are displayable in +the emulator, accessible through the device Settings application.

    + + + +

    New Features

    + +

    For a list of new system features, see the Android 1.5 Platform +Highlights document.

    + +

    API Changes

    + +

    Overview

    + +
      +
    • UI framework
    • +
        +
      • Framework for easier background/UI thread interaction
      • +
      • New SlidingDrawer widget
      • +
      • Horizontal ScrollView widget
      • +
      + +
    • Home Screen framework
    • +
        +
      • APIs for creating secure home screen widgets
      • +
      • APIs for populating live folders with custom content
      • +
      + +
    • Media framework
    • +
        +
      • Raw audio recording and playback APIs
      • +
      • Interactive MIDI playback engine
      • +
      • Video recording APIs for developers (3GP format)
      • +
      • Video and photo sharing Intents
      • +
      • Media search Intent
      • +
      +
    • Input Method framework
    • +
        +
      • Text prediction engine
      • +
      • Ability to provide downloadable IMEs to users
      • +
      +
    • Application-defined hardware requirements +

      Applications can now use a new element in their manifest files, +<uses-configuration> to indicate to the Android system what hardware +features they require in order to function properly. For example, an application +might use the element to specify that it requires a physical keyboard or a +particular navigation device, such as a trackball. Prior to installing the +application, the Android system checks the attributes defined for the +<uses-configuration> element and allows the installation to +continue only if the required hardware is present.

    • +
    • Speech recognition framework
    • +
        +
      • Support for using speech recognition libraries via Intent
      • +
      +
    • Misc API additions
    • +
        +
      • LocationManager - Applications can get location change updates via +Intent
      • +
      • WebView - Touch start/end/move/cancel DOM event support
      • +
      • SensorManager - redesigned sensor APIs
      • +
      • GLSurfaceView - convenience framework for creating OpenGL +applications
      • +
      • Broadcast Intent for app update install succeeded - for smoother app +upgrade experience
      • +
      + +
    + +

    API Change Details

    + +

    For a detailed view of API changes in this platform (API Level 3), see the API Differences Report.

    diff --git a/docs/html/sdk/sdk_toc.cs b/docs/html/sdk/sdk_toc.cs index 8c7a0a764fe6..1e5122ffb644 100644 --- a/docs/html/sdk/sdk_toc.cs +++ b/docs/html/sdk/sdk_toc.cs @@ -2,17 +2,17 @@
    • -

      Android 1.5 SDK, r1

      Android SDK, r

      Current SDK Release

    • -

      Android System Images

      +

      System Image Version Notes

      • Android 1.5 Version Notes
      • Android 1.1 Version Notes
      • @@ -29,8 +29,9 @@
      • Previous SDK Releases

      • Date: Tue, 21 Apr 2009 19:09:24 -0700 Subject: [PATCH 16/72] AI 147306: re-write the Developing in Other IDEs doc with updated information for 1.5 BUG=1796104 Automated import of CL 147306 --- docs/html/guide/developing/other-ide.jd | 487 ++++++++++++++++++------ 1 file changed, 364 insertions(+), 123 deletions(-) diff --git a/docs/html/guide/developing/other-ide.jd b/docs/html/guide/developing/other-ide.jd index 7bcb509a4f4e..5db4f8d19b22 100644 --- a/docs/html/guide/developing/other-ide.jd +++ b/docs/html/guide/developing/other-ide.jd @@ -1,167 +1,408 @@ -page.title=In Other IDEs +page.title=Developing In Other IDEs @jd:body + +

        The recommended way to develop an Android application is to use - Eclipse with the Android - Development Tools (ADT) plugin, provided in the SDK. The ADT plugin - provides editing, building,and debugging functionality integrated right into the IDE.

        +Eclipse with the ADT plugin. +The ADT plugin provides editing, building, debugging, and .apk packaging and signing functionality +integrated right into the IDE.

        -

        However, if you'd rather develop your application in another IDE, such as IntelliJ, - or use Eclipse without the ADT plugin, you can do that instead. The SDK - provides the tools you need to set up, build, and debug your application. -

        +

        However, if you'd rather develop your application in another IDE, such as IntelliJ, +or in a basic editor, such as Emacs, you can do that instead. The SDK +includes all the tools you need to set up an Android project, build it, debug it and then +package it for distribution. This document is your guide to using these tools.

        -

        Creating an Android Project

        +

        Essential Tools

        -

        The Android SDK includes activityCreator, a program that generates a number of stub files for your project, as well as a build file. You can use the program to create an Android project for new code or from existing code, such as the sample applications included in the SDK. For Linux and Mac, the SDK provides activitycreator and for Windows, activityCreator.bat, a batch script. Regardless of platform, you can use activitycreator in the same way.

        +

        When developing in IDEs or editors other than Eclipse, you'll require +familiarity with the following Android SDK tools:

        -

        To run activityCreator and create an Android project, follow these steps:

        +
        +
        android
        +
        To create/update Android projects and to create/move/delete AVDs.
        +
        Android Emulator
        +
        To run your Android applications on an emulated Android platform.
        +
        Android Debug Bridge
        +
        To interface with your emulator or connected device (install apps, + shell the device, issue commands, etc.). +
        +
        + +

        In addition to the above tools, included with the SDK, you'll use the following +open source and third-party tools:

        + +
        +
        Ant
        +
        To compile and build your Android project into an installable .apk file.
        +
        Keytool
        +
        To generate a keystore and private key, used to sign your .apk file.
        +
        Jarsigner (or similar signing tool)
        +
        To sign your .apk file with a private key generated by keytool.
        +
        + +

        In the topics that follow, you'll be introduced to each of these tools as necessary. +For more advanced operations, please read the respective documentation for each tool.

        + + +

        Creating an Android Project

        + +

        To create an Android project, you must use the android tool. When you create +a new project with android, it will generate a project directory +with some default application files, stub files, configuration files and a build file.

        -
          -
        1. In the command line, change to the tools/ directory of the SDK and create a new directory for your project files. If you are creating a project from existing code, change to the root folder of your application instead.
        2. -
        3. Run activityCreator. In the command, you must specify a fully-qualified class name as an argument. If you are creating a project for new code, the class represents the name of a stub class that the script will create. If you are creating a project from existing code, you must specify the name of one Activity class in the package. Command options for the script include: +

          Creating a new Project

          + +

          If you're starting a new project, use the android create project +command to generate all the necessary files and folders.

          + +

          To create a new Android project, open a command-line, +navigate to the tools/ directory of your SDK and run:

          +
          +android create project \
          +--target <targetID> \
          +--path /path/to/your/project \
          +--activity <your_activity_name> \
          +--package <your_package_namespace>
          +
          +
            -
          • --out <folder> which sets the output directory. By default, the output directory is the current directory. If you created a new directory for your project files, use this option to point to it.
          • -
          • --ide intellij, which generates IntelliJ IDEA project files in the newly created project
          • +
          • target is the "build target" for your application. It corresponds + to an Android platform library (including any add-ons, such as Google APIs) that you would like to + build your project against. To see a list of available targets and their corresponding IDs, + execute: android list targets.
          • +
          • path is the location of your project directory. If the directory does not exist, + it will be created for you.
          • +
          • activity is the name for your {@link android.app.Activity} class. This class file + will be created for you inside + <path_to_your_project>/src/<your_package_namespace_path>/.
          • +
          • package is the package namespace for your project, following the same rules as for + packages in the Java programming language.
          -
        4. -
        -

        Here's an example:

        +

        Here's an example:

        -~/android_linux_sdk/tools $ ./activityCreator.py --out myproject your.package.name.ActivityName
        -package: your.package.name
        -out_dir: myproject
        -activity_name: ActivityName
        -~/android_linux_sdk/tools $ 
        +android create project \ +--target 1 \ +--path ./myProject \ +--activity MyActivity \ +--package com.example.myproject + -

        The activityCreator script generates the following files and directories (but will not overwrite existing ones):

        +

        The tool generates the following files and directories:

          -
        • AndroidManifest.xml The application manifest file, synced to the specified Activity class for the project.
        • -
        • build.xml An Ant file that you can use to build/package the application.
        • -
        • src/your/package/name/ActivityName.java The Activity class you specified on input.
        • -
        • your_activity.iml, your_activity.ipr, - your_activity.iws    [only - with the -ide intelliJ flag] intelliJ project - files.
        • -
        • res/   A directory to hold resources.
        • -
        • src/    The source directory. -
        • bin/    The output directory for the build script.
        • +
        • AndroidManifest.xml - The application manifest file, + synced to the specified Activity class for the project.
        • +
        • build.xml - Build file for Ant.
        • +
        • default.properties - Properties for the build system. Do not modify + this file.
        • +
        • build.properties - Customizable properties for the build system. You can edit this + file to overried default build settings used by Ant.
        • +
        • src/your/package/namespace/ActivityName.java - The Activity class + you specified during project creation.
        • +
        • bin/ - Output directory for the build script.
        • +
        • gen/ - Holds Ant-generated files, such as R.java.
        • +
        • libs/ - Holds private libraries.
        • +
        • res/ - Holds project resources.
        • +
        • src/ - Holds source code.
        • +
        • tests/ - Holds a duplicate of all-of-the-above, for testing purposes.
        -

        You can now move your folder wherever you want for development, but keep in mind - that you'll have to use the adb program in the tools/ folder to - send files to the emulator, so you'll need access between your solution and - the tools/ folder.

        - -

        Also, you should refrain from moving the - location of the SDK directory, since this will break the build scripts (they - will need to be manually updated to reflect the new SDK location before they will - work again).

        - -

        Building the Application with Ant

        -

        Use the Ant build.xml file generated by - activityCreator to build your application.

        -
          -
        1. If you don't have it, you can obtain Ant from the - Apache Ant home page. Install it and make - sure it is on your executable path.
        2. -
        3. Before calling Ant, you need to declare the JAVA_HOME environment variable to specify the path to where the JDK is installed. -

          Note: When installing JDK on Windows, the default is to install in the "Program Files" directory. This location will cause ant to fail, because of the space. To fix the problem, you can specify the JAVA_HOME variable like this: set JAVA_HOME=c:\Prora~1\Java\. The easiest solution, however, is to install JDK in a non-space directory, for example: c:\java\jdk1.6.0_02.

          -
        4. - - -
        5. If you have not done so already, follow the instructions for Creating a - New Project above to set up the project.
        6. -
        7. You can now run the Ant build file by simply typing ant in the same folder - as the build.xml file for your project. Each time you change - a source file or resource, you should run ant again and it will package up the - latest version of the application for you to deploy.
        8. -
        +

        Once you've created your project, you're ready to begin development. +You can move your project folder wherever you want for development, but keep in mind +that you must use the Android Debug Bridge +(adb) — located in the SDK tools/ directory — to send your application +to the emulator (discussed later). So you need access between your project solution and +the tools/ folder.

        + +

        Note: You should refrain from moving the +location of the SDK directory, because this will break the build scripts. (They +will need to be manually updated to reflect the new SDK location before they will +work again.)

        + -

        Setting Up Application Signing

        +

        Updating a project

        -

        As you begin developing Android applications, you should understand that all +

        If you're upgrading a project from an older version of the Android SDK or want to create +a new project from existing code, use the +android update project command to update the project to the new development +environment. You can also use this command to revise the build target of an existing project +(with the --target option). The android tool will generate any files and +folders (listed in the previous section) that are either missing or need to be updated, +as needed for the Android project.

        + +

        To update an existing Android project, open a command-line +and navigate to the tools/ directory of your SDK. Now run:

        +
        +android update project --target <targetID> --path path/to/your/project/
        +
        + +
          +
        • target is the "build target" for your application. It corresponds to + an Android platform library (including any add-ons, such as Google APIs) that you would + like to build your project against. To see a list of available targets and their corresponding IDs, + execute: android list targets.
        • +
        • path is the location of your project directory.
        • +
        + +

        Here's an example:

        +
        +android update project --target 2 --path ./myProject
        +
        + + +

        Preparing to Sign Your Application

        + +

        As you begin developing Android applications, understand that all Android applications must be digitally signed before the system will install -them on the emulator or an actual device.

        +them on an emulator or device. There are two ways to do this: +with a debug key (for immediate testing on an emulator or development device) +or with a private key (for application distribution).

        -

        The Android build tools help you get started quickly by signing your .apk -files with a debug key, prior to installing them on the emulator. This means +

        The Android build tools help you get started by automatically signing your .apk +files with a debug key at build time. This means that you can compile your application and install it on the emulator without having to generate your own private key. However, please note that if you intend -to publish your application, you must sign the application with your +to publish your application, you must sign the application with your own private key, rather than the debug key generated by the SDK tools.

        -

        To sign your applications, the ADT plugin requires the Keytool utility -included in the JDK. To set up your development environment for -signing, all you need to do is make sure that Keytool is available on your -machine that the build tools know how to find it.

        - -

        In most cases, you can tell the SDK build tools how to find Keytool by making -sure that -your JAVA_HOME environment variable is set and that it references a suitable -JDK. Alternatively, -you can add the JDK version of Keytool to your PATH variable.

        - -

        If you are developing on a version of Linux that originally came with Gnu -Compiler for Java, -make sure that the system is using the JDK version of Keytool, rather than the -gcj version. -If keytool is already in your PATH, it might be pointing to a symlink at -/usr/bin/keytool. -In this case, check the symlink target to make sure that it points to the -keytool in the JDK.

        - -

        In all cases, please read and understand Signing Your -Applications, which provides an overview of application signing on Android -and what it means to you as an Android application developer.

        - - -

        Running an Android Application

        -

        To run a compiled - application, you will upload the .apk file to the /data/app/ directory - in the emulator using the adb tool as described here:

        +

        Please read Signing Your +Applications, which provides a thorough guide to application signing on Android +and what it means to you as an Android application developer.

        + + + +

        Building Your Application

        + +

        There are two ways to build your application: one for testing/debugging your application +— debug mode — and one for building your final package for release — +release mode. As described in the previous +section, your application must be signed before it can be installed on an emulator +or device.

        + +

        Whether you're building in debug mode or release mode, you +need to use the Ant tool to compile and build your project. This will create the .apk file +that is installed onto the emulator or device. When you build in debug mode, the .apk +file is automatically signed by the SDK tools with a debug key, so it's instantly ready for installation +(but only onto an emulator or attached development device). +When you build in release mode, the .apk file is unsigned, so you must manually +sign it with your own private key, using Keytool and Jarsigner.

        + +

        It's important that you read and understand +Signing Your Applications, particularly +once you're ready to release your application and share it with end-users. That document describes +the procedure for generating a private key and then using it to sign your .apk file. +If you're just getting started, however, +you can quickly run your applications on an emulator or your own development device by building in +debug mode.

        + +

        If you don't have Ant, you can obtain it from the +Apache Ant home page. Install it and make +sure it is in your executable PATH. Before calling Ant, you need to declare the JAVA_HOME +environment variable to specify the path to where the JDK is installed.

        + +

        Note: When installing JDK on Windows, the default is to install +in the "Program Files" directory. This location will cause ant to fail, because of +the space. To fix the problem, you can specify the JAVA_HOME variable like this: +set JAVA_HOME=c:\Prora~1\Java\. The easiest solution, however, is to +install JDK in a non-space directory, for example: c:\java\jdk1.6.0_02.

        + + +

        Building in debug mode

        + +

        For immediate application testing and debugging, you can build your application +in debug mode and immediately install it on an emulator. In debug mode, the build tools automatically +sign your application with a debug key. However, you can (and should) also test your +application in release mode. Debug mode simply allows you to run your application without +manually signing the application.

        + +

        To build in debug mode:

        + +
          +
        1. Open a command-line and navigate to the root of your project directory.
        2. +
        3. Use Ant to compile your project in debug mode: +
          ant debug
          +

          This creates your Android application .apk file inside the project bin/ + directory, named <your_DefaultActivity_name>-debug.apk. The file + is already signed with the debug key.

          +
        4. +
        + +

        Each time you change a source file or resource, you must run Ant +again in order to package up the latest version of the application.

        + +

        To install and run your application on an emulator, see the following section +about Running Your Application.

        + + +

        Building in release mode

        + +

        When you're ready to release and distribute your application to end-users, you must build +your application in release mode. Once you have built in release mode, it's a good idea to perform +additional testing and debugging with the final .apk.

        + +

        To build in release mode:

        + +
          +
        1. Open a command-line and navigate to the root of your project directory.
        2. +
        3. Use Ant to compile your project in release mode: +
          ant release
          +

          This creates your Android application .apk file inside the project bin/ + directory, named <your_DefaultActivity_name>.apk.

          +

          Note: The .apk file is unsigned at this point. + You can't install it on an emulator or device until you sign it with your private key.

          +
        4. +
        + +

        Because release mode builds your application unsigned, your next step is to sign +it with your private key, in order to distribute it to end-users. To complete this procedure, +read Signing Your Applications.

        + +

        Once you have signed your application with a private key, you can install it on an +emulator or device as discussed in the following section about +Running Your Application. +You can also try installing it onto a device from a web server. +Simply upload the signed APK to a web site, then load the .apk URL in your Android web browser to +download the application and begin installation. +(On your device, be sure you have enabled Settings > Applications > Unknown sources.)

        + + +

        Running Your Application

        + +

        Unless you'll be running your application on device hardware, +you need to launch an emulator upon which you will install your application. +An instance of the Android emulator runs a specific Android platform with specific device configuration +settings. The platform and configuration is defined with an Android Virtual Device (AVD). +So before you can launch your emulator, you must define an AVD.

        + +

        If you'll be running your application on device hardware, please read about +Developing On a Device instead.

        +
          -
        1. Start the emulator (run <your_sdk_dir>/tools/emulator from the command line)
        2. -
        3. On the emulator, navigate to the home screen (it is best not to have that - application running when you reinstall it on the emulator; press the Home key - to navigate away from that application).
        4. -
        5. Run adb install myproject/bin/<appname>.apk to upload - the executable. So, for example, to install the Lunar Lander sample, navigate - in the command line to <your_sdk_dir>/sample/LunarLander and type ../../tools/adb install bin/LunarLander.apk
        6. -
        7. In the emulator, open the list of available applications, and scroll down to - select and start your application.
        8. +
        9. Create an AVD +
            +
          1. Open a command-line and navigate to your SDK package's + tools/ directory.
          2. +
          3. First, you need to select a "deployment target." To view available targets, execute: +
            android list targets
            +

            This will output a list of available Android targets, such as:

            +
            +id:1
            +    Name: Android 1.1
            +    Type: platform
            +    API level: 2
            +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
            +id:2
            +    Name: Android 1.5
            +    Type: platform
            +    API level: 3
            +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
            +
            +

            Find the target that matches the Android platform upon which you'd like + to run your application. Note the integer value of the id — + you'll use this in the next step.

            +
          4. +
          5. Create a new AVD using your selected deployment target: +
            android create avd --name <your_avd_name> --target <targetID>
            +
          6. Next, you'll be asked whether you'd like to create a custom hardware profile. + If you respond "yes," you'll be presented with a series of prompts to define various aspects of the + device hardware (leave entries blank to use default values, which are shown in brackets). Otherwise, + press return to use all default values ("no" is the default).
          7. + +
          +
        10. + +
        11. Launch an emulator
        12. +

          From your SDK's tools/ directory, launch an emulator + using an existing AVD (created above): +

          emulator -avd <your_avd_name>
          +

          An instance of the emulator will now launch, running the target and configuration + defined by your AVD.

          + + +
        13. Install your application +

          From your SDK's tools/ directory, install the .apk on the emulator: +

          adb install /path/to/your/application.apk
          +

          If there is more than one emulator running, you must specify the emulator upon which to install + the application, by its serial number, with the -s option. For example:

          +
          adb -s emulator-5554 install /my/project/path/myapp.apk
          +
        14. +
        15. Open your application +

          In the emulator, open the list of available applications to find + and open your application.

          +
        -

        Note: When you install an Activity for the - first time, you might have to restart the emulator before it shows up in the - application launcher, or other applications can call it. This is because - the package manager usually only examines manifests completely on emulator - startup.

        -

        Attaching a Debugger to Your Application

        +

        If you don't see your application on the emulator. Try restarting the emulator +(with the same AVD). Sometimes when you install an Activity for the +first time, it won't show up in the application launcher or be accessible by other +applications. This is because the package manager usually examines manifests +completely only on emulator startup.

        + +

        Tip: If you have only one emulator running, +you can build your application and install it on the emulator in one simple step. +Navigate to the root of your project directory and use Ant to compile the project +with install mode: +ant install. This will build your application, sign it with the debug key, +and install it on the currently running emulator. +If there is more than one emulator currently running +when using the install command, it will fail — it can't select between the +multiple emulators.

        + +

        For more information on the tools used above, please see the following documents:

        + + + +

        Attaching a Debugger to Your Application

        +

        This section describes how to display debug information on the screen (such as CPU usage), as well as how to hook up your IDE to debug running applications on the emulator.

        Attaching a debugger is automated using the Eclipse plugin, but you can configure other IDEs to listen on a debugging port to receive debugging - information.

        + information:

          -
        1. Start the Dalvik Debug Monitor Server (DDMS) - tool , which +
        2. Start the Dalvik Debug Monitor + Server (DDMS) tool, which acts as a port forwarding service between your IDE and the emulator.
        3. Set optional debugging configurations on - your emulator, such as blocking application startup for an activity + your emulator, such as blocking application startup for an Activity until a debugger is attached. Note that many of these debugging options can be used without DDMS, such as displaying CPU usage or screen refresh rate on the emulator.
        4. -
        5. Configure your IDE to attach to port 8700 for debugging. We - include information on - how to set up Eclipse to debug your project.
        6. - +
        7. Configure your IDE to attach to port 8700 for debugging. Read + about + Configuring Your IDE to Attach to the Debugging Port.
        -- GitLab From 9d8dd806d90bd7bdcc0272f2312f334914921e0b Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Tue, 21 Apr 2009 19:17:59 -0700 Subject: [PATCH 17/72] AI 147311: update eclipse docs to include necessary AVD procedures and discuss relevant target facilities BUG=1796104 Automated import of CL 147311 --- docs/html/guide/developing/eclipse-adt.jd | 500 +++++++++++++++------- 1 file changed, 350 insertions(+), 150 deletions(-) diff --git a/docs/html/guide/developing/eclipse-adt.jd b/docs/html/guide/developing/eclipse-adt.jd index 8c482ee40ce5..4f332b13e8cb 100644 --- a/docs/html/guide/developing/eclipse-adt.jd +++ b/docs/html/guide/developing/eclipse-adt.jd @@ -1,193 +1,393 @@ -page.title=In Eclipse, with ADT +page.title=Developing In Eclipse, with ADT @jd:body -

        The Android Development Tools (ADT) plugin for Eclipse adds powerful extensions to the Eclipse integrated development environment. It allows you to create and debug Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android applications:

        + + + +

        The Android Development Tools (ADT) plugin for Eclipse adds powerful extensions to the Eclipse +integrated development environment. It allows you to create and debug Android applications easier +and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android +applications:

          -
        • It gives you access to other Android development tools from inside the Eclipse IDE. For example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage port-forwarding, set breakpoints, and view thread and process informationd irectly from Eclipse.
        • -
        • It provides a New Project Wizard, which helps you quickly create and set up all of the basic files you'll need for a new Android application.
        • +
        • It gives you access to other Android development tools from inside the Eclipse IDE. For +example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage +port-forwarding, set breakpoints, and view thread and process informationd irectly from Eclipse.
        • +
        • It provides a New Project Wizard, which helps you quickly create and set up all of the +basic files you'll need for a new Android application.
        • It automates and simplifies the process of building your Android application.
        • -
        • It provides an Android code editor that helps you write valid XML for your Android manifest and resource files.
        • +
        • It provides an Android code editor that helps you write valid XML for your Android +manifest and resource files.
        • +
        • It will even export your project into a signed APK, which can be distributed to users.
        -

        To begin developing Android applications in the Eclipse IDE with ADT, you first need to download the Eclipse IDE and then download and install the ADT plugin. To do so, follow the steps given in Installing the ADT Plugin, in the installation documentation included with your SDK package.

        - -

        Once you've installed the ADT plugin, you begin by creating an Android -project and then set up a launch configuration. After that, you can write, run, and debug -your application.

        +

        To begin developing Android applications in the Eclipse IDE with ADT, you first need to +download the Eclipse IDE and then download and install the ADT plugin. To do so, follow the +steps given in Installing +the ADT Plugin.

        -

        The sections below provide instructions assuming that you have installed the ADT plugin -in your Eclipse environment. If you haven't installed the ADT plugin, you should do that -before using the instructions below.

        +

        If you are already developing applications using a version of ADT earlier than 0.9, make +sure to upgrade to the latest version before continuing. See the guide to +Update Your Eclipse ADT Plugin.

        - +

        Note: This guide assumes you are using the latest version of +the ADT plugin (0.9). While most of the information covered also applies to previous +versions, if you are using an older version, you may want to consult this document from +the set of documentation included in your SDK package (instead of the online version).

        -

        Creating an Android Project

        -

        The ADT plugin provides a New Project Wizard that you can use to quickly create an -Eclipse project for new or existing code. To create the project, follow these steps:

        +

        Creating an Android Project

        - +

        The ADT plugin provides a New Project Wizard that you can use to quickly create a new +Android project (or a project from existing code). To create a new project:

          -
        1. Select File > New > Project
        2. -
        3. Select Android > Android Project, and press Next
        4. -
        5. Select the contents for the project: -
            -
          • Select Create new project in workspace to start a project for new code. -

            Enter the project name, the base package name, the name of a single Activity class to create as a stub .java file, and a name to use for your application.

          • -
          • Select Create project from existing source to start a project from existing code. Use this option if you want to build and run any of the sample applications included with the SDK. The sample applications are located in the samples/ directory in the SDK. -

            Browse to the directory containing the existing source code and click OK. If the directory contains a valid Android manifest file, the ADT plugin fills in the package, activity, and application names for you.

            -
          • -
          -
        6. -
        7. Press Finish.
        8. -
        - -

        The ADT plugin creates the these folders and - files for you as appropriate for the type of project:

        - +
      • Select File > New > Project.
      • +
      • Select Android > Android Project, and click + Next.
      • +
      • Select the contents for the project: +
          +
        • Enter a Project Name. This will be the name of the folder where your + project is created.
        • +
        • Under Contents, select Create new project in workspace. + Select your project workspace location.
        • +
        • Under Target, select an Android target to be used as the project's Build Target. + The Build Target + specifies which Android platform you'd like your application built against. +

          Unless you know that you'll be using new APIs introduced in the latest SDK, you should + select a target with the lowest platform version possible, such as Android 1.1.

          +

          Note: You can change your the Build Target for your + project at any time: Right-click the project in the Package Explorer, select + Properties, select Android and then check + the desired Project Target.

          +
        • +
        • Under Properties, fill in all necessary fields.
            -
          • src/   A - folder that includes your stub .java Activity file.
          • -
          • res/   A folder for your - resources.
          • -
          • AndroidManifest.xml   The - manifest for your project.
          • +
          • Enter an Application name. This is the human-readable title for your + application — the name that will appear on the Android device.
          • +
          • Enter a Package name. This is the package namespace (following the same rules + as for packages in the Java programming language) where all your source code + will reside.
          • +
          • Select Create Activity (optional, of course, but common) and enter a name + for your main Activity class.
          • +
          • Enter a Min SDK Version. This is an integer that indicates + the minimum API Level required to properly run your application. + Entering this here automatically sets the minSdkVersion attribute in the + <uses-sdk> + of your Android Manifest file. If you're unsure of the appropriate API Level to use, + copy the API Level listed for the Build Target you selected in the Target tab.
          - +
        • +
        +
      • +
      • Click Finish.
- +

Tip: +You can also start the New Project Wizard from the New icon in the toolbar.

+ +

Once you complete the New Project Wizard, ADT creates the following +folders and files in your new project:

+
+
src/
+
Includes your stub Activity Java file. All other Java files for your application + go here.
+
<Android Version>/ (e.g., Android 1.1/)
+
Includes the android.jar file that your application will build against. + This is determined by the build target that you have chosen in the New Project + Wizard.
+
gen/
+
This contains the Java files generated by ADT, such as your R.java file + and interfaces created from AIDL files.
+
assets/
+
This is empty. You can use it to store raw asset files. See + Resources and Assets.
+
res/
+
A folder for your application resources, such as drawable files, layout files, string + values, etc. See + Resources and Assets.
+
AndroidManifest.xml
+
The Android Manifest for your project. See + The AndroidManifest.xml + File.
+
default.properties
+
This file contains project settings, such as the build target. This files is integral + to the project, as such, it should be maintained in a Source Revision Control system. + It should never be edited manually — to edit project properties, + right-click the project folder and select "Properties".
+
+ + +

Running Your Application

+ +

Wait! Before you can run your application on the Android Emulator, +you must create an Android Virtual Device (AVD). +An AVD is a configuration that specifies the Android platform to be used on the emulator. +You can read more about AVDs in the Developing +Overview, but if you just want to get started, follow the simple guide below to create +an AVD.

+ +

If you will be running your applications only on actual device hardware, you do not +need an AVD — see +Developing On a Device for information +on running your applicaiton.

+ +

Creating an AVD

+ +

To avoid some explanation that's beyond the scope of this document, here's the +basic procedure to create an AVD:

-

Creating a Launch Configuration

+
    +
  1. Open a command-line (e.g.,"Command Prompt" application on Windows, or "Terminal" + on Mac/Linux) and navigate to your SDK package's + tools/ directory.
  2. +
  3. First, you need to select a Deployment Target. To view available targets, execute: +
    android list targets
    +

    This will output a list of available Android targets, such as:

    +
    +id:1
    +    Name: Android 1.1
    +    Type: platform
    +    API level: 2
    +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
    +id:2
    +    Name: Android 1.5
    +    Type: platform
    +    API level: 3
    +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
    +
    +

    Find the target that matches the Android platform upon which you'd like + to run your application. Note the integer value of the id — + you'll use this in the next step.

    +
  4. +
  5. Create a new AVD using your selected Deployment Target. Execute: +
    android create avd --name <your_avd_name> --target <targetID>
    +
  6. Next, you'll be asked whether you'd like to create a custom hardware profile. + If you respond "yes," you'll be presented with a series of prompts to define various aspects of the + device hardware (leave entries blank to use default values, which are shown in brackets). Otherwise, + press return to use all default values ("no" is the default).
  7. + +
-

Before you can run and debug your application in Eclipse, you must create a launch configuration for it. A launch configuration specifies the project to launch, the Activity to start, the emulator options to use, and so on.

+

That's it; your AVD is ready. In the next section, you'll see how the AVD is used +when launching your application on an emulator.

-

To create a launch configuration for the application, follow these steps as appropriate for your Eclipse version:

+

To learn more about creating and managing AVDs, please read the +Developing Overview +and android Tool documentation.

-
    -
  1. Open the launch configuration manager. -
      -
    • In Eclipse 3.3 (Europa), select Run > - Open Run Dialog... or Run > - Open Debug Dialog... as appropriate. -
    • -
    • In Eclipse 3.4 (Ganymede), select Run > - Run Configurations... or Run > - Debug Configurations... as appropriate. -
    • -
    -
  2. -
  3. In the project type list on the left, locate the Android Application item and double-click it (or right-click > New), to create a new launch configuration.
  4. -
  5. Enter a name for your configuration.
  6. -
  7. On the Android tab, browse for the project and Activity to start.
  8. -
  9. On the Target tab, set the desired screen and network properties, as well as any other emulator startup options.
  10. -
  11. You can set additional options on the Common tab as desired.
  12. -
  13. Press Apply to save the launch configuration, or press Run or Debug (as appropriate).
  14. +

    Running your application

    -
+

Note: Before you can run your application, be sure that +you have created an AVD with a target that satisfies your application's Build Target. +If an AVD cannot be found that meets the requirements of your Build Target, you will see +a console error telling you so and the launch will be aborted.

+

To run (or debug) your application, select Run > Run (or +Run > Debug) from the Eclipse main menu. The ADT plugin +will automatically create a default launch configuration for the project.

-

Setting Up Application Signing

+

When you choose to run or debug your application, Eclipse will perform the following:

-

As you begin developing Android applications, you should understand that all -Android applications must be digitally signed before the system will install -them on the emulator or an actual device.

+
    +
  1. Compile the project (if there have been changes since the last build).
  2. +
  3. Create a default launch configuration (if one does not already exist for the project).
  4. +
  5. Install and start the application on an emulator or device (based on the Deployment Target + defined by the run configuration). +

    By default, Android application run configurations use an "automatic target" mode for + selecting a device target. For information on how automatic target mode selects a + deployment target, see Automatic and manual + target modes below.

    +
  6. +
-

The ADT plugin helps you get started quickly by signing your .apk files with -a debug key, prior to installing them on the emulator. This means that you can -compile your application and install it on the emulator without having to -generate your own private key. However, please note that if you intend to -publish your application, you must sign the application with your own -private key, rather than the debug key generated by the SDK tools.

+

If debugging, the application will start in the "Waiting For Debugger" mode. Once the +debugger is attached, Eclipse will open the Debug perspective.

+ +

To set or change the launch configuration used for your project, use the launch configuration manager. +See Creating a Launch Configuration for information.

-

To sign your applications, the ADT plugin requires the Keytool utility -included in the JDK. To set up your development environment for -signing, you need to make sure that Keytool is available on your -machine that the ADT plugin knows how to find it.

-

In most cases, you can tell the SDK build tools how to find Keytool by making -sure that your JAVA_HOME environment variable is set and that it references a -suitable JDK. Alternatively, you can add the JDK version of Keytool to your -PATH variable.

+

Creating a Run Configuration

-

If you are developing on a version of Linux that originally came with Gnu -Compiler for Java, make sure that the system is using the JDK version of -Keytool, rather than the gcj version. If keytool is already in your PATH, it -might be pointing to a symlink at /usr/bin/keytool. In this case, check the -symlink target to make sure that it points to the keytool in the JDK.

+

The run configuration specifies the project to run, the Activity +to start, the emulator options to use, and so on. When you first run a project +as an Android Application, ADT will automatically create a run configuration. +The default run configuration will +launch the default project Activity and use automatic target mode for device selection +(with no preferred AVD). If the default setting don't suit your project, you can +customize the launch configuration or even create a new.

-

In all cases, please read and understand Signing Your -Applications, which provides an overview of application signing on Android -and what it means to you as an Android application developer.

+

To create or modify a launch configuration, follow these steps as appropriate +for your Eclipse version:

+
    +
  1. Open the run configuration manager. +
      +
    • In Eclipse 3.3 (Europa), select Run > + Open Run Dialog (or Open Debug Dialog) +
    • +
    • In Eclipse 3.4 (Ganymede), select Run > + Run Configurations (or + Debug Configurations) +
    • +
    +
  2. +
  3. Expand the Android Application item and create a new + configuration or open an existing one. +
      +
    • To create a new configuration: +
        +
      1. Select Android Application and click the New launch configuration + icon above the list (or, right-click Android Application and click + New).
      2. +
      3. Enter a Name for your configuration.
      4. +
      5. In the Android tab, browse and select the project you'd like to run with the + configuration.
      6. +
      +
    • To open an existing configuration, select the configuration name from the list + nested below Android Application.
    • +
    +
  4. +
  5. Adjust your desired launch configuration settings. +

    In the Target tab, consider whether you'd like to use Manual or Automatic mode + when selecting an AVD to run your application. + See the following section on Automatic and manual target + modes).

    +
  6. +
- -

Running and Debugging an Application

+

Automatic and manual target modes

-

Once you've set up the project and launch configuration for your application, you can run or debug it as described below.

+

By default, a run configuration uses the automatic target mode in order to select +an AVD. In this mode, ADT will select an AVD for the application in the following manner:

-From the Eclipse main menu, select Run > Run or Run > Debug as appropriate, to run or debug the active launch configuration. +
    +
  1. If there's a device or emulator already running and its AVD configuration + meets the requirements of the application's build target, the application is installed + and run upon it.
  2. +
  3. If there's more than one device or emulator running, each of which meets the requirements + of the build target, a "device chooser" is shown to let you select which device to use.
  4. +
  5. If there are no devices or emulators running that meet the requirements of the build target, + ADT looks at the available AVDs. If one meets the requirements of the build target, + the AVD is used to launch a new emulator, upon which the application is installed and run.
  6. +
  7. If all else fails, the application will not be run and you will see a console error warning + you that there is no existing AVD that meets the build target requirements.
  8. +
-

Note that the active launch configuration is the one most recently selected in the Run configuration manager. It does not necessarily correspond to the application that is selected in the Eclipse Navigation pane (if any).

+

However, if a "preferred AVD" is selected in the run configuration, then the application +will always be deployed to that AVD. If it's not already running, then a new emulator +will be launched.

-

To set or change the active launch configuration, use the launch configuration manager. See Creating a Launch Configuration for information about how to access the launch configuration manager..

+

If your run configuration uses manual mode, then the "device chooser" +is presented every time that your application is run, so that you can select which AVD to use.

-

Running or debugging the application triggers these actions:

-
  • Starts the emulator, if it is not already running.
  • -
  • Compiles the project, if there have been changes since the last build, and installs the application on the emulator.
  • -
  • Run starts the application.
  • -
  • Debug starts the application in "Wait for debugger" mode, then opens the Debug perspective and attaches the Eclipse Java debugger to the application.
  • -
+

Signing your Applications

+

As you begin developing Android applications, understand that all +Android applications must be digitally signed before the system will install +them on an emulator or an actual device. There are two ways to do this: +with a debug key (for immediate testing on an emulator or development device) +or with a private key (for application distribution).

-

Eclipse Tips

-

Executing arbitrary Java expressions in Eclipse

-

You can execute arbitrary code when paused at a breakpoint in Eclipse. For example, - when in a function with a String argument called "zip", you can get - information about packages and call class methods. You can also invoke arbitrary - static methods: for example, entering android.os.Debug.startMethodTracing() will - start dmTrace.

-

Open a code execution window, select Window>Show - View>Display from the main menu to open the - Display window, a simple text editor. Type your expression, highlight the - text, and click the 'J' icon (or CTRL + SHIFT + D) to run your - code. The code runs in the context of the selected thread, which must be - stopped at a breakpoint or single-step point. (If you suspend the thread - manually, you have to single-step once; this doesn't work if the thread is - in Object.wait().)

-

If you are currently paused on a breakpoint, you can simply highlight and execute - a piece of source code by pressing CTRL + SHIFT + D.

-

You can highlight a block of text within the same scope by pressing ALT +SHIFT - + UP ARROW to select larger and larger enclosing blocks, or DOWN ARROW to select - smaller blocks.

-

Here are a few sample inputs and responses in Eclipse using the Display window.

- - - - - - - - - - - - - - - - - -
InputResponse
zip(java.lang.String) /work/device/out/linux-x86-debug/android/app/android_sdk.zip
zip.endsWith(".zip")(boolean) true
zip.endsWith(".jar")(boolean) false
-

You can also execute arbitrary code when not debugging by using a scrapbook page. - Search the Eclipse documentation for "scrapbook".

- -

Running DDMS Manually

- -

Although the recommended way to debug is to use the ADT plugin, you can manually run DDMS and configure Eclipse to debug on port 8700. (Note: Be sure that you have first started DDMS).

+

The ADT plugin helps you get started quickly by signing your .apk files with +a debug key, prior to installing them on an emulator or development device. This means that you can +quickly run your application from Eclipse without having to +generate your own private key. No specific action on your part is needed, +provided ADT has access to Keytool.However, please note that if you intend +to publish your application, you must sign the application with your +own private key, rather than the debug key generated by the SDK tools.

+ +

Please read Signing Your +Applications, which provides a thorough guide to application signing on Android +and what it means to you as an Android application developer. The document also includes +a guide to exporting and signing your application with the ADT's Export Wizard.

+ + +

Eclipse Tips

+ +

Executing arbitrary Java expressions in Eclipse

+ +

You can execute arbitrary code when paused at a breakpoint in Eclipse. For example, + when in a function with a String argument called "zip", you can get + information about packages and call class methods. You can also invoke arbitrary + static methods: for example, entering android.os.Debug.startMethodTracing() will + start dmTrace.

+

Open a code execution window, select Window>Show + View>Display from the main menu to open the + Display window, a simple text editor. Type your expression, highlight the + text, and click the 'J' icon (or CTRL + SHIFT + D) to run your + code. The code runs in the context of the selected thread, which must be + stopped at a breakpoint or single-step point. (If you suspend the thread + manually, you have to single-step once; this doesn't work if the thread is + in Object.wait().)

+

If you are currently paused on a breakpoint, you can simply highlight and execute + a piece of source code by pressing CTRL + SHIFT + D.

+

You can highlight a block of text within the same scope by pressing ALT +SHIFT + + UP ARROW to select larger and larger enclosing blocks, or DOWN ARROW to select + smaller blocks.

+

Here are a few sample inputs and responses in Eclipse using the Display window.

+ + + + + + + + + + + + + + + + + + +
InputResponse
zip(java.lang.String) + /work/device/out/linux-x86-debug/android/app/android_sdk.zip
zip.endsWith(".zip")(boolean) true
zip.endsWith(".jar")(boolean) false
+

You can also execute arbitrary code when not debugging by using a scrapbook page. + Search the Eclipse documentation for "scrapbook".

+ + +

Running DDMS Manually

+ +

Although the recommended way to debug is to use the ADT plugin, you can manually run +DDMS and configure Eclipse to debug on port 8700. (Note: Be sure that you +have first started DDMS).

+ + + -- GitLab From 2b52aa0b68769c6d64ead210208969515c7a8af8 Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Tue, 21 Apr 2009 19:22:40 -0700 Subject: [PATCH 18/72] AI 147314: change carousel SDK to 1.5; revise Google IO info BUG=1800649 Automated import of CL 147314 --- docs/html/index.jd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/html/index.jd b/docs/html/index.jd index bd681e2c6d97..aea229923ae1 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -12,7 +12,7 @@ home=true Google I/O Developer Conference 2009
-

Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco.

+

Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco. The agenda includes a number of great sessions on Android topics by team engineers and other developers.

Learn more »

@@ -116,10 +116,10 @@ home=true 'sdk': { 'layout':"imgLeft", 'icon':"sdk-small.png", - 'name':"SDK 1.1 r1", + 'name':"SDK 1.5 r1", 'img':"sdk-large.png", - 'title':"Android 1.1 SDK r1", - 'desc': "

A new Android SDK is available for download. The new SDK includes minor API changes, new UI localizations, bug fixes and some new application features.

Download Android 1.1 SDK r1

" + 'title':"Android 1.5 SDK r1", + 'desc': "

The final version of the Android 1.5 SDK is now available. It includes new APIs for Android 1.5, updated developer tools, multiple platform versions, and a Google APIs Add-on.

Download Android 1.5 SDK

" }, 'mapskey': { -- GitLab From 7774462ac4fcb0423101655a204fee6698219e4a Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Tue, 21 Apr 2009 19:44:01 -0700 Subject: [PATCH 19/72] AI 147325: update the installing and upgrading docs for cupcake BUG=1793249 Automated import of CL 147325 --- docs/html/sdk/1.5_r1/installing.jd | 324 +++++++++++++++++++++- docs/html/sdk/1.5_r1/upgrading.jd | 414 ++++++++++++++++++++--------- 2 files changed, 618 insertions(+), 120 deletions(-) diff --git a/docs/html/sdk/1.5_r1/installing.jd b/docs/html/sdk/1.5_r1/installing.jd index a1f7cffb0576..bd366ff1add9 100644 --- a/docs/html/sdk/1.5_r1/installing.jd +++ b/docs/html/sdk/1.5_r1/installing.jd @@ -5,6 +5,328 @@ sdk.date=April 2009 page.title=Installing the Android SDK @jd:body -

See the Download page for more information.

+ +

This page describes how to install the Android SDK and set up your +development environment. If you haven't downloaded the SDK, you can +do so from the +Download page. Once you've downloaded +the SDK, return here.

+ +

If you encounter any problems during installation, see the +Installation Notes at the bottom of +this page.

+ +

Upgrading?

+

If you have already developed applications using an earlier version +of the SDK, please read +Upgrading the +SDK, instead. +

+ + +

Preparing for Installation

+ +

Before you begin, take a moment to confirm that your development machine meets the +System Requirements. +

+ +

If you will be developing on Eclipse with the Android Development +Tools (ADT) Plugin — the recommended path if you are new to +Android — make sure that you have a suitable version of Eclipse +installed on your computer (3.3 or newer). If you need to install Eclipse, you can +download it from this location:

+ +

http://www.eclipse.org/downloads/

+ +

A Java or RCP version of Eclipse is recommended.

+ +

Installing the SDK

+ +

After downloading the SDK, unpack the .zip archive to a suitable location on your machine. +By default, the SDK files are unpacked into a directory named +android_sdk_<platform>_<release>. +The directory contains a local copy of the documentation (accessible by opening +documentation.html in your browser) and the subdirectories +tools/, add-ons/, platforms/, and others. Inside +each subdirectory of platforms/ you'll find samples/, which includes +code samples that are specific to each version of the platform.

+ +

Make a note of the name and location of the unpacked SDK directory on your system — you +will need to refer to the SDK directory later, when setting up the Android plugin or when +using the SDK tools.

+ +

Optionally, you may want to add the location of the SDK's primary tools directory +to your system PATH. The primary tools/ directory is located at the root of the +SDK folder. Adding tools to your path lets you run Android Debug Bridge (adb) and +the other command line tools without +needing to supply the full path to the tools directory.

+
    +
  • On Linux, edit your ~/.bash_profile or ~/.bashrc file. Look + for a line that sets the PATH environment variable and add the + full path to the tools/ directory to it. If you don't + see a line setting the path, you can add one:
  • + +
      export PATH=${PATH}:<your_sdk_dir>/tools
    + +
  • On a Mac, look in your home directory for .bash_profile and + proceed as for Linux. You can create the .bash_profile if + you haven't already set one up on your machine.
  • + +
  • On Windows, right-click on My Computer, and select Properties. + Under the Advanced tab, hit the Environment Variables button, and in the + dialog that comes up, double-click on Path (under System Variables). Add the full path to the + tools/ directory to the path.
  • +
+ +

Note that, if you update your SDK in the future, you +should remember to update your PATH settings to point to the new location, if different.

+ +

If you will be using the Eclipse IDE as your development environment, +the next section describes how to install the Android Development Tools plugin and set up Eclipse. +If you choose not to use Eclipse, you can +develop Android applications in an IDE of your choice and then compile, debug and deploy using +the tools included in the SDK (skip to Next Steps).

+ + +

Installing the ADT Plugin for Eclipse

+ +

Android offers a custom plugin for the Eclipse IDE, called Android +Development Tools (ADT), that is designed to give you a powerful, +integrated environment in which to build Android applications. It +extends the capabilites of Eclipse to let you quickly set up new Android +projects, create an application UI, add components based on the Android +Framework API, debug your applications using the Android SDK tools, and even export +signed (or unsigned) APKs in order to distribute your application.

+ +

In general, using Eclipse with ADT is a highly recommended +approach to Android development and is the fastest way to get started. +(If you prefer to work in an IDE other than Eclipse, +you do not need to install Eclipse or ADT, instead, you can directly +use the SDK tools to build and debug your application.)

+ +

Once you have Eclipse installed, as described in Preparing for +Installation, follow the steps below to +download the ADT plugin and install it in your respective Eclipse +environment.

+ + + + + + + +
Eclipse 3.3 (Europa)Eclipse 3.4 (Ganymede)
+ +
    +
  1. Start Eclipse, then select Help > Software Updates +> Find and Install....
  2. +
  3. In the dialog that appears, select Search for new features to install +and click Next.
  4. +
  5. Click New Remote Site.
  6. +
  7. In the resulting dialog box, enter a name for the remote site (e.g. "Android Plugin") and + enter the URL: +
    https://dl-ssl.google.com/android/eclipse/
    +

    If you have trouble aqcuiring the plugin, try using "http" in the URL, + instead of "https" (https is preferred for security reasons).

    +

    Click OK.

  8. +
  9. You should now see the new site added to the search list (and checked). + Click Finish.
  10. +
  11. In the subsequent Search Results dialog box, select the checkbox for the + Android Plugin. + This will select the nested tools: "Android DDMS" and "Android Developer Tools". + Click Next.
  12. +
  13. Read and accept the license agreement, then click Next.
  14. +
  15. On the following Installation window, click Finish.
  16. +
  17. The ADT plugin is not digitally signed. Accept the installation anyway + by clicking Install All.
  18. +
  19. Restart Eclipse.
  20. +
+ +
+ + +
    +
  1. Start Eclipse, then select Help > Software Updates....
  2. +
  3. In the dialog that appears, click the Available Software tab.
  4. +
  5. Click Add Site...
  6. +
  7. Enter the Location: +
    https://dl-ssl.google.com/android/eclipse/
    +

    If you have trouble aqcuiring the plugin, try using "http" in the Location URL, + instead of "https" (https is preferred for security reasons).

    +

    Click OK.

  8. +
  9. Back in the Available Software view, you should see the plugin listed by the URL, + with "Developer Tools" nested within it. Select the checkbox next to + Developer Tools and click Install...
  10. +
  11. On the subsequent Install window, "Android DDMS" and "Android Developer Tools" + should both be checked. Click Next.
  12. +
  13. Read and accept the license agreement, then click Finish.
  14. +
  15. Restart Eclipse.
  16. +
+ +
+ +

Now modify your Eclipse preferences to point to the Android SDK directory:

+
    +
  1. Select Window > Preferences... to open the Preferences + panel (Mac: Eclipse > Preferences).
  2. +
  3. Select Android from the left panel.
  4. +
  5. For the SDK Location in the main panel, click Browse... and +locate your downloaded SDK directory.
  6. +
  7. Click Apply, then OK.
  8. +
+ +

Done! If you haven't encountered any problems, then you're ready to +begin developing Android applications. See the +Next Steps section for suggestions on how to start.

+ + +

Troubleshooting ADT Installation

+

+If you are having trouble downloading the ADT plugin after following the steps above, here are +some suggestions:

+ +
    +
  • If Eclipse can not find the remote update site containing the ADT plugin, try changing + the remote site URL to use http, rather than https. That is, set the Location for the remote site to: +
    http://dl-ssl.google.com/android/eclipse/
  • +
  • If you are behind a firewall (such as a corporate firewall), make + sure that you have properly configured your proxy settings in Eclipse. + In Eclipse 3.3/3.4, you can configure proxy information from the main + Eclipse menu in Window (on Mac, Eclipse) > + Preferences > General > + Network Connections.
  • +
+

+If you are still unable to use Eclipse to download the ADT plugin as a remote update site, you +can download the ADT zip file to your local machine and manually install the it: +

+
    +
  1. Download the ADT zip file (do not unpack it).
  2. +
  3. Follow steps 1 and 2 in the default install instructions (above).
  4. +
  5. In Eclipse 3.3, click New Archive Site....
    + In Eclipse 3.4, click Add Site..., then Archive...
  6. +
  7. Browse and select the downloaded zip file.
  8. +
  9. Follow the remaining procedures, above, starting from steps 5.
  10. +
+

To update your plugin once you've installed using the zip file, you will have to +follow these steps again instead of the default update instructions.

+ +

Other install errors

+ +

Note that there are features of ADT that require some optional +Eclipse components (for example, WST). If you encounter an error when +installing ADT, your Eclipse installion might not include these components. +For information about how to quickly add the necessary components to your +Eclipse installation, see the troubleshooting topic +ADT +Installation Error: "requires plug-in org.eclipse.wst.sse.ui".

+ +

For Linux users

+

If you encounter this error when installing the ADT Plugin for Eclipse: +

+An error occurred during provisioning.
+Cannot connect to keystore.
+JKS
+

+...then your development machine lacks a suitable Java VM. Installing Sun +Java 6 will resolve this issue and you can then reinstall the ADT +Plugin.

+ + +

Next Steps

+

Once you have completed installation, you are ready to +begin developing applications. Here are a few ways you can get started:

+ +

Learn about Android

+
    +
  • Take a look at the Dev + Guide and the types of information it provides
  • +
  • Read an introduction to Android as a platform in What is + Android?
  • +
  • Learn about the Android framework and how applications run on it in + Application + Fundamentals
  • +
  • Take a look at the Android framework API specification in the Reference tab
  • +
+ +

Explore the SDK

+ + +

Explore some code

+
    +
  • Set up a Hello + World application (highly recommended, especially for Eclipse users)
  • +
  • Follow the + Notepad Tutorial to build a full Android application
  • +
  • Create a new project for one of the other sample applications + included in <sdk>/platforms/<platfrom>/samples, + then compile and run it in your development environment
  • +
+ +

Visit the Android developer groups

+
    +
  • Take a look at the Community tab to see a list of + Android developers groups. In particular, you might want to look at the + Android + Developers group to get a sense for what the Android developer + community is like.
  • +
+ + +

Installation Notes

+ +

Ubuntu Linux Notes

+ +
    +
  • If you need help installing and configuring Java on your + development machine, you might find these resources helpful: + +
  • +
  • Here are the steps to install Java and Eclipse, prior to installing + the Android SDK and ADT Plugin. +
      +
    1. If you are running a 64-bit distribution on your development + machine, you need to install the ia32-libs package using + apt-get:: +
      apt-get install ia32-libs
      +
    2. +
    3. Next, install Java:
      apt-get install sun-java6-bin
    4. +
    5. The Ubuntu package manager does not currently offer an Eclipse 3.3 + version for download, so we recommend that you download Eclipse from + eclipse.org (http://www.eclipse.org/ + downloads/). A Java or RCP version of Eclipse is recommended.
    6. +
    7. Follow the steps given in previous sections to install the SDK + and the ADT plugin.
    8. +
    +
  • +
+ +

Other Linux Notes

+ +
    +
  • If JDK is already installed on your development computer, please + take a moment to make sure that it meets the version requirements listed + in the System Requirements. + In particular, note that some Linux distributions may include JDK 1.4 or Gnu + Compiler for Java, both of which are not supported for Android development.
  • +
+ diff --git a/docs/html/sdk/1.5_r1/upgrading.jd b/docs/html/sdk/1.5_r1/upgrading.jd index 532313110cb3..0b7312b3166f 100644 --- a/docs/html/sdk/1.5_r1/upgrading.jd +++ b/docs/html/sdk/1.5_r1/upgrading.jd @@ -2,175 +2,351 @@ page.title=Upgrading the SDK sdk.version=1.5_r1 @jd:body - +
  • UI +framework changes in Android 1.5 »
  • + -
      -
    • Overview of Changes -

      A high-level look at what's changed in Android, with - discussion of how the changes may affect your apps.

    • - -
    • API Diff Report -

      A detailed report that lists all the specific changes in the latest SDK.

    • - -
    • Release Notes -

      Version details, known issues, and resolved issues.

    • - -
    • Android Developers Group -

      A forum where you can discuss migration issues and learn from other Android developers.

    • - -
    • Android Issue Tracker -

      If you think you may have found a bug, use the issue tracker to report it.

    • -
    - -
    ---> + +

    This document describes how to move your development environment and existing +Android applications from an Android 1.0 or 1.1 SDK to the Android 1.5 SDK. +If you are migrating applications from an SDK older than 1.0, please also read the upgrading +document available in the Android 1.0 SDK package.

    -
    -
    +

    There are several compelling reasons to upgrade, such as new SDK tools +that make developing more efficient and new APIs that allow you to expand the feature-set +of your applications. However, even if you or your applications don't require these enhancements, +it's important that you upgrade to ensure that your applications run properly on the +Android 1.5 platform.

    -

    Upgrading quickview

    -
      -
    • The Android 1.5 SDK uses a new project structure and a new ADT plugin (ADT 0.9).
    • -
    • To move existing projects into the SDK, you must make some minor changes in your development environment.
    • -
    • The new ADT plugin (ADT 0.9) is not compatible with projects created in previous SDKs.
    • -
    • You need to uninstall your existing ADT plugin, before installing ADT 0.9.
    • +

      The Android 1.5 platform will soon be deployable to devices around the world. +If you have already released Android applications to the public, you should +test the forward-compatibility of your applications on the latest version of the platform +as soon as possible. It's unlikely that you'll encounter breakage in your applications, but +in the interest of maintaining the best user experience, you should take no risks. +So, please install the new Android SDK and test your applications on Android 1.5.

      -
    +

    For more information on new SDK features and system changes, +see the Android 1.5 Version Notes.

    - -
    -
    -

    See the Download page for more information.

    +

    Install the SDK

    -
      -
    1. Select Help > Software Updates > Find and Install....
    2. -
    3. Select Search for updates of the currently installed features and click Finish.
    4. -
    5. If any update for ADT is available, select and install.
    6. -
    7. Restart Eclipse.
    8. +
    9. Select Help > Software Updates > + Manage Configuration.
    10. +
    11. Expand the list in the left panel to reveal the installed tools.
    12. +
    13. Right-click "Android Editors" and click Uninstall. Click OK + to confirm.
    14. +
    15. Restart Eclipse. +

      (Do not uninstall "Android Development Tools".)

    -

    Alternatively,

    + + +
      -
    1. Select Help > Software Updates > Manage Configuration.
    2. +
    3. Select Help > Software Updates.
    4. +
    5. Select the Installed Software tab.
    6. +
    7. Select "Android Editors". Click Uninstall.
    8. +
    9. In the next window, be sure "Android Editors" is checked, then click Finish + to uninstall.
    10. +
    11. Restart Eclipse. +

      (Do not uninstall "Android Development Tools".)

    12. +
    + + + + + +

    Install the 0.9 ADT plugin

    -
  • Navigate down the tree and select Android Development Tools <version>
  • -
  • Select Scan for Updates under Available Tasks.
  • +

    Only install the new plugin once you've completed the procedure to +Uninstall your previous ADT plugin.

    + + + + +
    Eclipse 3.3 (Europa)Eclipse 3.4 (Ganymede)
    + +
      +
    1. Select Help > Software Updates > + Find and Install.
    2. +
    3. Select Search for new features to install.
    4. +
    5. Select the Android plugin entry by checking the box next to it, + then click Finish. +

      (Your original entry for the plugin should still be here. If not, see the guide + to Installing the ADT Plugin.) +

    6. +
    7. In the results, be sure that "Developer Tools" is checked, then click Next.
    8. +
    9. Read and accept the license agreement, then click Next. +
    10. In the next window, click Finish to start installation.
    11. +
    12. The ADT plugin is not digitally signed. Accept the installation anyway by clicking + Install All.
    13. +
    14. Restart Eclipse.
    +
      -
    1. Select Help > Software Updates...
    2. -
    3. Select the Installed Software tab.
    4. -
    5. Click Update...
    6. -
    7. If an update for ADT is available, select it and click Finish.
    8. +
    9. Select Help > Software Updates.
    10. +
    11. Select the Available Software tab.
    12. +
    13. Expand the entry for the Andriod plugin (may be listed as the location URL) + and select "Developer Tools" by checking the box next to it, then click Install. +
    14. On the next window, "Android DDMS" and "Android Developer Tools" + should both be checked. Click Next. +
    15. Read and accept the license agreement, then click Finish.
    16. Restart Eclipse.
    -

    Update your Eclipse SDK Preferences

    +

    If you encounter problems, ensure your ADT is fully uninstalled and then +follow the guide to +Installing the ADT Plugin +for Eclipse.

    + +

    Update your Eclipse SDK Preferences

    The last step is to update your Eclipse preferences to point to the new SDK directory:

      -
    1. Select Window > Preferences... to open the Preferences panel. (Mac OSX: Eclipse > Preferences)
    2. +
    3. Select Window > Preferences to open the Preferences + panel (Mac: Eclipse > Preferences).
    4. Select Android from the left panel.
    5. -
    6. For the SDK Location in the main panel, click Browse... and locate the SDK directory.
    7. +
    8. For the SDK Location in the main panel, click Browse + and locate your SDK directory.
    9. Click Apply, then OK.
    -

    Migrate Your Applications, if Necessary

    -

    If (and only if) you have written apps in an SDK released previous to -the Android 1.0 SDK, you will need to migrate your applications. After -installing the new SDK and updating the ADT Plugin (if applicable), you -may encounter breakages in your application code, due to -framework and API changes. You'll need to update your code to match the -latest APIs.

    +

    Update Your Projects

    + +

    You will now need to update any and all Android projects that you have +developed using a previous version of the Android SDK.

    + + +

    Eclipse users

    + +

    If you use Eclipse to develop applications, use the following procedure to +update each project:

    + +
      +
    1. Right-click on the individual project (in the Package Explorer) + and select Properties.
    2. +
    3. In the properties, open the Android panel and select a "build target" to compile + against. This SDK offers the Android 1.1 and Android 1.5 platforms to choose from. When + you are initially updating your projects to the new SDK, we recommend that you select a build + target with the Android 1.1 platform. Click Apply, then + OK.
    4. +
    + +

    The new plugin creates a gen/ folder in your project, in which it puts the +R.java file +and all automatically generated AIDL java files. If you get an error such as +The type R is already defined, +then you probably need to delete your old R.java or your old auto-generated +AIDL Java files in the src/ folder. +(This does not apply to your own hand-crafted parcelable AIDL java files.)

    + +

    Note that, with the Android 1.5 SDK, there is a new process for running +applications in the Android Emulator. +Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance +of the Emulator. Before attempting to run your applications with the new SDK, +please continue with the section below to +Migrate Your Applications.

    + + +

    Ant users

    + +

    If you build your projects using the Ant tool (rather than with Eclipse), note the +following changes with the new SDK tools.

    + +

    build.xml has changed

    + +

    You must re-create your build.xml file.

    + +

    If you had customized your build.xml, first make a copy of it:

    + +
    +$ cd my-project
    +$ cp build.xml build.xml.old
    +
    -

    One way to start is to open your project in Eclipse and see where the ADT -identifies errors in your application. You can also look up -specific changes in the Android APIs in the -android-1.5.html#api-changes -Android 1.5 Version Notes +

    Now use the new android tool (located in your_sdk/tools/) +to create a new build.xml that references +a specific platform target:

    -document.

    +
    $ android update project --path /path/to/my-project --target 1
    + +

    The "target" corresponds to an Android platform library (including any add-ons, such as +Google APIs) that you would like to build your project against. You can view a list of available +targets (and their corresponding integer ID) with the command, android list targets. +When you are initially updating your projects to the new SDK, we recommend that you select the +first target ("1"), which uses the Android 1.1 platform library.

    + +

    A gen/ folder will be created the first time you build and your R.java and +your AIDL Java files will be generated in here. You must remove +the old R.java and old auto-generated AIDL java files from the +src/ folder. (This +does not apply to your own hand-crafted parcelabe AIDL java files.)

    + +

    Note: The "activitycreator" tool has been replaced +by the new "android" tool. For information on creating new projects with the android tool, +see the documentation about Developing +In Other IDEs.

    + +

    Note that, with the Android 1.5 SDK, there is a new process for running +applications in the Android Emulator. +Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance +of the Emulator. Before attempting to run your applications with the new SDK, +please continue with the section below to +Migrate Your Applications.

    + + +

    Migrate Your Applications

    + +

    After you have completed the process above to Update Your +Projects, you are strongly encouraged to run each of your applications in an instance +of the emulator running the Android 1.5 system image. It's possible (however, unlikely) +that you'll encounter some breakage in your application when you run your applications on +the Android 1.5 system image. Whether you believe your application will be affected by +platform changes or not, it's very important that you test the application's +forward-compatibility on Android 1.5.

    + +

    To test forward-compatibility, simply run your existing application (as-is) on an Android +Emulator that's running the Android 1.5 system image. The following procedure will guide +you through the process to running your existing applications on an emulator. Please read +the following guide completely before you begin.

    + +

    To test your application on an emulator running Android 1.5:

    +
      +
    1. Update Your Project (you should have done this + already, in the section above).
    2. +
    3. Run your existing project, as-is, on an emulator running the Android 1.5 system image. +

      As mentioned in the guide to Update Your Projects, + you should have selected a "build + target" of "1", which compiles your application against the Android 1.1 system image, so there + should be no new errors in your code.

      +

      Eclipse users: follow the + Eclipse guide to + Running Your Application.

      +

      Ant users: follow the + Ant guide to + Running Your Application +

      During the procedure to Running Your Application, select a "deployment target" + for the AVD that includes the Android 1.5 platform. + If your application utilizes the Google Maps APIs (i.e., + MapView), be certain to select a target that includes the Google APIs.

      +

      Once you complete the procedures to run your application in your respective environment, + linked above, return here.

      +
    4. +
    5. With your application running in the emulator, perform all regular testing on the application + to ensure that it functions normally (in both landscape and portrait orientations).
    6. +
    + +

    Chances are, your application runs just fine on the Android 1.5 platform — +new devices will be able to safely install and run your application and +current users who update their devices will be able to continue using your application as usual. +However, if something doesn't work the way you expect, then you might need to revisit +your project and make any necessary changes to your code.

    + +

    You can check for code breakages caused by API changes by opening your project +in Eclipse, changing the "build target" to one using the Android 1.5 platform, +and see where the ADT identifies errors in your code.

    + +

    There have been several API additions made for this release, but there have been +very few actual API changes. Only a couple (relatively unused) elements +have been removed and a few have been deprecated, so your applications written with the +Android 1.1 system library should work just fine. +Your application will be at highest risk of breakage if it uses Android APIs +that are not available in the public API documentation +or if it explicitly depends on system bugs. For information +about changes made to Android 1.5, refer to the following documents:

    +

    If you have additional trouble updating your code, visit the Android Developers Group to seek help from other Android developers.

    - -

    If you have modified one of the ApiDemos applications and would like to migrate it -to the new SDK, note that you will need to uninstall the version of ApiDemos that comes -preinstalled in the emulator. For more information, or if you encounter an "reinstallation" -error when running or installing ApiDemos, see the troubleshooting topic -I can't install ApiDemos -apps in my IDE because of a signing error for information about how to solve the problem.

    ---> \ No newline at end of file -- GitLab From 6565a5a3002410583b7bdaa5147879032bc3bfb2 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 20:25:36 -0700 Subject: [PATCH 20/72] AI 147332: Miscellaneous doc changes for cupcake SDK BUG=1790234 Automated import of CL 147332 --- docs/html/community/index.jd | 2 +- docs/html/guide/appendix/faq/framework.jd | 17 +- .../guide/appendix/faq/troubleshooting.jd | 48 +- docs/html/guide/developing/app-signing.jd | 428 ------------------ docs/html/guide/developing/tools/avd.jd | 12 +- docs/html/guide/topics/media/index.jd | 2 +- docs/html/guide/topics/media/media.jd | 172 ------- 7 files changed, 20 insertions(+), 661 deletions(-) delete mode 100644 docs/html/guide/developing/app-signing.jd delete mode 100644 docs/html/guide/topics/media/media.jd diff --git a/docs/html/community/index.jd b/docs/html/community/index.jd index 2df4c01d946b..ad3a199aa998 100644 --- a/docs/html/community/index.jd +++ b/docs/html/community/index.jd @@ -77,7 +77,7 @@ phrasing your questions, read android-security-discuss -
  • Subscribe via email: android-secuirty-discuss@googlegroups.com +
  • Subscribe via email: android-security-discuss@googlegroups.com
  • diff --git a/docs/html/guide/appendix/faq/framework.jd b/docs/html/guide/appendix/faq/framework.jd index 76a19c56d19d..33b69acf2150 100644 --- a/docs/html/guide/appendix/faq/framework.jd +++ b/docs/html/guide/appendix/faq/framework.jd @@ -12,7 +12,7 @@ parent.link=index.html from one Activity/Service to another?
  • How can I check if an Activity is already running before starting it?
  • -
  • If an Activity starts a remote service,is +
  • If an Activity starts a remote service, is there any way for the Service to pass a message back to the Activity?
  • How to avoid getting the Application not responding dialog?
  • @@ -20,7 +20,6 @@ parent.link=index.html added or removed? - @@ -32,7 +31,7 @@ default. If needed, you can declare an android:process attribute in your manifest file, to explicitly place a component (Activity/Service) in another process.

    - + @@ -47,7 +46,7 @@ separate pool of transaction threads in each process to dispatch all incoming IPC calls. The developer should create separate threads for any long-running code, to avoid blocking the main UI thread.

    - + @@ -128,7 +127,7 @@ the Data Storage for further details on how to use these components.

    - + @@ -140,7 +139,7 @@ or to bring the activity stack to the front if is already running in the background— is the to use the NEW_TASK_LAUNCH flag in the startActivity() call.

    - + @@ -156,7 +155,7 @@ messages.

    The sample code for remote service callbacks is given in ApiDemos/RemoteService

    - + @@ -166,7 +165,7 @@ href="{@docRoot}guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteSe document.

    - + @@ -194,5 +193,5 @@ removed.

    - + diff --git a/docs/html/guide/appendix/faq/troubleshooting.jd b/docs/html/guide/appendix/faq/troubleshooting.jd index 7c703e6d07f3..0cf1ab006d1e 100644 --- a/docs/html/guide/appendix/faq/troubleshooting.jd +++ b/docs/html/guide/appendix/faq/troubleshooting.jd @@ -23,7 +23,6 @@ parent.link=index.html
  • When I go to preferences in Eclipse and select "Android", I get the following error message: Unsupported major.minor version 49.0.
  • I can't install ApiDemos apps in my IDE because of a signing error
  • I can't compile my app because the build tools generated an expired debug certificate
  • -
  • I can't run a JUnit test class in Eclipse/ADT
  • ADT Installation Error: "requires plug-in org.eclipse.wst.sse.ui".

    @@ -245,8 +244,8 @@ documentation.

    1. First, delete the debug keystore/key already generated by the Android build tools. Specifically, delete the debug.keystore file. On Linux/Mac OSX, the file is stored in ~/.android. On Windows XP, the file is stored in -C:\Documents and Settings\<user>\Local Settings\Application Data\Android. On Windows Vista, the file is stored in -C:\Users\<user>\AppData\Local\Android
    2. +C:\Documents and Settings\<user>\.android
      . On Windows Vista, the file is stored in +C:\Users\<user>\.android
    3. Next, you can either
      • Temporarily change your development machine's locale (date and time) to one that uses a Gregorian calendar, for example, United States. Once the locale is changed, use the Android build tools to compile and install your app. The build tools will regenerate a new keystore and debug key with valid dates. Once the new debug key is generated, you can reset your development machine to the original locale.
      • @@ -260,46 +259,3 @@ C:\Users\<user>\AppData\Local\Android

        For general information about signing Android applications, see Signing Your Applications.

        -

        I can't run a JUnit test class in Eclipse/ADT

        - -

        If you are developing on Eclipse/ADT, you can add JUnit test classes to your application. However, you may get an error when trying to run such a class as a JUnit test:

        - -
        Error occurred during initialization of VM
        -java/lang/NoClassDefFoundError: java/lang/ref/FinalReference
        - -

        This error occurs because android.jar does not include complete Junit.* class implementations, but includes stub classes only.

        - -

        To add a JUnit class, you have to set up a JUnit configuration:. - -

          -
        1. In the Package Explorer view, select your project.
        2. -
        3. Open the launch configuration manager. -
            -
          • In Eclipse 3.3 (Europa), select Run > - Open Run Dialog... or Run > - Open Debug Dialog... . -
          • - -
          • In Eclipse 3.4 (Ganymede), select Run > - Run Configurations... or Run > - Debug Configurations... . -
          • -
          -
        4. -
        5. In the configuration manager, right-click the "JUnit" configuration type and select New
        6. -
        7. In the new configuration's Test tab, specify the project and test class, as well as any options for running the test.
        8. -
        9. In the new configuration's Classpath tab, find "Android Library" under Bootstrap Entries and remove it.
        10. -
        11. Still in the Classpath tab, select Bootstrap Entries and click the Advanced button.
        12. -
            -
          1. Choose Add Library and click OK.
          2. -
          3. Select JRE System Library and click Next.
          4. -
          5. Select Workspace Default JRE and click Finish.
          6. -
          -
        13. Select Bootstrap Entries again and click Advanced.
        14. -
            -
          1. Choose Add Library and click OK.
          2. -
          3. Select JUnit 3 and click Finish.
          4. -
          -
        -

        When configured in this way, your JUnit test class should now run properly.

        - diff --git a/docs/html/guide/developing/app-signing.jd b/docs/html/guide/developing/app-signing.jd deleted file mode 100644 index 582dfb267b6f..000000000000 --- a/docs/html/guide/developing/app-signing.jd +++ /dev/null @@ -1,428 +0,0 @@ -page.title=Signing Your Applications -@jd:body - -

        The Android system requires that all installed applications be digitally -signed with a certificate whose private key is held by the application's -developer. The system uses the certificate as a means of identifying the author of -an application and establishing trust relationships between applications, rather -than for controlling which applications the user can install. The certificate -does not need to be signed by a certificate authority: it is perfectly -allowable, and typical, for Android applications to use self-signed -certificates.

        - -

        The important points to understand about signing Android applications are:

        - -
          -
        • All applications must be signed. The system will not install an application -that is not signed.
        • -
        • You can use self-signed certificates to sign your applications. No certificate authority -is needed.
        • -
        • When you are ready to publish your application, you must sign it with a suitable private -key. You can not publish an application that is signed with the default key generated -by the SDK tools. -
        • -
        • The system tests a signer certificate's expiration date only at install time. If an -application's signer certificate expires after the application is installed, the application -will continue to function normally.
        • -
        • You can use standard tools — Keytool and Jarsigner — to generate keys and -sign your application .apk files.
        • -
        - -

        The Android system will not install or run an application that is not signed appropriately. This -applies wherever the Android system is run, whether on an actual device or on the emulator. -For this reason, you must set up signing for your application before you will be able to -run or debug it on an emulator or device.

        - -

        The Android SDK tools assist you in signing your applications when debugging. Both the ADT Plugin -for Eclipse and the Ant build tool offer two signing modes — debug mode and release mode. - -

          -
        • In debug mode, the build tools use the Keytool utility, included in the JDK, to create -a keystore and key with a known alias and password. At each compilation, the tools then use -the debug key to sign the application .apk file. Because the password is known, the tools -don't need to prompt you for the keystore/key password each time you compile.
        • - -
        • When your application is ready for release, you compile it in release signing mode. -In this mode, the tools compile your .apk without signing it. You must then sign -the .apk manually — with your private key — -using Jarsigner (or similar tool). If you do not have a suitable private key already, -you can run Keytool manually to generate your own keystore/key and then sign your -application with Jarsigner.
        • -
        - -

        Signing Strategies

        - -

        Some aspects of application signing may affect how you approach the development -of your application, especially if you are planning to release multiple -applications.

        - -

        In general, the recommended strategy for all developers is to sign -all of your applications with the same certificate, throughout the expected -lifespan of your applications. There are several reasons why you should do so:

        - -
          -
        • Application upgrade — As you release upgrades to your -application, you will want to sign the upgrades with the same certificate, if you -want users to upgrade seamlessly to the new version. When the system is -installing an update to an application, if any of the certificates in the -new version match any of the certificates in the old version, then the -system allows the update. If you sign the version without using a matching -certificate, you will also need to assign a different package name to the -application — in this case, the user installs the new version as a -completely new application. - -
        • Application modularity — The Android system allows applications that -are signed by the same certificate to run in the same process, if the -applications so request, so that the system treats them as a single application. -In this way you can deploy your application in modules, and users can update -each of the modules independently if needed.
        • - -
        • Code/data sharing through permissions — The Android system provides -signature-based permissions enforcement, so that an application can expose -functionality to another application that is signed with a specified -certificate. By signing multiple applications with the same certificate and -using signature-based permissions checks, your applications can share code and -data in a secure manner.
        • - - - -
        - -

        Another important consideration in determining your signing strategy is -how to set the validity period of the key that you will use to sign your -applications.

        - -
          -
        • If you plan to support upgrades for a single application, you should ensure -that your key has a validity period that exceeds the expected lifespan of -that application. A validity period of 25 years or more is recommended. -When your key's validity period expires, users will no longer be -able to seamlessly upgrade to new versions of your application.
        • - -
        • If you will sign multiple distinct applications with the same key, -you should ensure that your key's validity period exceeds the expected -lifespan of all versions of all of the applications, including -dependent applications that may be added to the suite in the future.
        • - -
        • If you plan to publish your application(s) on Android Market, the -key you use to sign the application(s) must have a validity period -ending after 22 October 2033. The Market server enforces this requirement -to ensure that users can seamlessly upgrade Market applications when -new versions are available.
        • -
        - -

        As you design your application, keep these points in mind and make sure to -use a suitable certificate to sign your applications.

        - -

        Basic Setup for Signing

        - -

        To support the generation of a keystore and debug key, you should first make sure that -Keytool is available to the SDK build -tools. In most cases, you can tell the SDK build tools how to find Keytool by making sure -that your JAVA_HOME environment variable is set and that it references a suitable JDK. -Alternatively, you can add the JDK version of Keytool to your PATH variable.

        - -

        If you are developing on a version of Linux that originally came with GNU Compiler for -Java, make sure that the system is using the JDK version of Keytool, rather than the gcj -version. If Keytool is already in your PATH, it might be pointing to a symlink at -/usr/bin/keytool. In this case, check the symlink target to make sure that it points -to the Keytool in the JDK.

        - -

        If you will release your application to the public, you will also need to have -the Jarsigner tool available on your machine. Both Jarsigner and Keytool are included -in the JDK.

        - -

        Signing in Debug Mode

        - -

        The Android build tools provide a debug signing mode that makes it easier for you -to develop and debug your application, while still meeting the Android system -requirement for signing your .apk when it is installed in the emulator or a device.

        - -

        If you are developing in Eclipse/ADT and have set up Keytool as described -above, signing in debug mode is enabled by default. When you run or debug your -application, ADT signs the .apk for you and installs it on the emulator. No -specific action on your part is needed, provided ADT has access to Keytool.

        - -

        If you use Ant to build your .apk files, debug signing mode -is enabled by default, assuming that you are using a build.xml file generated by the -activitycreator tool included in the latest SDK. When you run Ant against build.xml to -compile your app, the build script generates a keystore/key and signs the .apk for you. -No specific action on your part is needed.

        - -

        Note that you can not release your application to the public if it is signed only with -the debug key.

        - -

        Signing for Public Release

        - -

        When your application is ready for release to other users, you must:

        -
          -
        1. Compile the application in release mode
        2. -
        3. Obtain a suitable private key, and then
        4. -
        5. Sign the application with your private key
        6. -
        7. Secure your private key
        8. -
        - -

        The sections below provide information about these steps.

        - -

        Compiling for Release

        - -

        To prepare your application for release, you must first compile it in release mode. -In release mode, the Android build tools compile your application as usual, -but without signing it with the debug key.

        - -

        If you are developing in Eclipse/ADT, right-click the project in the Package -pane and select Android Tools > Export Application -Package. You can then specify the file location for the unsigned .apk. -Alternatively, you can follow the "Exporting the unsigned .apk" -link in the Manifest Editor overview page.

        - -

        If you are using Ant, all you need to do is specify the build target -"release" in the Ant command. For example, if you are running Ant from the -directory containing your build.xml file, the command would look like this:

        - -
        $ ant release
        - -

        The build script compiles the application .apk without signing it. - -

        Note that you can not release your application unsigned, or signed with the debug key.

        - -

        Obtaining a Suitable Private Key

        - -

        In preparation for signing your application, you must first ensure that -you have a suitable private key with which to sign. A suitable private -key is one that:

        - -
          -
        • Is in your possession
        • -
        • Represents the personal, corporate, or organizational entity to be identified -with the application
        • -
        • Has a validity period that exceeds the expected lifespan of the application -or application suite. A validity period of more than 25 years is recommended. -

          If you plan to publish your application(s) on Android Market, note that a -validity period ending after 22 October 2033 is a requirement. You can not upload an -application if it is signed with a key whose validity expires before that date. -

        • -
        • Is not the debug key generated by the Android SDK tools.
        • -
        - -

        The key may be self-signed. If you do not have a suitable key, you must -generate one using Keytool. Make sure that you have Keytool available, as described -in Basic Setup.

        - -

        To generate a self-signed key with Keytool, use the keytool -command and pass any of the options listed below (and any others, as -needed).

        - -

        Before you run Keytool, make sure to read Securing Your Key for a discussion of how to keep your -key secure and why doing so is critically important to you and to users. In -particular, when you are generating your key, you should select strong -passwords for both the keystore and key.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        Keytool OptionDescription
        -genkeyGenerate a key pair (public and private -keys)
        -vEnable verbose output.
        -keystore <keystore-name>.keystoreA name -for the keystore containing the private key.
        -storepass <password>

        A password for the -keystore.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

        -alias <alias_name>An alias for the key.
        -keyalg <alg>The encryption algorithm to use -when generating the key.
        -dname <name>

        A Distinguished Name that describes -who created the key. The value is used as the issuer and subject fields in the -self-signed certificate.

        Note that you do not need to specify this option -in the command line. If not supplied, Jarsigner prompts you to enter each -of the Distinguished Name fields (CN, OU, and so on).

        -validity <valdays>

        The validity period for the -key, in days.

        Note: A value of 9500 or greater is recommended.

        -keypass <password>

        The password for the key.

        -

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

        - - -

        Here's an example of a Keytool command that generates a private key:

        - -
        $ keytool -genkey -v -keystore my-release-key.keystore 
        --alias alias_name -keyalg RSA -validity 9500
        - -

        Running the example command above, Keytool prompts you to provide -passwords for the keystore and key, and to provide the Distinguished -Name fields for your key. It then generates the keystore as a file called -my-release-key.keystore. The keystore and key are -protected by the passwords you entered. The keystore contains -a single key, valid for 9500 days. The alias is a name that you — -will use later, to refer to this keystore when signing your application.

        - -

        For more information about Keytool, see the documentation at - -http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security

        - -

        Signing Your Application

        - -

        When you are ready to actually sign your .apk for release, you can do so -using the Jarsigner tool. Make sure that you have Jarsigner available on your -machine, as described in Basic Setup. Also, make sure that -the keystore containing your private key is available.

        - -

        To sign your application, you run Jarsigner, referencing both the -application's .apk and the keystore containing the private key with which to -sign the .apk. The table below shows the options you could use.

        - - - - - - - - - - - - - - - - - - -
        Jarsigner OptionDescription
        -keystore <keystore-name>.keystoreThe name of -the keystore containing your private key.
        -verboseEnable verbose output.
        -storepass <password>

        The password for the -keystore.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Jarsigner prompts you to enter the password. In this -way, your password is not stored in your shell history.

        -keypass <password>

        The password for the private -key.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Jarsigner prompts you to enter the password. In this -way, your password is not stored in your shell history.

        - -

        Here's how you would use Jarsigner to sign an application package called -my_application.apk, using the example keystore created above. -

        - -
        $ jarsigner -verbose -keystore my-release-key.keystore 
        -my_application.apk alias_name
        - -

        Running the example command above, Jarsigner prompts you to provide -passwords for the keystore and key. It then modifies the APK -in-place, meaning the .apk is now signed. Note that you can sign an -APK multiple times with different keys.

        - -

        To verify that your .apk is signed, you can use a command like this:

        - -
        $ jarsigner -verify my_signed.apk
        - -

        If the .apk is signed properly, Jarsigner prints "jar verified". -If you want more details, you can try one of these commands:

        - -
        $ jarsigner -verify -verbose my_application.apk
        - -

        or

        - -
        $ jarsigner -verify -verbose -certs my_application.apk
        - -

        The command above, with the -certs option added, will show you the -"CN=" line that describes who created the key.

        - -

        Note: if you see "CN=Android Debug", this means the .apk was -signed with the debug key generated by the Android SDK. If you intend to release -your application, you must sign it with your private key instead of the debug -key.

        - -

        For more information about Jarsigner, see the documentation at - -http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security

        - -

        Securing Your Private Key

        - -

        Maintaining the security of your private key is of critical importance, both -to you and to the user. If you allow someone to use your key, or if you leave -your keystore and passwords in an unsecured location such that a third-party -could find and use them, your authoring identity and the trust of the user -are compromised.

        - -

        If a third party should manage to take your key without your knowledge or -permission, that person could sign and distribute applications that maliciously -replace your authentic applications or corrupt them. Such a person could also -sign and distribute applications under your identity that attack other -applications or the system itself, or corrupt or steal user data.

        - -

        Your reputation as a developer entity depends on your securing your private -key properly, at all times, until the key is expired. Here are some tips for -keeping your key secure:

        - -
          -
        • Select strong passwords for the keystore and key.
        • -
        • When you generate your key with Keytool, do not supply the --storepass and -keypass options at the command line. -If you do so, your passwords will be available in your shell history, -which any user on your computer could access.
        • -
        • Similarly, when signing your applications with Jarsigner, -do not supply the -storepass and -keypass -options at the command line.
        • -
        • Do not give or lend anyone your private key, and do not let unauthorized -persons know your keystore and key passwords.
        • -
        - -

        In general, if you follow common-sense precautions when generating, using, -and storing your key, it will remain secure.

        - -

        Expiry of the Debug Certificate

        - -

        The self-signed certificate used to sign your application in debug mode (the default on -Eclipse/ADT and Ant builds) will have an expiration date of 365 days from its creation date.

        - -

        When the certificate expires, you will get a build error. On Ant builds, the error -looks like this:

        - -
        debug:
        -[echo] Packaging bin/samples-debug.apk, and signing it with a debug key...
        -[exec] Debug Certificate expired on 8/4/08 3:43 PM
        - -

        In Eclipse/ADT, you will see a similar error in the Android console.

        - -

        To fix this problem, simply delete the debug.keystore file. On Linux/Mac OSX, -the file is stored in ~/.android. OOn Windows XP, the file is stored in -C:\Documents and Settings\<user>\Local Settings\Application Data\Android. -On Windows Vista, the file is stored in -C:\Users\<user>\AppData\Local\Android.

        - -

        The next time you build, the build tools will regenerate a new keystore and debug key.

        - -

        Note that, if your development machine is using a non-Gregorian locale, the build -tools may erroneously generate an already-expired debug certificate, so that you get an -error when trying to compile your application. For workaround information, see the -troubleshooting topic -I can't compile my app because the build tools generated an expired debug -certificate.

        \ No newline at end of file diff --git a/docs/html/guide/developing/tools/avd.jd b/docs/html/guide/developing/tools/avd.jd index 7ba79685eef7..1e13ace551f7 100644 --- a/docs/html/guide/developing/tools/avd.jd +++ b/docs/html/guide/developing/tools/avd.jd @@ -21,13 +21,12 @@ page.title=Android Virtual Devices
      • Creating the AVD
      • Setting hardware emulation options
      • Default location of the AVD files
      • -
      • Command-line options, create avd
  • Managing AVDs
    1. Moving an AVD
    2. -
    3. Deleting an AVD
    4. +
    5. Updating an AVD
    6. Deleting an AVD
  • @@ -35,7 +34,8 @@ page.title=Android Virtual Devices

    See Also

      -
    1. Android Emulator
    2. +
    3. Android + Emulator
    @@ -366,6 +366,10 @@ the -p option to place the AVD directory in another location. The AVD's .ini file remains in the .android directory on the network drive, regardless of the location of the AVD directory.

    +

    Managing AVDs

    + +

    The sections below provide more information about how to manage AVDs once you've created them.

    +

    Moving an AVD

    If you want to move or rename an AVD, you can do so using this command:

    @@ -455,7 +459,7 @@ files. -s <name> or
    - -s <dimensions> + -s <width>-<height> The skin to use for this AVD, identified by name or dimensions. The android tool scans for a matching skin by name or dimension in the skins/ directory of the target referenced in the -t diff --git a/docs/html/guide/topics/media/index.jd b/docs/html/guide/topics/media/index.jd index 4541024111b9..fd7d2da021d8 100644 --- a/docs/html/guide/topics/media/index.jd +++ b/docs/html/guide/topics/media/index.jd @@ -9,7 +9,7 @@ page.title=Audio and Video
  • Audio playback and record
  • Video playback
  • Handles data from raw resources, files, streams
  • -
  • Built-in codecs for a variety of media. See Android 1.0 Media Formats
  • +
  • Built-in codecs for a variety of media. See Android Supported Media Formats
  • Key classes

    diff --git a/docs/html/guide/topics/media/media.jd b/docs/html/guide/topics/media/media.jd deleted file mode 100644 index 463686d367ae..000000000000 --- a/docs/html/guide/topics/media/media.jd +++ /dev/null @@ -1,172 +0,0 @@ -page.title=Media Capabilities -@jd:body - - - -

    The Android platform offers built-in encoding/decoding for a variety of common media types, -so that you can easily integrate audio, video, and images into your applications. Accessing the platform's media -capabilities is fairly straightforward &mdash you do so using the same intents and -activities mechanism that the rest of Android uses.

    - -

    Android lets you play audio and video from several types of data sources. You can play audio or video from media files stored in the application's resources (raw resources), from standalone files in the filesystem, or from a data stream arriving over a network connection. To play audio or video from your application, use the {@link android.media.MediaPlayer} class.

    - -

    The platform also lets you record audio, where supported by the mobile device hardware. Recording of video is not currently supported, but is planned for a future release. To record audio, use the -{@link android.media.MediaRecorder} class. Note that the emulator doesn't have hardware to capture audio, but actual mobile devices are likely to provide these capabilities that you can access through MediaRecorder.

    - -

    For a list of the media formats for which Android offers built-in support, see the Android Media Formats appendix.

    - -

    Playing Audio and Video

    -

    Media can be played from anywhere: from a raw resource, from a file from the system, -or from an available network (URL).

    - -

    You can play back the audio data only to the standard -output device; currently, that is the mobile device speaker or Bluetooth headset. You -cannot play sound files in the conversation audio.

    - -

    Playing from a Raw Resource

    -

    Perhaps the most common thing to want to do is play back media (notably sound) -within your own applications. Doing this is easy:

    -
      -
    1. Put the sound (or other media resource) file into the res/raw - folder of your project, where the Eclipse plugin (or aapt) will find it and - make it into a resource that can be referenced from your R class
    2. -
    3. Create an instance of MediaPlayer, referencing that resource using - {@link android.media.MediaPlayer#create MediaPlayer.create}, and then call - {@link android.media.MediaPlayer#start() start()} on the instance:

    4. -
    -
    -    MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
    -    mp.start();
    -
    -

    To stop playback, call {@link android.media.MediaPlayer#stop() stop()}. If -you wish to later replay the media, then you must -{@link android.media.MediaPlayer#reset() reset()} and -{@link android.media.MediaPlayer#prepare() prepare()} the MediaPlayer object -before calling {@link android.media.MediaPlayer#start() start()} again. -(create() calls prepare() the first time.)

    -

    To pause playback, call {@link android.media.MediaPlayer#pause() pause()}. -Resume playback from where you paused with -{@link android.media.MediaPlayer#start() start()}.

    - -

    Playing from a File or Stream

    -

    You can play back media files from the filesystem or a web URL:

    -
      -
    1. Create an instance of the MediaPlayer using new
    2. -
    3. Call {@link android.media.MediaPlayer#setDataSource setDataSource()} - with a String containing the path (local filesystem or URL) - to the file you want to play
    4. -
    5. First {@link android.media.MediaPlayer#prepare prepare()} then - {@link android.media.MediaPlayer#start() start()} on the instance:

    6. -
    -
    -    MediaPlayer mp = new MediaPlayer();
    -    mp.setDataSource(PATH_TO_FILE);
    -    mp.prepare();
    -    mp.start();
    -
    -

    {@link android.media.MediaPlayer#stop() stop()} and -{@link android.media.MediaPlayer#pause() pause()} work the same as discussed -above.

    -

    Note: It is possible that mp could be - null, so good code should null check after the new. - Also, IllegalArgumentException and IOException either - need to be caught or passed on when using setDataSource(), since - the file you are referencing may not exist.

    -

    Note: -If you're passing a URL to an online media file, the file must be capable of -progressive download.

    - -

    Recording Media Resources

    -

    Recording media is a little more involved than playing it back, as you would -probably expect, but it is still fairly simple. There is just a little more set -up to do

    -
      -
    1. Create a new instance of {@link android.media.MediaRecorder - android.media.MediaRecorder} using new
    2. -
    3. Create a new instance of {@link android.content.ContentValues - android.content.ContentValues} and put in some standard properties like - TITLE, TIMESTAMP, and the all important - MIME_TYPE
    4. -
    5. Create a file path for the data to go to (you can use {@link - android.content.ContentResolver android.content.ContentResolver} to - create an entry in the Content database and get it to assign a path - automatically which you can then use)
    6. -
    7. Set the audio source using {@link android.media.MediaRecorder#setAudioSource - MediaRecorder.setAudioSource()}. You will probably want to use - MediaRecorder.AudioSource.MIC
    8. -
    9. Set output file format using {@link - android.media.MediaRecorder#setOutputFormat MediaRecorder.setOutputFormat()} -
    10. -
    11. Set the audio encoder using - {@link android.media.MediaRecorder#setAudioEncoder MediaRecorder.setAudioEncoder()} -
    12. -
    13. Finally, {@link android.media.MediaRecorder#prepare prepare()} and - {@link android.media.MediaRecorder#start start()} the recording. - {@link android.media.MediaRecorder#stop stop()} and - {@link android.media.MediaRecorder#release release()} when you are done
    14. -
    -

    Here is a code example that will hopefully help fill in the gaps:

    -

    Start Recording

    -
    -    recorder = new MediaRecorder();
    -    ContentValues values = new ContentValues(3);
    -
    -    values.put(MediaStore.MediaColumns.TITLE, SOME_NAME_HERE);
    -    values.put(MediaStore.MediaColumns.TIMESTAMP, System.currentTimeMillis());
    -    values.put(MediaStore.MediaColumns.MIME_TYPE, recorder.getMimeContentType());
    -    
    -    ContentResolver contentResolver = new ContentResolver();
    -    
    -    Uri base = MediaStore.Audio.INTERNAL_CONTENT_URI;
    -    Uri newUri = contentResolver.insert(base, values);
    -    
    -    if (newUri == null) {
    -        // need to handle exception here - we were not able to create a new
    -        // content entry
    -    }
    -    
    -    String path = contentResolver.getDataFilePath(newUri);
    -
    -    // could use setPreviewDisplay() to display a preview to suitable View here
    -    
    -    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    -    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    -    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    -    recorder.setOutputFile(path);
    -    
    -    recorder.prepare();
    -    recorder.start();
    -
    -

    Stop Recording

    -
    -    recorder.stop();
    -    recorder.release();
    -
    - -- GitLab From e1d9b55f807f0972ca35c5f24786b1ab27d1d876 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 20:39:18 -0700 Subject: [PATCH 21/72] AI 147336: Remove stuff relating to the Maps ext library from the docs. Leave a pointer over to code.google.com. BUG=1790234 Automated import of CL 147336 --- docs/html/guide/topics/location/geo/mapkey.jd | 210 ---------- docs/html/guide/topics/location/index.jd | 134 ++++--- .../guide/tutorials/views/hello-mapview.jd | 26 ++ docs/html/index.jd | 2 +- docs/html/maps-api-signup.html | 369 ------------------ docs/html/maps-api-tos.pdf | Bin 97303 -> 0 bytes 6 files changed, 110 insertions(+), 631 deletions(-) delete mode 100644 docs/html/guide/topics/location/geo/mapkey.jd delete mode 100644 docs/html/maps-api-signup.html delete mode 100644 docs/html/maps-api-tos.pdf diff --git a/docs/html/guide/topics/location/geo/mapkey.jd b/docs/html/guide/topics/location/geo/mapkey.jd deleted file mode 100644 index 9aa824c1d61b..000000000000 --- a/docs/html/guide/topics/location/geo/mapkey.jd +++ /dev/null @@ -1,210 +0,0 @@ -page.title=Obtaining a Maps API Key -@jd:body - - - -

    com.google.android.maps.MapView is a very useful class that lets you easily integrate Google Maps into your application. It provides built-in map downloading, rendering, and caching of Maps tiles, as well as a variety of display options and controls. It provides a wrapper around the Google Maps API that lets your application request and manipulate Google Maps data through class methods, and it lets you work with Maps data as you would other types of Views.

    - -

    Because MapView gives you access to Google Maps data, you need to register with the Google Maps service and agree to the applicable Terms of Service before your MapView will be able to obtain data from Google Maps. This will apply whether you are developing your application on the emulator or preparing your application for deployment to mobile devices.

    - -

    Registering for a Maps API Key is simple, free, and has two parts:

    - -
      -
    1. Registering the MD5 fingerprint of the certificate that you will use to sign your application. The Maps registration service then provides you a Maps API Key that is associated with your application's signer certificate.
    2. -
    3. Adding a reference to the Maps API Key in each MapView, whether declared in XML or instantiated directly from code. You can use the same Maps API Key for any MapView in any Android application, provided that the application is signed with the certificate whose fingerprint you registered with the service.
    4. -
    - -

    During registration, you also need to agree to the Maps API Terms of Service, which describe how your application can use the Maps data. In general, the terms of service are permissive and place few restrictions on how you can use the data. For example, the terms allow you to build "friend finder" type applications.

    - -

    The sections below describe how to obtain your Maps API Key and how to reference it from your MapView elements.

    - - - -

    Overview

    - -

    MapView objects are views that display Maps tiles downloaded from the Google Maps service. To ensure that applications use Maps data in an appropriate manner, the Google Maps service requires application developers to register with the service, agreeing to the Terms of Service and supplying an MD5 fingerprint of the certificate(s) that they will use to sign applications. For each registered certificate fingerprint, the service then provides the developer with a Maps API Key — an alphanumeric string that uniquely identifies the certificate and developer registered with the service.

    - -

    The Google Maps service also requires that each MapView identify itself to the service using a Maps API Key. Before providing Maps tiles to a MapView, the service checks the Maps API Key supplied by the MapView to ensure that it:

    -
      -
    • References a certificate/developer registered with the service, and
    • -
    • References a certificate that matches the certificate with which the application (containing the MapView) was signed.
    • -
    - -

    Unless both conditions are met, the service does not provide Maps tiles to the MapView.

    - -

    Each MapView object in your application must reference a Maps API Key. Since the Key is associated with a certificate, all Mapview elements in an application should reference the same Key. Going a step further, all MapView elements in all applications that you sign with the same certificate should reference the same Key.

    - -

    On the other hand, you can register for multiple Maps API Keys, each being associated with a specific certificate. You would want to do this if, for example, you were developing several independent applications that you will sign using different certificates. In this case, note that all MapView elements in a given application can reference the same Maps API Key, but must reference the Key that is associated with the certificate used to sign the application.

    - -

    Because MapView elements must refer to a Maps API Key, you need to register your certificate and receive a Key before you can make use of MapView elements in your application. To make it easier for you to get started using MapView elements, you are welcome to register the debug certificate generated by the SDK tools and receive a temporary Maps API Key. The details of how to do that are given below.

    - -

    When you are preparing to release your application, however, note that you must sign your application with a suitable cryptographic key, rather than the SDK debug key. That means that you will also need to register your application's release certificate with the Google Maps service. After you've done so, you will receive a new Maps API Key that is uniquely associated with your release certificate. To enable the MapView elements in your application to work after release, you must remember to change the Maps API Key for all MapViews in your application so that they refer to the Key associated with your release certificate (rather than your debug certificate).

    - -

    To summarize, the important points to understand about MapViews and the Maps API Key are:

    - -
      -
    • To display Maps data in a MapView, you need to register for a Maps API Key
    • -
    • Each Maps API Key is uniquely associated with a specific certificate, based on an MD5 fingerprint of the certificate
    • -
    • Each MapView must reference a Maps API Key, and the Key referenced must be registered to the certificate used to sign the application
    • -
    • All MapView elements in an application can reference the same Maps API Key
    • -
    • You can register multiple certificates under your developer identity
    • -
    • You can get a temporary Maps API Key based on your debug certificate, but before you publish your application, you must register for a new Key based on your release certificate and update references in your MapViews accordingly
    • -
    - -

    Getting the MD5 Fingerprint of Your Signing Certificate

    - - - -

    To register for a Maps API Key, you need to provide an MD5 fingerprint of the certificate that you will use to sign your application.

    - -

    Before you visit the registration page, use Keytool to generate the fingerprint of the appropriate certificate. - -

    First, determine which key you will use to sign your application at release and make sure of the path to the keystore that contains it.

    - -

    Next, run Keytool with the -list option, against the target keystore and key alias. The table below lists the options you should use.

    - - - - - - - - - - - - - - - - - - - - - -
    Keytool OptionDescription
    -listPrint an MD5 fingerprint of a certificate.
    -keystore <keystore-name>.keystoreThe name of the keystore containing the target key.
    -storepass <password>

    A password for the -keystore.

    As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

    -alias <alias_name>The alias for the key for which to generate the MD5 certificate fingerprint.
    -keypass <password>

    The password for the key.

    -

    As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

    - -

    Here's an example of a Keytool command that generates an MD5 certificate fingerprint for the key alias_name in the keystore my-release-key.keystore:

    - -
    $ keytool -list -alias alias_name -keystore my-release-key.keystore
    - -

    Keytool will prompt you to enter passwords for the keystore and key. As output of the command, Keytool prints the fingerprint to the shell. For example:

    - -
    Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
    - -

    Note that, if you happen to forget your Maps API Key, you can repeat the process described above and register the fingerprint again. The server will give you the same key for the specified certificate fingerprint.

    - -

    Once you have the fingerprint, you can go to the Maps API registration site, described next.

    - -

    Getting the MD5 Fingerprint of the SDK Debug Certificate

    - -

    While you are developing and debugging your application, you will likely be -sigining your application in debug mode — that is, the SDK build tools -will automatically sign your application using the debug certificate. To let -your MapView elements properly display Maps data during this period, you should -obtain a temporary Maps API Key registered to the debug certificate. To do so, -you first need to get the MD5 fingerprint of the debug certificate. When -you are ready to release your application, you must register your release -certificate with the Google Maps service and obtain a new Maps API Key. You must -then change the MapView elements in your application to reference the new API -key.

    - -

    To generate an MD5 fingerprint of the debug certificate, first locate the debug keystore. The location at which the SDK tools create the default debug keystore varies by platform:

    - -
      -
    • Windows Vista: C:\Users\<user>\AppData\Local\Android\debug.keystore
    • -
    • Windows XP: C:\Documents and Settings\<user>\Local Settings\Application Data\Android\debug.keystore
    • -
    • OS X and Linux: ~/.android/debug.keystore
    • -
    - -

    If you are using Eclipse/ADT and are unsure where the debug keystore is located, you can select Windows > Prefs > Android > Build to check the full path, which you can then paste into a file explorer to locate the directory containing the keystore.

    - -

    Once you have located the keystore, use this Keytool command to get the MD5 fingerprint of the debug certificate:

    - -
    $ keytool -list -alias androiddebugkey \
    --keystore <path_to_debug_keystore>.keystore \
    --storepass android -keypass android
    - -

    Registering the Certificate Fingerprint with the Google Maps Service

    - -

    When you are ready to register for a Maps API Key, load this page in a browser:

    - -

    http://code.google.com/android/maps-api-signup.html

    - -

    To register for a Maps API Key, follow these steps:

    - -
      -
    1. If you don't have a Google account, use the link on the page to set one up.
    2. -
    3. Read the Android Maps API Terms of Service carefully. If you agree to the terms, indicate so using the checkbox on the screen.
    4. -
    5. Paste the MD5 certificate fingerprint of the certificate that you are registering into the appropriate form field.
    6. -
    7. Click "Generate API Key"
    8. -
    - -

    The server will handle your request, associating the fingerprint with your developer identity and generating a unique Maps API Key, then returning a results page that gives you your Key string.

    - -

    To use the Maps API Key string, copy and paste it into your code as described in the next section.

    - -

    Adding the Maps API Key to your Application

    - -

    Once you've registered with the Google Maps service and have obtained a Maps API Key, you must add it to your application's MapView objects, so that the Maps server will allow them to download Maps tiles.

    - -

    For <MapView> elements declared in XML layout files, add the Maps API Key as the value of a special attribute — android:apiKey. For example: - -

    <com.google.android.maps.MapView
    - android:layout_width="fill_parent"
    - android:layout_height="fill_parent"
    - android:enabled="true"
    - android:clickable="true"
    - android:apiKey="example_Maps_ApiKey_String"
    - />
    - - -

    For MapView objects instantiated directly from code, pass the Maps API Key string as a parameter in the constructor. For example:

    - -
    mMapView = new MapView(this, "example_Maps_ApiKey_String");
    - -

    For more information about MapView, see the MapView class Documentation.

    - -

    Final Steps to Enable MapView Elements

    - -

    If you've added the Maps API Key to the MapViews in your application, here are the final steps to enable the MapView elements to run properly:

    - -
      -
    • Make sure that you added a <uses-library> element referencing the external com.google.android.maps library. The element must be a child of the <application> element in the application's manifest. For example: - -

      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      - package="com.example.package.name">
      - ...
      - <application android:name="MyApplication" >
      -   <uses-library android:name="com.google.android.maps" />
      - ...
      - </application>

    • - -
    • Sign your application with the certificate that corresponds to the Maps API Key referenced in your MapView elements.
    • - -
    - -

    Note that, when you are ready to publish your application, you must get a Maps API Key that is based on the certificate that you will use to sign the application for release. You must then change the Maps API Key string referenced by all of your MapView elements, so that they reference the new Key.

    - - - diff --git a/docs/html/guide/topics/location/index.jd b/docs/html/guide/topics/location/index.jd index 53f1d290ba64..d7a8ff27585f 100644 --- a/docs/html/guide/topics/location/index.jd +++ b/docs/html/guide/topics/location/index.jd @@ -1,35 +1,43 @@ -page.title=Location +page.title=Location and Maps @jd:body
    +

    Location and Maps quickview

    +
      +
    • Android provides a location framework that your application can use to determine the device's location and bearing and register for updates.
    • +
    • A Google Maps external library is available that lets you display and manage Maps data.
    • +

    In this document

      -
    1. android.location
    2. -
    3. com.google.android.maps
    4. +
    5. Location Services
    6. +
    7. Google Maps External Library
    8. +
    +

    See Also

    +
      +
    1. Google APIs add-on download»
    -

    The Android SDK includes two packages that provide Android's primary support -for building location-based services: -{@link android.location} and {@link-fixme com.google.android.maps}. -Please read on below for a brief introduction to each package.

    +

    Location- and maps-based applications and services are compelling for mobile device users. You can build these capabilities into your applications using the classes of the {@link android.location} package and the Google Maps external library. The sections below provide details.

    + +

    Location Services

    -

    android.location

    +

    Android gives your applications access to the location services supported by +the device through the classes in the android.location package. The +central component of the location framework is the +{@link android.location.LocationManager} system service, which provides an API to +determine location and bearing if the underlying device (if it supports location +capabilities).

    -

    This package contains several classes related to -location services in the Android platform. Most importantly, it introduces the -{@link android.location.LocationManager} -service, which provides an API to determine location and bearing if the -underlying device (if it supports the service). The LocationManager -should not be -instantiated directly; rather, a handle to it should be retrieved via -{@link android.content.Context#getSystemService(String) -getSystemService(Context.LOCATION_SERVICE)}.

    +

    As with other system services, you do not instantiate a LocationManager directly. +Rather, you request an LocationManager instance from the system by calling +{@link android.content.Context#getSystemService(String) getSystemService(Context.LOCATION_SERVICE)}. +The method returns a handle to a new LocationManager instance.

    -

    Once your application has a handle to the LocationManager, your application +

    Once your application has a handle to a LocationManager instance, your application will be able to do three things:

      @@ -42,20 +50,20 @@ will be able to do three things:

      lat/long.
    -

    However, during initial development, you may not have access to real -data from a real location provider (Network or GPS). So it may be necessary to -spoof some data for your application, with some mock location data.

    +

    However, during initial development in the emulator, you may not have access to real +data from a real location provider (Network or GPS). In that case, it may be necessary to +spoof some data for your application using a mock location provider.

    Note: If you've used mock LocationProviders in -previous versions of the SDK (m3/m5), you can no longer provide canned LocationProviders +previous versions of the SDK, you can no longer provide canned LocationProviders in the /system/etc/location directory. These directories will be wiped during boot-up. -Please follow the new procedures below.

    - +Please follow the new procedures outlined below.

    Providing Mock Location Data

    When testing your application on the Android emulator, there are a couple different -ways to send it some spoof location data: with the DDMS tool or the "geo" command.

    +ways to send it some mock location data: you can use the DDMS tool or the "geo" command +option in the emulator console.

    Using DDMS

    With the DDMS tool, you can simulate location data a few different ways:

    @@ -67,9 +75,9 @@ ways to send it some spoof location data: with the DDMS tool or the "geo" comman

    For more information on using DDMS to spoof location data, see the Using DDMS guide. -

    Using the "geo" command

    +

    Using the "geo" command in the emulator console

    Launch your application in the Android emulator and open a terminal/console in -your SDK's /tools directory. Now you can use:

    +your SDK's /tools directory. Connect to the emulator console. Now you can use:

    • geo fix to send a fixed geo-location.

      This command accepts a longitude and latitude in decimal degrees, and an optional altitude in meters. For example:

      @@ -82,28 +90,52 @@ your SDK's /tools directory. Now you can use:

    - -

    com.google.android.maps

    - -

    This package introduces a number of classes related to -rendering, controlling, and overlaying customized information on your own -Google Mapified Activity. The most important of which is the -{@link-fixme com.google.android.maps.MapView} class, which automagically draws you a -basic Google Map when you add a MapView to your layout. Note that, if you -want to do so, then your Activity that handles the -MapView must extend {@link-fixme com.google.android.maps.MapActivity}.

    - -

    Also note that you must obtain a MapView API Key from the Google Maps -service, before your MapView can load maps data. For more information, see -Obtaining a MapView API Key.

    - -

    Once you've created a MapView, you'll probably want to use -{@link-fixme com.google.android.maps.MapView#getController()} to -retrieve a {@link-fixme com.google.android.maps.MapController}, for controlling and -animating the map, and {@link-fixme com.google.android.maps.ItemizedOverlay} to -draw {@link-fixme com.google.android.maps.Overlay}s and other information on the Map.

    - -

    This is not a standard package in the Android library. In order to use it, you must add the following node to your Android Manifest file, as a child of the -<application> element:

    -
    <uses-library android:name="com.google.android.maps" />
    +

    For information about how to connect to the emulator console, see +Using the Emulator Console.

    + +

    Google Maps External Library

    + +

    To make it easier for you to add powerful mapping capabilities to your +application, Google provides a Maps external library that includes the +com.google.android.maps package. The classes of the com.google.android.maps +package offer built-in downloading, rendering, and caching of Maps tiles, as +well as a variety of display options and controls.

    + +

    The key class in the Maps package is +com.google.android.maps.MapView, a subclass of +{@link android.view.ViewGroup ViewGroup}. A MapView displays a map with data obtained +from the Google Maps service. When the MapView has focus, it will capture +keypresses and touch gestures to pan and zoom the map automatically, including +handling network requests for additional maps tiles. It also provides all of the +UI elements necessary for users to control the map. Your application can also +use MapView class methods to control the MapView programmatically and draw a +number of Overlay types on top of the map.

    + +

    In general, the MapView class provides a wrapper around the Google Maps API +that lets your application manipulate Google Maps data through class methods, +and it lets you work with Maps data as you would other types of Views.

    + +

    The Maps external library is not part of the standard Android library, so it +may not be present on some compliant Android-powered devices (although it is +likely to be present on most devices). Similarly, the Maps external library is +not included in the standard Android library provided in the SDK. So that you +can develop using the classes of the com.google.android.maps package, the Maps +external library is made available to you as part of the Google APIs add-on for +the Android SDK.

    + +

    To learn more about the Maps external library and how to download and use the +Google APIs add-on, visit

    + +

    http://code.google.com/android/add-ons/google-apis

    + +

    For your convenience, the Google APIs add-on is also included in the Android +SDK.

    + +

    Note: In order to display Google Maps data in a +MapView, you must register with the Google Maps service and obtain a Maps API +Key. For information about how to get a Maps API Key, see Obtaining +a Maps API Key.

    diff --git a/docs/html/guide/tutorials/views/hello-mapview.jd b/docs/html/guide/tutorials/views/hello-mapview.jd index 976b8ab42e50..30b92c46eee9 100644 --- a/docs/html/guide/tutorials/views/hello-mapview.jd +++ b/docs/html/guide/tutorials/views/hello-mapview.jd @@ -3,6 +3,32 @@ parent.title=Hello, Views parent.link=index.html @jd:body +
    +

    This tutorial requires that you have the Google Maps external library +installed in your SDK environment. By default the Android 1.5 SDK includes the +Google APIs add-on, which in turn includes the Maps external library. If you +don't have the Google APIs SDK add-on, you can download it from this +location:

    + +

    http://code.google.com/android/add-ons/google-apis

    + +

    The Google APIs add-on requires Android 1.5 SDK or later release. After +installing the add-on in your SDK, set your project properties to use the build +target called "Google APIs Add-on". See the instructions for setting a build +target in Developing in +Eclipse with ADT or Developing in Other IDEs, +as appropriate for your environment.

    + +

    You will also need to use the android tool to set up an AVD that uses the +Google APIs deployment target. See Android Virtual Devices for +more information. Once you have set up your environment, you will be able to +build and run the project described in this tutorial

    + +
    +

    A MapView allows you to create your own map-viewing Activity. First, we'll create a simple Activity that can view and navigate a map. Then we will add some overlay items.

    diff --git a/docs/html/index.jd b/docs/html/index.jd index aea229923ae1..cc609a3d681b 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -128,7 +128,7 @@ home=true 'name':"Maps API Key", 'img':"maps-large.png", 'title':"Maps API Key", - 'desc':"

    If you're writing an Android application that uses Google Maps (with MapView), you must register your application to obtain a Maps API Key. Without the key, your maps application will not work on Android devices. Obtaining a key requires just a couple of steps.

    Learn how to get a Maps API Key

    " + 'desc':"

    If you're writing an Android application that uses Google Maps (with MapView), you must register your application to obtain a Maps API Key. Without the key, your maps application will not work on Android devices. Obtaining a key requires just a couple of steps.

    Learn more...

    " }, 'market': { diff --git a/docs/html/maps-api-signup.html b/docs/html/maps-api-signup.html deleted file mode 100644 index a604b2ad0eb5..000000000000 --- a/docs/html/maps-api-signup.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - -Sign Up for the Android Maps API - Android Maps API - Google Code - - - - - - - - - - - -
    - - -
    - - -
    - - -
    - - -
    -

    Android Maps API Key Signup

    - -
    - - -
    - - - -
    -

    Sign Up for the Android Maps API

    - -

    The Android Maps API lets you embed -Google -Maps in your own Android applications. A single Maps API key is -valid for all applications signed by a single certificate. See -this documentation -page for more information about application signing. To get a -Maps API key for your certificate, you will need to provide its the certificate's -fingerprint. This can be obtained using Keytool. For example, on -Linux or Mac OSX, you would examine your debug keystore like this: -

    $ keytool -list -keystore ~/.android/debug.keystore
    -...
    -Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
    -
    - -

    If you use different keys for signing development builds and -release builds, you will need to obtain a separate Maps API key for -each certificate. Each key will only work in applications signed by -the corresponding certificate.

    - -

    You also need a Google Account -to get a Maps API key, and your API key will be connected to your Google Account.

    -
    -
    - -
    - -
    -
    - - - - - - - - - - - - - -
    I have read and agree with the terms and conditions (printable version)
    - My certificate's MD5 fingerprint: - -
    -
    -
    - - - - -
    -
    - -
    - - - - - diff --git a/docs/html/maps-api-tos.pdf b/docs/html/maps-api-tos.pdf deleted file mode 100644 index 80c28363a0215124ae663c9bfb2502b4fd04140c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97303 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 Date: Wed, 22 Apr 2009 12:33:55 -0700 Subject: [PATCH 22/72] AI 147406: Import revised translations. Automated import of CL 147406 --- core/res/res/values-es/strings.xml | 2 +- core/res/res/values-pl/strings.xml | 110 ++++++++++++++--------------- 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index b2294f3267a6..cf1811bd791c 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -406,7 +406,7 @@ "Bloqueada para la red" "La tarjeta SIM está bloqueada con el código PUK." "Consulta la guía del usuario o ponte en contacto con el servicio de atención al cliente." - "Introduzca código PIN." + "Introduce el código PIN." "Desbloqueando tarjeta SIM..." "Has realizado %d intentos fallidos de creación de un patrón de desbloqueo. "\n\n"Inténtalo de nuevo dentro de %d segundos." "Has realizado %d intentos fallidos de creación del patrón de desbloqueo. Si realizas %d intentos fallidos más, se te pedirá que desbloquees el teléfono con tus credenciales de acceso de Google."\n\n" Espera %d segundos e inténtalo de nuevo." diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index fc7d53e94366..560bd5aa65f2 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -311,7 +311,7 @@ "Pozwala aplikacji na pobranie listy kont zapisanych w telefonie." "wyświetlanie stanu sieci" "Pozwala aplikacji na wyświetlanie stanu wszystkich sieci." - "pełen dostęp do Internetu" + "pełen dostęp do internetu" "Pozwala aplikacji na tworzenie gniazd sieciowych." "zapisywanie ustawień nazwy punktu dostępowego (APN, Access Point Name)" "Pozwala aplikacji na zmianę ustawień APN, takich jak serwer proxy oraz port dowolnego APN." @@ -566,10 +566,10 @@ "%1$s, %2$s" "%1$s, %2$s" "%1$s, %2$s" - "MMMM' 'd', 'yyyy" - "d' 'MMMM', 'yyyy" - "MMM' 'd', 'yyyy" - "d' 'MMM', 'yyyy" + "d' 'MMMM' 'yyyy" + "d' 'MMMM' 'yyyy" + "d' 'MMM' 'yyyy" + "d' 'MMM' 'yyyy" "h':'mm' 'a" "HH':'mm" "południe" @@ -582,34 +582,34 @@ "%-d %B %Y" "%B %Y" "%H:%M:%S" - "%H:%M:%S %B %-d, %Y" - "%2$s %3$s%7$s %8$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s" - "%2$s %3$s%7$s %8$s, %9$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s, %9$s" - "%2$s %3$s, %5$s%7$s %8$s, %10$s" - "%1$s, %2$s %3$s, %5$s%6$s, %7$s %8$s, %10$s" - "%2$s %3$s, %4$s, %5$s%7$s %8$s, %9$s, %10$s" - "%1$s, %2$s %3$s, %4$s, %5$s%6$s, %7$s %8$s, %9$s, %10$s" - "%2$s/%3$s%7$s/%8$s" - "%1$s, %2$s/%3$s%6$s, %7$s/%8$s" - "%2$s/%3$s/%4$s%7$s/%8$s/%9$s" - "%1$s, %2$s/%3$s/%4$s%6$s, %7$s/%8$s/%9$s" - "%2$s/%3$s, %5$s%7$s/%8$s, %10$s" - "%1$s, %2$s/%3$s, %5$s%6$s, %7$s/%8$s, %10$s" - "%2$s/%3$s/%4$s, %5$s%7$s/%8$s/%9$s, %10$s" - "%1$s, %2$s/%3$s/%4$s, %5$s%6$s, %7$s/%8$s/%9$s, %10$s" - "%2$s %3$s%8$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s" - "%2$s %3$s%8$s, %9$s" - "%1$s, %2$s %3$s, %4$s%6$s, %7$s %8$s, %9$s" - "%2$s %3$s, %5$s%7$s %8$s, %10$s" - "%1$s, %2$s %3$s, %5$s%6$s, %7$s %8$s, %10$s" - "%2$s %3$s, %4$s, %5$s%7$s %8$s, %9$s, %10$s" - "%1$s, %2$s %3$s, %4$s, %5$s%6$s, %7$s %8$s, %9$s, %10$s" + "%H:%M:%S, %-d %B %Y" + "%3$s %2$s%8$s %7$s" + "%1$s, %3$s %2$s%6$s, %8$s %7$s" + "%3$s %2$s%8$s %7$s %9$s" + "%1$s, %3$s %2$s%6$s, %8$s %7$s %9$s" + "%3$s %2$s, %5$s%8$s %7$s, %10$s" + "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" + "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" + "%1$s, %3$s %2$s %4$s, %5$s%6$s, %8$s %7$s %9$s, %10$s" + "%3$s/%2$s%8$s/%7$s" + "%1$s, %3$s/%2$s%6$s, %8$s/%7$s" + "%3$s/%2$s/%4$s%8$s/%7$s/%9$s" + "%1$s, %3$s/%2$s/%4$s%6$s, %8$s/%7$s/%9$s" + "%3$s/%2$s, %5$s%8$s/%7$s, %10$s" + "%1$s, %3$s/%2$s, %5$s%6$s, %8$s/%7$s, %10$s" + "%3$s/%2$s/%4$s, %5$s%8$s/%7$s/%9$s, %10$s" + "%1$s, %3$s/%2$s/%4$s, %5$s%6$s, %8$s/%7$s/%9$s, %10$s" + "%3$s%8$s %2$s" + "%1$s, %3$s %2$s%6$s, %8$s %7$s" + "%3$s%8$s %2$s %9$s" + "%1$s, %3$s %2$s %4$s%6$s, %8$s %7$s %9$s" + "%3$s %2$s, %5$s%8$s %7$s, %10$s" + "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" + "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" + "%1$s, %3$s %2$s %4$s, %5$s%6$s, %8$s %7$s %9$s, %10$s" "%-d %b %Y" "%b %Y" - "%b %-d" + "%-d %b" "niedziela" @@ -659,30 +659,30 @@ "Październik" "Listopad" "Grudzień" - "Sty" - "Lut" - "Mar" - "Kwi" - "Maj" - "Cze" - "Lip" - "Sie" - "Wrz" - "Paź" - "Lis" - "Gru" - "Sty" - "Lut" - "Pon" - "Kwi" - "Maj" - "Cze" - "Lip" - "Sie" - "Wrz" - "Paź" - "Lis" - "Gru" + "sty" + "lut" + "mar" + "kwi" + "maj" + "cze" + "lip" + "sie" + "wrz" + "paź" + "lis" + "gru" + "sty" + "lut" + "mar" + "kwi" + "maj" + "cze" + "lip" + "sie" + "wrz" + "paź" + "lis" + "gru" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Zaznacz wszystko" -- GitLab From 134e8e4fc391d4f48f89acbfda757cd61504cb46 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Wed, 22 Apr 2009 18:45:05 -0700 Subject: [PATCH 23/72] AI 147433: Fix broken link to sdk/samples dir in the offline.html page. BUG=1790234 Automated import of CL 147433 --- docs/html/offline.jd | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/html/offline.jd b/docs/html/offline.jd index 57c55c7ff559..a42e346ec4cd 100644 --- a/docs/html/offline.jd +++ b/docs/html/offline.jd @@ -17,8 +17,10 @@ page.title=Welcome

    Once you've completed the SDK installation, you can start learning about development on the Android framework by reading the Developer's Guide. The SDK package -also includes a wide variety of very helpful code samples.

    +also includes a wide variety of code samples specific to each Android +platform. You can find the samples at this location:

    + +

    <sdk>/platforms/android-<version>/samples/

    Please note that you are currently viewing a local, offline version of the Android developer documentation. The offline documentation offers the same -- GitLab From 620986a358c522178ddfc5c0088b2a5e1768e5ae Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Wed, 22 Apr 2009 18:58:13 -0700 Subject: [PATCH 24/72] AI 147438: add app widget docs to dev guide move app widget docs out of the package description BUG=1790234 Automated import of CL 147438 --- core/java/android/appwidget/package.html | 114 +-------------- docs/html/guide/guide_toc.cs | 8 +- docs/html/guide/topics/appwidgets/index.jd | 154 +++++++++++++++++++++ 3 files changed, 164 insertions(+), 112 deletions(-) create mode 100644 docs/html/guide/topics/appwidgets/index.jd diff --git a/core/java/android/appwidget/package.html b/core/java/android/appwidget/package.html index b6cd9c74d02e..2b85bd5a41a4 100644 --- a/core/java/android/appwidget/package.html +++ b/core/java/android/appwidget/package.html @@ -3,127 +3,22 @@ views are called widgets, and are published by "AppWidget providers." The component that can contain widgets is called a "AppWidget host."

    -

    AppWidget Providers

    - -

    AppWidget Hosts

    +

    For more information, see the +AppWidgets +documentation in the Dev Guide.

    {@more}

    AppWidget Providers

    -

    -Any application can publish widgets. All an application needs to do to publish a widget is +

    Any application can publish widgets. All an application needs to do to publish a widget is to have a {@link android.content.BroadcastReceiver} that receives the {@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE AppWidgetManager.ACTION_APPWIDGET_UPDATE} intent, and provide some meta-data about the widget. Android provides the {@link android.appwidget.AppWidgetProvider} class, which extends BroadcastReceiver, as a convenience class to aid in handling the broadcasts. -

    Declaring a widget in the AndroidManifest

    - -

    -First, declare the {@link android.content.BroadcastReceiver} in your application's -AndroidManifest.xml file. - -{@sample frameworks/base/tests/appwidgets/AppWidgetHostTest/AndroidManifest.xml AppWidgetProvider} - -

    -The <receiver> element has the following attributes: -

      -
    • android:name - which specifies the - {@link android.content.BroadcastReceiver} or {@link android.appwidget.AppWidgetProvider} - class.
    • -
    • android:label - which specifies the string resource that - will be shown by the widget picker as the label.
    • -
    • android:icon - which specifies the drawable resource that - will be shown by the widget picker as the icon.
    • -
    - -

    -The <intent-filter> element tells the {@link android.content.pm.PackageManager} -that this {@link android.content.BroadcastReceiver} receives the {@link -android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE AppWidgetManager.ACTION_APPWIDGET_UPDATE} broadcast. -The widget manager will send other broadcasts directly to your widget provider as required. -It is only necessary to explicitly declare that you accept the {@link -android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE AppWidgetManager.ACTION_APPWIDGET_UPDATE} broadcast. - -

    -The <meta-data> element tells the widget manager which xml resource to -read to find the {@link android.appwidget.AppWidgetProviderInfo} for your widget provider. It has the following -attributes: -

      -
    • android:name="android.appwidget.provider" - identifies this meta-data - as the {@link android.appwidget.AppWidgetProviderInfo} descriptor.
    • -
    • android:resource - is the xml resource to use as that descriptor.
    • -
    - - -

    Adding the {@link android.appwidget.AppWidgetProviderInfo AppWidgetProviderInfo} meta-data

    - -

    -For a widget, the values in the {@link android.appwidget.AppWidgetProviderInfo} structure are supplied -in an XML resource. In the example above, the xml resource is referenced with -android:resource="@xml/appwidget_info". That XML file would go in your application's -directory at res/xml/appwidget_info.xml. Here is a simple example. - -{@sample frameworks/base/tests/appwidgets/AppWidgetHostTest/res/xml/appwidget_info.xml AppWidgetProviderInfo} - -

    -The attributes are as documented in the {@link android.appwidget.AppWidgetProviderInfo GagetInfo} class. (86400000 milliseconds means once per day) - - -

    Using the {@link android.appwidget.AppWidgetProvider AppWidgetProvider} class

    - -

    The AppWidgetProvider class is the easiest way to handle the widget provider intent broadcasts. -See the src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.java -sample class in ApiDemos for an example. - -

    Keep in mind that since the the AppWidgetProvider is a BroadcastReceiver, -your process is not guaranteed to keep running after the callback methods return. See -Application Fundamentals > -Broadcast Receiver Lifecycle for more information. - - - -

    AppWidget Configuration UI

    - -

    -Widget hosts have the ability to start a configuration activity when a widget is instantiated. -The activity should be declared as normal in AndroidManifest.xml, and it should be listed in -the AppWidgetProviderInfo XML file in the android:configure attribute. - -

    The activity you specified will be launched with the {@link -android.appwidget.AppWidgetManager#ACTION_APPWIDGET_CONFIGURE} action. See the documentation for that -action for more info. - -

    See the src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.java -sample class in ApiDemos for an example. - - - -

    AppWidget Broadcast Intents

    - -

    {@link android.appwidget.AppWidgetProvider} is just a convenience class. If you would like -to receive the widget broadcasts directly, you can. The four intents you need to care about are: -

      -
    • {@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE}
    • -
    • {@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_DELETED}
    • -
    • {@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_ENABLED}
    • -
    • {@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_DISABLED}
    • -
    - -

    By way of example, the implementation of -{@link android.appwidget.AppWidgetProvider#onReceive} is quite simple:

    - -{@sample frameworks/base/core/java/android/appwidget/AppWidgetProvider.java onReceive} -

    AppWidget Hosts

    Widget hosts are the containers in which widgets can be placed. Most of the look and feel @@ -132,5 +27,6 @@ widgets, but the lock screen could also contain widgets, and it would have a dif adding, removing and otherwise managing widgets.

    For more information on implementing your own widget host, see the {@link android.appwidget.AppWidgetHost AppWidgetHost} class.

    + diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs index 3c9b7c27bbcd..a5fdae957c5c 100644 --- a/docs/html/guide/guide_toc.cs +++ b/docs/html/guide/guide_toc.cs @@ -19,11 +19,13 @@ @@ -37,7 +39,6 @@
  • Intents and Intent Filters
  • Data Storage
  • Content Providers
  • -
  • Security and Permissions
  • @@ -94,6 +95,7 @@ --> +
  • AppWidgets
  • diff --git a/docs/html/guide/topics/appwidgets/index.jd b/docs/html/guide/topics/appwidgets/index.jd new file mode 100644 index 000000000000..f6d481ae882e --- /dev/null +++ b/docs/html/guide/topics/appwidgets/index.jd @@ -0,0 +1,154 @@ +page.title=AppWidgets +@jd:body + +
    +
    +

    Key classes

    +
      +
    1. {@link android.appwidget.AppWidgetProvider}
    2. +
    3. {@link android.appwidget.AppWidgetHost}
    4. +
    +

    In this document

    +
      +
    1. AppWidget Providers +
        +
      1. Declaring a widget in the AndroidManifest
      2. +
      3. Adding the AppWidgetProviderInfo meta-data
      4. +
      5. Using the AppWidgetProvider class
      6. +
      7. AppWidget Configuration UI
      8. +
      9. AppWidget Broadcast Intents
      10. +
      +
    2. +
    3. AppWidget Hosts
    4. +
    + +

    See also

    +
      +
    1. Introducing + home screen widgets and the AppWidget framework »
    2. +
    +
    +
    + +

    AppWidgets are miniature application views that can be embedded in other applications +(e.g., the Home). These views are called "widgets" and you can publish one with +an "AppWidget provider." An application component that is able to hold other widgets is +called an "AppWidget host."

    + + + + +

    AppWidget Providers

    +

    Any application can publish widgets. All an application needs to do to publish a widget is +to have a {@link android.content.BroadcastReceiver} that receives the {@link +android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE AppWidgetManager.ACTION_APPWIDGET_UPDATE} intent, +and provide some meta-data about the widget. Android provides the +{@link android.appwidget.AppWidgetProvider} class, which extends BroadcastReceiver, as a convenience +class to aid in handling the broadcasts. + + +

    Declaring a widget in the AndroidManifest

    + +

    First, declare the {@link android.content.BroadcastReceiver} in your application's +AndroidManifest.xml file. + +{@sample frameworks/base/tests/appwidgets/AppWidgetHostTest/AndroidManifest.xml AppWidgetProvider} + +

    +The <receiver> element has the following attributes: +

      +
    • android:name - which specifies the + {@link android.content.BroadcastReceiver} or {@link android.appwidget.AppWidgetProvider} + class.
    • +
    • android:label - which specifies the string resource that + will be shown by the widget picker as the label.
    • +
    • android:icon - which specifies the drawable resource that + will be shown by the widget picker as the icon.
    • +
    + +

    +The <intent-filter> element tells the {@link android.content.pm.PackageManager} +that this {@link android.content.BroadcastReceiver} receives the {@link +android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE AppWidgetManager.ACTION_APPWIDGET_UPDATE} broadcast. +The widget manager will send other broadcasts directly to your widget provider as required. +It is only necessary to explicitly declare that you accept the {@link +android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE AppWidgetManager.ACTION_APPWIDGET_UPDATE} broadcast. + +

    +The <meta-data> element tells the widget manager which xml resource to +read to find the {@link android.appwidget.AppWidgetProviderInfo} for your widget provider. It has the following +attributes: +

      +
    • android:name="android.appwidget.provider" - identifies this meta-data + as the {@link android.appwidget.AppWidgetProviderInfo} descriptor.
    • +
    • android:resource - is the xml resource to use as that descriptor.
    • +
    + + +

    Adding the AppWidgetProviderInfo meta-data

    + +

    For a widget, the values in the {@link android.appwidget.AppWidgetProviderInfo} structure are supplied +in an XML resource. In the example above, the xml resource is referenced with +android:resource="@xml/appwidget_info". That XML file would go in your application's +directory at res/xml/appwidget_info.xml. Here is a simple example. + +{@sample frameworks/base/tests/appwidgets/AppWidgetHostTest/res/xml/appwidget_info.xml AppWidgetProviderInfo} + +

    The attributes are as documented in the +{@link android.appwidget.AppWidgetProviderInfo} class. + + +

    Using the AppWidgetProvider class

    + +

    The AppWidgetProvider class is the easiest way to handle the widget provider intent broadcasts. +See the src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.java +sample class in ApiDemos for an example. + +

    Keep in mind that since the the AppWidgetProvider is a BroadcastReceiver, +your process is not guaranteed to keep running after the callback methods return. See +Application Fundamentals > +Broadcast Receiver Lifecycle for more information. + + + +

    AppWidget Configuration UI

    + +

    +Widget hosts have the ability to start a configuration activity when a widget is instantiated. +The activity should be declared as normal in AndroidManifest.xml, and it should be listed in +the AppWidgetProviderInfo XML file in the android:configure attribute. + +

    The activity you specified will be launched with the {@link +android.appwidget.AppWidgetManager#ACTION_APPWIDGET_CONFIGURE} action. See the documentation for that +action for more info. + +

    See the src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.java +sample class in ApiDemos for an example. + + + +

    AppWidget Broadcast Intents

    + +

    {@link android.appwidget.AppWidgetProvider} is just a convenience class. If you would like +to receive the widget broadcasts directly, you can. The four intents you need to care about are: +

      +
    • {@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE}
    • +
    • {@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_DELETED}
    • +
    • {@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_ENABLED}
    • +
    • {@link android.appwidget.AppWidgetManager#ACTION_APPWIDGET_DISABLED}
    • +
    + +

    By way of example, the implementation of +{@link android.appwidget.AppWidgetProvider#onReceive} is quite simple:

    + +{@sample frameworks/base/core/java/android/appwidget/AppWidgetProvider.java onReceive} + + +

    AppWidget Hosts

    + +

    Widget hosts are the containers in which widgets can be placed. Most of the look and feel +details are left up to the widget hosts. For example, the home screen has one way of viewing +widgets, but the lock screen could also contain widgets, and it would have a different way of +adding, removing and otherwise managing widgets.

    +

    For more information on implementing your own widget host, see the +{@link android.appwidget.AppWidgetHost AppWidgetHost} class.

    -- GitLab From 78b1511d96f0b2123bfadf51c5c1ccf33cdd2b3d Mon Sep 17 00:00:00 2001 From: Bill Napier <> Date: Thu, 23 Apr 2009 17:14:22 -0700 Subject: [PATCH 25/72] AI 147541: Add cs as default language for cz. BUG=1781746 Automated import of CL 147541 --- .../com/android/internal/telephony/gsm/MccTable.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/gsm/MccTable.java b/telephony/java/com/android/internal/telephony/gsm/MccTable.java index 53145fb7516c..4507fe33a9dd 100644 --- a/telephony/java/com/android/internal/telephony/gsm/MccTable.java +++ b/telephony/java/com/android/internal/telephony/gsm/MccTable.java @@ -62,11 +62,11 @@ public final class MccTable entryForMcc(int mcc) { int index; - + MccEntry m; m = new MccEntry(mcc, null, 0); - + index = Collections.binarySearch(table, m); if (index < 0) { @@ -154,7 +154,7 @@ public final class MccTable /* * The table below is built from two resources: - * + * * 1) ITU "Mobile Network Code (MNC) for the international * identification plan for mobile terminals and mobile users" * which is available as an annex to the ITU operational bulletin @@ -167,7 +167,7 @@ public final class MccTable * * FIXME(mkf) this should be stored in a more efficient representation */ - + table.add(new MccEntry(202,"gr",2)); //Greece table.add(new MccEntry(204,"nl",2,"Europe/Amsterdam")); //Netherlands (Kingdom of the) table.add(new MccEntry(206,"be",2)); //Belgium @@ -183,7 +183,7 @@ public final class MccTable table.add(new MccEntry(225,"va",2,"Europe/Rome","it")); //Vatican City State table.add(new MccEntry(226,"ro",2)); //Romania table.add(new MccEntry(228,"ch",2,"Europe/Zurich","en")); //Switzerland (Confederation of) - table.add(new MccEntry(230,"cz",2,"Europe/Prague")); //Czech Republic + table.add(new MccEntry(230,"cz",2,"Europe/Prague","cs")); //Czech Republic table.add(new MccEntry(231,"sk",2)); //Slovak Republic table.add(new MccEntry(232,"at",2,"Europe/Vienna","de")); //Austria table.add(new MccEntry(234,"gb",2,"Europe/London","en")); //United Kingdom of Great Britain and Northern Ireland -- GitLab From d97e8dc252b6f2f5919885ee337518e5fd5bd285 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Fri, 24 Apr 2009 11:30:35 -0700 Subject: [PATCH 26/72] AI 147710: Add redirects for sdk/preview pages. BUG=1790234 Automated import of CL 147710 --- docs/html/sdk/preview/features.html | 202 ++++++++++++++++++++++++++++ docs/html/sdk/preview/index.jd | 5 + 2 files changed, 207 insertions(+) create mode 100644 docs/html/sdk/preview/features.html create mode 100644 docs/html/sdk/preview/index.jd diff --git a/docs/html/sdk/preview/features.html b/docs/html/sdk/preview/features.html new file mode 100644 index 000000000000..392c0895ec25 --- /dev/null +++ b/docs/html/sdk/preview/features.html @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Redirecting... + + + + + + + + + + +
    +
    +
    + + + +
    +
    + + + +
    + + + + +
    + +
    + + + + + + + + + diff --git a/docs/html/sdk/preview/index.jd b/docs/html/sdk/preview/index.jd new file mode 100644 index 000000000000..cb699e9121d1 --- /dev/null +++ b/docs/html/sdk/preview/index.jd @@ -0,0 +1,5 @@ +sdk.redirect=true +@jd:body + + + -- GitLab From 6edea74a4dc0f2e17d9fb59ef5e175d9cb1a8508 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Fri, 24 Apr 2009 11:32:25 -0700 Subject: [PATCH 27/72] AI 147711: Fix link text in highlights doc. Copy "New APIs" section to Version Notes doc. BUG=1790234 Automated import of CL 147711 --- docs/html/sdk/android-1.5-highlights.jd | 32 ++++---- docs/html/sdk/android-1.5.jd | 98 +++++++++++++++---------- 2 files changed, 76 insertions(+), 54 deletions(-) diff --git a/docs/html/sdk/android-1.5-highlights.jd b/docs/html/sdk/android-1.5-highlights.jd index 46022d159d22..b0e5f57d6b37 100644 --- a/docs/html/sdk/android-1.5-highlights.jd +++ b/docs/html/sdk/android-1.5-highlights.jd @@ -11,13 +11,13 @@ sdk.version=1.5_r1 The list below provides an overview of the changes.

    -

    User interface refinements

    +

    User Interface Refinements

    * *

    The extra values can be extracted using - * {@link #getMessagesFromIntent(Intent)}

    + * {@link #getMessagesFromIntent(Intent)}.

    + * + *

    If a BroadcastReceiver encounters an error while processing + * this intent it should set the result code appropriately.

    */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String SMS_RECEIVED_ACTION = @@ -493,7 +514,10 @@ public final class Telephony { * * *

    The extra values can be extracted using - * {@link #getMessagesFromIntent(Intent)}

    + * {@link #getMessagesFromIntent(Intent)}.

    + * + *

    If a BroadcastReceiver encounters an error while processing + * this intent it should set the result code appropriately.

    */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String DATA_SMS_RECEIVED_ACTION = @@ -510,6 +534,9 @@ public final class Telephony { *
  • pduType (Integer) - The WAP PDU type
  • *
  • data - The data payload of the message
  • * + * + *

    If a BroadcastReceiver encounters an error while processing + * this intent it should set the result code appropriately.

    */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String WAP_PUSH_RECEIVED_ACTION = diff --git a/core/java/android/server/BluetoothDeviceService.java b/core/java/android/server/BluetoothDeviceService.java index 8e5cee9bbfba..8c843efd7e4e 100644 --- a/core/java/android/server/BluetoothDeviceService.java +++ b/core/java/android/server/BluetoothDeviceService.java @@ -372,6 +372,10 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub { mEventLoop.onModeChanged(getModeNative()); } + if (mIsAirplaneSensitive && isAirplaneModeOn()) { + disable(false); + } + } } @@ -1220,6 +1224,8 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub { break; } pw.println("getHeadsetAddress() = " + headset.getHeadsetAddress()); + pw.println("getBatteryUsageHint() = " + headset.getBatteryUsageHint()); + headset.close(); } diff --git a/core/java/android/server/search/SearchManagerService.java b/core/java/android/server/search/SearchManagerService.java index 03623d6bf411..373e61ff97f0 100644 --- a/core/java/android/server/search/SearchManagerService.java +++ b/core/java/android/server/search/SearchManagerService.java @@ -17,48 +17,69 @@ package android.server.search; import android.app.ISearchManager; +import android.app.ISearchManagerCallback; +import android.app.SearchDialog; +import android.app.SearchManager; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; +import android.content.res.Configuration; +import android.os.Bundle; import android.os.Handler; +import android.os.RemoteException; +import android.os.SystemProperties; +import android.text.TextUtils; +import android.util.Log; import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.FutureTask; /** * This is a simplified version of the Search Manager service. It no longer handles - * presentation (UI). Its function is to maintain the map & list of "searchable" + * presentation (UI). Its function is to maintain the map & list of "searchable" * items, which provides a mapping from individual activities (where a user might have * invoked search) to specific searchable activities (where the search will be dispatched). */ public class SearchManagerService extends ISearchManager.Stub + implements DialogInterface.OnCancelListener, DialogInterface.OnDismissListener { // general debugging support private static final String TAG = "SearchManagerService"; - private static final boolean DEBUG = false; - - // configuration choices - private static final boolean IMMEDIATE_SEARCHABLES_UPDATE = true; + private static final boolean DBG = false; // class maintenance and general shared data private final Context mContext; private final Handler mHandler; private boolean mSearchablesDirty; - private Searchables mSearchables; - + private final Searchables mSearchables; + + final SearchDialog mSearchDialog; + ISearchManagerCallback mCallback = null; + + private final boolean mDisabledOnBoot; + + private static final String DISABLE_SEARCH_PROPERTY = "dev.disablesearchdialog"; + /** * Initializes the Search Manager service in the provided system context. * Only one instance of this object should be created! * * @param context to use for accessing DB, window manager, etc. */ - public SearchManagerService(Context context) { + public SearchManagerService(Context context) { mContext = context; mHandler = new Handler(); mSearchablesDirty = true; mSearchables = new Searchables(context); - + mSearchDialog = new SearchDialog(context); + mSearchDialog.setOnCancelListener(this); + mSearchDialog.setOnDismissListener(this); + // Setup the infrastructure for updating and maintaining the list // of searchable activities. IntentFilter filter = new IntentFilter(); @@ -67,17 +88,18 @@ public class SearchManagerService extends ISearchManager.Stub filter.addAction(Intent.ACTION_PACKAGE_CHANGED); filter.addDataScheme("package"); mContext.registerReceiver(mIntentReceiver, filter, null, mHandler); - + // After startup settles down, preload the searchables list, // which will reduce the delay when the search UI is invoked. - if (IMMEDIATE_SEARCHABLES_UPDATE) { - mHandler.post(mRunUpdateSearchable); - } + mHandler.post(mRunUpdateSearchable); + + // allows disabling of search dialog for stress testing runs + mDisabledOnBoot = !TextUtils.isEmpty(SystemProperties.get(DISABLE_SEARCH_PROPERTY)); } - + /** * Listens for intent broadcasts. - * + * * The primary purpose here is to refresh the "searchables" list * if packages are added/removed. */ @@ -85,29 +107,25 @@ public class SearchManagerService extends ISearchManager.Stub @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); - + // First, test for intents that matter at any time if (action.equals(Intent.ACTION_PACKAGE_ADDED) || action.equals(Intent.ACTION_PACKAGE_REMOVED) || action.equals(Intent.ACTION_PACKAGE_CHANGED)) { mSearchablesDirty = true; - if (IMMEDIATE_SEARCHABLES_UPDATE) { - mHandler.post(mRunUpdateSearchable); - } + mHandler.post(mRunUpdateSearchable); return; } } }; - + /** * This runnable (for the main handler / UI thread) will update the searchables list. */ private Runnable mRunUpdateSearchable = new Runnable() { public void run() { - if (mSearchablesDirty) { - updateSearchables(); - } - } + updateSearchablesIfDirty(); + } }; /** @@ -115,42 +133,251 @@ public class SearchManagerService extends ISearchManager.Stub * a package add/remove broadcast message. */ private void updateSearchables() { + if (DBG) debug("updateSearchables()"); mSearchables.buildSearchableList(); mSearchablesDirty = false; } + /** + * Updates the list of searchables if needed. + */ + private void updateSearchablesIfDirty() { + if (mSearchablesDirty) { + updateSearchables(); + } + } + /** * Returns the SearchableInfo for a given activity * * @param launchActivity The activity from which we're launching this search. * @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 + * 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. * If true, this will always launch a platform-global (e.g. web-based) search instead. * @return Returns a SearchableInfo record describing the parameters of the search, * or null if no searchable metadata was available. */ public SearchableInfo getSearchableInfo(ComponentName launchActivity, boolean globalSearch) { - // final check. however we should try to avoid this, because - // it slows down the entry into the UI. - if (mSearchablesDirty) { - updateSearchables(); - } + updateSearchablesIfDirty(); SearchableInfo si = null; if (globalSearch) { si = mSearchables.getDefaultSearchable(); } else { + if (launchActivity == null) { + Log.e(TAG, "getSearchableInfo(), activity == null"); + return null; + } si = mSearchables.getSearchableInfo(launchActivity); } return si; } - + /** * Returns a list of the searchable activities that can be included in global search. */ public List getSearchablesInGlobalSearch() { + updateSearchablesIfDirty(); return mSearchables.getSearchablesInGlobalSearchList(); } + /** + * Launches the search UI on the main thread of the service. + * + * @see SearchManager#startSearch(String, boolean, ComponentName, Bundle, boolean) + */ + public void startSearch(final String initialQuery, + final boolean selectInitialQuery, + final ComponentName launchActivity, + final Bundle appSearchData, + final boolean globalSearch, + final ISearchManagerCallback searchManagerCallback) { + if (DBG) debug("startSearch()"); + Runnable task = new Runnable() { + public void run() { + performStartSearch(initialQuery, + selectInitialQuery, + launchActivity, + appSearchData, + globalSearch, + searchManagerCallback); + } + }; + mHandler.post(task); + } + + /** + * Actually launches the search. This must be called on the service UI thread. + */ + /*package*/ void performStartSearch(String initialQuery, + boolean selectInitialQuery, + ComponentName launchActivity, + Bundle appSearchData, + boolean globalSearch, + ISearchManagerCallback searchManagerCallback) { + if (DBG) debug("performStartSearch()"); + + if (mDisabledOnBoot) { + Log.d(TAG, "ignoring start search request because " + DISABLE_SEARCH_PROPERTY + + " system property is set."); + return; + } + + mSearchDialog.show(initialQuery, selectInitialQuery, launchActivity, appSearchData, + globalSearch); + if (searchManagerCallback != null) { + mCallback = searchManagerCallback; + } + } + + /** + * Cancels the search dialog. Can be called from any thread. + */ + public void stopSearch() { + if (DBG) debug("stopSearch()"); + mHandler.post(new Runnable() { + public void run() { + performStopSearch(); + } + }); + } + + /** + * Cancels the search dialog. Must be called from the service UI thread. + */ + /*package*/ void performStopSearch() { + if (DBG) debug("performStopSearch()"); + mSearchDialog.cancel(); + } + + /** + * Determines if the Search UI is currently displayed. + * + * @see SearchManager#isVisible() + */ + public boolean isVisible() { + return postAndWait(mIsShowing, false, "isShowing()"); + } + + private final Callable mIsShowing = new Callable() { + public Boolean call() { + return mSearchDialog.isShowing(); + } + }; + + public Bundle onSaveInstanceState() { + return postAndWait(mOnSaveInstanceState, null, "onSaveInstanceState()"); + } + + private final Callable mOnSaveInstanceState = new Callable() { + public Bundle call() { + if (mSearchDialog.isShowing()) { + return mSearchDialog.onSaveInstanceState(); + } else { + return null; + } + } + }; + + public void onRestoreInstanceState(final Bundle searchDialogState) { + if (searchDialogState != null) { + mHandler.post(new Runnable() { + public void run() { + mSearchDialog.onRestoreInstanceState(searchDialogState); + } + }); + } + } + + public void onConfigurationChanged(final Configuration newConfig) { + mHandler.post(new Runnable() { + public void run() { + if (mSearchDialog.isShowing()) { + mSearchDialog.onConfigurationChanged(newConfig); + } + } + }); + } + + /** + * Called by {@link SearchDialog} when it goes away. + */ + public void onDismiss(DialogInterface dialog) { + if (DBG) debug("onDismiss()"); + if (mCallback != null) { + try { + mCallback.onDismiss(); + } catch (RemoteException ex) { + Log.e(TAG, "onDismiss() failed: " + ex); + } + } + } + + /** + * Called by {@link SearchDialog} when the user or activity cancels search. + * When this is called, {@link #onDismiss} is called too. + */ + public void onCancel(DialogInterface dialog) { + if (DBG) debug("onCancel()"); + if (mCallback != null) { + try { + mCallback.onCancel(); + } catch (RemoteException ex) { + Log.e(TAG, "onCancel() failed: " + ex); + } + } + } + + /** + * Returns a list of the searchable activities that handle web searches. + */ + public List getSearchablesForWebSearch() { + updateSearchablesIfDirty(); + return mSearchables.getSearchablesForWebSearchList(); + } + + /** + * Returns the default searchable activity for web searches. + */ + public SearchableInfo getDefaultSearchableForWebSearch() { + updateSearchablesIfDirty(); + return mSearchables.getDefaultSearchableForWebSearch(); + } + + /** + * Sets the default searchable activity for web searches. + */ + public void setDefaultWebSearch(ComponentName component) { + mSearchables.setDefaultWebSearch(component); + } + + /** + * Runs an operation on the handler for the service, blocks until it returns, + * and returns the value returned by the operation. + * + * @param Return value type. + * @param callable Operation to run. + * @param errorResult Value to return if the operations throws an exception. + * @param name Operation name to include in error log messages. + * @return The value returned by the operation. + */ + private V postAndWait(Callable callable, V errorResult, String name) { + FutureTask task = new FutureTask(callable); + mHandler.post(task); + try { + return task.get(); + } catch (InterruptedException ex) { + Log.e(TAG, "Error calling " + name + ": " + ex); + return errorResult; + } catch (ExecutionException ex) { + Log.e(TAG, "Error calling " + name + ": " + ex); + return errorResult; + } + } + + private static void debug(String msg) { + Thread thread = Thread.currentThread(); + Log.d(TAG, msg + " (" + thread.getName() + "-" + thread.getId() + ")"); + } } diff --git a/core/java/android/server/search/SearchableInfo.java b/core/java/android/server/search/SearchableInfo.java index 842fc7573aef..8ef1f154d72d 100644 --- a/core/java/android/server/search/SearchableInfo.java +++ b/core/java/android/server/search/SearchableInfo.java @@ -40,7 +40,7 @@ import java.util.HashMap; public final class SearchableInfo implements Parcelable { // general debugging support - private static final boolean DBG = true; + private static final boolean DBG = false; private static final String LOG_TAG = "SearchableInfo"; // static strings used for XML lookups. @@ -66,6 +66,8 @@ public final class SearchableInfo implements Parcelable { private final int mSearchInputType; private final int mSearchImeOptions; private final boolean mIncludeInGlobalSearch; + private final boolean mQueryAfterZeroResults; + private final String mSettingsDescription; private final String mSuggestAuthority; private final String mSuggestPath; private final String mSuggestSelection; @@ -133,6 +135,14 @@ public final class SearchableInfo implements Parcelable { public boolean shouldRewriteQueryFromText() { return 0 != (mSearchMode & SEARCH_MODE_QUERY_REWRITE_FROM_TEXT); } + + /** + * Gets the description to use for this source in system search settings, or null if + * none has been specified. + */ + public String getSettingsDescription() { + return mSettingsDescription; + } /** * Retrieve the path for obtaining search suggestions. @@ -276,7 +286,11 @@ public final class SearchableInfo implements Parcelable { EditorInfo.IME_ACTION_SEARCH); mIncludeInGlobalSearch = a.getBoolean( com.android.internal.R.styleable.Searchable_includeInGlobalSearch, false); + mQueryAfterZeroResults = a.getBoolean( + com.android.internal.R.styleable.Searchable_queryAfterZeroResults, false); + mSettingsDescription = a.getString( + com.android.internal.R.styleable.Searchable_searchSettingsDescription); mSuggestAuthority = a.getString( com.android.internal.R.styleable.Searchable_searchSuggestAuthority); mSuggestPath = a.getString( @@ -317,7 +331,7 @@ public final class SearchableInfo implements Parcelable { // for now, implement some form of rules - minimal data if (mLabelId == 0) { - throw new IllegalArgumentException("No label."); + throw new IllegalArgumentException("Search label must be a resource reference."); } } @@ -438,13 +452,18 @@ public final class SearchableInfo implements Parcelable { xml.close(); if (DBG) { - Log.d(LOG_TAG, "Checked " + activityInfo.name - + ",label=" + searchable.getLabelId() - + ",icon=" + searchable.getIconId() - + ",suggestAuthority=" + searchable.getSuggestAuthority() - + ",target=" + searchable.getSearchActivity().getClassName() - + ",global=" + searchable.shouldIncludeInGlobalSearch() - + ",threshold=" + searchable.getSuggestThreshold()); + if (searchable != null) { + Log.d(LOG_TAG, "Checked " + activityInfo.name + + ",label=" + searchable.getLabelId() + + ",icon=" + searchable.getIconId() + + ",suggestAuthority=" + searchable.getSuggestAuthority() + + ",target=" + searchable.getSearchActivity().getClassName() + + ",global=" + searchable.shouldIncludeInGlobalSearch() + + ",settingsDescription=" + searchable.getSettingsDescription() + + ",threshold=" + searchable.getSuggestThreshold()); + } else { + Log.d(LOG_TAG, "Checked " + activityInfo.name + ", no searchable meta-data"); + } } return searchable; } @@ -636,6 +655,17 @@ public final class SearchableInfo implements Parcelable { return mIncludeInGlobalSearch; } + /** + * Checks whether this searchable activity should be invoked after a query returned zero + * results. + * + * @return The value of the queryAfterZeroResults attribute, + * or false if the attribute is not set. + */ + public boolean queryAfterZeroResults() { + return mQueryAfterZeroResults; + } + /** * Support for parcelable and aidl operations. */ @@ -667,7 +697,9 @@ public final class SearchableInfo implements Parcelable { mSearchInputType = in.readInt(); mSearchImeOptions = in.readInt(); mIncludeInGlobalSearch = in.readInt() != 0; - + mQueryAfterZeroResults = in.readInt() != 0; + + mSettingsDescription = in.readString(); mSuggestAuthority = in.readString(); mSuggestPath = in.readString(); mSuggestSelection = in.readString(); @@ -702,7 +734,9 @@ public final class SearchableInfo implements Parcelable { dest.writeInt(mSearchInputType); dest.writeInt(mSearchImeOptions); dest.writeInt(mIncludeInGlobalSearch ? 1 : 0); + dest.writeInt(mQueryAfterZeroResults ? 1 : 0); + dest.writeString(mSettingsDescription); dest.writeString(mSuggestAuthority); dest.writeString(mSuggestPath); dest.writeString(mSuggestSelection); diff --git a/core/java/android/server/search/Searchables.java b/core/java/android/server/search/Searchables.java index 9586d56e8e8d..c7cc8edf108d 100644 --- a/core/java/android/server/search/Searchables.java +++ b/core/java/android/server/search/Searchables.java @@ -16,49 +16,64 @@ package android.server.search; +import com.android.internal.app.ResolverActivity; +import com.android.internal.R; + import android.app.SearchManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.content.res.Resources; import android.os.Bundle; +import android.util.Log; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** - * This class maintains the information about all searchable activities. + * This class maintains the information about all searchable activities. */ public class Searchables { + private static final String LOG_TAG = "Searchables"; + // static strings used for XML lookups, etc. - // TODO how should these be documented for the developer, in a more structured way than + // TODO how should these be documented for the developer, in a more structured way than // the current long wordy javadoc in SearchManager.java ? private static final String MD_LABEL_DEFAULT_SEARCHABLE = "android.app.default_searchable"; private static final String MD_SEARCHABLE_SYSTEM_SEARCH = "*"; - + private Context mContext; - + private HashMap mSearchablesMap = null; private ArrayList mSearchablesList = null; private ArrayList mSearchablesInGlobalSearchList = null; + private ArrayList mSearchablesForWebSearchList = null; private SearchableInfo mDefaultSearchable = null; - + private SearchableInfo mDefaultSearchableForWebSearch = null; + + public static String GOOGLE_SEARCH_COMPONENT_NAME = + "com.android.googlesearch/.GoogleSearch"; + public static String ENHANCED_GOOGLE_SEARCH_COMPONENT_NAME = + "com.google.android.providers.enhancedgooglesearch/.Launcher"; + /** - * + * * @param context Context to use for looking up activities etc. */ public Searchables (Context context) { mContext = context; } - + /** * Look up, or construct, based on the activity. - * - * The activities fall into three cases, based on meta-data found in + * + * The activities fall into three cases, based on meta-data found in * the manifest entry: *
      *
    1. The activity itself implements search. This is indicated by the @@ -70,16 +85,16 @@ public class Searchables { * case the factory will "redirect" and return the searchable data.
    2. *
    3. No searchability data is provided. We return null here and other * code will insert the "default" (e.g. contacts) search. - * + * * TODO: cache the result in the map, and check the map first. * TODO: it might make sense to implement the searchable reference as * an application meta-data entry. This way we don't have to pepper each * and every activity. * TODO: can we skip the constructor step if it's a non-searchable? - * TODO: does it make sense to plug the default into a slot here for + * TODO: does it make sense to plug the default into a slot here for * automatic return? Probably not, but it's one way to do it. * - * @param activity The name of the current activity, or null if the + * @param activity The name of the current activity, or null if the * activity does not define any explicit searchable metadata. */ public SearchableInfo getSearchableInfo(ComponentName activity) { @@ -89,18 +104,18 @@ public class Searchables { result = mSearchablesMap.get(activity); if (result != null) return result; } - + // Step 2. See if the current activity references a searchable. // Note: Conceptually, this could be a while(true) loop, but there's - // no point in implementing reference chaining here and risking a loop. + // no point in implementing reference chaining here and risking a loop. // References must point directly to searchable activities. - + ActivityInfo ai = null; try { ai = mContext.getPackageManager(). getActivityInfo(activity, PackageManager.GET_META_DATA ); String refActivityName = null; - + // First look for activity-specific reference Bundle md = ai.metaData; if (md != null) { @@ -113,11 +128,11 @@ public class Searchables { refActivityName = md.getString(MD_LABEL_DEFAULT_SEARCHABLE); } } - + // Irrespective of source, if a reference was found, follow it. if (refActivityName != null) { - // An app or activity can declare that we should simply launch + // An app or activity can declare that we should simply launch // "system default search" if search is invoked. if (refActivityName.equals(MD_SEARCHABLE_SYSTEM_SEARCH)) { return getDefaultSearchable(); @@ -143,95 +158,212 @@ public class Searchables { } catch (PackageManager.NameNotFoundException e) { // case 3: no metadata } - + // Step 3. None found. Return null. return null; - + } - + /** * Provides the system-default search activity, which you can use * whenever getSearchableInfo() returns null; - * + * * @return Returns the system-default search activity, null if never defined */ public synchronized SearchableInfo getDefaultSearchable() { return mDefaultSearchable; } - + public synchronized boolean isDefaultSearchable(SearchableInfo searchable) { return searchable == mDefaultSearchable; } - + /** - * Builds an entire list (suitable for display) of - * activities that are searchable, by iterating the entire set of - * ACTION_SEARCH intents. - * + * Builds an entire list (suitable for display) of + * activities that are searchable, by iterating the entire set of + * ACTION_SEARCH & ACTION_WEB_SEARCH intents. + * * Also clears the hash of all activities -> searches which will * refill as the user clicks "search". - * + * * This should only be done at startup and again if we know that the * list has changed. - * + * * TODO: every activity that provides a ACTION_SEARCH intent should * also provide searchability meta-data. There are a bunch of checks here * that, if data is not found, silently skip to the next activity. This * won't help a developer trying to figure out why their activity isn't * showing up in the list, but an exception here is too rough. I would * like to find a better notification mechanism. - * + * * TODO: sort the list somehow? UI choice. */ public void buildSearchableList() { - // These will become the new values at the end of the method - HashMap newSearchablesMap + HashMap newSearchablesMap = new HashMap(); ArrayList newSearchablesList = new ArrayList(); ArrayList newSearchablesInGlobalSearchList = new ArrayList(); + ArrayList newSearchablesForWebSearchList + = new ArrayList(); final PackageManager pm = mContext.getPackageManager(); - - // use intent resolver to generate list of ACTION_SEARCH receivers - List infoList; + + // Use intent resolver to generate list of ACTION_SEARCH & ACTION_WEB_SEARCH receivers. + List searchList; final Intent intent = new Intent(Intent.ACTION_SEARCH); - infoList = pm.queryIntentActivities(intent, PackageManager.GET_META_DATA); - + searchList = pm.queryIntentActivities(intent, PackageManager.GET_META_DATA); + + List webSearchInfoList; + final Intent webSearchIntent = new Intent(Intent.ACTION_WEB_SEARCH); + webSearchInfoList = pm.queryIntentActivities(webSearchIntent, PackageManager.GET_META_DATA); + // analyze each one, generate a Searchables record, and record - if (infoList != null) { - int count = infoList.size(); + if (searchList != null || webSearchInfoList != null) { + int search_count = (searchList == null ? 0 : searchList.size()); + int web_search_count = (webSearchInfoList == null ? 0 : webSearchInfoList.size()); + int count = search_count + web_search_count; for (int ii = 0; ii < count; ii++) { // for each component, try to find metadata - ResolveInfo info = infoList.get(ii); + ResolveInfo info = (ii < search_count) + ? searchList.get(ii) + : webSearchInfoList.get(ii - search_count); ActivityInfo ai = info.activityInfo; - SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai); - if (searchable != null) { - newSearchablesList.add(searchable); - newSearchablesMap.put(searchable.getSearchActivity(), searchable); - if (searchable.shouldIncludeInGlobalSearch()) { - newSearchablesInGlobalSearchList.add(searchable); + // 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 (webSearchInfoList != null) { + for (int i = 0; i < webSearchInfoList.size(); ++i) { + ActivityInfo ai = webSearchInfoList.get(i).activityInfo; + ComponentName component = new ComponentName(ai.packageName, ai.name); + newSearchablesForWebSearchList.add(newSearchablesMap.get(component)); + } + } + // Find the global search provider Intent globalSearchIntent = new Intent(SearchManager.INTENT_ACTION_GLOBAL_SEARCH); ComponentName globalSearchActivity = globalSearchIntent.resolveActivity(pm); SearchableInfo newDefaultSearchable = newSearchablesMap.get(globalSearchActivity); + if (newDefaultSearchable == null) { + Log.w(LOG_TAG, "No searchable info found for new default searchable activity " + + globalSearchActivity); + } + + // Find the default web search provider. + ComponentName webSearchActivity = getPreferredWebSearchActivity(); + SearchableInfo newDefaultSearchableForWebSearch = null; + if (webSearchActivity != null) { + newDefaultSearchableForWebSearch = newSearchablesMap.get(webSearchActivity); + } + if (newDefaultSearchableForWebSearch == null) { + Log.w(LOG_TAG, "No searchable info found for new default web search activity " + + webSearchActivity); + } + // Store a consistent set of new values synchronized (this) { mSearchablesMap = newSearchablesMap; mSearchablesList = newSearchablesList; mSearchablesInGlobalSearchList = newSearchablesInGlobalSearchList; + mSearchablesForWebSearchList = newSearchablesForWebSearchList; mDefaultSearchable = newDefaultSearchable; + mDefaultSearchableForWebSearch = newDefaultSearchableForWebSearch; + } + + // Inform all listeners that the list of searchables has been updated. + mContext.sendBroadcast(new Intent(SearchManager.INTENT_ACTION_SEARCHABLES_CHANGED)); + } + + /** + * 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. + * @param action Intent action for which this activity is to be set as preferred. + * @return true if component was detected and set as preferred activity, false if not. + */ + private boolean setPreferredActivity(ComponentName component, String action) { + Log.d(LOG_TAG, "Checking component " + component); + PackageManager pm = mContext.getPackageManager(); + ActivityInfo ai; + try { + ai = pm.getActivityInfo(component, 0); + } catch (PackageManager.NameNotFoundException e) { + return false; + } + + // The code here to find the value for bestMatch is heavily inspired by the code + // in ResolverActivity where the preferred activity is set. + Intent intent = new Intent(action); + intent.addCategory(Intent.CATEGORY_DEFAULT); + List webSearchActivities = pm.queryIntentActivities(intent, 0); + ComponentName set[] = new ComponentName[webSearchActivities.size()]; + int bestMatch = 0; + for (int i = 0; i < webSearchActivities.size(); ++i) { + ResolveInfo ri = webSearchActivities.get(i); + set[i] = new ComponentName(ri.activityInfo.packageName, + ri.activityInfo.name); + if (ri.match > bestMatch) bestMatch = ri.match; + } + + Log.d(LOG_TAG, "Setting preferred web search activity to " + component); + IntentFilter filter = new IntentFilter(action); + filter.addCategory(Intent.CATEGORY_DEFAULT); + pm.replacePreferredActivity(filter, bestMatch, set, component); + return true; + } + + public ComponentName getPreferredWebSearchActivity() { + // Check if we have a preferred web search activity. + Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); + PackageManager pm = mContext.getPackageManager(); + ResolveInfo ri = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); + + if (ri == null || ri.activityInfo.name.equals(ResolverActivity.class.getName())) { + Log.d(LOG_TAG, "No preferred activity set for action web search."); + + // The components in the providers array are checked in the order of declaration so the + // first one has the highest priority. If the component exists in the system it is set + // as the preferred activity to handle intent action web search. + String[] preferredActivities = mContext.getResources().getStringArray( + com.android.internal.R.array.default_web_search_providers); + for (String componentName : preferredActivities) { + ComponentName component = ComponentName.unflattenFromString(componentName); + if (setPreferredActivity(component, Intent.ACTION_WEB_SEARCH)) { + return component; + } + } + } else { + // If the current preferred activity is GoogleSearch, and we detect + // EnhancedGoogleSearch installed as well, set the latter as preferred since that + // is a superset and provides more functionality. + ComponentName cn = new ComponentName(ri.activityInfo.packageName, ri.activityInfo.name); + if (cn.flattenToShortString().equals(GOOGLE_SEARCH_COMPONENT_NAME)) { + ComponentName enhancedGoogleSearch = ComponentName.unflattenFromString( + ENHANCED_GOOGLE_SEARCH_COMPONENT_NAME); + if (setPreferredActivity(enhancedGoogleSearch, Intent.ACTION_WEB_SEARCH)) { + return enhancedGoogleSearch; + } + } } + + if (ri == null) return null; + return new ComponentName(ri.activityInfo.packageName, ri.activityInfo.name); } - + /** * Returns the list of searchable activities. */ @@ -239,11 +371,33 @@ public class Searchables { ArrayList result = new ArrayList(mSearchablesList); return result; } - + /** * Returns a list of the searchable activities that can be included in global search. */ public synchronized ArrayList getSearchablesInGlobalSearchList() { return new ArrayList(mSearchablesInGlobalSearchList); } + + /** + * Returns a list of the searchable activities that handle web searches. + */ + public synchronized ArrayList getSearchablesForWebSearchList() { + return new ArrayList(mSearchablesForWebSearchList); + } + + /** + * Returns the default searchable activity for web searches. + */ + public synchronized SearchableInfo getDefaultSearchableForWebSearch() { + return mDefaultSearchableForWebSearch; + } + + /** + * Sets the default searchable activity for web searches. + */ + public synchronized void setDefaultWebSearch(ComponentName component) { + setPreferredActivity(component, Intent.ACTION_WEB_SEARCH); + buildSearchableList(); + } } diff --git a/core/java/android/speech/IRecognitionListener.aidl b/core/java/android/speech/IRecognitionListener.aidl index 6ed32b502b42..2da2258b4ee1 100644 --- a/core/java/android/speech/IRecognitionListener.aidl +++ b/core/java/android/speech/IRecognitionListener.aidl @@ -17,6 +17,7 @@ package android.speech; import android.os.Bundle; +import android.speech.RecognitionResult; /** * Listener for speech recognition events, used with RecognitionService. @@ -43,13 +44,17 @@ interface IRecognitionListener { /** Called after the user stops speaking. */ void onEndOfSpeech(); - /** A network or recognition error occurred. */ - void onError(in String error); + /** + * A network or recognition error occurred. The code is defined in + * {@link android.speech.RecognitionResult} + */ + void onError(in int error); /** - * Called when recognition transcripts are ready. - * results: an ordered list of the most likely transcripts (N-best list). - * @hide + * Called when recognition results are ready. + * @param results: an ordered list of the most likely results (N-best list). + * @param key: a key associated with the results. The same results can + * be retrieved asynchronously later using the key, if available. */ - void onResults(in List results); + void onResults(in List results, long key); } diff --git a/core/java/android/speech/IRecognitionService.aidl b/core/java/android/speech/IRecognitionService.aidl index 36d12e9aae64..a18c380c9e70 100644 --- a/core/java/android/speech/IRecognitionService.aidl +++ b/core/java/android/speech/IRecognitionService.aidl @@ -18,6 +18,7 @@ package android.speech; import android.content.Intent; import android.speech.IRecognitionListener; +import android.speech.RecognitionResult; // A Service interface to speech recognition. Call startListening when // you want to begin capturing audio; RecognitionService will automatically @@ -29,6 +30,8 @@ interface IRecognitionService { // see RecognizerIntent.java for constants used to specify the intent. void startListening(in Intent recognizerIntent, in IRecognitionListener listener); + + List getRecognitionResults(in long key); void cancel(); } diff --git a/core/java/android/speech/RecognitionResult.aidl b/core/java/android/speech/RecognitionResult.aidl new file mode 100644 index 000000000000..59e53ab86fd1 --- /dev/null +++ b/core/java/android/speech/RecognitionResult.aidl @@ -0,0 +1,19 @@ +/* + * 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.speech; + +parcelable RecognitionResult; diff --git a/core/java/android/speech/RecognitionResult.java b/core/java/android/speech/RecognitionResult.java new file mode 100644 index 000000000000..8d031fcd3273 --- /dev/null +++ b/core/java/android/speech/RecognitionResult.java @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2008 Google Inc. + * + * 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.speech; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * RecognitionResult is a passive object that stores a single recognized + * query and its search result. + * TODO: revisit and improve. May be we should have a separate result + * object for each type, and put them (type/value) in bundle? + * + * {@hide} + */ +public class RecognitionResult implements Parcelable { + /** + * Status of the recognize request. + */ + public static final int NETWORK_TIMEOUT = 1; // Network operation timed out. + public static final int NETWORK_ERROR = 2; // Other networkrelated errors. + public static final int AUDIO_ERROR = 3; // Audio recording error. + public static final int SERVER_ERROR = 4; // Server sends error status. + public static final int CLIENT_ERROR = 5; // Other client side errors. + public static final int SPEECH_TIMEOUT = 6; // No speech input + public static final int NO_MATCH = 7; // No recognition result matched. + public static final int SERVICE_BUSY = 8; // RecognitionService busy. + + /** + * Type of the recognition results. + */ + public static final int RAW_RECOGNITION_RESULT = 0; + public static final int WEB_SEARCH_RESULT = 1; + public static final int CONTACT_RESULT = 2; + + /** + * A factory method to create a raw RecognitionResult + * + * @param sentence the recognized text. + */ + public static RecognitionResult newRawRecognitionResult(String sentence) { + return new RecognitionResult(RAW_RECOGNITION_RESULT, sentence, null, null); + } + + /** + * A factory method to create RecognitionResult for contacts. + * + * @param contact the contact name. + * @param phoneType the phone type. + */ + public static RecognitionResult newContactResult(String contact, int phoneType) { + return new RecognitionResult(CONTACT_RESULT, contact, phoneType); + } + + /** + * A factory method to create a RecognitionResult for Web Search Query. + * + * @param query the query string. + * @param html the html page of the search result. + * @param url the url that performs the search with the query. + */ + public static RecognitionResult newWebResult(String query, String html, String url) { + return new RecognitionResult(WEB_SEARCH_RESULT, query, html, url); + } + + public static final Parcelable.Creator CREATOR + = new Parcelable.Creator() { + + public RecognitionResult createFromParcel(Parcel in) { + return new RecognitionResult(in); + } + + public RecognitionResult[] newArray(int size) { + return new RecognitionResult[size]; + } + }; + + /** + * Result type. + */ + public final int mResultType; + + /** + * The recognized string when mResultType is WEB_SEARCH_RESULT. + * The name of the contact when mResultType is CONTACT_RESULT. + */ + public final String mText; + + /** + * The HTML result page for the query. If this is null, then the + * application must use the url field to get the HTML result page. + */ + public final String mHtml; + + /** + * The url to get the result page for the query string. The + * application must use this url instead of performing the search + * with the query. + */ + public final String mUrl; + + /** Phone number type. This is valid only when mResultType == CONTACT_RESULT */ + public final int mPhoneType; + + private RecognitionResult(int type, String query, String html, String url) { + mResultType = type; + mText = query; + mHtml = html; + mUrl = url; + mPhoneType = -1; + } + + private RecognitionResult(int type, String query, int at) { + mResultType = type; + mText = query; + mPhoneType = at; + mHtml = null; + mUrl = null; + } + + private RecognitionResult(Parcel in) { + mResultType = in.readInt(); + mText = in.readString(); + mHtml= in.readString(); + mUrl= in.readString(); + mPhoneType = in.readInt(); + } + + public void writeToParcel(Parcel out, int flags) { + out.writeInt(mResultType); + out.writeString(mText); + out.writeString(mHtml); + out.writeString(mUrl); + out.writeInt(mPhoneType); + } + + + @Override + public String toString() { + String resultType[] = { "RAW", "WEB", "CONTACT" }; + return "[type=" + resultType[mResultType] + + ", text=" + mText+ ", mUrl=" + mUrl + ", html=" + mHtml + "]"; + } + + public int describeContents() { + // no special description + return 0; + } +} diff --git a/core/java/android/speech/RecognitionServiceUtil.java b/core/java/android/speech/RecognitionServiceUtil.java index 650c0fd24881..a8c78684f6cd 100644 --- a/core/java/android/speech/RecognitionServiceUtil.java +++ b/core/java/android/speech/RecognitionServiceUtil.java @@ -21,6 +21,9 @@ import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; +import android.os.RemoteException; +import android.speech.RecognitionResult; +import android.util.Log; import java.util.List; @@ -56,6 +59,11 @@ public class RecognitionServiceUtil { public static final Intent sDefaultIntent = new Intent( RecognizerIntent.ACTION_RECOGNIZE_SPEECH); + // Recognize request parameters + public static final String USE_LOCATION = "useLocation"; + public static final String CONTACT_AUTH_TOKEN = "contactAuthToken"; + + // Bundles public static final String NOISE_LEVEL = "NoiseLevel"; public static final String SIGNAL_NOISE_RATIO = "SignalNoiseRatio"; @@ -72,8 +80,8 @@ public class RecognitionServiceUtil { public void onRmsChanged(float rmsdB) {} public void onBufferReceived(byte[] buf) {} public void onEndOfSpeech() {} - public void onError(String error) {} - public void onResults(List results) {} + public void onError(int error) {} + public void onResults(List results, long key) {} } /** diff --git a/core/java/android/speech/tts/ITts.aidl b/core/java/android/speech/tts/ITts.aidl new file mode 100755 index 000000000000..c9a6180d4e69 --- /dev/null +++ b/core/java/android/speech/tts/ITts.aidl @@ -0,0 +1,63 @@ +/* + * 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.speech.tts; + +import android.speech.tts.ITtsCallback; + +import android.content.Intent; + +/** + * AIDL for the TTS Service + * ITts.java is autogenerated from this. + * + * {@hide} + */ +interface ITts { + int setSpeechRate(in int speechRate); + + int setPitch(in int pitch); + + int speak(in String text, in int queueMode, in String[] params); + + boolean isSpeaking(); + + int stop(); + + void addSpeech(in String text, in String packageName, in int resId); + + void addSpeechFile(in String text, in String filename); + + String[] getLanguage(); + + int isLanguageAvailable(in String language, in String country, in String variant); + + int setLanguage(in String language, in String country, in String variant); + + boolean synthesizeToFile(in String text, in String[] params, in String outputDirectory); + + int playEarcon(in String earcon, in int queueMode, in String[] params); + + void addEarcon(in String earcon, in String packageName, in int resId); + + void addEarconFile(in String earcon, in String filename); + + void registerCallback(ITtsCallback cb); + + void unregisterCallback(ITtsCallback cb); + + int playSilence(in long duration, in int queueMode, in String[] params); +} diff --git a/core/java/android/speech/tts/ITtsCallback.aidl b/core/java/android/speech/tts/ITtsCallback.aidl new file mode 100755 index 000000000000..48ed73e02165 --- /dev/null +++ b/core/java/android/speech/tts/ITtsCallback.aidl @@ -0,0 +1,27 @@ +/* + * 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.speech.tts; + +/** + * AIDL for the callback from the TTS Service + * ITtsCallback.java is autogenerated from this. + * + * {@hide} + */ +oneway interface ITtsCallback { + void markReached(String mark); +} diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java new file mode 100644 index 000000000000..616b3f113ffb --- /dev/null +++ b/core/java/android/speech/tts/TextToSpeech.java @@ -0,0 +1,719 @@ +/* + * Copyright (C) 2009 Google Inc. + * + * 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.speech.tts; + +import android.speech.tts.ITts; +import android.speech.tts.ITtsCallback; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.IBinder; +import android.os.RemoteException; +import android.util.Log; + +import java.util.HashMap; +import java.util.Locale; + +/** + * + * Synthesizes speech from text for immediate playback or to create a sound file. + * + */ +//TODO complete javadoc + add links to constants +public class TextToSpeech { + + /** + * Denotes a successful operation. + */ + public static final int TTS_SUCCESS = 0; + /** + * Denotes a generic operation failure. + */ + public static final int TTS_ERROR = -1; + + /** + * Queue mode where all entries in the playback queue (media to be played + * and text to be synthesized) are dropped and replaced by the new entry. + */ + public static final int TTS_QUEUE_FLUSH = 0; + /** + * Queue mode where the new entry is added at the end of the playback queue. + */ + public static final int TTS_QUEUE_ADD = 1; + + + /** + * Denotes the language is available exactly as specified by the locale + */ + public static final int TTS_LANG_COUNTRY_VAR_AVAILABLE = 2; + + + /** + * Denotes the language is available for the language and country specified + * by the locale, but not the variant. + */ + public static final int TTS_LANG_COUNTRY_AVAILABLE = 1; + + + /** + * Denotes the language is available for the language by the locale, + * but not the country and variant. + */ + public static final int TTS_LANG_AVAILABLE = 0; + + /** + * Denotes the language data is missing. + */ + public static final int TTS_LANG_MISSING_DATA = -1; + + /** + * Denotes the language is not supported by the current TTS engine. + */ + public static final int TTS_LANG_NOT_SUPPORTED = -2; + + + /** + * Called when the TTS has initialized. + * + * The InitListener must implement the onInit function. onInit is passed a + * status code indicating the result of the TTS initialization. + */ + public interface OnInitListener { + public void onInit(int status); + } + + /** + * Internal constants for the TTS functionality + * + * {@hide} + */ + public class Engine { + // default values for a TTS engine when settings are not found in the provider + public static final int FALLBACK_TTS_DEFAULT_RATE = 100; // 1x + public static final int FALLBACK_TTS_DEFAULT_PITCH = 100;// 1x + public static final int FALLBACK_TTS_USE_DEFAULTS = 0; // false + public static final String FALLBACK_TTS_DEFAULT_LANG = "eng"; + public static final String FALLBACK_TTS_DEFAULT_COUNTRY = ""; + public static final String FALLBACK_TTS_DEFAULT_VARIANT = ""; + + // return codes for a TTS engine's check data activity + public static final int CHECK_VOICE_DATA_PASS = 1; + public static final int CHECK_VOICE_DATA_FAIL = 0; + public static final int CHECK_VOICE_DATA_BAD_DATA = -1; + public static final int CHECK_VOICE_DATA_MISSING_DATA = -2; + public static final int CHECK_VOICE_DATA_MISSING_DATA_NO_SDCARD = -3; + + // return codes for a TTS engine's check data activity + public static final String VOICE_DATA_ROOT_DIRECTORY = "dataRoot"; + public static final String VOICE_DATA_FILES = "dataFiles"; + public static final String VOICE_DATA_FILES_INFO = "dataFilesInfo"; + + // keys for the parameters passed with speak commands + public static final String TTS_KEY_PARAM_RATE = "rate"; + public static final String TTS_KEY_PARAM_LANGUAGE = "language"; + public static final String TTS_KEY_PARAM_COUNTRY = "country"; + public static final String TTS_KEY_PARAM_VARIANT = "variant"; + public static final int TTS_PARAM_POSITION_RATE = 0; + public static final int TTS_PARAM_POSITION_LANGUAGE = 2; + public static final int TTS_PARAM_POSITION_COUNTRY = 4; + public static final int TTS_PARAM_POSITION_VARIANT = 6; + } + + /** + * Connection needed for the TTS. + */ + private ServiceConnection mServiceConnection; + + private ITts mITts = null; + private Context mContext = null; + private OnInitListener mInitListener = null; + private boolean mStarted = false; + private final Object mStartLock = new Object(); + /** + * Used to store the cached parameters sent along with each synthesis request to the + * TTS service. + */ + private String[] mCachedParams; + + /** + * The constructor for the TTS. + * + * @param context + * The context + * @param listener + * The InitListener that will be called when the TTS has + * initialized successfully. + */ + public TextToSpeech(Context context, OnInitListener listener) { + mContext = context; + mInitListener = listener; + + mCachedParams = new String[2*4]; // 4 parameters, store key and value + mCachedParams[Engine.TTS_PARAM_POSITION_RATE] = Engine.TTS_KEY_PARAM_RATE; + mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE] = Engine.TTS_KEY_PARAM_LANGUAGE; + mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY] = Engine.TTS_KEY_PARAM_COUNTRY; + mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT] = Engine.TTS_KEY_PARAM_VARIANT; + + mCachedParams[Engine.TTS_PARAM_POSITION_RATE + 1] = + String.valueOf(Engine.FALLBACK_TTS_DEFAULT_RATE); + // initialize the language cached parameters with the current Locale + Locale defaultLoc = Locale.getDefault(); + mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE + 1] = defaultLoc.getISO3Language(); + mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY + 1] = defaultLoc.getISO3Country(); + mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT + 1] = defaultLoc.getVariant(); + + initTts(); + } + + + private void initTts() { + mStarted = false; + + // Initialize the TTS, run the callback after the binding is successful + mServiceConnection = new ServiceConnection() { + public void onServiceConnected(ComponentName name, IBinder service) { + synchronized(mStartLock) { + mITts = ITts.Stub.asInterface(service); + mStarted = true; + if (mInitListener != null) { + // TODO manage failures and missing resources + mInitListener.onInit(TTS_SUCCESS); + } + } + } + + public void onServiceDisconnected(ComponentName name) { + synchronized(mStartLock) { + mITts = null; + mInitListener = null; + mStarted = false; + } + } + }; + + Intent intent = new Intent("android.intent.action.START_TTS_SERVICE"); + intent.addCategory("android.intent.category.TTS"); + mContext.bindService(intent, mServiceConnection, + Context.BIND_AUTO_CREATE); + // TODO handle case where the binding works (should always work) but + // the plugin fails + } + + + /** + * Shuts down the TTS. It is good practice to call this in the onDestroy + * method of the Activity that is using the TTS so that the TTS is stopped + * cleanly. + */ + public void shutdown() { + try { + mContext.unbindService(mServiceConnection); + } catch (IllegalArgumentException e) { + // Do nothing and fail silently since an error here indicates that + // binding never succeeded in the first place. + } + } + + + /** + * Adds a mapping between a string of text and a sound resource in a + * package. + * + * @see #TTS.speak(String text, int queueMode, String[] params) + * + * @param text + * Example: "south_south_east"
      + * + * @param packagename + * Pass the packagename of the application that contains the + * resource. If the resource is in your own application (this is + * the most common case), then put the packagename of your + * application here.
      + * Example: "com.google.marvin.compass"
      + * The packagename can be found in the AndroidManifest.xml of + * your application. + *

      + * <manifest xmlns:android="..." + * package="com.google.marvin.compass"> + *

      + * + * @param resourceId + * Example: R.raw.south_south_east + * + * @return Code indicating success or failure. See TTS_ERROR and TTS_SUCCESS. + */ + public int addSpeech(String text, String packagename, int resourceId) { + synchronized(mStartLock) { + if (!mStarted) { + return TTS_ERROR; + } + try { + mITts.addSpeech(text, packagename, resourceId); + return TTS_SUCCESS; + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (NullPointerException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (IllegalStateException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } + return TTS_ERROR; + } + } + + + /** + * Adds a mapping between a string of text and a sound file. Using this, it + * is possible to add custom pronounciations for text. + * + * @param text + * The string of text + * @param filename + * The full path to the sound file (for example: + * "/sdcard/mysounds/hello.wav") + * + * @return Code indicating success or failure. See TTS_ERROR and TTS_SUCCESS. + */ + public int addSpeech(String text, String filename) { + synchronized (mStartLock) { + if (!mStarted) { + return TTS_ERROR; + } + try { + mITts.addSpeechFile(text, filename); + return TTS_SUCCESS; + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (NullPointerException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (IllegalStateException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } + return TTS_ERROR; + } + } + + + /** + * Speaks the string using the specified queuing strategy and speech + * parameters. Note that the speech parameters are not universally supported + * by all engines and will be treated as a hint. The TTS library will try to + * fulfill these parameters as much as possible, but there is no guarantee + * that the voice used will have the properties specified. + * + * @param text + * The string of text to be spoken. + * @param queueMode + * The queuing strategy to use. + * See TTS_QUEUE_ADD and TTS_QUEUE_FLUSH. + * @param params + * The hashmap of speech parameters to be used. + * + * @return Code indicating success or failure. See TTS_ERROR and TTS_SUCCESS. + */ + public int speak(String text, int queueMode, HashMap params) + { + synchronized (mStartLock) { + int result = TTS_ERROR; + Log.i("TTS received: ", text); + if (!mStarted) { + return result; + } + try { + // TODO support extra parameters, passing cache of current parameters for the moment + result = mITts.speak(text, queueMode, mCachedParams); + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (NullPointerException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (IllegalStateException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } finally { + return result; + } + } + } + + + /** + * Plays the earcon using the specified queueing mode and parameters. + * + * @param earcon + * The earcon that should be played + * @param queueMode + * See TTS_QUEUE_ADD and TTS_QUEUE_FLUSH. + * @param params + * The hashmap of parameters to be used. + * + * @return Code indicating success or failure. See TTS_ERROR and TTS_SUCCESS. + */ + public int playEarcon(String earcon, int queueMode, + HashMap params) { + synchronized (mStartLock) { + int result = TTS_ERROR; + if (!mStarted) { + return result; + } + try { + // TODO support extra parameters, passing null for the moment + result = mITts.playEarcon(earcon, queueMode, null); + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (NullPointerException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (IllegalStateException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } finally { + return result; + } + } + } + + /** + * Plays silence for the specified amount of time using the specified + * queue mode. + * + * @param durationInMs + * A long that indicates how long the silence should last. + * @param queueMode + * See TTS_QUEUE_ADD and TTS_QUEUE_FLUSH. + * + * @return Code indicating success or failure. See TTS_ERROR and TTS_SUCCESS. + */ + public int playSilence(long durationInMs, int queueMode) { + synchronized (mStartLock) { + int result = TTS_ERROR; + if (!mStarted) { + return result; + } + try { + // TODO support extra parameters, passing cache of current parameters for the moment + result = mITts.playSilence(durationInMs, queueMode, mCachedParams); + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (NullPointerException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (IllegalStateException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } finally { + return result; + } + } + } + + + /** + * Returns whether or not the TTS is busy speaking. + * + * @return Whether or not the TTS is busy speaking. + */ + public boolean isSpeaking() { + synchronized (mStartLock) { + if (!mStarted) { + return false; + } + try { + return mITts.isSpeaking(); + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (NullPointerException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (IllegalStateException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } + return false; + } + } + + + /** + * Stops speech from the TTS. + * + * @return Code indicating success or failure. See TTS_ERROR and TTS_SUCCESS. + */ + public int stop() { + synchronized (mStartLock) { + int result = TTS_ERROR; + if (!mStarted) { + return result; + } + try { + result = mITts.stop(); + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (NullPointerException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (IllegalStateException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } finally { + return result; + } + } + } + + + /** + * Sets the speech rate for the TTS engine. + * + * Note that the speech rate is not universally supported by all engines and + * will be treated as a hint. The TTS library will try to use the specified + * speech rate, but there is no guarantee. + * This has no effect on any pre-recorded speech. + * + * @param speechRate + * The speech rate for the TTS engine. 1 is the normal speed, + * lower values slow down the speech (0.5 is half the normal speech rate), + * greater values accelerate it (2 is twice the normal speech rate). + * + * @return Code indicating success or failure. See TTS_ERROR and TTS_SUCCESS. + */ + public int setSpeechRate(float speechRate) { + synchronized (mStartLock) { + int result = TTS_ERROR; + if (!mStarted) { + return result; + } + try { + if (speechRate > 0) { + int rate = (int)(speechRate*100); + mCachedParams[Engine.TTS_PARAM_POSITION_RATE + 1] = String.valueOf(rate); + result = mITts.setSpeechRate(rate); + } + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } finally { + return result; + } + } + } + + + /** + * Sets the speech pitch for the TTS engine. + * + * Note that the pitch is not universally supported by all engines and + * will be treated as a hint. The TTS library will try to use the specified + * pitch, but there is no guarantee. + * This has no effect on any pre-recorded speech. + * + * @param pitch + * The pitch for the TTS engine. 1 is the normal pitch, + * lower values lower the tone of the synthesized voice, + * greater values increase it. + * + * @return Code indicating success or failure. See TTS_ERROR and TTS_SUCCESS. + */ + public int setPitch(float pitch) { + synchronized (mStartLock) { + int result = TTS_ERROR; + if (!mStarted) { + return result; + } + try { + if (pitch > 0) { + result = mITts.setPitch((int)(pitch*100)); + } + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } finally { + return result; + } + } + } + + + /** + * Sets the language for the TTS engine. + * + * Note that the language is not universally supported by all engines and + * will be treated as a hint. The TTS library will try to use the specified + * language as represented by the Locale, but there is no guarantee. + * + * @param loc + * The locale describing the language to be used. + * + * @return Code indicating the support status for the locale. See the TTS_LANG_ codes. + */ + public int setLanguage(Locale loc) { + synchronized (mStartLock) { + int result = TTS_LANG_NOT_SUPPORTED; + if (!mStarted) { + return result; + } + try { + mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE + 1] = loc.getISO3Language(); + mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY + 1] = loc.getISO3Country(); + mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT + 1] = loc.getVariant(); + result = mITts.setLanguage(mCachedParams[Engine.TTS_PARAM_POSITION_LANGUAGE + 1], + mCachedParams[Engine.TTS_PARAM_POSITION_COUNTRY + 1], + mCachedParams[Engine.TTS_PARAM_POSITION_VARIANT + 1] ); + // TTS died; restart it. + mStarted = false; + initTts(); + } finally { + return result; + } + } + } + + + /** + * Returns a Locale instance describing the language currently being used by the TTS engine. + * @return language, country (if any) and variant (if any) used by the engine stored in a Locale + * instance, or null is the TTS engine has failed. + */ + public Locale getLanguage() { + synchronized (mStartLock) { + if (!mStarted) { + return null; + } + try { + String[] locStrings = mITts.getLanguage(); + if (locStrings.length == 3) { + return new Locale(locStrings[0], locStrings[1], locStrings[2]); + } else { + return null; + } + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } + return null; + } + } + + /** + * Checks if the specified language as represented by the Locale is available. + * + * @param loc + * The Locale describing the language to be used. + * + * @return one of TTS_LANG_NOT_SUPPORTED, TTS_LANG_MISSING_DATA, TTS_LANG_AVAILABLE, + * TTS_LANG_COUNTRY_AVAILABLE, TTS_LANG_COUNTRY_VAR_AVAILABLE. + */ + public int isLanguageAvailable(Locale loc) { + synchronized (mStartLock) { + int result = TTS_LANG_NOT_SUPPORTED; + if (!mStarted) { + return result; + } + try { + result = mITts.isLanguageAvailable(loc.getISO3Language(), + loc.getISO3Country(), loc.getVariant()); + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } finally { + return result; + } + } + } + + + /** + * Synthesizes the given text to a file using the specified parameters. + * + * @param text + * The String of text that should be synthesized + * @param params + * A hashmap of parameters. + * @param filename + * The string that gives the full output filename; it should be + * something like "/sdcard/myappsounds/mysound.wav". + * + * @return Code indicating success or failure. See TTS_ERROR and TTS_SUCCESS. + */ + public int synthesizeToFile(String text, HashMap params, + String filename) { + synchronized (mStartLock) { + int result = TTS_ERROR; + if (!mStarted) { + return result; + } + try { + // TODO support extra parameters, passing null for the moment + if (mITts.synthesizeToFile(text, null, filename)){ + result = TTS_SUCCESS; + } + } catch (RemoteException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (NullPointerException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } catch (IllegalStateException e) { + // TTS died; restart it. + mStarted = false; + initTts(); + } finally { + return result; + } + } + } + +} diff --git a/core/java/android/syncml/pim/PropertyNode.java b/core/java/android/syncml/pim/PropertyNode.java index cc5249905efe..983ecb8a37f2 100644 --- a/core/java/android/syncml/pim/PropertyNode.java +++ b/core/java/android/syncml/pim/PropertyNode.java @@ -17,12 +17,16 @@ package android.syncml.pim; import android.content.ContentValues; -import android.util.Log; +import org.apache.commons.codec.binary.Base64; + +import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.Map.Entry; +import java.util.regex.Pattern; public class PropertyNode { @@ -52,7 +56,9 @@ public class PropertyNode { public Set propGroupSet; public PropertyNode() { + propName = ""; propValue = ""; + propValue_vector = new ArrayList(); paramMap = new ContentValues(); paramMap_TYPE = new HashSet(); propGroupSet = new HashSet(); @@ -62,13 +68,21 @@ public class PropertyNode { String propName, String propValue, List propValue_vector, byte[] propValue_bytes, ContentValues paramMap, Set paramMap_TYPE, Set propGroupSet) { - this.propName = propName; + if (propName != null) { + this.propName = propName; + } else { + this.propName = ""; + } if (propValue != null) { this.propValue = propValue; } else { this.propValue = ""; } - this.propValue_vector = propValue_vector; + if (propValue_vector != null) { + this.propValue_vector = propValue_vector; + } else { + this.propValue_vector = new ArrayList(); + } this.propValue_bytes = propValue_bytes; if (paramMap != null) { this.paramMap = paramMap; @@ -117,17 +131,9 @@ public class PropertyNode { // decoded by BASE64 or QUOTED-PRINTABLE. When the size of propValue_vector // is 1, the encoded value is stored in propValue, so we do not have to // check it. - if (propValue_vector != null) { - // Log.d("@@@", "===" + propValue_vector + ", " + node.propValue_vector); - return (propValue_vector.equals(node.propValue_vector) || - (propValue_vector.size() == 1)); - } else if (node.propValue_vector != null) { - // Log.d("@@@", "===" + propValue_vector + ", " + node.propValue_vector); - return (node.propValue_vector.equals(propValue_vector) || - (node.propValue_vector.size() == 1)); - } else { - return true; - } + return (propValue_vector.equals(node.propValue_vector) || + propValue_vector.size() == 1 || + node.propValue_vector.size() == 1); } } @@ -154,4 +160,164 @@ public class PropertyNode { builder.append(propValue); return builder.toString(); } + + /** + * Encode this object into a string which can be decoded. + */ + public String encode() { + // PropertyNode#toString() is for reading, not for parsing in the future. + // We construct appropriate String here. + StringBuilder builder = new StringBuilder(); + if (propName.length() > 0) { + builder.append("propName:["); + builder.append(propName); + builder.append("],"); + } + int size = propGroupSet.size(); + if (size > 0) { + Set set = propGroupSet; + builder.append("propGroup:["); + int i = 0; + for (String group : set) { + // We do not need to double quote groups. + // group = 1*(ALPHA / DIGIT / "-") + builder.append(group); + if (i < size - 1) { + builder.append(","); + } + i++; + } + builder.append("],"); + } + + if (paramMap.size() > 0 || paramMap_TYPE.size() > 0) { + ContentValues values = paramMap; + builder.append("paramMap:["); + size = paramMap.size(); + int i = 0; + for (Entry entry : values.valueSet()) { + // Assuming param-key does not contain NON-ASCII nor symbols. + // + // According to vCard 3.0: + // param-name = iana-token / x-name + builder.append(entry.getKey()); + + // param-value may contain any value including NON-ASCIIs. + // We use the following replacing rule. + // \ -> \\ + // , -> \, + // In String#replaceAll(), "\\\\" means a single backslash. + builder.append("="); + builder.append(entry.getValue().toString() + .replaceAll("\\\\", "\\\\\\\\") + .replaceAll(",", "\\\\,")); + if (i < size -1) { + builder.append(","); + } + i++; + } + + Set set = paramMap_TYPE; + size = paramMap_TYPE.size(); + if (i > 0 && size > 0) { + builder.append(","); + } + i = 0; + for (String type : set) { + builder.append("TYPE="); + builder.append(type + .replaceAll("\\\\", "\\\\\\\\") + .replaceAll(",", "\\\\,")); + if (i < size - 1) { + builder.append(","); + } + i++; + } + builder.append("],"); + } + + size = propValue_vector.size(); + if (size > 0) { + builder.append("propValue:["); + List list = propValue_vector; + for (int i = 0; i < size; i++) { + builder.append(list.get(i) + .replaceAll("\\\\", "\\\\\\\\") + .replaceAll(",", "\\\\,")); + if (i < size -1) { + builder.append(","); + } + } + builder.append("],"); + } + + return builder.toString(); + } + + public static PropertyNode decode(String encodedString) { + PropertyNode propertyNode = new PropertyNode(); + String trimed = encodedString.trim(); + if (trimed.length() == 0) { + return propertyNode; + } + String[] elems = trimed.split("],"); + + for (String elem : elems) { + int index = elem.indexOf('['); + String name = elem.substring(0, index - 1); + Pattern pattern = Pattern.compile("(? paramMap_TYPE = propertyNode.paramMap_TYPE; + for (String value : values) { + String[] tmp = value.split("=", 2); + String mapKey = tmp[0]; + // \, -> , + // \\ -> \ + // In String#replaceAll(), "\\\\" means a single backslash. + String mapValue = + tmp[1].replaceAll("\\\\,", ",").replaceAll("\\\\\\\\", "\\\\"); + if (mapKey.equalsIgnoreCase("TYPE")) { + paramMap_TYPE.add(mapValue); + } else { + paramMap.put(mapKey, mapValue); + } + } + } else if (name.equals("propValue")) { + StringBuilder builder = new StringBuilder(); + List list = propertyNode.propValue_vector; + int length = values.length; + for (int i = 0; i < length; i++) { + String normValue = values[i] + .replaceAll("\\\\,", ",") + .replaceAll("\\\\\\\\", "\\\\"); + list.add(normValue); + builder.append(normValue); + if (i < length - 1) { + builder.append(";"); + } + } + propertyNode.propValue = builder.toString(); + } + } + + // At this time, QUOTED-PRINTABLE is already decoded to Java String. + // We just need to decode BASE64 String to binary. + String encoding = propertyNode.paramMap.getAsString("ENCODING"); + if (encoding != null && + (encoding.equalsIgnoreCase("BASE64") || + encoding.equalsIgnoreCase("B"))) { + propertyNode.propValue_bytes = + Base64.decodeBase64(propertyNode.propValue_vector.get(0).getBytes()); + } + + return propertyNode; + } } diff --git a/core/java/android/syncml/pim/VBuilderCollection.java b/core/java/android/syncml/pim/VBuilderCollection.java new file mode 100644 index 000000000000..f09c1c49445c --- /dev/null +++ b/core/java/android/syncml/pim/VBuilderCollection.java @@ -0,0 +1,100 @@ +/* + * 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.syncml.pim; + +import java.util.Collection; +import java.util.List; + +public class VBuilderCollection implements VBuilder { + + private final Collection mVBuilderCollection; + + public VBuilderCollection(Collection vBuilderCollection) { + mVBuilderCollection = vBuilderCollection; + } + + public Collection getVBuilderCollection() { + return mVBuilderCollection; + } + + public void start() { + for (VBuilder builder : mVBuilderCollection) { + builder.start(); + } + } + + public void end() { + for (VBuilder builder : mVBuilderCollection) { + builder.end(); + } + } + + public void startRecord(String type) { + for (VBuilder builder : mVBuilderCollection) { + builder.startRecord(type); + } + } + + public void endRecord() { + for (VBuilder builder : mVBuilderCollection) { + builder.endRecord(); + } + } + + public void startProperty() { + for (VBuilder builder : mVBuilderCollection) { + builder.startProperty(); + } + } + + + public void endProperty() { + for (VBuilder builder : mVBuilderCollection) { + builder.endProperty(); + } + } + + public void propertyGroup(String group) { + for (VBuilder builder : mVBuilderCollection) { + builder.propertyGroup(group); + } + } + + public void propertyName(String name) { + for (VBuilder builder : mVBuilderCollection) { + builder.propertyName(name); + } + } + + public void propertyParamType(String type) { + for (VBuilder builder : mVBuilderCollection) { + builder.propertyParamType(type); + } + } + + public void propertyParamValue(String value) { + for (VBuilder builder : mVBuilderCollection) { + builder.propertyParamValue(value); + } + } + + public void propertyValues(List values) { + for (VBuilder builder : mVBuilderCollection) { + builder.propertyValues(values); + } + } +} diff --git a/core/java/android/syncml/pim/VDataBuilder.java b/core/java/android/syncml/pim/VDataBuilder.java index 8c67cf5bfa03..f6e5b653125f 100644 --- a/core/java/android/syncml/pim/VDataBuilder.java +++ b/core/java/android/syncml/pim/VDataBuilder.java @@ -17,8 +17,10 @@ package android.syncml.pim; import android.content.ContentValues; +import android.util.CharsetUtils; import android.util.Log; +import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.net.QuotedPrintableCodec; @@ -26,9 +28,7 @@ import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.util.ArrayList; -import java.util.Collection; import java.util.List; -import java.util.Vector; /** * Store the parse result to custom datastruct: VNode, PropertyNode @@ -38,7 +38,13 @@ import java.util.Vector; */ public class VDataBuilder implements VBuilder { static private String LOG_TAG = "VDATABuilder"; - + + /** + * If there's no other information available, this class uses this charset for encoding + * byte arrays. + */ + static public String DEFAULT_CHARSET = "UTF-8"; + /** type=VNode */ public List vNodeList = new ArrayList(); private int mNodeListPos = 0; @@ -47,34 +53,74 @@ public class VDataBuilder implements VBuilder { private String mCurrentParamType; /** - * Assumes that each String can be encoded into byte array using this encoding. + * The charset using which VParser parses the text. + */ + private String mSourceCharset; + + /** + * The charset with which byte array is encoded to String. */ - private String mCharset; + private String mTargetCharset; private boolean mStrictLineBreakParsing; public VDataBuilder() { - mCharset = "ISO-8859-1"; - mStrictLineBreakParsing = false; + this(VParser.DEFAULT_CHARSET, DEFAULT_CHARSET, false); } - public VDataBuilder(String encoding, boolean strictLineBreakParsing) { - mCharset = encoding; - mStrictLineBreakParsing = strictLineBreakParsing; + public VDataBuilder(String charset, boolean strictLineBreakParsing) { + this(null, charset, strictLineBreakParsing); } + /** + * @hide sourceCharset is temporal. + */ + public VDataBuilder(String sourceCharset, String targetCharset, + boolean strictLineBreakParsing) { + if (sourceCharset != null) { + mSourceCharset = sourceCharset; + } else { + mSourceCharset = VParser.DEFAULT_CHARSET; + } + if (targetCharset != null) { + mTargetCharset = targetCharset; + } else { + mTargetCharset = DEFAULT_CHARSET; + } + mStrictLineBreakParsing = strictLineBreakParsing; + } + public void start() { } public void end() { } + // Note: I guess that this code assumes the Record may nest like this: + // START:VPOS + // ... + // START:VPOS2 + // ... + // END:VPOS2 + // ... + // END:VPOS + // + // However the following code has a bug. + // When error occurs after calling startRecord(), the entry which is probably + // the cause of the error remains to be in vNodeList, while endRecord() is not called. + // + // I leave this code as is since I'm not familiar with vcalendar specification. + // But I believe we should refactor this code in the future. + // Until this, the last entry has to be removed when some error occurs. public void startRecord(String type) { + VNode vnode = new VNode(); vnode.parseStatus = 1; vnode.VName = type; + // I feel this should be done in endRecord(), but it cannot be done because of + // the reason above. vNodeList.add(vnode); - mNodeListPos = vNodeList.size()-1; + mNodeListPos = vNodeList.size() - 1; mCurrentVNode = vNodeList.get(mNodeListPos); } @@ -90,15 +136,14 @@ public class VDataBuilder implements VBuilder { } public void startProperty() { - // System.out.println("+ startProperty. "); + mCurrentPropNode = new PropertyNode(); } public void endProperty() { - // System.out.println("- endProperty. "); + mCurrentVNode.propList.add(mCurrentPropNode); } public void propertyName(String name) { - mCurrentPropNode = new PropertyNode(); mCurrentPropNode.propName = name; } @@ -122,139 +167,145 @@ public class VDataBuilder implements VBuilder { mCurrentParamType = null; } - private String encodeString(String originalString, String targetEncoding) { - Charset charset = Charset.forName(mCharset); + private String encodeString(String originalString, String targetCharset) { + if (mSourceCharset.equalsIgnoreCase(targetCharset)) { + return originalString; + } + Charset charset = Charset.forName(mSourceCharset); ByteBuffer byteBuffer = charset.encode(originalString); // byteBuffer.array() "may" return byte array which is larger than // byteBuffer.remaining(). Here, we keep on the safe side. byte[] bytes = new byte[byteBuffer.remaining()]; byteBuffer.get(bytes); try { - return new String(bytes, targetEncoding); + return new String(bytes, targetCharset); } catch (UnsupportedEncodingException e) { - return null; + Log.e(LOG_TAG, "Failed to encode: charset=" + targetCharset); + return new String(bytes); } } - public void propertyValues(List values) { - ContentValues paramMap = mCurrentPropNode.paramMap; - - String charsetString = paramMap.getAsString("CHARSET"); - - boolean setupParamValues = false; - //decode value string to propValue_bytes - if (paramMap.containsKey("ENCODING")) { - String encoding = paramMap.getAsString("ENCODING"); - if (encoding.equalsIgnoreCase("BASE64") || - encoding.equalsIgnoreCase("B")) { - if (values.size() > 1) { - Log.e(LOG_TAG, - ("BASE64 encoding is used while " + - "there are multiple values (" + values.size())); - } + private String handleOneValue(String value, String targetCharset, String encoding) { + if (encoding != null) { + if (encoding.equals("BASE64") || encoding.equals("B")) { + // Assume BASE64 is used only when the number of values is 1. mCurrentPropNode.propValue_bytes = - Base64.decodeBase64(values.get(0). - replaceAll(" ","").replaceAll("\t",""). - replaceAll("\r\n",""). - getBytes()); - } - - if(encoding.equalsIgnoreCase("QUOTED-PRINTABLE")){ - // if CHARSET is defined, we translate each String into the Charset. - List tmpValues = new ArrayList(); - Vector byteVector = new Vector(); - int size = 0; - try{ - for (String value : values) { - String quotedPrintable = value - .replaceAll("= ", " ").replaceAll("=\t", "\t"); - String[] lines; - if (mStrictLineBreakParsing) { - lines = quotedPrintable.split("\r\n"); - } else { - lines = quotedPrintable - .replace("\r\n", "\n").replace("\r", "\n").split("\n"); - } - StringBuilder builder = new StringBuilder(); - for (String line : lines) { - if (line.endsWith("=")) { - line = line.substring(0, line.length() - 1); - } - builder.append(line); - } - byte[] bytes = QuotedPrintableCodec.decodeQuotedPrintable( - builder.toString().getBytes()); - if (charsetString != null) { - try { - tmpValues.add(new String(bytes, charsetString)); - } catch (UnsupportedEncodingException e) { - Log.e(LOG_TAG, "Failed to encode: charset=" + charsetString); - tmpValues.add(new String(bytes)); + Base64.decodeBase64(value.getBytes()); + return value; + } else if (encoding.equals("QUOTED-PRINTABLE")) { + String quotedPrintable = value + .replaceAll("= ", " ").replaceAll("=\t", "\t"); + String[] lines; + if (mStrictLineBreakParsing) { + lines = quotedPrintable.split("\r\n"); + } else { + StringBuilder builder = new StringBuilder(); + int length = quotedPrintable.length(); + ArrayList list = new ArrayList(); + for (int i = 0; i < length; i++) { + char ch = quotedPrintable.charAt(i); + if (ch == '\n') { + list.add(builder.toString()); + builder = new StringBuilder(); + } else if (ch == '\r') { + list.add(builder.toString()); + builder = new StringBuilder(); + if (i < length - 1) { + char nextCh = quotedPrintable.charAt(i + 1); + if (nextCh == '\n') { + i++; + } } } else { - tmpValues.add(new String(bytes)); - } - byteVector.add(bytes); - size += bytes.length; - } // for (String value : values) { - mCurrentPropNode.propValue_vector = tmpValues; - mCurrentPropNode.propValue = listToString(tmpValues); - - mCurrentPropNode.propValue_bytes = new byte[size]; - - { - byte[] tmpBytes = mCurrentPropNode.propValue_bytes; - int index = 0; - for (byte[] bytes : byteVector) { - int length = bytes.length; - for (int i = 0; i < length; i++, index++) { - tmpBytes[index] = bytes[i]; - } + builder.append(ch); } } - setupParamValues = true; - } catch(Exception e) { - Log.e(LOG_TAG, "Failed to decode quoted-printable: " + e); + String finalLine = builder.toString(); + if (finalLine.length() > 0) { + list.add(finalLine); + } + lines = list.toArray(new String[0]); } - } // QUOTED-PRINTABLE - } // ENCODING - - if (!setupParamValues) { - // if CHARSET is defined, we translate each String into the Charset. - if (charsetString != null) { - List tmpValues = new ArrayList(); - for (String value : values) { - String result = encodeString(value, charsetString); - if (result != null) { - tmpValues.add(result); - } else { - Log.e(LOG_TAG, "Failed to encode: charset=" + charsetString); - tmpValues.add(value); + StringBuilder builder = new StringBuilder(); + for (String line : lines) { + if (line.endsWith("=")) { + line = line.substring(0, line.length() - 1); } + builder.append(line); + } + byte[] bytes; + try { + bytes = builder.toString().getBytes(mSourceCharset); + } catch (UnsupportedEncodingException e1) { + Log.e(LOG_TAG, "Failed to encode: charset=" + mSourceCharset); + bytes = builder.toString().getBytes(); + } + + try { + bytes = QuotedPrintableCodec.decodeQuotedPrintable(bytes); + } catch (DecoderException e) { + Log.e(LOG_TAG, "Failed to decode quoted-printable: " + e); + return ""; + } + + try { + return new String(bytes, targetCharset); + } catch (UnsupportedEncodingException e) { + Log.e(LOG_TAG, "Failed to encode: charset=" + targetCharset); + return new String(bytes); } - values = tmpValues; } - - mCurrentPropNode.propValue_vector = values; - mCurrentPropNode.propValue = listToString(values); + // Unknown encoding. Fall back to default. } - mCurrentVNode.propList.add(mCurrentPropNode); + return encodeString(value, targetCharset); } - - private String listToString(Collection list){ - StringBuilder typeListB = new StringBuilder(); - for (String type : list) { - typeListB.append(type).append(";"); + + public void propertyValues(List values) { + if (values == null || values.size() == 0) { + mCurrentPropNode.propValue_bytes = null; + mCurrentPropNode.propValue_vector.clear(); + mCurrentPropNode.propValue_vector.add(""); + mCurrentPropNode.propValue = ""; + return; + } + + ContentValues paramMap = mCurrentPropNode.paramMap; + + String targetCharset = CharsetUtils.nameForDefaultVendor(paramMap.getAsString("CHARSET")); + String encoding = paramMap.getAsString("ENCODING"); + + if (targetCharset == null || targetCharset.length() == 0) { + targetCharset = mTargetCharset; + } + + for (String value : values) { + mCurrentPropNode.propValue_vector.add( + handleOneValue(value, targetCharset, encoding)); } - int len = typeListB.length(); - if (len > 0 && typeListB.charAt(len - 1) == ';') { - return typeListB.substring(0, len - 1); + + mCurrentPropNode.propValue = listToString(mCurrentPropNode.propValue_vector); + } + + private String listToString(List list){ + int size = list.size(); + if (size > 1) { + StringBuilder typeListB = new StringBuilder(); + for (String type : list) { + typeListB.append(type).append(";"); + } + int len = typeListB.length(); + if (len > 0 && typeListB.charAt(len - 1) == ';') { + return typeListB.substring(0, len - 1); + } + return typeListB.toString(); + } else if (size == 1) { + return list.get(0); + } else { + return ""; } - return typeListB.toString(); } public String getResult(){ return null; } } - diff --git a/core/java/android/syncml/pim/VParser.java b/core/java/android/syncml/pim/VParser.java index df93f38e9e38..57c5f7a5cfd3 100644 --- a/core/java/android/syncml/pim/VParser.java +++ b/core/java/android/syncml/pim/VParser.java @@ -26,6 +26,9 @@ import java.io.UnsupportedEncodingException; * */ abstract public class VParser { + // Assume that "iso-8859-1" is able to map "all" 8bit characters to some unicode and + // decode the unicode to the original charset. If not, this setting will cause some bug. + public static String DEFAULT_CHARSET = "iso-8859-1"; /** * The buffer used to store input stream @@ -95,6 +98,20 @@ abstract public class VParser { return (mBuffer.length() == sum); } + /** + * Parse the given stream with the default encoding. + * + * @param is + * The source to parse. + * @param builder + * The v builder which used to construct data. + * @return Return true for success, otherwise false. + * @throws IOException + */ + public boolean parse(InputStream is, VBuilder builder) throws IOException { + return parse(is, DEFAULT_CHARSET, builder); + } + /** * Copy the content of input stream and filter the "folding" */ diff --git a/core/java/android/syncml/pim/vcard/ContactStruct.java b/core/java/android/syncml/pim/vcard/ContactStruct.java index 8d9b7fab24fb..ecd719da069d 100644 --- a/core/java/android/syncml/pim/vcard/ContactStruct.java +++ b/core/java/android/syncml/pim/vcard/ContactStruct.java @@ -16,45 +16,103 @@ package android.syncml.pim.vcard; -import java.util.List; +import android.content.AbstractSyncableContentProvider; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.net.Uri; +import android.provider.Contacts; +import android.provider.Contacts.ContactMethods; +import android.provider.Contacts.Extensions; +import android.provider.Contacts.GroupMembership; +import android.provider.Contacts.Organizations; +import android.provider.Contacts.People; +import android.provider.Contacts.Phones; +import android.provider.Contacts.Photos; +import android.syncml.pim.PropertyNode; +import android.syncml.pim.VNode; +import android.telephony.PhoneNumberUtils; +import android.text.TextUtils; +import android.util.Log; + import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; /** - * The parameter class of VCardCreator. + * The parameter class of VCardComposer. * This class standy by the person-contact in * Android system, we must use this class instance as parameter to transmit to - * VCardCreator so that create vCard string. + * VCardComposer so that create vCard string. */ // TODO: rename the class name, next step public class ContactStruct { - public String company; + private static final String LOG_TAG = "ContactStruct"; + + // Note: phonetic name probably should be "LAST FIRST MIDDLE" for European languages, and + // space should be added between each element while it should not be in Japanese. + // But unfortunately, we currently do not have the data and are not sure whether we should + // support European version of name ordering. + // + // TODO: Implement the logic described above if we really need European version of + // phonetic name handling. Also, adding the appropriate test case of vCard would be + // highly appreciated. + public static final int NAME_ORDER_TYPE_ENGLISH = 0; + public static final int NAME_ORDER_TYPE_JAPANESE = 1; + /** MUST exist */ public String name; + public String phoneticName; /** maybe folding */ - public String notes; + public List notes = new ArrayList(); /** maybe folding */ public String title; /** binary bytes of pic. */ public byte[] photoBytes; - /** mime_type col of images table */ + /** The type of Photo (e.g. JPEG, BMP, etc.) */ public String photoType; /** Only for GET. Use addPhoneList() to PUT. */ public List phoneList; /** Only for GET. Use addContactmethodList() to PUT. */ public List contactmethodList; + /** Only for GET. Use addOrgList() to PUT. */ + public List organizationList; + /** Only for GET. Use addExtension() to PUT */ + public Map> extensionMap; - public static class PhoneData{ + // Use organizationList instead when handling ORG. + @Deprecated + public String company; + + public static class PhoneData { + public int type; /** maybe folding */ public String data; - public String type; public String label; + public boolean isPrimary; } - public static class ContactMethod{ - public String kind; - public String type; + public static class ContactMethod { + // Contacts.KIND_EMAIL, Contacts.KIND_POSTAL + public int kind; + // e.g. Contacts.ContactMethods.TYPE_HOME, Contacts.PhoneColumns.TYPE_HOME + // If type == Contacts.PhoneColumns.TYPE_CUSTOM, label is used. + public int type; public String data; + // Used only when TYPE is TYPE_CUSTOM. public String label; + public boolean isPrimary; + } + + public static class OrganizationData { + public int type; + public String companyName; + public String positionName; + public boolean isPrimary; } /** @@ -63,29 +121,858 @@ public class ContactStruct { * @param type type col of content://contacts/phones * @param label lable col of content://contacts/phones */ - public void addPhone(String data, String type, String label){ - if(phoneList == null) + public void addPhone(int type, String data, String label, boolean isPrimary){ + if (phoneList == null) { phoneList = new ArrayList(); - PhoneData st = new PhoneData(); - st.data = data; - st.type = type; - st.label = label; - phoneList.add(st); + } + PhoneData phoneData = new PhoneData(); + phoneData.type = type; + + StringBuilder builder = new StringBuilder(); + String trimed = data.trim(); + int length = trimed.length(); + for (int i = 0; i < length; i++) { + char ch = trimed.charAt(i); + if (('0' <= ch && ch <= '9') || (i == 0 && ch == '+')) { + builder.append(ch); + } + } + phoneData.data = PhoneNumberUtils.formatNumber(builder.toString()); + phoneData.label = label; + phoneData.isPrimary = isPrimary; + phoneList.add(phoneData); } + /** * Add a contactmethod info to contactmethodList. - * @param data contact data + * @param kind integer value defined in Contacts.java + * (e.g. Contacts.KIND_EMAIL) * @param type type col of content://contacts/contact_methods + * @param data contact data + * @param label extra string used only when kind is Contacts.KIND_CUSTOM. */ - public void addContactmethod(String kind, String data, String type, - String label){ - if(contactmethodList == null) + public void addContactmethod(int kind, int type, String data, + String label, boolean isPrimary){ + if (contactmethodList == null) { contactmethodList = new ArrayList(); - ContactMethod st = new ContactMethod(); - st.kind = kind; - st.data = data; - st.type = type; - st.label = label; - contactmethodList.add(st); + } + ContactMethod contactMethod = new ContactMethod(); + contactMethod.kind = kind; + contactMethod.type = type; + contactMethod.data = data; + contactMethod.label = label; + contactMethod.isPrimary = isPrimary; + contactmethodList.add(contactMethod); + } + + /** + * Add a Organization info to organizationList. + */ + public void addOrganization(int type, String companyName, String positionName, + boolean isPrimary) { + if (organizationList == null) { + organizationList = new ArrayList(); + } + OrganizationData organizationData = new OrganizationData(); + organizationData.type = type; + organizationData.companyName = companyName; + organizationData.positionName = positionName; + organizationData.isPrimary = isPrimary; + organizationList.add(organizationData); + } + + /** + * Set "position" value to the appropriate data. If there's more than one + * OrganizationData objects, the value is set to the last one. If there's no + * OrganizationData object, a new OrganizationData is created, whose company name is + * empty. + * + * TODO: incomplete logic. fix this: + * + * e.g. This assumes ORG comes earlier, but TITLE may come earlier like this, though we do not + * know how to handle it in general cases... + * ---- + * TITLE:Software Engineer + * ORG:Google + * ---- + */ + public void setPosition(String positionValue) { + if (organizationList == null) { + organizationList = new ArrayList(); + } + int size = organizationList.size(); + if (size == 0) { + addOrganization(Contacts.OrganizationColumns.TYPE_OTHER, "", null, false); + size = 1; + } + OrganizationData lastData = organizationList.get(size - 1); + lastData.positionName = positionValue; + } + + public void addExtension(PropertyNode propertyNode) { + if (propertyNode.propValue.length() == 0) { + return; + } + // Now store the string into extensionMap. + List list; + String name = propertyNode.propName; + if (extensionMap == null) { + extensionMap = new HashMap>(); + } + if (!extensionMap.containsKey(name)){ + list = new ArrayList(); + extensionMap.put(name, list); + } else { + list = extensionMap.get(name); + } + + list.add(propertyNode.encode()); + } + + private static String getNameFromNProperty(List elems, int nameOrderType) { + // Family, Given, Middle, Prefix, Suffix. (1 - 5) + int size = elems.size(); + if (size > 1) { + StringBuilder builder = new StringBuilder(); + boolean builderIsEmpty = true; + // Prefix + if (size > 3 && elems.get(3).length() > 0) { + builder.append(elems.get(3)); + builderIsEmpty = false; + } + String first, second; + if (nameOrderType == NAME_ORDER_TYPE_JAPANESE) { + first = elems.get(0); + second = elems.get(1); + } else { + first = elems.get(1); + second = elems.get(0); + } + if (first.length() > 0) { + if (!builderIsEmpty) { + builder.append(' '); + } + builder.append(first); + builderIsEmpty = false; + } + // Middle name + if (size > 2 && elems.get(2).length() > 0) { + if (!builderIsEmpty) { + builder.append(' '); + } + builder.append(elems.get(2)); + builderIsEmpty = false; + } + if (second.length() > 0) { + if (!builderIsEmpty) { + builder.append(' '); + } + builder.append(second); + builderIsEmpty = false; + } + // Suffix + if (size > 4 && elems.get(4).length() > 0) { + if (!builderIsEmpty) { + builder.append(' '); + } + builder.append(elems.get(4)); + builderIsEmpty = false; + } + return builder.toString(); + } else if (size == 1) { + return elems.get(0); + } else { + return ""; + } + } + + public static ContactStruct constructContactFromVNode(VNode node, + int nameOrderType) { + if (!node.VName.equals("VCARD")) { + // Impossible in current implementation. Just for safety. + Log.e(LOG_TAG, "Non VCARD data is inserted."); + return null; + } + + // For name, there are three fields in vCard: FN, N, NAME. + // We prefer FN, which is a required field in vCard 3.0 , but not in vCard 2.1. + // Next, we prefer NAME, which is defined only in vCard 3.0. + // Finally, we use N, which is a little difficult to parse. + String fullName = null; + String nameFromNProperty = null; + + // Some vCard has "X-PHONETIC-FIRST-NAME", "X-PHONETIC-MIDDLE-NAME", and + // "X-PHONETIC-LAST-NAME" + String xPhoneticFirstName = null; + String xPhoneticMiddleName = null; + String xPhoneticLastName = null; + + ContactStruct contact = new ContactStruct(); + + // Each Column of four properties has ISPRIMARY field + // (See android.provider.Contacts) + // If false even after the following loop, we choose the first + // entry as a "primary" entry. + boolean prefIsSetAddress = false; + boolean prefIsSetPhone = false; + boolean prefIsSetEmail = false; + boolean prefIsSetOrganization = false; + + for (PropertyNode propertyNode: node.propList) { + String name = propertyNode.propName; + + if (TextUtils.isEmpty(propertyNode.propValue)) { + continue; + } + + if (name.equals("VERSION")) { + // vCard version. Ignore this. + } else if (name.equals("FN")) { + fullName = propertyNode.propValue; + } else if (name.equals("NAME") && fullName == null) { + // Only in vCard 3.0. Use this if FN does not exist. + // Though, note that vCard 3.0 requires FN. + fullName = propertyNode.propValue; + } else if (name.equals("N")) { + nameFromNProperty = getNameFromNProperty(propertyNode.propValue_vector, + nameOrderType); + } else if (name.equals("SORT-STRING")) { + contact.phoneticName = propertyNode.propValue; + } else if (name.equals("SOUND")) { + if (propertyNode.paramMap_TYPE.contains("X-IRMC-N") && + contact.phoneticName == null) { + // Some Japanese mobile phones use this field for phonetic name, + // since vCard 2.1 does not have "SORT-STRING" type. + // Also, in some cases, the field has some ';' in it. + // We remove them. + StringBuilder builder = new StringBuilder(); + String value = propertyNode.propValue; + int length = value.length(); + for (int i = 0; i < length; i++) { + char ch = value.charAt(i); + if (ch != ';') { + builder.append(ch); + } + } + contact.phoneticName = builder.toString(); + } else { + contact.addExtension(propertyNode); + } + } else if (name.equals("ADR")) { + List values = propertyNode.propValue_vector; + boolean valuesAreAllEmpty = true; + for (String value : values) { + if (value.length() > 0) { + valuesAreAllEmpty = false; + break; + } + } + if (valuesAreAllEmpty) { + continue; + } + + int kind = Contacts.KIND_POSTAL; + int type = -1; + String label = ""; + boolean isPrimary = false; + for (String typeString : propertyNode.paramMap_TYPE) { + if (typeString.equals("PREF") && !prefIsSetAddress) { + // Only first "PREF" is considered. + prefIsSetAddress = true; + isPrimary = true; + } else if (typeString.equalsIgnoreCase("HOME")) { + type = Contacts.ContactMethodsColumns.TYPE_HOME; + label = ""; + } else if (typeString.equalsIgnoreCase("WORK") || + typeString.equalsIgnoreCase("COMPANY")) { + // "COMPANY" seems emitted by Windows Mobile, which is not + // specifically supported by vCard 2.1. We assume this is same + // as "WORK". + type = Contacts.ContactMethodsColumns.TYPE_WORK; + label = ""; + } else if (typeString.equalsIgnoreCase("POSTAL")) { + kind = Contacts.KIND_POSTAL; + } else if (typeString.equalsIgnoreCase("PARCEL") || + typeString.equalsIgnoreCase("DOM") || + typeString.equalsIgnoreCase("INTL")) { + // We do not have a kind or type matching these. + // TODO: fix this. We may need to split entries into two. + // (e.g. entries for KIND_POSTAL and KIND_PERCEL) + } else if (typeString.toUpperCase().startsWith("X-") && + type < 0) { + type = Contacts.ContactMethodsColumns.TYPE_CUSTOM; + label = typeString.substring(2); + } else if (type < 0) { + // vCard 3.0 allows iana-token. Also some vCard 2.1 exporters + // emit non-standard types. We do not handle their values now. + type = Contacts.ContactMethodsColumns.TYPE_CUSTOM; + label = typeString; + } + } + // We use "HOME" as default + if (type < 0) { + type = Contacts.ContactMethodsColumns.TYPE_HOME; + } + + // adr-value = 0*6(text-value ";") text-value + // ; PO Box, Extended Address, Street, Locality, Region, Postal + // ; Code, Country Name + String address; + List list = propertyNode.propValue_vector; + int size = list.size(); + if (size > 1) { + StringBuilder builder = new StringBuilder(); + boolean builderIsEmpty = true; + if (Locale.getDefault().getCountry().equals(Locale.JAPAN.getCountry())) { + // In Japan, the order is reversed. + for (int i = size - 1; i >= 0; i--) { + String addressPart = list.get(i); + if (addressPart.length() > 0) { + if (!builderIsEmpty) { + builder.append(' '); + } + builder.append(addressPart); + builderIsEmpty = false; + } + } + } else { + for (int i = 0; i < size; i++) { + String addressPart = list.get(i); + if (addressPart.length() > 0) { + if (!builderIsEmpty) { + builder.append(' '); + } + builder.append(addressPart); + builderIsEmpty = false; + } + } + } + address = builder.toString().trim(); + } else { + address = propertyNode.propValue; + } + contact.addContactmethod(kind, type, address, label, isPrimary); + } else if (name.equals("ORG")) { + // vCard specification does not specify other types. + int type = Contacts.OrganizationColumns.TYPE_WORK; + boolean isPrimary = false; + + for (String typeString : propertyNode.paramMap_TYPE) { + if (typeString.equals("PREF") && !prefIsSetOrganization) { + // vCard specification officially does not have PREF in ORG. + // This is just for safety. + prefIsSetOrganization = true; + isPrimary = true; + } + // XXX: Should we cope with X- words? + } + + List list = propertyNode.propValue_vector; + int size = list.size(); + StringBuilder builder = new StringBuilder(); + for (Iterator iter = list.iterator(); iter.hasNext();) { + builder.append(iter.next()); + if (iter.hasNext()) { + builder.append(' '); + } + } + + contact.addOrganization(type, builder.toString(), "", isPrimary); + } else if (name.equals("TITLE")) { + contact.setPosition(propertyNode.propValue); + } else if (name.equals("ROLE")) { + contact.setPosition(propertyNode.propValue); + } else if (name.equals("PHOTO")) { + // We prefer PHOTO to LOGO. + String valueType = propertyNode.paramMap.getAsString("VALUE"); + if (valueType != null && valueType.equals("URL")) { + // TODO: do something. + } else { + // Assume PHOTO is stored in BASE64. In that case, + // data is already stored in propValue_bytes in binary form. + // It should be automatically done by VBuilder (VDataBuilder/VCardDatabuilder) + contact.photoBytes = propertyNode.propValue_bytes; + String type = propertyNode.paramMap.getAsString("TYPE"); + if (type != null) { + contact.photoType = type; + } + } + } else if (name.equals("LOGO")) { + // When PHOTO is not available this is not URL, + // we use this instead of PHOTO. + String valueType = propertyNode.paramMap.getAsString("VALUE"); + if (valueType != null && valueType.equals("URL")) { + // TODO: do something. + } else if (contact.photoBytes == null) { + contact.photoBytes = propertyNode.propValue_bytes; + String type = propertyNode.paramMap.getAsString("TYPE"); + if (type != null) { + contact.photoType = type; + } + } + } else if (name.equals("EMAIL")) { + int type = -1; + String label = null; + boolean isPrimary = false; + for (String typeString : propertyNode.paramMap_TYPE) { + if (typeString.equals("PREF") && !prefIsSetEmail) { + // Only first "PREF" is considered. + prefIsSetEmail = true; + isPrimary = true; + } else if (typeString.equalsIgnoreCase("HOME")) { + type = Contacts.ContactMethodsColumns.TYPE_HOME; + } else if (typeString.equalsIgnoreCase("WORK")) { + type = Contacts.ContactMethodsColumns.TYPE_WORK; + } else if (typeString.equalsIgnoreCase("CELL")) { + // We do not have Contacts.ContactMethodsColumns.TYPE_MOBILE yet. + type = Contacts.ContactMethodsColumns.TYPE_CUSTOM; + label = Contacts.ContactMethodsColumns.MOBILE_EMAIL_TYPE_NAME; + } else if (typeString.toUpperCase().startsWith("X-") && + type < 0) { + type = Contacts.ContactMethodsColumns.TYPE_CUSTOM; + label = typeString.substring(2); + } else if (type < 0) { + // vCard 3.0 allows iana-token. + // We may have INTERNET (specified in vCard spec), + // SCHOOL, etc. + type = Contacts.ContactMethodsColumns.TYPE_CUSTOM; + label = typeString; + } + } + // We use "OTHER" as default. + if (type < 0) { + type = Contacts.ContactMethodsColumns.TYPE_OTHER; + } + contact.addContactmethod(Contacts.KIND_EMAIL, + type, propertyNode.propValue,label, isPrimary); + } else if (name.equals("TEL")) { + int type = -1; + String label = null; + boolean isPrimary = false; + boolean isFax = false; + for (String typeString : propertyNode.paramMap_TYPE) { + if (typeString.equals("PREF") && !prefIsSetPhone) { + // Only first "PREF" is considered. + prefIsSetPhone = true; + isPrimary = true; + } else if (typeString.equalsIgnoreCase("HOME")) { + type = Contacts.PhonesColumns.TYPE_HOME; + } else if (typeString.equalsIgnoreCase("WORK")) { + type = Contacts.PhonesColumns.TYPE_WORK; + } else if (typeString.equalsIgnoreCase("CELL")) { + type = Contacts.PhonesColumns.TYPE_MOBILE; + } else if (typeString.equalsIgnoreCase("PAGER")) { + type = Contacts.PhonesColumns.TYPE_PAGER; + } else if (typeString.equalsIgnoreCase("FAX")) { + isFax = true; + } else if (typeString.equalsIgnoreCase("VOICE") || + typeString.equalsIgnoreCase("MSG")) { + // Defined in vCard 3.0. Ignore these because they + // conflict with "HOME", "WORK", etc. + // XXX: do something? + } else if (typeString.toUpperCase().startsWith("X-") && + type < 0) { + type = Contacts.PhonesColumns.TYPE_CUSTOM; + label = typeString.substring(2); + } else if (type < 0){ + // We may have MODEM, CAR, ISDN, etc... + type = Contacts.PhonesColumns.TYPE_CUSTOM; + label = typeString; + } + } + // We use "HOME" as default + if (type < 0) { + type = Contacts.PhonesColumns.TYPE_HOME; + } + if (isFax) { + if (type == Contacts.PhonesColumns.TYPE_HOME) { + type = Contacts.PhonesColumns.TYPE_FAX_HOME; + } else if (type == Contacts.PhonesColumns.TYPE_WORK) { + type = Contacts.PhonesColumns.TYPE_FAX_WORK; + } + } + + contact.addPhone(type, propertyNode.propValue, label, isPrimary); + } else if (name.equals("NOTE")) { + contact.notes.add(propertyNode.propValue); + } else if (name.equals("BDAY")) { + contact.addExtension(propertyNode); + } else if (name.equals("URL")) { + contact.addExtension(propertyNode); + } else if (name.equals("REV")) { + // Revision of this VCard entry. I think we can ignore this. + contact.addExtension(propertyNode); + } else if (name.equals("UID")) { + contact.addExtension(propertyNode); + } else if (name.equals("KEY")) { + // Type is X509 or PGP? I don't know how to handle this... + contact.addExtension(propertyNode); + } else if (name.equals("MAILER")) { + contact.addExtension(propertyNode); + } else if (name.equals("TZ")) { + contact.addExtension(propertyNode); + } else if (name.equals("GEO")) { + contact.addExtension(propertyNode); + } else if (name.equals("NICKNAME")) { + // vCard 3.0 only. + contact.addExtension(propertyNode); + } else if (name.equals("CLASS")) { + // vCard 3.0 only. + // e.g. CLASS:CONFIDENTIAL + contact.addExtension(propertyNode); + } else if (name.equals("PROFILE")) { + // VCard 3.0 only. Must be "VCARD". I think we can ignore this. + contact.addExtension(propertyNode); + } else if (name.equals("CATEGORIES")) { + // VCard 3.0 only. + // e.g. CATEGORIES:INTERNET,IETF,INDUSTRY,INFORMATION TECHNOLOGY + contact.addExtension(propertyNode); + } else if (name.equals("SOURCE")) { + // VCard 3.0 only. + contact.addExtension(propertyNode); + } else if (name.equals("PRODID")) { + // VCard 3.0 only. + // To specify the identifier for the product that created + // the vCard object. + contact.addExtension(propertyNode); + } else if (name.equals("X-PHONETIC-FIRST-NAME")) { + xPhoneticFirstName = propertyNode.propValue; + } else if (name.equals("X-PHONETIC-MIDDLE-NAME")) { + xPhoneticMiddleName = propertyNode.propValue; + } else if (name.equals("X-PHONETIC-LAST-NAME")) { + xPhoneticLastName = propertyNode.propValue; + } else { + // Unknown X- words and IANA token. + contact.addExtension(propertyNode); + } + } + + if (fullName != null) { + contact.name = fullName; + } else if(nameFromNProperty != null) { + contact.name = nameFromNProperty; + } else { + contact.name = ""; + } + + if (contact.phoneticName == null && + (xPhoneticFirstName != null || xPhoneticMiddleName != null || + xPhoneticLastName != null)) { + // Note: In Europe, this order should be "LAST FIRST MIDDLE". See the comment around + // NAME_ORDER_TYPE_* for more detail. + String first; + String second; + if (nameOrderType == NAME_ORDER_TYPE_JAPANESE) { + first = xPhoneticLastName; + second = xPhoneticFirstName; + } else { + first = xPhoneticFirstName; + second = xPhoneticLastName; + } + StringBuilder builder = new StringBuilder(); + if (first != null) { + builder.append(first); + } + if (xPhoneticMiddleName != null) { + builder.append(xPhoneticMiddleName); + } + if (second != null) { + builder.append(second); + } + contact.phoneticName = builder.toString(); + } + + // Remove unnecessary white spaces. + // It is found that some mobile phone emits phonetic name with just one white space + // when a user does not specify one. + // This logic is effective toward such kind of weird data. + if (contact.phoneticName != null) { + contact.phoneticName = contact.phoneticName.trim(); + } + + // If there is no "PREF", we choose the first entries as primary. + if (!prefIsSetPhone && + contact.phoneList != null && + contact.phoneList.size() > 0) { + contact.phoneList.get(0).isPrimary = true; + } + + if (!prefIsSetAddress && contact.contactmethodList != null) { + for (ContactMethod contactMethod : contact.contactmethodList) { + if (contactMethod.kind == Contacts.KIND_POSTAL) { + contactMethod.isPrimary = true; + break; + } + } + } + if (!prefIsSetEmail && contact.contactmethodList != null) { + for (ContactMethod contactMethod : contact.contactmethodList) { + if (contactMethod.kind == Contacts.KIND_EMAIL) { + contactMethod.isPrimary = true; + break; + } + } + } + if (!prefIsSetOrganization && + contact.organizationList != null && + contact.organizationList.size() > 0) { + contact.organizationList.get(0).isPrimary = true; + } + + return contact; + } + + public String displayString() { + if (name.length() > 0) { + return name; + } + if (contactmethodList != null && contactmethodList.size() > 0) { + for (ContactMethod contactMethod : contactmethodList) { + if (contactMethod.kind == Contacts.KIND_EMAIL && contactMethod.isPrimary) { + return contactMethod.data; + } + } + } + if (phoneList != null && phoneList.size() > 0) { + for (PhoneData phoneData : phoneList) { + if (phoneData.isPrimary) { + return phoneData.data; + } + } + } + return ""; + } + + private void pushIntoContentProviderOrResolver(Object contentSomething, + long myContactsGroupId) { + ContentResolver resolver = null; + AbstractSyncableContentProvider provider = null; + if (contentSomething instanceof ContentResolver) { + resolver = (ContentResolver)contentSomething; + } else if (contentSomething instanceof AbstractSyncableContentProvider) { + provider = (AbstractSyncableContentProvider)contentSomething; + } else { + Log.e(LOG_TAG, "Unsupported object came."); + return; + } + + ContentValues contentValues = new ContentValues(); + contentValues.put(People.NAME, name); + contentValues.put(People.PHONETIC_NAME, phoneticName); + + if (notes.size() > 1) { + StringBuilder builder = new StringBuilder(); + for (String note : notes) { + builder.append(note); + builder.append("\n"); + } + contentValues.put(People.NOTES, builder.toString()); + } else if (notes.size() == 1){ + contentValues.put(People.NOTES, notes.get(0)); + } + + Uri personUri; + long personId = 0; + if (resolver != null) { + personUri = Contacts.People.createPersonInMyContactsGroup( + resolver, contentValues); + if (personUri != null) { + personId = ContentUris.parseId(personUri); + } + } else { + personUri = provider.nonTransactionalInsert(People.CONTENT_URI, contentValues); + if (personUri != null) { + personId = ContentUris.parseId(personUri); + ContentValues values = new ContentValues(); + values.put(GroupMembership.PERSON_ID, personId); + values.put(GroupMembership.GROUP_ID, myContactsGroupId); + Uri resultUri = provider.nonTransactionalInsert( + GroupMembership.CONTENT_URI, values); + if (resultUri == null) { + Log.e(LOG_TAG, "Faild to insert the person to MyContact."); + provider.nonTransactionalDelete(personUri, null, null); + personUri = null; + } + } + } + + if (personUri == null) { + Log.e(LOG_TAG, "Failed to create the contact."); + return; + } + + if (photoBytes != null) { + if (resolver != null) { + People.setPhotoData(resolver, personUri, photoBytes); + } else { + Uri photoUri = Uri.withAppendedPath(personUri, Contacts.Photos.CONTENT_DIRECTORY); + ContentValues values = new ContentValues(); + values.put(Photos.DATA, photoBytes); + provider.update(photoUri, values, null, null); + } + } + + long primaryPhoneId = -1; + if (phoneList != null && phoneList.size() > 0) { + for (PhoneData phoneData : phoneList) { + ContentValues values = new ContentValues(); + values.put(Contacts.PhonesColumns.TYPE, phoneData.type); + if (phoneData.type == Contacts.PhonesColumns.TYPE_CUSTOM) { + values.put(Contacts.PhonesColumns.LABEL, phoneData.label); + } + // Already formatted. + values.put(Contacts.PhonesColumns.NUMBER, phoneData.data); + + // Not sure about Contacts.PhonesColumns.NUMBER_KEY ... + values.put(Contacts.PhonesColumns.ISPRIMARY, 1); + values.put(Contacts.Phones.PERSON_ID, personId); + Uri phoneUri; + if (resolver != null) { + phoneUri = resolver.insert(Phones.CONTENT_URI, values); + } else { + phoneUri = provider.nonTransactionalInsert(Phones.CONTENT_URI, values); + } + if (phoneData.isPrimary) { + primaryPhoneId = Long.parseLong(phoneUri.getLastPathSegment()); + } + } + } + + long primaryOrganizationId = -1; + if (organizationList != null && organizationList.size() > 0) { + for (OrganizationData organizationData : organizationList) { + ContentValues values = new ContentValues(); + // Currently, we do not use TYPE_CUSTOM. + values.put(Contacts.OrganizationColumns.TYPE, + organizationData.type); + values.put(Contacts.OrganizationColumns.COMPANY, + organizationData.companyName); + values.put(Contacts.OrganizationColumns.TITLE, + organizationData.positionName); + values.put(Contacts.OrganizationColumns.ISPRIMARY, 1); + values.put(Contacts.OrganizationColumns.PERSON_ID, personId); + + Uri organizationUri; + if (resolver != null) { + organizationUri = resolver.insert(Organizations.CONTENT_URI, values); + } else { + organizationUri = provider.nonTransactionalInsert( + Organizations.CONTENT_URI, values); + } + if (organizationData.isPrimary) { + primaryOrganizationId = Long.parseLong(organizationUri.getLastPathSegment()); + } + } + } + + long primaryEmailId = -1; + if (contactmethodList != null && contactmethodList.size() > 0) { + for (ContactMethod contactMethod : contactmethodList) { + ContentValues values = new ContentValues(); + values.put(Contacts.ContactMethodsColumns.KIND, contactMethod.kind); + values.put(Contacts.ContactMethodsColumns.TYPE, contactMethod.type); + if (contactMethod.type == Contacts.ContactMethodsColumns.TYPE_CUSTOM) { + values.put(Contacts.ContactMethodsColumns.LABEL, contactMethod.label); + } + values.put(Contacts.ContactMethodsColumns.DATA, contactMethod.data); + values.put(Contacts.ContactMethodsColumns.ISPRIMARY, 1); + values.put(Contacts.ContactMethods.PERSON_ID, personId); + + if (contactMethod.kind == Contacts.KIND_EMAIL) { + Uri emailUri; + if (resolver != null) { + emailUri = resolver.insert(ContactMethods.CONTENT_URI, values); + } else { + emailUri = provider.nonTransactionalInsert( + ContactMethods.CONTENT_URI, values); + } + if (contactMethod.isPrimary) { + primaryEmailId = Long.parseLong(emailUri.getLastPathSegment()); + } + } else { // probably KIND_POSTAL + if (resolver != null) { + resolver.insert(ContactMethods.CONTENT_URI, values); + } else { + provider.nonTransactionalInsert( + ContactMethods.CONTENT_URI, values); + } + } + } + } + + if (extensionMap != null && extensionMap.size() > 0) { + ArrayList contentValuesArray; + if (resolver != null) { + contentValuesArray = new ArrayList(); + } else { + contentValuesArray = null; + } + for (Entry> entry : extensionMap.entrySet()) { + String key = entry.getKey(); + List list = entry.getValue(); + for (String value : list) { + ContentValues values = new ContentValues(); + values.put(Extensions.NAME, key); + values.put(Extensions.VALUE, value); + values.put(Extensions.PERSON_ID, personId); + if (resolver != null) { + contentValuesArray.add(values); + } else { + provider.nonTransactionalInsert(Extensions.CONTENT_URI, values); + } + } + } + if (resolver != null) { + resolver.bulkInsert(Extensions.CONTENT_URI, + contentValuesArray.toArray(new ContentValues[0])); + } + } + + if (primaryPhoneId >= 0 || primaryOrganizationId >= 0 || primaryEmailId >= 0) { + ContentValues values = new ContentValues(); + if (primaryPhoneId >= 0) { + values.put(People.PRIMARY_PHONE_ID, primaryPhoneId); + } + if (primaryOrganizationId >= 0) { + values.put(People.PRIMARY_ORGANIZATION_ID, primaryOrganizationId); + } + if (primaryEmailId >= 0) { + values.put(People.PRIMARY_EMAIL_ID, primaryEmailId); + } + if (resolver != null) { + resolver.update(personUri, values, null, null); + } else { + provider.nonTransactionalUpdate(personUri, values, null, null); + } + } + } + + /** + * Push this object into database in the resolver. + */ + public void pushIntoContentResolver(ContentResolver resolver) { + pushIntoContentProviderOrResolver(resolver, 0); + } + + /** + * Push this object into AbstractSyncableContentProvider object. + */ + public void pushIntoAbstractSyncableContentProvider( + AbstractSyncableContentProvider provider, long myContactsGroupId) { + boolean successful = false; + provider.beginTransaction(); + try { + pushIntoContentProviderOrResolver(provider, myContactsGroupId); + successful = true; + } finally { + provider.endTransaction(successful); + } + } + + public boolean isIgnorable() { + return TextUtils.isEmpty(name) && + TextUtils.isEmpty(phoneticName) && + (phoneList == null || phoneList.size() == 0) && + (contactmethodList == null || contactmethodList.size() == 0); } } diff --git a/core/java/android/syncml/pim/vcard/VCardComposer.java b/core/java/android/syncml/pim/vcard/VCardComposer.java index 05e8f407d0e6..192736ae59d9 100644 --- a/core/java/android/syncml/pim/vcard/VCardComposer.java +++ b/core/java/android/syncml/pim/vcard/VCardComposer.java @@ -124,9 +124,9 @@ public class VCardComposer { mResult.append("ORG:").append(struct.company).append(mNewline); } - if (!isNull(struct.notes)) { + if (struct.notes.size() > 0 && !isNull(struct.notes.get(0))) { mResult.append("NOTE:").append( - foldingString(struct.notes, vcardversion)).append(mNewline); + foldingString(struct.notes.get(0), vcardversion)).append(mNewline); } if (!isNull(struct.title)) { @@ -190,7 +190,7 @@ public class VCardComposer { */ private void appendPhotoStr(byte[] bytes, String type, int version) throws VCardException { - String value, apptype, encodingStr; + String value, encodingStr; try { value = foldingString(new String(Base64.encodeBase64(bytes, true)), version); @@ -198,20 +198,23 @@ public class VCardComposer { throw new VCardException(e.getMessage()); } - if (isNull(type)) { - type = "image/jpeg"; - } - if (type.indexOf("jpeg") > 0) { - apptype = "JPEG"; - } else if (type.indexOf("gif") > 0) { - apptype = "GIF"; - } else if (type.indexOf("bmp") > 0) { - apptype = "BMP"; + if (isNull(type) || type.toUpperCase().indexOf("JPEG") >= 0) { + type = "JPEG"; + } else if (type.toUpperCase().indexOf("GIF") >= 0) { + type = "GIF"; + } else if (type.toUpperCase().indexOf("BMP") >= 0) { + type = "BMP"; } else { - apptype = type.substring(type.indexOf("/")).toUpperCase(); + // Handle the string like "image/tiff". + int indexOfSlash = type.indexOf("/"); + if (indexOfSlash >= 0) { + type = type.substring(indexOfSlash + 1).toUpperCase(); + } else { + type = type.toUpperCase(); + } } - mResult.append("LOGO;TYPE=").append(apptype); + mResult.append("LOGO;TYPE=").append(type); if (version == VERSION_VCARD21_INT) { encodingStr = ";ENCODING=BASE64:"; value = value + mNewline; @@ -281,7 +284,7 @@ public class VCardComposer { private String getPhoneTypeStr(PhoneData phone) { - int phoneType = Integer.parseInt(phone.type); + int phoneType = phone.type; String typeStr, label; if (phoneTypeMap.containsKey(phoneType)) { @@ -308,7 +311,7 @@ public class VCardComposer { String joinMark = version == VERSION_VCARD21_INT ? ";" : ","; for (ContactStruct.ContactMethod contactMethod : contactMList) { // same with v2.1 and v3.0 - switch (Integer.parseInt(contactMethod.kind)) { + switch (contactMethod.kind) { case Contacts.KIND_EMAIL: String mailType = "INTERNET"; if (!isNull(contactMethod.data)) { diff --git a/core/java/android/syncml/pim/vcard/VCardDataBuilder.java b/core/java/android/syncml/pim/vcard/VCardDataBuilder.java new file mode 100644 index 000000000000..a0513f1654f8 --- /dev/null +++ b/core/java/android/syncml/pim/vcard/VCardDataBuilder.java @@ -0,0 +1,442 @@ +/* + * Copyright (C) 2007 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.syncml.pim.vcard; + +import android.app.ProgressDialog; +import android.content.AbstractSyncableContentProvider; +import android.content.ContentProvider; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.IContentProvider; +import android.os.Handler; +import android.provider.Contacts; +import android.syncml.pim.PropertyNode; +import android.syncml.pim.VBuilder; +import android.syncml.pim.VNode; +import android.syncml.pim.VParser; +import android.util.CharsetUtils; +import android.util.Log; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.codec.net.QuotedPrintableCodec; + +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; + +/** + * VBuilder for VCard. VCard may contain big photo images encoded by BASE64, + * If we store all VNode entries in memory like VDataBuilder.java, + * OutOfMemoryError may be thrown. Thus, this class push each VCard entry into + * ContentResolver immediately. + */ +public class VCardDataBuilder implements VBuilder { + static private String LOG_TAG = "VCardDataBuilder"; + + /** + * If there's no other information available, this class uses this charset for encoding + * byte arrays. + */ + static public String DEFAULT_CHARSET = "UTF-8"; + + private class ProgressShower implements Runnable { + private ContactStruct mContact; + + public ProgressShower(ContactStruct contact) { + mContact = contact; + } + + public void run () { + mProgressDialog.setMessage(mProgressMessage + "\n" + + mContact.displayString()); + } + } + + /** type=VNode */ + private VNode mCurrentVNode; + private PropertyNode mCurrentPropNode; + private String mCurrentParamType; + + /** + * The charset using which VParser parses the text. + */ + private String mSourceCharset; + + /** + * The charset with which byte array is encoded to String. + */ + private String mTargetCharset; + private boolean mStrictLineBreakParsing; + private ContentResolver mContentResolver; + + // For letting VCardDataBuilder show the display name of VCard while handling it. + private Handler mHandler; + private ProgressDialog mProgressDialog; + private String mProgressMessage; + private Runnable mOnProgressRunnable; + private boolean mLastNameComesBeforeFirstName; + + // Just for testing. + private long mTimeCreateContactStruct; + private long mTimePushIntoContentResolver; + + // Ideally, this should be ContactsProvider but it seems Class loader cannot find it, + // even when it is subclass of ContactsProvider... + private AbstractSyncableContentProvider mProvider; + private long mMyContactsGroupId; + + public VCardDataBuilder(ContentResolver resolver) { + mTargetCharset = DEFAULT_CHARSET; + mContentResolver = resolver; + } + + /** + * Constructor which requires minimum requiredvariables. + * + * @param resolver insert each data into this ContentResolver + * @param progressDialog + * @param progressMessage + * @param handler if this importer works on the different thread than main one, + * set appropriate handler object. If not, it is ok to set this null. + */ + public VCardDataBuilder(ContentResolver resolver, + ProgressDialog progressDialog, + String progressMessage, + Handler handler) { + this(resolver, progressDialog, progressMessage, handler, + null, null, false, false); + } + + public VCardDataBuilder(ContentResolver resolver, + ProgressDialog progressDialog, + String progressMessage, + Handler handler, + String charset, + boolean strictLineBreakParsing, + boolean lastNameComesBeforeFirstName) { + this(resolver, progressDialog, progressMessage, handler, + null, charset, strictLineBreakParsing, + lastNameComesBeforeFirstName); + } + + /** + * @hide + */ + public VCardDataBuilder(ContentResolver resolver, + ProgressDialog progressDialog, + String progressMessage, + Handler handler, + String sourceCharset, + String targetCharset, + boolean strictLineBreakParsing, + boolean lastNameComesBeforeFirstName) { + if (sourceCharset != null) { + mSourceCharset = sourceCharset; + } else { + mSourceCharset = VParser.DEFAULT_CHARSET; + } + if (targetCharset != null) { + mTargetCharset = targetCharset; + } else { + mTargetCharset = DEFAULT_CHARSET; + } + mContentResolver = resolver; + mStrictLineBreakParsing = strictLineBreakParsing; + mHandler = handler; + mProgressDialog = progressDialog; + mProgressMessage = progressMessage; + mLastNameComesBeforeFirstName = lastNameComesBeforeFirstName; + + tryGetOriginalProvider(); + } + + private void tryGetOriginalProvider() { + final ContentResolver resolver = mContentResolver; + + if ((mMyContactsGroupId = Contacts.People.tryGetMyContactsGroupId(resolver)) == 0) { + Log.e(LOG_TAG, "Could not get group id of MyContact"); + return; + } + + IContentProvider iProviderForName = resolver.acquireProvider(Contacts.CONTENT_URI); + ContentProvider contentProvider = + ContentProvider.coerceToLocalContentProvider(iProviderForName); + if (contentProvider == null) { + Log.e(LOG_TAG, "Fail to get ContentProvider object."); + return; + } + + if (!(contentProvider instanceof AbstractSyncableContentProvider)) { + Log.e(LOG_TAG, + "Acquired ContentProvider object is not AbstractSyncableContentProvider."); + return; + } + + mProvider = (AbstractSyncableContentProvider)contentProvider; + } + + public void setOnProgressRunnable(Runnable runnable) { + mOnProgressRunnable = runnable; + } + + public void start() { + } + + public void end() { + } + + /** + * Assume that VCard is not nested. In other words, this code does not accept + */ + public void startRecord(String type) { + if (mCurrentVNode != null) { + // This means startRecord() is called inside startRecord() - endRecord() block. + // TODO: should throw some Exception + Log.e(LOG_TAG, "Nested VCard code is not supported now."); + } + mCurrentVNode = new VNode(); + mCurrentVNode.parseStatus = 1; + mCurrentVNode.VName = type; + } + + public void endRecord() { + mCurrentVNode.parseStatus = 0; + long start = System.currentTimeMillis(); + ContactStruct contact = ContactStruct.constructContactFromVNode(mCurrentVNode, + mLastNameComesBeforeFirstName ? ContactStruct.NAME_ORDER_TYPE_JAPANESE : + ContactStruct.NAME_ORDER_TYPE_ENGLISH); + mTimeCreateContactStruct += System.currentTimeMillis() - start; + if (!contact.isIgnorable()) { + if (mProgressDialog != null && mProgressMessage != null) { + if (mHandler != null) { + mHandler.post(new ProgressShower(contact)); + } else { + mProgressDialog.setMessage(mProgressMessage + "\n" + + contact.displayString()); + } + } + start = System.currentTimeMillis(); + if (mProvider != null) { + contact.pushIntoAbstractSyncableContentProvider( + mProvider, mMyContactsGroupId); + } else { + contact.pushIntoContentResolver(mContentResolver); + } + mTimePushIntoContentResolver += System.currentTimeMillis() - start; + } + if (mOnProgressRunnable != null) { + mOnProgressRunnable.run(); + } + mCurrentVNode = null; + } + + public void startProperty() { + mCurrentPropNode = new PropertyNode(); + } + + public void endProperty() { + mCurrentVNode.propList.add(mCurrentPropNode); + mCurrentPropNode = null; + } + + public void propertyName(String name) { + mCurrentPropNode.propName = name; + } + + public void propertyGroup(String group) { + mCurrentPropNode.propGroupSet.add(group); + } + + public void propertyParamType(String type) { + mCurrentParamType = type; + } + + public void propertyParamValue(String value) { + if (mCurrentParamType == null || + mCurrentParamType.equalsIgnoreCase("TYPE")) { + mCurrentPropNode.paramMap_TYPE.add(value); + } else { + mCurrentPropNode.paramMap.put(mCurrentParamType, value); + } + + mCurrentParamType = null; + } + + private String encodeString(String originalString, String targetCharset) { + if (mSourceCharset.equalsIgnoreCase(targetCharset)) { + return originalString; + } + Charset charset = Charset.forName(mSourceCharset); + ByteBuffer byteBuffer = charset.encode(originalString); + // byteBuffer.array() "may" return byte array which is larger than + // byteBuffer.remaining(). Here, we keep on the safe side. + byte[] bytes = new byte[byteBuffer.remaining()]; + byteBuffer.get(bytes); + try { + return new String(bytes, targetCharset); + } catch (UnsupportedEncodingException e) { + Log.e(LOG_TAG, "Failed to encode: charset=" + targetCharset); + return new String(bytes); + } + } + + private String handleOneValue(String value, String targetCharset, String encoding) { + if (encoding != null) { + if (encoding.equals("BASE64") || encoding.equals("B")) { + mCurrentPropNode.propValue_bytes = + Base64.decodeBase64(value.getBytes()); + return value; + } else if (encoding.equals("QUOTED-PRINTABLE")) { + // "= " -> " ", "=\t" -> "\t". + // Previous code had done this replacement. Keep on the safe side. + StringBuilder builder = new StringBuilder(); + int length = value.length(); + for (int i = 0; i < length; i++) { + char ch = value.charAt(i); + if (ch == '=' && i < length - 1) { + char nextCh = value.charAt(i + 1); + if (nextCh == ' ' || nextCh == '\t') { + + builder.append(nextCh); + i++; + continue; + } + } + builder.append(ch); + } + String quotedPrintable = builder.toString(); + + String[] lines; + if (mStrictLineBreakParsing) { + lines = quotedPrintable.split("\r\n"); + } else { + builder = new StringBuilder(); + length = quotedPrintable.length(); + ArrayList list = new ArrayList(); + for (int i = 0; i < length; i++) { + char ch = quotedPrintable.charAt(i); + if (ch == '\n') { + list.add(builder.toString()); + builder = new StringBuilder(); + } else if (ch == '\r') { + list.add(builder.toString()); + builder = new StringBuilder(); + if (i < length - 1) { + char nextCh = quotedPrintable.charAt(i + 1); + if (nextCh == '\n') { + i++; + } + } + } else { + builder.append(ch); + } + } + String finalLine = builder.toString(); + if (finalLine.length() > 0) { + list.add(finalLine); + } + lines = list.toArray(new String[0]); + } + + builder = new StringBuilder(); + for (String line : lines) { + if (line.endsWith("=")) { + line = line.substring(0, line.length() - 1); + } + builder.append(line); + } + byte[] bytes; + try { + bytes = builder.toString().getBytes(mSourceCharset); + } catch (UnsupportedEncodingException e1) { + Log.e(LOG_TAG, "Failed to encode: charset=" + mSourceCharset); + bytes = builder.toString().getBytes(); + } + + try { + bytes = QuotedPrintableCodec.decodeQuotedPrintable(bytes); + } catch (DecoderException e) { + Log.e(LOG_TAG, "Failed to decode quoted-printable: " + e); + return ""; + } + + try { + return new String(bytes, targetCharset); + } catch (UnsupportedEncodingException e) { + Log.e(LOG_TAG, "Failed to encode: charset=" + targetCharset); + return new String(bytes); + } + } + // Unknown encoding. Fall back to default. + } + return encodeString(value, targetCharset); + } + + public void propertyValues(List values) { + if (values == null || values.size() == 0) { + mCurrentPropNode.propValue_bytes = null; + mCurrentPropNode.propValue_vector.clear(); + mCurrentPropNode.propValue_vector.add(""); + mCurrentPropNode.propValue = ""; + return; + } + + ContentValues paramMap = mCurrentPropNode.paramMap; + + String targetCharset = CharsetUtils.nameForDefaultVendor(paramMap.getAsString("CHARSET")); + String encoding = paramMap.getAsString("ENCODING"); + + if (targetCharset == null || targetCharset.length() == 0) { + targetCharset = mTargetCharset; + } + + for (String value : values) { + mCurrentPropNode.propValue_vector.add( + handleOneValue(value, targetCharset, encoding)); + } + + mCurrentPropNode.propValue = listToString(mCurrentPropNode.propValue_vector); + } + + public void showDebugInfo() { + Log.d(LOG_TAG, "time for creating ContactStruct: " + mTimeCreateContactStruct + " ms"); + Log.d(LOG_TAG, "time for insert ContactStruct to database: " + + mTimePushIntoContentResolver + " ms"); + } + + private String listToString(List list){ + int size = list.size(); + if (size > 1) { + StringBuilder builder = new StringBuilder(); + int i = 0; + for (String type : list) { + builder.append(type); + if (i < size - 1) { + builder.append(";"); + } + } + return builder.toString(); + } else if (size == 1) { + return list.get(0); + } else { + return ""; + } + } +} diff --git a/core/java/android/syncml/pim/vcard/VCardEntryCounter.java b/core/java/android/syncml/pim/vcard/VCardEntryCounter.java new file mode 100644 index 000000000000..03cd1d9439fd --- /dev/null +++ b/core/java/android/syncml/pim/vcard/VCardEntryCounter.java @@ -0,0 +1,63 @@ +/* + * 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.syncml.pim.vcard; + +import java.util.List; + +import android.syncml.pim.VBuilder; + +public class VCardEntryCounter implements VBuilder { + private int mCount; + + public int getCount() { + return mCount; + } + + public void start() { + } + + public void end() { + } + + public void startRecord(String type) { + } + + public void endRecord() { + mCount++; + } + + public void startProperty() { + } + + public void endProperty() { + } + + public void propertyGroup(String group) { + } + + public void propertyName(String name) { + } + + public void propertyParamType(String type) { + } + + public void propertyParamValue(String value) { + } + + public void propertyValues(List values) { + } +} \ No newline at end of file diff --git a/core/java/android/syncml/pim/vcard/VCardNestedException.java b/core/java/android/syncml/pim/vcard/VCardNestedException.java new file mode 100644 index 000000000000..def6f3b785ff --- /dev/null +++ b/core/java/android/syncml/pim/vcard/VCardNestedException.java @@ -0,0 +1,27 @@ +/* + * 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.syncml.pim.vcard; + +/** + * VCardException thrown when VCard is nested without VCardParser's being notified. + */ +public class VCardNestedException extends VCardException { + public VCardNestedException() {} + public VCardNestedException(String message) { + super(message); + } +} diff --git a/core/java/android/syncml/pim/vcard/VCardParser_V21.java b/core/java/android/syncml/pim/vcard/VCardParser_V21.java index f853c5e383fa..d86566811d85 100644 --- a/core/java/android/syncml/pim/vcard/VCardParser_V21.java +++ b/core/java/android/syncml/pim/vcard/VCardParser_V21.java @@ -17,21 +17,26 @@ package android.syncml.pim.vcard; import android.syncml.pim.VBuilder; +import android.syncml.pim.VParser; +import android.util.Log; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.Reader; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; -import java.util.regex.Pattern; /** - * This class is used to parse vcard. Please refer to vCard Specification 2.1 + * This class is used to parse vcard. Please refer to vCard Specification 2.1. */ public class VCardParser_V21 { - + private static final String LOG_TAG = "VCardParser_V21"; + + public static final String DEFAULT_CHARSET = VParser.DEFAULT_CHARSET; + /** Store the known-type */ private static final HashSet sKnownTypeSet = new HashSet( Arrays.asList("DOM", "INTL", "POSTAL", "PARCEL", "HOME", "WORK", @@ -42,19 +47,17 @@ public class VCardParser_V21 { "CGM", "WMF", "BMP", "MET", "PMB", "DIB", "PICT", "TIFF", "PDF", "PS", "JPEG", "QTIME", "MPEG", "MPEG2", "AVI", "WAVE", "AIFF", "PCM", "X509", "PGP")); - + /** Store the known-value */ private static final HashSet sKnownValueSet = new HashSet( Arrays.asList("INLINE", "URL", "CONTENT-ID", "CID")); - /** Store the property name available in vCard 2.1 */ - // NICKNAME is not supported in vCard 2.1, but some vCard may contain. + /** Store the property names available in vCard 2.1 */ private static final HashSet sAvailablePropertyNameV21 = new HashSet(Arrays.asList( - "LOGO", "PHOTO", "LABEL", "FN", "TITLE", "SOUND", + "BEGIN", "LOGO", "PHOTO", "LABEL", "FN", "TITLE", "SOUND", "VERSION", "TEL", "EMAIL", "TZ", "GEO", "NOTE", "URL", - "BDAY", "ROLE", "REV", "UID", "KEY", "MAILER", - "NICKNAME")); + "BDAY", "ROLE", "REV", "UID", "KEY", "MAILER")); // Though vCard 2.1 specification does not allow "B" encoding, some data may have it. // We allow it for safety... @@ -76,6 +79,30 @@ public class VCardParser_V21 { // Should not directly read a line from this. Use getLine() instead. protected BufferedReader mReader; + private boolean mCanceled; + + // In some cases, vCard is nested. Currently, we only consider the most interior vCard data. + // See v21_foma_1.vcf in test directory for more information. + private int mNestCount; + + // In order to reduce warning message as much as possible, we hold the value which made Logger + // emit a warning message. + protected HashSet mWarningValueMap = new HashSet(); + + // Just for debugging + private long mTimeTotal; + private long mTimeStartRecord; + private long mTimeEndRecord; + private long mTimeStartProperty; + private long mTimeEndProperty; + private long mTimeParseItems; + private long mTimeParseItem1; + private long mTimeParseItem2; + private long mTimeParseItem3; + private long mTimeHandlePropertyValue1; + private long mTimeHandlePropertyValue2; + private long mTimeHandlePropertyValue3; + /** * Create a new VCard parser. */ @@ -83,12 +110,35 @@ public class VCardParser_V21 { super(); } + public VCardParser_V21(VCardSourceDetector detector) { + super(); + if (detector != null && detector.getType() == VCardSourceDetector.TYPE_FOMA) { + mNestCount = 1; + } + } + /** * Parse the file at the given position * vcard_file = [wsls] vcard [wsls] */ protected void parseVCardFile() throws IOException, VCardException { - while (parseOneVCard()) { + boolean firstReading = true; + while (true) { + if (mCanceled) { + break; + } + if (!parseOneVCard(firstReading)) { + break; + } + firstReading = false; + } + + if (mNestCount > 0) { + boolean useCache = true; + for (int i = 0; i < mNestCount; i++) { + readEndVCard(useCache, true); + useCache = false; + } } } @@ -100,7 +150,13 @@ public class VCardParser_V21 { * @return true when the propertyName is a valid property name. */ protected boolean isValidPropertyName(String propertyName) { - return sAvailablePropertyNameV21.contains(propertyName.toUpperCase()); + if (!(sAvailablePropertyNameV21.contains(propertyName.toUpperCase()) || + propertyName.startsWith("X-")) && + !mWarningValueMap.contains(propertyName)) { + mWarningValueMap.add(propertyName); + Log.w(LOG_TAG, "Property name unsupported by vCard 2.1: " + propertyName); + } + return true; } /** @@ -129,7 +185,7 @@ public class VCardParser_V21 { line = getLine(); if (line == null) { throw new VCardException("Reached end of buffer."); - } else if (line.trim().length() > 0) { + } else if (line.trim().length() > 0) { return line; } } @@ -140,12 +196,37 @@ public class VCardParser_V21 { * items *CRLF * "END" [ws] ":" [ws] "VCARD" */ - private boolean parseOneVCard() throws IOException, VCardException { - if (!readBeginVCard()) { + private boolean parseOneVCard(boolean firstReading) throws IOException, VCardException { + boolean allowGarbage = false; + if (firstReading) { + if (mNestCount > 0) { + for (int i = 0; i < mNestCount; i++) { + if (!readBeginVCard(allowGarbage)) { + return false; + } + allowGarbage = true; + } + } + } + + if (!readBeginVCard(allowGarbage)) { return false; } + long start; + if (mBuilder != null) { + start = System.currentTimeMillis(); + mBuilder.startRecord("VCARD"); + mTimeStartRecord += System.currentTimeMillis() - start; + } + start = System.currentTimeMillis(); parseItems(); - readEndVCard(); + mTimeParseItems += System.currentTimeMillis() - start; + readEndVCard(true, false); + if (mBuilder != null) { + start = System.currentTimeMillis(); + mBuilder.endRecord(); + mTimeEndRecord += System.currentTimeMillis() - start; + } return true; } @@ -154,46 +235,102 @@ public class VCardParser_V21 { * @throws IOException * @throws VCardException */ - protected boolean readBeginVCard() throws IOException, VCardException { + protected boolean readBeginVCard(boolean allowGarbage) + throws IOException, VCardException { String line; - while (true) { - line = getLine(); - if (line == null) { - return false; - } else if (line.trim().length() > 0) { - break; + do { + while (true) { + line = getLine(); + if (line == null) { + return false; + } else if (line.trim().length() > 0) { + break; + } } - } - String[] strArray = line.split(":", 2); - - // Though vCard specification does not allow lower cases, - // some data may have them, so we allow it. - if (!(strArray.length == 2 && - strArray[0].trim().equalsIgnoreCase("BEGIN") && - strArray[1].trim().equalsIgnoreCase("VCARD"))) { - throw new VCardException("BEGIN:VCARD != \"" + line + "\""); - } - - if (mBuilder != null) { - mBuilder.startRecord("VCARD"); - } + String[] strArray = line.split(":", 2); + int length = strArray.length; - return true; + // Though vCard 2.1/3.0 specification does not allow lower cases, + // some data may have them, so we allow it (Actually, previous code + // had explicitly allowed "BEGIN:vCard" though there's no example). + // + // TODO: ignore non vCard entry (e.g. vcalendar). + // XXX: Not sure, but according to VDataBuilder.java, vcalendar + // entry + // may be nested. Just seeking "END:SOMETHING" may not be enough. + // e.g. + // BEGIN:VCARD + // ... (Valid. Must parse this) + // END:VCARD + // BEGIN:VSOMETHING + // ... (Must ignore this) + // BEGIN:VSOMETHING2 + // ... (Must ignore this) + // END:VSOMETHING2 + // ... (Must ignore this!) + // END:VSOMETHING + // BEGIN:VCARD + // ... (Valid. Must parse this) + // END:VCARD + // INVALID_STRING (VCardException should be thrown) + if (length == 2 && + strArray[0].trim().equalsIgnoreCase("BEGIN") && + strArray[1].trim().equalsIgnoreCase("VCARD")) { + return true; + } else if (!allowGarbage) { + if (mNestCount > 0) { + mPreviousLine = line; + return false; + } else { + throw new VCardException( + "Expected String \"BEGIN:VCARD\" did not come " + + "(Instead, \"" + line + "\" came)"); + } + } + } while(allowGarbage); + + throw new VCardException("Reached where must not be reached."); } - - protected void readEndVCard() throws VCardException { - // Though vCard specification does not allow lower cases, - // some data may have them, so we allow it. - String[] strArray = mPreviousLine.split(":", 2); - if (!(strArray.length == 2 && - strArray[0].trim().equalsIgnoreCase("END") && - strArray[1].trim().equalsIgnoreCase("VCARD"))) { - throw new VCardException("END:VCARD != \"" + mPreviousLine + "\""); - } - - if (mBuilder != null) { - mBuilder.endRecord(); - } + + /** + * The arguments useCache and allowGarbase are usually true and false accordingly when + * this function is called outside this function itself. + * + * @param useCache When true, line is obtained from mPreviousline. Otherwise, getLine() + * is used. + * @param allowGarbage When true, ignore non "END:VCARD" line. + * @throws IOException + * @throws VCardException + */ + protected void readEndVCard(boolean useCache, boolean allowGarbage) + throws IOException, VCardException { + String line; + do { + if (useCache) { + // Though vCard specification does not allow lower cases, + // some data may have them, so we allow it. + line = mPreviousLine; + } else { + while (true) { + line = getLine(); + if (line == null) { + throw new VCardException("Expected END:VCARD was not found."); + } else if (line.trim().length() > 0) { + break; + } + } + } + + String[] strArray = line.split(":", 2); + if (strArray.length == 2 && + strArray[0].trim().equalsIgnoreCase("END") && + strArray[1].trim().equalsIgnoreCase("VCARD")) { + return; + } else if (!allowGarbage) { + throw new VCardException("END:VCARD != \"" + mPreviousLine + "\""); + } + useCache = false; + } while (allowGarbage); } /** @@ -205,32 +342,33 @@ public class VCardParser_V21 { boolean ended = false; if (mBuilder != null) { + long start = System.currentTimeMillis(); mBuilder.startProperty(); + mTimeStartProperty += System.currentTimeMillis() - start; } - - try { - ended = parseItem(); - } finally { - if (mBuilder != null) { - mBuilder.endProperty(); - } + ended = parseItem(); + if (mBuilder != null && !ended) { + long start = System.currentTimeMillis(); + mBuilder.endProperty(); + mTimeEndProperty += System.currentTimeMillis() - start; } while (!ended) { // follow VCARD ,it wont reach endProperty if (mBuilder != null) { + long start = System.currentTimeMillis(); mBuilder.startProperty(); + mTimeStartProperty += System.currentTimeMillis() - start; } - try { - ended = parseItem(); - } finally { - if (mBuilder != null) { - mBuilder.endProperty(); - } + ended = parseItem(); + if (mBuilder != null && !ended) { + long start = System.currentTimeMillis(); + mBuilder.endProperty(); + mTimeEndProperty += System.currentTimeMillis() - start; } } } - + /** * item = [groups "."] name [params] ":" value CRLF * / [groups "."] "ADR" [params] ":" addressparts CRLF @@ -241,57 +379,134 @@ public class VCardParser_V21 { protected boolean parseItem() throws IOException, VCardException { mEncoding = sDefaultEncoding; - // params = ";" [ws] paramlist String line = getNonEmptyLine(); - String[] strArray = line.split(":", 2); - if (strArray.length < 2) { - throw new VCardException("Invalid line(\":\" does not exist): " + line); - } - String propertyValue = strArray[1]; - String[] groupNameParamsArray = strArray[0].split(";"); - String groupAndName = groupNameParamsArray[0].trim(); - String[] groupNameArray = groupAndName.split("\\."); - int length = groupNameArray.length; - String propertyName = groupNameArray[length - 1]; - if (mBuilder != null) { - mBuilder.propertyName(propertyName); - for (int i = 0; i < length - 1; i++) { - mBuilder.propertyGroup(groupNameArray[i]); - } - } - if (propertyName.equalsIgnoreCase("END")) { - mPreviousLine = line; + long start = System.currentTimeMillis(); + + String[] propertyNameAndValue = separateLineAndHandleGroup(line); + if (propertyNameAndValue == null) { return true; } - - length = groupNameParamsArray.length; - for (int i = 1; i < length; i++) { - handleParams(groupNameParamsArray[i]); + if (propertyNameAndValue.length != 2) { + throw new VCardException("Invalid line \"" + line + "\""); } - - if (isValidPropertyName(propertyName) || - propertyName.startsWith("X-")) { - if (propertyName.equals("VERSION") && - !propertyValue.equals(getVersion())) { - throw new VCardVersionException("Incompatible version: " + - propertyValue + " != " + getVersion()); - } - handlePropertyValue(propertyName, propertyValue); - return false; - } else if (propertyName.equals("ADR") || + String propertyName = propertyNameAndValue[0].toUpperCase(); + String propertyValue = propertyNameAndValue[1]; + + mTimeParseItem1 += System.currentTimeMillis() - start; + + if (propertyName.equals("ADR") || propertyName.equals("ORG") || propertyName.equals("N")) { + start = System.currentTimeMillis(); handleMultiplePropertyValue(propertyName, propertyValue); + mTimeParseItem3 += System.currentTimeMillis() - start; return false; } else if (propertyName.equals("AGENT")) { handleAgent(propertyValue); return false; + } else if (isValidPropertyName(propertyName)) { + if (propertyName.equals("BEGIN")) { + if (propertyValue.equals("VCARD")) { + throw new VCardNestedException("This vCard has nested vCard data in it."); + } else { + throw new VCardException("Unknown BEGIN type: " + propertyValue); + } + } else if (propertyName.equals("VERSION") && + !propertyValue.equals(getVersion())) { + throw new VCardVersionException("Incompatible version: " + + propertyValue + " != " + getVersion()); + } + start = System.currentTimeMillis(); + handlePropertyValue(propertyName, propertyValue); + mTimeParseItem2 += System.currentTimeMillis() - start; + return false; } throw new VCardException("Unknown property name: \"" + propertyName + "\""); } + static private final int STATE_GROUP_OR_PROPNAME = 0; + static private final int STATE_PARAMS = 1; + // vCard 3.1 specification allows double-quoted param-value, while vCard 2.1 does not. + // This is just for safety. + static private final int STATE_PARAMS_IN_DQUOTE = 2; + + protected String[] separateLineAndHandleGroup(String line) throws VCardException { + int length = line.length(); + int state = STATE_GROUP_OR_PROPNAME; + int nameIndex = 0; + + String[] propertyNameAndValue = new String[2]; + + for (int i = 0; i < length; i++) { + char ch = line.charAt(i); + switch (state) { + case STATE_GROUP_OR_PROPNAME: + if (ch == ':') { + String propertyName = line.substring(nameIndex, i); + if (propertyName.equalsIgnoreCase("END")) { + mPreviousLine = line; + return null; + } + if (mBuilder != null) { + mBuilder.propertyName(propertyName); + } + propertyNameAndValue[0] = propertyName; + if (i < length - 1) { + propertyNameAndValue[1] = line.substring(i + 1); + } else { + propertyNameAndValue[1] = ""; + } + return propertyNameAndValue; + } else if (ch == '.') { + String groupName = line.substring(nameIndex, i); + if (mBuilder != null) { + mBuilder.propertyGroup(groupName); + } + nameIndex = i + 1; + } else if (ch == ';') { + String propertyName = line.substring(nameIndex, i); + if (propertyName.equalsIgnoreCase("END")) { + mPreviousLine = line; + return null; + } + if (mBuilder != null) { + mBuilder.propertyName(propertyName); + } + propertyNameAndValue[0] = propertyName; + nameIndex = i + 1; + state = STATE_PARAMS; + } + break; + case STATE_PARAMS: + if (ch == '"') { + state = STATE_PARAMS_IN_DQUOTE; + } else if (ch == ';') { + handleParams(line.substring(nameIndex, i)); + nameIndex = i + 1; + } else if (ch == ':') { + handleParams(line.substring(nameIndex, i)); + if (i < length - 1) { + propertyNameAndValue[1] = line.substring(i + 1); + } else { + propertyNameAndValue[1] = ""; + } + return propertyNameAndValue; + } + break; + case STATE_PARAMS_IN_DQUOTE: + if (ch == '"') { + state = STATE_PARAMS; + } + break; + } + } + + throw new VCardException("Invalid line: \"" + line + "\""); + } + + /** * params = ";" [ws] paramlist * paramlist = paramlist [ws] ";" [ws] param @@ -330,18 +545,19 @@ public class VCardParser_V21 { } /** - * typeval = knowntype / "X-" word + * ptypeval = knowntype / "X-" word */ - protected void handleType(String ptypeval) throws VCardException { - if (sKnownTypeSet.contains(ptypeval.toUpperCase()) || - ptypeval.startsWith("X-")) { - if (mBuilder != null) { - mBuilder.propertyParamType("TYPE"); - mBuilder.propertyParamValue(ptypeval.toUpperCase()); - } - } else { - throw new VCardException("Unknown type: \"" + ptypeval + "\""); - } + protected void handleType(String ptypeval) { + String upperTypeValue = ptypeval; + if (!(sKnownTypeSet.contains(upperTypeValue) || upperTypeValue.startsWith("X-")) && + !mWarningValueMap.contains(ptypeval)) { + mWarningValueMap.add(ptypeval); + Log.w(LOG_TAG, "Type unsupported by vCard 2.1: " + ptypeval); + } + if (mBuilder != null) { + mBuilder.propertyParamType("TYPE"); + mBuilder.propertyParamValue(upperTypeValue); + } } /** @@ -427,31 +643,48 @@ public class VCardParser_V21 { protected void handlePropertyValue( String propertyName, String propertyValue) throws IOException, VCardException { - if (mEncoding == null || mEncoding.equalsIgnoreCase("7BIT") - || mEncoding.equalsIgnoreCase("8BIT") - || mEncoding.toUpperCase().startsWith("X-")) { - if (mBuilder != null) { - ArrayList v = new ArrayList(); - v.add(maybeUnescapeText(propertyValue)); - mBuilder.propertyValues(v); - } - } else if (mEncoding.equalsIgnoreCase("QUOTED-PRINTABLE")) { + if (mEncoding.equalsIgnoreCase("QUOTED-PRINTABLE")) { + long start = System.currentTimeMillis(); String result = getQuotedPrintable(propertyValue); if (mBuilder != null) { ArrayList v = new ArrayList(); v.add(result); mBuilder.propertyValues(v); } + mTimeHandlePropertyValue2 += System.currentTimeMillis() - start; } else if (mEncoding.equalsIgnoreCase("BASE64") || mEncoding.equalsIgnoreCase("B")) { - String result = getBase64(propertyValue); + long start = System.currentTimeMillis(); + // It is very rare, but some BASE64 data may be so big that + // OutOfMemoryError occurs. To ignore such cases, use try-catch. + try { + String result = getBase64(propertyValue); + if (mBuilder != null) { + ArrayList v = new ArrayList(); + v.add(result); + mBuilder.propertyValues(v); + } + } catch (OutOfMemoryError error) { + Log.e(LOG_TAG, "OutOfMemoryError happened during parsing BASE64 data!"); + if (mBuilder != null) { + mBuilder.propertyValues(null); + } + } + mTimeHandlePropertyValue3 += System.currentTimeMillis() - start; + } else { + if (!(mEncoding == null || mEncoding.equalsIgnoreCase("7BIT") + || mEncoding.equalsIgnoreCase("8BIT") + || mEncoding.toUpperCase().startsWith("X-"))) { + Log.w(LOG_TAG, "The encoding unsupported by vCard spec: \"" + mEncoding + "\"."); + } + + long start = System.currentTimeMillis(); if (mBuilder != null) { ArrayList v = new ArrayList(); - v.add(result); + v.add(maybeUnescapeText(propertyValue)); mBuilder.propertyValues(v); - } - } else { - throw new VCardException("Unknown encoding: \"" + mEncoding + "\""); + } + mTimeHandlePropertyValue1 += System.currentTimeMillis() - start; } } @@ -546,57 +779,51 @@ public class VCardParser_V21 { if (mEncoding.equalsIgnoreCase("QUOTED-PRINTABLE")) { propertyValue = getQuotedPrintable(propertyValue); } - - if (propertyValue.endsWith("\\")) { + + if (mBuilder != null) { + // TODO: limit should be set in accordance with propertyName? StringBuilder builder = new StringBuilder(); - // builder.append(propertyValue); - builder.append(propertyValue.substring(0, propertyValue.length() - 1)); - try { - String line; - while (true) { - line = getNonEmptyLine(); - // builder.append("\r\n"); - // builder.append(line); - if (!line.endsWith("\\")) { - builder.append(line); - break; + ArrayList list = new ArrayList(); + int length = propertyValue.length(); + for (int i = 0; i < length; i++) { + char ch = propertyValue.charAt(i); + if (ch == '\\' && i < length - 1) { + char nextCh = propertyValue.charAt(i + 1); + String unescapedString = maybeUnescape(nextCh); + if (unescapedString != null) { + builder.append(unescapedString); + i++; } else { - builder.append(line.substring(0, line.length() - 1)); + builder.append(ch); } + } else if (ch == ';') { + list.add(builder.toString()); + builder = new StringBuilder(); + } else { + builder.append(ch); } - } catch (IOException e) { - throw new VCardException( - "IOException is throw during reading propertyValue" + e); } - // Now, propertyValue may contain "\r\n" - propertyValue = builder.toString(); - } - - if (mBuilder != null) { - // In String#replaceAll() and Pattern class, "\\\\" means single slash. - - final String IMPOSSIBLE_STRING = "\0"; - // First replace two backslashes with impossible strings. - propertyValue = propertyValue.replaceAll("\\\\\\\\", IMPOSSIBLE_STRING); - - // Now, split propertyValue with ; whose previous char is not back slash. - Pattern pattern = Pattern.compile("(? arrayList = new ArrayList(); - for (String str : strArray) { - // Replace impossible strings with original two backslashes - arrayList.add( - unescapeText(str.replaceAll(IMPOSSIBLE_STRING, "\\\\\\\\"))); - } - mBuilder.propertyValues(arrayList); + list.add(builder.toString()); + mBuilder.propertyValues(list); } } /** * vCard 2.1 specifies AGENT allows one vcard entry. It is not encoded at all. + * + * item = ... + * / [groups "."] "AGENT" + * [params] ":" vcard CRLF + * vcard = "BEGIN" [ws] ":" [ws] "VCARD" [ws] 1*CRLF + * items *CRLF "END" [ws] ":" [ws] "VCARD" + * */ - protected void handleAgent(String propertyValue) throws IOException, VCardException { + protected void handleAgent(String propertyValue) throws VCardException { + throw new VCardException("AGENT Property is not supported."); + /* This is insufficient support. Also, AGENT Property is very rare. + Ignore it for now. + TODO: fix this. + String[] strArray = propertyValue.split(":", 2); if (!(strArray.length == 2 || strArray[0].trim().equalsIgnoreCase("BEGIN") && @@ -605,6 +832,7 @@ public class VCardParser_V21 { } parseItems(); readEndVCard(); + */ } /** @@ -615,17 +843,18 @@ public class VCardParser_V21 { } /** - * Convert escaped text into unescaped text. + * Returns unescaped String if the character should be unescaped. Return null otherwise. + * e.g. In vCard 2.1, "\;" should be unescaped into ";" while "\x" should not be. */ - protected String unescapeText(String text) { + protected String maybeUnescape(char ch) { // Original vCard 2.1 specification does not allow transformation // "\:" -> ":", "\," -> ",", and "\\" -> "\", but previous implementation of // this class allowed them, so keep it as is. - // In String#replaceAll(), "\\\\" means single slash. - return text.replaceAll("\\\\;", ";") - .replaceAll("\\\\:", ":") - .replaceAll("\\\\,", ",") - .replaceAll("\\\\\\\\", "\\\\"); + if (ch == '\\' || ch == ';' || ch == ':' || ch == ',') { + return String.valueOf(ch); + } else { + return null; + } } /** @@ -656,12 +885,15 @@ public class VCardParser_V21 { */ public boolean parse(InputStream is, String charset, VBuilder builder) throws IOException, VCardException { + // TODO: make this count error entries instead of just throwing VCardException. + // TODO: If we really need to allow only CRLF as line break, // we will have to develop our own BufferedReader(). - mReader = new BufferedReader(new InputStreamReader(is, charset)); + mReader = new CustomBufferedReader(new InputStreamReader(is, charset)); mBuilder = builder; + long start = System.currentTimeMillis(); if (mBuilder != null) { mBuilder.start(); } @@ -669,9 +901,50 @@ public class VCardParser_V21 { if (mBuilder != null) { mBuilder.end(); } + mTimeTotal += System.currentTimeMillis() - start; + return true; } + public boolean parse(InputStream is, VBuilder builder) throws IOException, VCardException { + return parse(is, DEFAULT_CHARSET, builder); + } + + /** + * Cancel parsing. + * Actual cancel is done after the end of the current one vcard entry parsing. + */ + public void cancel() { + mCanceled = true; + } + + /** + * It is very, very rare case, but there is a case where + * canceled may be already true outside this object. + * @hide + */ + public void parse(InputStream is, String charset, VBuilder builder, boolean canceled) + throws IOException, VCardException { + mCanceled = canceled; + parse(is, charset, builder); + } + + public void showDebugInfo() { + Log.d(LOG_TAG, "total parsing time: " + mTimeTotal + " ms"); + if (mReader instanceof CustomBufferedReader) { + Log.d(LOG_TAG, "total readLine time: " + + ((CustomBufferedReader)mReader).getTotalmillisecond() + " ms"); + } + Log.d(LOG_TAG, "mTimeStartRecord: " + mTimeStartRecord + " ms"); + Log.d(LOG_TAG, "mTimeEndRecord: " + mTimeEndRecord + " ms"); + Log.d(LOG_TAG, "mTimeParseItem1: " + mTimeParseItem1 + " ms"); + Log.d(LOG_TAG, "mTimeParseItem2: " + mTimeParseItem2 + " ms"); + Log.d(LOG_TAG, "mTimeParseItem3: " + mTimeParseItem3 + " ms"); + Log.d(LOG_TAG, "mTimeHandlePropertyValue1: " + mTimeHandlePropertyValue1 + " ms"); + Log.d(LOG_TAG, "mTimeHandlePropertyValue2: " + mTimeHandlePropertyValue2 + " ms"); + Log.d(LOG_TAG, "mTimeHandlePropertyValue3: " + mTimeHandlePropertyValue3 + " ms"); + } + private boolean isLetter(char ch) { if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) { return true; @@ -679,3 +952,24 @@ public class VCardParser_V21 { return false; } } + +class CustomBufferedReader extends BufferedReader { + private long mTime; + + public CustomBufferedReader(Reader in) { + super(in); + } + + @Override + public String readLine() throws IOException { + long start = System.currentTimeMillis(); + String ret = super.readLine(); + long end = System.currentTimeMillis(); + mTime += end - start; + return ret; + } + + public long getTotalmillisecond() { + return mTime; + } +} diff --git a/core/java/android/syncml/pim/vcard/VCardParser_V30.java b/core/java/android/syncml/pim/vcard/VCardParser_V30.java index 901bd49ef006..e67525eec332 100644 --- a/core/java/android/syncml/pim/vcard/VCardParser_V30.java +++ b/core/java/android/syncml/pim/vcard/VCardParser_V30.java @@ -16,8 +16,9 @@ package android.syncml.pim.vcard; +import android.util.Log; + import java.io.IOException; -import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -26,9 +27,11 @@ import java.util.HashSet; * Please refer to vCard Specification 3.0 (http://tools.ietf.org/html/rfc2426) */ public class VCardParser_V30 extends VCardParser_V21 { + private static final String LOG_TAG = "VCardParser_V30"; + private static final HashSet acceptablePropsWithParam = new HashSet( Arrays.asList( - "LOGO", "PHOTO", "LABEL", "FN", "TITLE", "SOUND", + "BEGIN", "LOGO", "PHOTO", "LABEL", "FN", "TITLE", "SOUND", "VERSION", "TEL", "EMAIL", "TZ", "GEO", "NOTE", "URL", "BDAY", "ROLE", "REV", "UID", "KEY", "MAILER", // 2.1 "NAME", "PROFILE", "SOURCE", "NICKNAME", "CLASS", @@ -51,8 +54,14 @@ public class VCardParser_V30 extends VCardParser_V21 { @Override protected boolean isValidPropertyName(String propertyName) { - return acceptablePropsWithParam.contains(propertyName) || - acceptablePropsWithoutParam.contains(propertyName); + if (!(acceptablePropsWithParam.contains(propertyName) || + acceptablePropsWithoutParam.contains(propertyName) || + propertyName.startsWith("X-")) && + !mWarningValueMap.contains(propertyName)) { + mWarningValueMap.add(propertyName); + Log.w(LOG_TAG, "Property name unsupported by vCard 3.0: " + propertyName); + } + return true; } @Override @@ -100,7 +109,21 @@ public class VCardParser_V30 extends VCardParser_V21 { } } else if (line.charAt(0) == ' ' || line.charAt(0) == '\t') { if (builder != null) { - // TODO: Check whether MIME requires only one whitespace. + // See Section 5.8.1 of RFC 2425 (MIME-DIR document). + // Following is the excerpts from it. + // + // DESCRIPTION:This is a long description that exists on a long line. + // + // Can be represented as: + // + // DESCRIPTION:This is a long description + // that exists on a long line. + // + // It could also be represented as: + // + // DESCRIPTION:This is a long descrip + // tion that exists o + // n a long line. builder.append(line.substring(1)); } else if (mPreviousLine != null) { builder = new StringBuilder(); @@ -113,10 +136,13 @@ public class VCardParser_V30 extends VCardParser_V21 { } else { if (mPreviousLine == null) { mPreviousLine = line; + if (builder != null) { + return builder.toString(); + } } else { String ret = mPreviousLine; mPreviousLine = line; - return ret; + return ret; } } } @@ -130,15 +156,16 @@ public class VCardParser_V30 extends VCardParser_V21 { * [group "."] "END" ":" "VCARD" 1*CRLF */ @Override - protected boolean readBeginVCard() throws IOException, VCardException { + protected boolean readBeginVCard(boolean allowGarbage) throws IOException, VCardException { // TODO: vCard 3.0 supports group. - return super.readBeginVCard(); + return super.readBeginVCard(allowGarbage); } @Override - protected void readEndVCard() throws VCardException { + protected void readEndVCard(boolean useCache, boolean allowGarbage) + throws IOException, VCardException { // TODO: vCard 3.0 supports group. - super.readEndVCard(); + super.readEndVCard(useCache, allowGarbage); } /** @@ -214,23 +241,6 @@ public class VCardParser_V30 extends VCardParser_V21 { throw new VCardException("AGENT in vCard 3.0 is not supported yet."); } - // vCard 3.0 supports "B" as BASE64 encoding. - @Override - protected void handlePropertyValue( - String propertyName, String propertyValue) throws - IOException, VCardException { - if (mEncoding != null && mEncoding.equalsIgnoreCase("B")) { - String result = getBase64(propertyValue); - if (mBuilder != null) { - ArrayList v = new ArrayList(); - v.add(result); - mBuilder.propertyValues(v); - } - } - - super.handlePropertyValue(propertyName, propertyValue); - } - /** * vCard 3.0 does not require two CRLF at the last of BASE64 data. * It only requires that data should be MIME-encoded. @@ -258,28 +268,39 @@ public class VCardParser_V30 extends VCardParser_V21 { return builder.toString(); } - /** - * Return unescapeText(text). - * In vCard 3.0, 8bit text is always encoded. - */ - @Override - protected String maybeUnescapeText(String text) { - return unescapeText(text); - } - /** * ESCAPED-CHAR = "\\" / "\;" / "\," / "\n" / "\N") * ; \\ encodes \, \n or \N encodes newline * ; \; encodes ;, \, encodes , - */ + * + * Note: Apple escape ':' into '\:' while does not escape '\' + */ @Override - protected String unescapeText(String text) { - // In String#replaceAll(), "\\\\" means single slash. - return text.replaceAll("\\\\;", ";") - .replaceAll("\\\\:", ":") - .replaceAll("\\\\,", ",") - .replaceAll("\\\\n", "\r\n") - .replaceAll("\\\\N", "\r\n") - .replaceAll("\\\\\\\\", "\\\\"); + protected String maybeUnescapeText(String text) { + StringBuilder builder = new StringBuilder(); + int length = text.length(); + for (int i = 0; i < length; i++) { + char ch = text.charAt(i); + if (ch == '\\' && i < length - 1) { + char next_ch = text.charAt(++i); + if (next_ch == 'n' || next_ch == 'N') { + builder.append("\r\n"); + } else { + builder.append(next_ch); + } + } else { + builder.append(ch); + } + } + return builder.toString(); + } + + @Override + protected String maybeUnescape(char ch) { + if (ch == 'n' || ch == 'N') { + return "\r\n"; + } else { + return String.valueOf(ch); + } } } diff --git a/core/java/android/syncml/pim/vcard/VCardSourceDetector.java b/core/java/android/syncml/pim/vcard/VCardSourceDetector.java new file mode 100644 index 000000000000..8c483912335b --- /dev/null +++ b/core/java/android/syncml/pim/vcard/VCardSourceDetector.java @@ -0,0 +1,140 @@ +/* + * 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.syncml.pim.vcard; + +import android.syncml.pim.VBuilder; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * Class which tries to detects the source of the vCard from its properties. + * Currently this implementation is very premature. + * @hide + */ +public class VCardSourceDetector implements VBuilder { + // Should only be used in package. + static final int TYPE_UNKNOWN = 0; + static final int TYPE_APPLE = 1; + static final int TYPE_JAPANESE_MOBILE_PHONE = 2; // Used in Japanese mobile phones. + static final int TYPE_FOMA = 3; // Used in some Japanese FOMA mobile phones. + static final int TYPE_WINDOWS_MOBILE_JP = 4; + // TODO: Excel, etc. + + private static Set APPLE_SIGNS = new HashSet(Arrays.asList( + "X-PHONETIC-FIRST-NAME", "X-PHONETIC-MIDDLE-NAME", "X-PHONETIC-LAST-NAME", + "X-ABADR", "X-ABUID")); + + private static Set JAPANESE_MOBILE_PHONE_SIGNS = new HashSet(Arrays.asList( + "X-GNO", "X-GN", "X-REDUCTION")); + + private static Set WINDOWS_MOBILE_PHONE_SIGNS = new HashSet(Arrays.asList( + "X-MICROSOFT-ASST_TEL", "X-MICROSOFT-ASSISTANT", "X-MICROSOFT-OFFICELOC")); + + // Note: these signes appears before the signs of the other type (e.g. "X-GN"). + // In other words, Japanese FOMA mobile phones are detected as FOMA, not JAPANESE_MOBILE_PHONES. + private static Set FOMA_SIGNS = new HashSet(Arrays.asList( + "X-SD-VERN", "X-SD-FORMAT_VER", "X-SD-CATEGORIES", "X-SD-CLASS", "X-SD-DCREATED", + "X-SD-DESCRIPTION")); + private static String TYPE_FOMA_CHARSET_SIGN = "X-SD-CHAR_CODE"; + + private int mType = TYPE_UNKNOWN; + // Some mobile phones (like FOMA) tells us the charset of the data. + private boolean mNeedParseSpecifiedCharset; + private String mSpecifiedCharset; + + public void start() { + } + + public void end() { + } + + public void startRecord(String type) { + } + + public void startProperty() { + mNeedParseSpecifiedCharset = false; + } + + public void endProperty() { + } + + public void endRecord() { + } + + public void propertyGroup(String group) { + } + + public void propertyName(String name) { + if (name.equalsIgnoreCase(TYPE_FOMA_CHARSET_SIGN)) { + mType = TYPE_FOMA; + mNeedParseSpecifiedCharset = true; + return; + } + if (mType != TYPE_UNKNOWN) { + return; + } + if (WINDOWS_MOBILE_PHONE_SIGNS.contains(name)) { + mType = TYPE_WINDOWS_MOBILE_JP; + } else if (FOMA_SIGNS.contains(name)) { + mType = TYPE_FOMA; + } else if (JAPANESE_MOBILE_PHONE_SIGNS.contains(name)) { + mType = TYPE_JAPANESE_MOBILE_PHONE; + } else if (APPLE_SIGNS.contains(name)) { + mType = TYPE_APPLE; + } + } + + public void propertyParamType(String type) { + } + + public void propertyParamValue(String value) { + } + + public void propertyValues(List values) { + if (mNeedParseSpecifiedCharset && values.size() > 0) { + mSpecifiedCharset = values.get(0); + } + } + + int getType() { + return mType; + } + + /** + * Return charset String guessed from the source's properties. + * This method must be called after parsing target file(s). + * @return Charset String. Null is returned if guessing the source fails. + */ + public String getEstimatedCharset() { + if (mSpecifiedCharset != null) { + return mSpecifiedCharset; + } + switch (mType) { + case TYPE_WINDOWS_MOBILE_JP: + case TYPE_FOMA: + case TYPE_JAPANESE_MOBILE_PHONE: + return "SHIFT_JIS"; + case TYPE_APPLE: + return "UTF-8"; + default: + return null; + } + } +} diff --git a/core/java/android/test/AndroidTestCase.java b/core/java/android/test/AndroidTestCase.java index 9bafa32e42a9..de0587ab7366 100644 --- a/core/java/android/test/AndroidTestCase.java +++ b/core/java/android/test/AndroidTestCase.java @@ -16,12 +16,14 @@ package android.test; +import android.content.ContentValues; import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import junit.framework.TestCase; import java.lang.reflect.Field; -import junit.framework.TestCase; - /** * Extend this if you need to access Resources or other things that depend on Activity Context. */ @@ -52,6 +54,72 @@ public class AndroidTestCase extends TestCase { return mContext; } + /** + * Asserts that launching a given activity is protected by a particular permission by + * attempting to start the activity and validating that a {@link SecurityException} + * is thrown that mentions the permission in its error message. + * + * Note that an instrumentation isn't needed because all we are looking for is a security error + * and we don't need to wait for the activity to launch and get a handle to the activity. + * + * @param packageName The package name of the activity to launch. + * @param className The class of the activity to launch. + * @param permission The name of the permission. + */ + public void assertActivityRequiresPermission( + String packageName, String className, String permission) { + final Intent intent = new Intent(); + intent.setClassName(packageName, className); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + try { + getContext().startActivity(intent); + fail("expected security exception for " + permission); + } catch (SecurityException expected) { + assertNotNull("security exception's error message.", expected.getMessage()); + assertTrue("error message should contain " + permission + ".", + expected.getMessage().contains(permission)); + } + } + + + /** + * Asserts that reading from the content uri requires a particular permission by querying the + * uri and ensuring a {@link SecurityException} is thrown mentioning the particular permission. + * + * @param uri The uri that requires a permission to query. + * @param permission The permission that should be required. + */ + public void assertReadingContentUriRequiresPermission(Uri uri, String permission) { + try { + getContext().getContentResolver().query(uri, null, null, null, null); + fail("expected SecurityException requiring " + permission); + } catch (SecurityException expected) { + assertNotNull("security exception's error message.", expected.getMessage()); + assertTrue("error message should contain " + permission + ".", + expected.getMessage().contains(permission)); + } + } + + /** + * Asserts that writing to the content uri requires a particular permission by inserting into + * the uri and ensuring a {@link SecurityException} is thrown mentioning the particular + * permission. + * + * @param uri The uri that requires a permission to query. + * @param permission The permission that should be required. + */ + public void assertWritingContentUriRequiresPermission(Uri uri, String permission) { + try { + getContext().getContentResolver().insert(uri, new ContentValues()); + fail("expected SecurityException requiring " + permission); + } catch (SecurityException expected) { + assertNotNull("security exception's error message.", expected.getMessage()); + assertTrue("error message should contain " + permission + ".", + expected.getMessage().contains(permission)); + } + } + /** * This function is called by various TestCase implementations, at tearDown() time, in order * to scrub out any class variables. This protects against memory leaks in the case where a diff --git a/core/java/android/test/InstrumentationTestCase.java b/core/java/android/test/InstrumentationTestCase.java index 470ab0d9a48e..2145d7cc7891 100644 --- a/core/java/android/test/InstrumentationTestCase.java +++ b/core/java/android/test/InstrumentationTestCase.java @@ -241,7 +241,13 @@ public class InstrumentationTestCase extends TestCase { try { final Field keyCodeField = KeyEvent.class.getField("KEYCODE_" + key); final int keyCode = keyCodeField.getInt(null); - instrumentation.sendKeyDownUpSync(keyCode); + try { + instrumentation.sendKeyDownUpSync(keyCode); + } catch (SecurityException e) { + // Ignore security exceptions that are now thrown + // when trying to send to another app, to retain + // compatibility with existing tests. + } } catch (NoSuchFieldException e) { Log.w("ActivityTestCase", "Unknown keycode: KEYCODE_" + key); break; @@ -266,7 +272,13 @@ public class InstrumentationTestCase extends TestCase { final Instrumentation instrumentation = getInstrumentation(); for (int i = 0; i < count; i++) { - instrumentation.sendKeyDownUpSync(keys[i]); + try { + instrumentation.sendKeyDownUpSync(keys[i]); + } catch (SecurityException e) { + // Ignore security exceptions that are now thrown + // when trying to send to another app, to retain + // compatibility with existing tests. + } } instrumentation.waitForIdleSync(); @@ -292,7 +304,13 @@ public class InstrumentationTestCase extends TestCase { final int keyCount = keys[i]; final int keyCode = keys[i + 1]; for (int j = 0; j < keyCount; j++) { - instrumentation.sendKeyDownUpSync(keyCode); + try { + instrumentation.sendKeyDownUpSync(keyCode); + } catch (SecurityException e) { + // Ignore security exceptions that are now thrown + // when trying to send to another app, to retain + // compatibility with existing tests. + } } } diff --git a/core/java/android/text/LoginFilter.java b/core/java/android/text/LoginFilter.java index 27c703f1f083..9045c09fb660 100644 --- a/core/java/android/text/LoginFilter.java +++ b/core/java/android/text/LoginFilter.java @@ -49,10 +49,6 @@ public abstract class LoginFilter implements InputFilter { */ public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { - char[] out = new char[end - start]; // reserve enough space for whole string - int outidx = 0; - boolean changed = false; - onStart(); // Scan through beginning characters in dest, calling onInvalidCharacter() @@ -63,14 +59,26 @@ public abstract class LoginFilter implements InputFilter { } // Scan through changed characters rejecting disallowed chars + SpannableStringBuilder modification = null; + int modoff = 0; + for (int i = start; i < end; i++) { char c = source.charAt(i); if (isAllowed(c)) { - // Character allowed. Add it to the sequence. - out[outidx++] = c; + // Character allowed. + modoff++; } else { - if (mAppendInvalid) out[outidx++] = c; - else changed = true; // we changed the original string + if (mAppendInvalid) { + modoff++; + } else { + if (modification == null) { + modification = new SpannableStringBuilder(source, start, end); + modoff = i - start; + } + + modification.delete(modoff, modoff + 1); + } + onInvalidCharacter(c); } } @@ -84,20 +92,9 @@ public abstract class LoginFilter implements InputFilter { onStop(); - if (!changed) { - return null; - } - - String s = new String(out, 0, outidx); - - if (source instanceof Spanned) { - SpannableString sp = new SpannableString(s); - TextUtils.copySpansFrom((Spanned) source, - start, end, null, sp, 0); - return sp; - } else { - return s; - } + // Either returns null if we made no changes, + // or what we wanted to change it to if there were changes. + return modification; } /** diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java index 5b4c3802b3ce..53096dddefb5 100644 --- a/core/java/android/text/TextUtils.java +++ b/core/java/android/text/TextUtils.java @@ -916,6 +916,17 @@ public class TextUtils { sp.setSpan(o, p.readInt(), p.readInt(), p.readInt()); } + /** + * Copies the spans from the region start...end in + * source to the region + * destoff...destoff+end-start in dest. + * Spans in source that begin before start + * or end after end but overlap this range are trimmed + * as if they began at start or ended at end. + * + * @throws IndexOutOfBoundsException if any of the copied spans + * are out of range in dest. + */ public static void copySpansFrom(Spanned source, int start, int end, Class kind, Spannable dest, int destoff) { diff --git a/core/java/android/text/format/DateFormat.java b/core/java/android/text/format/DateFormat.java index 0dc96c369b78..3d10f171538c 100644 --- a/core/java/android/text/format/DateFormat.java +++ b/core/java/android/text/format/DateFormat.java @@ -242,7 +242,7 @@ public class DateFormat { /** * Returns a {@link java.text.DateFormat} object that can format the time according - * to the current user preference. + * to the current locale and the user's 12-/24-hour clock preference. * @param context the application context * @return the {@link java.text.DateFormat} object that properly formats the time. */ @@ -260,46 +260,88 @@ public class DateFormat { } /** - * Returns a {@link java.text.DateFormat} object that can format the date according - * to the current user preference. + * Returns a {@link java.text.DateFormat} object that can format the date + * in short form (such as 12/31/1999) according + * to the current locale and the user's date-order preference. * @param context the application context * @return the {@link java.text.DateFormat} object that properly formats the date. */ public static final java.text.DateFormat getDateFormat(Context context) { - String value = getDateFormatString(context); + String value = Settings.System.getString(context.getContentResolver(), + Settings.System.DATE_FORMAT); + + return getDateFormatForSetting(context, value); + } + + /** + * Returns a {@link java.text.DateFormat} object to format the date + * as if the date format setting were set to value, + * including null to use the locale's default format. + * @param context the application context + * @param value the date format setting string to interpret for + * the current locale + * @hide + */ + public static java.text.DateFormat getDateFormatForSetting(Context context, + String value) { + if (value != null) { + int month = value.indexOf('M'); + int day = value.indexOf('d'); + int year = value.indexOf('y'); + + if (month >= 0 && day >= 0 && year >= 0) { + String template = context.getString(R.string.numeric_date_template); + if (year < month) { + if (month < day) { + value = String.format(template, "yyyy", "MM", "dd"); + } else { + value = String.format(template, "yyyy", "dd", "MM"); + } + } else if (month < day) { + if (day < year) { + value = String.format(template, "MM", "dd", "yyyy"); + } else { // unlikely + value = String.format(template, "MM", "yyyy", "dd"); + } + } else { // day < month + if (month < year) { + value = String.format(template, "dd", "MM", "yyyy"); + } else { // unlikely + value = String.format(template, "dd", "yyyy", "MM"); + } + } + + return new java.text.SimpleDateFormat(value); + } + } + + /* + * The setting is not set; use the default. + * We use a resource string here instead of just DateFormat.SHORT + * so that we get a four-digit year instead a two-digit year. + */ + value = context.getString(R.string.numeric_date_format); return new java.text.SimpleDateFormat(value); } /** * Returns a {@link java.text.DateFormat} object that can format the date - * in long form (such as December 31, 1999) based on user preference. + * in long form (such as December 31, 1999) for the current locale. * @param context the application context * @return the {@link java.text.DateFormat} object that formats the date in long form. */ public static final java.text.DateFormat getLongDateFormat(Context context) { - String value = getDateFormatString(context); - if (value.indexOf('M') < value.indexOf('d')) { - value = context.getString(R.string.full_date_month_first); - } else { - value = context.getString(R.string.full_date_day_first); - } - return new java.text.SimpleDateFormat(value); + return java.text.DateFormat.getDateInstance(java.text.DateFormat.LONG); } /** * Returns a {@link java.text.DateFormat} object that can format the date - * in medium form (such as Dec. 31, 1999) based on user preference. + * in medium form (such as Dec. 31, 1999) for the current locale. * @param context the application context * @return the {@link java.text.DateFormat} object that formats the date in long form. */ public static final java.text.DateFormat getMediumDateFormat(Context context) { - String value = getDateFormatString(context); - if (value.indexOf('M') < value.indexOf('d')) { - value = context.getString(R.string.medium_date_month_first); - } else { - value = context.getString(R.string.medium_date_day_first); - } - return new java.text.SimpleDateFormat(value); + return java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM); } /** @@ -338,6 +380,12 @@ public class DateFormat { } private static String getDateFormatString(Context context) { + java.text.DateFormat df; + df = java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT); + if (df instanceof SimpleDateFormat) { + return ((SimpleDateFormat) df).toPattern(); + } + String value = Settings.System.getString(context.getContentResolver(), Settings.System.DATE_FORMAT); if (value == null || value.length() < 6) { diff --git a/core/java/android/text/format/DateUtils.java b/core/java/android/text/format/DateUtils.java index 8a7cdd92950f..1a4eb699b56d 100644 --- a/core/java/android/text/format/DateUtils.java +++ b/core/java/android/text/format/DateUtils.java @@ -62,15 +62,6 @@ public class DateUtils com.android.internal.R.string.day_of_week_short_friday, com.android.internal.R.string.day_of_week_short_saturday, }; - private static final int[] sDaysShorter = new int[] { - com.android.internal.R.string.day_of_week_shorter_sunday, - com.android.internal.R.string.day_of_week_shorter_monday, - com.android.internal.R.string.day_of_week_shorter_tuesday, - com.android.internal.R.string.day_of_week_shorter_wednesday, - com.android.internal.R.string.day_of_week_shorter_thursday, - com.android.internal.R.string.day_of_week_shorter_friday, - com.android.internal.R.string.day_of_week_shorter_saturday, - }; private static final int[] sDaysShortest = new int[] { com.android.internal.R.string.day_of_week_shortest_sunday, com.android.internal.R.string.day_of_week_shortest_monday, @@ -80,6 +71,20 @@ public class DateUtils com.android.internal.R.string.day_of_week_shortest_friday, com.android.internal.R.string.day_of_week_shortest_saturday, }; + private static final int[] sMonthsStandaloneLong = new int [] { + com.android.internal.R.string.month_long_standalone_january, + com.android.internal.R.string.month_long_standalone_february, + com.android.internal.R.string.month_long_standalone_march, + com.android.internal.R.string.month_long_standalone_april, + com.android.internal.R.string.month_long_standalone_may, + com.android.internal.R.string.month_long_standalone_june, + com.android.internal.R.string.month_long_standalone_july, + com.android.internal.R.string.month_long_standalone_august, + com.android.internal.R.string.month_long_standalone_september, + com.android.internal.R.string.month_long_standalone_october, + com.android.internal.R.string.month_long_standalone_november, + com.android.internal.R.string.month_long_standalone_december, + }; private static final int[] sMonthsLong = new int [] { com.android.internal.R.string.month_long_january, com.android.internal.R.string.month_long_february, @@ -127,7 +132,7 @@ public class DateUtils com.android.internal.R.string.pm, }; private static Configuration sLastConfig; - private static String sStatusTimeFormat; + private static java.text.DateFormat sStatusTimeFormat; private static String sElapsedFormatMMSS; private static String sElapsedFormatHMMSS; @@ -142,6 +147,9 @@ public class DateUtils public static final long HOUR_IN_MILLIS = MINUTE_IN_MILLIS * 60; public static final long DAY_IN_MILLIS = HOUR_IN_MILLIS * 24; public static final long WEEK_IN_MILLIS = DAY_IN_MILLIS * 7; + /** + * This constant is actually the length of 364 days, not of a year! + */ public static final long YEAR_IN_MILLIS = WEEK_IN_MILLIS * 52; // The following FORMAT_* symbols are used for specifying the format of @@ -171,8 +179,14 @@ public class DateUtils // Date and time format strings that are constant and don't need to be // translated. + /** + * This is not actually the preferred 24-hour date format in all locales. + */ public static final String HOUR_MINUTE_24 = "%H:%M"; public static final String MONTH_FORMAT = "%B"; + /** + * This is not actually a useful month name in all locales. + */ public static final String ABBREV_MONTH_FORMAT = "%b"; public static final String NUMERIC_MONTH_FORMAT = "%m"; public static final String MONTH_DAY_FORMAT = "%-d"; @@ -255,18 +269,15 @@ public class DateUtils * For use with the 'abbrev' parameter of {@link #getDayOfWeekString} and {@link #getMonthString}. * @more *

      e.g. "Su" or "Jan" - *

      In some languages, the results returned for LENGTH_SHORT may be the same as - * return for {@link #LENGTH_MEDIUM}. + *

      In most languages, the results returned for LENGTH_SHORT will be the same as + * the results returned for {@link #LENGTH_MEDIUM}. */ public static final int LENGTH_SHORT = 30; /** * Request an even shorter abbreviated version of the name. - * For use with the 'abbrev' parameter of {@link #getDayOfWeekString} and {@link #getMonthString}. - * @more - *

      e.g. "M", "Tu", "Th" or "J" - *

      In some languages, the results returned for LENGTH_SHORTEST may be the same as - * return for {@link #LENGTH_SHORTER}. + * Do not use this. Currently this will always return the same result + * as {@link #LENGTH_SHORT}. */ public static final int LENGTH_SHORTER = 40; @@ -275,8 +286,8 @@ public class DateUtils * For use with the 'abbrev' parameter of {@link #getDayOfWeekString} and {@link #getMonthString}. * @more *

      e.g. "S", "T", "T" or "J" - *

      In some languages, the results returned for LENGTH_SHORTEST may be the same as - * return for {@link #LENGTH_SHORTER}. + *

      In some languages, the results returned for LENGTH_SHORTEST will be the same as + * the results returned for {@link #LENGTH_SHORT}. */ public static final int LENGTH_SHORTEST = 50; @@ -284,9 +295,12 @@ public class DateUtils * Return a string for the day of the week. * @param dayOfWeek One of {@link Calendar#SUNDAY Calendar.SUNDAY}, * {@link Calendar#MONDAY Calendar.MONDAY}, etc. - * @param abbrev One of {@link #LENGTH_LONG}, {@link #LENGTH_SHORT}, {@link #LENGTH_SHORTER} - * or {@link #LENGTH_SHORTEST}. For forward compatibility, anything else - * will return the same as {#LENGTH_MEDIUM}. + * @param abbrev One of {@link #LENGTH_LONG}, {@link #LENGTH_SHORT}, + * {@link #LENGTH_MEDIUM}, or {@link #LENGTH_SHORTEST}. + * Note that in most languages, {@link #LENGTH_SHORT} + * will return the same as {@link #LENGTH_MEDIUM}. + * Undefined lengths will return {@link #LENGTH_MEDIUM} + * but may return something different in the future. * @throws IndexOutOfBoundsException if the dayOfWeek is out of bounds. */ public static String getDayOfWeekString(int dayOfWeek, int abbrev) { @@ -295,7 +309,7 @@ public class DateUtils case LENGTH_LONG: list = sDaysLong; break; case LENGTH_MEDIUM: list = sDaysMedium; break; case LENGTH_SHORT: list = sDaysShort; break; - case LENGTH_SHORTER: list = sDaysShorter; break; + case LENGTH_SHORTER: list = sDaysShort; break; case LENGTH_SHORTEST: list = sDaysShortest; break; default: list = sDaysMedium; break; } @@ -316,13 +330,14 @@ public class DateUtils } /** - * Return a localized string for the day of the week. + * Return a localized string for the month of the year. * @param month One of {@link Calendar#JANUARY Calendar.JANUARY}, * {@link Calendar#FEBRUARY Calendar.FEBRUARY}, etc. - * @param abbrev One of {@link #LENGTH_LONG}, {@link #LENGTH_SHORT}, {@link #LENGTH_SHORTER} - * or {@link #LENGTH_SHORTEST}. For forward compatibility, anything else - * will return the same as {#LENGTH_MEDIUM}. - * @return Localized day of the week. + * @param abbrev One of {@link #LENGTH_LONG}, {@link #LENGTH_MEDIUM}, + * or {@link #LENGTH_SHORTEST}. + * Undefined lengths will return {@link #LENGTH_MEDIUM} + * but may return something different in the future. + * @return Localized month of the year. */ public static String getMonthString(int month, int abbrev) { // Note that here we use sMonthsMedium for MEDIUM, SHORT and SHORTER. @@ -343,6 +358,40 @@ public class DateUtils return r.getString(list[month - Calendar.JANUARY]); } + /** + * Return a localized string for the month of the year, for + * contexts where the month is not formatted together with + * a day of the month. + * + * @param month One of {@link Calendar#JANUARY Calendar.JANUARY}, + * {@link Calendar#FEBRUARY Calendar.FEBRUARY}, etc. + * @param abbrev One of {@link #LENGTH_LONG}, {@link #LENGTH_MEDIUM}, + * or {@link #LENGTH_SHORTEST}. + * Undefined lengths will return {@link #LENGTH_MEDIUM} + * but may return something different in the future. + * @return Localized month of the year. + * @hide Pending API council approval + */ + public static String getStandaloneMonthString(int month, int abbrev) { + // Note that here we use sMonthsMedium for MEDIUM, SHORT and SHORTER. + // This is a shortcut to not spam the translators with too many variations + // of the same string. If we find that in a language the distinction + // is necessary, we can can add more without changing this API. + int[] list; + switch (abbrev) { + case LENGTH_LONG: list = sMonthsStandaloneLong; + break; + case LENGTH_MEDIUM: list = sMonthsMedium; break; + case LENGTH_SHORT: list = sMonthsMedium; break; + case LENGTH_SHORTER: list = sMonthsMedium; break; + case LENGTH_SHORTEST: list = sMonthsShortest; break; + default: list = sMonthsMedium; break; + } + + Resources r = Resources.getSystem(); + return r.getString(list[month - Calendar.JANUARY]); + } + /** * Returns a string describing the elapsed time since startTime. * @param startTime some time in the past. @@ -572,7 +621,7 @@ public class DateUtils Configuration cfg = r.getConfiguration(); if (sLastConfig == null || !sLastConfig.equals(cfg)) { sLastConfig = cfg; - sStatusTimeFormat = r.getString(com.android.internal.R.string.status_bar_time_format); + sStatusTimeFormat = java.text.DateFormat.getTimeInstance(java.text.DateFormat.SHORT); sElapsedFormatMMSS = r.getString(com.android.internal.R.string.elapsed_time_short_format_mm_ss); sElapsedFormatHMMSS = r.getString(com.android.internal.R.string.elapsed_time_short_format_h_mm_ss); } @@ -586,7 +635,7 @@ public class DateUtils */ public static final CharSequence timeString(long millis) { initFormatStrings(); - return DateFormat.format(sStatusTimeFormat, millis); + return sStatusTimeFormat.format(millis); } /** @@ -1066,7 +1115,9 @@ public class DateUtils * *

      * If FORMAT_CAP_AMPM is set and 12-hour time is used, then the "AM" - * and "PM" are capitalized. + * and "PM" are capitalized. You should not use this flag + * because in some locales these terms cannot be capitalized, and in + * many others it doesn't make sense to do so even though it is possible. * *

      * If FORMAT_NO_NOON is set and 12-hour time is used, then "12pm" is @@ -1074,15 +1125,19 @@ public class DateUtils * *

      * If FORMAT_CAP_NOON is set and 12-hour time is used, then "Noon" is - * shown instead of "noon". + * shown instead of "noon". You should probably not use this flag + * because in many locales it will not make sense to capitalize + * the term. * *

      * If FORMAT_NO_MIDNIGHT is set and 12-hour time is used, then "12am" is * shown instead of "midnight". * *

      - * If FORMAT_CAP_NOON is set and 12-hour time is used, then "Midnight" is - * shown instead of "midnight". + * If FORMAT_CAP_MIDNIGHT is set and 12-hour time is used, then "Midnight" + * is shown instead of "midnight". You should probably not use this + * flag because in many locales it will not make sense to capitalize + * the term. * *

      * If FORMAT_12HOUR is set and the time is shown, then the time is @@ -1224,8 +1279,8 @@ public class DateUtils use24Hour = DateFormat.is24HourFormat(context); } if (use24Hour) { - startTimeFormat = HOUR_MINUTE_24; - endTimeFormat = HOUR_MINUTE_24; + startTimeFormat = endTimeFormat = + res.getString(com.android.internal.R.string.hour_minute_24); } else { boolean abbrevTime = (flags & (FORMAT_ABBREV_TIME | FORMAT_ABBREV_ALL)) != 0; boolean capAMPM = (flags & FORMAT_CAP_AMPM) != 0; @@ -1392,7 +1447,8 @@ public class DateUtils if (numericDate) { monthFormat = NUMERIC_MONTH_FORMAT; } else if (abbrevMonth) { - monthFormat = ABBREV_MONTH_FORMAT; + monthFormat = + res.getString(com.android.internal.R.string.short_format_month); } else { monthFormat = MONTH_FORMAT; } diff --git a/core/java/android/text/format/Formatter.java b/core/java/android/text/format/Formatter.java index 1b30aa0a218c..367b26ce45d3 100644 --- a/core/java/android/text/format/Formatter.java +++ b/core/java/android/text/format/Formatter.java @@ -59,9 +59,15 @@ public final class Formatter { result = result / 1024; } if (result < 100) { - return String.format("%.2f%s", result, context.getText(suffix).toString()); + String value = String.format("%.2f", result); + return context.getResources(). + getString(com.android.internal.R.string.fileSizeSuffix, + value, context.getString(suffix)); } - return String.format("%.0f%s", result, context.getText(suffix).toString()); + String value = String.format("%.0f", result); + return context.getResources(). + getString(com.android.internal.R.string.fileSizeSuffix, + value, context.getString(suffix)); } /** diff --git a/core/java/android/text/format/Time.java b/core/java/android/text/format/Time.java index daa99c250bfa..8eae111ee5d3 100644 --- a/core/java/android/text/format/Time.java +++ b/core/java/android/text/format/Time.java @@ -135,6 +135,7 @@ public class Time { private static Locale sLocale; private static String[] sShortMonths; private static String[] sLongMonths; + private static String[] sLongStandaloneMonths; private static String[] sShortWeekdays; private static String[] sLongWeekdays; private static String sTimeOnlyFormat; @@ -321,6 +322,20 @@ public class Time { r.getString(com.android.internal.R.string.month_long_november), r.getString(com.android.internal.R.string.month_long_december), }; + sLongStandaloneMonths = new String[] { + r.getString(com.android.internal.R.string.month_long_standalone_january), + r.getString(com.android.internal.R.string.month_long_standalone_february), + r.getString(com.android.internal.R.string.month_long_standalone_march), + r.getString(com.android.internal.R.string.month_long_standalone_april), + r.getString(com.android.internal.R.string.month_long_standalone_may), + r.getString(com.android.internal.R.string.month_long_standalone_june), + r.getString(com.android.internal.R.string.month_long_standalone_july), + r.getString(com.android.internal.R.string.month_long_standalone_august), + r.getString(com.android.internal.R.string.month_long_standalone_september), + r.getString(com.android.internal.R.string.month_long_standalone_october), + r.getString(com.android.internal.R.string.month_long_standalone_november), + r.getString(com.android.internal.R.string.month_long_standalone_december), + }; sShortWeekdays = new String[] { r.getString(com.android.internal.R.string.day_of_week_medium_sunday), r.getString(com.android.internal.R.string.day_of_week_medium_monday), @@ -438,6 +453,7 @@ public class Time { * * @param s the string to parse * @return true if the resulting time value is in UTC time + * @throws android.util.TimeFormatException if s cannot be parsed. */ public boolean parse3339(String s) { if (nativeParse3339(s)) { diff --git a/core/java/android/text/method/DialerKeyListener.java b/core/java/android/text/method/DialerKeyListener.java index b121e608b5b5..584e83f53e53 100644 --- a/core/java/android/text/method/DialerKeyListener.java +++ b/core/java/android/text/method/DialerKeyListener.java @@ -106,7 +106,7 @@ public class DialerKeyListener extends NumberKeyListener */ public static final char[] CHARACTERS = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '#', '*', - '+', '-', '(', ')', ',', '/', 'N', '.', ' ' + '+', '-', '(', ')', ',', '/', 'N', '.', ' ', ';' }; private static DialerKeyListener sInstance; diff --git a/core/java/android/text/method/Touch.java b/core/java/android/text/method/Touch.java index f2fb9cb68d7f..dfc16f5adf7f 100644 --- a/core/java/android/text/method/Touch.java +++ b/core/java/android/text/method/Touch.java @@ -81,6 +81,12 @@ public class Touch { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: + ds = buffer.getSpans(0, buffer.length(), DragState.class); + + for (int i = 0; i < ds.length; i++) { + buffer.removeSpan(ds[i]); + } + buffer.setSpan(new DragState(event.getX(), event.getY(), widget.getScrollX(), widget.getScrollY()), 0, 0, Spannable.SPAN_MARK_MARK); diff --git a/core/java/android/util/CharsetUtils.java b/core/java/android/util/CharsetUtils.java index 75530296d2d9..9d91acaa5f87 100644 --- a/core/java/android/util/CharsetUtils.java +++ b/core/java/android/util/CharsetUtils.java @@ -142,20 +142,25 @@ public final class CharsetUtils { /** * Returns whether the given character set name indicates the Shift-JIS - * encoding. + * encoding. Returns false if the name is null. * * @param charsetName the character set name * @return {@code true} if the name corresponds to Shift-JIS or * {@code false} if not */ private static boolean isShiftJis(String charsetName) { - if (charsetName.length() != 9) { - // Bail quickly if the length doesn't match. + // Bail quickly if the length doesn't match. + if (charsetName == null) { + return false; + } + int length = charsetName.length(); + if (length != 4 && length != 9) { return false; } return charsetName.equalsIgnoreCase("shift_jis") - || charsetName.equalsIgnoreCase("shift-jis"); + || charsetName.equalsIgnoreCase("shift-jis") + || charsetName.equalsIgnoreCase("sjis"); } /** diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java index e4dd020e1a81..4179edbe7f9c 100644 --- a/core/java/android/util/DisplayMetrics.java +++ b/core/java/android/util/DisplayMetrics.java @@ -16,6 +16,8 @@ package android.util; +import android.content.res.CompatibilityInfo; +import android.content.res.Configuration; import android.os.*; @@ -35,8 +37,7 @@ public class DisplayMetrics { * The device's density. * @hide */ - public static final int DEVICE_DENSITY = SystemProperties.getInt("ro.sf.lcd_density", - DEFAULT_DENSITY); + public static final int DEVICE_DENSITY = getDeviceDensity(); /** * The absolute width of the display in pixels. @@ -101,22 +102,83 @@ public class DisplayMetrics { } /** - * Set the display metrics' density and update parameters depend on it. - * @hide + * Update the display metrics based on the compatibility info and orientation + * NOTE: DO NOT EXPOSE THIS API! It is introducing a circular dependency + * with the higher-level android.res package. + * {@hide} */ - public void updateDensity(float newDensity) { - float ratio = newDensity / density; - density = newDensity; - scaledDensity = density; - widthPixels *= ratio; - heightPixels *= ratio; - xdpi *= ratio; - ydpi *= ratio; + public void updateMetrics(CompatibilityInfo compatibilityInfo, int orientation, + int screenLayout) { + int xOffset = 0; + if (!compatibilityInfo.isConfiguredExpandable()) { + // Note: this assume that configuration is updated before calling + // updateMetrics method. + if (screenLayout == Configuration.SCREENLAYOUT_LARGE) { + // This is a large screen device and the app is not + // compatible with large screens, to diddle it. + + compatibilityInfo.setExpandable(false); + // Figure out the compatibility width and height of the screen. + int defaultWidth; + int defaultHeight; + switch (orientation) { + case Configuration.ORIENTATION_LANDSCAPE: { + defaultWidth = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_HEIGHT * density); + defaultHeight = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_WIDTH * density); + break; + } + case Configuration.ORIENTATION_PORTRAIT: + case Configuration.ORIENTATION_SQUARE: + default: { + defaultWidth = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_WIDTH * density); + defaultHeight = (int)(CompatibilityInfo.DEFAULT_PORTRAIT_HEIGHT * density); + break; + } + case Configuration.ORIENTATION_UNDEFINED: { + // don't change + return; + } + } + + if (defaultWidth < widthPixels) { + // content/window's x offset in original pixels + xOffset = ((widthPixels - defaultWidth) / 2); + widthPixels = defaultWidth; + } + if (defaultHeight < heightPixels) { + heightPixels = defaultHeight; + } + + } else { + // the screen size is same as expected size. make it expandable + compatibilityInfo.setExpandable(true); + } + } + compatibilityInfo.setVisibleRect(xOffset, widthPixels, heightPixels); + if (compatibilityInfo.isScalingRequired()) { + float invertedRatio = compatibilityInfo.applicationInvertedScale; + density *= invertedRatio; + scaledDensity *= invertedRatio; + xdpi *= invertedRatio; + ydpi *= invertedRatio; + widthPixels *= invertedRatio; + heightPixels *= invertedRatio; + } } + @Override public String toString() { return "DisplayMetrics{density=" + density + ", width=" + widthPixels + ", height=" + heightPixels + ", scaledDensity=" + scaledDensity + ", xdpi=" + xdpi + ", ydpi=" + ydpi + "}"; } + + private static int getDeviceDensity() { + // qemu.sf.lcd_density can be used to override ro.sf.lcd_density + // when running in the emulator, allowing for dynamic configurations. + // The reason for this is that ro.sf.lcd_density is write-once and is + // set by the init process when it parses build.prop before anything else. + return SystemProperties.getInt("qemu.sf.lcd_density", + SystemProperties.getInt("ro.sf.lcd_density", DEFAULT_DENSITY)); + } } diff --git a/core/java/android/util/LongSparseArray.java b/core/java/android/util/LongSparseArray.java new file mode 100644 index 000000000000..d90045f8625c --- /dev/null +++ b/core/java/android/util/LongSparseArray.java @@ -0,0 +1,342 @@ +/* + * 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.util; + +import com.android.internal.util.ArrayUtils; + +/** + * SparseArrays map longs to Objects. Unlike a normal array of Objects, + * there can be gaps in the indices. It is intended to be more efficient + * than using a HashMap to map Longs to Objects. + * + * @hide + */ +public class LongSparseArray { + private static final Object DELETED = new Object(); + private boolean mGarbage = false; + + /** + * Creates a new SparseArray containing no mappings. + */ + public LongSparseArray() { + this(10); + } + + /** + * Creates a new SparseArray containing no mappings that will not + * require any additional memory allocation to store the specified + * number of mappings. + */ + public LongSparseArray(int initialCapacity) { + initialCapacity = ArrayUtils.idealIntArraySize(initialCapacity); + + mKeys = new long[initialCapacity]; + mValues = new Object[initialCapacity]; + mSize = 0; + } + + /** + * Gets the Object mapped from the specified key, or null + * if no such mapping has been made. + */ + public E get(long key) { + return get(key, null); + } + + /** + * Gets the Object mapped from the specified key, or the specified Object + * if no such mapping has been made. + */ + public E get(long key, E valueIfKeyNotFound) { + int i = binarySearch(mKeys, 0, mSize, key); + + if (i < 0 || mValues[i] == DELETED) { + return valueIfKeyNotFound; + } else { + return (E) mValues[i]; + } + } + + /** + * Removes the mapping from the specified key, if there was any. + */ + public void delete(long key) { + int i = binarySearch(mKeys, 0, mSize, key); + + if (i >= 0) { + if (mValues[i] != DELETED) { + mValues[i] = DELETED; + mGarbage = true; + } + } + } + + /** + * Alias for {@link #delete(long)}. + */ + public void remove(long key) { + delete(key); + } + + private void gc() { + // Log.e("SparseArray", "gc start with " + mSize); + + int n = mSize; + int o = 0; + long[] keys = mKeys; + Object[] values = mValues; + + for (int i = 0; i < n; i++) { + Object val = values[i]; + + if (val != DELETED) { + if (i != o) { + keys[o] = keys[i]; + values[o] = val; + } + + o++; + } + } + + mGarbage = false; + mSize = o; + + // Log.e("SparseArray", "gc end with " + mSize); + } + + /** + * Adds a mapping from the specified key to the specified value, + * replacing the previous mapping from the specified key if there + * was one. + */ + public void put(long key, E value) { + int i = binarySearch(mKeys, 0, mSize, key); + + if (i >= 0) { + mValues[i] = value; + } else { + i = ~i; + + if (i < mSize && mValues[i] == DELETED) { + mKeys[i] = key; + mValues[i] = value; + return; + } + + if (mGarbage && mSize >= mKeys.length) { + gc(); + + // Search again because indices may have changed. + i = ~binarySearch(mKeys, 0, mSize, key); + } + + if (mSize >= mKeys.length) { + int n = ArrayUtils.idealIntArraySize(mSize + 1); + + long[] nkeys = new long[n]; + Object[] nvalues = new Object[n]; + + // Log.e("SparseArray", "grow " + mKeys.length + " to " + n); + System.arraycopy(mKeys, 0, nkeys, 0, mKeys.length); + System.arraycopy(mValues, 0, nvalues, 0, mValues.length); + + mKeys = nkeys; + mValues = nvalues; + } + + if (mSize - i != 0) { + // Log.e("SparseArray", "move " + (mSize - i)); + System.arraycopy(mKeys, i, mKeys, i + 1, mSize - i); + System.arraycopy(mValues, i, mValues, i + 1, mSize - i); + } + + mKeys[i] = key; + mValues[i] = value; + mSize++; + } + } + + /** + * Returns the number of key-value mappings that this SparseArray + * currently stores. + */ + public int size() { + if (mGarbage) { + gc(); + } + + return mSize; + } + + /** + * Given an index in the range 0...size()-1, returns + * the key from the indexth key-value mapping that this + * SparseArray stores. + */ + public long keyAt(int index) { + if (mGarbage) { + gc(); + } + + return mKeys[index]; + } + + /** + * Given an index in the range 0...size()-1, returns + * the value from the indexth key-value mapping that this + * SparseArray stores. + */ + public E valueAt(int index) { + if (mGarbage) { + gc(); + } + + return (E) mValues[index]; + } + + /** + * Given an index in the range 0...size()-1, sets a new + * value for the indexth key-value mapping that this + * SparseArray stores. + */ + public void setValueAt(int index, E value) { + if (mGarbage) { + gc(); + } + + mValues[index] = value; + } + + /** + * Returns the index for which {@link #keyAt} would return the + * specified key, or a negative number if the specified + * key is not mapped. + */ + public int indexOfKey(long key) { + if (mGarbage) { + gc(); + } + + return binarySearch(mKeys, 0, mSize, key); + } + + /** + * Returns an index for which {@link #valueAt} would return the + * specified key, or a negative number if no keys map to the + * specified value. + * Beware that this is a linear search, unlike lookups by key, + * and that multiple keys can map to the same value and this will + * find only one of them. + */ + public int indexOfValue(E value) { + if (mGarbage) { + gc(); + } + + for (int i = 0; i < mSize; i++) + if (mValues[i] == value) + return i; + + return -1; + } + + /** + * Removes all key-value mappings from this SparseArray. + */ + public void clear() { + int n = mSize; + Object[] values = mValues; + + for (int i = 0; i < n; i++) { + values[i] = null; + } + + mSize = 0; + mGarbage = false; + } + + /** + * Puts a key/value pair into the array, optimizing for the case where + * the key is greater than all existing keys in the array. + */ + public void append(long key, E value) { + if (mSize != 0 && key <= mKeys[mSize - 1]) { + put(key, value); + return; + } + + if (mGarbage && mSize >= mKeys.length) { + gc(); + } + + int pos = mSize; + if (pos >= mKeys.length) { + int n = ArrayUtils.idealIntArraySize(pos + 1); + + long[] nkeys = new long[n]; + Object[] nvalues = new Object[n]; + + // Log.e("SparseArray", "grow " + mKeys.length + " to " + n); + System.arraycopy(mKeys, 0, nkeys, 0, mKeys.length); + System.arraycopy(mValues, 0, nvalues, 0, mValues.length); + + mKeys = nkeys; + mValues = nvalues; + } + + mKeys[pos] = key; + mValues[pos] = value; + mSize = pos + 1; + } + + private static int binarySearch(long[] a, int start, int len, long key) { + int high = start + len, low = start - 1, guess; + + while (high - low > 1) { + guess = (high + low) / 2; + + if (a[guess] < key) + low = guess; + else + high = guess; + } + + if (high == start + len) + return ~(start + len); + else if (a[high] == key) + return high; + else + return ~high; + } + + private void checkIntegrity() { + for (int i = 1; i < mSize; i++) { + if (mKeys[i] <= mKeys[i - 1]) { + for (int j = 0; j < mSize; j++) { + Log.e("FAIL", j + ": " + mKeys[j] + " -> " + mValues[j]); + } + + throw new RuntimeException(); + } + } + } + + private long[] mKeys; + private Object[] mValues; + private int mSize; +} \ No newline at end of file diff --git a/core/java/android/view/GestureDetector.java b/core/java/android/view/GestureDetector.java index 23f3e3c3ece9..1e558be1ccc7 100644 --- a/core/java/android/view/GestureDetector.java +++ b/core/java/android/view/GestureDetector.java @@ -198,6 +198,7 @@ public class GestureDetector { private int mTouchSlopSquare; private int mDoubleTapSlopSquare; private int mMinimumFlingVelocity; + private int mMaximumFlingVelocity; private static final int LONGPRESS_TIMEOUT = ViewConfiguration.getLongPressTimeout(); private static final int TAP_TIMEOUT = ViewConfiguration.getTapTimeout(); @@ -361,11 +362,13 @@ public class GestureDetector { doubleTapSlop = ViewConfiguration.getDoubleTapSlop(); //noinspection deprecation mMinimumFlingVelocity = ViewConfiguration.getMinimumFlingVelocity(); + mMaximumFlingVelocity = ViewConfiguration.getMaximumFlingVelocity(); } else { final ViewConfiguration configuration = ViewConfiguration.get(context); touchSlop = configuration.getScaledTouchSlop(); doubleTapSlop = configuration.getScaledDoubleTapSlop(); mMinimumFlingVelocity = configuration.getScaledMinimumFlingVelocity(); + mMaximumFlingVelocity = configuration.getScaledMaximumFlingVelocity(); } mTouchSlopSquare = touchSlop * touchSlop; mDoubleTapSlopSquare = doubleTapSlop * doubleTapSlop; @@ -505,7 +508,7 @@ public class GestureDetector { // A fling must travel the minimum tap distance final VelocityTracker velocityTracker = mVelocityTracker; - velocityTracker.computeCurrentVelocity(1000); + velocityTracker.computeCurrentVelocity(1000, mMaximumFlingVelocity); final float velocityY = velocityTracker.getYVelocity(); final float velocityX = velocityTracker.getXVelocity(); diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java index 86261c4a7edb..a224ed306b0a 100644 --- a/core/java/android/view/MotionEvent.java +++ b/core/java/android/view/MotionEvent.java @@ -59,32 +59,32 @@ public final class MotionEvent implements Parcelable { public static final int ACTION_OUTSIDE = 4; private static final boolean TRACK_RECYCLED_LOCATION = false; - + /** * Flag indicating the motion event intersected the top edge of the screen. */ public static final int EDGE_TOP = 0x00000001; - + /** * Flag indicating the motion event intersected the bottom edge of the screen. */ public static final int EDGE_BOTTOM = 0x00000002; - + /** * Flag indicating the motion event intersected the left edge of the screen. */ public static final int EDGE_LEFT = 0x00000004; - + /** * Flag indicating the motion event intersected the right edge of the screen. */ public static final int EDGE_RIGHT = 0x00000008; - + static private final int MAX_RECYCLED = 10; static private Object gRecyclerLock = new Object(); static private int gRecyclerUsed = 0; static private MotionEvent gRecyclerTop = null; - + private long mDownTime; private long mEventTime; private int mAction; @@ -109,7 +109,7 @@ public final class MotionEvent implements Parcelable { private MotionEvent() { } - + static private MotionEvent obtain() { synchronized (gRecyclerLock) { if (gRecyclerTop == null) { @@ -123,26 +123,26 @@ public final class MotionEvent implements Parcelable { return ev; } } - + /** * Create a new MotionEvent, filling in all of the basic values that * define the motion. - * - * @param downTime The time (in ms) when the user originally pressed down to start + * + * @param downTime The time (in ms) when the user originally pressed down to start * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. - * @param eventTime The the time (in ms) when this specific event was generated. This + * @param eventTime The the time (in ms) when this specific event was generated. This * must be obtained from {@link SystemClock#uptimeMillis()}. * @param action The kind of action being performed -- one of either * {@link #ACTION_DOWN}, {@link #ACTION_MOVE}, {@link #ACTION_UP}, or * {@link #ACTION_CANCEL}. * @param x The X coordinate of this event. * @param y The Y coordinate of this event. - * @param pressure The current pressure of this event. The pressure generally - * ranges from 0 (no pressure at all) to 1 (normal pressure), however - * values higher than 1 may be generated depending on the calibration of + * @param pressure The current pressure of this event. The pressure generally + * ranges from 0 (no pressure at all) to 1 (normal pressure), however + * values higher than 1 may be generated depending on the calibration of * the input device. * @param size A scaled value of the approximate size of the area being pressed when - * touched with the finger. The actual value in pixels corresponding to the finger + * touched with the finger. The actual value in pixels corresponding to the finger * touch is normalized with a device specific range of values * and scaled to a value between 0 and 1. * @param metaState The state of any meta / modifier keys that were in effect when @@ -174,15 +174,15 @@ public final class MotionEvent implements Parcelable { return ev; } - + /** * Create a new MotionEvent, filling in a subset of the basic motion * values. Those not specified here are: device id (always 0), pressure * and size (always 1), x and y precision (always 1), and edgeFlags (always 0). - * - * @param downTime The time (in ms) when the user originally pressed down to start + * + * @param downTime The time (in ms) when the user originally pressed down to start * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. - * @param eventTime The the time (in ms) when this specific event was generated. This + * @param eventTime The the time (in ms) when this specific event was generated. This * must be obtained from {@link SystemClock#uptimeMillis()}. * @param action The kind of action being performed -- one of either * {@link #ACTION_DOWN}, {@link #ACTION_MOVE}, {@link #ACTION_UP}, or @@ -212,27 +212,47 @@ public final class MotionEvent implements Parcelable { } /** - * Scales down the cood of this event by the given scale. + * Scales down the coordination of this event by the given scale. * * @hide */ public void scale(float scale) { - if (scale != 1.0f) { - mX *= scale; - mY *= scale; - mRawX *= scale; - mRawY *= scale; - mSize *= scale; - mXPrecision *= scale; - mYPrecision *= scale; - if (mHistory != null) { - float[] history = mHistory; - int length = history.length; - for (int i = 0; i < length; i += 4) { - history[i] *= scale; - history[i + 2] *= scale; - history[i + 3] *= scale; - } + mX *= scale; + mY *= scale; + mRawX *= scale; + mRawY *= scale; + mSize *= scale; + mXPrecision *= scale; + mYPrecision *= scale; + if (mHistory != null) { + float[] history = mHistory; + int length = history.length; + for (int i = 0; i < length; i += 4) { + history[i] *= scale; // X + history[i + 1] *= scale; // Y + // no need to scale pressure ([i+2]) + history[i + 3] *= scale; // Size, TODO: square this? + } + } + } + + /** + * Translate the coordination of the event by given x and y. + * + * @hide + */ + public void translate(float dx, float dy) { + mX += dx; + mY += dy; + mRawX += dx; + mRawY += dx; + if (mHistory != null) { + float[] history = mHistory; + int length = history.length; + for (int i = 0; i < length; i += 4) { + history[i] += dx; // X + history[i + 1] += dy; // Y + // no need to translate pressure (i+2) and size (i+3) } } } @@ -265,7 +285,7 @@ public final class MotionEvent implements Parcelable { } return ev; } - + /** * Recycle the MotionEvent, to be re-used by a later caller. After calling * this function you must not ever touch the event again. @@ -291,7 +311,7 @@ public final class MotionEvent implements Parcelable { } } } - + /** * Return the kind of action being performed -- one of either * {@link #ACTION_DOWN}, {@link #ACTION_MOVE}, {@link #ACTION_UP}, or @@ -302,8 +322,8 @@ public final class MotionEvent implements Parcelable { } /** - * Returns the time (in ms) when the user originally pressed down to start - * a stream of position events. + * Returns the time (in ms) when the user originally pressed down to start + * a stream of position events. */ public final long getDownTime() { return mDownTime; @@ -317,25 +337,25 @@ public final class MotionEvent implements Parcelable { } /** - * Returns the X coordinate of this event. Whole numbers are pixels; the - * value may have a fraction for input devices that are sub-pixel precise. + * Returns the X coordinate of this event. Whole numbers are pixels; the + * value may have a fraction for input devices that are sub-pixel precise. */ public final float getX() { return mX; } /** - * Returns the Y coordinate of this event. Whole numbers are pixels; the - * value may have a fraction for input devices that are sub-pixel precise. + * Returns the Y coordinate of this event. Whole numbers are pixels; the + * value may have a fraction for input devices that are sub-pixel precise. */ public final float getY() { return mY; } /** - * Returns the current pressure of this event. The pressure generally - * ranges from 0 (no pressure at all) to 1 (normal pressure), however - * values higher than 1 may be generated depending on the calibration of + * Returns the current pressure of this event. The pressure generally + * ranges from 0 (no pressure at all) to 1 (normal pressure), however + * values higher than 1 may be generated depending on the calibration of * the input device. */ public final float getPressure() { @@ -344,9 +364,9 @@ public final class MotionEvent implements Parcelable { /** * Returns a scaled value of the approximate size, of the area being pressed when - * touched with the finger. The actual value in pixels corresponding to the finger + * touched with the finger. The actual value in pixels corresponding to the finger * touch is normalized with the device specific range of values - * and scaled to a value between 0 and 1. The value of size can be used to + * and scaled to a value between 0 and 1. The value of size can be used to * determine fat touch events. */ public final float getSize() { @@ -396,7 +416,7 @@ public final class MotionEvent implements Parcelable { public final float getXPrecision() { return mXPrecision; } - + /** * Return the precision of the Y coordinates being reported. You can * multiple this number with {@link #getY} to find the actual hardware @@ -406,89 +426,89 @@ public final class MotionEvent implements Parcelable { public final float getYPrecision() { return mYPrecision; } - + /** * Returns the number of historical points in this event. These are * movements that have occurred between this event and the previous event. * This only applies to ACTION_MOVE events -- all other actions will have * a size of 0. - * + * * @return Returns the number of historical points in the event. */ public final int getHistorySize() { return mNumHistory; } - + /** * Returns the time that a historical movement occurred between this event * and the previous event. Only applies to ACTION_MOVE events. - * + * * @param pos Which historical value to return; must be less than * {@link #getHistorySize} - * + * * @see #getHistorySize * @see #getEventTime */ public final long getHistoricalEventTime(int pos) { return mHistoryTimes[pos]; } - + /** * Returns a historical X coordinate that occurred between this event * and the previous event. Only applies to ACTION_MOVE events. - * + * * @param pos Which historical value to return; must be less than * {@link #getHistorySize} - * + * * @see #getHistorySize * @see #getX */ public final float getHistoricalX(int pos) { return mHistory[pos*4]; } - + /** * Returns a historical Y coordinate that occurred between this event * and the previous event. Only applies to ACTION_MOVE events. - * + * * @param pos Which historical value to return; must be less than * {@link #getHistorySize} - * + * * @see #getHistorySize * @see #getY */ public final float getHistoricalY(int pos) { return mHistory[pos*4 + 1]; } - + /** * Returns a historical pressure coordinate that occurred between this event * and the previous event. Only applies to ACTION_MOVE events. - * + * * @param pos Which historical value to return; must be less than * {@link #getHistorySize} - * + * * @see #getHistorySize * @see #getPressure */ public final float getHistoricalPressure(int pos) { return mHistory[pos*4 + 2]; } - + /** * Returns a historical size coordinate that occurred between this event * and the previous event. Only applies to ACTION_MOVE events. - * + * * @param pos Which historical value to return; must be less than * {@link #getHistorySize} - * + * * @see #getHistorySize * @see #getSize */ public final float getHistoricalSize(int pos) { return mHistory[pos*4 + 3]; } - + /** * Return the id for the device that this event came from. An id of * zero indicates that the event didn't come from a physical device; other @@ -497,12 +517,12 @@ public final class MotionEvent implements Parcelable { public final int getDeviceId() { return mDeviceId; } - + /** * Returns a bitfield indicating which edges, if any, where touched by this - * MotionEvent. For touch events, clients can use this to determine if the - * user's finger was touching the edge of the display. - * + * MotionEvent. For touch events, clients can use this to determine if the + * user's finger was touching the edge of the display. + * * @see #EDGE_LEFT * @see #EDGE_TOP * @see #EDGE_RIGHT @@ -511,12 +531,12 @@ public final class MotionEvent implements Parcelable { public final int getEdgeFlags() { return mEdgeFlags; } - + /** * Sets the bitfield indicating which edges, if any, where touched by this - * MotionEvent. - * + * MotionEvent. + * * @see #getEdgeFlags() */ public final void setEdgeFlags(int flags) { @@ -548,11 +568,11 @@ public final class MotionEvent implements Parcelable { pos[i+1] += deltaY; } } - + /** * Set this event's location. Applies {@link #offsetLocation} with a * delta from the current location to the given new location. - * + * * @param x New absolute X location. * @param y New absolute Y location. */ @@ -563,13 +583,13 @@ public final class MotionEvent implements Parcelable { offsetLocation(deltaX, deltaY); } } - + /** * Add a new movement to the batch of movements in this event. The event's * current location, position and size is updated to the new values. In * the future, the current values in the event will be added to a list of * historic values. - * + * * @param x The new X position. * @param y The new Y position. * @param pressure The new pressure. @@ -599,16 +619,16 @@ public final class MotionEvent implements Parcelable { mHistoryTimes = historyTimes = newHistoryTimes; } } - + historyTimes[N] = mEventTime; - + final int pos = N*4; history[pos] = mX; history[pos+1] = mY; history[pos+2] = mPressure; history[pos+3] = mSize; mNumHistory = N+1; - + mEventTime = eventTime; mX = mRawX = x; mY = mRawY = y; @@ -616,7 +636,7 @@ public final class MotionEvent implements Parcelable { mSize = size; mMetaState |= metaState; } - + @Override public String toString() { return "MotionEvent{" + Integer.toHexString(System.identityHashCode(this)) diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 3d023f7a9691..45b0f0a79082 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -17,6 +17,8 @@ package android.view; import android.content.Context; +import android.content.res.CompatibilityInfo; +import android.content.res.CompatibilityInfo.Translator; import android.graphics.Canvas; import android.graphics.PixelFormat; import android.graphics.PorterDuff; @@ -100,6 +102,8 @@ public class SurfaceView extends View { static final int KEEP_SCREEN_ON_MSG = 1; static final int GET_NEW_SURFACE_MSG = 2; + int mWindowType = WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA; + boolean mIsCreating = false; final Handler mHandler = new Handler() { @@ -135,28 +139,21 @@ public class SurfaceView extends View { int mFormat = -1; int mType = -1; final Rect mSurfaceFrame = new Rect(); - private final float mAppScale; - private final float mAppScaleInverted; + private Translator mTranslator; public SurfaceView(Context context) { super(context); setWillNotDraw(true); - mAppScale = context.getApplicationScale(); - mAppScaleInverted = 1.0f / mAppScale; } public SurfaceView(Context context, AttributeSet attrs) { super(context, attrs); setWillNotDraw(true); - mAppScale = context.getApplicationScale(); - mAppScaleInverted = 1.0f / mAppScale; } public SurfaceView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setWillNotDraw(true); - mAppScale = context.getApplicationScale(); - mAppScaleInverted = 1.0f / mAppScale; } /** @@ -259,9 +256,9 @@ public class SurfaceView extends View { public boolean dispatchTouchEvent(MotionEvent event) { // SurfaceView uses pre-scaled size unless fixed size is requested. This hook // scales the event back to the pre-scaled coordinates for such surface. - if (mRequestedWidth < 0 && mAppScale != 1.0f) { + if (mRequestedWidth < 0 && mTranslator != null) { MotionEvent scaledBack = MotionEvent.obtain(event); - scaledBack.scale(mAppScale); + scaledBack.scale(mTranslator.applicationScale); try { return super.dispatchTouchEvent(scaledBack); } finally { @@ -285,20 +282,33 @@ public class SurfaceView extends View { super.dispatchDraw(canvas); } + /** + * Hack to allow special layering of windows. The type is one of the + * types in WindowManager.LayoutParams. This is a hack so: + * @hide + */ + public void setWindowType(int type) { + mWindowType = type; + } + private void updateWindow(boolean force) { if (!mHaveFrame) { return; } + mTranslator = ((ViewRoot)getRootView().getParent()).mTranslator; + + float appScale = mTranslator == null ? 1.0f : mTranslator.applicationScale; int myWidth = mRequestedWidth; if (myWidth <= 0) myWidth = getWidth(); int myHeight = mRequestedHeight; if (myHeight <= 0) myHeight = getHeight(); - // Use original size for surface unless fixed size is requested. - if (mRequestedWidth <= 0) { - myWidth *= mAppScale; - myHeight *= mAppScale; + // Use original size if the app specified the size of the view, + // and let the flinger to scale up. + if (mRequestedWidth <= 0 && mTranslator != null && mTranslator.scalingRequired) { + myWidth *= appScale; + myHeight *= appScale; } getLocationInWindow(mLocation); @@ -316,7 +326,7 @@ public class SurfaceView extends View { + " visible=" + visibleChanged + " left=" + (mLeft != mLocation[0]) + " top=" + (mTop != mLocation[1])); - + try { final boolean visible = mVisible = mRequestedVisible; mLeft = mLocation[0]; @@ -326,23 +336,30 @@ public class SurfaceView extends View { mFormat = mRequestedFormat; mType = mRequestedType; - // Scaling window's layout here beause mLayout is not used elsewhere. - mLayout.x = (int) (mLeft * mAppScale); - mLayout.y = (int) (mTop * mAppScale); - mLayout.width = (int) (getWidth() * mAppScale); - mLayout.height = (int) (getHeight() * mAppScale); + // Scaling/Translate window's layout here because mLayout is not used elsewhere. + + // Places the window relative + mLayout.x = mLeft; + mLayout.y = mTop; + mLayout.width = getWidth(); + mLayout.height = getHeight(); + if (mTranslator != null) { + mTranslator.translateLayoutParamsInAppWindowToScreen(mLayout); + } + mLayout.format = mRequestedFormat; mLayout.flags |=WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS | WindowManager.LayoutParams.FLAG_SCALED | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE + | WindowManager.LayoutParams.FLAG_NO_COMPATIBILITY_SCALING ; mLayout.memoryType = mRequestedType; if (mWindow == null) { mWindow = new MyWindow(this); - mLayout.type = WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA; + mLayout.type = mWindowType; mLayout.gravity = Gravity.LEFT|Gravity.TOP; mSession.add(mWindow, mLayout, mVisible ? VISIBLE : GONE, mContentInsets); @@ -356,15 +373,12 @@ public class SurfaceView extends View { mSurfaceLock.lock(); mDrawingStopped = !visible; + final int relayoutResult = mSession.relayout( mWindow, mLayout, mWidth, mHeight, visible ? VISIBLE : GONE, false, mWinFrame, mContentInsets, mVisibleInsets, mSurface); - mContentInsets.scale(mAppScaleInverted); - mVisibleInsets.scale(mAppScaleInverted); - mWinFrame.scale(mAppScaleInverted); - if (localLOGV) Log.i(TAG, "New surface: " + mSurface + ", vis=" + visible + ", frame=" + mWinFrame); mSurfaceFrame.left = 0; @@ -433,24 +447,14 @@ public class SurfaceView extends View { private static class MyWindow extends IWindow.Stub { private final WeakReference mSurfaceView; - private final float mAppScale; - private final float mAppScaleInverted; public MyWindow(SurfaceView surfaceView) { mSurfaceView = new WeakReference(surfaceView); - mAppScale = surfaceView.getContext().getApplicationScale(); - mAppScaleInverted = 1.0f / mAppScale; } public void resized(int w, int h, Rect coveredInsets, Rect visibleInsets, boolean reportDraw) { SurfaceView surfaceView = mSurfaceView.get(); - float scale = mAppScaleInverted; - w *= scale; - h *= scale; - coveredInsets.scale(scale); - visibleInsets.scale(scale); - if (surfaceView != null) { if (localLOGV) Log.v( "SurfaceView", surfaceView + " got resized: w=" + @@ -613,7 +617,6 @@ public class SurfaceView extends View { Canvas c = null; if (!mDrawingStopped && mWindow != null) { Rect frame = dirty != null ? dirty : mSurfaceFrame; - frame.scale(mAppScale); try { c = mSurface.lockCanvas(frame); } catch (Exception e) { diff --git a/core/java/android/view/VelocityTracker.java b/core/java/android/view/VelocityTracker.java index c708f547642a..5d89c46a3db1 100644 --- a/core/java/android/view/VelocityTracker.java +++ b/core/java/android/view/VelocityTracker.java @@ -165,7 +165,17 @@ public final class VelocityTracker implements Poolable { pastTime[i] = 0; } } - + + /** + * Equivalent to invoking {@link #computeCurrentVelocity(int, float)} with a maximum + * velocity of Float.MAX_VALUE. + * + * @see #computeCurrentVelocity(int, float) + */ + public void computeCurrentVelocity(int units) { + computeCurrentVelocity(units, Float.MAX_VALUE); + } + /** * Compute the current velocity based on the points that have been * collected. Only call this when you actually want to retrieve velocity @@ -175,8 +185,11 @@ public final class VelocityTracker implements Poolable { * * @param units The units you would like the velocity in. A value of 1 * provides pixels per millisecond, 1000 provides pixels per second, etc. + * @param maxVelocity The maximum velocity that can be computed by this method. + * This value must be declared in the same unit as the units parameter. This value + * must be positive. */ - public void computeCurrentVelocity(int units) { + public void computeCurrentVelocity(int units, float maxVelocity) { final float[] pastX = mPastX; final float[] pastY = mPastY; final long[] pastTime = mPastTime; @@ -210,8 +223,8 @@ public final class VelocityTracker implements Poolable { if (accumY == 0) accumY = vel; else accumY = (accumY + vel) * .5f; } - mXVelocity = accumX; - mYVelocity = accumY; + mXVelocity = accumX < 0.0f ? Math.max(accumX, -maxVelocity) : Math.min(accumX, maxVelocity); + mYVelocity = accumY < 0.0f ? Math.max(accumY, -maxVelocity) : Math.min(accumY, maxVelocity); if (localLOGV) Log.v(TAG, "Y velocity=" + mYVelocity +" X velocity=" + mXVelocity + " N=" + N); diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 9e709cfd1f47..ff8868bb0f2f 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -16,6 +16,9 @@ package android.view; +import com.android.internal.R; +import com.android.internal.view.menu.MenuBuilder; + import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; @@ -25,12 +28,12 @@ import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PixelFormat; +import android.graphics.Point; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.Region; import android.graphics.Shader; -import android.graphics.Point; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Handler; @@ -42,47 +45,47 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.SystemProperties; import android.util.AttributeSet; +import android.util.Config; import android.util.EventLog; import android.util.Log; -import android.util.SparseArray; -import android.util.Poolable; import android.util.Pool; -import android.util.Pools; +import android.util.Poolable; import android.util.PoolableManager; -import android.util.Config; +import android.util.Pools; +import android.util.SparseArray; import android.view.ContextMenu.ContextMenuInfo; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityEventSource; +import android.view.accessibility.AccessibilityManager; import android.view.animation.Animation; +import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; -import android.view.inputmethod.EditorInfo; import android.widget.ScrollBarDrawable; -import com.android.internal.R; -import com.android.internal.view.menu.MenuBuilder; - +import java.lang.ref.SoftReference; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.WeakHashMap; -import java.lang.ref.SoftReference; -import java.lang.reflect.Method; -import java.lang.reflect.InvocationTargetException; /** *

      * This class represents the basic building block for user interface components. A View * occupies a rectangular area on the screen and is responsible for drawing and * event handling. View is the base class for widgets, which are - * used to create interactive UI components (buttons, text fields, etc.). The + * used to create interactive UI components (buttons, text fields, etc.). The * {@link android.view.ViewGroup} subclass is the base class for layouts, which * are invisible containers that hold other Views (or other ViewGroups) and define * their layout properties. *

      * *
      - *

      For an introduction to using this class to develop your - * application's user interface, read the Developer Guide documentation on + *

      For an introduction to using this class to develop your + * application's user interface, read the Developer Guide documentation on * User Interface. Special topics - * include: + * include: *
      Declaring Layout *
      Creating Menus *
      Common Layout Objects @@ -93,7 +96,7 @@ import java.lang.reflect.InvocationTargetException; *
      How Android Draws Views. *

      *
      - * + * * *

      Using Views

      *

      @@ -419,7 +422,7 @@ import java.lang.reflect.InvocationTargetException; *

      * *

      - * Note that the framework will not draw views that are not in the invalid region. + * Note that the framework will not draw views that are not in the invalid region. *

      * *

      @@ -535,25 +538,52 @@ import java.lang.reflect.InvocationTargetException; * take care of redrawing the appropriate views until the animation completes. *

      * + * @attr ref android.R.styleable#View_background + * @attr ref android.R.styleable#View_clickable + * @attr ref android.R.styleable#View_contentDescription + * @attr ref android.R.styleable#View_drawingCacheQuality + * @attr ref android.R.styleable#View_duplicateParentState + * @attr ref android.R.styleable#View_id + * @attr ref android.R.styleable#View_fadingEdge + * @attr ref android.R.styleable#View_fadingEdgeLength * @attr ref android.R.styleable#View_fitsSystemWindows + * @attr ref android.R.styleable#View_isScrollContainer + * @attr ref android.R.styleable#View_focusable + * @attr ref android.R.styleable#View_focusableInTouchMode + * @attr ref android.R.styleable#View_hapticFeedbackEnabled + * @attr ref android.R.styleable#View_keepScreenOn + * @attr ref android.R.styleable#View_longClickable + * @attr ref android.R.styleable#View_minHeight + * @attr ref android.R.styleable#View_minWidth * @attr ref android.R.styleable#View_nextFocusDown * @attr ref android.R.styleable#View_nextFocusLeft * @attr ref android.R.styleable#View_nextFocusRight * @attr ref android.R.styleable#View_nextFocusUp + * @attr ref android.R.styleable#View_onClick + * @attr ref android.R.styleable#View_padding + * @attr ref android.R.styleable#View_paddingBottom + * @attr ref android.R.styleable#View_paddingLeft + * @attr ref android.R.styleable#View_paddingRight + * @attr ref android.R.styleable#View_paddingTop + * @attr ref android.R.styleable#View_saveEnabled * @attr ref android.R.styleable#View_scrollX * @attr ref android.R.styleable#View_scrollY - * @attr ref android.R.styleable#View_scrollbarTrackHorizontal - * @attr ref android.R.styleable#View_scrollbarThumbHorizontal * @attr ref android.R.styleable#View_scrollbarSize + * @attr ref android.R.styleable#View_scrollbarStyle * @attr ref android.R.styleable#View_scrollbars + * @attr ref android.R.styleable#View_scrollbarTrackHorizontal + * @attr ref android.R.styleable#View_scrollbarThumbHorizontal * @attr ref android.R.styleable#View_scrollbarThumbVertical * @attr ref android.R.styleable#View_scrollbarTrackVertical * @attr ref android.R.styleable#View_scrollbarAlwaysDrawHorizontalTrack * @attr ref android.R.styleable#View_scrollbarAlwaysDrawVerticalTrack + * @attr ref android.R.styleable#View_soundEffectsEnabled + * @attr ref android.R.styleable#View_tag + * @attr ref android.R.styleable#View_visibility * * @see android.view.ViewGroup */ -public class View implements Drawable.Callback, KeyEvent.Callback { +public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource { private static final boolean DBG = false; /** @@ -850,6 +880,18 @@ public class View implements Drawable.Callback, KeyEvent.Callback { */ public static final int HAPTIC_FEEDBACK_ENABLED = 0x10000000; + /** + * View flag indicating whether {@link #addFocusables(ArrayList, int, int)} + * should add all focusable Views regardless if they are focusable in touch mode. + */ + public static final int FOCUSABLES_ALL = 0x00000000; + + /** + * View flag indicating whether {@link #addFocusables(ArrayList, int, int)} + * should add only Views focusable in touch mode. + */ + public static final int FOCUSABLES_TOUCH_MODE = 0x00000001; + /** * Use with {@link #focusSearch}. Move focus to the previous selectable * item. @@ -1427,6 +1469,27 @@ public class View implements Drawable.Callback, KeyEvent.Callback { */ static final int DIRTY_MASK = 0x00600000; + /** + * Indicates whether the background is opaque. + * + * @hide + */ + static final int OPAQUE_BACKGROUND = 0x00800000; + + /** + * Indicates whether the scrollbars are opaque. + * + * @hide + */ + static final int OPAQUE_SCROLLBARS = 0x01000000; + + /** + * Indicates whether the view is opaque. + * + * @hide + */ + static final int OPAQUE_MASK = 0x01800000; + /** * The parent this view is attached to. * {@hide} @@ -1449,7 +1512,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { @ViewDebug.FlagToString(mask = LAYOUT_REQUIRED, equals = LAYOUT_REQUIRED, name = "LAYOUT_REQUIRED"), @ViewDebug.FlagToString(mask = DRAWING_CACHE_VALID, equals = DRAWING_CACHE_VALID, - name = "DRAWING_CACHE_VALID", outputIf = false), + name = "DRAWING_CACHE_INVALID", outputIf = false), @ViewDebug.FlagToString(mask = DRAWN, equals = DRAWN, name = "DRAWN", outputIf = true), @ViewDebug.FlagToString(mask = DRAWN, equals = DRAWN, name = "NOT_DRAWN", outputIf = false), @ViewDebug.FlagToString(mask = DIRTY_MASK, equals = DIRTY_OPAQUE, name = "DIRTY_OPAQUE"), @@ -1550,6 +1613,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback { @ViewDebug.ExportedProperty protected int mPaddingBottom; + /** + * Briefly describes the view and is primarily used for accessibility support. + */ + private CharSequence mContentDescription; + /** * Cache the paddingRight set by the user to append to the scrollbar's size. */ @@ -1622,6 +1690,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { private int[] mDrawableState = null; private SoftReference mDrawingCache; + private SoftReference mUnscaledDrawingCache; /** * When this view has focus and the next focus is {@link #FOCUS_LEFT}, @@ -1701,7 +1770,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { public View(Context context) { mContext = context; mResources = context != null ? context.getResources() : null; - mViewFlags = SOUND_EFFECTS_ENABLED|HAPTIC_FEEDBACK_ENABLED; + mViewFlags = SOUND_EFFECTS_ENABLED | HAPTIC_FEEDBACK_ENABLED; ++sInstanceCount; } @@ -1762,7 +1831,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { int viewFlagMasks = 0; boolean setScrollContainer = false; - + int x = 0; int y = 0; @@ -1858,16 +1927,21 @@ public class View implements Drawable.Callback, KeyEvent.Callback { viewFlagMasks |= DRAWING_CACHE_QUALITY_MASK; } break; + case com.android.internal.R.styleable.View_contentDescription: + mContentDescription = a.getString(attr); + break; case com.android.internal.R.styleable.View_soundEffectsEnabled: if (!a.getBoolean(attr, true)) { viewFlagValues &= ~SOUND_EFFECTS_ENABLED; viewFlagMasks |= SOUND_EFFECTS_ENABLED; } + break; case com.android.internal.R.styleable.View_hapticFeedbackEnabled: if (!a.getBoolean(attr, true)) { viewFlagValues &= ~HAPTIC_FEEDBACK_ENABLED; viewFlagMasks |= HAPTIC_FEEDBACK_ENABLED; } + break; case R.styleable.View_scrollbars: final int scrollbars = a.getInt(attr, SCROLLBARS_NONE); if (scrollbars != SCROLLBARS_NONE) { @@ -1922,6 +1996,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback { mMinHeight = a.getDimensionPixelSize(attr, 0); break; case R.styleable.View_onClick: + if (context.isRestricted()) { + throw new IllegalStateException("The android:onClick attribute cannot " + + "be used within a restricted context"); + } + final String handlerName = a.getString(attr); if (handlerName != null) { setOnClickListener(new OnClickListener() { @@ -1990,7 +2069,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback { if (!setScrollContainer && (viewFlagValues&SCROLLBARS_VERTICAL) != 0) { setScrollContainer(true); } - + + computeOpaqueFlags(); + a.recycle(); } @@ -2255,6 +2336,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * otherwise is returned. */ public boolean performClick() { + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); + if (mOnClickListener != null) { playSoundEffect(SoundEffectConstants.CLICK); mOnClickListener.onClick(this); @@ -2272,6 +2355,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * otherwise is returned. */ public boolean performLongClick() { + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED); + boolean handled = false; if (mOnLongClickListener != null) { handled = mOnLongClickListener.onLongClick(View.this); @@ -2387,7 +2472,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { if (!(parent instanceof View)) { break; } - + child = (View) parent; parent = child.getParent(); } @@ -2479,7 +2564,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * and previouslyFocusedRect provide insight into where the focus is coming from. * When overriding, be sure to call up through to the super class so that * the standard focus handling will occur. - * + * * @param gainFocus True if the View has focus; false otherwise. * @param direction The direction focus has moved when requestFocus() * is called to give this view focus. Values are @@ -2492,6 +2577,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * from (in addition to direction). Will be null otherwise. */ protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) { + if (gainFocus) { + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); + } + InputMethodManager imm = InputMethodManager.peekInstance(); if (!gainFocus) { if (isPressed()) { @@ -2506,13 +2595,86 @@ public class View implements Drawable.Callback, KeyEvent.Callback { && mAttachInfo.mHasWindowFocus) { imm.focusIn(this); } - + invalidate(); if (mOnFocusChangeListener != null) { mOnFocusChangeListener.onFocusChange(this, gainFocus); } } + /** + * {@inheritDoc} + */ + public void sendAccessibilityEvent(int eventType) { + if (AccessibilityManager.getInstance(mContext).isEnabled()) { + sendAccessibilityEventUnchecked(AccessibilityEvent.obtain(eventType)); + } + } + + /** + * {@inheritDoc} + */ + public void sendAccessibilityEventUnchecked(AccessibilityEvent event) { + event.setClassName(getClass().getName()); + event.setPackageName(getContext().getPackageName()); + event.setEnabled(isEnabled()); + event.setContentDescription(mContentDescription); + + if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_FOCUSED && mAttachInfo != null) { + ArrayList focusablesTempList = mAttachInfo.mFocusablesTempList; + getRootView().addFocusables(focusablesTempList, View.FOCUS_FORWARD, FOCUSABLES_ALL); + event.setItemCount(focusablesTempList.size()); + event.setCurrentItemIndex(focusablesTempList.indexOf(this)); + focusablesTempList.clear(); + } + + dispatchPopulateAccessibilityEvent(event); + + AccessibilityManager.getInstance(mContext).sendAccessibilityEvent(event); + } + + /** + * Dispatches an {@link AccessibilityEvent} to the {@link View} children + * to be populated. + * + * @param event The event. + * + * @return True if the event population was completed. + */ + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { + return false; + } + + /** + * Gets the {@link View} description. It briefly describes the view and is + * primarily used for accessibility support. Set this property to enable + * better accessibility support for your application. This is especially + * true for views that do not have textual representation (For example, + * ImageButton). + * + * @return The content descriptiopn. + * + * @attr ref android.R.styleable#View_contentDescription + */ + public CharSequence getContentDescription() { + return mContentDescription; + } + + /** + * Sets the {@link View} description. It briefly describes the view and is + * primarily used for accessibility support. Set this property to enable + * better accessibility support for your application. This is especially + * true for views that do not have textual representation (For example, + * ImageButton). + * + * @param contentDescription The content description. + * + * @attr ref android.R.styleable#View_contentDescription + */ + public void setContentDescription(CharSequence contentDescription) { + mContentDescription = contentDescription; + } + /** * Invoked whenever this view loses focus, either by losing window focus or by losing * focus within its window. This method can be used to clear any state tied to the @@ -2522,7 +2684,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * Subclasses of View overriding this method should always call super.onFocusLost(). * * @see #onFocusChanged(boolean, int, android.graphics.Rect) - * @see #onWindowFocusChanged(boolean) + * @see #onWindowFocusChanged(boolean) * * @hide pending API council approval */ @@ -3222,11 +3384,37 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * @param direction The direction of the focus */ public void addFocusables(ArrayList views, int direction) { - if (!isFocusable()) return; + addFocusables(views, direction, FOCUSABLES_TOUCH_MODE); + } - if (isInTouchMode() && !isFocusableInTouchMode()) return; + /** + * Adds any focusable views that are descendants of this view (possibly + * including this view if it is focusable itself) to views. This method + * adds all focusable views regardless if we are in touch mode or + * only views focusable in touch mode if we are in touch mode depending on + * the focusable mode paramater. + * + * @param views Focusable views found so far or null if all we are interested is + * the number of focusables. + * @param direction The direction of the focus. + * @param focusableMode The type of focusables to be added. + * + * @see #FOCUSABLES_ALL + * @see #FOCUSABLES_TOUCH_MODE + */ + public void addFocusables(ArrayList views, int direction, int focusableMode) { + if (!isFocusable()) { + return; + } - views.add(this); + if ((focusableMode & FOCUSABLES_TOUCH_MODE) == FOCUSABLES_TOUCH_MODE && + isInTouchMode() && !isFocusableInTouchMode()) { + return; + } + + if (views != null) { + views.add(this); + } } /** @@ -3398,14 +3586,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback { */ public void onStartTemporaryDetach() { } - + /** * Called after {@link #onStartTemporaryDetach} when the container is done * changing the view. */ public void onFinishTemporaryDetach() { } - + /** * capture information of this view for later analysis: developement only * check dynamic switch to make sure we only dump view @@ -3790,25 +3978,25 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * a call on that method would return a non-null InputConnection, and * they are really a first-class editor that the user would normally * start typing on when the go into a window containing your view. - * + * *

      The default implementation always returns false. This does * not mean that its {@link #onCreateInputConnection(EditorInfo)} * will not be called or the user can not otherwise perform edits on your * view; it is just a hint to the system that this is not the primary * purpose of this view. - * + * * @return Returns true if this view is a text editor, else false. */ public boolean onCheckIsTextEditor() { return false; } - + /** * Create a new InputConnection for an InputMethod to interact * with the view. The default implementation returns null, since it doesn't * support input methods. You can override this to implement such support. * This is only needed for views that take focus and text input. - * + * *

      When implementing this, you probably also want to implement * {@link #onCheckIsTextEditor()} to indicate you will return a * non-null InputConnection. @@ -3832,7 +4020,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { public boolean checkInputConnectionProxy(View view) { return false; } - + /** * Show the context menu for this view. It is not safe to hold on to the * menu after returning from this method. @@ -4563,14 +4751,42 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * whether an instance is opaque. Opaque Views are treated in a special way by * the View hierarchy, possibly allowing it to perform optimizations during * invalidate/draw passes. - * + * * @return True if this View is guaranteed to be fully opaque, false otherwise. * * @hide Pending API council approval */ @ViewDebug.ExportedProperty public boolean isOpaque() { - return mBGDrawable != null && mBGDrawable.getOpacity() == PixelFormat.OPAQUE; + return (mPrivateFlags & OPAQUE_MASK) == OPAQUE_MASK; + } + + private void computeOpaqueFlags() { + // Opaque if: + // - Has a background + // - Background is opaque + // - Doesn't have scrollbars or scrollbars are inside overlay + + if (mBGDrawable != null && mBGDrawable.getOpacity() == PixelFormat.OPAQUE) { + mPrivateFlags |= OPAQUE_BACKGROUND; + } else { + mPrivateFlags &= ~OPAQUE_BACKGROUND; + } + + final int flags = mViewFlags; + if (((flags & SCROLLBARS_VERTICAL) == 0 && (flags & SCROLLBARS_HORIZONTAL) == 0) || + (flags & SCROLLBARS_STYLE_MASK) == SCROLLBARS_INSIDE_OVERLAY) { + mPrivateFlags |= OPAQUE_SCROLLBARS; + } else { + mPrivateFlags &= ~OPAQUE_SCROLLBARS; + } + } + + /** + * @hide + */ + protected boolean hasOpaqueScrollbars() { + return (mPrivateFlags & OPAQUE_SCROLLBARS) == OPAQUE_SCROLLBARS; } /** @@ -4897,6 +5113,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { public void setHorizontalScrollBarEnabled(boolean horizontalScrollBarEnabled) { if (isHorizontalScrollBarEnabled() != horizontalScrollBarEnabled) { mViewFlags ^= SCROLLBARS_HORIZONTAL; + computeOpaqueFlags(); recomputePadding(); } } @@ -4926,6 +5143,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { public void setVerticalScrollBarEnabled(boolean verticalScrollBarEnabled) { if (isVerticalScrollBarEnabled() != verticalScrollBarEnabled) { mViewFlags ^= SCROLLBARS_VERTICAL; + computeOpaqueFlags(); recomputePadding(); } } @@ -4954,6 +5172,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { public void setScrollBarStyle(int style) { if (style != (mViewFlags & SCROLLBARS_STYLE_MASK)) { mViewFlags = (mViewFlags & ~SCROLLBARS_STYLE_MASK) | (style & SCROLLBARS_STYLE_MASK); + computeOpaqueFlags(); recomputePadding(); } } @@ -5132,9 +5351,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback { } } } - + /** - * Override this if the vertical scrollbar needs to be hidden in a subclass, like when + * Override this if the vertical scrollbar needs to be hidden in a subclass, like when * FastScroller is visible. * @return whether to temporarily hide the vertical scrollbar * @hide @@ -5569,6 +5788,17 @@ public class View implements Drawable.Callback, KeyEvent.Callback { return (mViewFlags & DRAWING_CACHE_ENABLED) == DRAWING_CACHE_ENABLED; } + /** + *

      Calling this method is equivalent to calling getDrawingCache(false).

      + * + * @return A non-scaled bitmap representing this view or null if cache is disabled. + * + * @see #getDrawingCache(boolean) + */ + public Bitmap getDrawingCache() { + return getDrawingCache(false); + } + /** *

      Returns the bitmap in which this view drawing is cached. The returned bitmap * is null when caching is disabled. If caching is enabled and the cache is not ready, @@ -5576,22 +5806,35 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * draw from the cache when the cache is enabled. To benefit from the cache, you must * request the drawing cache by calling this method and draw it on screen if the * returned bitmap is not null.

      + * + *

      Note about auto scaling in compatibility mode: When auto scaling is not enabled, + * this method will create a bitmap of the same size as this view. Because this bitmap + * will be drawn scaled by the parent ViewGroup, the result on screen might show + * scaling artifacts. To avoid such artifacts, you should call this method by setting + * the auto scaling to true. Doing so, however, will generate a bitmap of a different + * size than the view. This implies that your application must be able to handle this + * size.

      + * + * @param autoScale Indicates whether the generated bitmap should be scaled based on + * the current density of the screen when the application is in compatibility + * mode. * - * @return a bitmap representing this view or null if cache is disabled - * + * @return A bitmap representing this view or null if cache is disabled. + * * @see #setDrawingCacheEnabled(boolean) * @see #isDrawingCacheEnabled() - * @see #buildDrawingCache() + * @see #buildDrawingCache(boolean) * @see #destroyDrawingCache() */ - public Bitmap getDrawingCache() { + public Bitmap getDrawingCache(boolean autoScale) { if ((mViewFlags & WILL_NOT_CACHE_DRAWING) == WILL_NOT_CACHE_DRAWING) { return null; } if ((mViewFlags & DRAWING_CACHE_ENABLED) == DRAWING_CACHE_ENABLED) { - buildDrawingCache(); + buildDrawingCache(autoScale); } - return mDrawingCache == null ? null : mDrawingCache.get(); + return autoScale ? (mDrawingCache == null ? null : mDrawingCache.get()) : + (mUnscaledDrawingCache == null ? null : mUnscaledDrawingCache.get()); } /** @@ -5610,6 +5853,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback { if (bitmap != null) bitmap.recycle(); mDrawingCache = null; } + if (mUnscaledDrawingCache != null) { + final Bitmap bitmap = mUnscaledDrawingCache.get(); + if (bitmap != null) bitmap.recycle(); + mUnscaledDrawingCache = null; + } } /** @@ -5636,19 +5884,37 @@ public class View implements Drawable.Callback, KeyEvent.Callback { return mDrawingCacheBackgroundColor; } + /** + *

      Calling this method is equivalent to calling buildDrawingCache(false).

      + * + * @see #buildDrawingCache(boolean) + */ + public void buildDrawingCache() { + buildDrawingCache(false); + } + /** *

      Forces the drawing cache to be built if the drawing cache is invalid.

      * *

      If you call {@link #buildDrawingCache()} manually without calling * {@link #setDrawingCacheEnabled(boolean) setDrawingCacheEnabled(true)}, you * should cleanup the cache by calling {@link #destroyDrawingCache()} afterwards.

      + * + *

      Note about auto scaling in compatibility mode: When auto scaling is not enabled, + * this method will create a bitmap of the same size as this view. Because this bitmap + * will be drawn scaled by the parent ViewGroup, the result on screen might show + * scaling artifacts. To avoid such artifacts, you should call this method by setting + * the auto scaling to true. Doing so, however, will generate a bitmap of a different + * size than the view. This implies that your application must be able to handle this + * size.

      * * @see #getDrawingCache() * @see #destroyDrawingCache() */ - public void buildDrawingCache() { - if ((mPrivateFlags & DRAWING_CACHE_VALID) == 0 || mDrawingCache == null || - mDrawingCache.get() == null) { + public void buildDrawingCache(boolean autoScale) { + if ((mPrivateFlags & DRAWING_CACHE_VALID) == 0 || (autoScale ? + (mDrawingCache == null || mDrawingCache.get() == null) : + (mUnscaledDrawingCache == null || mUnscaledDrawingCache.get() == null))) { if (ViewDebug.TRACE_HIERARCHY) { ViewDebug.trace(this, ViewDebug.HierarchyTraceType.BUILD_CACHE); @@ -5657,8 +5923,16 @@ public class View implements Drawable.Callback, KeyEvent.Callback { EventLog.writeEvent(60002, hashCode()); } - final int width = mRight - mLeft; - final int height = mBottom - mTop; + int width = mRight - mLeft; + int height = mBottom - mTop; + + final AttachInfo attachInfo = mAttachInfo; + final boolean scalingRequired = attachInfo != null && attachInfo.mScalingRequired; + + if (autoScale && scalingRequired) { + width = (int) ((width * attachInfo.mApplicationScale) + 0.5f); + height = (int) ((height * attachInfo.mApplicationScale) + 0.5f); + } final int drawingCacheBackgroundColor = mDrawingCacheBackgroundColor; final boolean opaque = drawingCacheBackgroundColor != 0 || @@ -5672,7 +5946,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback { } boolean clear = true; - Bitmap bitmap = mDrawingCache == null ? null : mDrawingCache.get(); + Bitmap bitmap = autoScale ? (mDrawingCache == null ? null : mDrawingCache.get()) : + (mUnscaledDrawingCache == null ? null : mUnscaledDrawingCache.get()); if (bitmap == null || bitmap.getWidth() != width || bitmap.getHeight() != height) { @@ -5701,12 +5976,20 @@ public class View implements Drawable.Callback, KeyEvent.Callback { try { bitmap = Bitmap.createBitmap(width, height, quality); - mDrawingCache = new SoftReference(bitmap); + if (autoScale) { + mDrawingCache = new SoftReference(bitmap); + } else { + mUnscaledDrawingCache = new SoftReference(bitmap); + } } catch (OutOfMemoryError e) { // If there is not enough memory to create the bitmap cache, just // ignore the issue as bitmap caches are not required to draw the // view hierarchy - mDrawingCache = null; + if (autoScale) { + mDrawingCache = null; + } else { + mUnscaledDrawingCache = null; + } return; } @@ -5714,7 +5997,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback { } Canvas canvas; - final AttachInfo attachInfo = mAttachInfo; if (attachInfo != null) { canvas = attachInfo.mCanvas; if (canvas == null) { @@ -5737,15 +6019,22 @@ public class View implements Drawable.Callback, KeyEvent.Callback { computeScroll(); final int restoreCount = canvas.save(); + + if (autoScale && scalingRequired) { + final float scale = attachInfo.mApplicationScale; + canvas.scale(scale, scale); + } + canvas.translate(-mScrollX, -mScrollY); - mPrivateFlags = (mPrivateFlags & ~DIRTY_MASK) | DRAWN; + mPrivateFlags |= DRAWN; // Fast path for layouts with no backgrounds if ((mPrivateFlags & SKIP_DRAW) == SKIP_DRAW) { if (ViewDebug.TRACE_HIERARCHY) { ViewDebug.trace(this, ViewDebug.HierarchyTraceType.DRAW); } + mPrivateFlags &= ~DIRTY_MASK; dispatchDraw(canvas); } else { draw(canvas); @@ -5792,7 +6081,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { canvas = new Canvas(bitmap); } - if ((backgroundColor&0xff000000) != 0) { + if ((backgroundColor & 0xff000000) != 0) { bitmap.eraseColor(backgroundColor); } @@ -5800,6 +6089,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback { final int restoreCount = canvas.save(); canvas.translate(-mScrollX, -mScrollY); + // Temporarily remove the dirty mask + int flags = mPrivateFlags; + mPrivateFlags &= ~DIRTY_MASK; + // Fast path for layouts with no backgrounds if ((mPrivateFlags & SKIP_DRAW) == SKIP_DRAW) { dispatchDraw(canvas); @@ -5807,13 +6100,15 @@ public class View implements Drawable.Callback, KeyEvent.Callback { draw(canvas); } + mPrivateFlags = flags; + canvas.restoreToCount(restoreCount); if (attachInfo != null) { // Restore the cached Canvas for our siblings attachInfo.mCanvas = canvas; } - + return bitmap; } @@ -5927,8 +6222,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback { ViewDebug.trace(this, ViewDebug.HierarchyTraceType.DRAW); } - final boolean dirtyOpaque = (mPrivateFlags & DIRTY_MASK) == DIRTY_OPAQUE; - mPrivateFlags = (mPrivateFlags & ~DIRTY_MASK) | DRAWN; + final int privateFlags = mPrivateFlags; + final boolean dirtyOpaque = (privateFlags & DIRTY_MASK) == DIRTY_OPAQUE && + (mAttachInfo == null || !mAttachInfo.mIgnoreDirtyState); + mPrivateFlags = (privateFlags & ~DIRTY_MASK) | DRAWN; /* * Draw traversal performs several drawing steps which must be executed @@ -6306,7 +6603,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { boolean changed = false; if (DBG) { - System.out.println(this + " View.setFrame(" + left + "," + top + "," + Log.d("View", this + " View.setFrame(" + left + "," + top + "," + right + "," + bottom + ")"); } @@ -6709,6 +7006,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback { requestLayout = true; } + computeOpaqueFlags(); + if (requestLayout) { requestLayout(); } @@ -6749,7 +7048,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { mUserPaddingBottom = bottom; final int viewFlags = mViewFlags; - + // Common case is there are no scroll bars. if ((viewFlags & (SCROLLBARS_VERTICAL|SCROLLBARS_HORIZONTAL)) != 0) { // TODO: Deal with RTL languages to adjust left padding instead of right. @@ -6762,7 +7061,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { ? 0 : getHorizontalScrollbarHeight(); } } - + if (mPaddingLeft != left) { changed = true; mPaddingLeft = left; @@ -6899,7 +7198,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { return v; } } - + View parent = this; while (parent.mParent != null && parent.mParent instanceof View) { @@ -6920,8 +7219,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback { getLocationInWindow(location); final AttachInfo info = mAttachInfo; - location[0] += info.mWindowLeft; - location[1] += info.mWindowTop; + if (info != null) { + location[0] += info.mWindowLeft; + location[1] += info.mWindowTop; + } } /** @@ -6947,7 +7248,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { location[1] += view.mTop - view.mScrollY; viewParent = view.mParent; } - + if (viewParent instanceof ViewRoot) { // *cough* final ViewRoot vr = (ViewRoot)viewParent; @@ -7098,7 +7399,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * @return the Object stored in this view as a tag * * @see #setTag(int, Object) - * @see #getTag() + * @see #getTag() */ public Object getTag(int key) { SparseArray tags = null; @@ -7154,7 +7455,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { + "resource id."); } - setTagInternal(this, key, tag); + setTagInternal(this, key, tag); } private static void setTagInternal(View view, int key, Object tag) { @@ -7189,7 +7490,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { /** * Method that subclasses should implement to check their consistency. The type of * consistency check is indicated by the bit field passed as a parameter. - * + * * @param consistency The type of consistency. See ViewDebug for more information. * * @throws IllegalStateException if the view is in an inconsistent state. @@ -7744,7 +8045,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { /** * BZZZTT!!1! - * + * *

      Provide haptic feedback to the user for this view. * *

      The framework will provide haptic feedback for some built in actions, @@ -7763,7 +8064,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback { /** * BZZZTT!!1! - * + * *

      Like {@link #performHapticFeedback(int)}, with additional options. * * @param feedbackConstant One of the constants defined in @@ -8158,7 +8459,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * window. */ static class AttachInfo { - interface Callbacks { void playSoundEffect(int effectId); boolean performHapticFeedback(int effectId, boolean always); @@ -8227,10 +8527,20 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * The top view of the hierarchy. */ View mRootView; - + IBinder mPanelParentWindowToken; Surface mSurface; + /** + * Scale factor used by the compatibility mode + */ + float mApplicationScale; + + /** + * Indicates whether the application is in compatibility mode + */ + boolean mScalingRequired; + /** * Left position of this view's window */ @@ -8287,6 +8597,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback { */ long mDrawingTime; + /** + * Indicates whether or not ignoring the DIRTY_MASK flags. + */ + boolean mIgnoreDirtyState; + /** * Indicates whether the view's window is currently in touch mode. */ @@ -8365,7 +8680,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback { * calling up the hierarchy. */ final Rect mTmpInvalRect = new Rect(); - + + /** + * Temporary list for use in collecting focusable descendents of a view. + */ + final ArrayList mFocusablesTempList = new ArrayList(24); + /** * Creates a new set of attachment information with the specified * events handler and thread. @@ -8408,18 +8728,18 @@ public class View implements Drawable.Callback, KeyEvent.Callback { // use use a height of 1, and then wack the matrix each time we // actually use it. shader = new LinearGradient(0, 0, 0, 1, 0xFF000000, 0, Shader.TileMode.CLAMP); - + paint.setShader(shader); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); } - + public void setFadeColor(int color) { if (color != 0 && color != mLastColor) { mLastColor = color; color |= 0xFF000000; - + shader = new LinearGradient(0, 0, 0, 1, color, 0, Shader.TileMode.CLAMP); - + paint.setShader(shader); // Restore the default transfer mode (src_over) paint.setXfermode(null); diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java index 8e1524bd839d..0e36ec296d9c 100644 --- a/core/java/android/view/ViewConfiguration.java +++ b/core/java/android/view/ViewConfiguration.java @@ -106,6 +106,11 @@ public class ViewConfiguration { * Minimum velocity to initiate a fling, as measured in pixels per second */ private static final int MINIMUM_FLING_VELOCITY = 50; + + /** + * Maximum velocity to initiate a fling, as measured in pixels per second + */ + private static final int MAXIMUM_FLING_VELOCITY = 4000; /** * The maximum size of View's drawing cache, expressed in bytes. This size @@ -122,6 +127,7 @@ public class ViewConfiguration { private final int mEdgeSlop; private final int mFadingEdgeLength; private final int mMinimumFlingVelocity; + private final int mMaximumFlingVelocity; private final int mScrollbarSize; private final int mTouchSlop; private final int mDoubleTapSlop; @@ -139,6 +145,7 @@ public class ViewConfiguration { mEdgeSlop = EDGE_SLOP; mFadingEdgeLength = FADING_EDGE_LENGTH; mMinimumFlingVelocity = MINIMUM_FLING_VELOCITY; + mMaximumFlingVelocity = MAXIMUM_FLING_VELOCITY; mScrollbarSize = SCROLL_BAR_SIZE; mTouchSlop = TOUCH_SLOP; mDoubleTapSlop = DOUBLE_TAP_SLOP; @@ -164,6 +171,7 @@ public class ViewConfiguration { mEdgeSlop = (int) (density * EDGE_SLOP + 0.5f); mFadingEdgeLength = (int) (density * FADING_EDGE_LENGTH + 0.5f); mMinimumFlingVelocity = (int) (density * MINIMUM_FLING_VELOCITY + 0.5f); + mMaximumFlingVelocity = (int) (density * MAXIMUM_FLING_VELOCITY + 0.5f); mScrollbarSize = (int) (density * SCROLL_BAR_SIZE + 0.5f); mTouchSlop = (int) (density * TOUCH_SLOP + 0.5f); mDoubleTapSlop = (int) (density * DOUBLE_TAP_SLOP + 0.5f); @@ -366,6 +374,23 @@ public class ViewConfiguration { return mMinimumFlingVelocity; } + /** + * @return Maximum velocity to initiate a fling, as measured in pixels per second. + * + * @deprecated Use {@link #getScaledMaximumFlingVelocity()} instead. + */ + @Deprecated + public static int getMaximumFlingVelocity() { + return MAXIMUM_FLING_VELOCITY; + } + + /** + * @return Maximum velocity to initiate a fling, as measured in pixels per second. + */ + public int getScaledMaximumFlingVelocity() { + return mMaximumFlingVelocity; + } + /** * The maximum drawing cache size expressed in bytes. * diff --git a/core/java/android/view/ViewDebug.java b/core/java/android/view/ViewDebug.java index 74a248f65834..46aea022912b 100644 --- a/core/java/android/view/ViewDebug.java +++ b/core/java/android/view/ViewDebug.java @@ -87,17 +87,17 @@ public class ViewDebug { * check that this value is set to true as not to affect performance. */ public static final boolean TRACE_RECYCLER = false; - + /** * The system property of dynamic switch for capturing view information * when it is set, we dump interested fields and methods for the view on focus - */ + */ static final String SYSTEM_PROPERTY_CAPTURE_VIEW = "debug.captureview"; - + /** * The system property of dynamic switch for capturing event information * when it is set, we log key events, touch/motion and trackball events - */ + */ static final String SYSTEM_PROPERTY_CAPTURE_EVENT = "debug.captureevent"; /** @@ -216,7 +216,7 @@ public class ViewDebug { *

                *
                * A specified String is output when the following is true:
      -         * 
      +         *
                * @return An array of int to String mappings
                */
               FlagToString[] flagMapping() default { };
      @@ -228,7 +228,7 @@ public class ViewDebug {
                *
                * @return true if the properties of this property should be dumped
                *
      -         * @see #prefix() 
      +         * @see #prefix()
                */
               boolean deepExport() default false;
       
      @@ -313,15 +313,15 @@ public class ViewDebug {
           @Retention(RetentionPolicy.RUNTIME)
           public @interface CapturedViewProperty {
               /**
      -         * When retrieveReturn is true, we need to retrieve second level methods 
      +         * When retrieveReturn is true, we need to retrieve second level methods
                * e.g., we need myView.getFirstLevelMethod().getSecondLevelMethod()
      -         * we will set retrieveReturn = true on the annotation of 
      +         * we will set retrieveReturn = true on the annotation of
                * myView.getFirstLevelMethod()
      -         * @return true if we need the second level methods 
      +         * @return true if we need the second level methods
                */
      -        boolean retrieveReturn() default false;        
      +        boolean retrieveReturn() default false;
           }
      -        
      +
           private static HashMap, Method[]> mCapturedViewMethodsForClasses = null;
           private static HashMap, Field[]> mCapturedViewFieldsForClasses = null;
       
      @@ -401,7 +401,7 @@ public class ViewDebug {
            */
           public static long getViewRootInstanceCount() {
               return ViewRoot.getInstanceCount();
      -    }    
      +    }
       
           /**
            * Outputs a trace to the currently opened recycler traces. The trace records the type of
      @@ -624,7 +624,7 @@ public class ViewDebug {
            *
            * This method will return immediately if TRACE_HIERARCHY is false.
            *
      -     * @see #startHierarchyTracing(String, View) 
      +     * @see #startHierarchyTracing(String, View)
            * @see #trace(View, android.view.ViewDebug.HierarchyTraceType)
            */
           public static void stopHierarchyTracing() {
      @@ -671,7 +671,7 @@ public class ViewDebug {
       
               sHierarhcyRoot = null;
           }
      -    
      +
           static void dispatchCommand(View view, String command, String parameters,
                   OutputStream clientStream) throws IOException {
       
      @@ -1039,10 +1039,10 @@ public class ViewDebug {
       
               final ArrayList foundMethods = new ArrayList();
               methods = klass.getDeclaredMethods();
      -        
      +
               int count = methods.length;
               for (int i = 0; i < count; i++) {
      -            final Method method = methods[i];            
      +            final Method method = methods[i];
                   if (method.getParameterTypes().length == 0 &&
                           method.isAnnotationPresent(ExportedProperty.class) &&
                           method.getReturnType() != Void.class) {
      @@ -1075,7 +1075,7 @@ public class ViewDebug {
                   klass = klass.getSuperclass();
               } while (klass != Object.class);
           }
      -    
      +
           private static void exportMethods(Context context, Object view, BufferedWriter out,
                   Class klass, String prefix) throws IOException {
       
      @@ -1235,10 +1235,11 @@ public class ViewDebug {
               for (int j = 0; j < count; j++) {
                   final FlagToString flagMapping = mapping[j];
                   final boolean ifTrue = flagMapping.outputIf();
      -            final boolean test = (intValue & flagMapping.mask()) == flagMapping.equals();
      +            final int maskResult = intValue & flagMapping.mask();
      +            final boolean test = maskResult == flagMapping.equals();
                   if ((test && ifTrue) || (!test && !ifTrue)) {
                       final String name = flagMapping.name();
      -                final String value = ifTrue ? "true" : "false";
      +                final String value = "0x" + Integer.toHexString(maskResult);
                       writeEntry(out, prefix, name, "", value);
                   }
               }
      @@ -1259,7 +1260,7 @@ public class ViewDebug {
       
               for (int j = 0; j < valuesCount; j++) {
                   String name;
      -            String value;
      +            String value = null;
       
                   final int intValue = array[j];
       
      @@ -1275,7 +1276,6 @@ public class ViewDebug {
                       }
                   }
       
      -            value = String.valueOf(intValue);
                   if (hasMapping) {
                       int mappingCount = mapping.length;
                       for (int k = 0; k < mappingCount; k++) {
      @@ -1288,7 +1288,9 @@ public class ViewDebug {
                   }
       
                   if (resolveId) {
      -                value = (String) resolveId(context, intValue);
      +                if (value == null) value = (String) resolveId(context, intValue);
      +            } else {
      +                value = String.valueOf(intValue);
                   }
       
                   writeEntry(out, prefix, name, suffix, value);
      @@ -1396,10 +1398,10 @@ public class ViewDebug {
       
               final ArrayList foundMethods = new ArrayList();
               methods = klass.getMethods();
      -        
      +
               int count = methods.length;
               for (int i = 0; i < count; i++) {
      -            final Method method = methods[i];            
      +            final Method method = methods[i];
                   if (method.getParameterTypes().length == 0 &&
                           method.isAnnotationPresent(CapturedViewProperty.class) &&
                           method.getReturnType() != Void.class) {
      @@ -1413,14 +1415,14 @@ public class ViewDebug {
       
               return methods;
           }
      -              
      -    private static String capturedViewExportMethods(Object obj, Class klass, 
      +
      +    private static String capturedViewExportMethods(Object obj, Class klass,
                   String prefix) {
       
               if (obj == null) {
                   return "null";
               }
      -        
      +
               StringBuilder sb = new StringBuilder();
               final Method[] methods = capturedViewGetPropertyMethods(klass);
       
      @@ -1430,41 +1432,41 @@ public class ViewDebug {
                   try {
                       Object methodValue = method.invoke(obj, (Object[]) null);
                       final Class returnType = method.getReturnType();
      -                
      +
                       CapturedViewProperty property = method.getAnnotation(CapturedViewProperty.class);
                       if (property.retrieveReturn()) {
                           //we are interested in the second level data only
                           sb.append(capturedViewExportMethods(methodValue, returnType, method.getName() + "#"));
      -                } else {                    
      +                } else {
                           sb.append(prefix);
                           sb.append(method.getName());
                           sb.append("()=");
      -                    
      +
                           if (methodValue != null) {
      -                        final String value = methodValue.toString().replace("\n", "\\n");                        
      -                        sb.append(value);                        
      +                        final String value = methodValue.toString().replace("\n", "\\n");
      +                        sb.append(value);
                           } else {
                               sb.append("null");
                           }
                           sb.append("; ");
                       }
                     } catch (IllegalAccessException e) {
      -                  //Exception IllegalAccess, it is OK here 
      +                  //Exception IllegalAccess, it is OK here
                         //we simply ignore this method
                     } catch (InvocationTargetException e) {
      -                  //Exception InvocationTarget, it is OK here 
      +                  //Exception InvocationTarget, it is OK here
                         //we simply ignore this method
      -              }              
      -        }        
      +              }
      +        }
               return sb.toString();
           }
       
           private static String capturedViewExportFields(Object obj, Class klass, String prefix) {
      -        
      +
               if (obj == null) {
                   return "null";
               }
      -        
      +
               StringBuilder sb = new StringBuilder();
               final Field[] fields = capturedViewGetPropertyFields(klass);
       
      @@ -1486,25 +1488,25 @@ public class ViewDebug {
                       }
                       sb.append(' ');
                   } catch (IllegalAccessException e) {
      -                //Exception IllegalAccess, it is OK here 
      +                //Exception IllegalAccess, it is OK here
                       //we simply ignore this field
                   }
               }
               return sb.toString();
           }
      -    
      +
           /**
      -     * Dump view info for id based instrument test generation 
      +     * Dump view info for id based instrument test generation
            * (and possibly further data analysis). The results are dumped
      -     * to the log. 
      +     * to the log.
            * @param tag for log
            * @param view for dump
            */
      -    public static void dumpCapturedView(String tag, Object view) {        
      +    public static void dumpCapturedView(String tag, Object view) {
               Class klass = view.getClass();
               StringBuilder sb = new StringBuilder(klass.getName() + ": ");
               sb.append(capturedViewExportFields(view, klass, ""));
      -        sb.append(capturedViewExportMethods(view, klass, ""));        
      -        Log.d(tag, sb.toString());        
      +        sb.append(capturedViewExportMethods(view, klass, ""));
      +        Log.d(tag, sb.toString());
           }
       }
      diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
      index 26fe776ba350..f7b7f029df82 100644
      --- a/core/java/android/view/ViewGroup.java
      +++ b/core/java/android/view/ViewGroup.java
      @@ -24,15 +24,16 @@ import android.graphics.Bitmap;
       import android.graphics.Canvas;
       import android.graphics.Paint;
       import android.graphics.Rect;
      -import android.graphics.Region;
       import android.graphics.RectF;
      +import android.graphics.Region;
       import android.os.Parcelable;
       import android.os.SystemClock;
       import android.util.AttributeSet;
      +import android.util.Config;
       import android.util.EventLog;
       import android.util.Log;
       import android.util.SparseArray;
      -import android.util.Config;
      +import android.view.accessibility.AccessibilityEvent;
       import android.view.animation.Animation;
       import android.view.animation.AnimationUtils;
       import android.view.animation.LayoutAnimationController;
      @@ -52,6 +53,15 @@ import java.util.ArrayList;
        * 

      * Also see {@link LayoutParams} for layout attributes. *

      + * + * @attr ref android.R.styleable#ViewGroup_clipChildren + * @attr ref android.R.styleable#ViewGroup_clipToPadding + * @attr ref android.R.styleable#ViewGroup_layoutAnimation + * @attr ref android.R.styleable#ViewGroup_animationCache + * @attr ref android.R.styleable#ViewGroup_persistentDrawingCache + * @attr ref android.R.styleable#ViewGroup_alwaysDrawnWithCache + * @attr ref android.R.styleable#ViewGroup_addStatesFromChildren + * @attr ref android.R.styleable#ViewGroup_descendantFocusability */ public abstract class ViewGroup extends View implements ViewParent, ViewManager { private static final boolean DBG = false; @@ -89,7 +99,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager /** * Internal flags. - * + * * This field should be made private, so it is hidden from the SDK. * {@hide} */ @@ -142,7 +152,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * to get the index of the child to draw for that iteration. */ protected static final int FLAG_USE_CHILD_DRAWING_ORDER = 0x400; - + /** * When set, this ViewGroup supports static transformations on children; this causes * {@link #getChildStaticTransformation(View, android.view.animation.Transformation)} to be @@ -151,7 +161,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * Any subclass overriding * {@link #getChildStaticTransformation(View, android.view.animation.Transformation)} should * set this flags in {@link #mGroupFlags}. - * + * * {@hide} */ protected static final int FLAG_SUPPORT_STATIC_TRANSFORMATIONS = 0x800; @@ -212,7 +222,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * When set, this ViewGroup should not intercept touch events. */ private static final int FLAG_DISALLOW_INTERCEPT = 0x80000; - + /** * Indicates which types of drawing caches are to be kept in memory. * This field should be made private, so it is hidden from the SDK. @@ -601,6 +611,14 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager */ @Override public void addFocusables(ArrayList views, int direction) { + addFocusables(views, direction, FOCUSABLES_TOUCH_MODE); + } + + /** + * {@inheritDoc} + */ + @Override + public void addFocusables(ArrayList views, int direction, int focusableMode) { final int focusableCount = views.size(); final int descendantFocusability = getDescendantFocusability(); @@ -612,7 +630,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager for (int i = 0; i < count; i++) { final View child = children[i]; if ((child.mViewFlags & VISIBILITY_MASK) == VISIBLE) { - child.addFocusables(views, direction); + child.addFocusables(views, direction, focusableMode); } } } @@ -625,7 +643,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager descendantFocusability != FOCUS_AFTER_DESCENDANTS || // No focusable descendants (focusableCount == views.size())) { - super.addFocusables(views, direction); + super.addFocusables(views, direction, focusableMode); } } @@ -680,7 +698,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager ViewParent parent = mParent; if (parent != null) parent.recomputeViewAttributes(this); } - + @Override void dispatchCollectViewAttributes(int visibility) { visibility |= mViewFlags&VISIBILITY_MASK; @@ -812,16 +830,16 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } } - + boolean isUpOrCancel = (action == MotionEvent.ACTION_UP) || - (action == MotionEvent.ACTION_CANCEL); + (action == MotionEvent.ACTION_CANCEL); if (isUpOrCancel) { // Note, we've already copied the previous state to our local // variable, so this takes effect on the next event mGroupFlags &= ~FLAG_DISALLOW_INTERCEPT; } - + // The event wasn't an ACTION_DOWN, dispatch it to our target if // we have one. final View target = mMotionTarget; @@ -868,18 +886,18 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * {@inheritDoc} */ public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) { - + if (disallowIntercept == ((mGroupFlags & FLAG_DISALLOW_INTERCEPT) != 0)) { // We're already in this state, assume our ancestors are too return; } - + if (disallowIntercept) { mGroupFlags |= FLAG_DISALLOW_INTERCEPT; } else { mGroupFlags &= ~FLAG_DISALLOW_INTERCEPT; } - + // Pass it up to our parent if (mParent != null) { mParent.requestDisallowInterceptTouchEvent(disallowIntercept); @@ -1020,6 +1038,15 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } + @Override + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { + boolean populated = false; + for (int i = 0, count = getChildCount(); i < count; i++) { + populated |= getChildAt(i).dispatchPopulateAccessibilityEvent(event); + } + return populated; + } + /** * {@inheritDoc} */ @@ -1139,7 +1166,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final View child = children[i]; if ((child.mViewFlags & VISIBILITY_MASK) == VISIBLE) { child.setDrawingCacheEnabled(true); - child.buildDrawingCache(); + child.buildDrawingCache(true); } } @@ -1181,7 +1208,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager bindLayoutAnimation(child); if (cache) { child.setDrawingCacheEnabled(true); - child.buildDrawingCache(); + child.buildDrawingCache(true); } } } @@ -1274,7 +1301,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager post(end); } } - + /** * Returns the index of the child to draw for this iteration. Override this * if you want to change the drawing order of children. By default, it @@ -1282,14 +1309,14 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager *

      * NOTE: In order for this method to be called, the * {@link #FLAG_USE_CHILD_DRAWING_ORDER} must be set. - * + * * @param i The current iteration. * @return The index of the child to draw this iteration. */ protected int getChildDrawingOrder(int childCount, int i) { return i; } - + private void notifyAnimationListener() { mGroupFlags &= ~FLAG_NOTIFY_ANIMATION_LISTENER; mGroupFlags |= FLAG_ANIMATION_DONE; @@ -1403,9 +1430,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } - // Clear the flag as early as possible to allow draw() implementations + // Sets the flag as early as possible to allow draw() implementations // to call invalidate() successfully when doing animations - child.mPrivateFlags = (child.mPrivateFlags & ~DIRTY_MASK) | DRAWN; + child.mPrivateFlags |= DRAWN; if (!concatMatrix && canvas.quickReject(cl, ct, cr, cb, Canvas.EdgeType.BW) && (child.mPrivateFlags & DRAW_ANIMATION) == 0) { @@ -1417,10 +1444,12 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final int sx = child.mScrollX; final int sy = child.mScrollY; + boolean scalingRequired = false; Bitmap cache = null; if ((flags & FLAG_CHILDREN_DRAWN_WITH_CACHE) == FLAG_CHILDREN_DRAWN_WITH_CACHE || (flags & FLAG_ALWAYS_DRAWN_WITH_CACHE) == FLAG_ALWAYS_DRAWN_WITH_CACHE) { - cache = child.getDrawingCache(); + cache = child.getDrawingCache(true); + if (mAttachInfo != null) scalingRequired = mAttachInfo.mScalingRequired; } final boolean hasNoCache = cache == null; @@ -1430,6 +1459,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager canvas.translate(cl - sx, ct - sy); } else { canvas.translate(cl, ct); + if (scalingRequired) { + // mAttachInfo cannot be null, otherwise scalingRequired == false + final float scale = 1.0f / mAttachInfo.mApplicationScale; + canvas.scale(scale, scale); + } } float alpha = 1.0f; @@ -1472,7 +1506,11 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if (hasNoCache) { canvas.clipRect(sx, sy, sx + (cr - cl), sy + (cb - ct)); } else { - canvas.clipRect(0, 0, cr - cl, cb - ct); + if (!scalingRequired) { + canvas.clipRect(0, 0, cr - cl, cb - ct); + } else { + canvas.clipRect(0, 0, cache.getWidth(), cache.getHeight()); + } } } @@ -1482,6 +1520,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if (ViewDebug.TRACE_HIERARCHY) { ViewDebug.trace(this, ViewDebug.HierarchyTraceType.DRAW); } + child.mPrivateFlags &= ~DIRTY_MASK; child.dispatchDraw(canvas); } else { child.draw(canvas); @@ -1546,7 +1585,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager children[i].setSelected(selected); } } - + @Override protected void dispatchSetPressed(boolean pressed) { final View[] children = mChildren; @@ -1577,7 +1616,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager /** * {@inheritDoc} * - * @see #setStaticTransformationsEnabled(boolean) + * @see #setStaticTransformationsEnabled(boolean) */ protected boolean getChildStaticTransformation(View child, Transformation t) { return false; @@ -1844,10 +1883,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if (child.hasFocus()) { requestChildFocus(child, child.findFocus()); } - + AttachInfo ai = mAttachInfo; if (ai != null) { - boolean lastKeepOn = ai.mKeepScreenOn; + boolean lastKeepOn = ai.mKeepScreenOn; ai.mKeepScreenOn = false; child.dispatchAttachedToWindow(mAttachInfo, (mViewFlags&VISIBILITY_MASK)); if (ai.mKeepScreenOn) { @@ -2047,7 +2086,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } needGlobalAttributesUpdate(false); - + removeFromArray(index); if (clearChildFocus) { @@ -2080,7 +2119,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } needGlobalAttributesUpdate(false); - + if (notifyListener) { onHierarchyChangeListener.onChildViewRemoved(this, view); } @@ -2128,7 +2167,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager View clearChildFocus = null; needGlobalAttributesUpdate(false); - + for (int i = count - 1; i >= 0; i--) { final View view = children[i]; @@ -2173,7 +2212,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if (child == mFocused) { child.clearFocus(); } - + if (animate && child.getAnimation() != null) { addDisappearingView(child); } else if (child.mAttachInfo != null) { @@ -2323,7 +2362,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final boolean drawAnimation = (child.mPrivateFlags & DRAW_ANIMATION) == DRAW_ANIMATION; // Check whether the child that requests the invalidate is fully opaque - final boolean isOpaque = child.isOpaque(); + final boolean isOpaque = child.isOpaque() && !drawAnimation && + child.getAnimation() != null; // Mark the child as dirty, using the appropriate flag // Make sure we do not set both flags at the same time final int opaqueFlag = isOpaque ? DIRTY_OPAQUE : DIRTY; @@ -3135,7 +3175,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } } - + @Override protected boolean fitSystemWindows(Rect insets) { @@ -3269,7 +3309,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * laid out. See * {@link android.R.styleable#ViewGroup_Layout ViewGroup Layout Attributes} * for a list of all child view attributes that this class supports. - * + * *

      * The base LayoutParams class just describes how big the view wants to be * for both width and height. For each dimension, it can specify one of: @@ -3400,7 +3440,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @param output the String to prepend to the internal representation * @return a String with the following format: output + * "ViewGroup.LayoutParams={ width=WIDTH, height=HEIGHT }" - * + * * @hide */ public String debug(String output) { @@ -3413,7 +3453,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * * @param size the size to convert * @return a String instance representing the supplied size - * + * * @hide */ protected static String sizeToString(int size) { diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java index 5090c56b5edc..6f6e22477d25 100644 --- a/core/java/android/view/ViewRoot.java +++ b/core/java/android/view/ViewRoot.java @@ -30,14 +30,18 @@ import android.os.Process; import android.os.SystemProperties; import android.util.AndroidRuntimeException; import android.util.Config; +import android.util.DisplayMetrics; import android.util.Log; import android.util.EventLog; import android.util.SparseArray; import android.view.View.MeasureSpec; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; import android.widget.Scroller; import android.content.pm.PackageManager; +import android.content.res.CompatibilityInfo; import android.content.Context; import android.app.ActivityManagerNative; import android.Manifest; @@ -90,18 +94,18 @@ public final class ViewRoot extends Handler implements ViewParent, static final ThreadLocal sRunQueues = new ThreadLocal(); - private static int sDrawTime; + private static int sDrawTime; long mLastTrackballTime = 0; final TrackballAxis mTrackballAxisX = new TrackballAxis(); final TrackballAxis mTrackballAxisY = new TrackballAxis(); final int[] mTmpLocation = new int[2]; - + final InputMethodCallback mInputMethodCallback; final SparseArray mPendingEvents = new SparseArray(); int mPendingEventSeq = 0; - + final Thread mThread; final WindowLeaked mLocation; @@ -123,16 +127,13 @@ public final class ViewRoot extends Handler implements ViewParent, int mHeight; Rect mDirty; // will be a graphics.Region soon boolean mIsAnimating; - // TODO: change these to scalar class. - private float mAppScale; - private float mAppScaleInverted; // = 1.0f / mAppScale - private int[] mWindowLayoutParamsBackup = null; + + CompatibilityInfo.Translator mTranslator; final View.AttachInfo mAttachInfo; final Rect mTempRect; // used in the transaction to not thrash the heap. final Rect mVisRect; // used to retrieve visible rect of focused view. - final Point mVisPoint; // used to retrieve global offset of focused view. boolean mTraversalScheduled; boolean mWillDrawSoon; @@ -168,7 +169,7 @@ public final class ViewRoot extends Handler implements ViewParent, int mScrollY; int mCurScrollY; Scroller mScroller; - + EGL10 mEgl; EGLDisplay mEglDisplay; EGLContext mEglContext; @@ -178,7 +179,7 @@ public final class ViewRoot extends Handler implements ViewParent, boolean mUseGL; boolean mGlWanted; - final ViewConfiguration mViewConfiguration; + final ViewConfiguration mViewConfiguration; /** * see {@link #playSoundEffect(int)} @@ -216,7 +217,6 @@ public final class ViewRoot extends Handler implements ViewParent, mDirty = new Rect(); mTempRect = new Rect(); mVisRect = new Rect(); - mVisPoint = new Point(); mWinFrame = new Rect(); mWindow = new W(this, context); mInputMethodCallback = new InputMethodCallback(this); @@ -384,29 +384,39 @@ public final class ViewRoot extends Handler implements ViewParent, synchronized (this) { if (mView == null) { mView = view; - mAppScale = mView.getContext().getApplicationScale(); - if (mAppScale != 1.0f) { - mWindowLayoutParamsBackup = new int[4]; - } - mAppScaleInverted = 1.0f / mAppScale; mWindowAttributes.copyFrom(attrs); + + CompatibilityInfo compatibilityInfo = + mView.getContext().getResources().getCompatibilityInfo(); + mTranslator = compatibilityInfo.getTranslator(attrs); + boolean restore = false; + if (attrs != null && mTranslator != null) { + restore = true; + attrs.backup(); + mTranslator.translateWindowLayout(attrs); + } + if (DEBUG_LAYOUT) Log.d(TAG, "WindowLayout in setView:" + attrs); + mSoftInputMode = attrs.softInputMode; mWindowAttributesChanged = true; mAttachInfo.mRootView = view; + mAttachInfo.mScalingRequired = + mTranslator == null ? false : mTranslator.scalingRequired; + mAttachInfo.mApplicationScale = + mTranslator == null ? 1.0f : mTranslator.applicationScale; if (panelParentView != null) { mAttachInfo.mPanelParentWindowToken = panelParentView.getApplicationWindowToken(); } mAdded = true; int res; /* = WindowManagerImpl.ADD_OKAY; */ - + // Schedule the first layout -before- adding to the window // manager, to make sure we do the relayout before receiving // any other events from the system. requestLayout(); - try { - res = sWindowSession.add(mWindow, attrs, + res = sWindowSession.add(mWindow, mWindowAttributes, getHostVisibility(), mAttachInfo.mContentInsets); } catch (RemoteException e) { mAdded = false; @@ -414,8 +424,15 @@ public final class ViewRoot extends Handler implements ViewParent, mAttachInfo.mRootView = null; unscheduleTraversals(); throw new RuntimeException("Adding window failed", e); + } finally { + if (restore) { + attrs.restore(); + } + } + + if (mTranslator != null) { + mTranslator.translateRectInScreenToAppWindow(mAttachInfo.mContentInsets); } - mAttachInfo.mContentInsets.scale(mAppScaleInverted); mPendingContentInsets.set(mAttachInfo.mContentInsets); mPendingVisibleInsets.set(0, 0, 0, 0); if (Config.LOGV) Log.v("ViewRoot", "Added window " + mWindow); @@ -526,18 +543,20 @@ public final class ViewRoot extends Handler implements ViewParent, public void invalidateChild(View child, Rect dirty) { checkThread(); - if (LOCAL_LOGV) Log.v(TAG, "Invalidate child: " + dirty); - if (mCurScrollY != 0 || mAppScale != 1.0f) { + if (DEBUG_DRAW) Log.v(TAG, "Invalidate child: " + dirty); + if (mCurScrollY != 0 || mTranslator != null) { mTempRect.set(dirty); + dirty = mTempRect; if (mCurScrollY != 0) { - mTempRect.offset(0, -mCurScrollY); + dirty.offset(0, -mCurScrollY); } - if (mAppScale != 1.0f) { - mTempRect.scale(mAppScale); + if (mTranslator != null) { + mTranslator.translateRectInAppWindowToScreen(dirty); + } + if (mAttachInfo.mScalingRequired) { + dirty.inset(-1, -1); } - dirty = mTempRect; } - // TODO: When doing a union with mDirty != empty, we must cancel all the DIRTY_OPAQUE flags mDirty.union(dirty); if (!mWillDrawSoon) { scheduleTraversals(); @@ -553,7 +572,7 @@ public final class ViewRoot extends Handler implements ViewParent, return null; } - public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) { + public boolean getChildVisibleRect(View child, Rect r, android.graphics.Point offset) { if (child != mView) { throw new RuntimeException("child is not mine, honest!"); } @@ -582,7 +601,7 @@ public final class ViewRoot extends Handler implements ViewParent, int getHostVisibility() { return mAppVisible ? mView.getVisibility() : View.GONE; } - + private void performTraversals() { // cache mView since it is used so much below... final View host = mView; @@ -614,19 +633,22 @@ public final class ViewRoot extends Handler implements ViewParent, boolean viewVisibilityChanged = mViewVisibility != viewVisibility || mNewSurfaceNeeded; + float appScale = mAttachInfo.mApplicationScale; + WindowManager.LayoutParams params = null; if (mWindowAttributesChanged) { mWindowAttributesChanged = false; params = lp; } - + Rect frame = mWinFrame; if (mFirst) { fullRedrawNeeded = true; mLayoutRequested = true; - Display d = new Display(0); - desiredWindowWidth = (int) (d.getWidth() * mAppScaleInverted); - desiredWindowHeight = (int) (d.getHeight() * mAppScaleInverted); + DisplayMetrics packageMetrics = + mView.getContext().getResources().getDisplayMetrics(); + desiredWindowWidth = packageMetrics.widthPixels; + desiredWindowHeight = packageMetrics.heightPixels; // For the very first time, tell the view hierarchy that it // is attached to the window. Note that at this point the surface @@ -641,12 +663,13 @@ public final class ViewRoot extends Handler implements ViewParent, host.dispatchAttachedToWindow(attachInfo, 0); getRunQueue().executeActions(attachInfo.mHandler); //Log.i(TAG, "Screen on initialized: " + attachInfo.mKeepScreenOn); + } else { - desiredWindowWidth = mWinFrame.width(); - desiredWindowHeight = mWinFrame.height(); + desiredWindowWidth = frame.width(); + desiredWindowHeight = frame.height(); if (desiredWindowWidth != mWidth || desiredWindowHeight != mHeight) { if (DEBUG_ORIENTATION) Log.v("ViewRoot", - "View " + host + " resized to: " + mWinFrame); + "View " + host + " resized to: " + frame); fullRedrawNeeded = true; mLayoutRequested = true; windowResizesToFitContent = true; @@ -669,7 +692,7 @@ public final class ViewRoot extends Handler implements ViewParent, } boolean insetsChanged = false; - + if (mLayoutRequested) { if (mFirst) { host.fitSystemWindows(mAttachInfo.mContentInsets); @@ -694,9 +717,10 @@ public final class ViewRoot extends Handler implements ViewParent, || lp.height == ViewGroup.LayoutParams.WRAP_CONTENT) { windowResizesToFitContent = true; - Display d = new Display(0); - desiredWindowWidth = (int) (d.getWidth() * mAppScaleInverted); - desiredWindowHeight = (int) (d.getHeight() * mAppScaleInverted); + DisplayMetrics packageMetrics = + mView.getContext().getResources().getDisplayMetrics(); + desiredWindowWidth = packageMetrics.widthPixels; + desiredWindowHeight = packageMetrics.heightPixels; } } @@ -753,7 +777,7 @@ public final class ViewRoot extends Handler implements ViewParent, } } } - + if (params != null && (host.mPrivateFlags & View.REQUEST_TRANSPARENT_REGIONS) != 0) { if (!PixelFormat.formatHasAlpha(params.format)) { params.format = PixelFormat.TRANSLUCENT; @@ -782,7 +806,7 @@ public final class ViewRoot extends Handler implements ViewParent, // computed insets. insetsPending = computesInternalInsets && (mFirst || viewVisibilityChanged); - + if (mWindowAttributes.memoryType == WindowManager.LayoutParams.MEMORY_TYPE_GPU) { if (params == null) { params = mWindowAttributes; @@ -791,7 +815,6 @@ public final class ViewRoot extends Handler implements ViewParent, } } - final Rect frame = mWinFrame; boolean initialized = false; boolean contentInsetsChanged = false; boolean visibleInsetsChanged; @@ -818,7 +841,7 @@ public final class ViewRoot extends Handler implements ViewParent, + " content=" + mPendingContentInsets.toShortString() + " visible=" + mPendingVisibleInsets.toShortString() + " surface=" + mSurface); - + contentInsetsChanged = !mPendingContentInsets.equals( mAttachInfo.mContentInsets); visibleInsetsChanged = !mPendingVisibleInsets.equals( @@ -846,7 +869,7 @@ public final class ViewRoot extends Handler implements ViewParent, // all at once. newSurface = true; fullRedrawNeeded = true; - + if (mGlWanted && !mUseGL) { initializeGL(); initialized = mGlCanvas != null; @@ -864,7 +887,7 @@ public final class ViewRoot extends Handler implements ViewParent, } catch (RemoteException e) { } if (DEBUG_ORIENTATION) Log.v( - "ViewRoot", "Relayout returned: frame=" + mWinFrame + ", surface=" + mSurface); + "ViewRoot", "Relayout returned: frame=" + frame + ", surface=" + mSurface); attachInfo.mWindowLeft = frame.left; attachInfo.mWindowTop = frame.top; @@ -876,7 +899,7 @@ public final class ViewRoot extends Handler implements ViewParent, mHeight = frame.height(); if (initialized) { - mGlCanvas.setViewport((int) (mWidth * mAppScale), (int) (mHeight * mAppScale)); + mGlCanvas.setViewport((int) (mWidth * appScale), (int) (mHeight * appScale)); } boolean focusChangedDueToTouchMode = ensureTouchModeLocally( @@ -891,7 +914,7 @@ public final class ViewRoot extends Handler implements ViewParent, + " mHeight=" + mHeight + " measuredHeight" + host.mMeasuredHeight + " coveredInsetsChanged=" + contentInsetsChanged); - + // Ask host how big it wants to be host.measure(childWidthMeasureSpec, childHeightMeasureSpec); @@ -939,7 +962,6 @@ public final class ViewRoot extends Handler implements ViewParent, if (Config.DEBUG && ViewDebug.profileLayout) { startTime = SystemClock.elapsedRealtime(); } - host.layout(0, 0, host.mMeasuredWidth, host.mMeasuredHeight); if (Config.DEBUG && ViewDebug.consistencyCheckEnabled) { @@ -966,11 +988,10 @@ public final class ViewRoot extends Handler implements ViewParent, mTmpLocation[1] + host.mBottom - host.mTop); host.gatherTransparentRegion(mTransparentRegion); + if (mTranslator != null) { + mTranslator.translateRegionInWindowToScreen(mTransparentRegion); + } - // TODO: scale the region, like: - // Region uses native methods. We probabl should have ScalableRegion class. - - // Region does not have equals method ? if (!mTransparentRegion.equals(mPreviousTransparentRegion)) { mPreviousTransparentRegion.set(mTransparentRegion); // reconfigure window manager @@ -981,7 +1002,6 @@ public final class ViewRoot extends Handler implements ViewParent, } } - if (DBG) { System.out.println("======================================"); System.out.println("performTraversals -- after setFrame"); @@ -1001,20 +1021,23 @@ public final class ViewRoot extends Handler implements ViewParent, givenContent.left = givenContent.top = givenContent.right = givenContent.bottom = givenVisible.left = givenVisible.top = givenVisible.right = givenVisible.bottom = 0; - insets.contentInsets.scale(mAppScale); - insets.visibleInsets.scale(mAppScale); - attachInfo.mTreeObserver.dispatchOnComputeInternalInsets(insets); + Rect contentInsets = insets.contentInsets; + Rect visibleInsets = insets.visibleInsets; + if (mTranslator != null) { + contentInsets = mTranslator.getTranslatedContentInsets(contentInsets); + visibleInsets = mTranslator.getTranslatedVisbileInsets(visibleInsets); + } if (insetsPending || !mLastGivenInsets.equals(insets)) { mLastGivenInsets.set(insets); try { sWindowSession.setInsets(mWindow, insets.mTouchableInsets, - insets.contentInsets, insets.visibleInsets); + contentInsets, visibleInsets); } catch (RemoteException e) { } } } - + if (mFirst) { // handle first focus request if (DEBUG_INPUT_RESIZE) Log.v(TAG, "First: mView.hasFocus()=" @@ -1052,7 +1075,7 @@ public final class ViewRoot extends Handler implements ViewParent, } } } - + boolean cancelDraw = attachInfo.mTreeObserver.dispatchOnPreDraw(); if (!cancelDraw && !newSurface) { @@ -1140,10 +1163,9 @@ public final class ViewRoot extends Handler implements ViewParent, mAttachInfo.mViewScrollChanged = false; mAttachInfo.mTreeObserver.dispatchOnScrollChanged(); } - + int yoff; - final boolean scrolling = mScroller != null - && mScroller.computeScrollOffset(); + final boolean scrolling = mScroller != null && mScroller.computeScrollOffset(); if (scrolling) { yoff = mScroller.getCurrY(); } else { @@ -1153,26 +1175,28 @@ public final class ViewRoot extends Handler implements ViewParent, mCurScrollY = yoff; fullRedrawNeeded = true; } + float appScale = mAttachInfo.mApplicationScale; + boolean scalingRequired = mAttachInfo.mScalingRequired; Rect dirty = mDirty; if (mUseGL) { if (!dirty.isEmpty()) { Canvas canvas = mGlCanvas; - if (mGL!=null && canvas != null) { + if (mGL != null && canvas != null) { mGL.glDisable(GL_SCISSOR_TEST); mGL.glClearColor(0, 0, 0, 0); mGL.glClear(GL_COLOR_BUFFER_BIT); mGL.glEnable(GL_SCISSOR_TEST); mAttachInfo.mDrawingTime = SystemClock.uptimeMillis(); + mAttachInfo.mIgnoreDirtyState = true; mView.mPrivateFlags |= View.DRAWN; - float scale = mAppScale; int saveCount = canvas.save(Canvas.MATRIX_SAVE_FLAG); try { canvas.translate(0, -yoff); - if (scale != 1.0f) { - canvas.scale(scale, scale); + if (mTranslator != null) { + mTranslator.translateCanvas(canvas); } mView.draw(canvas); if (Config.DEBUG && ViewDebug.consistencyCheckEnabled) { @@ -1182,6 +1206,8 @@ public final class ViewRoot extends Handler implements ViewParent, canvas.restoreToCount(saveCount); } + mAttachInfo.mIgnoreDirtyState = false; + mEgl.eglSwapBuffers(mEglDisplay, mEglSurface); checkEglErrors(); @@ -1201,20 +1227,33 @@ public final class ViewRoot extends Handler implements ViewParent, return; } - if (fullRedrawNeeded) - dirty.union(0, 0, (int) (mWidth * mAppScale), (int) (mHeight * mAppScale)); + if (fullRedrawNeeded) { + mAttachInfo.mIgnoreDirtyState = true; + dirty.union(0, 0, (int) (mWidth * appScale), (int) (mHeight * appScale)); + } if (DEBUG_ORIENTATION || DEBUG_DRAW) { Log.v("ViewRoot", "Draw " + mView + "/" + mWindowAttributes.getTitle() + ": dirty={" + dirty.left + "," + dirty.top + "," + dirty.right + "," + dirty.bottom + "} surface=" - + surface + " surface.isValid()=" + surface.isValid()); + + surface + " surface.isValid()=" + surface.isValid() + ", appScale:" + + appScale + ", width=" + mWidth + ", height=" + mHeight); } Canvas canvas; try { + int left = dirty.left; + int top = dirty.top; + int right = dirty.right; + int bottom = dirty.bottom; canvas = surface.lockCanvas(dirty); + + if (left != dirty.left || top != dirty.top || right != dirty.right || + bottom != dirty.bottom) { + mAttachInfo.mIgnoreDirtyState = true; + } + // TODO: Do this in native canvas.setDensityScale(mDensity); } catch (Surface.OutOfResourcesException e) { @@ -1242,12 +1281,11 @@ public final class ViewRoot extends Handler implements ViewParent, // need to clear it before drawing so that the child will // properly re-composite its drawing on a transparent // background. This automatically respects the clip/dirty region - if (!canvas.isOpaque()) { - canvas.drawColor(0x00000000, PorterDuff.Mode.CLEAR); - } else if (yoff != 0) { - // If we are applying an offset, we need to clear the area - // where the offset doesn't appear to avoid having garbage - // left in the blank areas. + // or + // If we are applying an offset, we need to clear the area + // where the offset doesn't appear to avoid having garbage + // left in the blank areas. + if (!canvas.isOpaque() || yoff != 0) { canvas.drawColor(0, PorterDuff.Mode.CLEAR); } @@ -1256,27 +1294,27 @@ public final class ViewRoot extends Handler implements ViewParent, mAttachInfo.mDrawingTime = SystemClock.uptimeMillis(); mView.mPrivateFlags |= View.DRAWN; - float scale = mAppScale; - Context cxt = mView.getContext(); if (DEBUG_DRAW) { - Log.i(TAG, "Drawing: package:" + cxt.getPackageName() + ", appScale=" + mAppScale); + Context cxt = mView.getContext(); + Log.i(TAG, "Drawing: package:" + cxt.getPackageName() + + ", metrics=" + mView.getContext().getResources().getDisplayMetrics()); } - int saveCount = canvas.save(Canvas.MATRIX_SAVE_FLAG); + int saveCount = canvas.save(Canvas.MATRIX_SAVE_FLAG); try { canvas.translate(0, -yoff); - if (scale != 1.0f) { - // re-scale this - canvas.scale(scale, scale); + if (mTranslator != null) { + mTranslator.translateCanvas(canvas); } mView.draw(canvas); - - if (Config.DEBUG && ViewDebug.consistencyCheckEnabled) { - mView.dispatchConsistencyCheck(ViewDebug.CONSISTENCY_DRAWING); - } } finally { + mAttachInfo.mIgnoreDirtyState = false; canvas.restoreToCount(saveCount); } + if (Config.DEBUG && ViewDebug.consistencyCheckEnabled) { + mView.dispatchConsistencyCheck(ViewDebug.CONSISTENCY_DRAWING); + } + if (Config.DEBUG && ViewDebug.showFps) { int now = (int)SystemClock.elapsedRealtime(); if (sDrawTime != 0) { @@ -1289,7 +1327,7 @@ public final class ViewRoot extends Handler implements ViewParent, EventLog.writeEvent(60000, SystemClock.elapsedRealtime() - startTime); } } - + } finally { surface.unlockCanvasAndPost(canvas); } @@ -1297,7 +1335,7 @@ public final class ViewRoot extends Handler implements ViewParent, if (LOCAL_LOGV) { Log.v("ViewRoot", "Surface " + surface + " unlockCanvasAndPost"); } - + if (scrolling) { mFullRedrawNeeded = true; scheduleTraversals(); @@ -1310,7 +1348,7 @@ public final class ViewRoot extends Handler implements ViewParent, final Rect vi = attachInfo.mVisibleInsets; int scrollY = 0; boolean handled = false; - + if (vi.left > ci.left || vi.top > ci.top || vi.right > ci.right || vi.bottom > ci.bottom) { // We'll assume that we aren't going to change the scroll @@ -1397,7 +1435,7 @@ public final class ViewRoot extends Handler implements ViewParent, } } } - + if (scrollY != mScrollY) { if (DEBUG_INPUT_RESIZE) Log.v(TAG, "Pan scroll changed: old=" + mScrollY + " , new=" + scrollY); @@ -1411,10 +1449,10 @@ public final class ViewRoot extends Handler implements ViewParent, } mScrollY = scrollY; } - + return handled; } - + public void requestChildFocus(View child, View focused) { checkThread(); if (mFocusedView != focused) { @@ -1494,7 +1532,7 @@ public final class ViewRoot extends Handler implements ViewParent, } catch (RemoteException e) { } } - + /** * Return true if child is an ancestor of parent, (or equal to the parent). */ @@ -1568,10 +1606,9 @@ public final class ViewRoot extends Handler implements ViewParent, } else { didFinish = event.getAction() == MotionEvent.ACTION_OUTSIDE; } - if (event != null) { - event.scale(mAppScaleInverted); + if (event != null && mTranslator != null) { + mTranslator.translateEventInScreenToAppWindow(event); } - try { boolean handled; if (mView != null && mAdded && event != null) { @@ -1657,6 +1694,7 @@ public final class ViewRoot extends Handler implements ViewParent, case RESIZED: Rect coveredInsets = ((Rect[])msg.obj)[0]; Rect visibleInsets = ((Rect[])msg.obj)[1]; + if (mWinFrame.width() == msg.arg1 && mWinFrame.height() == msg.arg2 && mPendingContentInsets.equals(coveredInsets) && mPendingVisibleInsets.equals(visibleInsets)) { @@ -1691,16 +1729,17 @@ public final class ViewRoot extends Handler implements ViewParent, if (mGlWanted && !mUseGL) { initializeGL(); if (mGlCanvas != null) { - mGlCanvas.setViewport((int) (mWidth * mAppScale), - (int) (mHeight * mAppScale)); + float appScale = mAttachInfo.mApplicationScale; + mGlCanvas.setViewport( + (int) (mWidth * appScale), (int) (mHeight * appScale)); } } } } - + mLastWasImTarget = WindowManager.LayoutParams .mayUseInputMethod(mWindowAttributes.flags); - + InputMethodManager imm = InputMethodManager.peekInstance(); if (mView != null) { if (hasWindowFocus && imm != null && mLastWasImTarget) { @@ -1708,7 +1747,7 @@ public final class ViewRoot extends Handler implements ViewParent, } mView.dispatchWindowFocusChanged(hasWindowFocus); } - + // Note: must be done after the focus change callbacks, // so all of the view state is set up correctly. if (hasWindowFocus) { @@ -1726,6 +1765,10 @@ public final class ViewRoot extends Handler implements ViewParent, ~WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION; mHasHadWindowFocus = true; } + + if (hasWindowFocus && mView != null) { + sendAccessibilityEvents(); + } } } break; case DIE: @@ -1892,9 +1935,6 @@ public final class ViewRoot extends Handler implements ViewParent, } else { didFinish = false; } - if (event != null) { - event.scale(mAppScaleInverted); - } if (DEBUG_TRACKBALL) Log.v(TAG, "Motion event:" + event); @@ -2120,50 +2160,50 @@ public final class ViewRoot extends Handler implements ViewParent, } /** - * log motion events + * log motion events */ private static void captureMotionLog(String subTag, MotionEvent ev) { - //check dynamic switch + //check dynamic switch if (ev == null || SystemProperties.getInt(ViewDebug.SYSTEM_PROPERTY_CAPTURE_EVENT, 0) == 0) { return; - } - - StringBuilder sb = new StringBuilder(subTag + ": "); - sb.append(ev.getDownTime()).append(','); - sb.append(ev.getEventTime()).append(','); - sb.append(ev.getAction()).append(','); - sb.append(ev.getX()).append(','); - sb.append(ev.getY()).append(','); - sb.append(ev.getPressure()).append(','); - sb.append(ev.getSize()).append(','); - sb.append(ev.getMetaState()).append(','); - sb.append(ev.getXPrecision()).append(','); - sb.append(ev.getYPrecision()).append(','); - sb.append(ev.getDeviceId()).append(','); + } + + StringBuilder sb = new StringBuilder(subTag + ": "); + sb.append(ev.getDownTime()).append(','); + sb.append(ev.getEventTime()).append(','); + sb.append(ev.getAction()).append(','); + sb.append(ev.getX()).append(','); + sb.append(ev.getY()).append(','); + sb.append(ev.getPressure()).append(','); + sb.append(ev.getSize()).append(','); + sb.append(ev.getMetaState()).append(','); + sb.append(ev.getXPrecision()).append(','); + sb.append(ev.getYPrecision()).append(','); + sb.append(ev.getDeviceId()).append(','); sb.append(ev.getEdgeFlags()); - Log.d(TAG, sb.toString()); + Log.d(TAG, sb.toString()); } /** - * log motion events + * log motion events */ private static void captureKeyLog(String subTag, KeyEvent ev) { - //check dynamic switch - if (ev == null || + //check dynamic switch + if (ev == null || SystemProperties.getInt(ViewDebug.SYSTEM_PROPERTY_CAPTURE_EVENT, 0) == 0) { return; } - StringBuilder sb = new StringBuilder(subTag + ": "); + StringBuilder sb = new StringBuilder(subTag + ": "); sb.append(ev.getDownTime()).append(','); sb.append(ev.getEventTime()).append(','); sb.append(ev.getAction()).append(','); - sb.append(ev.getKeyCode()).append(','); + sb.append(ev.getKeyCode()).append(','); sb.append(ev.getRepeatCount()).append(','); sb.append(ev.getMetaState()).append(','); sb.append(ev.getDeviceId()).append(','); sb.append(ev.getScanCode()); - Log.d(TAG, sb.toString()); - } + Log.d(TAG, sb.toString()); + } int enqueuePendingEvent(Object event, boolean sendDone) { int seq = mPendingEventSeq+1; @@ -2181,7 +2221,7 @@ public final class ViewRoot extends Handler implements ViewParent, } return event; } - + private void deliverKeyEvent(KeyEvent event, boolean sendDone) { // If mView is null, we just consume the key event because it doesn't // make sense to do anything else with it. @@ -2238,7 +2278,7 @@ public final class ViewRoot extends Handler implements ViewParent, } } } - + private void deliverKeyEventToViewHierarchy(KeyEvent event, boolean sendDone) { try { if (mView != null && mAdded) { @@ -2247,8 +2287,8 @@ public final class ViewRoot extends Handler implements ViewParent, if (checkForLeavingTouchModeAndConsume(event)) { return; - } - + } + if (Config.LOGV) { captureKeyLog("captureDispatchKeyEvent", event); } @@ -2324,24 +2364,31 @@ public final class ViewRoot extends Handler implements ViewParent, private int relayoutWindow(WindowManager.LayoutParams params, int viewVisibility, boolean insetsPending) throws RemoteException { + float appScale = mAttachInfo.mApplicationScale; boolean restore = false; - if (params != null && mAppScale != 1.0f) { + if (params != null && mTranslator != null) { restore = true; - params.scale(mAppScale, mWindowLayoutParamsBackup); + params.backup(); + mTranslator.translateWindowLayout(params); + } + if (params != null) { + if (DBG) Log.d(TAG, "WindowLayout in layoutWindow:" + params); } int relayoutResult = sWindowSession.relayout( mWindow, params, - (int) (mView.mMeasuredWidth * mAppScale), - (int) (mView.mMeasuredHeight * mAppScale), + (int) (mView.mMeasuredWidth * appScale), + (int) (mView.mMeasuredHeight * appScale), viewVisibility, insetsPending, mWinFrame, mPendingContentInsets, mPendingVisibleInsets, mSurface); if (restore) { - params.restore(mWindowLayoutParamsBackup); + params.restore(); + } + + if (mTranslator != null) { + mTranslator.translateRectInScreenToAppWinFrame(mWinFrame); + mTranslator.translateRectInScreenToAppWindow(mPendingContentInsets); + mTranslator.translateRectInScreenToAppWindow(mPendingVisibleInsets); } - - mPendingContentInsets.scale(mAppScaleInverted); - mPendingVisibleInsets.scale(mAppScaleInverted); - mWinFrame.scale(mAppScaleInverted); return relayoutResult; } @@ -2448,11 +2495,14 @@ public final class ViewRoot extends Handler implements ViewParent, + " visibleInsets=" + visibleInsets.toShortString() + " reportDraw=" + reportDraw); Message msg = obtainMessage(reportDraw ? RESIZED_REPORT :RESIZED); - - coveredInsets.scale(mAppScaleInverted); - visibleInsets.scale(mAppScaleInverted); - msg.arg1 = (int) (w * mAppScaleInverted); - msg.arg2 = (int) (h * mAppScaleInverted); + if (mTranslator != null) { + mTranslator.translateRectInScreenToAppWindow(coveredInsets); + mTranslator.translateRectInScreenToAppWindow(visibleInsets); + w *= mTranslator.applicationInvertedScale; + h *= mTranslator.applicationInvertedScale; + } + msg.arg1 = w; + msg.arg2 = h; msg.obj = new Rect[] { new Rect(coveredInsets), new Rect(visibleInsets) }; sendMessage(msg); } @@ -2511,6 +2561,21 @@ public final class ViewRoot extends Handler implements ViewParent, sendMessage(msg); } + /** + * The window is getting focus so if there is anything focused/selected + * send an {@link AccessibilityEvent} to announce that. + */ + private void sendAccessibilityEvents() { + if (!AccessibilityManager.getInstance(mView.getContext()).isEnabled()) { + return; + } + mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + View focusedView = mView.findFocus(); + if (focusedView != null && focusedView != mView) { + focusedView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); + } + } + public boolean showContextMenuForChild(View originalView) { return false; } @@ -2540,14 +2605,14 @@ public final class ViewRoot extends Handler implements ViewParent, boolean immediate) { return scrollToRectOrFocus(rectangle, immediate); } - + static class InputMethodCallback extends IInputMethodCallback.Stub { private WeakReference mViewRoot; public InputMethodCallback(ViewRoot viewRoot) { mViewRoot = new WeakReference(viewRoot); } - + public void finishedEvent(int seq, boolean handled) { final ViewRoot viewRoot = mViewRoot.get(); if (viewRoot != null) { @@ -2559,13 +2624,13 @@ public final class ViewRoot extends Handler implements ViewParent, // Stub -- not for use in the client. } } - + static class EventCompletion extends Handler { final IWindow mWindow; final KeyEvent mKeyEvent; final boolean mIsPointer; final MotionEvent mMotionEvent; - + EventCompletion(Looper looper, IWindow window, KeyEvent key, boolean isPointer, MotionEvent motion) { super(looper); @@ -2575,7 +2640,7 @@ public final class ViewRoot extends Handler implements ViewParent, mMotionEvent = motion; sendEmptyMessage(0); } - + @Override public void handleMessage(Message msg) { if (mKeyEvent != null) { @@ -2617,7 +2682,7 @@ public final class ViewRoot extends Handler implements ViewParent, } } } - + static class W extends IWindow.Stub { private final WeakReference mViewRoot; private final Looper mMainLooper; @@ -2739,14 +2804,14 @@ public final class ViewRoot extends Handler implements ViewParent, * The maximum amount of acceleration we will apply. */ static final float MAX_ACCELERATION = 20; - + /** * The maximum amount of time (in milliseconds) between events in order * for us to consider the user to be doing fast trackball movements, * and thus apply an acceleration. */ static final long FAST_MOVE_TIME = 150; - + /** * Scaling factor to the time (in milliseconds) between events to how * much to multiple/divide the current acceleration. When movement @@ -2754,7 +2819,7 @@ public final class ViewRoot extends Handler implements ViewParent, * FAST_MOVE_TIME it divides it. */ static final float ACCEL_MOVE_SCALING_FACTOR = (1.0f/40); - + float position; float absPosition; float acceleration = 1; @@ -2806,7 +2871,7 @@ public final class ViewRoot extends Handler implements ViewParent, } else { normTime = 0; } - + // The number of milliseconds between each movement that is // considered "normal" and will not result in any acceleration // or deceleration, scaled by the offset we have here. @@ -2964,7 +3029,7 @@ public final class ViewRoot extends Handler implements ViewParent, sRunQueues.set(rq); return rq; } - + /** * @hide */ diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java index 428de67ee80e..d7457a030468 100644 --- a/core/java/android/view/Window.java +++ b/core/java/android/view/Window.java @@ -24,7 +24,7 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.IBinder; -import android.util.Log; +import android.view.accessibility.AccessibilityEvent; /** * Abstract base class for a top-level window look and behavior policy. An @@ -153,7 +153,16 @@ public abstract class Window { * @return boolean Return true if this event was consumed. */ public boolean dispatchTrackballEvent(MotionEvent event); - + + /** + * Called to process population of {@link AccessibilityEvent}s. + * + * @param event The event. + * + * @return boolean Return true if event population was completed. + */ + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event); + /** * Instantiate the view to display in the panel for 'featureId'. * You can return null, in which case the default content (typically @@ -367,8 +376,14 @@ public abstract class Window { String title; if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA) { title="Media"; + } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA_OVERLAY) { + title="MediaOvr"; } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_PANEL) { title="Panel"; + } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL) { + title="SubPanel"; + } else if (wp.type == WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG) { + title="AtchDlg"; } else { title=Integer.toString(wp.type); } diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index c69c28154c2d..bdb86d703b3b 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -18,7 +18,6 @@ package android.view; import android.content.pm.ActivityInfo; import android.graphics.PixelFormat; -import android.graphics.Rect; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; @@ -209,6 +208,15 @@ public interface WindowManager extends ViewManager { */ public static final int TYPE_APPLICATION_ATTACHED_DIALOG = FIRST_SUB_WINDOW+3; + /** + * Window type: window for showing overlays on top of media windows. + * These windows are displayed between TYPE_APPLICATION_MEDIA and the + * application window. They should be translucent to be useful. This + * is a big ugly hack so: + * @hide + */ + public static final int TYPE_APPLICATION_MEDIA_OVERLAY = FIRST_SUB_WINDOW+4; + /** * End of types of sub-windows. */ @@ -466,6 +474,21 @@ public interface WindowManager extends ViewManager { */ public static final int FLAG_WATCH_OUTSIDE_TOUCH = 0x00040000; + /** Window flag: special flag to let windows be shown when the screen + * is locked. This will let application windows take precedence over + * key guard or any other lock screens. Can be used with + * {@link #FLAG_KEEP_SCREEN_ON} to turn screen on and display windows + * directly before showing the key guard window + * + * {@hide} */ + public static final int FLAG_SHOW_WHEN_LOCKED = 0x00080000; + + /** Window flag: special flag to let a window ignore the compatibility scaling. + * This is used by SurfaceView to create a window that does not scale the content. + * + * {@hide} */ + public static final int FLAG_NO_COMPATIBILITY_SCALING = 0x00100000; + /** Window flag: a special option intended for system dialogs. When * this flag is set, the window will demand focus unconditionally when * it is created. @@ -787,6 +810,7 @@ public interface WindowManager extends ViewManager { screenOrientation = in.readInt(); } + @SuppressWarnings({"PointlessBitwiseExpression"}) public static final int LAYOUT_CHANGED = 1<<0; public static final int TYPE_CHANGED = 1<<1; public static final int FLAGS_CHANGED = 1<<2; @@ -800,6 +824,9 @@ public interface WindowManager extends ViewManager { public static final int SCREEN_ORIENTATION_CHANGED = 1<<10; public static final int SCREEN_BRIGHTNESS_CHANGED = 1<<11; + // internal buffer to backup/restore parameters under compatibility mode. + private int[] mCompatibilityParamsBackup = null; + public final int copyFrom(LayoutParams o) { int changes = 0; @@ -957,36 +984,45 @@ public interface WindowManager extends ViewManager { /** * Scale the layout params' coordinates and size. - * Returns the original info as a backup so that the caller can - * restore the layout params; - */ - void scale(float scale, int[] backup) { - if (scale != 1.0f) { - backup[0] = x; - backup[1] = y; - x *= scale; - y *= scale; - if (width > 0) { - backup[2] = width; - width *= scale; - } - if (height > 0) { - backup[3] = height; - height *= scale; - } + * @hide + */ + public void scale(float scale) { + x *= scale; + y *= scale; + if (width > 0) { + width *= scale; + } + if (height > 0) { + height *= scale; } } /** - * Restore the layout params' coordinates and size. - */ - void restore(int[] backup) { - x = backup[0]; - y = backup[1]; - if (width > 0) { - width = backup[2]; + * Backup the layout parameters used in compatibility mode. + * @see LayoutParams#restore() + */ + void backup() { + int[] backup = mCompatibilityParamsBackup; + if (backup == null) { + // we backup 4 elements, x, y, width, height + backup = mCompatibilityParamsBackup = new int[4]; } - if (height > 0) { + backup[0] = x; + backup[1] = y; + backup[2] = width; + backup[3] = height; + } + + /** + * Restore the layout params' coordinates, size and gravity + * @see LayoutParams#backup() + */ + void restore() { + int[] backup = mCompatibilityParamsBackup; + if (backup != null) { + x = backup[0]; + y = backup[1]; + width = backup[2]; height = backup[3]; } } diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java index 755d7b8cf289..0973599509b1 100644 --- a/core/java/android/view/WindowManagerImpl.java +++ b/core/java/android/view/WindowManagerImpl.java @@ -173,7 +173,6 @@ public class WindowManagerImpl implements WindowManager { mRoots[index] = root; mParams[index] = wparams; } - // do this last because it fires off messages to start doing things root.setView(view, wparams, panelParentView); } diff --git a/core/java/android/view/accessibility/AccessibilityEvent.aidl b/core/java/android/view/accessibility/AccessibilityEvent.aidl new file mode 100644 index 000000000000..cee360475036 --- /dev/null +++ b/core/java/android/view/accessibility/AccessibilityEvent.aidl @@ -0,0 +1,19 @@ +/** + * 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; + +parcelable AccessibilityEvent; diff --git a/core/java/android/view/accessibility/AccessibilityEvent.java b/core/java/android/view/accessibility/AccessibilityEvent.java new file mode 100644 index 000000000000..c22f991183b0 --- /dev/null +++ b/core/java/android/view/accessibility/AccessibilityEvent.java @@ -0,0 +1,734 @@ +/* + * 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.os.Parcel; +import android.os.Parcelable; +import android.text.TextUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * This class represents accessibility events that are sent by the system when + * something notable happens in the user interface. For example, when a + * {@link android.widget.Button} is clicked, a {@link android.view.View} is focused, etc. + *

      + * This class represents various semantically different accessibility event + * types. Each event type has associated a set of related properties. In other + * words, each event type is characterized via a subset of the properties exposed + * by this class. For each event type there is a corresponding constant defined + * in this class. Since some event types are semantically close there are mask + * constants that group them together. Follows a specification of the event + * types and their associated properties: + *

      + * VIEW TYPES
      + *

      + * View clicked - represents the event of clicking on a {@link android.view.View} + * like {@link android.widget.Button}, {@link android.widget.CompoundButton}, etc.
      + * Type:{@link #TYPE_VIEW_CLICKED}
      + * Properties: + * {@link #getClassName()}, + * {@link #getPackageName()}, + * {@link #getEventTime()}, + * {@link #getText()}, + * {@link #isChecked()}, + * {@link #isEnabled()}, + * {@link #isPassword()}, + * {@link #getItemCount()}, + * {@link #getCurrentItemIndex()} + *

      + * View long clicked - represents the event of long clicking on a {@link android.view.View} + * like {@link android.widget.Button}, {@link android.widget.CompoundButton}, etc.
      + * Type:{@link #TYPE_VIEW_LONG_CLICKED}
      + * Properties: + * {@link #getClassName()}, + * {@link #getPackageName()}, + * {@link #getEventTime()}, + * {@link #getText()}, + * {@link #isChecked()}, + * {@link #isEnabled()}, + * {@link #isPassword()}, + * {@link #getItemCount()}, + * {@link #getCurrentItemIndex()} + *

      + * View selected - represents the event of selecting an item usually in + * the context of an {@link android.widget.AdapterView}.
      + * Type: {@link #TYPE_VIEW_SELECTED}
      + * Properties: + * {@link #getClassName()}, + * {@link #getPackageName()}, + * {@link #getEventTime()}, + * {@link #getText()}, + * {@link #isChecked()}, + * {@link #isEnabled()}, + * {@link #isPassword()}, + * {@link #getItemCount()}, + * {@link #getCurrentItemIndex()} + *

      + * View focused - represents the event of focusing a + * {@link android.view.View}.
      + * Type: {@link #TYPE_VIEW_FOCUSED}
      + * Properties: + * {@link #getClassName()}, + * {@link #getPackageName()}, + * {@link #getEventTime()}, + * {@link #getText()}, + * {@link #isChecked()}, + * {@link #isEnabled()}, + * {@link #isPassword()}, + * {@link #getItemCount()}, + * {@link #getCurrentItemIndex()} + *

      + * View text changed - represents the event of changing the text of an + * {@link android.widget.EditText}.
      + * Type: {@link #TYPE_VIEW_TEXT_CHANGED}
      + * Properties: + * {@link #getClassName()}, + * {@link #getPackageName()}, + * {@link #getEventTime()}, + * {@link #getText()}, + * {@link #isChecked()}, + * {@link #isEnabled()}, + * {@link #isPassword()}, + * {@link #getItemCount()}, + * {@link #getCurrentItemIndex()}, + * {@link #getFromIndex()}, + * {@link #getAddedCount()}, + * {@link #getRemovedCount()}, + * {@link #getBeforeText()} + *

      + * TRANSITION TYPES
      + *

      + * Window state changed - represents the event of opening/closing a + * {@link android.widget.PopupWindow}, {@link android.view.Menu}, + * {@link android.app.Dialog}, etc.
      + * Type: {@link #TYPE_WINDOW_STATE_CHANGED}
      + * Properties: + * {@link #getClassName()}, + * {@link #getPackageName()}, + * {@link #getEventTime()}, + * {@link #getText()} + *

      + * NOTIFICATION TYPES
      + *

      + * Notification state changed - represents the event showing/hiding + * {@link android.app.Notification}. + * Type: {@link #TYPE_NOTIFICATION_STATE_CHANGED}
      + * Properties: + * {@link #getClassName()}, + * {@link #getPackageName()}, + * {@link #getEventTime()}, + * {@link #getText()} + * {@link #getParcelableData()} + *

      + * Security note + *

      + * Since an event contains the text of its source privacy can be compromised by leaking of + * sensitive information such as passwords. To address this issue any event fired in response + * to manipulation of a PASSWORD field does NOT CONTAIN the text of the password. + * + * @see android.view.accessibility.AccessibilityManager + * @see android.accessibilityservice.AccessibilityService + */ +public final class AccessibilityEvent implements Parcelable { + + /** + * Invalid selection/focus position. + * + * @see #getCurrentItemIndex() + */ + public static final int INVALID_POSITION = -1; + + /** + * Maximum length of the text fields. + * + * @see #getBeforeText() + * @see #getText() + */ + public static final int MAX_TEXT_LENGTH = 500; + + /** + * Represents the event of clicking on a {@link android.view.View} like + * {@link android.widget.Button}, {@link android.widget.CompoundButton}, etc. + */ + public static final int TYPE_VIEW_CLICKED = 0x00000001; + + /** + * Represents the event of long clicking on a {@link android.view.View} like + * {@link android.widget.Button}, {@link android.widget.CompoundButton}, etc. + */ + public static final int TYPE_VIEW_LONG_CLICKED = 0x00000002; + + /** + * Represents the event of selecting an item usually in the context of an + * {@link android.widget.AdapterView}. + */ + public static final int TYPE_VIEW_SELECTED = 0x00000004; + + /** + * Represents the event of focusing a {@link android.view.View}. + */ + public static final int TYPE_VIEW_FOCUSED = 0x00000008; + + /** + * Represents the event of changing the text of an {@link android.widget.EditText}. + */ + public static final int TYPE_VIEW_TEXT_CHANGED = 0x00000010; + + /** + * Represents the event of opening/closing a {@link android.widget.PopupWindow}, + * {@link android.view.Menu}, {@link android.app.Dialog}, etc. + */ + public static final int TYPE_WINDOW_STATE_CHANGED = 0x00000020; + + /** + * Represents the event showing/hiding a {@link android.app.Notification}. + */ + public static final int TYPE_NOTIFICATION_STATE_CHANGED = 0x00000040; + + /** + * Mask for {@link AccessibilityEvent} all types. + * + * @see #TYPE_VIEW_CLICKED + * @see #TYPE_VIEW_LONG_CLICKED + * @see #TYPE_VIEW_SELECTED + * @see #TYPE_VIEW_FOCUSED + * @see #TYPE_VIEW_TEXT_CHANGED + * @see #TYPE_WINDOW_STATE_CHANGED + * @see #TYPE_NOTIFICATION_STATE_CHANGED + */ + public static final int TYPES_ALL_MASK = 0xFFFFFFFF; + + private static final int MAX_POOL_SIZE = 2; + private static final Object mPoolLock = new Object(); + private static AccessibilityEvent sPool; + private static int sPoolSize; + + private static final int CHECKED = 0x00000001; + private static final int ENABLED = 0x00000002; + private static final int PASSWORD = 0x00000004; + private static final int FULL_SCREEN = 0x00000080; + + private AccessibilityEvent mNext; + + private int mEventType; + private int mBooleanProperties; + private int mCurrentItemIndex; + private int mItemCount; + private int mFromIndex; + private int mAddedCount; + private int mRemovedCount; + + private long mEventTime; + + private CharSequence mClassName; + private CharSequence mPackageName; + private CharSequence mContentDescription; + private CharSequence mBeforeText; + + private Parcelable mParcelableData; + + private final List mText = new ArrayList(); + + private boolean mIsInPool; + + /* + * Hide constructor from clients. + */ + private AccessibilityEvent() { + mCurrentItemIndex = INVALID_POSITION; + } + + /** + * Gets if the source is checked. + * + * @return True if the view is checked, false otherwise. + */ + public boolean isChecked() { + return getBooleanProperty(CHECKED); + } + + /** + * Sets if the source is checked. + * + * @param isChecked True if the view is checked, false otherwise. + */ + public void setChecked(boolean isChecked) { + setBooleanProperty(CHECKED, isChecked); + } + + /** + * Gets if the source is enabled. + * + * @return True if the view is enabled, false otherwise. + */ + public boolean isEnabled() { + return getBooleanProperty(ENABLED); + } + + /** + * Sets if the source is enabled. + * + * @param isEnabled True if the view is enabled, false otherwise. + */ + public void setEnabled(boolean isEnabled) { + setBooleanProperty(ENABLED, isEnabled); + } + + /** + * Gets if the source is a password field. + * + * @return True if the view is a password field, false otherwise. + */ + public boolean isPassword() { + return getBooleanProperty(PASSWORD); + } + + /** + * Sets if the source is a password field. + * + * @param isPassword True if the view is a password field, false otherwise. + */ + public void setPassword(boolean isPassword) { + setBooleanProperty(PASSWORD, isPassword); + } + + /** + * Sets if the source is taking the entire screen. + * + * @param isFullScreen True if the source is full screen, false otherwise. + */ + public void setFullScreen(boolean isFullScreen) { + setBooleanProperty(FULL_SCREEN, isFullScreen); + } + + /** + * Gets if the source is taking the entire screen. + * + * @return True if the source is full screen, false otherwise. + */ + public boolean isFullScreen() { + return getBooleanProperty(FULL_SCREEN); + } + + /** + * Gets the event type. + * + * @return The event type. + */ + public int getEventType() { + return mEventType; + } + + /** + * Sets the event type. + * + * @param eventType The event type. + */ + public void setEventType(int eventType) { + mEventType = eventType; + } + + /** + * Gets the number of items that can be visited. + * + * @return The number of items. + */ + public int getItemCount() { + return mItemCount; + } + + /** + * Sets the number of items that can be visited. + * + * @param itemCount The number of items. + */ + public void setItemCount(int itemCount) { + mItemCount = itemCount; + } + + /** + * Gets the index of the source in the list of items the can be visited. + * + * @return The current item index. + */ + public int getCurrentItemIndex() { + return mCurrentItemIndex; + } + + /** + * Sets the index of the source in the list of items that can be visited. + * + * @param currentItemIndex The current item index. + */ + public void setCurrentItemIndex(int currentItemIndex) { + mCurrentItemIndex = currentItemIndex; + } + + /** + * Gets the index of the first character of the changed sequence. + * + * @return The index of the first character. + */ + public int getFromIndex() { + return mFromIndex; + } + + /** + * Sets the index of the first character of the changed sequence. + * + * @param fromIndex The index of the first character. + */ + public void setFromIndex(int fromIndex) { + mFromIndex = fromIndex; + } + + /** + * Gets the number of added characters. + * + * @return The number of added characters. + */ + public int getAddedCount() { + return mAddedCount; + } + + /** + * Sets the number of added characters. + * + * @param addedCount The number of added characters. + */ + public void setAddedCount(int addedCount) { + mAddedCount = addedCount; + } + + /** + * Gets the number of removed characters. + * + * @return The number of removed characters. + */ + public int getRemovedCount() { + return mRemovedCount; + } + + /** + * Sets the number of removed characters. + * + * @param removedCount The number of removed characters. + */ + public void setRemovedCount(int removedCount) { + mRemovedCount = removedCount; + } + + /** + * Gets the time in which this event was sent. + * + * @return The event time. + */ + public long getEventTime() { + return mEventTime; + } + + /** + * Sets the time in which this event was sent. + * + * @param eventTime The event time. + */ + public void setEventTime(long eventTime) { + mEventTime = eventTime; + } + + /** + * Gets the class name of the source. + * + * @return The class name. + */ + public CharSequence getClassName() { + return mClassName; + } + + /** + * Sets the class name of the source. + * + * @param className The lass name. + */ + public void setClassName(CharSequence className) { + mClassName = className; + } + + /** + * Gets the package name of the source. + * + * @return The package name. + */ + public CharSequence getPackageName() { + return mPackageName; + } + + /** + * Sets the package name of the source. + * + * @param packageName The package name. + */ + public void setPackageName(CharSequence packageName) { + mPackageName = packageName; + } + + /** + * Gets the text of the event. The index in the list represents the priority + * of the text. Specifically, the lower the index the higher the priority. + * + * @return The text. + */ + public List getText() { + return mText; + } + + /** + * Sets the text before a change. + * + * @return The text before the change. + */ + public CharSequence getBeforeText() { + return mBeforeText; + } + + /** + * Sets the text before a change. + * + * @param beforeText The text before the change. + */ + public void setBeforeText(CharSequence beforeText) { + mBeforeText = beforeText; + } + + /** + * Gets the description of the source. + * + * @return The description. + */ + public CharSequence getContentDescription() { + return mContentDescription; + } + + /** + * Sets the description of the source. + * + * @param contentDescription The description. + */ + public void setContentDescription(CharSequence contentDescription) { + mContentDescription = contentDescription; + } + + /** + * Gets the {@link Parcelable} data. + * + * @return The parcelable data. + */ + public Parcelable getParcelableData() { + return mParcelableData; + } + + /** + * Sets the {@link Parcelable} data of the event. + * + * @param parcelableData The parcelable data. + */ + public void setParcelableData(Parcelable parcelableData) { + mParcelableData = parcelableData; + } + + /** + * Returns a cached instance if such is available or a new one is + * instantiated with type property set. + * + * @param eventType The event type. + * @return An instance. + */ + public static AccessibilityEvent obtain(int eventType) { + AccessibilityEvent event = AccessibilityEvent.obtain(); + event.setEventType(eventType); + return event; + } + + /** + * Returns a cached instance if such is available or a new one is + * instantiated. + * + * @return An instance. + */ + public static AccessibilityEvent obtain() { + synchronized (mPoolLock) { + if (sPool != null) { + AccessibilityEvent event = sPool; + sPool = sPool.mNext; + sPoolSize--; + event.mNext = null; + event.mIsInPool = false; + return event; + } + return new AccessibilityEvent(); + } + } + + /** + * Return an instance back to be reused. + *

      + * Note: You must not touch the object after calling this function. + */ + public void recycle() { + if (mIsInPool) { + return; + } + + clear(); + synchronized (mPoolLock) { + if (sPoolSize <= MAX_POOL_SIZE) { + mNext = sPool; + sPool = this; + mIsInPool = true; + sPoolSize++; + } + } + } + + /** + * Clears the state of this instance. + */ + private void clear() { + mEventType = 0; + mBooleanProperties = 0; + mCurrentItemIndex = INVALID_POSITION; + mItemCount = 0; + mFromIndex = 0; + mAddedCount = 0; + mRemovedCount = 0; + mEventTime = 0; + mClassName = null; + mPackageName = null; + mContentDescription = null; + mBeforeText = null; + mText.clear(); + } + + /** + * Gets the value of a boolean property. + * + * @param property The property. + * @return The value. + */ + private boolean getBooleanProperty(int property) { + return (mBooleanProperties & property) == property; + } + + /** + * Sets a boolean property. + * + * @param property The property. + * @param value The value. + */ + private void setBooleanProperty(int property, boolean value) { + if (value) { + mBooleanProperties |= property; + } else { + mBooleanProperties &= ~property; + } + } + + /** + * Creates a new instance from a {@link Parcel}. + * + * @param parcel A parcel containing the state of a {@link AccessibilityEvent}. + */ + public void initFromParcel(Parcel parcel) { + mEventType = parcel.readInt(); + mBooleanProperties = parcel.readInt(); + mCurrentItemIndex = parcel.readInt(); + mItemCount = parcel.readInt(); + mFromIndex = parcel.readInt(); + mAddedCount = parcel.readInt(); + mRemovedCount = parcel.readInt(); + mEventTime = parcel.readLong(); + mClassName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel); + mPackageName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel); + mContentDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel); + mBeforeText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel); + mParcelableData = parcel.readParcelable(null); + parcel.readList(mText, null); + } + + public void writeToParcel(Parcel parcel, int flags) { + parcel.writeInt(mEventType); + parcel.writeInt(mBooleanProperties); + parcel.writeInt(mCurrentItemIndex); + parcel.writeInt(mItemCount); + parcel.writeInt(mFromIndex); + parcel.writeInt(mAddedCount); + parcel.writeInt(mRemovedCount); + parcel.writeLong(mEventTime); + TextUtils.writeToParcel(mClassName, parcel, 0); + TextUtils.writeToParcel(mPackageName, parcel, 0); + TextUtils.writeToParcel(mContentDescription, parcel, 0); + TextUtils.writeToParcel(mBeforeText, parcel, 0); + parcel.writeParcelable(mParcelableData, flags); + parcel.writeList(mText); + } + + public int describeContents() { + return 0; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(super.toString()); + builder.append("; EventType: " + mEventType); + builder.append("; EventTime: " + mEventTime); + builder.append("; ClassName: " + mClassName); + builder.append("; PackageName: " + mPackageName); + builder.append("; Text: " + mText); + builder.append("; ContentDescription: " + mContentDescription); + builder.append("; ItemCount: " + mItemCount); + builder.append("; CurrentItemIndex: " + mCurrentItemIndex); + builder.append("; IsEnabled: " + isEnabled()); + builder.append("; IsPassword: " + isPassword()); + builder.append("; IsChecked: " + isChecked()); + builder.append("; IsFullScreen: " + isFullScreen()); + builder.append("; BeforeText: " + mBeforeText); + builder.append("; FromIndex: " + mFromIndex); + builder.append("; AddedCount: " + mAddedCount); + builder.append("; RemovedCount: " + mRemovedCount); + builder.append("; ParcelableData: " + mParcelableData); + return builder.toString(); + } + + /** + * @see Parcelable.Creator + */ + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + public AccessibilityEvent createFromParcel(Parcel parcel) { + AccessibilityEvent event = AccessibilityEvent.obtain(); + event.initFromParcel(parcel); + return event; + } + + public AccessibilityEvent[] newArray(int size) { + return new AccessibilityEvent[size]; + } + }; +} diff --git a/core/java/android/view/accessibility/AccessibilityEventSource.java b/core/java/android/view/accessibility/AccessibilityEventSource.java new file mode 100644 index 000000000000..3d70959b1ef9 --- /dev/null +++ b/core/java/android/view/accessibility/AccessibilityEventSource.java @@ -0,0 +1,52 @@ +/* + * 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; + +/** + * This interface is implemented by classes source of {@link AccessibilityEvent}s. + */ +public interface AccessibilityEventSource { + + /** + * Handles the request for sending an {@link AccessibilityEvent} given + * the event type. The method must first check if accessibility is on + * via calling {@link AccessibilityManager#isEnabled()}, obtain + * an {@link AccessibilityEvent} from the event pool through calling + * {@link AccessibilityEvent#obtain(int)}, populate the event, and + * send it for dispatch via calling + * {@link AccessibilityManager#sendAccessibilityEvent(AccessibilityEvent)}. + * + * @see AccessibilityEvent + * @see AccessibilityManager + * + * @param eventType The event type. + */ + public void sendAccessibilityEvent(int eventType); + + /** + * Handles the request for sending an {@link AccessibilityEvent}. The + * method does not guarantee to check if accessibility is on before + * sending the event for dispatch. It is responsibility of the caller + * to do the check via calling {@link AccessibilityManager#isEnabled()}. + * + * @see AccessibilityEvent + * @see AccessibilityManager + * + * @param event The event. + */ + public void sendAccessibilityEventUnchecked(AccessibilityEvent event); +} diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java new file mode 100644 index 000000000000..01862700097d --- /dev/null +++ b/core/java/android/view/accessibility/AccessibilityManager.java @@ -0,0 +1,198 @@ +/* + * 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 static android.util.Config.LOGV; + +import android.content.Context; +import android.content.pm.ServiceInfo; +import android.os.Binder; +import android.os.Handler; +import android.os.IBinder; +import android.os.Looper; +import android.os.Message; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.SystemClock; +import android.util.Log; + +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 final String LOG_TAG = "AccessibilityManager"; + + static final Object sInstanceSync = new Object(); + + private static AccessibilityManager sInstance; + + private static final int DO_SET_ENABLED = 10; + + final IAccessibilityManager mService; + + final Handler mHandler; + + boolean mIsEnabled; + + final IAccessibilityManagerClient.Stub mClient = new IAccessibilityManagerClient.Stub() { + public void setEnabled(boolean enabled) { + mHandler.obtainMessage(DO_SET_ENABLED, enabled ? 1 : 0, 0).sendToTarget(); + } + }; + + class MyHandler extends Handler { + + MyHandler(Looper mainLooper) { + super(mainLooper); + } + + @Override + public void handleMessage(Message message) { + switch (message.what) { + case DO_SET_ENABLED : + synchronized (mHandler) { + mIsEnabled = (message.arg1 == 1); + } + return; + default : + Log.w(LOG_TAG, "Unknown message type: " + message.what); + } + } + } + + /** + * Get an AccessibilityManager instance (create one if necessary). + * + * @hide + */ + public static AccessibilityManager getInstance(Context context) { + synchronized (sInstanceSync) { + if (sInstance == null) { + sInstance = new AccessibilityManager(context); + } + } + return sInstance; + } + + /** + * Create an instance. + * + * @param context A {@link Context}. + */ + private AccessibilityManager(Context context) { + mHandler = new MyHandler(context.getMainLooper()); + IBinder iBinder = ServiceManager.getService(Context.ACCESSIBILITY_SERVICE); + mService = IAccessibilityManager.Stub.asInterface(iBinder); + try { + mService.addClient(mClient); + } catch (RemoteException re) { + Log.e(LOG_TAG, "AccessibilityManagerService is dead", re); + } + } + + /** + * Returns if the {@link AccessibilityManager} is enabled. + * + * @return True if this {@link AccessibilityManager} is enabled, false otherwise. + */ + public boolean isEnabled() { + synchronized (mHandler) { + return mIsEnabled; + } + } + + /** + * 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) { + if (!mIsEnabled) { + throw new IllegalStateException("Accessibility off. Did you forget to check that?"); + } + boolean doRecycle = false; + try { + event.setEventTime(SystemClock.uptimeMillis()); + // it is possible that this manager is in the same process as the service but + // client using it is called through Binder from another process. Example: MMS + // app adds a SMS notification and the NotificationManagerService calls this method + long identityToken = Binder.clearCallingIdentity(); + doRecycle = mService.sendAccessibilityEvent(event); + Binder.restoreCallingIdentity(identityToken); + if (LOGV) { + Log.i(LOG_TAG, event + " sent"); + } + } catch (RemoteException re) { + Log.e(LOG_TAG, "Error during sending " + event + " ", re); + } finally { + if (doRecycle) { + event.recycle(); + } + } + } + + /** + * Requests interruption of the accessibility feedback from all accessibility services. + */ + public void interrupt() { + if (!mIsEnabled) { + throw new IllegalStateException("Accessibility off. Did you forget to check that?"); + } + try { + mService.interrupt(); + if (LOGV) { + Log.i(LOG_TAG, "Requested interrupt from all services"); + } + } catch (RemoteException re) { + Log.e(LOG_TAG, "Error while requesting interrupt from all services. ", re); + } + } + + /** + * Returns the {@link ServiceInfo}s of the installed accessibility services. + * + * @return An unmodifiable list with {@link ServiceInfo}s. + */ + public List getAccessibilityServiceList() { + List services = null; + try { + services = mService.getAccessibilityServiceList(); + if (LOGV) { + Log.i(LOG_TAG, "Installed AccessibilityServices " + services); + } + } catch (RemoteException re) { + Log.e(LOG_TAG, "Error while obtaining the installed AccessibilityServices. ", re); + } + return Collections.unmodifiableList(services); + } +} diff --git a/core/java/android/view/accessibility/IAccessibilityManager.aidl b/core/java/android/view/accessibility/IAccessibilityManager.aidl new file mode 100644 index 000000000000..32788be63670 --- /dev/null +++ b/core/java/android/view/accessibility/IAccessibilityManager.aidl @@ -0,0 +1,39 @@ +/* //device/java/android/android/app/INotificationManager.aidl +** +** Copyright 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.view.accessibility.AccessibilityEvent; +import android.view.accessibility.IAccessibilityManagerClient; +import android.content.pm.ServiceInfo; + +/** + * Interface implemented by the AccessibilityManagerService called by + * the AccessibilityMasngers. + * + * @hide + */ +interface IAccessibilityManager { + + void addClient(IAccessibilityManagerClient client); + + boolean sendAccessibilityEvent(in AccessibilityEvent uiEvent); + + List getAccessibilityServiceList(); + + void interrupt(); +} diff --git a/core/java/android/view/accessibility/IAccessibilityManagerClient.aidl b/core/java/android/view/accessibility/IAccessibilityManagerClient.aidl new file mode 100644 index 000000000000..1eb60fc61b48 --- /dev/null +++ b/core/java/android/view/accessibility/IAccessibilityManagerClient.aidl @@ -0,0 +1,29 @@ +/* + * 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; + +/** + * Interface a client of the IAccessibilityManager implements to + * receive information about changes in the manager state. + * + * @hide + */ +oneway interface IAccessibilityManagerClient { + + void setEnabled(boolean enabled); + +} diff --git a/core/java/android/view/inputmethod/BaseInputConnection.java b/core/java/android/view/inputmethod/BaseInputConnection.java index 11de3e2ed433..739373792047 100644 --- a/core/java/android/view/inputmethod/BaseInputConnection.java +++ b/core/java/android/view/inputmethod/BaseInputConnection.java @@ -297,6 +297,10 @@ public class BaseInputConnection implements InputConnection { b = tmp; } + if (a <= 0) { + return ""; + } + if (length > a) { length = a; } @@ -336,10 +340,19 @@ public class BaseInputConnection implements InputConnection { } /** - * The default implementation does nothing. + * The default implementation turns this into the enter key. */ public boolean performEditorAction(int actionCode) { - return false; + long eventTime = SystemClock.uptimeMillis(); + sendKeyEvent(new KeyEvent(eventTime, eventTime, + KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER, 0, 0, 0, 0, + KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE + | KeyEvent.FLAG_EDITOR_ACTION)); + sendKeyEvent(new KeyEvent(SystemClock.uptimeMillis(), eventTime, + KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER, 0, 0, 0, 0, + KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE + | KeyEvent.FLAG_EDITOR_ACTION)); + return true; } /** @@ -488,12 +501,12 @@ public class BaseInputConnection implements InputConnection { } else { a = Selection.getSelectionStart(content); b = Selection.getSelectionEnd(content); - if (a >=0 && b>= 0 && a != b) { - if (b < a) { - int tmp = a; - a = b; - b = tmp; - } + if (a < 0) a = 0; + if (b < 0) b = 0; + if (b < a) { + int tmp = a; + a = b; + b = tmp; } } diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java index ba3f78cf22ec..dbd268291aa2 100644 --- a/core/java/android/webkit/BrowserFrame.java +++ b/core/java/android/webkit/BrowserFrame.java @@ -142,6 +142,17 @@ class BrowserFrame extends Handler { mLoadInitFromJava = false; } + /** + * Load a url with "POST" method from the network into the main frame. + * @param url The url to load. + * @param data The data for POST request. + */ + public void postUrl(String url, byte[] data) { + mLoadInitFromJava = true; + nativePostUrl(url, data); + mLoadInitFromJava = false; + } + /** * Load the content as if it was loaded by the provided base URL. The * failUrl is used as the history entry for the load data. If null or @@ -752,6 +763,8 @@ class BrowserFrame extends Handler { */ private native void nativeLoadUrl(String url); + private native void nativePostUrl(String url, byte[] postData); + private native void nativeLoadData(String baseUrl, String data, String mimeType, String encoding, String failUrl); diff --git a/core/java/android/webkit/ByteArrayBuilder.java b/core/java/android/webkit/ByteArrayBuilder.java index 806b458fa8c0..145411cf7a6a 100644 --- a/core/java/android/webkit/ByteArrayBuilder.java +++ b/core/java/android/webkit/ByteArrayBuilder.java @@ -17,6 +17,7 @@ package android.webkit; import java.util.LinkedList; +import java.util.ListIterator; /** Utility class optimized for accumulating bytes, and then spitting them back out. It does not optimize for returning the result in a @@ -94,6 +95,20 @@ class ByteArrayBuilder { return mChunks.isEmpty(); } + public int size() { + return mChunks.size(); + } + + public int getByteSize() { + int total = 0; + ListIterator it = mChunks.listIterator(0); + while (it.hasNext()) { + Chunk c = it.next(); + total += c.mLength; + } + return total; + } + public synchronized void clear() { Chunk c = getFirstChunk(); while (c != null) { diff --git a/core/java/android/webkit/FrameLoader.java b/core/java/android/webkit/FrameLoader.java index 6f1b16047950..66ab0213543c 100644 --- a/core/java/android/webkit/FrameLoader.java +++ b/core/java/android/webkit/FrameLoader.java @@ -364,7 +364,7 @@ class FrameLoader { String cookie = CookieManager.getInstance().getCookie( mListener.getWebAddress()); if (cookie != null && cookie.length() > 0) { - mHeaders.put("cookie", cookie); + mHeaders.put("Cookie", cookie); } } } diff --git a/core/java/android/webkit/JWebCoreJavaBridge.java b/core/java/android/webkit/JWebCoreJavaBridge.java index 2a84683cdc86..1dbd007886f1 100644 --- a/core/java/android/webkit/JWebCoreJavaBridge.java +++ b/core/java/android/webkit/JWebCoreJavaBridge.java @@ -18,6 +18,7 @@ package android.webkit; import android.os.Handler; import android.os.Message; +import android.security.CertTool; import android.util.Log; final class JWebCoreJavaBridge extends Handler { @@ -186,6 +187,15 @@ final class JWebCoreJavaBridge extends Handler { mHasInstantTimer = false; } + private String[] getKeyStrengthList() { + return CertTool.getInstance().getSupportedKeyStrenghs(); + } + + private String getSignedPublicKey(int index, String challenge, String url) { + // generateKeyPair expects organizations which we don't have. Ignore url. + return CertTool.getInstance().generateKeyPair(index, challenge, null); + } + private native void nativeConstructor(); private native void nativeFinalize(); private native void sharedTimerFired(); diff --git a/core/java/android/webkit/LoadListener.java b/core/java/android/webkit/LoadListener.java index d583eb18a043..39360cd72a23 100644 --- a/core/java/android/webkit/LoadListener.java +++ b/core/java/android/webkit/LoadListener.java @@ -25,16 +25,16 @@ import android.net.http.HttpAuthHeader; import android.net.http.RequestHandle; import android.net.http.SslCertificate; import android.net.http.SslError; -import android.net.http.SslCertificate; import android.os.Handler; import android.os.Message; +import android.security.CertTool; import android.util.Log; import android.webkit.CacheManager.CacheResult; +import android.widget.Toast; import com.android.internal.R; -import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -72,6 +72,8 @@ class LoadListener extends Handler implements EventHandler { private static final int HTTP_NOT_FOUND = 404; private static final int HTTP_PROXY_AUTH = 407; + private static final String CERT_MIMETYPE = "application/x-x509-ca-cert"; + private static int sNativeLoaderCount; private final ByteArrayBuilder mDataBuilder = new ByteArrayBuilder(8192); @@ -934,6 +936,12 @@ class LoadListener extends Handler implements EventHandler { // This commits the headers without checking the response status code. private void commitHeaders() { + if (mIsMainPageLoader && CERT_MIMETYPE.equals(mMimeType)) { + // In the case of downloading certificate, we will save it to the + // Keystore in commitLoad. Do not call webcore. + return; + } + // Commit the headers to WebCore int nativeResponse = createNativeResponse(); // The native code deletes the native response object. @@ -974,6 +982,30 @@ class LoadListener extends Handler implements EventHandler { private void commitLoad() { if (mCancelled) return; + if (mIsMainPageLoader && CERT_MIMETYPE.equals(mMimeType)) { + // In the case of downloading certificate, we will save it to the + // Keystore and stop the current loading so that it will not + // generate a new history page + byte[] cert = new byte[mDataBuilder.getByteSize()]; + int position = 0; + ByteArrayBuilder.Chunk c; + while (true) { + c = mDataBuilder.getFirstChunk(); + if (c == null) break; + + if (c.mLength != 0) { + System.arraycopy(c.mArray, 0, cert, position, c.mLength); + position += c.mLength; + } + mDataBuilder.releaseChunk(c); + } + CertTool.getInstance().addCertificate(cert, mContext); + Toast.makeText(mContext, R.string.certificateSaved, + Toast.LENGTH_SHORT).show(); + mBrowserFrame.stopLoading(); + return; + } + // Give the data to WebKit now PerfChecker checker = new PerfChecker(); ByteArrayBuilder.Chunk c; diff --git a/core/java/android/webkit/TextDialog.java b/core/java/android/webkit/TextDialog.java index 9de97c92267b..99de56d7db5d 100644 --- a/core/java/android/webkit/TextDialog.java +++ b/core/java/android/webkit/TextDialog.java @@ -538,7 +538,8 @@ import java.util.ArrayList; * removing the password input type. */ public void setSingleLine(boolean single) { - int inputType = EditorInfo.TYPE_CLASS_TEXT; + int inputType = EditorInfo.TYPE_CLASS_TEXT + | EditorInfo.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT; if (!single) { inputType |= EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE | EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java index 105eacdca754..ec671d5dac52 100644 --- a/core/java/android/webkit/WebSettings.java +++ b/core/java/android/webkit/WebSettings.java @@ -69,7 +69,24 @@ public class WebSettings { } int value; } - + + /** + * Enum for specifying the WebView's desired density. + * FAR makes 100% looking like in 240dpi + * MEDIUM makes 100% looking like in 160dpi + * CLOSE makes 100% looking like in 120dpi + * @hide Pending API council approval + */ + public enum ZoomDensity { + FAR(150), // 240dpi + MEDIUM(100), // 160dpi + CLOSE(75); // 120dpi + ZoomDensity(int size) { + value = size; + } + int value; + } + /** * Default cache usage pattern Use with {@link #setCacheMode}. */ @@ -105,6 +122,8 @@ public class WebSettings { LOW } + // WebView associated with this WebSettings. + private WebView mWebView; // BrowserFrame used to access the native frame pointer. private BrowserFrame mBrowserFrame; // Flag to prevent multiple SYNC messages at one time. @@ -123,7 +142,7 @@ public class WebSettings { private String mSerifFontFamily = "serif"; private String mCursiveFontFamily = "cursive"; private String mFantasyFontFamily = "fantasy"; - private String mDefaultTextEncoding = "Latin-1"; + private String mDefaultTextEncoding; private String mUserAgent; private boolean mUseDefaultUserAgent; private String mAcceptLanguage; @@ -145,6 +164,7 @@ public class WebSettings { // Don't need to synchronize the get/set methods as they // are basic types, also none of these values are used in // native WebCore code. + private ZoomDensity mDefaultZoom = ZoomDensity.MEDIUM; private RenderPriority mRenderPriority = RenderPriority.NORMAL; private int mOverrideCacheMode = LOAD_DEFAULT; private boolean mSaveFormData = true; @@ -237,9 +257,12 @@ public class WebSettings { * Package constructor to prevent clients from creating a new settings * instance. */ - WebSettings(Context context) { + WebSettings(Context context, WebView webview) { mEventHandler = new EventHandler(); mContext = context; + mWebView = webview; + mDefaultTextEncoding = context.getString(com.android.internal. + R.string.default_text_encoding); if (sLockForLocaleSettings == null) { sLockForLocaleSettings = new Object(); @@ -444,6 +467,31 @@ public class WebSettings { return mTextSize; } + /** + * Set the default zoom density of the page. This should be called from UI + * thread. + * @param zoom A ZoomDensity value + * @see WebSettings.ZoomDensity + * @hide Pending API council approval + */ + public void setDefaultZoom(ZoomDensity zoom) { + if (mDefaultZoom != zoom) { + mDefaultZoom = zoom; + mWebView.updateDefaultZoomDensity(zoom.value); + } + } + + /** + * Get the default zoom density of the page. This should be called from UI + * thread. + * @return A ZoomDensity value + * @see WebSettings.ZoomDensity + * @hide Pending API council approval + */ + public ZoomDensity getDefaultZoom() { + return mDefaultZoom; + } + /** * Enables using light touches to make a selection and activate mouseovers. */ diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 563d819d301f..fcf946f7d12a 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -237,6 +237,7 @@ public class WebView extends AbsoluteLayout * Helper class to get velocity for fling */ VelocityTracker mVelocityTracker; + private int mMaximumFling; /** * Touch mode @@ -395,22 +396,27 @@ public class WebView extends AbsoluteLayout // width which view is considered to be fully zoomed out static final int ZOOM_OUT_WIDTH = 1008; - private static final float DEFAULT_MAX_ZOOM_SCALE = 4.0f; - private static final float DEFAULT_MIN_ZOOM_SCALE = 0.25f; + // default scale limit. Depending on the display density + private static float DEFAULT_MAX_ZOOM_SCALE; + private static float DEFAULT_MIN_ZOOM_SCALE; // scale limit, which can be set through viewport meta tag in the web page - private float mMaxZoomScale = DEFAULT_MAX_ZOOM_SCALE; - private float mMinZoomScale = DEFAULT_MIN_ZOOM_SCALE; + private float mMaxZoomScale; + private float mMinZoomScale; private boolean mMinZoomScaleFixed = false; // initial scale in percent. 0 means using default. private int mInitialScale = 0; + // default scale. Depending on the display density. + static int DEFAULT_SCALE_PERCENT; + private float mDefaultScale; + // set to true temporarily while the zoom control is being dragged private boolean mPreviewZoomOnly = false; // computed scale and inverse, from mZoomWidth. - private float mActualScale = 1; - private float mInvActualScale = 1; + private float mActualScale; + private float mInvActualScale; // if this is non-zero, it is used on drawing rather than mActualScale private float mZoomScale; private float mInvInitialZoomScale; @@ -635,7 +641,7 @@ public class WebView extends AbsoluteLayout mZoomFitPageButton.setOnClickListener( new View.OnClickListener() { public void onClick(View v) { - zoomWithPreview(1f); + zoomWithPreview(mDefaultScale); updateZoomButtonsEnabled(); } }); @@ -658,7 +664,7 @@ public class WebView extends AbsoluteLayout // or out. mZoomButtonsController.setZoomInEnabled(canZoomIn); mZoomButtonsController.setZoomOutEnabled(canZoomOut); - mZoomFitPageButton.setEnabled(mActualScale != 1); + mZoomFitPageButton.setEnabled(mActualScale != mDefaultScale); } mZoomOverviewButton.setVisibility(canZoomScrollOut() ? View.VISIBLE: View.GONE); @@ -671,13 +677,41 @@ public class WebView extends AbsoluteLayout setClickable(true); setLongClickable(true); - final int slop = ViewConfiguration.get(getContext()).getScaledTouchSlop(); + final ViewConfiguration configuration = ViewConfiguration.get(getContext()); + final int slop = configuration.getScaledTouchSlop(); mTouchSlopSquare = slop * slop; mMinLockSnapReverseDistance = slop; + final float density = getContext().getResources().getDisplayMetrics().density; // use one line height, 16 based on our current default font, for how // far we allow a touch be away from the edge of a link - mNavSlop = (int) (16 * getContext().getResources() - .getDisplayMetrics().density); + mNavSlop = (int) (16 * density); + // density adjusted scale factors + DEFAULT_SCALE_PERCENT = (int) (100 * density); + mDefaultScale = density; + mActualScale = density; + mInvActualScale = 1 / density; + DEFAULT_MAX_ZOOM_SCALE = 4.0f * density; + DEFAULT_MIN_ZOOM_SCALE = 0.25f * density; + mMaxZoomScale = DEFAULT_MAX_ZOOM_SCALE; + mMinZoomScale = DEFAULT_MIN_ZOOM_SCALE; + mMaximumFling = configuration.getScaledMaximumFlingVelocity(); + } + + /* package */void updateDefaultZoomDensity(int zoomDensity) { + final float density = getContext().getResources().getDisplayMetrics().density + * 100 / zoomDensity; + if (Math.abs(density - mDefaultScale) > 0.01) { + float scaleFactor = density / mDefaultScale; + // adjust the limits + mNavSlop = (int) (16 * density); + DEFAULT_SCALE_PERCENT = (int) (100 * density); + DEFAULT_MAX_ZOOM_SCALE = 4.0f * density; + DEFAULT_MIN_ZOOM_SCALE = 0.25f * density; + mDefaultScale = density; + mMaxZoomScale *= scaleFactor; + mMinZoomScale *= scaleFactor; + setNewZoomScale(mActualScale * scaleFactor, false); + } } /* package */ boolean onSavePassword(String schemePlusHost, String username, @@ -1117,6 +1151,29 @@ public class WebView extends AbsoluteLayout clearTextEntry(); } + /** + * Load the url with postData using "POST" method into the WebView. If url + * is not a network url, it will be loaded with {link + * {@link #loadUrl(String)} instead. + * + * @param url The url of the resource to load. + * @param postData The data will be passed to "POST" request. + * + * @hide pending API solidification + */ + public void postUrl(String url, byte[] postData) { + if (URLUtil.isNetworkUrl(url)) { + switchOutDrawHistory(); + HashMap arg = new HashMap(); + arg.put("url", url); + arg.put("data", postData); + mWebViewCore.sendMessage(EventHub.POST_URL, arg); + clearTextEntry(); + } else { + loadUrl(url); + } + } + /** * Load the given data into the WebView. This will load the data into * WebView using the data: scheme. Content loaded through this mechanism @@ -4103,7 +4160,7 @@ public class WebView extends AbsoluteLayout int maxX = Math.max(computeHorizontalScrollRange() - getViewWidth(), 0); int maxY = Math.max(computeVerticalScrollRange() - getViewHeight(), 0); - mVelocityTracker.computeCurrentVelocity(1000); + mVelocityTracker.computeCurrentVelocity(1000, mMaximumFling); int vx = (int) mVelocityTracker.getXVelocity(); int vy = (int) mVelocityTracker.getYVelocity(); @@ -4134,9 +4191,9 @@ public class WebView extends AbsoluteLayout private boolean zoomWithPreview(float scale) { float oldScale = mActualScale; - // snap to 100% if it is close - if (scale > 0.95f && scale < 1.05f) { - scale = 1.0f; + // snap to DEFAULT_SCALE if it is close + if (scale > (mDefaultScale - 0.05) && scale < (mDefaultScale + 0.05)) { + scale = mDefaultScale; } setNewZoomScale(scale, false); @@ -4517,9 +4574,11 @@ public class WebView extends AbsoluteLayout break; } case SWITCH_TO_LONGPRESS: { - mTouchMode = TOUCH_DONE_MODE; - performLongClick(); - updateTextEntry(); + if (!mPreventDrag) { + mTouchMode = TOUCH_DONE_MODE; + performLongClick(); + updateTextEntry(); + } break; } case SWITCH_TO_ENTER: @@ -4651,8 +4710,8 @@ public class WebView extends AbsoluteLayout } int initialScale = msg.arg1; int viewportWidth = msg.arg2; - // by default starting a new page with 100% zoom scale. - float scale = 1.0f; + // start a new page with DEFAULT_SCALE zoom scale. + float scale = mDefaultScale; if (mInitialScale > 0) { scale = mInitialScale / 100.0f; } else { diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index e9df453b78f1..a5fa41e8ed18 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -97,7 +97,7 @@ final class WebViewCore { private boolean mViewportUserScalable = true; - private int mRestoredScale = 100; + private int mRestoredScale = WebView.DEFAULT_SCALE_PERCENT; private int mRestoredX = 0; private int mRestoredY = 0; @@ -139,7 +139,7 @@ final class WebViewCore { // ready. mEventHub = new EventHub(); // Create a WebSettings object for maintaining all settings - mSettings = new WebSettings(mContext); + mSettings = new WebSettings(mContext, mWebView); // The WebIconDatabase needs to be initialized within the UI thread so // just request the instance here. WebIconDatabase.getInstance(); @@ -544,6 +544,8 @@ final class WebViewCore { "WEBKIT_DRAW", // = 130; "SYNC_SCROLL", // = 131; "REFRESH_PLUGINS", // = 132; + // this will replace REFRESH_PLUGINS in the next release + "POST_URL", // = 142; "SPLIT_PICTURE_SET", // = 133; "CLEAR_CONTENT", // = 134; "SET_FINAL_FOCUS", // = 135; @@ -589,6 +591,8 @@ final class WebViewCore { static final int WEBKIT_DRAW = 130; static final int SYNC_SCROLL = 131; static final int REFRESH_PLUGINS = 132; + // this will replace REFRESH_PLUGINS in the next release + static final int POST_URL = 142; static final int SPLIT_PICTURE_SET = 133; static final int CLEAR_CONTENT = 134; @@ -672,6 +676,13 @@ final class WebViewCore { loadUrl((String) msg.obj); break; + case POST_URL: { + HashMap param = (HashMap) msg.obj; + String url = (String) param.get("url"); + byte[] data = (byte[]) param.get("data"); + mBrowserFrame.postUrl(url, data); + break; + } case LOAD_DATA: HashMap loadParams = (HashMap) msg.obj; String baseUrl = (String) loadParams.get("baseUrl"); @@ -1549,19 +1560,33 @@ final class WebViewCore { // set the viewport settings from WebKit setViewportSettingsFromNative(); + // adjust the default scale to match the density + if (WebView.DEFAULT_SCALE_PERCENT != 100) { + float adjust = (float) WebView.DEFAULT_SCALE_PERCENT / 100.0f; + if (mViewportInitialScale > 0) { + mViewportInitialScale *= adjust; + } + if (mViewportMinimumScale > 0) { + mViewportMinimumScale *= adjust; + } + if (mViewportMaximumScale > 0) { + mViewportMaximumScale *= adjust; + } + } + // infer the values if they are not defined. if (mViewportWidth == 0) { if (mViewportInitialScale == 0) { - mViewportInitialScale = 100; + mViewportInitialScale = WebView.DEFAULT_SCALE_PERCENT; } if (mViewportMinimumScale == 0) { - mViewportMinimumScale = 100; + mViewportMinimumScale = WebView.DEFAULT_SCALE_PERCENT; } } if (mViewportUserScalable == false) { - mViewportInitialScale = 100; - mViewportMinimumScale = 100; - mViewportMaximumScale = 100; + mViewportInitialScale = WebView.DEFAULT_SCALE_PERCENT; + mViewportMinimumScale = WebView.DEFAULT_SCALE_PERCENT; + mViewportMaximumScale = WebView.DEFAULT_SCALE_PERCENT; } if (mViewportMinimumScale > mViewportInitialScale) { if (mViewportInitialScale == 0) { @@ -1575,9 +1600,10 @@ final class WebViewCore { mViewportMaximumScale = mViewportInitialScale; } else if (mViewportInitialScale == 0) { mViewportInitialScale = mViewportMaximumScale; - } + } } - if (mViewportWidth < 0 && mViewportInitialScale == 100) { + if (mViewportWidth < 0 + && mViewportInitialScale == WebView.DEFAULT_SCALE_PERCENT) { mViewportWidth = 0; } diff --git a/core/java/android/webkit/gears/AndroidRadioDataProvider.java b/core/java/android/webkit/gears/AndroidRadioDataProvider.java index 2d431a8d6162..13840428a8b7 100644 --- a/core/java/android/webkit/gears/AndroidRadioDataProvider.java +++ b/core/java/android/webkit/gears/AndroidRadioDataProvider.java @@ -28,6 +28,7 @@ package android.webkit.gears; import android.content.Context; import android.telephony.CellLocation; import android.telephony.ServiceState; +import android.telephony.SignalStrength; import android.telephony.gsm.GsmCellLocation; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; @@ -54,6 +55,7 @@ public final class AndroidRadioDataProvider extends PhoneStateListener { public static final class RadioData { public int cellId = -1; public int locationAreaCode = -1; + // TODO: use new SignalStrength instead of asu public int signalStrength = -1; public int mobileCountryCode = -1; public int mobileNetworkCode = -1; @@ -179,6 +181,7 @@ public final class AndroidRadioDataProvider extends PhoneStateListener { private CellLocation cellLocation = null; /** The last known signal strength */ + // TODO: use new SignalStrength instead of asu private int signalStrength = -1; /** The last known serviceState */ @@ -207,7 +210,7 @@ public final class AndroidRadioDataProvider extends PhoneStateListener { // Register for cell id, signal strength and service state changed // notifications. telephonyManager.listen(this, PhoneStateListener.LISTEN_CELL_LOCATION - | PhoneStateListener.LISTEN_SIGNAL_STRENGTH + | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_SERVICE_STATE); } @@ -226,8 +229,9 @@ public final class AndroidRadioDataProvider extends PhoneStateListener { } @Override - public void onSignalStrengthChanged(int asu) { - signalStrength = asu; + public void onSignalStrengthsChanged(SignalStrength ss) { + int gsmSignalStrength = ss.getGsmSignalStrength(); + signalStrength = (gsmSignalStrength == 99 ? -1 : gsmSignalStrength); notifyListeners(); } diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 1ca59b2430c7..f9ca8cb7a43b 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -54,7 +54,9 @@ import java.util.ArrayList; import java.util.List; /** - * Common code shared between ListView and GridView + * Base class that can be used to implement virtualized lists of items. A list does + * not have a spatial definition here. For instance, subclases of this class can + * display the content of the list in a grid, in a carousel, as stack, etc. * * @attr ref android.R.styleable#AbsListView_listSelector * @attr ref android.R.styleable#AbsListView_drawSelectorOnTop @@ -86,7 +88,7 @@ public abstract class AbsListView extends AdapterView implements Te public static final int TRANSCRIPT_MODE_NORMAL = 1; /** * The list will automatically scroll to the bottom, no matter what items - * are currently visible. + * are currently visible. * * @see #setTranscriptMode(int) */ @@ -123,7 +125,7 @@ public abstract class AbsListView extends AdapterView implements Te * Indicates the view is in the process of being flung */ static final int TOUCH_MODE_FLING = 4; - + /** * Indicates that the user is currently dragging the fast scroll thumb */ @@ -316,7 +318,7 @@ public abstract class AbsListView extends AdapterView implements Te * bitmap cache after scrolling. */ boolean mScrollingCacheEnabled; - + /** * Whether or not to enable the fast scroll feature on this list */ @@ -389,7 +391,7 @@ public abstract class AbsListView extends AdapterView implements Te * The last CheckForTap runnable we posted, if any */ private Runnable mPendingCheckForTap; - + /** * The last CheckForKeyLongPress runnable we posted, if any */ @@ -427,14 +429,17 @@ public abstract class AbsListView extends AdapterView implements Te */ private FastScroller mFastScroller; - private int mTouchSlop; + private boolean mGlobalLayoutListenerAddedFilter; + private int mTouchSlop; private float mDensityScale; private InputConnection mDefInputConnection; private InputConnectionWrapper mPublicInputConnection; private Runnable mClearScrollingCache; + private int mMinimumVelocity; + private int mMaximumVelocity; /** * Interface definition for a callback to be invoked when the list or grid @@ -529,21 +534,35 @@ public abstract class AbsListView extends AdapterView implements Te int color = a.getColor(R.styleable.AbsListView_cacheColorHint, 0); setCacheColorHint(color); - + boolean enableFastScroll = a.getBoolean(R.styleable.AbsListView_fastScrollEnabled, false); setFastScrollEnabled(enableFastScroll); boolean smoothScrollbar = a.getBoolean(R.styleable.AbsListView_smoothScrollbar, true); setSmoothScrollbarEnabled(smoothScrollbar); - + a.recycle(); } + private void initAbsListView() { + // Setting focusable in touch mode will set the focusable property to true + setFocusableInTouchMode(true); + setWillNotDraw(false); + setAlwaysDrawnWithCacheEnabled(false); + setScrollingCacheEnabled(true); + + final ViewConfiguration configuration = ViewConfiguration.get(mContext); + mTouchSlop = configuration.getScaledTouchSlop(); + mMinimumVelocity = configuration.getScaledMinimumFlingVelocity(); + mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); + mDensityScale = getContext().getResources().getDisplayMetrics().density; + } + /** - * Enables fast scrolling by letting the user quickly scroll through lists by - * dragging the fast scroll thumb. The adapter attached to the list may want + * Enables fast scrolling by letting the user quickly scroll through lists by + * dragging the fast scroll thumb. The adapter attached to the list may want * to implement {@link SectionIndexer} if it wishes to display alphabet preview and - * jump between sections of the list. + * jump between sections of the list. * @see SectionIndexer * @see #isFastScrollEnabled() * @param enabled whether or not to enable fast scrolling @@ -561,7 +580,7 @@ public abstract class AbsListView extends AdapterView implements Te } } } - + /** * Returns the current state of the fast scroll feature. * @see #setFastScrollEnabled(boolean) @@ -571,10 +590,10 @@ public abstract class AbsListView extends AdapterView implements Te public boolean isFastScrollEnabled() { return mFastScrollEnabled; } - + /** * If fast scroll is visible, then don't draw the vertical scrollbar. - * @hide + * @hide */ @Override protected boolean isVerticalScrollBarHidden() { @@ -592,11 +611,11 @@ public abstract class AbsListView extends AdapterView implements Te * When smooth scrollbar is disabled, the position and size of the scrollbar thumb * is based solely on the number of items in the adapter and the position of the * visible items inside the adapter. This provides a stable scrollbar as the user - * navigates through a list of items with varying heights. + * navigates through a list of items with varying heights. * * @param enabled Whether or not to enable smooth scrollbar. * - * @see #setSmoothScrollbarEnabled(boolean) + * @see #setSmoothScrollbarEnabled(boolean) * @attr ref android.R.styleable#AbsListView_smoothScrollbar */ public void setSmoothScrollbarEnabled(boolean enabled) { @@ -712,17 +731,6 @@ public abstract class AbsListView extends AdapterView implements Te } } - private void initAbsListView() { - // Setting focusable in touch mode will set the focusable property to true - setFocusableInTouchMode(true); - setWillNotDraw(false); - setAlwaysDrawnWithCacheEnabled(false); - setScrollingCacheEnabled(true); - - mTouchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop(); - mDensityScale = getContext().getResources().getDisplayMetrics().density; - } - private void useDefaultSelector() { setSelector(getResources().getDrawable( com.android.internal.R.drawable.list_selector_background)); @@ -828,7 +836,7 @@ public abstract class AbsListView extends AdapterView implements Te public Parcelable onSaveInstanceState() { /* * This doesn't really make sense as the place to dismiss the - * popup, but there don't seem to be any other useful hooks + * popups, but there don't seem to be any other useful hooks * that happen early enough to keep from getting complaints * about having leaked the window. */ @@ -908,17 +916,14 @@ public abstract class AbsListView extends AdapterView implements Te } private boolean acceptFilter() { - if (!mTextFilterEnabled || !(getAdapter() instanceof Filterable) || - ((Filterable) getAdapter()).getFilter() == null) { - return false; - } - return true; + return mTextFilterEnabled && getAdapter() instanceof Filterable && + ((Filterable) getAdapter()).getFilter() != null; } /** * Sets the initial value for the text filter. * @param filterText The text to use for the filter. - * + * * @see #setTextFilterEnabled */ public void setFilterText(String filterText) { @@ -944,7 +949,7 @@ public abstract class AbsListView extends AdapterView implements Te } /** - * Returns the list's text filter, if available. + * Returns the list's text filter, if available. * @return the list's text filter or null if filtering isn't enabled */ public CharSequence getTextFilter() { @@ -953,7 +958,7 @@ public abstract class AbsListView extends AdapterView implements Te } return null; } - + @Override protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(gainFocus, direction, previouslyFocusedRect); @@ -1096,6 +1101,10 @@ public abstract class AbsListView extends AdapterView implements Te listPadding.bottom = mSelectionBottomPadding + mPaddingBottom; } + /** + * Subclasses should NOT override this method but + * {@link #layoutChildren()} instead. + */ @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); @@ -1111,17 +1120,22 @@ public abstract class AbsListView extends AdapterView implements Te protected boolean setFrame(int left, int top, int right, int bottom) { final boolean changed = super.setFrame(left, top, right, bottom); - // Reposition the popup when the frame has changed. This includes - // translating the widget, not just changing its dimension. The - // filter popup needs to follow the widget. - if (mFiltered && changed && getWindowVisibility() == View.VISIBLE && mPopup != null && - mPopup.isShowing()) { - positionPopup(); + if (changed) { + // Reposition the popup when the frame has changed. This includes + // translating the widget, not just changing its dimension. The + // filter popup needs to follow the widget. + final boolean visible = getWindowVisibility() == View.VISIBLE; + if (mFiltered && visible && mPopup != null && mPopup.isShowing()) { + positionPopup(); + } } return changed; } + /** + * Subclasses must override this method to layout their children. + */ protected void layoutChildren() { } @@ -1324,6 +1338,7 @@ public abstract class AbsListView extends AdapterView implements Te mDataChanged = true; rememberSyncState(); } + if (mFastScroller != null) { mFastScroller.onSizeChanged(w, h, oldw, oldh); } @@ -1494,7 +1509,7 @@ public abstract class AbsListView extends AdapterView implements Te System.arraycopy(state, enabledPos + 1, state, enabledPos, state.length - enabledPos - 1); } - + return state; } @@ -1510,6 +1525,9 @@ public abstract class AbsListView extends AdapterView implements Te final ViewTreeObserver treeObserver = getViewTreeObserver(); if (treeObserver != null) { treeObserver.addOnTouchModeChangeListener(this); + if (mTextFilterEnabled && mPopup != null && !mGlobalLayoutListenerAddedFilter) { + treeObserver.addOnGlobalLayoutListener(this); + } } } @@ -1520,6 +1538,10 @@ public abstract class AbsListView extends AdapterView implements Te final ViewTreeObserver treeObserver = getViewTreeObserver(); if (treeObserver != null) { treeObserver.removeOnTouchModeChangeListener(this); + if (mTextFilterEnabled && mPopup != null) { + treeObserver.removeGlobalOnLayoutListener(this); + mGlobalLayoutListenerAddedFilter = false; + } } } @@ -1586,16 +1608,16 @@ public abstract class AbsListView extends AdapterView implements Te */ private class WindowRunnnable { private int mOriginalAttachCount; - + public void rememberWindowAttachCount() { mOriginalAttachCount = getWindowAttachCount(); } - + public boolean sameWindow() { return hasWindowFocus() && getWindowAttachCount() == mOriginalAttachCount; } } - + private class PerformClick extends WindowRunnnable implements Runnable { View mChild; int mClickMotionPosition; @@ -1622,7 +1644,7 @@ public abstract class AbsListView extends AdapterView implements Te final long longPressId = mAdapter.getItemId(mMotionPosition); boolean handled = false; - if (sameWindow() && !mDataChanged) { + if (sameWindow() && !mDataChanged) { handled = performLongPress(child, longPressPosition, longPressId); } if (handled) { @@ -1636,7 +1658,7 @@ public abstract class AbsListView extends AdapterView implements Te } } } - + private class CheckForKeyLongPress extends WindowRunnnable implements Runnable { public void run() { if (isPressed() && mSelectedPosition >= 0) { @@ -1812,7 +1834,7 @@ public abstract class AbsListView extends AdapterView implements Te mTouchMode = TOUCH_MODE_DONE_WAITING; } } else { - mTouchMode = TOUCH_MODE_DONE_WAITING; + mTouchMode = TOUCH_MODE_DONE_WAITING; } } } @@ -1867,13 +1889,13 @@ public abstract class AbsListView extends AdapterView implements Te @Override public boolean onTouchEvent(MotionEvent ev) { - if (mFastScroller != null) { boolean intercepted = mFastScroller.onTouchEvent(ev); if (intercepted) { return true; - } + } } + final int action = ev.getAction(); final int x = (int) ev.getX(); final int y = (int) ev.getY(); @@ -2041,12 +2063,9 @@ public abstract class AbsListView extends AdapterView implements Te break; case TOUCH_MODE_SCROLL: final VelocityTracker velocityTracker = mVelocityTracker; - velocityTracker.computeCurrentVelocity(1000); - int initialVelocity = (int)velocityTracker.getYVelocity(); - - if ((Math.abs(initialVelocity) > - ViewConfiguration.get(mContext).getScaledMinimumFlingVelocity()) && - (getChildCount() > 0)) { + velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); + final int initialVelocity = (int) velocityTracker.getYVelocity(); + if (Math.abs(initialVelocity) > mMinimumVelocity && (getChildCount() > 0)) { if (mFlingRunnable == null) { mFlingRunnable = new FlingRunnable(); } @@ -2059,10 +2078,10 @@ public abstract class AbsListView extends AdapterView implements Te } setPressed(false); - + // Need to redraw since we probably aren't drawing the selector anymore invalidate(); - + final Handler handler = getHandler(); if (handler != null) { handler.removeCallbacks(mPendingCheckForLongPress); @@ -2106,7 +2125,7 @@ public abstract class AbsListView extends AdapterView implements Te return true; } - + @Override public void draw(Canvas canvas) { super.draw(canvas); @@ -2121,14 +2140,14 @@ public abstract class AbsListView extends AdapterView implements Te int x = (int) ev.getX(); int y = (int) ev.getY(); View v; - + if (mFastScroller != null) { boolean intercepted = mFastScroller.onInterceptTouchEvent(ev); if (intercepted) { return true; } } - + switch (action) { case MotionEvent.ACTION_DOWN: { int motionPosition = findMotionRow(y); @@ -2775,7 +2794,7 @@ public abstract class AbsListView extends AdapterView implements Te /** * Removes the filter window */ - void dismissPopup() { + private void dismissPopup() { if (mPopup != null) { mPopup.dismiss(); } @@ -2978,7 +2997,7 @@ public abstract class AbsListView extends AdapterView implements Te } return null; } - + /** * For filtering we proxy an input connection to an internal text editor, * and this allows the proxying to happen. @@ -2987,7 +3006,7 @@ public abstract class AbsListView extends AdapterView implements Te public boolean checkInputConnectionProxy(View view) { return view == mTextFilter; } - + /** * Creates the window for the text filter and populates it with an EditText field; * @@ -3017,6 +3036,7 @@ public abstract class AbsListView extends AdapterView implements Te p.setBackgroundDrawable(null); mPopup = p; getViewTreeObserver().addOnGlobalLayoutListener(this); + mGlobalLayoutListenerAddedFilter = true; } if (animateEntrance) { mPopup.setAnimationStyle(com.android.internal.R.style.Animation_TypingFilter); @@ -3379,7 +3399,7 @@ public abstract class AbsListView extends AdapterView implements Te mCurrentScrap = scrapViews[0]; mScrapViews = scrapViews; } - + public boolean shouldRecycleViewType(int viewType) { return viewType >= 0; } diff --git a/core/java/android/widget/AdapterView.java b/core/java/android/widget/AdapterView.java index 173e80f54f75..7d2fcbc0fa41 100644 --- a/core/java/android/widget/AdapterView.java +++ b/core/java/android/widget/AdapterView.java @@ -24,11 +24,12 @@ import android.os.SystemClock; import android.util.AttributeSet; import android.util.SparseArray; import android.view.ContextMenu; +import android.view.SoundEffectConstants; import android.view.View; -import android.view.ViewGroup; import android.view.ViewDebug; -import android.view.SoundEffectConstants; +import android.view.ViewGroup; import android.view.ContextMenu.ContextMenuInfo; +import android.view.accessibility.AccessibilityEvent; /** @@ -618,7 +619,9 @@ public abstract class AdapterView extends ViewGroup { } /** - * Sets the currently selected item + * Sets the currently selected item. To support accessibility subclasses that + * override this method must invoke the overriden super method first. + * * @param position Index (starting at 0) of the data item to be selected. */ public abstract void setSelection(int position); @@ -844,6 +847,11 @@ public abstract class AdapterView extends ViewGroup { fireOnSelected(); } } + + // we fire selection events here not in View + if (mSelectedPosition != ListView.INVALID_POSITION && isShown() && !isInTouchMode()) { + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED); + } } private void fireOnSelected() { @@ -860,6 +868,35 @@ public abstract class AdapterView extends ViewGroup { } } + @Override + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { + boolean populated = false; + // This is an exceptional case which occurs when a window gets the + // focus and sends a focus event via its focused child to announce + // current focus/selection. AdapterView fires selection but not focus + // events so we change the event type here. + if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_FOCUSED) { + event.setEventType(AccessibilityEvent.TYPE_VIEW_SELECTED); + } + + // we send selection events only from AdapterView to avoid + // generation of such event for each child + View selectedView = getSelectedView(); + if (selectedView != null) { + populated = selectedView.dispatchPopulateAccessibilityEvent(event); + } + + if (!populated) { + if (selectedView != null) { + event.setEnabled(selectedView.isEnabled()); + } + event.setItemCount(getCount()); + event.setCurrentItemIndex(getSelectedItemPosition()); + } + + return populated; + } + @Override protected boolean canAnimate() { return super.canAnimate() && mItemCount > 0; diff --git a/core/java/android/widget/AlphabetIndexer.java b/core/java/android/widget/AlphabetIndexer.java index 4e466a09de7e..f50676ab3914 100644 --- a/core/java/android/widget/AlphabetIndexer.java +++ b/core/java/android/widget/AlphabetIndexer.java @@ -248,8 +248,8 @@ public class AlphabetIndexer extends DataSetObserver implements SectionIndexer { public int getSectionForPosition(int position) { int savedCursorPos = mDataCursor.getPosition(); mDataCursor.moveToPosition(position); - mDataCursor.moveToPosition(savedCursorPos); String curName = mDataCursor.getString(mColumnIndex); + mDataCursor.moveToPosition(savedCursorPos); // Linear search, as there are only a few items in the section index // Could speed this up later if it actually gets used. for (int i = 0; i < mAlphabetLength; i++) { diff --git a/core/java/android/widget/AppSecurityPermissions.java b/core/java/android/widget/AppSecurityPermissions.java index 5fa00e7d443a..c4b5ef891558 100755 --- a/core/java/android/widget/AppSecurityPermissions.java +++ b/core/java/android/widget/AppSecurityPermissions.java @@ -124,25 +124,25 @@ public class AppSecurityPermissions implements View.OnClickListener { if(pkg == null) { return; } - // Extract shared user permissions if any + // Get requested permissions + if (pkg.requestedPermissions != null) { + ArrayList strList = pkg.requestedPermissions; + int size = strList.size(); + if (size > 0) { + extractPerms(strList.toArray(new String[size]), permSet); + } + } + // Get permissions related to shared user if any if(pkg.mSharedUserId != null) { int sharedUid; try { sharedUid = mPm.getUidForSharedUser(pkg.mSharedUserId); + getAllUsedPermissions(sharedUid, permSet); } catch (NameNotFoundException e) { Log.w(TAG, "Could'nt retrieve shared user id for:"+pkg.packageName); - return; } - getAllUsedPermissions(sharedUid, permSet); - } else { - ArrayList strList = pkg.requestedPermissions; - int size; - if((strList == null) || ((size = strList.size()) == 0)) { - return; - } - // Extract permissions defined in current package - extractPerms(strList.toArray(new String[size]), permSet); } + // Retrieve list of permissions for(PermissionInfo tmpInfo : permSet) { mPermsList.add(tmpInfo); } @@ -176,14 +176,9 @@ public class AppSecurityPermissions implements View.OnClickListener { Log.w(TAG, "Could'nt retrieve permissions for package:"+packageName); return; } - if(pkgInfo == null) { - return; - } - String strList[] = pkgInfo.requestedPermissions; - if(strList == null) { - return; + if ((pkgInfo != null) && (pkgInfo.requestedPermissions != null)) { + extractPerms(pkgInfo.requestedPermissions, permSet); } - extractPerms(strList, permSet); } private void extractPerms(String strList[], Set permSet) { diff --git a/core/java/android/widget/ArrayAdapter.java b/core/java/android/widget/ArrayAdapter.java index c28210df6864..32e55048ed18 100644 --- a/core/java/android/widget/ArrayAdapter.java +++ b/core/java/android/widget/ArrayAdapter.java @@ -348,7 +348,12 @@ public class ArrayAdapter extends BaseAdapter implements Filterable { "ArrayAdapter requires the resource ID to be a TextView", e); } - text.setText(getItem(position).toString()); + T item = getItem(position); + if (item instanceof CharSequence) { + text.setText((CharSequence)item); + } else { + text.setText(item.toString()); + } return view; } diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java index a1d16eadc0d8..675aba23ae81 100644 --- a/core/java/android/widget/AutoCompleteTextView.java +++ b/core/java/android/widget/AutoCompleteTextView.java @@ -80,6 +80,7 @@ import com.android.internal.R; * @attr ref android.R.styleable#AutoCompleteTextView_dropDownSelector * @attr ref android.R.styleable#AutoCompleteTextView_dropDownAnchor * @attr ref android.R.styleable#AutoCompleteTextView_dropDownWidth + * @attr ref android.R.styleable#AutoCompleteTextView_dropDownHeight */ public class AutoCompleteTextView extends EditText implements Filter.FilterListener { static final boolean DEBUG = false; @@ -101,6 +102,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe private int mDropDownAnchorId; private View mDropDownAnchorView; // view is retrieved lazily from id once needed private int mDropDownWidth; + private int mDropDownHeight; private Drawable mDropDownListHighlight; @@ -122,10 +124,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe private boolean mBlockCompletion; private AutoCompleteTextView.ListSelectorHider mHideSelector; - - // Indicates whether this AutoCompleteTextView is attached to a window or not - // The widget is attached to a window when mAttachCount > 0 - private int mAttachCount; + private Runnable mShowDropDownRunnable; private AutoCompleteTextView.PassThroughClickListener mPassThroughClickListener; @@ -170,6 +169,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe // (for full screen width) or WRAP_CONTENT (to match the width of the anchored view). mDropDownWidth = a.getLayoutDimension(R.styleable.AutoCompleteTextView_dropDownWidth, ViewGroup.LayoutParams.WRAP_CONTENT); + mDropDownHeight = a.getLayoutDimension(R.styleable.AutoCompleteTextView_dropDownHeight, + ViewGroup.LayoutParams.WRAP_CONTENT); mHintResource = a.getResourceId(R.styleable.AutoCompleteTextView_completionHintView, R.layout.simple_dropdown_hint); @@ -258,6 +259,34 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe public void setDropDownWidth(int width) { mDropDownWidth = width; } + + /** + *

      Returns the current height for the auto-complete drop down list. This can + * be a fixed height, or {@link ViewGroup.LayoutParams#FILL_PARENT} to fill + * the screen, or {@link ViewGroup.LayoutParams#WRAP_CONTENT} to fit the height + * of the drop down's content.

      + * + * @return the height for the drop down list + * + * @attr ref android.R.styleable#AutoCompleteTextView_dropDownHeight + */ + public int getDropDownHeight() { + return mDropDownHeight; + } + + /** + *

      Sets the current height for the auto-complete drop down list. This can + * be a fixed height, or {@link ViewGroup.LayoutParams#FILL_PARENT} to fill + * the screen, or {@link ViewGroup.LayoutParams#WRAP_CONTENT} to fit the height + * of the drop down's content.

      + * + * @param height the height to use + * + * @attr ref android.R.styleable#AutoCompleteTextView_dropDownHeight + */ + public void setDropDownHeight(int height) { + mDropDownHeight = height; + } /** *

      Returns the id for the view that the auto-complete drop down list is anchored to.

      @@ -589,7 +618,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe if (isPopupShowing()) { // special case for the back key, we do not even try to send it // to the drop down list but instead, consume it immediately - if (keyCode == KeyEvent.KEYCODE_BACK) { + if (keyCode == KeyEvent.KEYCODE_BACK && !mDropDownAlwaysVisible) { dismissDropDown(); return true; } @@ -637,15 +666,19 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mDropDownList.getAdapter().getCount() - 1)) { // When the selection is at the top, we block the key // event to prevent focus from moving. - mDropDownList.hideSelector(); - mDropDownList.requestLayout(); + clearListSelection(); mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); - mPopup.update(); + showDropDown(); return true; + } else { + // WARNING: Please read the comment where mListSelectionHidden + // is declared + mDropDownList.mListSelectionHidden = false; } + consumed = mDropDownList.onKeyDown(keyCode, event); - if (DEBUG) Log.v(TAG, "Key down: code=" + keyCode + " list consumed=" - + consumed); + if (DEBUG) Log.v(TAG, "Key down: code=" + keyCode + " list consumed=" + consumed); + if (consumed) { // If it handled the key event, then the user is // navigating in the list, so we should put it in front. @@ -655,7 +688,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe // by ensuring it has focus and getting its window out // of touch mode. mDropDownList.requestFocusFromTouch(); - mPopup.update(); + showDropDown(); switch (keyCode) { // avoid passing the focus from the text view to the @@ -755,7 +788,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe } else { // drop down is automatically dismissed when enough characters // are deleted from the text view - dismissDropDown(); + if (!mDropDownAlwaysVisible) dismissDropDown(); if (mFilter != null) { mFilter.filter(null); } @@ -788,9 +821,12 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe * it back. */ public void clearListSelection() { - if (mDropDownList != null) { - mDropDownList.hideSelector(); - mDropDownList.requestLayout(); + final DropDownListView list = mDropDownList; + if (list != null) { + // WARNING: Please read the comment where mListSelectionHidden is declared + list.mListSelectionHidden = true; + list.hideSelector(); + list.requestLayout(); } } @@ -801,6 +837,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe */ public void setListSelection(int position) { if (mPopup.isShowing() && (mDropDownList != null)) { + mDropDownList.mListSelectionHidden = false; mDropDownList.setSelection(position); // ListView.setSelection() will call requestLayout() } @@ -893,7 +930,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe } } - if (mDropDownDismissedOnCompletion) { + if (mDropDownDismissedOnCompletion && !mDropDownAlwaysVisible) { dismissDropDown(); } } @@ -950,6 +987,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe * @param text the selected suggestion in the drop down list */ protected void replaceText(CharSequence text) { + clearComposingText(); + setText(text); // make sure we keep the caret at the end of the text view Editable spannable = getText(); @@ -958,7 +997,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe /** {@inheritDoc} */ public void onFilterComplete(int count) { - if (mAttachCount <= 0) return; + // Not attached to window, don't update drop-down + if (getWindowVisibility() == View.GONE) return; /* * This checks enoughToFilter() again because filtering requests @@ -971,7 +1011,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe if (hasFocus() && hasWindowFocus()) { showDropDown(); } - } else { + } else if (!mDropDownAlwaysVisible) { dismissDropDown(); } } @@ -980,7 +1020,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe public void onWindowFocusChanged(boolean hasWindowFocus) { super.onWindowFocusChanged(hasWindowFocus); performValidation(); - if (!hasWindowFocus) { + if (!hasWindowFocus && !mDropDownAlwaysVisible) { dismissDropDown(); } } @@ -989,7 +1029,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); performValidation(); - if (!focused) { + if (!focused && !mDropDownAlwaysVisible) { dismissDropDown(); } } @@ -997,13 +1037,11 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); - mAttachCount++; } @Override protected void onDetachedFromWindow() { dismissDropDown(); - mAttachCount--; super.onDetachedFromWindow(); } @@ -1043,13 +1081,27 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe return mDropDownAnchorView == null ? this : mDropDownAnchorView; } + /** + * Issues a runnable to show the dropdown as soon as possible. + * + * @hide internal used only by Search Dialog + */ + public void showDropDownAfterLayout() { + post(mShowDropDownRunnable); + } + /** *

      Displays the drop down on screen.

      */ public void showDropDown() { int height = buildDropDown(); + + int widthSpec = 0; + int heightSpec = 0; + + boolean noInputMethod = mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED; + if (mPopup.isShowing()) { - int widthSpec; if (mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT) { // The call to PopupWindow's update method below can accept -1 for any // value you do not want to update. @@ -1059,20 +1111,51 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe } else { widthSpec = mDropDownWidth; } + + if (mDropDownHeight == ViewGroup.LayoutParams.FILL_PARENT) { + // The call to PopupWindow's update method below can accept -1 for any + // value you do not want to update. + heightSpec = noInputMethod ? height : ViewGroup.LayoutParams.FILL_PARENT; + if (noInputMethod) { + mPopup.setWindowLayoutMode( + mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT ? + ViewGroup.LayoutParams.FILL_PARENT : 0, 0); + } else { + mPopup.setWindowLayoutMode( + mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT ? + ViewGroup.LayoutParams.FILL_PARENT : 0, + ViewGroup.LayoutParams.FILL_PARENT); + } + } else if (mDropDownHeight == ViewGroup.LayoutParams.WRAP_CONTENT) { + heightSpec = height; + } else { + heightSpec = mDropDownHeight; + } + mPopup.update(getDropDownAnchorView(), mDropDownHorizontalOffset, - mDropDownVerticalOffset, widthSpec, height); + mDropDownVerticalOffset, widthSpec, heightSpec); } else { if (mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT) { - mPopup.setWindowLayoutMode(ViewGroup.LayoutParams.FILL_PARENT, 0); + widthSpec = ViewGroup.LayoutParams.FILL_PARENT; } else { - mPopup.setWindowLayoutMode(0, 0); if (mDropDownWidth == ViewGroup.LayoutParams.WRAP_CONTENT) { mPopup.setWidth(getDropDownAnchorView().getWidth()); } else { mPopup.setWidth(mDropDownWidth); } } - mPopup.setHeight(height); + + if (mDropDownHeight == ViewGroup.LayoutParams.FILL_PARENT) { + heightSpec = ViewGroup.LayoutParams.FILL_PARENT; + } else { + if (mDropDownHeight == ViewGroup.LayoutParams.WRAP_CONTENT) { + mPopup.setHeight(height); + } else { + mPopup.setHeight(mDropDownHeight); + } + } + + mPopup.setWindowLayoutMode(widthSpec, heightSpec); mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); // use outside touchable to dismiss drop down when touching outside of it, so @@ -1082,8 +1165,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mPopup.showAsDropDown(getDropDownAnchorView(), mDropDownHorizontalOffset, mDropDownVerticalOffset); mDropDownList.setSelection(ListView.INVALID_POSITION); - mDropDownList.hideSelector(); - mDropDownList.requestFocus(); + clearListSelection(); post(mHideSelector); } } @@ -1119,6 +1201,22 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mHideSelector = new ListSelectorHider(); + /** + * This Runnable exists for the sole purpose of checking if the view layout has got + * completed and if so call showDropDown to display the drop down. This is used to show + * the drop down as soon as possible after user opens up the search dialog, without + * waiting for the normal UI pipeline to do it's job which is slower than this method. + */ + mShowDropDownRunnable = new Runnable() { + public void run() { + // View layout should be all done before displaying the drop down. + View view = getDropDownAnchorView(); + if (view != null && view.getWindowToken() != null) { + showDropDown(); + } + } + }; + mDropDownList = new DropDownListView(context); mDropDownList.setSelector(mDropDownListHighlight); mDropDownList.setAdapter(mAdapter); @@ -1126,6 +1224,22 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mDropDownList.setOnItemClickListener(mDropDownItemClickListener); mDropDownList.setFocusable(true); mDropDownList.setFocusableInTouchMode(true); + mDropDownList.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + public void onItemSelected(AdapterView parent, View view, + int position, long id) { + + if (position != -1) { + DropDownListView dropDownList = mDropDownList; + + if (dropDownList != null) { + dropDownList.mListSelectionHidden = false; + } + } + } + + public void onNothingSelected(AdapterView parent) { + } + }); if (mItemSelectedListener != null) { mDropDownList.setOnItemSelectedListener(mItemSelectedListener); @@ -1180,10 +1294,12 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe final int maxHeight = mPopup.getMaxAvailableHeight( getDropDownAnchorView(), mDropDownVerticalOffset, ignoreBottomDecorations); - final int measuredHeight = mDropDownList.measureHeightOfChildren(MeasureSpec.UNSPECIFIED, - 0, ListView.NO_POSITION, maxHeight - otherHeights, 2) + otherHeights; + if (mDropDownAlwaysVisible) { + return maxHeight; + } - return mDropDownAlwaysVisible ? maxHeight : measuredHeight; + return mDropDownList.measureHeightOfChildren(MeasureSpec.UNSPECIFIED, + 0, ListView.NO_POSITION, maxHeight - otherHeights, 2) + otherHeights; } private View getHintView(Context context) { @@ -1249,10 +1365,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe private class ListSelectorHider implements Runnable { public void run() { - if (mDropDownList != null) { - mDropDownList.hideSelector(); - mDropDownList.requestLayout(); - } + clearListSelection(); } } @@ -1279,6 +1392,36 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe * passed to the drop down; the list only looks focused.

      */ private static class DropDownListView extends ListView { + /* + * WARNING: This is a workaround for a touch mode issue. + * + * Touch mode is propagated lazily to windows. This causes problems in + * the following scenario: + * - Type something in the AutoCompleteTextView and get some results + * - Move down with the d-pad to select an item in the list + * - Move up with the d-pad until the selection disappears + * - Type more text in the AutoCompleteTextView *using the soft keyboard* + * and get new results; you are now in touch mode + * - The selection comes back on the first item in the list, even though + * the list is supposed to be in touch mode + * + * Using the soft keyboard triggers the touch mode change but that change + * is propagated to our window only after the first list layout, therefore + * after the list attempts to resurrect the selection. + * + * The trick to work around this issue is to pretend the list is in touch + * mode when we know that the selection should not appear, that is when + * we know the user moved the selection away from the list. + * + * This boolean is set to true whenever we explicitely hide the list's + * selection and reset to false whenver we know the user moved the + * selection back to the list. + * + * When this boolean is true, isInTouchMode() returns true, otherwise it + * returns super.isInTouchMode(). + */ + private boolean mListSelectionHidden; + /** *

      Creates a new list view wrapper.

      * @@ -1324,6 +1467,12 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe return mSelectionBottomPadding; } + @Override + public boolean isInTouchMode() { + // WARNING: Please read the comment where mListSelectionHidden is declared + return mListSelectionHidden || super.isInTouchMode(); + } + /** *

      Returns the focus state in the drop down.

      * diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java index abcc715c77e5..fd590ed16a8b 100644 --- a/core/java/android/widget/CheckedTextView.java +++ b/core/java/android/widget/CheckedTextView.java @@ -16,14 +16,15 @@ package android.widget; +import com.android.internal.R; + import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.Gravity; - -import com.android.internal.R; +import android.view.accessibility.AccessibilityEvent; /** @@ -194,5 +195,13 @@ public class CheckedTextView extends TextView implements Checkable { invalidate(); } } - + + @Override + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { + boolean populated = super.dispatchPopulateAccessibilityEvent(event); + if (!populated) { + event.setChecked(mChecked); + } + return populated; + } } diff --git a/core/java/android/widget/CompoundButton.java b/core/java/android/widget/CompoundButton.java index d4482dc5988e..98b0976adb8d 100644 --- a/core/java/android/widget/CompoundButton.java +++ b/core/java/android/widget/CompoundButton.java @@ -26,7 +26,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.util.AttributeSet; import android.view.Gravity; - +import android.view.accessibility.AccessibilityEvent; /** *

      @@ -124,6 +124,7 @@ public abstract class CompoundButton extends Button implements Checkable { if (mOnCheckedChangeWidgetListener != null) { mOnCheckedChangeWidgetListener.onCheckedChanged(this, mChecked); } + mBroadcasting = false; } } @@ -204,6 +205,25 @@ public abstract class CompoundButton extends Button implements Checkable { refreshDrawableState(); } + @Override + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { + boolean populated = super.dispatchPopulateAccessibilityEvent(event); + + if (!populated) { + int resourceId = 0; + if (mChecked) { + resourceId = R.string.accessibility_compound_button_selected; + } else { + resourceId = R.string.accessibility_compound_button_unselected; + } + String state = getResources().getString(resourceId); + event.getText().add(state); + event.setChecked(mChecked); + } + + return populated; + } + @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); diff --git a/core/java/android/widget/ExpandableListView.java b/core/java/android/widget/ExpandableListView.java index 0fc8f495d8c4..536062168e61 100644 --- a/core/java/android/widget/ExpandableListView.java +++ b/core/java/android/widget/ExpandableListView.java @@ -1083,6 +1083,11 @@ public class ExpandableListView extends ListView { @Override public void onRestoreInstanceState(Parcelable state) { + if (!(state instanceof SavedState)) { + super.onRestoreInstanceState(state); + return; + } + SavedState ss = (SavedState) state; super.onRestoreInstanceState(ss.getSuperState()); diff --git a/core/java/android/widget/FastScroller.java b/core/java/android/widget/FastScroller.java index 336847795025..cd965fc62e62 100644 --- a/core/java/android/widget/FastScroller.java +++ b/core/java/android/widget/FastScroller.java @@ -134,7 +134,7 @@ class FastScroller { mScrollCompleted = true; - getSections(); + getSectionsFromIndexer(); mOverlayPos = new RectF(); mScrollFade = new ScrollFade(); @@ -250,7 +250,18 @@ class FastScroller { } } - private void getSections() { + SectionIndexer getSectionIndexer() { + return mSectionIndexer; + } + + Object[] getSections() { + if (mListAdapter == null && mList != null) { + getSectionsFromIndexer(); + } + return mSections; + } + + private void getSectionsFromIndexer() { Adapter adapter = mList.getAdapter(); mSectionIndexer = null; if (adapter instanceof HeaderViewListAdapter) { @@ -391,8 +402,7 @@ class FastScroller { boolean onInterceptTouchEvent(MotionEvent ev) { if (mState > STATE_NONE && ev.getAction() == MotionEvent.ACTION_DOWN) { - if (ev.getX() > mList.getWidth() - mThumbW && ev.getY() >= mThumbY && - ev.getY() <= mThumbY + mThumbH) { + if (isPointInside(ev.getX(), ev.getY())) { setState(STATE_DRAGGING); return true; } @@ -404,20 +414,20 @@ class FastScroller { if (mState == STATE_NONE) { return false; } - if (me.getAction() == MotionEvent.ACTION_DOWN) { - if (me.getX() > mList.getWidth() - mThumbW - && me.getY() >= mThumbY - && me.getY() <= mThumbY + mThumbH) { - + + final int action = me.getAction(); + + if (action == MotionEvent.ACTION_DOWN) { + if (isPointInside(me.getX(), me.getY())) { setState(STATE_DRAGGING); if (mListAdapter == null && mList != null) { - getSections(); + getSectionsFromIndexer(); } cancelFling(); return true; } - } else if (me.getAction() == MotionEvent.ACTION_UP) { + } else if (action == MotionEvent.ACTION_UP) { if (mState == STATE_DRAGGING) { setState(STATE_VISIBLE); final Handler handler = mHandler; @@ -425,7 +435,7 @@ class FastScroller { handler.postDelayed(mScrollFade, 1000); return true; } - } else if (me.getAction() == MotionEvent.ACTION_MOVE) { + } else if (action == MotionEvent.ACTION_MOVE) { if (mState == STATE_DRAGGING) { final int viewHeight = mList.getHeight(); // Jitter @@ -448,7 +458,11 @@ class FastScroller { } return false; } - + + boolean isPointInside(float x, float y) { + return x > mList.getWidth() - mThumbW && y >= mThumbY && y <= mThumbY + mThumbH; + } + public class ScrollFade implements Runnable { long mStartTime; diff --git a/core/java/android/widget/FrameLayout.java b/core/java/android/widget/FrameLayout.java index 80fbf9eddecf..3afd5d42f857 100644 --- a/core/java/android/widget/FrameLayout.java +++ b/core/java/android/widget/FrameLayout.java @@ -353,25 +353,24 @@ public class FrameLayout extends ViewGroup { if (mForeground != null) { final Drawable foreground = mForeground; + if (mForegroundBoundsChanged) { mForegroundBoundsChanged = false; - if (foreground != null) { - final Rect selfBounds = mSelfBounds; - final Rect overlayBounds = mOverlayBounds; - - final int w = mRight-mLeft; - final int h = mBottom-mTop; - - if (mForegroundInPadding) { - selfBounds.set(0, 0, w, h); - } else { - selfBounds.set(mPaddingLeft, mPaddingTop, w - mPaddingRight, h - mPaddingBottom); - } + final Rect selfBounds = mSelfBounds; + final Rect overlayBounds = mOverlayBounds; - Gravity.apply(mForegroundGravity, foreground.getIntrinsicWidth(), - foreground.getIntrinsicHeight(), selfBounds, overlayBounds); - foreground.setBounds(overlayBounds); + final int w = mRight-mLeft; + final int h = mBottom-mTop; + + if (mForegroundInPadding) { + selfBounds.set(0, 0, w, h); + } else { + selfBounds.set(mPaddingLeft, mPaddingTop, w - mPaddingRight, h - mPaddingBottom); } + + Gravity.apply(mForegroundGravity, foreground.getIntrinsicWidth(), + foreground.getIntrinsicHeight(), selfBounds, overlayBounds); + foreground.setBounds(overlayBounds); } foreground.draw(canvas); diff --git a/core/java/android/widget/HorizontalScrollView.java b/core/java/android/widget/HorizontalScrollView.java index 02fc7c6b8816..f86b37cf8b3a 100644 --- a/core/java/android/widget/HorizontalScrollView.java +++ b/core/java/android/widget/HorizontalScrollView.java @@ -114,6 +114,8 @@ public class HorizontalScrollView extends FrameLayout { private boolean mSmoothScrollingEnabled = true; private int mTouchSlop; + private int mMinimumVelocity; + private int mMaximumVelocity; public HorizontalScrollView(Context context) { this(context, null); @@ -179,7 +181,10 @@ public class HorizontalScrollView extends FrameLayout { setFocusable(true); setDescendantFocusability(FOCUS_AFTER_DESCENDANTS); setWillNotDraw(false); - mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop(); + final ViewConfiguration configuration = ViewConfiguration.get(mContext); + mTouchSlop = configuration.getScaledTouchSlop(); + mMinimumVelocity = configuration.getScaledMinimumFlingVelocity(); + mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); } @Override @@ -477,12 +482,10 @@ public class HorizontalScrollView extends FrameLayout { break; case MotionEvent.ACTION_UP: final VelocityTracker velocityTracker = mVelocityTracker; - velocityTracker.computeCurrentVelocity(1000); + velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); int initialVelocity = (int) velocityTracker.getXVelocity(); - if ((Math.abs(initialVelocity) > - ViewConfiguration.get(mContext).getScaledMinimumFlingVelocity()) && - getChildCount() > 0) { + if ((Math.abs(initialVelocity) > mMinimumVelocity) && getChildCount() > 0) { fling(-initialVelocity); } diff --git a/core/java/android/widget/ImageButton.java b/core/java/android/widget/ImageButton.java index 4c1cbf6a2f91..d417e40bf293 100644 --- a/core/java/android/widget/ImageButton.java +++ b/core/java/android/widget/ImageButton.java @@ -27,9 +27,35 @@ import java.util.Map; /** *

      - * An image button displays an image that can be pressed, or clicked, by the - * user. - *

      + * Displays a button with an image (instead of text) that can be pressed + * or clicked by the user. By default, an ImageButton looks like a regular + * {@link android.widget.Button}, with the standard button background + * that changes color during different button states. The image on the surface + * of the button is defined either by the {@code android:src} attribute in the + * {@code <ImageButton>} XML element or by the + * {@link #setImageResource(int)} method.

      + * + *

      To remove the standard button background image, define your own + * background image or set the background color to be transparent.

      + *

      To indicate the different button states (focused, selected, etc.), you can + * define a different image for each state. E.g., a blue image by default, an + * orange one for when focused, and a yellow one for when pressed. An easy way to + * do this is with an XML drawable "selector." For example:

      + *
      + * <?xml version="1.0" encoding="utf-8"?>
      + * <selector xmlns:android="http://schemas.android.com/apk/res/android">
      + *     <item android:drawable="@drawable/button_normal" /> <!-- default -->
      + *     <item android:state_pressed="true"
      + *           android:drawable="@drawable/button_pressed" /> <!-- pressed -->
      + *     <item android:state_focused="true"
      + *           android:drawable="@drawable/button_focused" /> <!-- focused -->
      + * </selector>
      + * + *

      Save the XML file in your project {@code res/drawable/} folder and then + * reference it as a drawable for the source of your ImageButton (in the + * {@code android:src} attribute). Android will automatically change the image + * based on the state of the button and the corresponding images + * defined in the XML.

      * *

      XML attributes

      *

      diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java index 480b0b8a135a..27967742a135 100644 --- a/core/java/android/widget/ImageView.java +++ b/core/java/android/widget/ImageView.java @@ -32,6 +32,8 @@ import android.net.Uri; import android.util.AttributeSet; import android.util.Log; import android.view.View; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; import android.widget.RemoteViews.RemoteView; @@ -848,7 +850,7 @@ public class ImageView extends View { public int getBaseline() { return mBaselineAligned ? getMeasuredHeight() : -1; } - + /** * Set a tinting option for the image. * @@ -878,7 +880,7 @@ public class ImageView extends View { invalidate(); } } - + public void setAlpha(int alpha) { alpha &= 0xFF; // keep it legal if (mAlpha != alpha) { diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 5472d6859c0a..f8a6f89a9880 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -21,6 +21,7 @@ import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.PixelFormat; +import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.graphics.drawable.ColorDrawable; import android.os.Parcel; @@ -35,6 +36,7 @@ import android.view.ViewDebug; import android.view.ViewGroup; import android.view.ViewParent; import android.view.SoundEffectConstants; +import android.view.accessibility.AccessibilityEvent; import com.google.android.collect.Lists; import com.android.internal.R; @@ -132,6 +134,7 @@ public class ListView extends AbsListView { // used for temporary calculations. private final Rect mTempRect = new Rect(); + private Paint mDividerPaint; // the single allocated result per list view; kinda cheesey but avoids // allocating these thingies too often. @@ -171,6 +174,8 @@ public class ListView extends AbsListView { setDividerHeight(dividerHeight); } + setChoiceMode(a.getInt(R.styleable.ListView_choiceMode, CHOICE_MODE_NONE)); + mHeaderDividersEnabled = a.getBoolean(R.styleable.ListView_headerDividersEnabled, true); mFooterDividersEnabled = a.getBoolean(R.styleable.ListView_footerDividersEnabled, true); @@ -1845,6 +1850,39 @@ public class ListView extends AbsListView { } } + @Override + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { + boolean populated = super.dispatchPopulateAccessibilityEvent(event); + + // If the item count is less than 15 then subtract disabled items from the count and + // position. Otherwise ignore disabled items. + if (!populated) { + int itemCount = 0; + int currentItemIndex = getSelectedItemPosition(); + + ListAdapter adapter = getAdapter(); + if (adapter != null) { + final int count = adapter.getCount(); + if (count < 15) { + for (int i = 0; i < count; i++) { + if (adapter.isEnabled(i)) { + itemCount++; + } else if (i <= currentItemIndex) { + currentItemIndex--; + } + } + } else { + itemCount = count; + } + } + + event.setItemCount(itemCount); + event.setCurrentItemIndex(currentItemIndex); + } + + return populated; + } + /** * setSelectionAfterHeaderView set the selection to be the first list item * after the header views. @@ -2786,12 +2824,20 @@ public class ListView extends AbsListView { */ @Override public boolean isOpaque() { - return (mCachingStarted && mIsCacheColorOpaque && mDividerIsOpaque) || super.isOpaque(); + return (mCachingStarted && mIsCacheColorOpaque && mDividerIsOpaque && + hasOpaqueScrollbars()) || super.isOpaque(); } @Override public void setCacheColorHint(int color) { - mIsCacheColorOpaque = (color >>> 24) == 0xFF; + final boolean opaque = (color >>> 24) == 0xFF; + mIsCacheColorOpaque = opaque; + if (opaque) { + if (mDividerPaint == null) { + mDividerPaint = new Paint(); + } + mDividerPaint.setColor(color); + } super.setCacheColorHint(color); } @@ -2814,6 +2860,17 @@ public class ListView extends AbsListView { final int first = mFirstPosition; final boolean areAllItemsSelectable = mAreAllItemsSelectable; final ListAdapter adapter = mAdapter; + // If the list is opaque *and* the background is not, we want to + // fill a rect where the dividers would be for non-selectable items + // If the list is opaque and the background is also opaque, we don't + // need to draw anything since the background will do it for us + final boolean fillForMissingDividers = isOpaque() && !super.isOpaque(); + + if (fillForMissingDividers && mDividerPaint == null && mIsCacheColorOpaque) { + mDividerPaint = new Paint(); + mDividerPaint.setColor(getCacheColorHint()); + } + final Paint paint = mDividerPaint; if (!mStackFromBottom) { int bottom; @@ -2825,12 +2882,18 @@ public class ListView extends AbsListView { View child = getChildAt(i); bottom = child.getBottom(); // Don't draw dividers next to items that are not enabled - if (bottom < listBottom && (areAllItemsSelectable || - (adapter.isEnabled(first + i) && (i == count - 1 || - adapter.isEnabled(first + i + 1))))) { - bounds.top = bottom; - bounds.bottom = bottom + dividerHeight; - drawDivider(canvas, bounds, i); + if (bottom < listBottom) { + if ((areAllItemsSelectable || + (adapter.isEnabled(first + i) && (i == count - 1 || + adapter.isEnabled(first + i + 1))))) { + bounds.top = bottom; + bounds.bottom = bottom + dividerHeight; + drawDivider(canvas, bounds, i); + } else if (fillForMissingDividers) { + bounds.top = bottom; + bounds.bottom = bottom + dividerHeight; + canvas.drawRect(bounds, paint); + } } } } @@ -2844,16 +2907,22 @@ public class ListView extends AbsListView { View child = getChildAt(i); top = child.getTop(); // Don't draw dividers next to items that are not enabled - if (top > listTop && (areAllItemsSelectable || - (adapter.isEnabled(first + i) && (i == count - 1 || - adapter.isEnabled(first + i + 1))))) { - bounds.top = top - dividerHeight; - bounds.bottom = top; - // Give the method the child ABOVE the divider, so we - // subtract one from our child - // position. Give -1 when there is no child above the - // divider. - drawDivider(canvas, bounds, i - 1); + if (top > listTop) { + if ((areAllItemsSelectable || + (adapter.isEnabled(first + i) && (i == count - 1 || + adapter.isEnabled(first + i + 1))))) { + bounds.top = top - dividerHeight; + bounds.bottom = top; + // Give the method the child ABOVE the divider, so we + // subtract one from our child + // position. Give -1 when there is no child above the + // divider. + drawDivider(canvas, bounds, i - 1); + } else if (fillForMissingDividers) { + bounds.top = top - dividerHeight; + bounds.bottom = top; + canvas.drawRect(bounds, paint); + } } } } @@ -3195,9 +3264,13 @@ public class ListView extends AbsListView { if (mChoiceMode == CHOICE_MODE_MULTIPLE) { mCheckStates.put(position, value); } else { - boolean oldValue = mCheckStates.get(position, false); + // Clear the old value: if something was selected and value == false + // then it is unselected mCheckStates.clear(); - if (!oldValue) { + // If value == true, select the appropriate position + // this may end up selecting the value we just cleared but this way + // we don't have to first to a get(position) + if (value) { mCheckStates.put(position, true); } } diff --git a/core/java/android/widget/MultiAutoCompleteTextView.java b/core/java/android/widget/MultiAutoCompleteTextView.java index 05abc2661eb2..ae8027784bc3 100644 --- a/core/java/android/widget/MultiAutoCompleteTextView.java +++ b/core/java/android/widget/MultiAutoCompleteTextView.java @@ -195,6 +195,8 @@ public class MultiAutoCompleteTextView extends AutoCompleteTextView { */ @Override protected void replaceText(CharSequence text) { + clearComposingText(); + int end = getSelectionEnd(); int start = mTokenizer.findTokenStart(getText(), end); diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java index 78c7bd8e54c4..0c2cd55d2ee3 100644 --- a/core/java/android/widget/PopupWindow.java +++ b/core/java/android/widget/PopupWindow.java @@ -18,6 +18,8 @@ package android.widget; import com.android.internal.R; +import android.content.Context; +import android.content.res.TypedArray; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; @@ -33,8 +35,6 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.StateListDrawable; import android.os.IBinder; -import android.content.Context; -import android.content.res.TypedArray; import android.util.AttributeSet; import java.lang.ref.WeakReference; @@ -49,7 +49,7 @@ import java.lang.ref.WeakReference; */ public class PopupWindow { /** - * Mode for {@link #setInputMethodMode(int): the requirements for the + * Mode for {@link #setInputMethodMode(int)}: the requirements for the * input method should be based on the focusability of the popup. That is * if it is focusable than it needs to work with the input method, else * it doesn't. @@ -57,16 +57,15 @@ public class PopupWindow { public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; /** - * Mode for {@link #setInputMethodMode(int): this popup always needs to + * Mode for {@link #setInputMethodMode(int)}: this popup always needs to * work with an input method, regardless of whether it is focusable. This * means that it will always be displayed so that the user can also operate * the input method while it is shown. */ - public static final int INPUT_METHOD_NEEDED = 1; /** - * Mode for {@link #setInputMethodMode(int): this popup never needs to + * Mode for {@link #setInputMethodMode(int)}: this popup never needs to * work with an input method, regardless of whether it is focusable. This * means that it will always be displayed to use as much space on the * screen as needed, regardless of whether this covers the input method. @@ -823,6 +822,7 @@ public class PopupWindow { p.flags = computeFlags(p.flags); p.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; p.token = token; + p.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; p.setTitle("PopupWindow:" + Integer.toHexString(hashCode())); return p; @@ -990,7 +990,7 @@ public class PopupWindow { int bottomEdge = displayFrame.bottom; if (ignoreBottomDecorations) { - bottomEdge = WindowManagerImpl.getDefault().getDefaultDisplay().getHeight(); + bottomEdge = anchor.getContext().getResources().getDisplayMetrics().heightPixels; } final int distanceToBottom = bottomEdge - (anchorPos[1] + anchor.getHeight()) - yOffset; final int distanceToTop = anchorPos[1] - displayFrame.top + yOffset; @@ -1017,6 +1017,7 @@ public class PopupWindow { unregisterForScrollChanged(); mWindowManager.removeView(mPopupView); + if (mPopupView != mContentView && mPopupView instanceof ViewGroup) { ((ViewGroup) mPopupView).removeView(mContentView); } @@ -1071,6 +1072,20 @@ public class PopupWindow { mWindowManager.updateViewLayout(mPopupView, p); } } + + /** + *

      Updates the dimension of the popup window. Calling this function + * also updates the window with the current popup state as described + * for {@link #update()}.

      + * + * @param width the new width + * @param height the new height + */ + public void update(int width, int height) { + WindowManager.LayoutParams p = (WindowManager.LayoutParams) + mPopupView.getLayoutParams(); + update(p.x, p.y, width, height, false); + } /** *

      Updates the position and the dimension of the popup window. Width and @@ -1115,8 +1130,7 @@ public class PopupWindow { return; } - WindowManager.LayoutParams p = (WindowManager.LayoutParams) - mPopupView.getLayoutParams(); + WindowManager.LayoutParams p = (WindowManager.LayoutParams) mPopupView.getLayoutParams(); boolean update = force; @@ -1203,8 +1217,7 @@ public class PopupWindow { registerForScrollChanged(anchor, xoff, yoff); } - WindowManager.LayoutParams p = (WindowManager.LayoutParams) - mPopupView.getLayoutParams(); + WindowManager.LayoutParams p = (WindowManager.LayoutParams) mPopupView.getLayoutParams(); if (updateDimension) { if (width == -1) { @@ -1316,7 +1329,16 @@ public class PopupWindow { return super.onTouchEvent(event); } } - + + @Override + public void sendAccessibilityEvent(int eventType) { + // clinets are interested in the content not the container, make it event source + if (mContentView != null) { + mContentView.sendAccessibilityEvent(eventType); + } else { + super.sendAccessibilityEvent(eventType); + } + } } } diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java index 441414a20de4..2c9e71e02f08 100644 --- a/core/java/android/widget/ProgressBar.java +++ b/core/java/android/widget/ProgressBar.java @@ -30,6 +30,7 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.StateListDrawable; +import android.graphics.drawable.Animatable; import android.graphics.drawable.shapes.RoundRectShape; import android.graphics.drawable.shapes.Shape; import android.util.AttributeSet; @@ -683,7 +684,7 @@ public class ProgressBar extends View { return; } - if (mIndeterminateDrawable instanceof AnimationDrawable) { + if (mIndeterminateDrawable instanceof Animatable) { mShouldStartAnimationDrawable = true; mAnimation = null; } else { @@ -708,8 +709,8 @@ public class ProgressBar extends View { void stopAnimation() { mAnimation = null; mTransformation = null; - if (mIndeterminateDrawable instanceof AnimationDrawable) { - ((AnimationDrawable) mIndeterminateDrawable).stop(); + if (mIndeterminateDrawable instanceof Animatable) { + ((Animatable) mIndeterminateDrawable).stop(); mShouldStartAnimationDrawable = false; } } @@ -818,8 +819,8 @@ public class ProgressBar extends View { } d.draw(canvas); canvas.restore(); - if (mShouldStartAnimationDrawable && d instanceof AnimationDrawable) { - ((AnimationDrawable) d).start(); + if (mShouldStartAnimationDrawable && d instanceof Animatable) { + ((Animatable) d).start(); mShouldStartAnimationDrawable = false; } } diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java index edbb3db255ab..e62dda58ba42 100644 --- a/core/java/android/widget/RelativeLayout.java +++ b/core/java/android/widget/RelativeLayout.java @@ -16,40 +16,59 @@ package android.widget; +import com.android.internal.R; + import android.content.Context; import android.content.res.TypedArray; +import android.content.res.Resources; +import android.graphics.Rect; import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; +import android.util.SparseArray; +import android.util.Poolable; +import android.util.Pool; +import android.util.Pools; +import android.util.PoolableManager; +import static android.util.Log.d; import android.view.Gravity; +import android.view.View; import android.view.ViewDebug; +import android.view.ViewGroup; +import android.view.accessibility.AccessibilityEvent; import android.widget.RemoteViews.RemoteView; -import android.graphics.Rect; -import com.android.internal.R; +import java.util.Comparator; +import java.util.SortedSet; +import java.util.TreeSet; +import java.util.LinkedList; +import java.util.HashSet; +import java.util.ArrayList; /** * A Layout where the positions of the children can be described in relation to each other or to the * parent. For the sake of efficiency, the relations between views are evaluated in one pass, so if * view Y is dependent on the position of view X, make sure the view X comes first in the layout. - * + * *

      * Note that you cannot have a circular dependency between the size of the RelativeLayout and the * position of its children. For example, you cannot have a RelativeLayout whose height is set to * {@link android.view.ViewGroup.LayoutParams#WRAP_CONTENT WRAP_CONTENT} and a child set to * {@link #ALIGN_PARENT_BOTTOM}. *

      - * + * *

      * Also see {@link android.widget.RelativeLayout.LayoutParams RelativeLayout.LayoutParams} for * layout attributes *

      - * + * * @attr ref android.R.styleable#RelativeLayout_gravity * @attr ref android.R.styleable#RelativeLayout_ignoreGravity */ @RemoteView public class RelativeLayout extends ViewGroup { + private static final String LOG_TAG = "RelativeLayout"; + + private static final boolean DEBUG_GRAPH = false; + public static final int TRUE = -1; /** @@ -137,6 +156,13 @@ public class RelativeLayout extends ViewGroup { private final Rect mSelfBounds = new Rect(); private int mIgnoreGravity; + private SortedSet mTopToBottomLeftToRightSet = null; + + private boolean mDirtyHierarchy; + private View[] mSortedHorizontalChildren = new View[0]; + private View[] mSortedVerticalChildren = new View[0]; + private final DependencyGraph mGraph = new DependencyGraph(); + public RelativeLayout(Context context) { super(context); } @@ -224,8 +250,55 @@ public class RelativeLayout extends ViewGroup { return mBaselineView != null ? mBaselineView.getBaseline() : super.getBaseline(); } + @Override + public void requestLayout() { + super.requestLayout(); + mDirtyHierarchy = true; + } + + private void sortChildren() { + int count = getChildCount(); + if (mSortedVerticalChildren.length != count) mSortedVerticalChildren = new View[count]; + if (mSortedHorizontalChildren.length != count) mSortedHorizontalChildren = new View[count]; + + final DependencyGraph graph = mGraph; + graph.clear(); + + for (int i = 0; i < count; i++) { + final View child = getChildAt(i); + graph.add(child); + } + + if (DEBUG_GRAPH) { + d(LOG_TAG, "=== Sorted vertical children"); + graph.log(getResources(), ABOVE, BELOW, ALIGN_BASELINE, ALIGN_TOP, ALIGN_BOTTOM); + d(LOG_TAG, "=== Sorted horizontal children"); + graph.log(getResources(), LEFT_OF, RIGHT_OF, ALIGN_LEFT, ALIGN_RIGHT); + } + + graph.getSortedViews(mSortedVerticalChildren, ABOVE, BELOW, ALIGN_BASELINE, + ALIGN_TOP, ALIGN_BOTTOM); + graph.getSortedViews(mSortedHorizontalChildren, LEFT_OF, RIGHT_OF, ALIGN_LEFT, ALIGN_RIGHT); + + if (DEBUG_GRAPH) { + d(LOG_TAG, "=== Ordered list of vertical children"); + for (View view : mSortedVerticalChildren) { + DependencyGraph.printViewId(getResources(), view); + } + d(LOG_TAG, "=== Ordered list of horizontal children"); + for (View view : mSortedHorizontalChildren) { + DependencyGraph.printViewId(getResources(), view); + } + } + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (mDirtyHierarchy) { + mDirtyHierarchy = false; + sortChildren(); + } + int myWidth = -1; int myHeight = -1; @@ -254,7 +327,6 @@ public class RelativeLayout extends ViewGroup { height = myHeight; } - int len = this.getChildCount(); mHasBaselineAlignedChild = false; View ignore = null; @@ -268,22 +340,50 @@ public class RelativeLayout extends ViewGroup { int right = Integer.MIN_VALUE; int bottom = Integer.MIN_VALUE; + boolean offsetHorizontalAxis = false; + boolean offsetVerticalAxis = false; + if ((horizontalGravity || verticalGravity) && mIgnoreGravity != View.NO_ID) { ignore = findViewById(mIgnoreGravity); } - for (int i = 0; i < len; i++) { - View child = getChildAt(i); + final boolean isWrapContentWidth = widthMode != MeasureSpec.EXACTLY; + final boolean isWrapContentHeight = heightMode != MeasureSpec.EXACTLY; + + View[] views = mSortedHorizontalChildren; + int count = views.length; + for (int i = 0; i < count; i++) { + View child = views[i]; + if (child.getVisibility() != GONE) { + LayoutParams params = (LayoutParams) child.getLayoutParams(); + + applyHorizontalSizeRules(params, myWidth); + measureChildHorizontal(child, params, myWidth, myHeight); + if (positionChildHorizontal(child, params, myWidth, isWrapContentWidth)) { + offsetHorizontalAxis = true; + } + } + } + + views = mSortedVerticalChildren; + count = views.length; + + for (int i = 0; i < count; i++) { + View child = views[i]; if (child.getVisibility() != GONE) { LayoutParams params = (LayoutParams) child.getLayoutParams(); - applySizeRules(params, myWidth, myHeight); + + applyVerticalSizeRules(params, myHeight); measureChild(child, params, myWidth, myHeight); - positionChild(child, params, myWidth, myHeight); + if (positionChildVertical(child, params, myHeight, isWrapContentHeight)) { + offsetVerticalAxis = true; + } - if (widthMode != MeasureSpec.EXACTLY) { + if (isWrapContentWidth) { width = Math.max(width, params.mRight); } - if (heightMode != MeasureSpec.EXACTLY) { + + if (isWrapContentHeight) { height = Math.max(height, params.mBottom); } @@ -300,15 +400,15 @@ public class RelativeLayout extends ViewGroup { } if (mHasBaselineAlignedChild) { - for (int i = 0; i < len; i++) { + for (int i = 0; i < count; i++) { View child = getChildAt(i); if (child.getVisibility() != GONE) { LayoutParams params = (LayoutParams) child.getLayoutParams(); alignBaseline(child, params); if (child != ignore || verticalGravity) { - left = Math.min(left, params.mLeft - params.leftMargin); - top = Math.min(top, params.mTop - params.topMargin); + left = Math.min(left, params.mLeft - params.leftMargin); + top = Math.min(top, params.mTop - params.topMargin); } if (child != ignore || horizontalGravity) { @@ -319,8 +419,8 @@ public class RelativeLayout extends ViewGroup { } } - if (widthMode != MeasureSpec.EXACTLY) { - // Width already has left padding in it since it was calculated by looking at + if (isWrapContentWidth) { + // Width already has left padding in it since it was calculated by looking at // the right of each child view width += mPaddingRight; @@ -330,9 +430,23 @@ public class RelativeLayout extends ViewGroup { width = Math.max(width, getSuggestedMinimumWidth()); width = resolveSize(width, widthMeasureSpec); + + if (offsetHorizontalAxis) { + for (int i = 0; i < count; i++) { + View child = getChildAt(i); + if (child.getVisibility() != GONE) { + LayoutParams params = (LayoutParams) child.getLayoutParams(); + final int[] rules = params.getRules(); + if (rules[CENTER_IN_PARENT] != 0 || rules[CENTER_HORIZONTAL] != 0) { + centerHorizontal(child, params, width); + } + } + } + } } - if (heightMode != MeasureSpec.EXACTLY) { - // Height already has top padding in it since it was calculated by looking at + + if (isWrapContentHeight) { + // Height already has top padding in it since it was calculated by looking at // the bottom of each child view height += mPaddingBottom; @@ -342,6 +456,19 @@ public class RelativeLayout extends ViewGroup { height = Math.max(height, getSuggestedMinimumHeight()); height = resolveSize(height, heightMeasureSpec); + + if (offsetVerticalAxis) { + for (int i = 0; i < count; i++) { + View child = getChildAt(i); + if (child.getVisibility() != GONE) { + LayoutParams params = (LayoutParams) child.getLayoutParams(); + final int[] rules = params.getRules(); + if (rules[CENTER_IN_PARENT] != 0 || rules[CENTER_VERTICAL] != 0) { + centerVertical(child, params, height); + } + } + } + } } if (horizontalGravity || verticalGravity) { @@ -355,7 +482,7 @@ public class RelativeLayout extends ViewGroup { final int horizontalOffset = contentBounds.left - left; final int verticalOffset = contentBounds.top - top; if (horizontalOffset != 0 || verticalOffset != 0) { - for (int i = 0; i < len; i++) { + for (int i = 0; i < count; i++) { View child = getChildAt(i); if (child.getVisibility() != GONE && child != ignore) { LayoutParams params = (LayoutParams) child.getLayoutParams(); @@ -409,9 +536,7 @@ public class RelativeLayout extends ViewGroup { * @param myWidth Width of the the RelativeLayout * @param myHeight Height of the RelativeLayout */ - private void measureChild(View child, LayoutParams params, int myWidth, - int myHeight) { - + private void measureChild(View child, LayoutParams params, int myWidth, int myHeight) { int childWidthMeasureSpec = getChildMeasureSpec(params.mLeft, params.mRight, params.width, params.leftMargin, params.rightMargin, @@ -425,6 +550,21 @@ public class RelativeLayout extends ViewGroup { child.measure(childWidthMeasureSpec, childHeightMeasureSpec); } + private void measureChildHorizontal(View child, LayoutParams params, int myWidth, int myHeight) { + int childWidthMeasureSpec = getChildMeasureSpec(params.mLeft, + params.mRight, params.width, + params.leftMargin, params.rightMargin, + mPaddingLeft, mPaddingRight, + myWidth); + int childHeightMeasureSpec; + if (params.width == LayoutParams.FILL_PARENT) { + childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(myHeight, MeasureSpec.EXACTLY); + } else { + childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(myHeight, MeasureSpec.AT_MOST); + } + child.measure(childWidthMeasureSpec, childHeightMeasureSpec); + } + /** * Get a measure spec that accounts for all of the constraints on this view. * This includes size contstraints imposed by the RelativeLayout as well as @@ -504,19 +644,9 @@ public class RelativeLayout extends ViewGroup { return MeasureSpec.makeMeasureSpec(childSpecSize, childSpecMode); } - /** - * After the child has been measured, assign it a position. Some views may - * already have final values for l,t,r,b. Others may have one or both edges - * unfixed (i.e. set to -1) in each dimension. These will get positioned - * based on which edge is fixed, the view's desired dimension, and whether - * or not it is centered. - * - * @param child Child to position - * @param params LayoutParams associated with child - * @param myWidth Width of the the RelativeLayout - * @param myHeight Height of the RelativeLayout - */ - private void positionChild(View child, LayoutParams params, int myWidth, int myHeight) { + private boolean positionChildHorizontal(View child, LayoutParams params, int myWidth, + boolean wrapContent) { + int[] rules = params.getRules(); if (params.mLeft < 0 && params.mRight >= 0) { @@ -527,13 +657,26 @@ public class RelativeLayout extends ViewGroup { params.mRight = params.mLeft + child.getMeasuredWidth(); } else if (params.mLeft < 0 && params.mRight < 0) { // Both left and right vary - if (0 != rules[CENTER_IN_PARENT] || 0 != rules[CENTER_HORIZONTAL]) { - centerHorizontal(child, params, myWidth); + if (rules[CENTER_IN_PARENT] != 0 || rules[CENTER_HORIZONTAL] != 0) { + if (!wrapContent) { + centerHorizontal(child, params, myWidth); + } else { + params.mLeft = mPaddingLeft + params.leftMargin; + params.mRight = params.mLeft + child.getMeasuredWidth(); + } + return true; } else { params.mLeft = mPaddingLeft + params.leftMargin; params.mRight = params.mLeft + child.getMeasuredWidth(); } } + return false; + } + + private boolean positionChildVertical(View child, LayoutParams params, int myHeight, + boolean wrapContent) { + + int[] rules = params.getRules(); if (params.mTop < 0 && params.mBottom >= 0) { // Bottom is fixed, but top varies @@ -543,26 +686,23 @@ public class RelativeLayout extends ViewGroup { params.mBottom = params.mTop + child.getMeasuredHeight(); } else if (params.mTop < 0 && params.mBottom < 0) { // Both top and bottom vary - if (0 != rules[CENTER_IN_PARENT] || 0 != rules[CENTER_VERTICAL]) { - centerVertical(child, params, myHeight); + if (rules[CENTER_IN_PARENT] != 0 || rules[CENTER_VERTICAL] != 0) { + if (!wrapContent) { + centerVertical(child, params, myHeight); + } else { + params.mTop = mPaddingTop + params.topMargin; + params.mBottom = params.mTop + child.getMeasuredHeight(); + } + return true; } else { params.mTop = mPaddingTop + params.topMargin; params.mBottom = params.mTop + child.getMeasuredHeight(); } } + return false; } - /** - * Set l,t,r,b values in the LayoutParams for one view based on its layout rules. - * Big assumption #1: All antecedents of this view have been sized & positioned - * Big assumption #2: The dimensions of the parent view (the RelativeLayout) - * are already known if they are needed. - * - * @param childParams LayoutParams for the view being positioned - * @param myWidth Width of the the RelativeLayout - * @param myHeight Height of the RelativeLayout - */ - private void applySizeRules(LayoutParams childParams, int myWidth, int myHeight) { + private void applyHorizontalSizeRules(LayoutParams childParams, int myWidth) { int[] rules = childParams.getRules(); RelativeLayout.LayoutParams anchorParams; @@ -622,6 +762,11 @@ public class RelativeLayout extends ViewGroup { // FIXME uh oh... } } + } + + private void applyVerticalSizeRules(LayoutParams childParams, int myHeight) { + int[] rules = childParams.getRules(); + RelativeLayout.LayoutParams anchorParams; childParams.mTop = -1; childParams.mBottom = -1; @@ -684,18 +829,16 @@ public class RelativeLayout extends ViewGroup { private View getRelatedView(int[] rules, int relation) { int id = rules[relation]; if (id != 0) { - View v = findViewById(id); - if (v == null) { - return null; - } + DependencyGraph.Node node = mGraph.mKeyNodes.get(id); + if (node == null) return null; + View v = node.view; // Find the first non-GONE view up the chain while (v.getVisibility() == View.GONE) { rules = ((LayoutParams) v.getLayoutParams()).getRules(); - v = v.findViewById(rules[relation]); - if (v == null) { - return null; - } + node = mGraph.mKeyNodes.get((rules[relation])); + if (node == null) return null; + v = node.view; } return v; @@ -782,6 +925,57 @@ public class RelativeLayout extends ViewGroup { return new LayoutParams(p); } + @Override + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { + if (mTopToBottomLeftToRightSet == null) { + mTopToBottomLeftToRightSet = new TreeSet(new TopToBottomLeftToRightComparator()); + } + + // sort children top-to-bottom and left-to-right + for (int i = 0, count = getChildCount(); i < count; i++) { + mTopToBottomLeftToRightSet.add(getChildAt(i)); + } + + for (View view : mTopToBottomLeftToRightSet) { + if (view.dispatchPopulateAccessibilityEvent(event)) { + mTopToBottomLeftToRightSet.clear(); + return true; + } + } + + mTopToBottomLeftToRightSet.clear(); + return false; + } + + /** + * Compares two views in left-to-right and top-to-bottom fashion. + */ + private class TopToBottomLeftToRightComparator implements Comparator { + public int compare(View first, View second) { + // top - bottom + int topDifference = first.getTop() - second.getTop(); + if (topDifference != 0) { + return topDifference; + } + // left - right + int leftDifference = first.getLeft() - second.getLeft(); + if (leftDifference != 0) { + return leftDifference; + } + // break tie by height + int heightDiference = first.getHeight() - second.getHeight(); + if (heightDiference != 0) { + return heightDiference; + } + // break tie by width + int widthDiference = first.getWidth() - second.getWidth(); + if (widthDiference != 0) { + return widthDiference; + } + return 0; + } + } + /** * Per-child layout information associated with RelativeLayout. * @@ -823,7 +1017,7 @@ public class RelativeLayout extends ViewGroup { @ViewDebug.IntToString(from = RIGHT_OF, to = "rightOf") }, mapping = { @ViewDebug.IntToString(from = TRUE, to = "true"), - @ViewDebug.IntToString(from = 0, to = "FALSE/NO_ID") + @ViewDebug.IntToString(from = 0, to = "false/NO_ID") }) private int[] mRules = new int[VERB_COUNT]; @@ -975,4 +1169,284 @@ public class RelativeLayout extends ViewGroup { return mRules; } } + + private static class DependencyGraph { + /** + * List of all views in the graph. + */ + private ArrayList mNodes = new ArrayList(); + + /** + * List of nodes in the graph. Each node is identified by its + * view id (see View#getId()). + */ + private SparseArray mKeyNodes = new SparseArray(); + + /** + * Temporary data structure used to build the list of roots + * for this graph. + */ + private LinkedList mRoots = new LinkedList(); + + /** + * Clears the graph. + */ + void clear() { + final ArrayList nodes = mNodes; + final int count = nodes.size(); + + for (int i = 0; i < count; i++) { + nodes.get(i).release(); + } + nodes.clear(); + + mKeyNodes.clear(); + mRoots.clear(); + } + + /** + * Adds a view to the graph. + * + * @param view The view to be added as a node to the graph. + */ + void add(View view) { + final int id = view.getId(); + final Node node = Node.acquire(view); + + if (id != View.NO_ID) { + mKeyNodes.put(id, node); + } + + mNodes.add(node); + } + + /** + * Builds a sorted list of views. The sorting order depends on the dependencies + * between the view. For instance, if view C needs view A to be processed first + * and view A needs view B to be processed first, the dependency graph + * is: B -> A -> C. The sorted array will contain views B, A and C in this order. + * + * @param sorted The sorted list of views. The length of this array must + * be equal to getChildCount(). + * @param rules The list of rules to take into account. + */ + void getSortedViews(View[] sorted, int... rules) { + final LinkedList roots = findRoots(rules); + int index = 0; + + while (roots.size() > 0) { + final Node node = roots.removeFirst(); + final View view = node.view; + final int key = view.getId(); + + sorted[index++] = view; + + final HashSet dependents = node.dependents; + for (Node dependent : dependents) { + final SparseArray dependencies = dependent.dependencies; + + dependencies.remove(key); + if (dependencies.size() == 0) { + roots.add(dependent); + } + } + } + + if (index < sorted.length) { + throw new IllegalStateException("Circular dependencies cannot exist" + + " in RelativeLayout"); + } + } + + /** + * Finds the roots of the graph. A root is a node with no dependency and + * with [0..n] dependents. + * + * @param rulesFilter The list of rules to consider when building the + * dependencies + * + * @return A list of node, each being a root of the graph + */ + private LinkedList findRoots(int[] rulesFilter) { + final SparseArray keyNodes = mKeyNodes; + final ArrayList nodes = mNodes; + final int count = nodes.size(); + + // Find roots can be invoked several times, so make sure to clear + // all dependents and dependencies before running the algorithm + for (int i = 0; i < count; i++) { + final Node node = nodes.get(i); + node.dependents.clear(); + node.dependencies.clear(); + } + + // Builds up the dependents and dependencies for each node of the graph + for (int i = 0; i < count; i++) { + final Node node = nodes.get(i); + + final LayoutParams layoutParams = (LayoutParams) node.view.getLayoutParams(); + final int[] rules = layoutParams.mRules; + final int rulesCount = rulesFilter.length; + + // Look only the the rules passed in parameter, this way we build only the + // dependencies for a specific set of rules + for (int j = 0; j < rulesCount; j++) { + final int rule = rules[rulesFilter[j]]; + if (rule > 0) { + // The node this node depends on + final Node dependency = keyNodes.get(rule); + if (dependency == node) { + throw new IllegalStateException("A view cannot have a dependency" + + " on itself"); + } + if (dependency == null) { + continue; + } + // Add the current node as a dependent + dependency.dependents.add(node); + // Add a dependency to the current node + node.dependencies.put(rule, dependency); + } + } + } + + final LinkedList roots = mRoots; + roots.clear(); + + // Finds all the roots in the graph: all nodes with no dependencies + for (int i = 0; i < count; i++) { + final Node node = nodes.get(i); + if (node.dependencies.size() == 0) roots.add(node); + } + + return roots; + } + + /** + * Prints the dependency graph for the specified rules. + * + * @param resources The context's resources to print the ids. + * @param rules The list of rules to take into account. + */ + void log(Resources resources, int... rules) { + final LinkedList roots = findRoots(rules); + for (Node node : roots) { + printNode(resources, node); + } + } + + static void printViewId(Resources resources, View view) { + if (view.getId() != View.NO_ID) { + d(LOG_TAG, resources.getResourceEntryName(view.getId())); + } else { + d(LOG_TAG, "NO_ID"); + } + } + + private static void appendViewId(Resources resources, Node node, StringBuilder buffer) { + if (node.view.getId() != View.NO_ID) { + buffer.append(resources.getResourceEntryName(node.view.getId())); + } else { + buffer.append("NO_ID"); + } + } + + private static void printNode(Resources resources, Node node) { + if (node.dependents.size() == 0) { + printViewId(resources, node.view); + } else { + for (Node dependent : node.dependents) { + StringBuilder buffer = new StringBuilder(); + appendViewId(resources, node, buffer); + printdependents(resources, dependent, buffer); + } + } + } + + private static void printdependents(Resources resources, Node node, StringBuilder buffer) { + buffer.append(" -> "); + appendViewId(resources, node, buffer); + + if (node.dependents.size() == 0) { + d(LOG_TAG, buffer.toString()); + } else { + for (Node dependent : node.dependents) { + StringBuilder subBuffer = new StringBuilder(buffer); + printdependents(resources, dependent, subBuffer); + } + } + } + + /** + * A node in the dependency graph. A node is a view, its list of dependencies + * and its list of dependents. + * + * A node with no dependent is considered a root of the graph. + */ + static class Node implements Poolable { + /** + * The view representing this node in the layout. + */ + View view; + + /** + * The list of dependents for this node; a dependent is a node + * that needs this node to be processed first. + */ + final HashSet dependents = new HashSet(); + + /** + * The list of dependencies for this node. + */ + final SparseArray dependencies = new SparseArray(); + + /* + * START POOL IMPLEMENTATION + */ + // The pool is static, so all nodes instances are shared across + // activities, that's why we give it a rather high limit + private static final int POOL_LIMIT = 100; + private static final Pool sPool = Pools.synchronizedPool( + Pools.finitePool(new PoolableManager() { + public Node newInstance() { + return new Node(); + } + + public void onAcquired(Node element) { + } + + public void onReleased(Node element) { + } + }, POOL_LIMIT) + ); + + private Node mNext; + + public void setNextPoolable(Node element) { + mNext = element; + } + + public Node getNextPoolable() { + return mNext; + } + + static Node acquire(View view) { + final Node node = sPool.acquire(); + node.view = view; + + return node; + } + + void release() { + view = null; + dependents.clear(); + dependencies.clear(); + + sPool.release(this); + } + /* + * END POOL IMPLEMENTATION + */ + } + } } diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 7936f6535d9f..2dac65211213 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -20,10 +20,8 @@ import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; import android.content.Context; import android.content.pm.PackageManager.NameNotFoundException; -import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.PorterDuff; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Parcel; @@ -36,15 +34,12 @@ import android.view.View; import android.view.ViewGroup; import android.view.LayoutInflater.Filter; import android.view.View.OnClickListener; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; import java.lang.Class; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; @@ -69,13 +64,7 @@ public class RemoteViews implements Parcelable, Filter { * The resource ID of the layout file. (Added to the parcel) */ private int mLayoutId; - - /** - * The Context object used to inflate the layout file. Also may - * be used by actions if they need access to the senders resources. - */ - private Context mContext; - + /** * An array of actions to perform on the view tree once it has been * inflated @@ -85,7 +74,7 @@ public class RemoteViews implements Parcelable, Filter { /** * This annotation indicates that a subclass of View is alllowed to be used - * with the {@link android.widget.RemoteViews} mechanism. + * with the {@link RemoteViews} mechanism. */ @Target({ ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @@ -116,7 +105,7 @@ public class RemoteViews implements Parcelable, Filter { public int describeContents() { return 0; } - }; + } /** * Equivalent to calling @@ -232,15 +221,17 @@ public class RemoteViews implements Parcelable, Filter { targetDrawable = imageView.getDrawable(); } - // Perform modifications only if values are set correctly - if (alpha != -1) { - targetDrawable.setAlpha(alpha); - } - if (colorFilter != -1 && filterMode != null) { - targetDrawable.setColorFilter(colorFilter, filterMode); - } - if (level != -1) { - targetDrawable.setLevel(level); + if (targetDrawable != null) { + // Perform modifications only if values are set correctly + if (alpha != -1) { + targetDrawable.setAlpha(alpha); + } + if (colorFilter != -1 && filterMode != null) { + targetDrawable.setColorFilter(colorFilter, filterMode); + } + if (level != -1) { + targetDrawable.setLevel(level); + } } } @@ -289,6 +280,7 @@ public class RemoteViews implements Parcelable, Filter { this.viewId = in.readInt(); this.methodName = in.readString(); this.type = in.readInt(); + //noinspection ConstantIfStatement if (false) { Log.d("RemoteViews", "read viewId=0x" + Integer.toHexString(this.viewId) + " methodName=" + this.methodName + " type=" + this.type); @@ -340,31 +332,32 @@ public class RemoteViews implements Parcelable, Filter { out.writeInt(this.viewId); out.writeString(this.methodName); out.writeInt(this.type); + //noinspection ConstantIfStatement if (false) { Log.d("RemoteViews", "write viewId=0x" + Integer.toHexString(this.viewId) + " methodName=" + this.methodName + " type=" + this.type); } switch (this.type) { case BOOLEAN: - out.writeInt(((Boolean)this.value).booleanValue() ? 1 : 0); + out.writeInt((Boolean) this.value ? 1 : 0); break; case BYTE: - out.writeByte(((Byte)this.value).byteValue()); + out.writeByte((Byte) this.value); break; case SHORT: - out.writeInt(((Short)this.value).shortValue()); + out.writeInt((Short) this.value); break; case INT: - out.writeInt(((Integer)this.value).intValue()); + out.writeInt((Integer) this.value); break; case LONG: - out.writeLong(((Long)this.value).longValue()); + out.writeLong((Long) this.value); break; case FLOAT: - out.writeFloat(((Float)this.value).floatValue()); + out.writeFloat((Float) this.value); break; case DOUBLE: - out.writeDouble(((Double)this.value).doubleValue()); + out.writeDouble((Double) this.value); break; case CHAR: out.writeInt((int)((Character)this.value).charValue()); @@ -430,7 +423,7 @@ public class RemoteViews implements Parcelable, Filter { } Class klass = view.getClass(); - Method method = null; + Method method; try { method = klass.getMethod(this.methodName, getParameterType()); } @@ -446,6 +439,7 @@ public class RemoteViews implements Parcelable, Filter { } try { + //noinspection ConstantIfStatement if (false) { Log.d("RemoteViews", "view: " + klass.getName() + " calling method: " + this.methodName + "(" + param.getName() + ") with " @@ -816,13 +810,12 @@ public class RemoteViews implements Parcelable, Filter { * @return The inflated view hierarchy */ public View apply(Context context, ViewGroup parent) { - View result = null; + View result; Context c = prepareContext(context); - Resources r = c.getResources(); - LayoutInflater inflater = (LayoutInflater) c - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + LayoutInflater inflater = (LayoutInflater) + c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater = inflater.cloneInContext(c); inflater.setFilter(this); @@ -858,12 +851,12 @@ public class RemoteViews implements Parcelable, Filter { } private Context prepareContext(Context context) { - Context c = null; + Context c; String packageName = mPackage; if (packageName != null) { try { - c = context.createPackageContext(packageName, 0); + c = context.createPackageContext(packageName, Context.CONTEXT_RESTRICTED); } catch (NameNotFoundException e) { Log.e(LOG_TAG, "Package name " + packageName + " not found"); c = context; @@ -872,8 +865,6 @@ public class RemoteViews implements Parcelable, Filter { c = context; } - mContext = c; - return c; } diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java index c9b3751764eb..90e1242396f3 100644 --- a/core/java/android/widget/ScrollView.java +++ b/core/java/android/widget/ScrollView.java @@ -115,6 +115,8 @@ public class ScrollView extends FrameLayout { private boolean mSmoothScrollingEnabled = true; private int mTouchSlop; + private int mMinimumVelocity; + private int mMaximumVelocity; public ScrollView(Context context) { this(context, null); @@ -180,7 +182,10 @@ public class ScrollView extends FrameLayout { setFocusable(true); setDescendantFocusability(FOCUS_AFTER_DESCENDANTS); setWillNotDraw(false); - mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop(); + final ViewConfiguration configuration = ViewConfiguration.get(mContext); + mTouchSlop = configuration.getScaledTouchSlop(); + mMinimumVelocity = configuration.getScaledMinimumFlingVelocity(); + mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); } @Override @@ -478,12 +483,10 @@ public class ScrollView extends FrameLayout { break; case MotionEvent.ACTION_UP: final VelocityTracker velocityTracker = mVelocityTracker; - velocityTracker.computeCurrentVelocity(1000); + velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); int initialVelocity = (int) velocityTracker.getYVelocity(); - if ((Math.abs(initialVelocity) > - ViewConfiguration.get(mContext).getScaledMinimumFlingVelocity()) && - getChildCount() > 0) { + if ((Math.abs(initialVelocity) > mMinimumVelocity) && getChildCount() > 0) { fling(-initialVelocity); } diff --git a/core/java/android/widget/SlidingDrawer.java b/core/java/android/widget/SlidingDrawer.java index 92561edc1cd1..f70674430135 100644 --- a/core/java/android/widget/SlidingDrawer.java +++ b/core/java/android/widget/SlidingDrawer.java @@ -16,21 +16,22 @@ package android.widget; -import android.view.ViewGroup; -import android.view.View; -import android.view.MotionEvent; -import android.view.VelocityTracker; -import android.view.SoundEffectConstants; +import android.R; import android.content.Context; import android.content.res.TypedArray; -import android.util.AttributeSet; +import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Rect; -import android.graphics.Bitmap; -import android.os.SystemClock; import android.os.Handler; import android.os.Message; -import android.R; +import android.os.SystemClock; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.SoundEffectConstants; +import android.view.VelocityTracker; +import android.view.View; +import android.view.ViewGroup; +import android.view.accessibility.AccessibilityEvent; /** * SlidingDrawer hides content out of the screen and allows the user to drag a handle @@ -746,6 +747,8 @@ public class SlidingDrawer extends ViewGroup { openDrawer(); invalidate(); requestLayout(); + + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } /** @@ -777,6 +780,7 @@ public class SlidingDrawer extends ViewGroup { scrollListener.onScrollStarted(); } animateClose(mVertical ? mHandle.getTop() : mHandle.getLeft()); + if (scrollListener != null) { scrollListener.onScrollEnded(); } @@ -798,6 +802,9 @@ public class SlidingDrawer extends ViewGroup { scrollListener.onScrollStarted(); } animateOpen(mVertical ? mHandle.getTop() : mHandle.getLeft()); + + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + if (scrollListener != null) { scrollListener.onScrollEnded(); } @@ -827,6 +834,7 @@ public class SlidingDrawer extends ViewGroup { } mExpanded = true; + if (mOnDrawerOpenListener != null) { mOnDrawerOpenListener.onDrawerOpened(); } diff --git a/core/java/android/widget/TabHost.java b/core/java/android/widget/TabHost.java index dc2c70de92e4..103d44db52a0 100644 --- a/core/java/android/widget/TabHost.java +++ b/core/java/android/widget/TabHost.java @@ -87,8 +87,9 @@ public class TabHost extends FrameLayout implements ViewTreeObserver.OnTouchMode /** - *

      Call setup() before adding tabs if loading TabHost using findViewById(). However: You do - * not need to call setup() after getTabHost() in {@link android.app.TabActivity TabActivity}. + *

      Call setup() before adding tabs if loading TabHost using findViewById(). + * However: You do not need to call setup() after getTabHost() + * in {@link android.app.TabActivity TabActivity}. * Example:

      mTabHost = (TabHost)findViewById(R.id.tabhost);
       mTabHost.setup();
      @@ -176,7 +177,7 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
                   // leaving touch mode.. if nothing has focus, let's give it to
                   // the indicator of the current tab
                   if (!mCurrentView.hasFocus() || mCurrentView.isFocused()) {
      -                mTabWidget.getChildAt(mCurrentTab).requestFocus();
      +                mTabWidget.getChildTabViewAt(mCurrentTab).requestFocus();
                   }
               }
           }
      @@ -196,6 +197,12 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
               }
               View tabIndicator = tabSpec.mIndicatorStrategy.createIndicatorView();
               tabIndicator.setOnKeyListener(mTabKeyListener);
      +
      +        // If this is a custom view, then do not draw the bottom strips for
      +        // the tab indicators.
      +        if (tabSpec.mIndicatorStrategy instanceof ViewIndicatorStrategy) {
      +            mTabWidget.setDrawBottomStrips(false);
      +        }
               mTabWidget.addView(tabIndicator);
               mTabSpecs.add(tabSpec);
       
      @@ -234,7 +241,7 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
       
           public View getCurrentTabView() {
               if (mCurrentTab >= 0 && mCurrentTab < mTabSpecs.size()) {
      -            return mTabWidget.getChildAt(mCurrentTab);
      +            return mTabWidget.getChildTabViewAt(mCurrentTab);
               }
               return null;
           }
      @@ -272,7 +279,7 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
                       && (mCurrentView.isRootNamespace())
                       && (mCurrentView.hasFocus())
                       && (mCurrentView.findFocus().focusSearch(View.FOCUS_UP) == null)) {
      -            mTabWidget.getChildAt(mCurrentTab).requestFocus();
      +            mTabWidget.getChildTabViewAt(mCurrentTab).requestFocus();
                   playSoundEffect(SoundEffectConstants.NAVIGATION_UP);
                   return true;
               }
      @@ -363,14 +370,14 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
                * 
                * @param tag
                *            Which tab was selected.
      -         * @return The view to distplay the contents of the selected tab.
      +         * @return The view to display the contents of the selected tab.
                */
               View createTabContent(String tag);
           }
       
       
           /**
      -     * A tab has a tab indictor, content, and a tag that is used to keep
      +     * A tab has a tab indicator, content, and a tag that is used to keep
            * track of it.  This builder helps choose among these options.
            *
            * For the tab indicator, your choices are:
      @@ -409,6 +416,14 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
                   return this;
               }
       
      +        /**
      +         * Specify a view as the tab indicator.
      +         */
      +        public TabSpec setIndicator(View view) {
      +            mIndicatorStrategy = new ViewIndicatorStrategy(view);
      +            return this;
      +        }
      +
               /**
                * Specify the id of the view that should be used as the content
                * of the tab.
      @@ -436,7 +451,7 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
               }
       
       
      -        String getTag() {
      +        public String getTag() {
                   return mTag;
               }
           }
      @@ -524,6 +539,22 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
               }
           }
       
      +    /**
      +     * How to create a tab indicator by specifying a view.
      +     */
      +    private class ViewIndicatorStrategy implements IndicatorStrategy {
      +
      +        private final View mView;
      +
      +        private ViewIndicatorStrategy(View view) {
      +            mView = view;
      +        }
      +
      +        public View createIndicatorView() {
      +            return mView;
      +        }
      +    }
      +
           /**
            * How to create the tab content via a view id.
            */
      @@ -607,7 +638,7 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
                   }
                   mLaunchedView = wd;
                   
      -            // XXX Set FOCUS_AFTER_DESCENDANTS on embedded activies for now so they can get
      +            // XXX Set FOCUS_AFTER_DESCENDANTS on embedded activities for now so they can get
                   // focus if none of their children have it. They need focus to be able to
                   // display menu items.
                   //
      diff --git a/core/java/android/widget/TabWidget.java b/core/java/android/widget/TabWidget.java
      index 20cddcb3bfb2..a26bfa23eff8 100644
      --- a/core/java/android/widget/TabWidget.java
      +++ b/core/java/android/widget/TabWidget.java
      @@ -49,6 +49,8 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener {
           private Drawable mBottomLeftStrip;
           private Drawable mBottomRightStrip;
           private boolean mStripMoved;
      +    private Drawable mDividerDrawable;
      +    private boolean mDrawBottomStrips = true;
       
           public TabWidget(Context context) {
               this(context, null);
      @@ -87,9 +89,68 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener {
               setOnFocusChangeListener(this);
           }
       
      +    /**
      +     * Returns the tab indicator view at the given index.
      +     *
      +     * @param index the zero-based index of the tab indicator view to return
      +     * @return the tab indicator view at the given index
      +     */
      +    public View getChildTabViewAt(int index) {
      +        // If we are using dividers, then instead of tab views at 0, 1, 2, ...
      +        // we have tab views at 0, 2, 4, ...
      +        if (mDividerDrawable != null) {
      +            index *= 2;
      +        }
      +        return getChildAt(index);
      +    }
      +
      +    /**
      +     * Returns the number of tab indicator views.
      +     * @return the number of tab indicator views.
      +     */
      +    public int getTabCount() {
      +        int children = getChildCount();
      +
      +        // If we have dividers, then we will always have an odd number of
      +        // children: 1, 3, 5, ... and we want to convert that sequence to
      +        // this: 1, 2, 3, ...
      +        if (mDividerDrawable != null) {
      +            children = (children + 1) / 2;
      +        }
      +        return children;
      +    }
      +
      +    /**
      +     * Sets the drawable to use as a divider between the tab indicators.
      +     * @param drawable the divider drawable
      +     */
      +    public void setDividerDrawable(Drawable drawable) {
      +        mDividerDrawable = drawable;
      +    }
      +
      +    /**
      +     * Sets the drawable to use as a divider between the tab indicators.
      +     * @param resId the resource identifier of the drawable to use as a
      +     * divider.
      +     */
      +    public void setDividerDrawable(int resId) {
      +        mDividerDrawable = mContext.getResources().getDrawable(resId);
      +    }
      +
      +    /**
      +     * Controls whether the bottom strips on the tab indicators are drawn or
      +     * not.  The default is to draw them.  If the user specifies a custom
      +     * view for the tab indicators, then the TabHost class calls this method
      +     * to disable drawing of the bottom strips.
      +     * @param drawBottomStrips true if the bottom strips should be drawn.
      +     */
      +    void setDrawBottomStrips(boolean drawBottomStrips) {
      +        mDrawBottomStrips = drawBottomStrips;
      +    }
      +
           @Override
           public void childDrawableStateChanged(View child) {
      -        if (child == getChildAt(mSelectedTab)) {
      +        if (child == getChildTabViewAt(mSelectedTab)) {
                   // To make sure that the bottom strip is redrawn
                   invalidate();
               }
      @@ -100,7 +161,14 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener {
           public void dispatchDraw(Canvas canvas) {
               super.dispatchDraw(canvas);
       
      -        View selectedChild = getChildAt(mSelectedTab);
      +        // If the user specified a custom view for the tab indicators, then
      +        // do not draw the bottom strips.
      +        if (!mDrawBottomStrips) {
      +            // Skip drawing the bottom strips.
      +            return;
      +        }
      +
      +        View selectedChild = getChildTabViewAt(mSelectedTab);
               
               mBottomLeftStrip.setState(selectedChild.getDrawableState());
               mBottomRightStrip.setState(selectedChild.getDrawableState());
      @@ -157,13 +225,13 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener {
            *  @see #focusCurrentTab
            */
           public void setCurrentTab(int index) {
      -        if (index < 0 || index >= getChildCount()) {
      +        if (index < 0 || index >= getTabCount()) {
                   return;
               }
       
      -        getChildAt(mSelectedTab).setSelected(false);
      +        getChildTabViewAt(mSelectedTab).setSelected(false);
               mSelectedTab = index;
      -        getChildAt(mSelectedTab).setSelected(true);
      +        getChildTabViewAt(mSelectedTab).setSelected(true);
               mStripMoved = true;
           }
           
      @@ -189,17 +257,17 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener {
               
               // change the focus if applicable.
               if (oldTab != index) {
      -            getChildAt(index).requestFocus();
      +            getChildTabViewAt(index).requestFocus();
               }
           }
           
           @Override
           public void setEnabled(boolean enabled) {
               super.setEnabled(enabled);
      -        int count = getChildCount();
      +        int count = getTabCount();
               
      -        for (int i=0; i 0) {
      +            View divider = new View(mContext);
      +            final LinearLayout.LayoutParams lp = new LayoutParams(
      +                    mDividerDrawable.getIntrinsicWidth(),
      +                    mDividerDrawable.getIntrinsicHeight());
      +            lp.setMargins(0, 0, 0, 0);
      +            divider.setLayoutParams(lp);
      +            divider.setBackgroundDrawable(mDividerDrawable);
      +            super.addView(divider);
      +        }
               super.addView(child);
       
               // TODO: detect this via geometry with a tabwidget listener rather
               // than potentially interfere with the view's listener
      -        child.setOnClickListener(new TabClickListener(getChildCount() - 1));
      +        child.setOnClickListener(new TabClickListener(getTabCount() - 1));
               child.setOnFocusChangeListener(this);
           }
       
      -
      -
      -
           /**
            * Provides a way for {@link TabHost} to be notified that the user clicked on a tab indicator.
            */
      @@ -238,14 +315,15 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener {
       
           public void onFocusChange(View v, boolean hasFocus) {
               if (v == this && hasFocus) {
      -            getChildAt(mSelectedTab).requestFocus();
      +            getChildTabViewAt(mSelectedTab).requestFocus();
                   return;
               }
               
               if (hasFocus) {
                   int i = 0;
      -            while (i < getChildCount()) {
      -                if (getChildAt(i) == v) {
      +            int numTabs = getTabCount();
      +            while (i < numTabs) {
      +                if (getChildTabViewAt(i) == v) {
                           setCurrentTab(i);
                           mSelectionChangedListener.onTabSelectionChanged(i, false);
                           break;
      diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
      index adfc74fbfae2..d8ed4f0e4e86 100644
      --- a/core/java/android/widget/TextView.java
      +++ b/core/java/android/widget/TextView.java
      @@ -16,6 +16,11 @@
       
       package android.widget;
       
      +import com.android.internal.util.FastMath;
      +import com.android.internal.widget.EditableInputConnection;
      +
      +import org.xmlpull.v1.XmlPullParserException;
      +
       import android.content.Context;
       import android.content.Intent;
       import android.content.res.ColorStateList;
      @@ -31,17 +36,17 @@ import android.graphics.Typeface;
       import android.graphics.drawable.Drawable;
       import android.os.Bundle;
       import android.os.Handler;
      +import android.os.Message;
       import android.os.Parcel;
       import android.os.Parcelable;
       import android.os.ResultReceiver;
       import android.os.SystemClock;
      -import android.os.Message;
       import android.text.BoringLayout;
      +import android.text.ClipboardManager;
       import android.text.DynamicLayout;
       import android.text.Editable;
       import android.text.GetChars;
       import android.text.GraphicsOperations;
      -import android.text.ClipboardManager;
       import android.text.InputFilter;
       import android.text.InputType;
       import android.text.Layout;
      @@ -49,9 +54,9 @@ import android.text.ParcelableSpan;
       import android.text.Selection;
       import android.text.SpanWatcher;
       import android.text.Spannable;
      +import android.text.SpannableString;
       import android.text.Spanned;
       import android.text.SpannedString;
      -import android.text.SpannableString;
       import android.text.StaticLayout;
       import android.text.TextPaint;
       import android.text.TextUtils;
      @@ -64,19 +69,18 @@ import android.text.method.KeyListener;
       import android.text.method.LinkMovementMethod;
       import android.text.method.MetaKeyKeyListener;
       import android.text.method.MovementMethod;
      -import android.text.method.TimeKeyListener;
      -
       import android.text.method.PasswordTransformationMethod;
       import android.text.method.SingleLineTransformationMethod;
       import android.text.method.TextKeyListener;
      +import android.text.method.TimeKeyListener;
       import android.text.method.TransformationMethod;
       import android.text.style.ParagraphStyle;
       import android.text.style.URLSpan;
       import android.text.style.UpdateAppearance;
       import android.text.util.Linkify;
       import android.util.AttributeSet;
      -import android.util.Log;
       import android.util.FloatMath;
      +import android.util.Log;
       import android.util.TypedValue;
       import android.view.ContextMenu;
       import android.view.Gravity;
      @@ -89,25 +93,22 @@ import android.view.ViewDebug;
       import android.view.ViewRoot;
       import android.view.ViewTreeObserver;
       import android.view.ViewGroup.LayoutParams;
      +import android.view.accessibility.AccessibilityEvent;
      +import android.view.accessibility.AccessibilityManager;
       import android.view.animation.AnimationUtils;
       import android.view.inputmethod.BaseInputConnection;
       import android.view.inputmethod.CompletionInfo;
      +import android.view.inputmethod.EditorInfo;
       import android.view.inputmethod.ExtractedText;
       import android.view.inputmethod.ExtractedTextRequest;
       import android.view.inputmethod.InputConnection;
       import android.view.inputmethod.InputMethodManager;
      -import android.view.inputmethod.EditorInfo;
       import android.widget.RemoteViews.RemoteView;
       
       import java.io.IOException;
       import java.lang.ref.WeakReference;
       import java.util.ArrayList;
       
      -import com.android.internal.util.FastMath;
      -import com.android.internal.widget.EditableInputConnection;
      -
      -import org.xmlpull.v1.XmlPullParserException;
      -
       /**
        * Displays text to the user and optionally allows them to edit it.  A TextView
        * is a complete text editor, however the basic class is configured to not
      @@ -126,6 +127,8 @@ import org.xmlpull.v1.XmlPullParserException;
        * @attr ref android.R.styleable#TextView_textColor
        * @attr ref android.R.styleable#TextView_textColorHighlight
        * @attr ref android.R.styleable#TextView_textColorHint
      + * @attr ref android.R.styleable#TextView_textAppearance
      + * @attr ref android.R.styleable#TextView_textColorLink
        * @attr ref android.R.styleable#TextView_textSize
        * @attr ref android.R.styleable#TextView_textScaleX
        * @attr ref android.R.styleable#TextView_typeface
      @@ -163,13 +166,22 @@ import org.xmlpull.v1.XmlPullParserException;
        * @attr ref android.R.styleable#TextView_capitalize
        * @attr ref android.R.styleable#TextView_autoText
        * @attr ref android.R.styleable#TextView_editable
      + * @attr ref android.R.styleable#TextView_freezesText
      + * @attr ref android.R.styleable#TextView_ellipsize
        * @attr ref android.R.styleable#TextView_drawableTop
        * @attr ref android.R.styleable#TextView_drawableBottom
        * @attr ref android.R.styleable#TextView_drawableRight
        * @attr ref android.R.styleable#TextView_drawableLeft
      + * @attr ref android.R.styleable#TextView_drawablePadding
        * @attr ref android.R.styleable#TextView_lineSpacingExtra
        * @attr ref android.R.styleable#TextView_lineSpacingMultiplier
        * @attr ref android.R.styleable#TextView_marqueeRepeatLimit
      + * @attr ref android.R.styleable#TextView_inputType
      + * @attr ref android.R.styleable#TextView_imeOptions
      + * @attr ref android.R.styleable#TextView_privateImeOptions
      + * @attr ref android.R.styleable#TextView_imeActionLabel
      + * @attr ref android.R.styleable#TextView_imeActionId
      + * @attr ref android.R.styleable#TextView_editorExtras
        */
       @RemoteView
       public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {
      @@ -404,6 +416,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
               boolean singleLine = false;
               int maxlength = -1;
               CharSequence text = "";
      +        CharSequence hint = null;
               int shadowcolor = 0;
               float dx = 0, dy = 0, r = 0;
               boolean password = false;
      @@ -531,7 +544,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                       break;
       
                   case com.android.internal.R.styleable.TextView_hint:
      -                setHint(a.getText(attr));
      +                hint = a.getText(attr);
                       break;
       
                   case com.android.internal.R.styleable.TextView_text:
      @@ -861,6 +874,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
               }
       
               setText(text, bufferType);
      +        if (hint != null) setHint(hint);
       
               /*
                * Views are not normally focusable unless specified to be.
      @@ -1328,9 +1342,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                       } else {
                           // We need to retain the last set padding, so just clear
                           // out all of the fields in the existing structure.
      +                    if (dr.mDrawableLeft != null) dr.mDrawableLeft.setCallback(null);
                           dr.mDrawableLeft = null;
      +                    if (dr.mDrawableTop != null) dr.mDrawableTop.setCallback(null);
                           dr.mDrawableTop = null;
      +                    if (dr.mDrawableRight != null) dr.mDrawableRight.setCallback(null);
                           dr.mDrawableRight = null;
      +                    if (dr.mDrawableBottom != null) dr.mDrawableBottom.setCallback(null);
                           dr.mDrawableBottom = null;
                           dr.mDrawableSizeLeft = dr.mDrawableHeightLeft = 0;
                           dr.mDrawableSizeRight = dr.mDrawableHeightRight = 0;
      @@ -1343,19 +1361,32 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                       mDrawables = dr = new Drawables();
                   }
       
      +            if (dr.mDrawableLeft != left && dr.mDrawableLeft != null) {
      +                dr.mDrawableLeft.setCallback(null);
      +            }
                   dr.mDrawableLeft = left;
      +            if (dr.mDrawableTop != left && dr.mDrawableTop != null) {
      +                dr.mDrawableTop.setCallback(null);
      +            }
                   dr.mDrawableTop = top;
      +            if (dr.mDrawableRight != left && dr.mDrawableRight != null) {
      +                dr.mDrawableRight.setCallback(null);
      +            }
                   dr.mDrawableRight = right;
      +            if (dr.mDrawableBottom != left && dr.mDrawableBottom != null) {
      +                dr.mDrawableBottom.setCallback(null);
      +            }
                   dr.mDrawableBottom = bottom;
       
                   final Rect compoundRect = dr.mCompoundRect;
      -            int[] state = null;
      +            int[] state;
       
                   state = getDrawableState();
       
                   if (left != null) {
                       left.setState(state);
                       left.copyBounds(compoundRect);
      +                left.setCallback(this);
                       dr.mDrawableSizeLeft = compoundRect.width();
                       dr.mDrawableHeightLeft = compoundRect.height();
                   } else {
      @@ -1365,6 +1396,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   if (right != null) {
                       right.setState(state);
                       right.copyBounds(compoundRect);
      +                right.setCallback(this);
                       dr.mDrawableSizeRight = compoundRect.width();
                       dr.mDrawableHeightRight = compoundRect.height();
                   } else {
      @@ -1374,6 +1406,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   if (top != null) {
                       top.setState(state);
                       top.copyBounds(compoundRect);
      +                top.setCallback(this);
                       dr.mDrawableSizeTop = compoundRect.height();
                       dr.mDrawableWidthTop = compoundRect.width();
                   } else {
      @@ -1383,6 +1416,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   if (bottom != null) {
                       bottom.setState(state);
                       bottom.copyBounds(compoundRect);
      +                bottom.setCallback(this);
                       dr.mDrawableSizeBottom = compoundRect.height();
                       dr.mDrawableWidthBottom = compoundRect.width();
                   } else {
      @@ -2785,8 +2819,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   checkForRelayout();
               }
       
      -        if (mText.length() == 0)
      +        if (mText.length() == 0) {
                   invalidate();
      +        }
           }
       
           /**
      @@ -3646,12 +3681,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
       
           @Override
           protected boolean isPaddingOffsetRequired() {
      -        return mShadowRadius != 0;
      +        return mShadowRadius != 0 || mDrawables != null;
           }
       
           @Override
           protected int getLeftPaddingOffset() {
      -        return (int) Math.min(0, mShadowDx - mShadowRadius);
      +        return getCompoundPaddingLeft() - mPaddingLeft +
      +                (int) Math.min(0, mShadowDx - mShadowRadius);
           }
       
           @Override
      @@ -3666,7 +3702,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
       
           @Override
           protected int getRightPaddingOffset() {
      -        return (int) Math.max(0, mShadowDx + mShadowRadius);
      +        return -(getCompoundPaddingRight() - mPaddingRight) +
      +                (int) Math.max(0, mShadowDx + mShadowRadius);
           }
       
           @Override
      @@ -3679,6 +3716,54 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
               return verified;
           }
       
      +    @Override
      +    public void invalidateDrawable(Drawable drawable) {
      +        if (verifyDrawable(drawable)) {
      +            final Rect dirty = drawable.getBounds();
      +            int scrollX = mScrollX;
      +            int scrollY = mScrollY;
      +
      +            // IMPORTANT: The coordinates below are based on the coordinates computed
      +            // for each compound drawable in onDraw(). Make sure to update each section
      +            // accordingly.
      +            final TextView.Drawables drawables = mDrawables;
      +            if (drawables != null) {
      +                if (drawable == drawables.mDrawableLeft) {
      +                    final int compoundPaddingTop = getCompoundPaddingTop();
      +                    final int compoundPaddingBottom = getCompoundPaddingBottom();
      +                    final int vspace = mBottom - mTop - compoundPaddingBottom - compoundPaddingTop;
      +
      +                    scrollX += mPaddingLeft;
      +                    scrollY += compoundPaddingTop + (vspace - drawables.mDrawableHeightLeft) / 2;
      +                } else if (drawable == drawables.mDrawableRight) {
      +                    final int compoundPaddingTop = getCompoundPaddingTop();
      +                    final int compoundPaddingBottom = getCompoundPaddingBottom();
      +                    final int vspace = mBottom - mTop - compoundPaddingBottom - compoundPaddingTop;
      +
      +                    scrollX += (mRight - mLeft - mPaddingRight - drawables.mDrawableSizeRight);
      +                    scrollY += compoundPaddingTop + (vspace - drawables.mDrawableHeightRight) / 2;
      +                } else if (drawable == drawables.mDrawableTop) {
      +                    final int compoundPaddingLeft = getCompoundPaddingLeft();
      +                    final int compoundPaddingRight = getCompoundPaddingRight();
      +                    final int hspace = mRight - mLeft - compoundPaddingRight - compoundPaddingLeft;
      +
      +                    scrollX += compoundPaddingLeft + (hspace - drawables.mDrawableWidthTop) / 2;
      +                    scrollY += mPaddingTop;
      +                } else if (drawable == drawables.mDrawableBottom) {
      +                    final int compoundPaddingLeft = getCompoundPaddingLeft();
      +                    final int compoundPaddingRight = getCompoundPaddingRight();
      +                    final int hspace = mRight - mLeft - compoundPaddingRight - compoundPaddingLeft;
      +
      +                    scrollX += compoundPaddingLeft + (hspace - drawables.mDrawableWidthBottom) / 2;
      +                    scrollY += (mBottom - mTop - mPaddingBottom - drawables.mDrawableSizeBottom);
      +                }
      +            }
      +
      +            invalidate(dirty.left + scrollX, dirty.top + scrollY,
      +                    dirty.right + scrollX, dirty.bottom + scrollY);
      +        }
      +    }
      +
           @Override
           protected void onDraw(Canvas canvas) {
               restartMarqueeIfNeeded();
      @@ -3707,6 +3792,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   int vspace = bottom - top - compoundPaddingBottom - compoundPaddingTop;
                   int hspace = right - left - compoundPaddingRight - compoundPaddingLeft;
       
      +            // IMPORTANT: The coordinates computed are also used in invalidateDrawable()
      +            // Make sure to update invalidateDrawable() when changing this code.
                   if (dr.mDrawableLeft != null) {
                       canvas.save();
                       canvas.translate(scrollX + mPaddingLeft,
      @@ -3716,6 +3803,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                       canvas.restore();
                   }
       
      +            // IMPORTANT: The coordinates computed are also used in invalidateDrawable()
      +            // Make sure to update invalidateDrawable() when changing this code.
                   if (dr.mDrawableRight != null) {
                       canvas.save();
                       canvas.translate(scrollX + right - left - mPaddingRight - dr.mDrawableSizeRight,
      @@ -3724,6 +3813,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                       canvas.restore();
                   }
       
      +            // IMPORTANT: The coordinates computed are also used in invalidateDrawable()
      +            // Make sure to update invalidateDrawable() when changing this code.
                   if (dr.mDrawableTop != null) {
                       canvas.save();
                       canvas.translate(scrollX + compoundPaddingLeft + (hspace - dr.mDrawableWidthTop) / 2,
      @@ -3732,6 +3823,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                       canvas.restore();
                   }
       
      +            // IMPORTANT: The coordinates computed are also used in invalidateDrawable()
      +            // Make sure to update invalidateDrawable() when changing this code.
                   if (dr.mDrawableBottom != null) {
                       canvas.save();
                       canvas.translate(scrollX + compoundPaddingLeft +
      @@ -4714,10 +4807,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                       alignment = Layout.Alignment.ALIGN_NORMAL;
               }
       
      +        boolean shouldEllipsize = mEllipsize != null && mInput == null;
      +
               if (mText instanceof Spannable) {
                   mLayout = new DynamicLayout(mText, mTransformed, mTextPaint, w,
                           alignment, mSpacingMult,
      -                    mSpacingAdd, mIncludePad, mEllipsize,
      +                    mSpacingAdd, mIncludePad, mInput == null ? mEllipsize : null,
                           ellipsisWidth);
               } else {
                   if (boring == UNKNOWN_BORING) {
      @@ -4744,7 +4839,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                           // Log.e("aaa", "Boring: " + mTransformed);
       
                           mSavedLayout = (BoringLayout) mLayout;
      -                } else if (mEllipsize != null && boring.width <= w) {
      +                } else if (shouldEllipsize && boring.width <= w) {
                           if (mSavedLayout != null) {
                               mLayout = mSavedLayout.
                                       replaceOrMake(mTransformed, mTextPaint,
      @@ -4757,7 +4852,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                                       boring, mIncludePad, mEllipsize,
                                       ellipsisWidth);
                           }
      -                } else if (mEllipsize != null) {
      +                } else if (shouldEllipsize) {
                           mLayout = new StaticLayout(mTransformed,
                                       0, mTransformed.length(),
                                       mTextPaint, w, alignment, mSpacingMult,
      @@ -4769,7 +4864,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                                   mIncludePad);
                           // Log.e("aaa", "Boring but wide: " + mTransformed);
                       }
      -            } else if (mEllipsize != null) {
      +            } else if (shouldEllipsize) {
                       mLayout = new StaticLayout(mTransformed,
                                   0, mTransformed.length(),
                                   mTextPaint, w, alignment, mSpacingMult,
      @@ -4782,9 +4877,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   }
               }
       
      +        shouldEllipsize = mEllipsize != null;
               mHintLayout = null;
       
               if (mHint != null) {
      +            if (shouldEllipsize) hintWidth = w;
      +
                   if (hintBoring == UNKNOWN_BORING) {
                       hintBoring = BoringLayout.isBoring(mHint, mTextPaint,
                                                          mHintBoring);
      @@ -4794,24 +4892,50 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   }
       
                   if (hintBoring != null) {
      -                if (hintBoring.width <= hintWidth) {
      +                if (hintBoring.width <= hintWidth &&
      +                    (!shouldEllipsize || hintBoring.width <= ellipsisWidth)) {
                           if (mSavedHintLayout != null) {
                               mHintLayout = mSavedHintLayout.
                                       replaceOrMake(mHint, mTextPaint,
      -                                hintWidth, alignment, mSpacingMult,
      -                                mSpacingAdd, hintBoring, mIncludePad);
      +                                hintWidth, alignment, mSpacingMult, mSpacingAdd,
      +                                hintBoring, mIncludePad);
                           } else {
                               mHintLayout = BoringLayout.make(mHint, mTextPaint,
      -                                hintWidth, alignment, mSpacingMult,
      -                                mSpacingAdd, hintBoring, mIncludePad);
      +                                hintWidth, alignment, mSpacingMult, mSpacingAdd,
      +                                hintBoring, mIncludePad);
                           }
       
                           mSavedHintLayout = (BoringLayout) mHintLayout;
      +                } else if (shouldEllipsize && hintBoring.width <= hintWidth) {
      +                    if (mSavedHintLayout != null) {
      +                        mHintLayout = mSavedHintLayout.
      +                                replaceOrMake(mHint, mTextPaint,
      +                                hintWidth, alignment, mSpacingMult, mSpacingAdd,
      +                                hintBoring, mIncludePad, mEllipsize,
      +                                ellipsisWidth);
      +                    } else {
      +                        mHintLayout = BoringLayout.make(mHint, mTextPaint,
      +                                hintWidth, alignment, mSpacingMult, mSpacingAdd,
      +                                hintBoring, mIncludePad, mEllipsize,
      +                                ellipsisWidth);
      +                    }
      +                } else if (shouldEllipsize) {
      +                    mHintLayout = new StaticLayout(mHint,
      +                                0, mHint.length(),
      +                                mTextPaint, hintWidth, alignment, mSpacingMult,
      +                                mSpacingAdd, mIncludePad, mEllipsize,
      +                                ellipsisWidth);
                       } else {
                           mHintLayout = new StaticLayout(mHint, mTextPaint,
                                   hintWidth, alignment, mSpacingMult, mSpacingAdd,
                                   mIncludePad);
                       }
      +            } else if (shouldEllipsize) {
      +                mHintLayout = new StaticLayout(mHint,
      +                            0, mHint.length(),
      +                            mTextPaint, hintWidth, alignment, mSpacingMult,
      +                            mSpacingAdd, mIncludePad, mEllipsize,
      +                            ellipsisWidth);
                   } else {
                       mHintLayout = new StaticLayout(mHint, mTextPaint,
                               hintWidth, alignment, mSpacingMult, mSpacingAdd,
      @@ -4895,8 +5019,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
               }
           }
       
      -    private static final BoringLayout.Metrics UNKNOWN_BORING =
      -                                                new BoringLayout.Metrics();
      +    private static final BoringLayout.Metrics UNKNOWN_BORING = new BoringLayout.Metrics();
       
           @Override
           protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
      @@ -4923,8 +5046,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   }
       
                   if (des < 0) {
      -                boring = BoringLayout.isBoring(mTransformed, mTextPaint,
      -                                               mBoring);
      +                boring = BoringLayout.isBoring(mTransformed, mTextPaint, mBoring);
                       if (boring != null) {
                           mBoring = boring;
                       }
      @@ -4934,8 +5056,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
       
                   if (boring == null || boring == UNKNOWN_BORING) {
                       if (des < 0) {
      -                    des = (int) FloatMath.ceil(Layout.
      -                                    getDesiredWidth(mTransformed, mTextPaint));
      +                    des = (int) FloatMath.ceil(Layout.getDesiredWidth(mTransformed, mTextPaint));
                       }
       
                       width = des;
      @@ -4953,13 +5074,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                       int hintDes = -1;
                       int hintWidth;
       
      -                if (mHintLayout != null) {
      +                if (mHintLayout != null && mEllipsize == null) {
                           hintDes = desired(mHintLayout);
                       }
       
                       if (hintDes < 0) {
      -                    hintBoring = BoringLayout.isBoring(mHint, mTextPaint,
      -                                                       mHintBoring);
      +                    hintBoring = BoringLayout.isBoring(mHint, mTextPaint, mHintBoring);
                           if (hintBoring != null) {
                               mHintBoring = hintBoring;
                           }
      @@ -4967,8 +5087,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
       
                       if (hintBoring == null || hintBoring == UNKNOWN_BORING) {
                           if (hintDes < 0) {
      -                        hintDes = (int) FloatMath.ceil(Layout.
      -                                        getDesiredWidth(mHint, mTextPaint));
      +                        hintDes = (int) FloatMath.ceil(
      +                                Layout.getDesiredWidth(mHint, mTextPaint));
                           }
       
                           hintWidth = hintDes;
      @@ -5014,20 +5134,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
       
               if (mLayout == null) {
                   makeNewLayout(want, hintWant, boring, hintBoring,
      -                          width - getCompoundPaddingLeft() - getCompoundPaddingRight(),
      -                          false);
      +                          width - getCompoundPaddingLeft() - getCompoundPaddingRight(), false);
               } else if ((mLayout.getWidth() != want) || (hintWidth != hintWant) ||
                          (mLayout.getEllipsizedWidth() !=
                               width - getCompoundPaddingLeft() - getCompoundPaddingRight())) {
                   if (mHint == null && mEllipsize == null &&
                           want > mLayout.getWidth() &&
                           (mLayout instanceof BoringLayout ||
      -                        (fromexisting && des >= 0 && des <= want))) {
      +                            (fromexisting && des >= 0 && des <= want))) {
                       mLayout.increaseWidthTo(want);
                   } else {
                       makeNewLayout(want, hintWant, boring, hintBoring,
      -                              width - getCompoundPaddingLeft() - getCompoundPaddingRight(),
      -                              false);
      +                              width - getCompoundPaddingLeft() - getCompoundPaddingRight(), false);
                   }
               } else {
                   // Width has not changed.
      @@ -5048,11 +5166,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   }
               }
       
      -        int unpaddedHeight = height - getCompoundPaddingTop() -
      -                                getCompoundPaddingBottom();
      +        int unpaddedHeight = height - getCompoundPaddingTop() - getCompoundPaddingBottom();
               if (mMaxMode == LINES && mLayout.getLineCount() > mMaximum) {
      -            unpaddedHeight = Math.min(unpaddedHeight,
      -                                      mLayout.getLineTop(mMaximum));
      +            unpaddedHeight = Math.min(unpaddedHeight, mLayout.getLineTop(mMaximum));
               }
       
               /*
      @@ -5071,8 +5187,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
           }
       
           private int getDesiredHeight() {
      -        return Math.max(getDesiredHeight(mLayout, true),
      -                        getDesiredHeight(mHintLayout, false));
      +        return Math.max(
      +                getDesiredHeight(mLayout, true),
      +                getDesiredHeight(mHintLayout, mEllipsize != null));
           }
       
           private int getDesiredHeight(Layout layout, boolean cap) {
      @@ -5715,6 +5832,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
           }
       
           private void startMarquee() {
      +        // Do not ellipsize EditText
      +        if (mInput != null) return;
      +
               if (compressText(getWidth() - getCompoundPaddingLeft() - getCompoundPaddingRight())) {
                   return;
               }
      @@ -6129,10 +6249,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
       
           private class ChangeWatcher
           implements TextWatcher, SpanWatcher {
      +
      +        private CharSequence mBeforeText;
      +
               public void beforeTextChanged(CharSequence buffer, int start,
                                             int before, int after) {
                   if (DEBUG_EXTRACT) Log.v(TAG, "beforeTextChanged start=" + start
                           + " before=" + before + " after=" + after + ": " + buffer);
      +
      +            if (AccessibilityManager.getInstance(mContext).isEnabled()) {
      +                mBeforeText = buffer.toString();
      +            }
      +
                   TextView.this.sendBeforeTextChanged(buffer, start, before, after);
               }
       
      @@ -6141,6 +6269,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   if (DEBUG_EXTRACT) Log.v(TAG, "onTextChanged start=" + start
                           + " before=" + before + " after=" + after + ": " + buffer);
                   TextView.this.handleTextChanged(buffer, start, before, after);
      +
      +            if (AccessibilityManager.getInstance(mContext).isEnabled() &&
      +                    (isFocused() || isSelected() &&
      +                    isShown())) {
      +                sendAccessibilityEventTypeViewTextChanged(mBeforeText, start, before, after);
      +                mBeforeText = null;
      +            }
               }
       
               public void afterTextChanged(Editable buffer) {
      @@ -6336,6 +6471,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
               
               protected void onReceiveResult(int resultCode, Bundle resultData) {
                   if (resultCode != InputMethodManager.RESULT_SHOWN) {
      +                final int len = mText.length();
      +                if (mNewStart > len) {
      +                    mNewStart = len;
      +                }
      +                if (mNewEnd > len) {
      +                    mNewEnd = len;
      +                }
                       Selection.setSelection((Spannable)mText, mNewStart, mNewEnd);
                   }
               }
      @@ -6525,9 +6667,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                   } else if (getLineCount() == 1) {
                       switch (mGravity & Gravity.HORIZONTAL_GRAVITY_MASK) {
                           case Gravity.LEFT:
      -                        return (mLayout.getLineRight(0) - mScrollX - (mRight - mLeft) -
      -                                getCompoundPaddingLeft() - getCompoundPaddingRight()) /
      -                                getHorizontalFadingEdgeLength();
      +                        final int textWidth = (mRight - mLeft) - getCompoundPaddingLeft() -
      +                                getCompoundPaddingRight();
      +                        final float lineWidth = mLayout.getLineWidth(0);
      +                        return (lineWidth - textWidth) / getHorizontalFadingEdgeLength();
                           case Gravity.RIGHT:
                               return 0.0f;
                           case Gravity.CENTER_HORIZONTAL:
      @@ -6775,6 +6918,40 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
               return TextUtils.substring(mTransformed, start, end);
           }
       
      +    @Override
      +    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
      +        boolean isPassword =
      +            (mInputType & (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION)) ==
      +            (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_PASSWORD);
      +
      +        if (!isPassword) {
      +            CharSequence text = getText();
      +            if (TextUtils.isEmpty(text)) {
      +                text = getHint();
      +            }
      +            if (!TextUtils.isEmpty(text)) {
      +                if (text.length() > AccessibilityEvent.MAX_TEXT_LENGTH) {
      +                    text = text.subSequence(0, AccessibilityEvent.MAX_TEXT_LENGTH + 1);
      +                }
      +                event.getText().add(text);
      +            }
      +        } else {
      +            event.setPassword(isPassword);
      +        }
      +        return false;
      +    }
      +
      +    void sendAccessibilityEventTypeViewTextChanged(CharSequence beforeText,
      +            int fromIndex, int removedCount, int addedCount) {
      +        AccessibilityEvent event =
      +            AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED);
      +        event.setFromIndex(fromIndex);
      +        event.setRemovedCount(removedCount);
      +        event.setAddedCount(addedCount);
      +        event.setBeforeText(beforeText);
      +        sendAccessibilityEventUnchecked(event);
      +    }
      +
           @Override
           protected void onCreateContextMenu(ContextMenu menu) {
               super.onCreateContextMenu(menu);
      diff --git a/core/java/android/widget/Toast.java b/core/java/android/widget/Toast.java
      index ff747878fba0..670692f552df 100644
      --- a/core/java/android/widget/Toast.java
      +++ b/core/java/android/widget/Toast.java
      @@ -21,8 +21,8 @@ import android.app.ITransientNotification;
       import android.content.Context;
       import android.content.res.Resources;
       import android.graphics.PixelFormat;
      -import android.os.RemoteException;
       import android.os.Handler;
      +import android.os.RemoteException;
       import android.os.ServiceManager;
       import android.util.Log;
       import android.view.Gravity;
      @@ -278,7 +278,7 @@ public class Toast {
               }
               tv.setText(s);
           }
      -    
      +
           // =======================================================================================
           // All the gunk below is the interaction with the Notification Service, which handles
           // the proper ordering of these system-wide.
      @@ -373,6 +373,7 @@ public class Toast {
                                   TAG, "REMOVE! " + mView + " in " + this);
                           mWM.removeView(mView);
                       }
      +
                       mView = null;
                   }
               }
      diff --git a/core/java/android/widget/VideoView.java b/core/java/android/widget/VideoView.java
      index 6d3a2d3602c0..20dd8a6bed91 100644
      --- a/core/java/android/widget/VideoView.java
      +++ b/core/java/android/widget/VideoView.java
      @@ -55,6 +55,7 @@ public class VideoView extends SurfaceView implements MediaPlayerControl {
           private SurfaceHolder mSurfaceHolder = null;
           private MediaPlayer mMediaPlayer = null;
           private boolean     mIsPrepared;
      +    private boolean     mIsPlaybackCompleted;
           private int         mVideoWidth;
           private int         mVideoHeight;
           private int         mSurfaceWidth;
      @@ -260,7 +261,7 @@ public class VideoView extends SurfaceView implements MediaPlayerControl {
                               mSeekWhenPrepared = 0;
                           }
                           if (mStartWhenPrepared) {
      -                        mMediaPlayer.start();
      +                        start();
                               mStartWhenPrepared = false;
                               if (mMediaController != null) {
                                   mMediaController.show();
      @@ -281,7 +282,7 @@ public class VideoView extends SurfaceView implements MediaPlayerControl {
                           mSeekWhenPrepared = 0;
                       }
                       if (mStartWhenPrepared) {
      -                    mMediaPlayer.start();
      +                    start();
                           mStartWhenPrepared = false;
                       }
                   }
      @@ -291,6 +292,7 @@ public class VideoView extends SurfaceView implements MediaPlayerControl {
           private MediaPlayer.OnCompletionListener mCompletionListener =
               new MediaPlayer.OnCompletionListener() {
               public void onCompletion(MediaPlayer mp) {
      +            mIsPlaybackCompleted = true;
                   if (mMediaController != null) {
                       mMediaController.hide();
                   }
      @@ -405,7 +407,9 @@ public class VideoView extends SurfaceView implements MediaPlayerControl {
                           mMediaPlayer.seekTo(mSeekWhenPrepared);
                           mSeekWhenPrepared = 0;
                       }
      -                mMediaPlayer.start();
      +                if (!mIsPlaybackCompleted) {
      +                    start();
      +                } 
                       if (mMediaController != null) {
                           mMediaController.show();
                       }
      @@ -490,6 +494,7 @@ public class VideoView extends SurfaceView implements MediaPlayerControl {
           }
           
           public void start() {
      +        mIsPlaybackCompleted = false;
               if (mMediaPlayer != null && mIsPrepared) {
                       mMediaPlayer.start();
                       mStartWhenPrepared = false;
      diff --git a/core/java/android/widget/ViewSwitcher.java b/core/java/android/widget/ViewSwitcher.java
      index f4f23a8f655b..0dcaf954279e 100644
      --- a/core/java/android/widget/ViewSwitcher.java
      +++ b/core/java/android/widget/ViewSwitcher.java
      @@ -16,8 +16,6 @@
       
       package android.widget;
       
      -import java.util.Map;
      -
       import android.content.Context;
       import android.util.AttributeSet;
       import android.view.View;
      diff --git a/core/java/android/widget/ZoomButtonsController.java b/core/java/android/widget/ZoomButtonsController.java
      index d9fb78b81d38..bae4dad5c01f 100644
      --- a/core/java/android/widget/ZoomButtonsController.java
      +++ b/core/java/android/widget/ZoomButtonsController.java
      @@ -81,27 +81,27 @@ public class ZoomButtonsController implements View.OnTouchListener {
           private static final int ZOOM_CONTROLS_TOUCH_PADDING = 20;
           private int mTouchPaddingScaledSq;
       
      -    private Context mContext;
      -    private WindowManager mWindowManager;
      +    private final Context mContext;
      +    private final WindowManager mWindowManager;
           private boolean mAutoDismissControls = true;
       
           /**
            * The view that is being zoomed by this zoom controller.
            */
      -    private View mOwnerView;
      +    private final View mOwnerView;
       
           /**
            * The location of the owner view on the screen. This is recalculated
            * each time the zoom controller is shown.
            */
      -    private int[] mOwnerViewRawLocation = new int[2];
      +    private final int[] mOwnerViewRawLocation = new int[2];
       
           /**
            * The container that is added as a window.
            */
      -    private FrameLayout mContainer;
      +    private final FrameLayout mContainer;
           private LayoutParams mContainerLayoutParams;
      -    private int[] mContainerRawLocation = new int[2];
      +    private final int[] mContainerRawLocation = new int[2];
       
           private ZoomControls mControls;
       
      @@ -113,7 +113,7 @@ public class ZoomButtonsController implements View.OnTouchListener {
           /**
            * The {@link #mTouchTargetView}'s location in window, set on touch down.
            */
      -    private int[] mTouchTargetWindowLocation = new int[2];
      +    private final int[] mTouchTargetWindowLocation = new int[2];
       
           /**
            * If the zoom controller is dismissed but the user is still in a touch
      @@ -128,8 +128,8 @@ public class ZoomButtonsController implements View.OnTouchListener {
           /** Whether the container has been added to the window manager. */
           private boolean mIsVisible;
       
      -    private Rect mTempRect = new Rect();
      -    private int[] mTempIntArray = new int[2];
      +    private final Rect mTempRect = new Rect();
      +    private final int[] mTempIntArray = new int[2];
       
           private OnZoomListener mCallback;
       
      @@ -141,13 +141,13 @@ public class ZoomButtonsController implements View.OnTouchListener {
            */
           private Runnable mPostedVisibleInitializer;
       
      -    private IntentFilter mConfigurationChangedFilter =
      +    private final IntentFilter mConfigurationChangedFilter =
                   new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED);
       
           /**
            * Needed to reposition the zoom controls after configuration changes.
            */
      -    private BroadcastReceiver mConfigurationChangedReceiver = new BroadcastReceiver() {
      +    private final BroadcastReceiver mConfigurationChangedReceiver = new BroadcastReceiver() {
               @Override
               public void onReceive(Context context, Intent intent) {
                   if (!mIsVisible) return;
      @@ -167,7 +167,7 @@ public class ZoomButtonsController implements View.OnTouchListener {
            */
           private static final int MSG_POST_SET_VISIBLE = 4;
       
      -    private Handler mHandler = new Handler() {
      +    private final Handler mHandler = new Handler() {
               @Override
               public void handleMessage(Message msg) {
                   switch (msg.what) {
      @@ -444,6 +444,9 @@ public class ZoomButtonsController implements View.OnTouchListener {
           }
       
           private void refreshPositioningVariables() {
      +        // if the mOwnerView is detached from window then skip.
      +        if (mOwnerView.getWindowToken() == null) return;
      +
               // Position the zoom controls on the bottom of the owner view.
               int ownerHeight = mOwnerView.getHeight();
               int ownerWidth = mOwnerView.getWidth();
      diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl
      index e1ff2a52062f..4bac5933d7ed 100644
      --- a/core/java/com/android/internal/app/IBatteryStats.aidl
      +++ b/core/java/com/android/internal/app/IBatteryStats.aidl
      @@ -18,6 +18,8 @@ package com.android.internal.app;
       
       import com.android.internal.os.BatteryStatsImpl;
       
      +import android.telephony.SignalStrength;
      +
       interface IBatteryStats {
           byte[] getStatistics();
           void noteStartWakelock(int uid, String name, int type);
      @@ -33,8 +35,9 @@ interface IBatteryStats {
           void noteUserActivity(int uid, int event);
           void notePhoneOn();
           void notePhoneOff();
      -    void notePhoneSignalStrength(int asu);
      +    void notePhoneSignalStrength(in SignalStrength signalStrength);
           void notePhoneDataConnectionState(int dataType, boolean hasData);
      +    void noteAirplaneMode(boolean isAirplaneMode);
           void noteWifiOn(int uid);
           void noteWifiOff(int uid);
           void noteWifiRunning();
      diff --git a/core/java/com/android/internal/backup/IBackupTransport.aidl b/core/java/com/android/internal/backup/IBackupTransport.aidl
      index ce39768137e2..af06965ae123 100644
      --- a/core/java/com/android/internal/backup/IBackupTransport.aidl
      +++ b/core/java/com/android/internal/backup/IBackupTransport.aidl
      @@ -16,6 +16,8 @@
       
       package com.android.internal.backup;
       
      +import android.backup.RestoreSet;
      +import android.content.pm.PackageInfo;
       import android.os.ParcelFileDescriptor;
       
       /** {@hide} */
      @@ -25,7 +27,7 @@ interface IBackupTransport {
           1. set up the connection to the destination
               - set up encryption
               - for Google cloud, log in using the user's gaia credential or whatever
      -        - for sd, spin off the backup transport and establish communication with it
      +        - for adb, just set up the all-in-one destination file
           2. send each app's backup transaction
               - parse the data file for key/value pointers etc
               - send key/blobsize set to the Google cloud, get back quota ok/rejected response
      @@ -36,34 +38,112 @@ interface IBackupTransport {
               - sd target streams raw data into encryption envelope then to sd?
           3. shut down connection to destination
               - cloud: tear down connection etc
      -        - sd: close the file and shut down the writer proxy
      +        - adb: close the file
       */
           /**
      -     * Establish a connection to the back-end data repository, if necessary.  If the transport
      -     * needs to initialize state that is not tied to individual applications' backup operations,
      -     * this is where it should be done.
      +     * Ask the transport where, on local device storage, to keep backup state blobs.
      +     * This is per-transport so that mock transports used for testing can coexist with
      +     * "live" backup services without interfering with the live bookkeeping.  The
      +     * returned string should be a name that is expected to be unambiguous among all
      +     * available backup transports; the name of the class implementing the transport
      +     * is a good choice.
            *
      -     * @return Zero on success; a nonzero error code on failure.
      +     * @return A unique name, suitable for use as a file or directory name, that the
      +     *         Backup Manager could use to disambiguate state files associated with
      +     *         different backup transports.
            */
      -    int startSession();
      +    String transportDirName();
       
           /**
      -     * Send one application's data to the backup destination.
      +     * Verify that this is a suitable time for a backup pass.  This should return zero
      +     * if a backup is reasonable right now, some positive value otherwise.  This method
      +     * will be called outside of the {@link #startSession}/{@link #endSession} pair.
            *
      -     * @param packageName The identity of the application whose data is being backed up.
      +     * 

      If this is not a suitable time for a backup, the transport should return a + * backoff delay, in milliseconds, after which the Backup Manager should try again. + * + * @return Zero if this is a suitable time for a backup pass, or a positive time delay + * in milliseconds to suggest deferring the backup pass for a while. + */ + long requestBackupTime(); + + /** + * Send one application's data to the backup destination. The transport may send + * the data immediately, or may buffer it. After this is called, {@link #finishBackup} + * must be called to ensure the data is sent and recorded successfully. + * + * @param packageInfo The identity of the application whose data is being backed up. + * This specifically includes the signature list for the package. * @param data The data stream that resulted from invoking the application's - * BackupService.doBackup() method. This may be a pipe rather than a - * file on persistent media, so it may not be seekable. - * @return Zero on success; a nonzero error code on failure. + * BackupService.doBackup() method. This may be a pipe rather than a file on + * persistent media, so it may not be seekable. + * @return false if errors occurred (the backup should be aborted and rescheduled), + * true if everything is OK so far (but {@link #finishBackup} must be called). + */ + boolean performBackup(in PackageInfo packageInfo, in ParcelFileDescriptor inFd); + + /** + * Erase the give application's data from the backup destination. This clears + * out the given package's data from the current backup set, making it as though + * the app had never yet been backed up. After this is called, {@link finishBackup} + * must be called to ensure that the operation is recorded successfully. + * + * @return false if errors occurred (the backup should be aborted and rescheduled), + * true if everything is OK so far (but {@link #finishBackup} must be called). + */ + boolean clearBackupData(in PackageInfo packageInfo); + + /** + * Finish sending application data to the backup destination. This must be + * called after {@link #performBackup} or {@link clearBackupData} to ensure that + * all data is sent. Only when this method returns true can a backup be assumed + * to have succeeded. + * + * @return false if errors occurred (the backup should be aborted and rescheduled), + * true if everything is OK. */ - int performBackup(String packageName, in ParcelFileDescriptor data); + boolean finishBackup(); /** - * Terminate the backup session, closing files, freeing memory, and cleaning up whatever - * other state the transport required. + * Get the set of backups currently available over this transport. * - * @return Zero on success; a nonzero error code on failure. Even on failure, the session - * is torn down and must be restarted if another backup is attempted. + * @return Descriptions of the set of restore images available for this device, + * or null if an error occurred (the attempt should be rescheduled). + **/ + RestoreSet[] getAvailableRestoreSets(); + + /** + * Start restoring application data from backup. After calling this function, + * alternate calls to {@link #nextRestorePackage} and {@link #nextRestoreData} + * to walk through the actual application data. + * + * @param token A backup token as returned by {@link #getAvailableRestoreSets}. + * @param packages List of applications to restore (if data is available). + * Application data will be restored in the order given. + * @return false if errors occurred (the restore should be aborted and rescheduled), + * true if everything is OK so far (go ahead and call {@link #nextRestorePackage}). + */ + boolean startRestore(long token, in PackageInfo[] packages); + + /** + * Get the package name of the next application with data in the backup store. + * @return The name of one of the packages supplied to {@link #startRestore}, + * or "" (the empty string) if no more backup data is available, + * or null if an error occurred (the restore should be aborted and rescheduled). + */ + String nextRestorePackage(); + + /** + * Get the data for the application returned by {@link #nextRestorePackage}. + * @param data An open, writable file into which the backup data should be stored. + * @return false if errors occurred (the restore should be aborted and rescheduled), + * true if everything is OK so far (go ahead and call {@link #nextRestorePackage}). + */ + boolean getRestoreData(in ParcelFileDescriptor outFd); + + /** + * End a restore session (aborting any in-process data transfer as necessary), + * freeing any resources and connections used during the restore process. */ - int endSession(); + void finishRestore(); } diff --git a/core/java/com/android/internal/backup/LocalTransport.java b/core/java/com/android/internal/backup/LocalTransport.java new file mode 100644 index 000000000000..2facce2ed190 --- /dev/null +++ b/core/java/com/android/internal/backup/LocalTransport.java @@ -0,0 +1,200 @@ +package com.android.internal.backup; + +import android.backup.BackupDataInput; +import android.backup.BackupDataOutput; +import android.backup.RestoreSet; +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Environment; +import android.os.ParcelFileDescriptor; +import android.os.RemoteException; +import android.util.Log; + +import org.bouncycastle.util.encoders.Base64; + +import java.io.File; +import java.io.FileFilter; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; + +/** + * Backup transport for stashing stuff into a known location on disk, and + * later restoring from there. For testing only. + */ + +public class LocalTransport extends IBackupTransport.Stub { + private static final String TAG = "LocalTransport"; + private static final boolean DEBUG = true; + + private static final String TRANSPORT_DIR_NAME + = "com.android.internal.backup.LocalTransport"; + + private Context mContext; + private PackageManager mPackageManager; + private File mDataDir = new File(Environment.getDownloadCacheDirectory(), "backup"); + private PackageInfo[] mRestorePackages = null; + private int mRestorePackage = -1; // Index into mRestorePackages + + + public LocalTransport(Context context) { + if (DEBUG) Log.v(TAG, "Transport constructed"); + mContext = context; + mPackageManager = context.getPackageManager(); + } + + + public String transportDirName() throws RemoteException { + return TRANSPORT_DIR_NAME; + } + + public long requestBackupTime() throws RemoteException { + // any time is a good time for local backup + return 0; + } + + public boolean performBackup(PackageInfo packageInfo, ParcelFileDescriptor data) + throws RemoteException { + if (DEBUG) Log.v(TAG, "performBackup() pkg=" + packageInfo.packageName); + + File packageDir = new File(mDataDir, packageInfo.packageName); + packageDir.mkdirs(); + + // Each 'record' in the restore set is kept in its own file, named by + // the record key. Wind through the data file, extracting individual + // record operations and building a set of all the updates to apply + // in this update. + BackupDataInput changeSet = new BackupDataInput(data.getFileDescriptor()); + try { + int bufSize = 512; + byte[] buf = new byte[bufSize]; + while (changeSet.readNextHeader()) { + String key = changeSet.getKey(); + String base64Key = new String(Base64.encode(key.getBytes())); + File entityFile = new File(packageDir, base64Key); + + int dataSize = changeSet.getDataSize(); + + if (DEBUG) Log.v(TAG, "Got change set key=" + key + " size=" + dataSize + + " key64=" + base64Key); + + if (dataSize >= 0) { + FileOutputStream entity = new FileOutputStream(entityFile); + + if (dataSize > bufSize) { + bufSize = dataSize; + buf = new byte[bufSize]; + } + changeSet.readEntityData(buf, 0, dataSize); + if (DEBUG) Log.v(TAG, " data size " + dataSize); + + try { + entity.write(buf, 0, dataSize); + } catch (IOException e) { + Log.e(TAG, "Unable to update key file " + entityFile.getAbsolutePath()); + return false; + } finally { + entity.close(); + } + } else { + entityFile.delete(); + } + } + return true; + } catch (IOException e) { + // oops, something went wrong. abort the operation and return error. + Log.v(TAG, "Exception reading backup input:", e); + return false; + } + } + + public boolean clearBackupData(PackageInfo packageInfo) { + if (DEBUG) Log.v(TAG, "clearBackupData() pkg=" + packageInfo.packageName); + + File packageDir = new File(mDataDir, packageInfo.packageName); + for (File f : packageDir.listFiles()) { + f.delete(); + } + packageDir.delete(); + return true; + } + + public boolean finishBackup() throws RemoteException { + if (DEBUG) Log.v(TAG, "finishBackup()"); + return true; + } + + // Restore handling + public RestoreSet[] getAvailableRestoreSets() throws android.os.RemoteException { + // one hardcoded restore set + RestoreSet set = new RestoreSet("Local disk image", "flash", 0); + RestoreSet[] array = { set }; + return array; + } + + public boolean startRestore(long token, PackageInfo[] packages) { + if (DEBUG) Log.v(TAG, "start restore " + token); + mRestorePackages = packages; + mRestorePackage = -1; + return true; + } + + public String nextRestorePackage() { + if (mRestorePackages == null) throw new IllegalStateException("startRestore not called"); + while (++mRestorePackage < mRestorePackages.length) { + String name = mRestorePackages[mRestorePackage].packageName; + if (new File(mDataDir, name).isDirectory()) { + if (DEBUG) Log.v(TAG, " nextRestorePackage() = " + name); + return name; + } + } + + if (DEBUG) Log.v(TAG, " no more packages to restore"); + return ""; + } + + public boolean getRestoreData(ParcelFileDescriptor outFd) { + if (mRestorePackages == null) throw new IllegalStateException("startRestore not called"); + if (mRestorePackage < 0) throw new IllegalStateException("nextRestorePackage not called"); + File packageDir = new File(mDataDir, mRestorePackages[mRestorePackage].packageName); + + // The restore set is the concatenation of the individual record blobs, + // each of which is a file in the package's directory + File[] blobs = packageDir.listFiles(); + if (blobs == null) { + Log.e(TAG, "Error listing directory: " + packageDir); + return false; // nextRestorePackage() ensures the dir exists, so this is an error + } + + // We expect at least some data if the directory exists in the first place + if (DEBUG) Log.v(TAG, " getRestoreData() found " + blobs.length + " key files"); + BackupDataOutput out = new BackupDataOutput(outFd.getFileDescriptor()); + try { + for (File f : blobs) { + FileInputStream in = new FileInputStream(f); + try { + int size = (int) f.length(); + byte[] buf = new byte[size]; + in.read(buf); + String key = new String(Base64.decode(f.getName())); + if (DEBUG) Log.v(TAG, " ... key=" + key + " size=" + size); + out.writeEntityHeader(key, size); + out.writeEntityData(buf, size); + } finally { + in.close(); + } + } + return true; + } catch (IOException e) { + Log.e(TAG, "Unable to read backup records", e); + return false; + } + } + + public void finishRestore() { + if (DEBUG) Log.v(TAG, "finishRestore()"); + } +} diff --git a/core/java/com/android/internal/backup/SystemBackupAgent.java b/core/java/com/android/internal/backup/SystemBackupAgent.java new file mode 100644 index 000000000000..6b396d777a66 --- /dev/null +++ b/core/java/com/android/internal/backup/SystemBackupAgent.java @@ -0,0 +1,35 @@ +/* + * 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 com.android.internal.backup; + +import android.backup.AbsoluteFileBackupHelper; +import android.backup.BackupHelperAgent; + +/** + * Backup agent for various system-managed data + */ +public class SystemBackupAgent extends BackupHelperAgent { + // the set of files that we back up whole, as absolute paths + String[] mFiles = { + /* WallpaperService.WALLPAPER_FILE */ + "/data/data/com.android.settings/files/wallpaper", + }; + + public void onCreate() { + addHelper("system_files", new AbsoluteFileBackupHelper(this, mFiles)); + } +} diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index e8356a2c6415..a03802dff012 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -23,23 +23,24 @@ import android.os.ParcelFormatException; import android.os.Parcelable; import android.os.Process; import android.os.SystemClock; +import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.util.Log; import android.util.PrintWriterPrinter; import android.util.Printer; import android.util.SparseArray; +import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.Map; -import java.util.Set; /** * All information we are collecting about things that can happen that impact @@ -54,7 +55,7 @@ public final class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version - private static final int VERSION = 34; + private static final int VERSION = 39; private final File mFile; private final File mBackupFile; @@ -95,7 +96,7 @@ public final class BatteryStatsImpl extends BatteryStats { boolean mScreenOn; StopwatchTimer mScreenOnTimer; - + int mScreenBrightnessBin = -1; final StopwatchTimer[] mScreenBrightnessTimer = new StopwatchTimer[NUM_SCREEN_BRIGHTNESS_BINS]; @@ -104,6 +105,12 @@ public final class BatteryStatsImpl extends BatteryStats { boolean mPhoneOn; StopwatchTimer mPhoneOnTimer; + boolean mAudioOn; + StopwatchTimer mAudioOnTimer; + + boolean mVideoOn; + StopwatchTimer mVideoOnTimer; + int mPhoneSignalStrengthBin = -1; final StopwatchTimer[] mPhoneSignalStrengthsTimer = new StopwatchTimer[NUM_SIGNAL_STRENGTH_BINS]; @@ -132,18 +139,27 @@ public final class BatteryStatsImpl extends BatteryStats { long mTrackBatteryUptimeStart; long mTrackBatteryPastRealtime; long mTrackBatteryRealtimeStart; - + long mUnpluggedBatteryUptime; long mUnpluggedBatteryRealtime; - + /* * These keep track of battery levels (1-100) at the last plug event and the last unplug event. */ int mDischargeStartLevel; int mDischargeCurrentLevel; - + long mLastWriteTime = 0; // Milliseconds - + + // Mobile data transferred while on battery + private long[] mMobileDataTx = new long[4]; + private long[] mMobileDataRx = new long[4]; + private long[] mTotalDataTx = new long[4]; + private long[] mTotalDataRx = new long[4]; + + private long mRadioDataUptime; + private long mRadioDataStart; + /* * Holds a SamplingTimer associated with each kernel wakelock name being tracked. */ @@ -175,6 +191,8 @@ public final class BatteryStatsImpl extends BatteryStats { private final Map mProcWakelockFileStats = new HashMap(); + private HashMap mUidCache = new HashMap(); + // For debugging public BatteryStatsImpl() { mFile = mBackupFile = null; @@ -319,6 +337,13 @@ public final class BatteryStatsImpl extends BatteryStats { */ long mUnpluggedTime; + /** + * Constructs from a parcel. + * @param type + * @param unpluggables + * @param powerType + * @param in + */ Timer(int type, ArrayList unpluggables, Parcel in) { mType = type; @@ -631,7 +656,6 @@ public final class BatteryStatsImpl extends BatteryStats { * was actually held for an interesting duration. */ long mAcquireTime; - StopwatchTimer(int type, ArrayList timerPool, ArrayList unpluggables, Parcel in) { @@ -692,6 +716,10 @@ public final class BatteryStatsImpl extends BatteryStats { } } + boolean isRunningLocked() { + return mNesting > 0; + } + void stopRunningLocked(BatteryStatsImpl stats) { // Ignore attempt to stop a timer that isn't running if (mNesting == 0) { @@ -882,7 +910,40 @@ public final class BatteryStatsImpl extends BatteryStats { } return kwlt; } - + + private void doDataPlug(long[] dataTransfer, long currentBytes) { + dataTransfer[STATS_LAST] = dataTransfer[STATS_UNPLUGGED]; + dataTransfer[STATS_UNPLUGGED] = -1; + } + + private void doDataUnplug(long[] dataTransfer, long currentBytes) { + dataTransfer[STATS_UNPLUGGED] = currentBytes; + } + + private long getCurrentRadioDataUptimeMs() { + try { + File awakeTimeFile = new File("/sys/devices/virtual/net/rmnet0/awake_time_ms"); + if (!awakeTimeFile.exists()) return 0; + BufferedReader br = new BufferedReader(new FileReader(awakeTimeFile)); + String line = br.readLine(); + br.close(); + return Long.parseLong(line); + } catch (NumberFormatException nfe) { + // Nothing + } catch (IOException ioe) { + // Nothing + } + return 0; + } + + public long getRadioDataUptimeMs() { + if (mRadioDataStart == -1) { + return mRadioDataUptime; + } else { + return getCurrentRadioDataUptimeMs() - mRadioDataStart; + } + } + public void doUnplug(long batteryUptime, long batteryRealtime) { for (int iu = mUidStats.size() - 1; iu >= 0; iu--) { Uid u = mUidStats.valueAt(iu); @@ -894,8 +955,16 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i = mUnpluggables.size() - 1; i >= 0; i--) { mUnpluggables.get(i).unplug(batteryUptime, batteryRealtime); } + // Track total mobile data + doDataUnplug(mMobileDataRx, NetStat.getMobileRxBytes()); + doDataUnplug(mMobileDataTx, NetStat.getMobileTxBytes()); + doDataUnplug(mTotalDataRx, NetStat.getTotalRxBytes()); + doDataUnplug(mTotalDataTx, NetStat.getTotalTxBytes()); + // Track radio awake time + mRadioDataStart = getCurrentRadioDataUptimeMs(); + mRadioDataUptime = 0; } - + public void doPlug(long batteryUptime, long batteryRealtime) { for (int iu = mUidStats.size() - 1; iu >= 0; iu--) { Uid u = mUidStats.valueAt(iu); @@ -911,16 +980,23 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i = mUnpluggables.size() - 1; i >= 0; i--) { mUnpluggables.get(i).plug(batteryUptime, batteryRealtime); } + doDataPlug(mMobileDataRx, NetStat.getMobileRxBytes()); + doDataPlug(mMobileDataTx, NetStat.getMobileTxBytes()); + doDataPlug(mTotalDataRx, NetStat.getTotalRxBytes()); + doDataPlug(mTotalDataTx, NetStat.getTotalTxBytes()); + // Track radio awake time + mRadioDataUptime = getRadioDataUptimeMs(); + mRadioDataStart = -1; } - + public void noteStartGps(int uid) { - mUidStats.get(uid).noteStartGps(); + getUidStatsLocked(uid).noteStartGps(); } public void noteStopGps(int uid) { - mUidStats.get(uid).noteStopGps(); + getUidStatsLocked(uid).noteStopGps(); } - + public void noteScreenOnLocked() { if (!mScreenOn) { mScreenOn = true; @@ -962,10 +1038,7 @@ public final class BatteryStatsImpl extends BatteryStats { } public void noteUserActivityLocked(int uid, int event) { - Uid u = mUidStats.get(uid); - if (u != null) { - u.noteUserActivityLocked(event); - } + getUidStatsLocked(uid).noteUserActivityLocked(event); } public void notePhoneOnLocked() { @@ -981,15 +1054,43 @@ public final class BatteryStatsImpl extends BatteryStats { mPhoneOnTimer.stopRunningLocked(this); } } - - public void notePhoneSignalStrengthLocked(int asu) { + + public void noteAirplaneModeLocked(boolean isAirplaneMode) { + final int bin = mPhoneSignalStrengthBin; + if (bin >= 0) { + if (!isAirplaneMode) { + if (!mPhoneSignalStrengthsTimer[bin].isRunningLocked()) { + mPhoneSignalStrengthsTimer[bin].startRunningLocked(this); + } + } else { + for (int i = 0; i < NUM_SIGNAL_STRENGTH_BINS; i++) { + while (mPhoneSignalStrengthsTimer[i].isRunningLocked()) { + mPhoneSignalStrengthsTimer[i].stopRunningLocked(this); + } + } + } + } + } + + public void notePhoneSignalStrengthLocked(SignalStrength signalStrength) { // Bin the strength. int bin; - if (asu < 0 || asu >= 99) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; - else if (asu >= 16) bin = SIGNAL_STRENGTH_GREAT; - else if (asu >= 8) bin = SIGNAL_STRENGTH_GOOD; - else if (asu >= 4) bin = SIGNAL_STRENGTH_MODERATE; - else bin = SIGNAL_STRENGTH_POOR; + + if (!signalStrength.isGsm()) { + int dBm = signalStrength.getCdmaDbm(); + if (dBm >= -75) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; + else if (dBm >= -85) bin = SIGNAL_STRENGTH_GREAT; + else if (dBm >= -95) bin = SIGNAL_STRENGTH_GOOD; + else if (dBm >= -100) bin = SIGNAL_STRENGTH_MODERATE; + else bin = SIGNAL_STRENGTH_POOR; + } else { + int asu = signalStrength.getGsmSignalStrength(); + if (asu < 0 || asu >= 99) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; + else if (asu >= 16) bin = SIGNAL_STRENGTH_GREAT; + else if (asu >= 8) bin = SIGNAL_STRENGTH_GOOD; + else if (asu >= 4) bin = SIGNAL_STRENGTH_MODERATE; + else bin = SIGNAL_STRENGTH_POOR; + } if (mPhoneSignalStrengthBin != bin) { if (mPhoneSignalStrengthBin >= 0) { mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].stopRunningLocked(this); @@ -1017,6 +1118,7 @@ public final class BatteryStatsImpl extends BatteryStats { break; } } + if (DEBUG) Log.i(TAG, "Phone Data Connection -> " + dataType + " = " + hasData); if (mPhoneDataConnectionType != bin) { if (mPhoneDataConnectionType >= 0) { mPhoneDataConnectionsTimer[mPhoneDataConnectionType].stopRunningLocked(this); @@ -1033,16 +1135,10 @@ public final class BatteryStatsImpl extends BatteryStats { } if (mWifiOnUid != uid) { if (mWifiOnUid >= 0) { - Uid u = mUidStats.get(mWifiOnUid); - if (u != null) { - u.noteWifiTurnedOffLocked(); - } + getUidStatsLocked(mWifiOnUid).noteWifiTurnedOffLocked(); } mWifiOnUid = uid; - Uid u = mUidStats.get(uid); - if (u != null) { - u.noteWifiTurnedOnLocked(); - } + getUidStatsLocked(uid).noteWifiTurnedOnLocked(); } } @@ -1052,14 +1148,43 @@ public final class BatteryStatsImpl extends BatteryStats { mWifiOnTimer.stopRunningLocked(this); } if (mWifiOnUid >= 0) { - Uid u = mUidStats.get(mWifiOnUid); - if (u != null) { - u.noteWifiTurnedOffLocked(); - } + getUidStatsLocked(mWifiOnUid).noteWifiTurnedOffLocked(); mWifiOnUid = -1; } } + + public void noteAudioOnLocked(int uid) { + if (!mAudioOn) { + mAudioOn = true; + mAudioOnTimer.startRunningLocked(this); + } + getUidStatsLocked(uid).noteAudioTurnedOnLocked(); + } + public void noteAudioOffLocked(int uid) { + if (mAudioOn) { + mAudioOn = false; + mAudioOnTimer.stopRunningLocked(this); + } + getUidStatsLocked(uid).noteAudioTurnedOffLocked(); + } + + public void noteVideoOnLocked(int uid) { + if (!mVideoOn) { + mVideoOn = true; + mVideoOnTimer.startRunningLocked(this); + } + getUidStatsLocked(uid).noteVideoTurnedOnLocked(); + } + + public void noteVideoOffLocked(int uid) { + if (mVideoOn) { + mVideoOn = false; + mVideoOnTimer.stopRunningLocked(this); + } + getUidStatsLocked(uid).noteVideoTurnedOffLocked(); + } + public void noteWifiRunningLocked() { if (!mWifiRunning) { mWifiRunning = true; @@ -1089,45 +1214,27 @@ public final class BatteryStatsImpl extends BatteryStats { } public void noteFullWifiLockAcquiredLocked(int uid) { - Uid u = mUidStats.get(uid); - if (u != null) { - u.noteFullWifiLockAcquiredLocked(); - } + getUidStatsLocked(uid).noteFullWifiLockAcquiredLocked(); } public void noteFullWifiLockReleasedLocked(int uid) { - Uid u = mUidStats.get(uid); - if (u != null) { - u.noteFullWifiLockReleasedLocked(); - } + getUidStatsLocked(uid).noteFullWifiLockReleasedLocked(); } public void noteScanWifiLockAcquiredLocked(int uid) { - Uid u = mUidStats.get(uid); - if (u != null) { - u.noteScanWifiLockAcquiredLocked(); - } + getUidStatsLocked(uid).noteScanWifiLockAcquiredLocked(); } public void noteScanWifiLockReleasedLocked(int uid) { - Uid u = mUidStats.get(uid); - if (u != null) { - u.noteScanWifiLockReleasedLocked(); - } + getUidStatsLocked(uid).noteScanWifiLockReleasedLocked(); } public void noteWifiMulticastEnabledLocked(int uid) { - Uid u = mUidStats.get(uid); - if (u != null) { - u.noteWifiMulticastEnabledLocked(); - } + getUidStatsLocked(uid).noteWifiMulticastEnabledLocked(); } public void noteWifiMulticastDisabledLocked(int uid) { - Uid u = mUidStats.get(uid); - if (u != null) { - u.noteWifiMulticastDisabledLocked(); - } + getUidStatsLocked(uid).noteWifiMulticastDisabledLocked(); } @Override public long getScreenOnTime(long batteryRealtime, int which) { @@ -1139,7 +1246,7 @@ public final class BatteryStatsImpl extends BatteryStats { return mScreenBrightnessTimer[brightnessBin].getTotalTimeLocked( batteryRealtime, which); } - + @Override public int getInputEventCount(int which) { return mInputEventCounter.getCountLocked(which); } @@ -1147,7 +1254,7 @@ public final class BatteryStatsImpl extends BatteryStats { @Override public long getPhoneOnTime(long batteryRealtime, int which) { return mPhoneOnTimer.getTotalTimeLocked(batteryRealtime, which); } - + @Override public long getPhoneSignalStrengthTime(int strengthBin, long batteryRealtime, int which) { return mPhoneSignalStrengthsTimer[strengthBin].getTotalTimeLocked( @@ -1214,9 +1321,15 @@ public final class BatteryStatsImpl extends BatteryStats { boolean mScanWifiLockOut; StopwatchTimer mScanWifiLockTimer; - + boolean mWifiMulticastEnabled; StopwatchTimer mWifiMulticastTimer; + + boolean mAudioTurnedOn; + StopwatchTimer mAudioTurnedOnTimer; + + boolean mVideoTurnedOn; + StopwatchTimer mVideoTurnedOnTimer; Counter[] mUserActivityCounters; @@ -1247,6 +1360,8 @@ public final class BatteryStatsImpl extends BatteryStats { mScanWifiLockTimer = new StopwatchTimer(SCAN_WIFI_LOCK, null, mUnpluggables); mWifiMulticastTimer = new StopwatchTimer(WIFI_MULTICAST_ENABLED, null, mUnpluggables); + mAudioTurnedOnTimer = new StopwatchTimer(AUDIO_TURNED_ON, null, mUnpluggables); + mVideoTurnedOnTimer = new StopwatchTimer(VIDEO_TURNED_ON, null, mUnpluggables); } @Override @@ -1268,11 +1383,13 @@ public final class BatteryStatsImpl extends BatteryStats { public Map getPackageStats() { return mPackageStats; } - + + @Override public int getUid() { return mUid; } - + + @Override public long getTcpBytesReceived(int which) { if (which == STATS_LAST) { return mLoadedTcpBytesReceived; @@ -1291,7 +1408,8 @@ public final class BatteryStatsImpl extends BatteryStats { return mCurrentTcpBytesReceived + (mStartedTcpBytesReceived >= 0 ? (NetStat.getUidRxBytes(mUid) - mStartedTcpBytesReceived) : 0); } - + + @Override public long getTcpBytesSent(int which) { if (which == STATS_LAST) { return mLoadedTcpBytesSent; @@ -1330,6 +1448,38 @@ public final class BatteryStatsImpl extends BatteryStats { } } + @Override + public void noteVideoTurnedOnLocked() { + if (!mVideoTurnedOn) { + mVideoTurnedOn = true; + mVideoTurnedOnTimer.startRunningLocked(BatteryStatsImpl.this); + } + } + + @Override + public void noteVideoTurnedOffLocked() { + if (mVideoTurnedOn) { + mVideoTurnedOn = false; + mVideoTurnedOnTimer.stopRunningLocked(BatteryStatsImpl.this); + } + } + + @Override + public void noteAudioTurnedOnLocked() { + if (!mAudioTurnedOn) { + mAudioTurnedOn = true; + mAudioTurnedOnTimer.startRunningLocked(BatteryStatsImpl.this); + } + } + + @Override + public void noteAudioTurnedOffLocked() { + if (mAudioTurnedOn) { + mAudioTurnedOn = false; + mAudioTurnedOnTimer.stopRunningLocked(BatteryStatsImpl.this); + } + } + @Override public void noteFullWifiLockReleasedLocked() { if (mFullWifiLockOut) { @@ -1374,7 +1524,17 @@ public final class BatteryStatsImpl extends BatteryStats { public long getWifiTurnedOnTime(long batteryRealtime, int which) { return mWifiTurnedOnTimer.getTotalTimeLocked(batteryRealtime, which); } - + + @Override + public long getAudioTurnedOnTime(long batteryRealtime, int which) { + return mAudioTurnedOnTimer.getTotalTimeLocked(batteryRealtime, which); + } + + @Override + public long getVideoTurnedOnTime(long batteryRealtime, int which) { + return mVideoTurnedOnTimer.getTotalTimeLocked(batteryRealtime, which); + } + @Override public long getFullWifiLockTime(long batteryRealtime, int which) { return mFullWifiLockTimer.getTotalTimeLocked(batteryRealtime, which); @@ -1425,7 +1585,7 @@ public final class BatteryStatsImpl extends BatteryStats { return mCurrentTcpBytesSent + (mStartedTcpBytesSent >= 0 ? (NetStat.getUidTxBytes(mUid) - mStartedTcpBytesSent) : 0); } - + void writeToParcelLocked(Parcel out, long batteryRealtime) { out.writeInt(mWakelockStats.size()); for (Map.Entry wakelockEntry : mWakelockStats.entrySet()) { @@ -1463,6 +1623,8 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeLong(mTcpBytesSentAtLastUnplug); mWifiTurnedOnTimer.writeToParcel(out, batteryRealtime); mFullWifiLockTimer.writeToParcel(out, batteryRealtime); + mAudioTurnedOnTimer.writeToParcel(out, batteryRealtime); + mVideoTurnedOnTimer.writeToParcel(out, batteryRealtime); mScanWifiLockTimer.writeToParcel(out, batteryRealtime); mWifiMulticastTimer.writeToParcel(out, batteryRealtime); if (mUserActivityCounters == null) { @@ -1522,6 +1684,10 @@ public final class BatteryStatsImpl extends BatteryStats { mWifiTurnedOnTimer = new StopwatchTimer(WIFI_TURNED_ON, null, mUnpluggables, in); mFullWifiLockOut = false; mFullWifiLockTimer = new StopwatchTimer(FULL_WIFI_LOCK, null, mUnpluggables, in); + mAudioTurnedOn = false; + mAudioTurnedOnTimer = new StopwatchTimer(AUDIO_TURNED_ON, null, mUnpluggables, in); + mVideoTurnedOn = false; + mVideoTurnedOnTimer = new StopwatchTimer(VIDEO_TURNED_ON, null, mUnpluggables, in); mScanWifiLockOut = false; mScanWifiLockTimer = new StopwatchTimer(SCAN_WIFI_LOCK, null, mUnpluggables, in); mWifiMulticastEnabled = false; @@ -1632,7 +1798,8 @@ public final class BatteryStatsImpl extends BatteryStats { public Timer getSensorTime() { return mTimer; } - + + @Override public int getHandle() { return mHandle; } @@ -1657,6 +1824,11 @@ public final class BatteryStatsImpl extends BatteryStats { */ int mStarts; + /** + * Amount of time the process was running in the foreground. + */ + long mForegroundTime; + /** * The amount of user time loaded from a previous save. */ @@ -1672,6 +1844,11 @@ public final class BatteryStatsImpl extends BatteryStats { */ int mLoadedStarts; + /** + * The amount of foreground time loaded from a previous save. + */ + long mLoadedForegroundTime; + /** * The amount of user time loaded from the previous run. */ @@ -1687,6 +1864,11 @@ public final class BatteryStatsImpl extends BatteryStats { */ int mLastStarts; + /** + * The amount of foreground time loaded from the previous run + */ + long mLastForegroundTime; + /** * The amount of user time when last unplugged. */ @@ -1702,6 +1884,11 @@ public final class BatteryStatsImpl extends BatteryStats { */ int mUnpluggedStarts; + /** + * The amount of foreground time since unplugged. + */ + long mUnpluggedForegroundTime; + Proc() { mUnpluggables.add(this); } @@ -1710,6 +1897,7 @@ public final class BatteryStatsImpl extends BatteryStats { mUnpluggedUserTime = mUserTime; mUnpluggedSystemTime = mSystemTime; mUnpluggedStarts = mStarts; + mUnpluggedForegroundTime = mForegroundTime; } public void plug(long batteryUptime, long batteryRealtime) { @@ -1721,30 +1909,38 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeLong(mUserTime); out.writeLong(mSystemTime); + out.writeLong(mForegroundTime); out.writeInt(mStarts); out.writeLong(mLoadedUserTime); out.writeLong(mLoadedSystemTime); + out.writeLong(mLoadedForegroundTime); out.writeInt(mLoadedStarts); out.writeLong(mLastUserTime); out.writeLong(mLastSystemTime); + out.writeLong(mLastForegroundTime); out.writeInt(mLastStarts); out.writeLong(mUnpluggedUserTime); out.writeLong(mUnpluggedSystemTime); + out.writeLong(mUnpluggedForegroundTime); out.writeInt(mUnpluggedStarts); } void readFromParcelLocked(Parcel in) { mUserTime = in.readLong(); mSystemTime = in.readLong(); + mForegroundTime = in.readLong(); mStarts = in.readInt(); mLoadedUserTime = in.readLong(); mLoadedSystemTime = in.readLong(); + mLoadedForegroundTime = in.readLong(); mLoadedStarts = in.readInt(); mLastUserTime = in.readLong(); mLastSystemTime = in.readLong(); + mLastForegroundTime = in.readLong(); mLastStarts = in.readInt(); mUnpluggedUserTime = in.readLong(); mUnpluggedSystemTime = in.readLong(); + mUnpluggedForegroundTime = in.readLong(); mUnpluggedStarts = in.readInt(); } @@ -1757,6 +1953,10 @@ public final class BatteryStatsImpl extends BatteryStats { mSystemTime += stime; } + public void addForegroundTimeLocked(long ttime) { + mForegroundTime += ttime; + } + public void incStartsLocked() { mStarts++; } @@ -1793,6 +1993,22 @@ public final class BatteryStatsImpl extends BatteryStats { return val; } + @Override + public long getForegroundTime(int which) { + long val; + if (which == STATS_LAST) { + val = mLastForegroundTime; + } else { + val = mForegroundTime; + if (which == STATS_CURRENT) { + val -= mLoadedForegroundTime; + } else if (which == STATS_UNPLUGGED) { + val -= mUnpluggedForegroundTime; + } + } + return val; + } + @Override public int getStarts(int which) { int val; @@ -2315,7 +2531,7 @@ public final class BatteryStatsImpl extends BatteryStats { StopwatchTimer t = getSensorTimerLocked(Sensor.GPS, false); if (t != null) { t.stopRunningLocked(BatteryStatsImpl.this); - } + } } public BatteryStatsImpl getBatteryStats() { @@ -2526,7 +2742,44 @@ public final class BatteryStatsImpl extends BatteryStats { public long getBatteryRealtime(long curTime) { return getBatteryRealtimeLocked(curTime); } - + + private long getTcpBytes(long current, long[] dataBytes, int which) { + if (which == STATS_LAST) { + return dataBytes[STATS_LAST]; + } else { + if (which == STATS_UNPLUGGED) { + if (dataBytes[STATS_UNPLUGGED] < 0) { + return dataBytes[STATS_LAST]; + } else { + return current - dataBytes[STATS_UNPLUGGED]; + } + } else if (which == STATS_TOTAL) { + return (current - dataBytes[STATS_CURRENT]) + dataBytes[STATS_TOTAL]; + } + return current - dataBytes[STATS_CURRENT]; + } + } + + /** Only STATS_UNPLUGGED works properly */ + public long getMobileTcpBytesSent(int which) { + return getTcpBytes(NetStat.getMobileTxBytes(), mMobileDataTx, which); + } + + /** Only STATS_UNPLUGGED works properly */ + public long getMobileTcpBytesReceived(int which) { + return getTcpBytes(NetStat.getMobileRxBytes(), mMobileDataRx, which); + } + + /** Only STATS_UNPLUGGED works properly */ + public long getTotalTcpBytesSent(int which) { + return getTcpBytes(NetStat.getTotalTxBytes(), mTotalDataTx, which); + } + + /** Only STATS_UNPLUGGED works properly */ + public long getTotalTcpBytesReceived(int which) { + return getTcpBytes(NetStat.getTotalRxBytes(), mTotalDataRx, which); + } + @Override public int getDischargeStartLevel() { synchronized(this) { @@ -2567,7 +2820,7 @@ public final class BatteryStatsImpl extends BatteryStats { public void removeUidStatsLocked(int uid) { mUidStats.remove(uid); } - + /** * Retrieve the statistics object for a particular process, creating * if needed. @@ -2577,6 +2830,24 @@ public final class BatteryStatsImpl extends BatteryStats { return u.getProcessStatsLocked(name); } + /** + * Retrieve the statistics object for a particular process, given + * the name of the process. + * @param name process name + * @return the statistics object for the process + */ + public Uid.Proc getProcessStatsLocked(String name, int pid) { + int uid; + if (mUidCache.containsKey(name)) { + uid = mUidCache.get(name); + } else { + uid = Process.getUidForPid(pid); + mUidCache.put(name, uid); + } + Uid u = getUidStatsLocked(uid); + return u.getProcessStatsLocked(name); + } + /** * Retrieve the statistics object for a particular process, creating * if needed. @@ -2752,6 +3023,10 @@ public final class BatteryStatsImpl extends BatteryStats { u.mWifiTurnedOnTimer.readSummaryFromParcelLocked(in); u.mFullWifiLockOut = false; u.mFullWifiLockTimer.readSummaryFromParcelLocked(in); + u.mAudioTurnedOn = false; + u.mAudioTurnedOnTimer.readSummaryFromParcelLocked(in); + u.mVideoTurnedOn = false; + u.mVideoTurnedOnTimer.readSummaryFromParcelLocked(in); u.mScanWifiLockOut = false; u.mScanWifiLockTimer.readSummaryFromParcelLocked(in); u.mWifiMulticastEnabled = false; @@ -2888,6 +3163,8 @@ public final class BatteryStatsImpl extends BatteryStats { u.mWifiTurnedOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); u.mFullWifiLockTimer.writeSummaryFromParcelLocked(out, NOWREAL); + u.mAudioTurnedOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); + u.mVideoTurnedOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); u.mScanWifiLockTimer.writeSummaryFromParcelLocked(out, NOWREAL); u.mWifiMulticastTimer.writeSummaryFromParcelLocked(out, NOWREAL); @@ -3046,11 +3323,24 @@ public final class BatteryStatsImpl extends BatteryStats { mDischargeCurrentLevel = in.readInt(); mLastWriteTime = in.readLong(); + mMobileDataRx[STATS_LAST] = in.readLong(); + mMobileDataRx[STATS_UNPLUGGED] = -1; + mMobileDataTx[STATS_LAST] = in.readLong(); + mMobileDataTx[STATS_UNPLUGGED] = -1; + mTotalDataRx[STATS_LAST] = in.readLong(); + mTotalDataRx[STATS_UNPLUGGED] = -1; + mTotalDataTx[STATS_LAST] = in.readLong(); + mTotalDataTx[STATS_UNPLUGGED] = -1; + + mRadioDataUptime = in.readLong(); + mRadioDataStart = -1; + mKernelWakelockStats.clear(); int NKW = in.readInt(); for (int ikw = 0; ikw < NKW; ikw++) { if (in.readInt() != 0) { String wakelockName = in.readString(); + in.readInt(); // Extra 0/1 written by Timer.writeTimerToParcel SamplingTimer kwlt = new SamplingTimer(mUnpluggables, mOnBattery, in); mKernelWakelockStats.put(wakelockName, kwlt); } @@ -3119,6 +3409,14 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeInt(mDischargeCurrentLevel); out.writeLong(mLastWriteTime); + out.writeLong(getMobileTcpBytesReceived(STATS_UNPLUGGED)); + out.writeLong(getMobileTcpBytesSent(STATS_UNPLUGGED)); + out.writeLong(getTotalTcpBytesReceived(STATS_UNPLUGGED)); + out.writeLong(getTotalTcpBytesSent(STATS_UNPLUGGED)); + + // Write radio uptime for data + out.writeLong(getRadioDataUptimeMs()); + out.writeInt(mKernelWakelockStats.size()); for (Map.Entry ent : mKernelWakelockStats.entrySet()) { SamplingTimer kwlt = ent.getValue(); diff --git a/core/java/com/android/internal/os/PowerProfile.java b/core/java/com/android/internal/os/PowerProfile.java new file mode 100644 index 000000000000..4a8d8b182f90 --- /dev/null +++ b/core/java/com/android/internal/os/PowerProfile.java @@ -0,0 +1,238 @@ +/* + * 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 com.android.internal.os; + + +import android.content.Context; +import android.content.res.XmlResourceParser; + +import com.android.internal.util.XmlUtils; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; + +/** + * Reports power consumption values for various device activities. Reads values from an XML file. + * Customize the XML file for different devices. + * [hidden] + */ +public class PowerProfile { + + /** + * No power consumption, or accounted for elsewhere. + */ + public static final String POWER_NONE = "none"; + + /** + * Power consumption when CPU is in power collapse mode. + */ + public static final String POWER_CPU_IDLE = "cpu.idle"; + + /** + * Power consumption when CPU is running at normal speed. + */ + public static final String POWER_CPU_NORMAL = "cpu.normal"; + + /** + * Power consumption when CPU is running at full speed. + */ + public static final String POWER_CPU_FULL = "cpu.full"; + + /** + * Power consumption when WiFi driver is scanning for networks. + */ + public static final String POWER_WIFI_SCAN = "wifi.scan"; + + /** + * Power consumption when WiFi driver is on. + */ + public static final String POWER_WIFI_ON = "wifi.on"; + + /** + * Power consumption when WiFi driver is transmitting/receiving. + */ + public static final String POWER_WIFI_ACTIVE = "wifi.active"; + + /** + * Power consumption when GPS is on. + */ + public static final String POWER_GPS_ON = "gps.on"; + + /** + * Power consumption when Bluetooth driver is on. + */ + public static final String POWER_BLUETOOTH_ON = "bluetooth.on"; + + /** + * Power consumption when Bluetooth driver is transmitting/receiving. + */ + public static final String POWER_BLUETOOTH_ACTIVE = "bluetooth.active"; + + /** + * Power consumption when screen is on, not including the backlight power. + */ + public static final String POWER_SCREEN_ON = "screen.on"; + + /** + * Power consumption when cell radio is on but not on a call. + */ + public static final String POWER_RADIO_ON = "radio.on"; + + /** + * Power consumption when talking on the phone. + */ + public static final String POWER_RADIO_ACTIVE = "radio.active"; + + /** + * Power consumption at full backlight brightness. If the backlight is at + * 50% brightness, then this should be multiplied by 0.5 + */ + public static final String POWER_SCREEN_FULL = "screen.full"; + + /** + * Power consumed by the audio hardware when playing back audio content. This is in addition + * to the CPU power, probably due to a DSP and / or amplifier. + */ + public static final String POWER_AUDIO = "dsp.audio"; + + /** + * Power consumed by any media hardware when playing back video content. This is in addition + * to the CPU power, probably due to a DSP. + */ + public static final String POWER_VIDEO = "dsp.video"; + + static final HashMap sPowerMap = new HashMap(); + + private static final String TAG_DEVICE = "device"; + private static final String TAG_ITEM = "item"; + private static final String TAG_ARRAY = "array"; + private static final String TAG_ARRAYITEM = "value"; + private static final String ATTR_NAME = "name"; + + public PowerProfile(Context context) { + // Read the XML file for the given profile (normally only one per + // device) + if (sPowerMap.size() == 0) { + readPowerValuesFromXml(context); + } + } + + private void readPowerValuesFromXml(Context context) { + int id = com.android.internal.R.xml.power_profile; + XmlResourceParser parser = context.getResources().getXml(id); + boolean parsingArray = false; + ArrayList array = new ArrayList(); + String arrayName = null; + + try { + XmlUtils.beginDocument(parser, TAG_DEVICE); + + while (true) { + XmlUtils.nextElement(parser); + + String element = parser.getName(); + if (element == null) break; + + if (parsingArray && !element.equals(TAG_ARRAYITEM)) { + // Finish array + sPowerMap.put(arrayName, array.toArray(new Double[array.size()])); + parsingArray = false; + } + if (element.equals(TAG_ARRAY)) { + parsingArray = true; + array.clear(); + arrayName = parser.getAttributeValue(null, ATTR_NAME); + } else if (element.equals(TAG_ITEM) || element.equals(TAG_ARRAYITEM)) { + String name = null; + if (!parsingArray) name = parser.getAttributeValue(null, ATTR_NAME); + if (parser.next() == XmlPullParser.TEXT) { + String power = parser.getText(); + double value = 0; + try { + value = Double.valueOf(power); + } catch (NumberFormatException nfe) { + } + if (element.equals(TAG_ITEM)) { + sPowerMap.put(name, value); + } else if (parsingArray) { + array.add(value); + } + } + } + } + if (parsingArray) { + sPowerMap.put(arrayName, array.toArray(new Double[array.size()])); + } + } catch (XmlPullParserException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + parser.close(); + } + } + + /** + * Returns the average current in mA consumed by the subsystem + * @param type the subsystem type + * @return the average current in milliAmps. + */ + public double getAveragePower(String type) { + if (sPowerMap.containsKey(type)) { + Object data = sPowerMap.get(type); + if (data instanceof Double[]) { + return ((Double[])data)[0]; + } else { + return (Double) sPowerMap.get(type); + } + } else { + return 0; + } + } + + /** + * Returns the average current in mA consumed by the subsystem for the given level. + * @param type the subsystem type + * @param level the level of power at which the subsystem is running. For instance, the + * signal strength of the cell network between 0 and 4 (if there are 4 bars max.). + * If there is no data for multiple levels, the level is ignored. + * @return the average current in milliAmps. + */ + public double getAveragePower(String type, int level) { + if (sPowerMap.containsKey(type)) { + Object data = sPowerMap.get(type); + if (data instanceof Double[]) { + final Double[] values = (Double[]) data; + if (values.length > level && level >= 0) { + return values[level]; + } else if (level < 0) { + return 0; + } else { + return values[values.length - 1]; + } + } else { + return (Double) data; + } + } else { + return 0; + } + } +} diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index ac8b58934168..f67a235b0736 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -467,7 +467,7 @@ public class ZygoteInit { "--setuid=1000", "--setgid=1000", "--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,3001,3002,3003", - "--capabilities=121715744,121715744", + "--capabilities=130104352,130104352", "--runtime-init", "--nice-name=system_server", "com.android.server.SystemServer", diff --git a/core/java/com/android/internal/util/BitwiseInputStream.java b/core/java/com/android/internal/util/BitwiseInputStream.java index 4757919f23f5..86f74f302518 100644 --- a/core/java/com/android/internal/util/BitwiseInputStream.java +++ b/core/java/com/android/internal/util/BitwiseInputStream.java @@ -65,30 +65,31 @@ public class BitwiseInputStream { /** * Read some data and increment the current position. * - * @param bits the amount of data to read (gte 0, lte 8) + * The 8-bit limit on access to bitwise streams is intentional to + * avoid endianness issues. * + * @param bits the amount of data to read (gte 0, lte 8) * @return byte of read data (possibly partially filled, from lsb) */ - public byte read(int bits) throws AccessException { + public int read(int bits) throws AccessException { int index = mPos >>> 3; int offset = 16 - (mPos & 0x07) - bits; // &7==%8 if ((bits < 0) || (bits > 8) || ((mPos + bits) > mEnd)) { throw new AccessException("illegal read " + "(pos " + mPos + ", end " + mEnd + ", bits " + bits + ")"); } - int data = (mBuf[index] & 0x00FF) << 8; - if (offset < 8) data |= (mBuf[index + 1] & 0xFF); + int data = (mBuf[index] & 0xFF) << 8; + if (offset < 8) data |= mBuf[index + 1] & 0xFF; data >>>= offset; data &= (-1 >>> (32 - bits)); mPos += bits; - return (byte)data; + return data; } /** * Read data in bulk into a byte array and increment the current position. * * @param bits the amount of data to read - * * @return newly allocated byte array of read data */ public byte[] readByteArray(int bits) throws AccessException { diff --git a/core/java/com/android/internal/util/BitwiseOutputStream.java b/core/java/com/android/internal/util/BitwiseOutputStream.java index 1b974ce4c9ee..70c0be81a56a 100644 --- a/core/java/com/android/internal/util/BitwiseOutputStream.java +++ b/core/java/com/android/internal/util/BitwiseOutputStream.java @@ -82,6 +82,9 @@ public class BitwiseOutputStream { /** * Write some data and increment the current position. * + * The 8-bit limit on access to bitwise streams is intentional to + * avoid endianness issues. + * * @param bits the amount of data to write (gte 0, lte 8) * @param data to write, will be masked to expose only bits param from lsb */ @@ -95,8 +98,8 @@ public class BitwiseOutputStream { int offset = 16 - (mPos & 0x07) - bits; // &7==%8 data <<= offset; mPos += bits; - mBuf[index] |= (data >>> 8); - if (offset < 8) mBuf[index + 1] |= (data & 0x00FF); + mBuf[index] |= data >>> 8; + if (offset < 8) mBuf[index + 1] |= data & 0xFF; } /** diff --git a/core/java/com/google/android/net/GoogleHttpClient.java b/core/java/com/google/android/net/GoogleHttpClient.java index 871c925478e4..922f5bef8a49 100644 --- a/core/java/com/google/android/net/GoogleHttpClient.java +++ b/core/java/com/google/android/net/GoogleHttpClient.java @@ -37,6 +37,10 @@ import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.conn.ClientConnectionManager; +import org.apache.http.conn.scheme.LayeredSocketFactory; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.scheme.SocketFactory; import org.apache.http.impl.client.EntityEnclosingRequestWrapper; import org.apache.http.impl.client.RequestWrapper; import org.apache.http.params.HttpParams; @@ -44,6 +48,8 @@ import org.apache.http.protocol.HttpContext; import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache; import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; import java.net.URI; import java.net.URISyntaxException; @@ -66,25 +72,22 @@ public class GoogleHttpClient implements HttpClient { private final AndroidHttpClient mClient; private final ContentResolver mResolver; - private final String mUserAgent; + private final String mAppName, mUserAgent; + private final ThreadLocal mConnectionAllocated = new ThreadLocal(); /** - * Create an HTTP client. Normally one client is shared throughout an app. - * @param resolver to use for accessing URL rewriting rules. - * @param userAgent to report in your HTTP requests. - * @deprecated Use {@link #GoogleHttpClient(android.content.ContentResolver, String, boolean)} + * Create an HTTP client without SSL session persistence. + * @deprecated Use {@link #GoogleHttpClient(android.content.Context, String, boolean)} */ public GoogleHttpClient(ContentResolver resolver, String userAgent) { mClient = AndroidHttpClient.newInstance(userAgent); mResolver = resolver; - mUserAgent = userAgent; + mUserAgent = mAppName = userAgent; } /** - * GoogleHttpClient(Context, String, boolean) - without SSL session - * persistence. - * - * @deprecated use Context instead of ContentResolver. + * Create an HTTP client without SSL session persistence. + * @deprecated Use {@link #GoogleHttpClient(android.content.Context, String, boolean)} */ public GoogleHttpClient(ContentResolver resolver, String appAndVersion, boolean gzipCapable) { @@ -111,21 +114,72 @@ public class GoogleHttpClient implements HttpClient { * headers. Needed because Google servers require gzip in the User-Agent * in order to return gzip'd content. */ - public GoogleHttpClient(Context context, String appAndVersion, - boolean gzipCapable) { - this(context.getContentResolver(), SSLClientSessionCacheFactory.getCache(context), + public GoogleHttpClient(Context context, String appAndVersion, boolean gzipCapable) { + this(context.getContentResolver(), + SSLClientSessionCacheFactory.getCache(context), appAndVersion, gzipCapable); } - private GoogleHttpClient(ContentResolver resolver, SSLClientSessionCache cache, + private GoogleHttpClient(ContentResolver resolver, + SSLClientSessionCache cache, String appAndVersion, boolean gzipCapable) { String userAgent = appAndVersion + " (" + Build.DEVICE + " " + Build.ID + ")"; if (gzipCapable) { userAgent = userAgent + "; gzip"; } + mClient = AndroidHttpClient.newInstance(userAgent, cache); mResolver = resolver; + mAppName = appAndVersion; mUserAgent = userAgent; + + // Wrap all the socket factories with the appropriate wrapper. (Apache + // HTTP, curse its black and stupid heart, inspects the SocketFactory to + // see if it's a LayeredSocketFactory, so we need two wrapper classes.) + SchemeRegistry registry = getConnectionManager().getSchemeRegistry(); + for (String name : registry.getSchemeNames()) { + Scheme scheme = registry.unregister(name); + SocketFactory sf = scheme.getSocketFactory(); + if (sf instanceof LayeredSocketFactory) { + sf = new WrappedLayeredSocketFactory((LayeredSocketFactory) sf); + } else { + sf = new WrappedSocketFactory(sf); + } + registry.register(new Scheme(name, sf, scheme.getDefaultPort())); + } + } + + /** + * Delegating wrapper for SocketFactory records when sockets are connected. + * We use this to know whether a connection was created vs reused, to + * gather per-app statistics about connection reuse rates. + * (Note, we record only *connection*, not *creation* of sockets -- + * what we care about is the network overhead of an actual TCP connect.) + */ + private class WrappedSocketFactory implements SocketFactory { + private SocketFactory mDelegate; + private WrappedSocketFactory(SocketFactory delegate) { mDelegate = delegate; } + public final Socket createSocket() throws IOException { return mDelegate.createSocket(); } + public final boolean isSecure(Socket s) { return mDelegate.isSecure(s); } + + public final Socket connectSocket( + Socket s, String h, int p, + InetAddress la, int lp, HttpParams params) throws IOException { + mConnectionAllocated.set(Boolean.TRUE); + return mDelegate.connectSocket(s, h, p, la, lp, params); + } + } + + /** Like WrappedSocketFactory, but for the LayeredSocketFactory subclass. */ + private class WrappedLayeredSocketFactory + extends WrappedSocketFactory implements LayeredSocketFactory { + private LayeredSocketFactory mDelegate; + private WrappedLayeredSocketFactory(LayeredSocketFactory sf) { super(sf); mDelegate = sf; } + + public final Socket createSocket(Socket s, String host, int port, boolean autoClose) + throws IOException { + return mDelegate.createSocket(s, host, port, autoClose); + } } /** @@ -140,24 +194,21 @@ public class GoogleHttpClient implements HttpClient { public HttpResponse executeWithoutRewriting( HttpUriRequest request, HttpContext context) throws IOException { - String code = "Error"; + int code = -1; long start = SystemClock.elapsedRealtime(); try { HttpResponse response; - // TODO: if we're logging network stats, and if the apache library is configured - // to follow redirects, count each redirect as an additional round trip. + mConnectionAllocated.set(null); - // see if we're logging network stats. - boolean logNetworkStats = NetworkStatsEntity.shouldLogNetworkStats(); + if (NetworkStatsEntity.shouldLogNetworkStats()) { + // TODO: if we're logging network stats, and if the apache library is configured + // to follow redirects, count each redirect as an additional round trip. - if (logNetworkStats) { int uid = android.os.Process.myUid(); long startTx = NetStat.getUidTxBytes(uid); long startRx = NetStat.getUidRxBytes(uid); response = mClient.execute(request, context); - code = Integer.toString(response.getStatusLine().getStatusCode()); - HttpEntity origEntity = response == null ? null : response.getEntity(); if (origEntity != null) { // yeah, we compute the same thing below. we do need to compute this here @@ -165,30 +216,39 @@ public class GoogleHttpClient implements HttpClient { long now = SystemClock.elapsedRealtime(); long elapsed = now - start; NetworkStatsEntity entity = new NetworkStatsEntity(origEntity, - mUserAgent, uid, startTx, startRx, + mAppName, uid, startTx, startRx, elapsed /* response latency */, now /* processing start time */); response.setEntity(entity); } } else { response = mClient.execute(request, context); - code = Integer.toString(response.getStatusLine().getStatusCode()); } + code = response.getStatusLine().getStatusCode(); return response; - } catch (IOException e) { - code = "IOException"; - throw e; } finally { // Record some statistics to the checkin service about the outcome. // Note that this is only describing execute(), not body download. + // We assume the database writes are much faster than network I/O, + // and not worth running in a background thread or anything. try { long elapsed = SystemClock.elapsedRealtime() - start; ContentValues values = new ContentValues(); - values.put(Checkin.Stats.TAG, - Checkin.Stats.Tag.HTTP_STATUS + ":" + - mUserAgent + ":" + code); values.put(Checkin.Stats.COUNT, 1); values.put(Checkin.Stats.SUM, elapsed / 1000.0); + + values.put(Checkin.Stats.TAG, Checkin.Stats.Tag.HTTP_REQUEST + ":" + mAppName); + mResolver.insert(Checkin.Stats.CONTENT_URI, values); + + // No sockets and no exceptions means we successfully reused a connection + if (mConnectionAllocated.get() == null && code >= 0) { + values.put(Checkin.Stats.TAG, Checkin.Stats.Tag.HTTP_REUSED + ":" + mAppName); + mResolver.insert(Checkin.Stats.CONTENT_URI, values); + } + + String status = code < 0 ? "IOException" : Integer.toString(code); + values.put(Checkin.Stats.TAG, + Checkin.Stats.Tag.HTTP_STATUS + ":" + mAppName + ":" + status); mResolver.insert(Checkin.Stats.CONTENT_URI, values); } catch (Exception e) { Log.e(TAG, "Error recording stats", e); diff --git a/core/java/com/google/android/util/GoogleWebContentHelper.java b/core/java/com/google/android/util/GoogleWebContentHelper.java index 291142008934..8291e2964dc1 100644 --- a/core/java/com/google/android/util/GoogleWebContentHelper.java +++ b/core/java/com/google/android/util/GoogleWebContentHelper.java @@ -130,7 +130,18 @@ public class GoogleWebContentHelper { mWebView.loadUrl(mSecureUrl); return this; } - + + /** + * Loads data into the webview and also provides a failback url + * @return This {@link GoogleWebContentHelper} so methods can be chained. + */ + public GoogleWebContentHelper loadDataWithFailUrl(String base, String data, + String mimeType, String encoding, String failUrl) { + ensureViews(); + mWebView.loadDataWithBaseURL(base, data, mimeType, encoding, failUrl); + return this; + } + /** * Helper to handle the back key. Returns true if the back key was handled, * otherwise returns false. diff --git a/core/jni/Android.mk b/core/jni/Android.mk index 4839b6f1d991..888cb1163997 100644 --- a/core/jni/Android.mk +++ b/core/jni/Android.mk @@ -19,6 +19,7 @@ LOCAL_SRC_FILES:= \ ActivityManager.cpp \ AndroidRuntime.cpp \ CursorWindow.cpp \ + Time.cpp \ com_google_android_gles_jni_EGLImpl.cpp \ com_google_android_gles_jni_GLImpl.cpp.arm \ android_opengl_GLES10.cpp \ @@ -117,7 +118,10 @@ LOCAL_SRC_FILES:= \ android_location_GpsLocationProvider.cpp \ com_android_internal_os_ZygoteInit.cpp \ com_android_internal_graphics_NativeUtils.cpp \ - android_backup_FileBackupHelper.cpp + android_backup_BackupDataInput.cpp \ + android_backup_BackupDataOutput.cpp \ + android_backup_FileBackupHelperBase.cpp \ + android_backup_BackupHelperDispatcher.cpp LOCAL_C_INCLUDES += \ $(JNI_H_INCLUDE) \ @@ -164,8 +168,7 @@ LOCAL_SHARED_LIBRARIES := \ libicui18n \ libicudata \ libmedia \ - libwpa_client \ - libemoji + libwpa_client ifeq ($(BOARD_HAVE_BLUETOOTH),true) LOCAL_C_INCLUDES += \ diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index aa6450d153c2..c81530122995 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -155,7 +155,10 @@ extern int register_android_ddm_DdmHandleNativeHeap(JNIEnv *env); extern int register_com_android_internal_os_ZygoteInit(JNIEnv* env); extern int register_android_util_Base64(JNIEnv* env); extern int register_android_location_GpsLocationProvider(JNIEnv* env); -extern int register_android_backup_FileBackupHelper(JNIEnv *env); +extern int register_android_backup_BackupDataInput(JNIEnv *env); +extern int register_android_backup_BackupDataOutput(JNIEnv *env); +extern int register_android_backup_FileBackupHelperBase(JNIEnv *env); +extern int register_android_backup_BackupHelperDispatcher(JNIEnv *env); static AndroidRuntime* gCurRuntime = NULL; @@ -1126,7 +1129,10 @@ static const RegJNIRec gRegJNI[] = { REG_JNI(register_android_ddm_DdmHandleNativeHeap), REG_JNI(register_android_util_Base64), REG_JNI(register_android_location_GpsLocationProvider), - REG_JNI(register_android_backup_FileBackupHelper), + REG_JNI(register_android_backup_BackupDataInput), + REG_JNI(register_android_backup_BackupDataOutput), + REG_JNI(register_android_backup_FileBackupHelperBase), + REG_JNI(register_android_backup_BackupHelperDispatcher), }; /* diff --git a/libs/ui/Time.cpp b/core/jni/Time.cpp similarity index 99% rename from libs/ui/Time.cpp rename to core/jni/Time.cpp index b5539135facd..f3037f383039 100644 --- a/libs/ui/Time.cpp +++ b/core/jni/Time.cpp @@ -1,4 +1,4 @@ -#include +#include "TimeUtils.h" #include #include diff --git a/include/utils/TimeUtils.h b/core/jni/TimeUtils.h similarity index 100% rename from include/utils/TimeUtils.h rename to core/jni/TimeUtils.h diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp index 65f44d504257..af8ecf5cccc3 100644 --- a/core/jni/android/graphics/Bitmap.cpp +++ b/core/jni/android/graphics/Bitmap.cpp @@ -28,7 +28,7 @@ typedef void (*FromColorProc)(void* dst, const SkColor src[], int width, static void FromColor_D32(void* dst, const SkColor src[], int width, int, int) { SkPMColor* d = (SkPMColor*)dst; - + for (int i = 0; i < width; i++) { *d++ = SkPreMultiplyColor(*src++); } @@ -37,7 +37,7 @@ static void FromColor_D32(void* dst, const SkColor src[], int width, static void FromColor_D565(void* dst, const SkColor src[], int width, int x, int y) { uint16_t* d = (uint16_t*)dst; - + DITHER_565_SCAN(y); for (int stop = x + width; x < stop; x++) { SkColor c = *src++; @@ -49,7 +49,7 @@ static void FromColor_D565(void* dst, const SkColor src[], int width, static void FromColor_D4444(void* dst, const SkColor src[], int width, int x, int y) { SkPMColor16* d = (SkPMColor16*)dst; - + DITHER_4444_SCAN(y); for (int stop = x + width; x < stop; x++) { SkPMColor c = SkPreMultiplyColor(*src++); @@ -80,14 +80,14 @@ bool GraphicsJNI::SetPixels(JNIEnv* env, jintArray srcColors, SkAutoLockPixels alp(dstBitmap); void* dst = dstBitmap.getPixels(); FromColorProc proc = ChooseFromColorProc(dstBitmap.config()); - + if (NULL == dst || NULL == proc) { return false; } - + const jint* array = env->GetIntArrayElements(srcColors, NULL); const SkColor* src = (const SkColor*)array + srcOffset; - + // reset to to actual choice from caller dst = dstBitmap.getAddr(x, y); // now copy/convert each scanline @@ -96,7 +96,7 @@ bool GraphicsJNI::SetPixels(JNIEnv* env, jintArray srcColors, src += srcStride; dst = (char*)dst + dstBitmap.rowBytes(); } - + env->ReleaseIntArrayElements(srcColors, const_cast(array), JNI_ABORT); return true; @@ -212,7 +212,7 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, doThrowIAE(env, "width and height must be > 0"); return NULL; } - + if (NULL != jColors) { size_t n = env->GetArrayLength(jColors); if (n < SkAbs32(stride) * (size_t)height) { @@ -222,7 +222,7 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, } SkBitmap bitmap; - + bitmap.setConfig(config, width, height); if (!GraphicsJNI::setJavaPixelRef(env, &bitmap, NULL)) { return NULL; @@ -232,7 +232,7 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, GraphicsJNI::SetPixels(env, jColors, offset, stride, 0, 0, width, height, bitmap); } - + return GraphicsJNI::createBitmap(env, new SkBitmap(bitmap), isMutable, NULL); } @@ -245,7 +245,7 @@ static jobject Bitmap_copy(JNIEnv* env, jobject, const SkBitmap* src, if (!src->copyTo(&result, dstConfig, &allocator)) { return NULL; } - + return GraphicsJNI::createBitmap(env, new SkBitmap(result), isMutable, NULL); } @@ -324,15 +324,15 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { SkDebugf("-------- unparcel parcel is NULL\n"); return NULL; } - + android::Parcel* p = android::parcelForJavaObject(env, parcel); - + const bool isMutable = p->readInt32() != 0; const SkBitmap::Config config = (SkBitmap::Config)p->readInt32(); const int width = p->readInt32(); const int height = p->readInt32(); const int rowBytes = p->readInt32(); - + if (SkBitmap::kARGB_8888_Config != config && SkBitmap::kRGB_565_Config != config && SkBitmap::kARGB_4444_Config != config && @@ -355,7 +355,7 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { ctable = new SkColorTable(src, count); } } - + if (!GraphicsJNI::setJavaPixelRef(env, bitmap, ctable)) { ctable->safeUnref(); delete bitmap; @@ -368,7 +368,7 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { bitmap->lockPixels(); memcpy(bitmap->getPixels(), p->readInplace(size), size); bitmap->unlockPixels(); - + return GraphicsJNI::createBitmap(env, bitmap, isMutable, NULL); } @@ -381,7 +381,7 @@ static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject, } android::Parcel* p = android::parcelForJavaObject(env, parcel); - + p->writeInt32(isMutable); p->writeInt32(bitmap->config()); p->writeInt32(bitmap->width()); @@ -413,7 +413,7 @@ static jobject Bitmap_extractAlpha(JNIEnv* env, jobject clazz, jintArray offsetXY) { SkIPoint offset; SkBitmap* dst = new SkBitmap; - + src->extractAlpha(dst, paint, &offset); if (offsetXY != 0 && env->GetArrayLength(offsetXY) >= 2) { int* array = env->GetIntArrayElements(offsetXY, NULL); @@ -421,7 +421,7 @@ static jobject Bitmap_extractAlpha(JNIEnv* env, jobject clazz, array[1] = offset.fY; env->ReleaseIntArrayElements(offsetXY, array, 0); } - + return GraphicsJNI::createBitmap(env, dst, true, NULL); } @@ -439,7 +439,7 @@ static int Bitmap_getPixel(JNIEnv* env, jobject, const SkBitmap* bitmap, if (NULL == src) { return 0; } - + SkColor dst[1]; proc(dst, src, 1, bitmap->getColorTable()); return dst[0]; @@ -449,7 +449,7 @@ static void Bitmap_getPixels(JNIEnv* env, jobject, const SkBitmap* bitmap, jintArray pixelArray, int offset, int stride, int x, int y, int width, int height) { SkAutoLockPixels alp(*bitmap); - + ToColorProc proc = ChooseToColorProc(*bitmap); if (NULL == proc) { return; @@ -498,7 +498,7 @@ static void Bitmap_copyPixelsToBuffer(JNIEnv* env, jobject, const SkBitmap* bitmap, jobject jbuffer) { SkAutoLockPixels alp(*bitmap); const void* src = bitmap->getPixels(); - + if (NULL != src) { android::AutoBufferPointer abp(env, jbuffer, JNI_TRUE); @@ -511,7 +511,7 @@ static void Bitmap_copyPixelsFromBuffer(JNIEnv* env, jobject, const SkBitmap* bitmap, jobject jbuffer) { SkAutoLockPixels alp(*bitmap); void* dst = bitmap->getPixels(); - + if (NULL != dst) { android::AutoBufferPointer abp(env, jbuffer, JNI_FALSE); // the java side has already checked that buffer is large enough @@ -519,6 +519,11 @@ static void Bitmap_copyPixelsFromBuffer(JNIEnv* env, jobject, } } +static void Bitmap_prepareToDraw(JNIEnv* env, jobject, SkBitmap* bitmap) { + bitmap->lockPixels(); + bitmap->unlockPixels(); +} + /////////////////////////////////////////////////////////////////////////////// #include @@ -552,7 +557,8 @@ static JNINativeMethod gBitmapMethods[] = { { "nativeCopyPixelsToBuffer", "(ILjava/nio/Buffer;)V", (void*)Bitmap_copyPixelsToBuffer }, { "nativeCopyPixelsFromBuffer", "(ILjava/nio/Buffer;)V", - (void*)Bitmap_copyPixelsFromBuffer } + (void*)Bitmap_copyPixelsFromBuffer }, + { "nativePrepareToDraw", "(I)V", (void*)Bitmap_prepareToDraw } }; #define kClassPathName "android/graphics/Bitmap" diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp index 1fd15d687baf..137707fa93bf 100644 --- a/core/jni/android/graphics/BitmapFactory.cpp +++ b/core/jni/android/graphics/BitmapFactory.cpp @@ -311,7 +311,7 @@ static SkPixelRef* installPixelRef(SkBitmap* bitmap, SkStream* stream, int sampleSize) { SkPixelRef* pr; // only use ashmem for large images, since mmaps come at a price - if (bitmap->getSize() >= 32 * 65536) { + if (bitmap->getSize() >= 32 * 1024) { pr = new SkImageRef_ashmem(stream, bitmap->config(), sampleSize); } else { pr = new SkImageRef_GlobalPool(stream, bitmap->config(), sampleSize); @@ -520,7 +520,10 @@ static jobject nativeDecodeFileDescriptor(JNIEnv* env, jobject clazz, */ AutoFDSeek as(descriptor); - return doDecode(env, stream, padding, bitmapFactoryOptions, true); + /* Allow purgeable iff we own the FD, i.e., in the puregeable and + shareable case. + */ + return doDecode(env, stream, padding, bitmapFactoryOptions, weOwnTheFD); } /* make a deep copy of the asset, and return it as a stream, or NULL if there diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp index 76e6f028d7b6..d1fe83edce66 100644 --- a/core/jni/android/graphics/Paint.cpp +++ b/core/jni/android/graphics/Paint.cpp @@ -69,6 +69,8 @@ public: static void reset(JNIEnv* env, jobject clazz, SkPaint* obj) { obj->reset(); + // utf16 is required for java + obj->setTextEncoding(SkPaint::kUTF16_TextEncoding); } static void assign(JNIEnv* env, jobject clazz, SkPaint* dst, const SkPaint* src) { diff --git a/core/jni/android_backup_BackupDataInput.cpp b/core/jni/android_backup_BackupDataInput.cpp new file mode 100644 index 000000000000..cf8a8e8a5efa --- /dev/null +++ b/core/jni/android_backup_BackupDataInput.cpp @@ -0,0 +1,164 @@ +/* + * 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. + */ + +#define LOG_TAG "FileBackupHelper_native" +#include + +#include "JNIHelp.h" +#include + +#include + +namespace android +{ + +// java.io.FileDescriptor +static jfieldID s_descriptorField = 0; + +// android.backup.BackupDataInput$EntityHeader +static jfieldID s_keyField = 0; +static jfieldID s_dataSizeField = 0; + +static int +ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor) +{ + int err; + + int fd = env->GetIntField(fileDescriptor, s_descriptorField); + if (fd == -1) { + return NULL; + } + + return (int)new BackupDataReader(fd); +} + +static void +dtor_native(JNIEnv* env, jobject clazz, int r) +{ + delete (BackupDataReader*)r; +} + +static jint +readNextHeader_native(JNIEnv* env, jobject clazz, int r, jobject entity) +{ + int err; + bool done; + BackupDataReader* reader = (BackupDataReader*)r; + + int type = 0; + + err = reader->ReadNextHeader(&done, &type); + if (done) { + return 1; + } + + if (err != 0) { + return err < 0 ? err : -1; + } + + switch (type) { + case BACKUP_HEADER_ENTITY_V1: + { + String8 key; + size_t dataSize; + err = reader->ReadEntityHeader(&key, &dataSize); + if (err != 0) { + return err < 0 ? err : -1; + } + // TODO: Set the fields in the entity object + jstring keyStr = env->NewStringUTF(key.string()); + env->SetObjectField(entity, s_keyField, keyStr); + env->SetIntField(entity, s_dataSizeField, dataSize); + return 0; + } + default: + LOGD("Unknown header type: 0x%08x\n", type); + return -1; + } + + // done + return 1; +} + +static jint +readEntityData_native(JNIEnv* env, jobject clazz, int r, jbyteArray data, int offset, int size) +{ + int err; + BackupDataReader* reader = (BackupDataReader*)r; + + if (env->GetArrayLength(data) < (size+offset)) { + // size mismatch + return -1; + } + + jbyte* dataBytes = env->GetByteArrayElements(data, NULL); + if (dataBytes == NULL) { + return -2; + } + + err = reader->ReadEntityData(dataBytes+offset, size); + + env->ReleaseByteArrayElements(data, dataBytes, 0); + + return err; +} + +static jint +skipEntityData_native(JNIEnv* env, jobject clazz, int r) +{ + int err; + BackupDataReader* reader = (BackupDataReader*)r; + + err = reader->SkipEntityData(); + + return err; +} + +static const JNINativeMethod g_methods[] = { + { "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native }, + { "dtor", "(I)V", (void*)dtor_native }, + { "readNextHeader_native", "(ILandroid/backup/BackupDataInput$EntityHeader;)I", + (void*)readNextHeader_native }, + { "readEntityData_native", "(I[BII)I", (void*)readEntityData_native }, + { "skipEntityData_native", "(I)I", (void*)skipEntityData_native }, +}; + +int register_android_backup_BackupDataInput(JNIEnv* env) +{ + //LOGD("register_android_backup_BackupDataInput"); + + jclass clazz; + + clazz = env->FindClass("java/io/FileDescriptor"); + LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); + s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); + LOG_FATAL_IF(s_descriptorField == NULL, + "Unable to find descriptor field in java.io.FileDescriptor"); + + clazz = env->FindClass("android/backup/BackupDataInput$EntityHeader"); + LOG_FATAL_IF(clazz == NULL, "Unable to find class android.backup.BackupDataInput.EntityHeader"); + s_keyField = env->GetFieldID(clazz, "key", "Ljava/lang/String;"); + LOG_FATAL_IF(s_keyField == NULL, + "Unable to find key field in android.backup.BackupDataInput.EntityHeader"); + s_dataSizeField = env->GetFieldID(clazz, "dataSize", "I"); + LOG_FATAL_IF(s_dataSizeField == NULL, + "Unable to find dataSize field in android.backup.BackupDataInput.EntityHeader"); + + return AndroidRuntime::registerNativeMethods(env, "android/backup/BackupDataInput", + g_methods, NELEM(g_methods)); +} + +} diff --git a/core/jni/android_backup_BackupDataOutput.cpp b/core/jni/android_backup_BackupDataOutput.cpp new file mode 100644 index 000000000000..d02590e62e69 --- /dev/null +++ b/core/jni/android_backup_BackupDataOutput.cpp @@ -0,0 +1,128 @@ +/* + * 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. + */ + +#define LOG_TAG "FileBackupHelper_native" +#include + +#include "JNIHelp.h" +#include + +#include + +namespace android +{ + +static jfieldID s_descriptorField = 0; + +static int +ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor) +{ + int err; + + int fd = env->GetIntField(fileDescriptor, s_descriptorField); + if (fd == -1) { + return NULL; + } + + return (int)new BackupDataWriter(fd); +} + +static void +dtor_native(JNIEnv* env, jobject clazz, int w) +{ + delete (BackupDataWriter*)w; +} + +static jint +writeEntityHeader_native(JNIEnv* env, jobject clazz, int w, jstring key, int dataSize) +{ + int err; + BackupDataWriter* writer = (BackupDataWriter*)w; + + const char* keyUTF = env->GetStringUTFChars(key, NULL); + if (keyUTF == NULL) { + return -1; + } + + err = writer->WriteEntityHeader(String8(keyUTF), dataSize); + + env->ReleaseStringUTFChars(key, keyUTF); + + return err; +} + +static jint +writeEntityData_native(JNIEnv* env, jobject clazz, int w, jbyteArray data, int size) +{ + int err; + BackupDataWriter* writer = (BackupDataWriter*)w; + + if (env->GetArrayLength(data) > size) { + // size mismatch + return -1; + } + + jbyte* dataBytes = env->GetByteArrayElements(data, NULL); + if (dataBytes == NULL) { + return -1; + } + + err = writer->WriteEntityData(dataBytes, size); + + env->ReleaseByteArrayElements(data, dataBytes, JNI_ABORT); + + return err; +} + +static void +setKeyPrefix_native(JNIEnv* env, jobject clazz, int w, jstring keyPrefixObj) +{ + int err; + BackupDataWriter* writer = (BackupDataWriter*)w; + + const char* keyPrefixUTF = env->GetStringUTFChars(keyPrefixObj, NULL); + String8 keyPrefix(keyPrefixUTF ? keyPrefixUTF : ""); + + writer->SetKeyPrefix(keyPrefix); + + env->ReleaseStringUTFChars(keyPrefixObj, keyPrefixUTF); +} + +static const JNINativeMethod g_methods[] = { + { "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native }, + { "dtor", "(I)V", (void*)dtor_native }, + { "writeEntityHeader_native", "(ILjava/lang/String;I)I", (void*)writeEntityHeader_native }, + { "writeEntityData_native", "(I[BI)I", (void*)writeEntityData_native }, + { "setKeyPrefix_native", "(ILjava/lang/String;)V", (void*)setKeyPrefix_native }, +}; + +int register_android_backup_BackupDataOutput(JNIEnv* env) +{ + //LOGD("register_android_backup_BackupDataOutput"); + + jclass clazz; + + clazz = env->FindClass("java/io/FileDescriptor"); + LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); + s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); + LOG_FATAL_IF(s_descriptorField == NULL, + "Unable to find descriptor field in java.io.FileDescriptor"); + + return AndroidRuntime::registerNativeMethods(env, "android/backup/BackupDataOutput", + g_methods, NELEM(g_methods)); +} + +} diff --git a/core/jni/android_backup_BackupHelperDispatcher.cpp b/core/jni/android_backup_BackupHelperDispatcher.cpp new file mode 100644 index 000000000000..2e3f0b969127 --- /dev/null +++ b/core/jni/android_backup_BackupHelperDispatcher.cpp @@ -0,0 +1,259 @@ +/* + * 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. + */ + +#define LOG_TAG "BackupHelperDispatcher_native" +#include + +#include "JNIHelp.h" +#include + +#include +#include +#include + + +#define VERSION_1_HEADER 0x01706c48 // 'Hlp'1 little endian + +namespace android +{ + +struct chunk_header_v1 { + int headerSize; + int version; + int dataSize; // corresponds to Header.chunkSize + int nameLength; // not including the NULL terminator, which is not written to the file +}; + +// java.io.FileDescriptor +static jfieldID s_descriptorField = 0; +static jfieldID s_chunkSizeField = 0; +static jfieldID s_keyPrefixField = 0; + +static int +readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj) +{ + chunk_header_v1 flattenedHeader; + int fd; + ssize_t amt; + String8 keyPrefix; + char* buf; + + fd = env->GetIntField(fdObj, s_descriptorField); + + amt = read(fd, &flattenedHeader.headerSize, sizeof(flattenedHeader.headerSize)); + if (amt != sizeof(flattenedHeader.headerSize)) { + return -1; + } + + int remainingHeader = flattenedHeader.headerSize - sizeof(flattenedHeader.headerSize); + + if (flattenedHeader.headerSize < (int)sizeof(chunk_header_v1)) { + LOGW("Skipping unknown header: %d bytes", flattenedHeader.headerSize); + if (remainingHeader > 0) { + lseek(fd, remainingHeader, SEEK_CUR); + // >0 means skip this chunk + return 1; + } + } + + amt = read(fd, &flattenedHeader.version, + sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize)); + if (amt <= 0) { + LOGW("Failed reading chunk header"); + return -1; + } + remainingHeader -= sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize); + + if (flattenedHeader.version != VERSION_1_HEADER) { + LOGW("Skipping unknown header version: 0x%08x, %d bytes", flattenedHeader.version, + flattenedHeader.headerSize); + if (remainingHeader > 0) { + lseek(fd, remainingHeader, SEEK_CUR); + // >0 means skip this chunk + return 1; + } + } + +#if 0 + LOGD("chunk header:"); + LOGD(" headerSize=%d", flattenedHeader.headerSize); + LOGD(" version=0x%08x", flattenedHeader.version); + LOGD(" dataSize=%d", flattenedHeader.dataSize); + LOGD(" nameLength=%d", flattenedHeader.nameLength); +#endif + + if (flattenedHeader.dataSize < 0 || flattenedHeader.nameLength < 0 || + remainingHeader < flattenedHeader.nameLength) { + LOGW("Malformed V1 header remainingHeader=%d dataSize=%d nameLength=%d", remainingHeader, + flattenedHeader.dataSize, flattenedHeader.nameLength); + return -1; + } + + buf = keyPrefix.lockBuffer(flattenedHeader.nameLength); + if (buf == NULL) { + LOGW("unable to allocate %d bytes", flattenedHeader.nameLength); + return -1; + } + + amt = read(fd, buf, flattenedHeader.nameLength); + buf[flattenedHeader.nameLength] = 0; + + keyPrefix.unlockBuffer(flattenedHeader.nameLength); + + remainingHeader -= flattenedHeader.nameLength; + + if (remainingHeader > 0) { + lseek(fd, remainingHeader, SEEK_CUR); + } + + env->SetIntField(headerObj, s_chunkSizeField, flattenedHeader.dataSize); + env->SetObjectField(headerObj, s_keyPrefixField, env->NewStringUTF(keyPrefix.string())); + + return 0; +} + +static int +skipChunk_native(JNIEnv* env, jobject clazz, jobject fdObj, jint bytesToSkip) +{ + int fd; + + fd = env->GetIntField(fdObj, s_descriptorField); + + lseek(fd, bytesToSkip, SEEK_CUR); + + return 0; +} + +static int +padding_len(int len) +{ + len = len % 4; + return len == 0 ? len : 4 - len; +} + +static int +allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj) +{ + int pos; + jstring nameObj; + int nameLength; + int namePadding; + int headerSize; + int fd; + + fd = env->GetIntField(fdObj, s_descriptorField); + + nameObj = (jstring)env->GetObjectField(headerObj, s_keyPrefixField); + + nameLength = env->GetStringUTFLength(nameObj); + namePadding = padding_len(nameLength); + + headerSize = sizeof(chunk_header_v1) + nameLength + namePadding; + + pos = lseek(fd, 0, SEEK_CUR); + + lseek(fd, headerSize, SEEK_CUR); + + return pos; +} + +static int +writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj, jint pos) +{ + int err; + chunk_header_v1 header; + int fd; + int namePadding; + int prevPos; + jstring nameObj; + const char* buf; + + fd = env->GetIntField(fdObj, s_descriptorField); + prevPos = lseek(fd, 0, SEEK_CUR); + + nameObj = (jstring)env->GetObjectField(headerObj, s_keyPrefixField); + header.nameLength = env->GetStringUTFLength(nameObj); + namePadding = padding_len(header.nameLength); + + header.headerSize = sizeof(chunk_header_v1) + header.nameLength + namePadding; + header.version = VERSION_1_HEADER; + header.dataSize = prevPos - (pos + header.headerSize); + + lseek(fd, pos, SEEK_SET); + err = write(fd, &header, sizeof(chunk_header_v1)); + if (err != sizeof(chunk_header_v1)) { + return errno; + } + + buf = env->GetStringUTFChars(nameObj, NULL); + err = write(fd, buf, header.nameLength); + env->ReleaseStringUTFChars(nameObj, buf); + if (err != header.nameLength) { + return errno; + } + + if (namePadding != 0) { + int zero = 0; + err = write(fd, &zero, namePadding); + if (err != namePadding) { + return errno; + } + } + + lseek(fd, prevPos, SEEK_SET); + return 0; +} + +static const JNINativeMethod g_methods[] = { + { "readHeader_native", + "(Landroid/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;)I", + (void*)readHeader_native }, + { "skipChunk_native", + "(Ljava/io/FileDescriptor;I)I", + (void*)skipChunk_native }, + { "allocateHeader_native", + "(Landroid/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;)I", + (void*)allocateHeader_native }, + { "writeHeader_native", + "(Landroid/backup/BackupHelperDispatcher$Header;Ljava/io/FileDescriptor;I)I", + (void*)writeHeader_native }, +}; + +int register_android_backup_BackupHelperDispatcher(JNIEnv* env) +{ + jclass clazz; + + clazz = env->FindClass("java/io/FileDescriptor"); + LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); + s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); + LOG_FATAL_IF(s_descriptorField == NULL, + "Unable to find descriptor field in java.io.FileDescriptor"); + + clazz = env->FindClass("android/backup/BackupHelperDispatcher$Header"); + LOG_FATAL_IF(clazz == NULL, + "Unable to find class android.backup.BackupHelperDispatcher.Header"); + s_chunkSizeField = env->GetFieldID(clazz, "chunkSize", "I"); + LOG_FATAL_IF(s_chunkSizeField == NULL, + "Unable to find chunkSize field in android.backup.BackupHelperDispatcher.Header"); + s_keyPrefixField = env->GetFieldID(clazz, "keyPrefix", "Ljava/lang/String;"); + LOG_FATAL_IF(s_keyPrefixField == NULL, + "Unable to find keyPrefix field in android.backup.BackupHelperDispatcher.Header"); + + return AndroidRuntime::registerNativeMethods(env, "android/backup/BackupHelperDispatcher", + g_methods, NELEM(g_methods)); +} + +} diff --git a/core/jni/android_backup_FileBackupHelper.cpp b/core/jni/android_backup_FileBackupHelper.cpp deleted file mode 100644 index c6de3a52f69b..000000000000 --- a/core/jni/android_backup_FileBackupHelper.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* - * 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. - */ - -#define LOG_TAG "FileBackupHelper_native" -#include - -#include "JNIHelp.h" -#include - -#include - -namespace android -{ - -static jfieldID s_descriptorField = 0; - -static int -performBackup_native(JNIEnv* env, jobject clazz, jstring basePath, jobject oldState, jobject data, - jobject newState, jobjectArray files) -{ - int err; - - // all parameters have already been checked against null - LOGD("oldState=%p newState=%p data=%p\n", oldState, newState, data); - int oldStateFD = oldState != NULL ? env->GetIntField(oldState, s_descriptorField) : -1; - int newStateFD = env->GetIntField(newState, s_descriptorField); - int dataFD = env->GetIntField(data, s_descriptorField); - - char const* basePathUTF = env->GetStringUTFChars(basePath, NULL); - LOGD("basePathUTF=\"%s\"\n", basePathUTF); - const int fileCount = env->GetArrayLength(files); - char const** filesUTF = (char const**)malloc(sizeof(char*)*fileCount); - for (int i=0; iGetStringUTFChars((jstring)env->GetObjectArrayElement(files, i), NULL); - } - - err = back_up_files(oldStateFD, dataFD, newStateFD, basePathUTF, filesUTF, fileCount); - - for (int i=0; iReleaseStringUTFChars((jstring)env->GetObjectArrayElement(files, i), filesUTF[i]); - } - free(filesUTF); - env->ReleaseStringUTFChars(basePath, basePathUTF); - - return err; -} - -static const JNINativeMethod g_methods[] = { - { "performBackup_native", - "(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;" - "Ljava/io/FileDescriptor;[Ljava/lang/String;)I", - (void*)performBackup_native }, -}; - -int register_android_backup_FileBackupHelper(JNIEnv* env) -{ - LOGD("register_android_backup_FileBackupHelper"); - - jclass clazz; - - clazz = env->FindClass("java/io/FileDescriptor"); - LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); - s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); - LOG_FATAL_IF(s_descriptorField == NULL, - "Unable to find descriptor field in java.io.FileDescriptor"); - - return AndroidRuntime::registerNativeMethods(env, "android/backup/FileBackupHelper", - g_methods, NELEM(g_methods)); -} - -} diff --git a/core/jni/android_backup_FileBackupHelperBase.cpp b/core/jni/android_backup_FileBackupHelperBase.cpp new file mode 100644 index 000000000000..8225a36b4164 --- /dev/null +++ b/core/jni/android_backup_FileBackupHelperBase.cpp @@ -0,0 +1,136 @@ +/* + * 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. + */ + +#define LOG_TAG "FileBackupHelper_native" +#include + +#include "JNIHelp.h" +#include + +#include + +namespace android +{ + +// java.io.FileDescriptor +static jfieldID s_descriptorField = 0; + +static int +ctor(JNIEnv* env, jobject clazz) +{ + return (int)new RestoreHelperBase(); +} + +static void +dtor(JNIEnv* env, jobject clazz, jint ptr) +{ + delete (RestoreHelperBase*)ptr; +} + +static int +performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, int data, + jobject newState, jobjectArray files, jobjectArray keys) +{ + int err; + + // all parameters have already been checked against null + int oldStateFD = oldState != NULL ? env->GetIntField(oldState, s_descriptorField) : -1; + int newStateFD = env->GetIntField(newState, s_descriptorField); + BackupDataWriter* dataStream = (BackupDataWriter*)data; + + const int fileCount = env->GetArrayLength(files); + char const** filesUTF = (char const**)malloc(sizeof(char*)*fileCount); + for (int i=0; iGetStringUTFChars((jstring)env->GetObjectArrayElement(files, i), NULL); + } + + const int keyCount = env->GetArrayLength(keys); + char const** keysUTF = (char const**)malloc(sizeof(char*)*keyCount); + for (int i=0; iGetStringUTFChars((jstring)env->GetObjectArrayElement(keys, i), NULL); + } + + err = back_up_files(oldStateFD, dataStream, newStateFD, filesUTF, keysUTF, fileCount); + + for (int i=0; iReleaseStringUTFChars((jstring)env->GetObjectArrayElement(files, i), filesUTF[i]); + } + free(filesUTF); + + for (int i=0; iReleaseStringUTFChars((jstring)env->GetObjectArrayElement(keys, i), keysUTF[i]); + } + free(keysUTF); + + return err; +} + + +static int +writeFile_native(JNIEnv* env, jobject clazz, jint ptr, jstring filenameObj, int backupReaderPtr) +{ + int err; + RestoreHelperBase* restore = (RestoreHelperBase*)ptr; + BackupDataReader* reader = (BackupDataReader*)backupReaderPtr; + char const* filename; + + filename = env->GetStringUTFChars(filenameObj, NULL); + + err = restore->WriteFile(String8(filename), reader); + + env->ReleaseStringUTFChars(filenameObj, filename); + + return err; +} + +static int +writeSnapshot_native(JNIEnv* env, jobject clazz, jint ptr, jobject fileDescriptor) +{ + int err; + + RestoreHelperBase* restore = (RestoreHelperBase*)ptr; + int fd = env->GetIntField(fileDescriptor, s_descriptorField); + + err = restore->WriteSnapshot(fd); + + return err; +} + +static const JNINativeMethod g_methods[] = { + { "ctor", "()I", (void*)ctor }, + { "dtor", "(I)V", (void*)dtor }, + { "performBackup_native", + "(Ljava/io/FileDescriptor;ILjava/io/FileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)I", + (void*)performBackup_native }, + { "writeFile_native", "(ILjava/lang/String;I)I", (void*)writeFile_native }, + { "writeSnapshot_native", "(ILjava/io/FileDescriptor;)I", (void*)writeSnapshot_native }, +}; + +int register_android_backup_FileBackupHelperBase(JNIEnv* env) +{ + jclass clazz; + + clazz = env->FindClass("java/io/FileDescriptor"); + LOG_FATAL_IF(clazz == NULL, "Unable to find class java.io.FileDescriptor"); + s_descriptorField = env->GetFieldID(clazz, "descriptor", "I"); + LOG_FATAL_IF(s_descriptorField == NULL, + "Unable to find descriptor field in java.io.FileDescriptor"); + + return AndroidRuntime::registerNativeMethods(env, "android/backup/FileBackupHelperBase", + g_methods, NELEM(g_methods)); +} + +} diff --git a/core/jni/android_bluetooth_Database.cpp b/core/jni/android_bluetooth_Database.cpp index 136c9a328d55..73b8efd3e3f9 100644 --- a/core/jni/android_bluetooth_Database.cpp +++ b/core/jni/android_bluetooth_Database.cpp @@ -53,6 +53,7 @@ static void initializeNativeDataNative(JNIEnv* env, jobject object) { LOGE("Could not get onto the system bus!"); dbus_error_free(&err); } + dbus_connection_set_exit_on_disconnect(conn, FALSE); } #endif } diff --git a/core/jni/android_emoji_EmojiFactory.cpp b/core/jni/android_emoji_EmojiFactory.cpp index 59f63a83cac5..7d6e24fa2567 100644 --- a/core/jni/android_emoji_EmojiFactory.cpp +++ b/core/jni/android_emoji_EmojiFactory.cpp @@ -1,7 +1,7 @@ #include "SkTypes.h" #include "SkImageDecoder.h" -#define LOG_TAG "DoCoMoEmojiFactory_jni" +#define LOG_TAG "EmojiFactory_jni" #include #include @@ -13,15 +13,11 @@ namespace android { -// Note: This class is originally developed so that libandroid_runtime does -// not have to depend on libemoji which is optional library. However, we -// cannot use this class, since current (2009-02-16) bionic libc does not allow -// dlopen()-ing inside dlopen(), while not only this class but also libemoji -// uses dlopen(). class EmojiFactoryCaller { public: - EmojiFactoryCaller(); + EmojiFactoryCaller() {} virtual ~EmojiFactoryCaller(); + bool Init(); EmojiFactory *TryCallGetImplementation(const char* name); EmojiFactory *TryCallGetAvailableImplementation(); private: @@ -30,35 +26,45 @@ class EmojiFactoryCaller { EmojiFactory *(*m_get_available_implementation)(); }; -EmojiFactoryCaller::EmojiFactoryCaller() { +bool EmojiFactoryCaller::Init() { + const char* error_msg; m_handle = dlopen("libemoji.so", RTLD_LAZY | RTLD_LOCAL); - const char* error_str = dlerror(); - if (error_str) { - LOGI("Failed to load libemoji.so: %s", error_str); - return; + + if (m_handle == NULL) { + error_msg = "Failed to load libemoji.so"; + goto FAIL; } m_get_implementation = reinterpret_cast( dlsym(m_handle, "GetImplementation")); - error_str = dlerror(); - if (error_str) { - LOGE("Failed to get symbol of GetImplementation: %s", error_str); - dlclose(m_handle); - m_handle = NULL; - return; + if (m_get_implementation == NULL) { + error_msg = "Failed to get symbol of GetImplementation"; + goto FAIL; } m_get_available_implementation = reinterpret_cast( dlsym(m_handle,"GetAvailableImplementation")); - error_str = dlerror(); - if (error_str) { - LOGE("Failed to get symbol of GetAvailableImplementation: %s", error_str); + if (m_get_available_implementation == NULL) { + error_msg = "Failed to get symbol of GetAvailableImplementation"; + goto FAIL; + } + + return true; + +FAIL: + const char* error_str = dlerror(); + if (error_str == NULL) { + error_str = "unknown reason"; + } + + LOGE("%s: %s", error_msg, error_str); + if (m_handle != NULL) { dlclose(m_handle); m_handle = NULL; - return; } + return false; } EmojiFactoryCaller::~EmojiFactoryCaller() { @@ -82,10 +88,9 @@ EmojiFactory *EmojiFactoryCaller::TryCallGetAvailableImplementation() { return m_get_available_implementation(); } -// Note: bionic libc's dlopen() does not allow recursive dlopen(). So currently -// we cannot use EmojiFactoryCaller here. -// static EmojiFactoryCaller* gCaller; -// static pthread_once_t g_once = PTHREAD_ONCE_INIT; +static EmojiFactoryCaller* gCaller; +static pthread_once_t g_once = PTHREAD_ONCE_INIT; +static bool lib_emoji_factory_is_ready; static jclass gString_class; @@ -95,9 +100,10 @@ static jmethodID gBitmap_constructorMethodID; static jclass gEmojiFactory_class; static jmethodID gEmojiFactory_constructorMethodID; -// static void InitializeCaller() { -// gCaller = new EmojiFactoryCaller(); -// } +static void InitializeCaller() { + gCaller = new EmojiFactoryCaller(); + lib_emoji_factory_is_ready = gCaller->Init(); +} static jobject create_java_EmojiFactory( JNIEnv* env, EmojiFactory* factory, jstring name) { @@ -116,19 +122,23 @@ static jobject create_java_EmojiFactory( static jobject android_emoji_EmojiFactory_newInstance( JNIEnv* env, jobject clazz, jstring name) { - // pthread_once(&g_once, InitializeCaller); - if (NULL == name) { return NULL; } + pthread_once(&g_once, InitializeCaller); + if (!lib_emoji_factory_is_ready) { + return NULL; + } const jchar* jchars = env->GetStringChars(name, NULL); jsize len = env->GetStringLength(name); String8 str(String16(jchars, len)); - // EmojiFactory *factory = gCaller->TryCallGetImplementation(str.string()); - EmojiFactory *factory = EmojiFactory::GetImplementation(str.string()); - + EmojiFactory *factory = gCaller->TryCallGetImplementation(str.string()); + // EmojiFactory *factory = EmojiFactory::GetImplementation(str.string()); + if (NULL == factory) { + return NULL; + } env->ReleaseStringChars(name, jchars); return create_java_EmojiFactory(env, factory, name); @@ -136,10 +146,13 @@ static jobject android_emoji_EmojiFactory_newInstance( static jobject android_emoji_EmojiFactory_newAvailableInstance( JNIEnv* env, jobject clazz) { - // pthread_once(&g_once, InitializeCaller); + pthread_once(&g_once, InitializeCaller); + if (!lib_emoji_factory_is_ready) { + return NULL; + } - // EmojiFactory *factory = gCaller->TryCallGetAvailableImplementation(); - EmojiFactory *factory = EmojiFactory::GetAvailableImplementation(); + EmojiFactory *factory = gCaller->TryCallGetAvailableImplementation(); + // EmojiFactory *factory = EmojiFactory::GetAvailableImplementation(); if (NULL == factory) { return NULL; } diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp index c10799316b81..77a8a7286c63 100644 --- a/core/jni/android_hardware_Camera.cpp +++ b/core/jni/android_hardware_Camera.cpp @@ -38,12 +38,6 @@ enum CallbackMessageID { kErrorCallback = 5 }; -enum CameraError { - kCameraErrorUnknown = 1, - kCameraErrorMediaServer = 100 -}; - - struct fields_t { jfieldID context; jfieldID surface; @@ -53,19 +47,33 @@ struct fields_t { static fields_t fields; static Mutex sLock; -struct camera_context_t { +// provides persistent context for calls from native code to Java +class JNICameraContext: public CameraListener +{ +public: + JNICameraContext(JNIEnv* env, jobject weak_this, jclass clazz, const sp& camera); + ~JNICameraContext() { release(); } + virtual void notify(int32_t msgType, int32_t ext1, int32_t ext2); + virtual void postData(int32_t msgType, const sp& dataPtr); + sp getCamera() { Mutex::Autolock _l(mLock); return mCamera; } + void release(); + +private: + void copyAndPost(JNIEnv* env, const sp& dataPtr, int msgType); + jobject mCameraJObjectWeak; // weak reference to java object jclass mCameraJClass; // strong reference to java class sp mCamera; // strong reference to native object + Mutex mLock; }; -sp get_native_camera(JNIEnv *env, jobject thiz, camera_context_t** pContext) +sp get_native_camera(JNIEnv *env, jobject thiz, JNICameraContext** pContext) { sp camera; Mutex::Autolock _l(sLock); - camera_context_t* context = reinterpret_cast(env->GetIntField(thiz, fields.context)); + JNICameraContext* context = reinterpret_cast(env->GetIntField(thiz, fields.context)); if (context != NULL) { - camera = context->mCamera; + camera = context->getCamera(); } LOGV("get_native_camera: context=%p, camera=%p", context, camera.get()); if (camera == 0) { @@ -76,30 +84,108 @@ sp get_native_camera(JNIEnv *env, jobject thiz, camera_context_t** pCont return camera; } -static void err_callback(status_t err, void *cookie) +JNICameraContext::JNICameraContext(JNIEnv* env, jobject weak_this, jclass clazz, const sp& camera) { - camera_context_t* context = reinterpret_cast(cookie); - if ((context == NULL) || (context->mCamera == 0)) return; + mCameraJObjectWeak = env->NewGlobalRef(weak_this); + mCameraJClass = (jclass)env->NewGlobalRef(clazz); + mCamera = camera; +} - LOGV("err_callback: context=%p, camera=%p", context, context->mCamera.get()); +void JNICameraContext::release() +{ + LOGV("release"); + Mutex::Autolock _l(mLock); + JNIEnv *env = AndroidRuntime::getJNIEnv(); - int error; - switch (err) { - case DEAD_OBJECT: - error = kCameraErrorMediaServer; - break; - default: - error = kCameraErrorUnknown; - break; + if (mCameraJObjectWeak != NULL) { + env->DeleteGlobalRef(mCameraJObjectWeak); + mCameraJObjectWeak = NULL; + } + if (mCameraJClass != NULL) { + env->DeleteGlobalRef(mCameraJClass); + mCameraJClass = NULL; + } + mCamera.clear(); +} + +void JNICameraContext::notify(int32_t msgType, int32_t ext1, int32_t ext2) +{ + LOGV("notify"); + + // VM pointer will be NULL if object is released + Mutex::Autolock _l(mLock); + if (mCameraJObjectWeak == NULL) { + LOGW("callback on dead camera object"); + return; + } + JNIEnv *env = AndroidRuntime::getJNIEnv(); + env->CallStaticVoidMethod(mCameraJClass, fields.post_event, + mCameraJObjectWeak, msgType, ext1, ext2); +} + +void JNICameraContext::copyAndPost(JNIEnv* env, const sp& dataPtr, int msgType) +{ + jbyteArray obj = NULL; + + // allocate Java byte array and copy data + if (dataPtr != NULL) { + ssize_t offset; + size_t size; + sp heap = dataPtr->getMemory(&offset, &size); + LOGV("postData: off=%d, size=%d", offset, size); + uint8_t *heapBase = (uint8_t*)heap->base(); + + if (heapBase != NULL) { + uint8_t *data = heapBase + offset; + obj = env->NewByteArray(size); + if (obj == NULL) { + LOGE("Couldn't allocate byte array for JPEG data"); + env->ExceptionClear(); + } else { + jbyte *bytes = env->GetByteArrayElements(obj, NULL); + memcpy(bytes, data, size); + env->ReleaseByteArrayElements(obj, bytes, 0); + + } + } else { + LOGE("image heap is NULL"); + } + } + + // post image data to Java + env->CallStaticVoidMethod(mCameraJClass, fields.post_event, + mCameraJObjectWeak, msgType, 0, 0, obj); + if (obj) { + env->DeleteLocalRef(obj); } +} +void JNICameraContext::postData(int32_t msgType, const sp& dataPtr) +{ + // VM pointer will be NULL if object is released + Mutex::Autolock _l(mLock); JNIEnv *env = AndroidRuntime::getJNIEnv(); - if (env == NULL) { - LOGE("err_callback on dead VM"); + if (mCameraJObjectWeak == NULL) { + LOGW("callback on dead camera object"); return; } - env->CallStaticVoidMethod(context->mCameraJClass, fields.post_event, - context->mCameraJObjectWeak, kErrorCallback, error, 0, NULL); + + // return data based on callback type + switch(msgType) { + case CAMERA_MSG_VIDEO_FRAME: + // should never happen + break; + // don't return raw data to Java + case CAMERA_MSG_RAW_IMAGE: + LOGV("rawCallback"); + env->CallStaticVoidMethod(mCameraJClass, fields.post_event, + mCameraJObjectWeak, msgType, 0, 0, NULL); + break; + default: + LOGV("dataCallback(%d, %p)", msgType, dataPtr.get()); + copyAndPost(env, dataPtr, msgType); + break; + } } // connect to camera service @@ -115,33 +201,24 @@ static void android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, jobj // make sure camera hardware is alive if (camera->getStatus() != NO_ERROR) { - jniThrowException(env, "java/io/IOException", "Camera initialization failed"); + jniThrowException(env, "java/lang/RuntimeException", "Camera initialization failed"); return; } jclass clazz = env->GetObjectClass(thiz); if (clazz == NULL) { - LOGE("Can't find android/hardware/Camera"); - // XXX no idea what to throw here, can this even happen? - jniThrowException(env, "java/lang/Exception", NULL); + jniThrowException(env, "java/lang/RuntimeException", "Can't find android/hardware/Camera"); return; } // We use a weak reference so the Camera object can be garbage collected. // The reference is only used as a proxy for callbacks. - camera_context_t* context = new camera_context_t; - context->mCameraJObjectWeak = env->NewGlobalRef(weak_this); - context->mCameraJClass = (jclass)env->NewGlobalRef(clazz); - context->mCamera = camera; + sp context = new JNICameraContext(env, weak_this, clazz, camera); + context->incStrong(thiz); + camera->setListener(context); // save context in opaque field - env->SetIntField(thiz, fields.context, (int)context); - - LOGV("native_setup: mCameraJObjectWeak=%x, camera_obj=%x, context=%p", - (int)context->mCameraJObjectWeak, (int)thiz, context); - - // set error callback - camera->setErrorCallback(err_callback, context); + env->SetIntField(thiz, fields.context, (int)context.get()); } // disconnect from camera service @@ -150,11 +227,11 @@ static void android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, jobj // finalizer is invoked later. static void android_hardware_Camera_release(JNIEnv *env, jobject thiz) { - camera_context_t* context = NULL; + JNICameraContext* context = NULL; sp camera; { Mutex::Autolock _l(sLock); - context = reinterpret_cast(env->GetIntField(thiz, fields.context)); + context = reinterpret_cast(env->GetIntField(thiz, fields.context)); // Make sure we do not attempt to callback on a deleted Java object. env->SetIntField(thiz, fields.context, 0); @@ -162,21 +239,18 @@ static void android_hardware_Camera_release(JNIEnv *env, jobject thiz) // clean up if release has not been called before if (context != NULL) { - camera = context->mCamera; - context->mCamera.clear(); + camera = context->getCamera(); + context->release(); LOGV("native_release: context=%p camera=%p", context, camera.get()); // clear callbacks if (camera != NULL) { - camera->setPreviewCallback(NULL, NULL, FRAME_CALLBACK_FLAG_NOOP); - camera->setErrorCallback(NULL, NULL); + camera->setPreviewCallbackFlags(FRAME_CALLBACK_FLAG_NOOP); camera->disconnect(); - env->DeleteGlobalRef(context->mCameraJObjectWeak); - env->DeleteGlobalRef(context->mCameraJClass); } // remove context to prevent further Java access - delete context; + context->decStrong(thiz); } } @@ -186,54 +260,15 @@ static void android_hardware_Camera_setPreviewDisplay(JNIEnv *env, jobject thiz, sp camera = get_native_camera(env, thiz, NULL); if (camera == 0) return; - sp surface = reinterpret_cast(env->GetIntField(jSurface, fields.surface)); + sp surface = NULL; + if (jSurface != NULL) { + surface = reinterpret_cast(env->GetIntField(jSurface, fields.surface)); + } if (camera->setPreviewDisplay(surface) != NO_ERROR) { jniThrowException(env, "java/io/IOException", "setPreviewDisplay failed"); } } -static void preview_callback(const sp& mem, void *cookie) -{ - LOGV("preview_callback"); - JNIEnv *env = AndroidRuntime::getJNIEnv(); - if (env == NULL) { - LOGE("preview_callback on dead VM"); - return; - } - camera_context_t* context = reinterpret_cast(cookie); - if ((context == NULL) || (context->mCamera == 0)) { - LOGW("context or camera is NULL in preview_callback"); - return; - } - LOGV("native_release: context=%p camera=%p", context, context->mCamera.get()); - - int arg1 = 0, arg2 = 0; - jobject obj = NULL; - - ssize_t offset; - size_t size; - sp heap = mem->getMemory(&offset, &size); - - uint8_t *data = ((uint8_t *)heap->base()) + offset; - - jbyteArray array = env->NewByteArray(size); - if (array == NULL) { - LOGE("Couldn't allocate byte array for YUV data"); - env->ExceptionClear(); - return; - } - - jbyte *bytes = env->GetByteArrayElements(array, NULL); - memcpy(bytes, data, size); - env->ReleaseByteArrayElements(array, bytes, 0); - - obj = array; - - env->CallStaticVoidMethod(context->mCameraJClass, fields.post_event, - context->mCameraJObjectWeak, kPreviewCallback, arg1, arg2, obj); - env->DeleteLocalRef(array); -} - static void android_hardware_Camera_startPreview(JNIEnv *env, jobject thiz) { LOGV("startPreview"); @@ -241,7 +276,7 @@ static void android_hardware_Camera_startPreview(JNIEnv *env, jobject thiz) if (camera == 0) return; if (camera->startPreview() != NO_ERROR) { - jniThrowException(env, "java/io/IOException", "startPreview failed"); + jniThrowException(env, "java/lang/RuntimeException", "startPreview failed"); return; } } @@ -269,7 +304,7 @@ static void android_hardware_Camera_setHasPreviewCallback(JNIEnv *env, jobject t // Important: Only install preview_callback if the Java code has called // setPreviewCallback() with a non-null value, otherwise we'd pay to memcpy // each preview frame for nothing. - camera_context_t* context; + JNICameraContext* context; sp camera = get_native_camera(env, thiz, &context); if (camera == 0) return; @@ -279,130 +314,32 @@ static void android_hardware_Camera_setHasPreviewCallback(JNIEnv *env, jobject t } else { callback_flag = FRAME_CALLBACK_FLAG_NOOP; } - camera->setPreviewCallback(installed ? preview_callback : NULL, context, callback_flag); -} - -static void autofocus_callback_impl(bool success, void *cookie) -{ - LOGV("autoFocusCallback"); - camera_context_t* context = reinterpret_cast(cookie); - - JNIEnv *env = AndroidRuntime::getJNIEnv(); - if (env == NULL) { - LOGE("autofocus_callback on dead VM"); - return; - } - env->CallStaticVoidMethod(context->mCameraJClass, fields.post_event, - context->mCameraJObjectWeak, kAutoFocusCallback, success, 0, NULL); + camera->setPreviewCallbackFlags(callback_flag); } static void android_hardware_Camera_autoFocus(JNIEnv *env, jobject thiz) { LOGV("autoFocus"); - camera_context_t* context; + JNICameraContext* context; sp c = get_native_camera(env, thiz, &context); if (c == 0) return; - c->setAutoFocusCallback(autofocus_callback_impl, context); if (c->autoFocus() != NO_ERROR) { - jniThrowException(env, "java/io/IOException", "autoFocus failed"); - } -} - -static void jpeg_callback(const sp& mem, void *cookie) -{ - LOGV("jpegCallback"); - camera_context_t* context = reinterpret_cast(cookie); - - JNIEnv *env = AndroidRuntime::getJNIEnv(); - if (env == NULL) { - LOGE("jpeg`_callback on dead VM"); - return; - } - int arg1 = 0, arg2 = 0; - jobject obj = NULL; - - if (mem == NULL) { - env->CallStaticVoidMethod(context->mCameraJClass, fields.post_event, - context->mCameraJObjectWeak, kJpegCallback, arg1, arg2, NULL); - return; + jniThrowException(env, "java/lang/RuntimeException", "autoFocus failed"); } - ssize_t offset; - size_t size; - sp heap = mem->getMemory(&offset, &size); - LOGV("jpeg_callback: mem off=%d, size=%d", offset, size); - - uint8_t *heap_base = (uint8_t *)heap->base(); - if (heap_base == NULL) { - LOGE("YUV heap is NULL"); - return; - } - - uint8_t *data = heap_base + offset; - - jbyteArray array = env->NewByteArray(size); - if (array == NULL) { - LOGE("Couldn't allocate byte array for JPEG data"); - env->ExceptionClear(); - return; - } - - jbyte *bytes = env->GetByteArrayElements(array, NULL); - memcpy(bytes, data, size); - env->ReleaseByteArrayElements(array, bytes, 0); - - obj = array; - - env->CallStaticVoidMethod(context->mCameraJClass, fields.post_event, - context->mCameraJObjectWeak, kJpegCallback, arg1, arg2, obj); - env->DeleteLocalRef(array); -} - -static void shutter_callback_impl(void *cookie) -{ - LOGV("shutterCallback"); - camera_context_t* context = reinterpret_cast(cookie); - - JNIEnv *env = AndroidRuntime::getJNIEnv(); - if (env == NULL) { - LOGE("shutter_callback on dead VM"); - return; - } - env->CallStaticVoidMethod(context->mCameraJClass, fields.post_event, - context->mCameraJObjectWeak, kShutterCallback, 0, 0, NULL); -} - -static void raw_callback(const sp& mem __attribute__((unused)), - void *cookie) -{ - LOGV("rawCallback"); - camera_context_t* context = reinterpret_cast(cookie); - - JNIEnv *env = AndroidRuntime::getJNIEnv(); - if (env == NULL) { - LOGE("raw_callback on dead VM"); - return; - } - env->CallStaticVoidMethod(context->mCameraJClass, fields.post_event, - context->mCameraJObjectWeak, kRawCallback, 0, 0, NULL); } static void android_hardware_Camera_takePicture(JNIEnv *env, jobject thiz) { LOGV("takePicture"); - camera_context_t* context; + JNICameraContext* context; sp camera = get_native_camera(env, thiz, &context); if (camera == 0) return; - camera->setShutterCallback(shutter_callback_impl, context); - camera->setRawCallback(raw_callback, context); - camera->setJpegCallback(jpeg_callback, context); if (camera->takePicture() != NO_ERROR) { - jniThrowException(env, "java/io/IOException", "takePicture failed"); + jniThrowException(env, "java/lang/RuntimeException", "takePicture failed"); return; } - - return; } static void android_hardware_Camera_setParameters(JNIEnv *env, jobject thiz, jstring params) @@ -418,7 +355,7 @@ static void android_hardware_Camera_setParameters(JNIEnv *env, jobject thiz, jst env->ReleaseStringCritical(params, str); } if (camera->setParameters(params8) != NO_ERROR) { - jniThrowException(env, "java/lang/IllegalArgumentException", "setParameters failed"); + jniThrowException(env, "java/lang/RuntimeException", "setParameters failed"); return; } } diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp index 75aa458035bd..3e27978ec02e 100644 --- a/core/jni/android_hardware_SensorManager.cpp +++ b/core/jni/android_hardware_SensorManager.cpp @@ -14,9 +14,13 @@ * limitations under the License. */ -#define LOG_TAG "Sensors" +#define LOG_TAG "SensorManager" + +#define LOG_NDEBUG 0 +#include "utils/Log.h" #include +#include #include "jni.h" #include "JNIHelp.h" @@ -106,12 +110,33 @@ sensors_data_uninit(JNIEnv *env, jclass clazz) } static jint -sensors_data_open(JNIEnv *env, jclass clazz, jobject fdo) +sensors_data_open(JNIEnv *env, jclass clazz, jobjectArray fdArray, jintArray intArray) { jclass FileDescriptor = env->FindClass("java/io/FileDescriptor"); - jfieldID offset = env->GetFieldID(FileDescriptor, "descriptor", "I"); - int fd = env->GetIntField(fdo, offset); - return sSensorDevice->data_open(sSensorDevice, fd); // doesn't take ownership of fd + jfieldID fieldOffset = env->GetFieldID(FileDescriptor, "descriptor", "I"); + int numFds = (fdArray ? env->GetArrayLength(fdArray) : 0); + int numInts = (intArray ? env->GetArrayLength(intArray) : 0); + native_handle_t* handle = native_handle_create(numFds, numInts); + int offset = 0; + + for (int i = 0; i < numFds; i++) { + jobject fdo = env->GetObjectArrayElement(fdArray, i); + if (fdo) { + handle->data[offset++] = env->GetIntField(fdo, fieldOffset); + } else { + handle->data[offset++] = -1; + } + } + if (numInts > 0) { + jint* ints = env->GetIntArrayElements(intArray, 0); + for (int i = 0; i < numInts; i++) { + handle->data[offset++] = ints[i]; + } + env->ReleaseIntArrayElements(intArray, ints, 0); + } + + // doesn't take ownership of the native handle + return sSensorDevice->data_open(sSensorDevice, handle); } static jint @@ -157,7 +182,7 @@ static JNINativeMethod gMethods[] = { (void*)sensors_module_get_next_sensor }, {"sensors_data_init", "()I", (void*)sensors_data_init }, {"sensors_data_uninit", "()I", (void*)sensors_data_uninit }, - {"sensors_data_open", "(Ljava/io/FileDescriptor;)I", (void*)sensors_data_open }, + {"sensors_data_open", "([Ljava/io/FileDescriptor;[I)I", (void*)sensors_data_open }, {"sensors_data_close", "()I", (void*)sensors_data_close }, {"sensors_data_poll", "([F[I[J)I", (void*)sensors_data_poll }, }; diff --git a/core/jni/android_location_GpsLocationProvider.cpp b/core/jni/android_location_GpsLocationProvider.cpp old mode 100644 new mode 100755 index 004b0e3ea07e..bf0bd65eddbc --- a/core/jni/android_location_GpsLocationProvider.cpp +++ b/core/jni/android_location_GpsLocationProvider.cpp @@ -176,7 +176,7 @@ static jboolean android_location_GpsLocationProvider_start(JNIEnv* env, jobject { int result = sGpsInterface->set_position_mode(positionMode, (singleFix ? 0 : fixFrequency)); if (result) { - return result; + return false; } return (sGpsInterface->start() == 0); @@ -270,6 +270,12 @@ static void android_location_GpsLocationProvider_inject_time(JNIEnv* env, jobjec sGpsInterface->inject_time(time, timeReference, uncertainty); } +static void android_location_GpsLocationProvider_inject_location(JNIEnv* env, jobject obj, + jdouble latitude, jdouble longitude, jfloat accuracy) +{ + sGpsInterface->inject_location(latitude, longitude, accuracy); +} + static jboolean android_location_GpsLocationProvider_supports_xtra(JNIEnv* env, jobject obj) { if (!sGpsXtraInterface) { @@ -330,13 +336,15 @@ static void android_location_GpsLocationProvider_agps_data_conn_failed(JNIEnv* e } static void android_location_GpsLocationProvider_set_agps_server(JNIEnv* env, jobject obj, - jint type, jint addr, jint port) + jint type, jstring hostname, jint port) { if (!sAGpsInterface) { sAGpsInterface = (const AGpsInterface*)sGpsInterface->get_extension(AGPS_INTERFACE); } if (sAGpsInterface) { - sAGpsInterface->set_server(type, addr, port); + const char *c_hostname = env->GetStringUTFChars(hostname, NULL); + sAGpsInterface->set_server(type, c_hostname, port); + env->ReleaseStringUTFChars(hostname, c_hostname); } } @@ -353,12 +361,13 @@ static JNINativeMethod sMethods[] = { {"native_wait_for_event", "()V", (void*)android_location_GpsLocationProvider_wait_for_event}, {"native_read_sv_status", "([I[F[F[F[I)I", (void*)android_location_GpsLocationProvider_read_sv_status}, {"native_inject_time", "(JJI)V", (void*)android_location_GpsLocationProvider_inject_time}, + {"native_inject_location", "(DDF)V", (void*)android_location_GpsLocationProvider_inject_location}, {"native_supports_xtra", "()Z", (void*)android_location_GpsLocationProvider_supports_xtra}, {"native_inject_xtra_data", "([BI)V", (void*)android_location_GpsLocationProvider_inject_xtra_data}, {"native_agps_data_conn_open", "(Ljava/lang/String;)V", (void*)android_location_GpsLocationProvider_agps_data_conn_open}, {"native_agps_data_conn_closed", "()V", (void*)android_location_GpsLocationProvider_agps_data_conn_closed}, {"native_agps_data_conn_failed", "()V", (void*)android_location_GpsLocationProvider_agps_data_conn_failed}, - {"native_set_agps_server", "(III)V", (void*)android_location_GpsLocationProvider_set_agps_server}, + {"native_set_agps_server", "(ILjava/lang/String;I)V", (void*)android_location_GpsLocationProvider_set_agps_server}, }; int register_android_location_GpsLocationProvider(JNIEnv* env) diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp index 288433af6a0d..e71e3481862e 100644 --- a/core/jni/android_media_AudioRecord.cpp +++ b/core/jni/android_media_AudioRecord.cpp @@ -45,8 +45,6 @@ struct fields_t { jmethodID postNativeEventInJava; //... event post callback method int PCM16; //... format constants int PCM8; //... format constants - int SOURCE_DEFAULT; //... record source constants - int SOURCE_MIC; //... record source constants jfieldID nativeRecorderInJavaObj; // provides access to the C++ AudioRecord object jfieldID nativeCallbackCookie; // provides access to the AudioRecord callback data }; @@ -66,7 +64,7 @@ struct audiorecord_callback_cookie { #define AUDIORECORD_ERROR_SETUP_ZEROFRAMECOUNT -16 #define AUDIORECORD_ERROR_SETUP_INVALIDCHANNELCOUNT -17 #define AUDIORECORD_ERROR_SETUP_INVALIDFORMAT -18 -#define AUDIORECORD_ERROR_SETUP_INVALIDSTREAMTYPE -19 +#define AUDIORECORD_ERROR_SETUP_INVALIDSOURCE -19 #define AUDIORECORD_ERROR_SETUP_NATIVEINITFAILED -20 jint android_media_translateRecorderErrorCode(int code) { @@ -154,17 +152,16 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this, int frameSize = nbChannels * bytesPerSample; size_t frameCount = buffSizeInBytes / frameSize; - // compare the source against the Java constants - AudioRecord::stream_type arSource; - if (source == javaAudioRecordFields.SOURCE_DEFAULT) { - arSource = AudioRecord::DEFAULT_INPUT; - } else if (source == javaAudioRecordFields.SOURCE_MIC) { - arSource = AudioRecord::MIC_INPUT; - } else { + // convert and check input source value + // input_source values defined in AudioRecord.h are equal to + // JAVA MediaRecord.AudioSource values minus 1. + AudioRecord::input_source arSource = (AudioRecord::input_source)(source - 1); + if (arSource < AudioRecord::DEFAULT_INPUT || + arSource >= AudioRecord::NUM_INPUT_SOURCES) { LOGE("Error creating AudioRecord: unknown source."); - return AUDIORECORD_ERROR_SETUP_INVALIDSTREAMTYPE; + return AUDIORECORD_ERROR_SETUP_INVALIDSOURCE; } - + audiorecord_callback_cookie *lpCallbackData = NULL; AudioRecord* lpRecorder = NULL; @@ -511,8 +508,6 @@ static JNINativeMethod gMethods[] = { #define JAVA_POSTEVENT_CALLBACK_NAME "postEventFromNative" #define JAVA_CONST_PCM16_NAME "ENCODING_PCM_16BIT" #define JAVA_CONST_PCM8_NAME "ENCODING_PCM_8BIT" -#define JAVA_CONST_SOURCEDEFAULT_NAME "SOURCE_DEFAULT" -#define JAVA_CONST_SOURCEMIC_NAME "SOURCE_MIC" #define JAVA_NATIVERECORDERINJAVAOBJ_FIELD_NAME "mNativeRecorderInJavaObj" #define JAVA_NATIVECALLBACKINFO_FIELD_NAME "mNativeCallbackCookie" @@ -583,17 +578,6 @@ int register_android_media_AudioRecord(JNIEnv *env) return -1; } - // Get the recording source constants from the AudioRecord class - if ( !android_media_getIntConstantFromClass(env, javaAudioRecordFields.audioRecordClass, - kClassPathName, - JAVA_CONST_SOURCEDEFAULT_NAME, &(javaAudioRecordFields.SOURCE_DEFAULT)) - || !android_media_getIntConstantFromClass(env, javaAudioRecordFields.audioRecordClass, - kClassPathName, - JAVA_CONST_SOURCEMIC_NAME, &(javaAudioRecordFields.SOURCE_MIC)) ) { - // error log performed in getIntConstantFromClass() - return -1; - } - return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods)); } diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp index 42ada5450744..e7d4694a2aaf 100644 --- a/core/jni/android_media_AudioTrack.cpp +++ b/core/jni/android_media_AudioTrack.cpp @@ -539,16 +539,17 @@ static jint android_media_AudioTrack_get_native_frame_count(JNIEnv *env, jobjec // ---------------------------------------------------------------------------- -static void android_media_AudioTrack_set_playback_rate(JNIEnv *env, jobject thiz, +static jint android_media_AudioTrack_set_playback_rate(JNIEnv *env, jobject thiz, jint sampleRateInHz) { AudioTrack *lpTrack = (AudioTrack *)env->GetIntField( thiz, javaAudioTrackFields.nativeTrackInJavaObj); if (lpTrack) { - lpTrack->setSampleRate(sampleRateInHz); + return android_media_translateErrorCode(lpTrack->setSampleRate(sampleRateInHz)); } else { jniThrowException(env, "java/lang/IllegalStateException", "Unable to retrieve AudioTrack pointer for setSampleRate()"); + return AUDIOTRACK_ERROR; } } @@ -788,7 +789,7 @@ static JNINativeMethod gMethods[] = { {"native_get_native_frame_count", "()I", (void *)android_media_AudioTrack_get_native_frame_count}, {"native_set_playback_rate", - "(I)V", (void *)android_media_AudioTrack_set_playback_rate}, + "(I)I", (void *)android_media_AudioTrack_set_playback_rate}, {"native_get_playback_rate", "()I", (void *)android_media_AudioTrack_get_playback_rate}, {"native_set_marker_pos","(I)I", (void *)android_media_AudioTrack_set_marker_pos}, diff --git a/core/jni/android_net_wifi_Wifi.cpp b/core/jni/android_net_wifi_Wifi.cpp index 25670df9d373..9f93e2f042d1 100644 --- a/core/jni/android_net_wifi_Wifi.cpp +++ b/core/jni/android_net_wifi_Wifi.cpp @@ -317,8 +317,13 @@ static jint android_net_wifi_getRssiCommand(JNIEnv* env, jobject clazz) } // reply comes back in the form " rssi XX" where XX is the // number we're interested in. if we're associating, it returns "OK". + // beware - can contain spaces. if (strcmp(reply, "OK") != 0) { - sscanf(reply, "%*s %*s %d", &rssi); + char* lastSpace = strrchr(reply, ' '); + // lastSpace should be preceded by "rssi" and followed by the value + if (lastSpace && !strncmp(lastSpace - 4, "rssi", 4)) { + sscanf(lastSpace + 1, "%d", &rssi); + } } return (jint)rssi; } diff --git a/core/jni/android_opengl_GLES10.cpp b/core/jni/android_opengl_GLES10.cpp index 482d8eb1b88b..2685d7595e32 100644 --- a/core/jni/android_opengl_GLES10.cpp +++ b/core/jni/android_opengl_GLES10.cpp @@ -133,6 +133,19 @@ releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) commit ? 0 : JNI_ABORT); } +static void * +getDirectBufferPointer(JNIEnv *_env, jobject buffer) { + char* buf = (char*) _env->GetDirectBufferAddress(buffer); + if (buf) { + jint position = _env->GetIntField(buffer, positionID); + jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); + buf += position << elementSizeShift; + } else { + _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); + } + return (void*) buf; +} + static int getNumCompressedTextureFormats() { int numCompressedTextureFormats = 0; @@ -305,9 +318,8 @@ android_glColorPointerBounds__IIILjava_nio_Buffer_2I GLvoid *pointer = (GLvoid *) 0; if (pointer_buf) { - pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf); + pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); if ( ! pointer ) { - _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); return; } } @@ -2779,9 +2791,8 @@ android_glNormalPointerBounds__IILjava_nio_Buffer_2I GLvoid *pointer = (GLvoid *) 0; if (pointer_buf) { - pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf); + pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); if ( ! pointer ) { - _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); return; } } @@ -3034,9 +3045,8 @@ android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I GLvoid *pointer = (GLvoid *) 0; if (pointer_buf) { - pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf); + pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); if ( ! pointer ) { - _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); return; } } @@ -3392,9 +3402,8 @@ android_glVertexPointerBounds__IIILjava_nio_Buffer_2I GLvoid *pointer = (GLvoid *) 0; if (pointer_buf) { - pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf); + pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); if ( ! pointer ) { - _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); return; } } diff --git a/core/jni/android_os_MemoryFile.cpp b/core/jni/android_os_MemoryFile.cpp index edf7dc45991b..8643393f7e8a 100644 --- a/core/jni/android_os_MemoryFile.cpp +++ b/core/jni/android_os_MemoryFile.cpp @@ -26,7 +26,7 @@ namespace android { -static jint android_os_MemoryFile_open(JNIEnv* env, jobject clazz, jstring name, jint length) +static jobject android_os_MemoryFile_open(JNIEnv* env, jobject clazz, jstring name, jint length) { const char* namestr = (name ? env->GetStringUTFChars(name, NULL) : NULL); @@ -37,37 +37,52 @@ static jint android_os_MemoryFile_open(JNIEnv* env, jobject clazz, jstring name, if (name) env->ReleaseStringUTFChars(name, namestr); - if (result < 0) + if (result < 0) { jniThrowException(env, "java/io/IOException", "ashmem_create_region failed"); - return result; + return NULL; + } + + return jniCreateFileDescriptor(env, result); } -static jint android_os_MemoryFile_mmap(JNIEnv* env, jobject clazz, jint fd, jint length) +static jint android_os_MemoryFile_mmap(JNIEnv* env, jobject clazz, jobject fileDescriptor, + jint length, jint prot) { - jint result = (jint)mmap(NULL, length, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); + int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); + jint result = (jint)mmap(NULL, length, prot, MAP_SHARED, fd, 0); if (!result) jniThrowException(env, "java/io/IOException", "mmap failed"); return result; } -static void android_os_MemoryFile_close(JNIEnv* env, jobject clazz, jint fd) +static void android_os_MemoryFile_munmap(JNIEnv* env, jobject clazz, jint addr, jint length) +{ + int result = munmap((void *)addr, length); + if (result < 0) + jniThrowException(env, "java/io/IOException", "munmap failed"); +} + +static void android_os_MemoryFile_close(JNIEnv* env, jobject clazz, jobject fileDescriptor) { - close(fd); + int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); + if (fd >= 0) { + jniSetFileDescriptorOfFD(env, fileDescriptor, -1); + close(fd); + } } static jint android_os_MemoryFile_read(JNIEnv* env, jobject clazz, - jint fd, jint address, jbyteArray buffer, jint srcOffset, jint destOffset, + jobject fileDescriptor, jint address, jbyteArray buffer, jint srcOffset, jint destOffset, jint count, jboolean unpinned) { + int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); if (unpinned && ashmem_pin_region(fd, 0, 0) == ASHMEM_WAS_PURGED) { ashmem_unpin_region(fd, 0, 0); jniThrowException(env, "java/io/IOException", "ashmem region was purged"); return -1; } - jbyte* bytes = env->GetByteArrayElements(buffer, 0); - memcpy(bytes + destOffset, (const char *)address + srcOffset, count); - env->ReleaseByteArrayElements(buffer, bytes, 0); + env->SetByteArrayRegion(buffer, destOffset, count, (const jbyte *)address + srcOffset); if (unpinned) { ashmem_unpin_region(fd, 0, 0); @@ -76,18 +91,17 @@ static jint android_os_MemoryFile_read(JNIEnv* env, jobject clazz, } static jint android_os_MemoryFile_write(JNIEnv* env, jobject clazz, - jint fd, jint address, jbyteArray buffer, jint srcOffset, jint destOffset, + jobject fileDescriptor, jint address, jbyteArray buffer, jint srcOffset, jint destOffset, jint count, jboolean unpinned) { + int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); if (unpinned && ashmem_pin_region(fd, 0, 0) == ASHMEM_WAS_PURGED) { ashmem_unpin_region(fd, 0, 0); jniThrowException(env, "java/io/IOException", "ashmem region was purged"); return -1; } - jbyte* bytes = env->GetByteArrayElements(buffer, 0); - memcpy((char *)address + destOffset, bytes + srcOffset, count); - env->ReleaseByteArrayElements(buffer, bytes, 0); + env->GetByteArrayRegion(buffer, srcOffset, count, (jbyte *)address + destOffset); if (unpinned) { ashmem_unpin_region(fd, 0, 0); @@ -95,21 +109,45 @@ static jint android_os_MemoryFile_write(JNIEnv* env, jobject clazz, return count; } -static void android_os_MemoryFile_pin(JNIEnv* env, jobject clazz, jint fd, jboolean pin) +static void android_os_MemoryFile_pin(JNIEnv* env, jobject clazz, jobject fileDescriptor, jboolean pin) { + int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); int result = (pin ? ashmem_pin_region(fd, 0, 0) : ashmem_unpin_region(fd, 0, 0)); if (result < 0) { jniThrowException(env, "java/io/IOException", NULL); } } +static jboolean android_os_MemoryFile_is_ashmem_region(JNIEnv* env, jobject clazz, + jobject fileDescriptor) { + int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); + // Use ASHMEM_GET_SIZE to find out if the fd refers to an ashmem region. + // ASHMEM_GET_SIZE should succeed for all ashmem regions, and the kernel + // should return ENOTTY for all other valid file descriptors + int result = ashmem_get_size_region(fd); + if (result < 0) { + if (errno == ENOTTY) { + // ENOTTY means that the ioctl does not apply to this object, + // i.e., it is not an ashmem region. + return JNI_FALSE; + } + // Some other error, throw exception + jniThrowIOException(env, errno); + return JNI_FALSE; + } + return JNI_TRUE; +} + static const JNINativeMethod methods[] = { - {"native_open", "(Ljava/lang/String;I)I", (void*)android_os_MemoryFile_open}, - {"native_mmap", "(II)I", (void*)android_os_MemoryFile_mmap}, - {"native_close", "(I)V", (void*)android_os_MemoryFile_close}, - {"native_read", "(II[BIIIZ)I", (void*)android_os_MemoryFile_read}, - {"native_write", "(II[BIIIZ)V", (void*)android_os_MemoryFile_write}, - {"native_pin", "(IZ)V", (void*)android_os_MemoryFile_pin}, + {"native_open", "(Ljava/lang/String;I)Ljava/io/FileDescriptor;", (void*)android_os_MemoryFile_open}, + {"native_mmap", "(Ljava/io/FileDescriptor;II)I", (void*)android_os_MemoryFile_mmap}, + {"native_munmap", "(II)V", (void*)android_os_MemoryFile_munmap}, + {"native_close", "(Ljava/io/FileDescriptor;)V", (void*)android_os_MemoryFile_close}, + {"native_read", "(Ljava/io/FileDescriptor;I[BIIIZ)I", (void*)android_os_MemoryFile_read}, + {"native_write", "(Ljava/io/FileDescriptor;I[BIIIZ)V", (void*)android_os_MemoryFile_write}, + {"native_pin", "(Ljava/io/FileDescriptor;Z)V", (void*)android_os_MemoryFile_pin}, + {"native_is_ashmem_region", "(Ljava/io/FileDescriptor;)Z", + (void*)android_os_MemoryFile_is_ashmem_region} }; static const char* const kClassPathName = "android/os/MemoryFile"; diff --git a/core/jni/android_server_BluetoothA2dpService.cpp b/core/jni/android_server_BluetoothA2dpService.cpp index fe94642e258f..91a8e8e60353 100644 --- a/core/jni/android_server_BluetoothA2dpService.cpp +++ b/core/jni/android_server_BluetoothA2dpService.cpp @@ -84,6 +84,7 @@ static bool initNative(JNIEnv* env, jobject object) { dbus_error_free(&err); return false; } + dbus_connection_set_exit_on_disconnect(nat->conn, FALSE); #endif /*HAVE_BLUETOOTH*/ return true; } diff --git a/core/jni/android_server_BluetoothDeviceService.cpp b/core/jni/android_server_BluetoothDeviceService.cpp index b6e979811e26..58ae4f60a78d 100644 --- a/core/jni/android_server_BluetoothDeviceService.cpp +++ b/core/jni/android_server_BluetoothDeviceService.cpp @@ -109,6 +109,7 @@ static bool initializeNativeDataNative(JNIEnv* env, jobject object) { dbus_error_free(&err); return false; } + dbus_connection_set_exit_on_disconnect(nat->conn, FALSE); nat->adapter = BLUEZ_ADAPTER_OBJECT_NAME; #endif /*HAVE_BLUETOOTH*/ diff --git a/core/jni/android_server_BluetoothEventLoop.cpp b/core/jni/android_server_BluetoothEventLoop.cpp index 7c5da5bdb564..ad24136ac28f 100644 --- a/core/jni/android_server_BluetoothEventLoop.cpp +++ b/core/jni/android_server_BluetoothEventLoop.cpp @@ -132,6 +132,7 @@ static void initializeNativeDataNative(JNIEnv* env, jobject object) { LOGE("%s: Could not get onto the system bus!", __FUNCTION__); dbus_error_free(&err); } + dbus_connection_set_exit_on_disconnect(nat->conn, FALSE); } #endif } @@ -161,6 +162,19 @@ static const DBusObjectPathVTable agent_vtable = { NULL, agent_event_filter, NULL, NULL, NULL, NULL }; +static unsigned int unix_events_to_dbus_flags(short events) { + return (events & DBUS_WATCH_READABLE ? POLLIN : 0) | + (events & DBUS_WATCH_WRITABLE ? POLLOUT : 0) | + (events & DBUS_WATCH_ERROR ? POLLERR : 0) | + (events & DBUS_WATCH_HANGUP ? POLLHUP : 0); +} + +static short dbus_flags_to_unix_events(unsigned int flags) { + return (flags & POLLIN ? DBUS_WATCH_READABLE : 0) | + (flags & POLLOUT ? DBUS_WATCH_WRITABLE : 0) | + (flags & POLLERR ? DBUS_WATCH_ERROR : 0) | + (flags & POLLHUP ? DBUS_WATCH_HANGUP : 0); +} static jboolean setUpEventLoop(native_data_t *nat) { LOGV(__FUNCTION__); @@ -384,8 +398,7 @@ static void handleWatchAdd(native_data_t *nat) { read(nat->controlFdR, &newFD, sizeof(int)); read(nat->controlFdR, &flags, sizeof(unsigned int)); read(nat->controlFdR, &watch, sizeof(DBusWatch *)); - int events = (flags & DBUS_WATCH_READABLE ? POLLIN : 0) - | (flags & DBUS_WATCH_WRITABLE ? POLLOUT : 0); + short events = dbus_flags_to_unix_events(flags); for (int y = 0; ypollMemberCount; y++) { if ((nat->pollData[y].fd == newFD) && @@ -429,8 +442,7 @@ static void handleWatchRemove(native_data_t *nat) { read(nat->controlFdR, &removeFD, sizeof(int)); read(nat->controlFdR, &flags, sizeof(unsigned int)); - int events = (flags & DBUS_WATCH_READABLE ? POLLIN : 0) - | (flags & DBUS_WATCH_WRITABLE ? POLLOUT : 0); + short events = dbus_flags_to_unix_events(flags); for (int y = 0; y < nat->pollMemberCount; y++) { if ((nat->pollData[y].fd == removeFD) && @@ -494,13 +506,12 @@ static void *eventLoopMain(void *ptr) { } } } else { - int event = nat->pollData[i].revents; - int flags = (event & POLLIN ? DBUS_WATCH_READABLE : 0) | - (event & POLLOUT ? DBUS_WATCH_WRITABLE : 0); - dbus_watch_handle(nat->watchData[i], event); - nat->pollData[i].revents = 0; - // can only do one - it may have caused a 'remove' - break; + short events = nat->pollData[i].revents; + unsigned int flags = unix_events_to_dbus_flags(events); + dbus_watch_handle(nat->watchData[i], flags); + nat->pollData[i].revents = 0; + // can only do one - it may have caused a 'remove' + break; } } while (dbus_connection_dispatch(nat->conn) == diff --git a/core/jni/android_text_format_Time.cpp b/core/jni/android_text_format_Time.cpp index 923e1aa05cc8..98f4e035c0c9 100644 --- a/core/jni/android_text_format_Time.cpp +++ b/core/jni/android_text_format_Time.cpp @@ -23,7 +23,7 @@ #include "jni.h" #include "utils/misc.h" #include "android_runtime/AndroidRuntime.h" -#include +#include "TimeUtils.h" #include #include @@ -44,6 +44,7 @@ static jfieldID g_timezoneField = 0; static jfieldID g_shortMonthsField = 0; static jfieldID g_longMonthsField = 0; +static jfieldID g_longStandaloneMonthsField = 0; static jfieldID g_shortWeekdaysField = 0; static jfieldID g_longWeekdaysField = 0; static jfieldID g_timeOnlyFormatField = 0; @@ -193,6 +194,7 @@ static jstring android_text_format_Time_format(JNIEnv* env, jobject This, static jobject js_locale_previous = NULL; static struct strftime_locale locale; static jstring js_mon[12], js_month[12], js_wday[7], js_weekday[7]; + static jstring js_standalone_month[12]; static jstring js_X_fmt, js_x_fmt, js_c_fmt, js_am, js_pm, js_date_fmt; Time t; @@ -206,8 +208,10 @@ static jstring android_text_format_Time_format(JNIEnv* env, jobject This, for (int i = 0; i < 12; i++) { env->ReleaseStringUTFChars(js_mon[i], locale.mon[i]); env->ReleaseStringUTFChars(js_month[i], locale.month[i]); + env->ReleaseStringUTFChars(js_standalone_month[i], locale.standalone_month[i]); env->DeleteGlobalRef(js_mon[i]); env->DeleteGlobalRef(js_month[i]); + env->DeleteGlobalRef(js_standalone_month[i]); } for (int i = 0; i < 7; i++) { @@ -245,6 +249,12 @@ static jstring android_text_format_Time_format(JNIEnv* env, jobject This, locale.month[i] = env->GetStringUTFChars(js_month[i], NULL); } + ja = (jobjectArray) env->GetStaticObjectField(timeClass, g_longStandaloneMonthsField); + for (int i = 0; i < 12; i++) { + js_standalone_month[i] = (jstring) env->NewGlobalRef(env->GetObjectArrayElement(ja, i)); + locale.standalone_month[i] = env->GetStringUTFChars(js_standalone_month[i], NULL); + } + ja = (jobjectArray) env->GetStaticObjectField(timeClass, g_shortWeekdaysField); for (int i = 0; i < 7; i++) { js_wday[i] = (jstring) env->NewGlobalRef(env->GetObjectArrayElement(ja, i)); @@ -639,6 +649,7 @@ int register_android_text_format_Time(JNIEnv* env) g_shortMonthsField = env->GetStaticFieldID(timeClass, "sShortMonths", "[Ljava/lang/String;"); g_longMonthsField = env->GetStaticFieldID(timeClass, "sLongMonths", "[Ljava/lang/String;"); + g_longStandaloneMonthsField = env->GetStaticFieldID(timeClass, "sLongStandaloneMonths", "[Ljava/lang/String;"); g_shortWeekdaysField = env->GetStaticFieldID(timeClass, "sShortWeekdays", "[Ljava/lang/String;"); g_longWeekdaysField = env->GetStaticFieldID(timeClass, "sLongWeekdays", "[Ljava/lang/String;"); g_timeOnlyFormatField = env->GetStaticFieldID(timeClass, "sTimeOnlyFormat", "Ljava/lang/String;"); diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp index d147bcc883c2..2d90ba49aecc 100644 --- a/core/jni/android_util_AssetManager.cpp +++ b/core/jni/android_util_AssetManager.cpp @@ -535,7 +535,7 @@ static void android_content_AssetManager_setConfiguration(JNIEnv* env, jobject c jint keyboard, jint keyboardHidden, jint navigation, jint screenWidth, jint screenHeight, - jint sdkVersion) + jint screenLayout, jint sdkVersion) { AssetManager* am = assetManagerForJavaObject(env, clazz); if (am == NULL) { @@ -557,6 +557,7 @@ static void android_content_AssetManager_setConfiguration(JNIEnv* env, jobject c config.navigation = (uint8_t)navigation; config.screenWidth = (uint16_t)screenWidth; config.screenHeight = (uint16_t)screenHeight; + config.screenLayout = (uint8_t)screenLayout; config.sdkVersion = (uint16_t)sdkVersion; config.minorVersion = 0; am->setConfiguration(config, locale8); @@ -1567,7 +1568,7 @@ static JNINativeMethod gAssetManagerMethods[] = { (void*) android_content_AssetManager_setLocale }, { "getLocales", "()[Ljava/lang/String;", (void*) android_content_AssetManager_getLocales }, - { "setConfiguration", "(IILjava/lang/String;IIIIIIIII)V", + { "setConfiguration", "(IILjava/lang/String;IIIIIIIIII)V", (void*) android_content_AssetManager_setConfiguration }, { "getResourceIdentifier","(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", (void*) android_content_AssetManager_getResourceIdentifier }, diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp index d760feb3a3aa..aee0ed7f42f8 100644 --- a/core/jni/android_util_Process.cpp +++ b/core/jni/android_util_Process.cpp @@ -50,8 +50,6 @@ pid_t gettid() { return syscall(__NR_gettid);} #undef __KERNEL__ #endif -#define ENABLE_CGROUP_ERR_LOGGING 0 - /* * List of cgroup names which map to ANDROID_TGROUP_ values in Thread.h * and Process.java @@ -198,50 +196,82 @@ jint android_os_Process_getGidForName(JNIEnv* env, jobject clazz, jstring name) static int add_pid_to_cgroup(int pid, int grp) { - FILE *fp; + int fd; char path[255]; - int rc; + char text[64]; - sprintf(path, "/dev/cpuctl/%s/tasks", (cgroup_names[grp] ? cgroup_names[grp] : "")); + sprintf(path, "/dev/cpuctl/%s/tasks", + (cgroup_names[grp] ? cgroup_names[grp] : "")); - if (!(fp = fopen(path, "w"))) { -#if ENABLE_CGROUP_ERR_LOGGING - LOGW("Unable to open %s (%s)\n", path, strerror(errno)); -#endif - return -errno; + if ((fd = open(path, O_WRONLY)) < 0) + return -1; + + sprintf(text, "%d", pid); + if (write(fd, text, strlen(text)) < 0) { + close(fd); + return -1; } - rc = fprintf(fp, "%d", pid); - fclose(fp); + close(fd); + return 0; +} - if (rc < 0) { -#if ENABLE_CGROUP_ERR_LOGGING - LOGW("Unable to move pid %d to cgroup %s (%s)\n", pid, - (cgroup_names[grp] ? cgroup_names[grp] : ""), - strerror(errno)); -#endif +void android_os_Process_setThreadGroup(JNIEnv* env, jobject clazz, int pid, jint grp) +{ + if (grp > ANDROID_TGROUP_MAX || grp < 0) { + signalExceptionForGroupError(env, clazz, EINVAL); + return; } - return (rc < 0) ? errno : 0; + if (add_pid_to_cgroup(pid, grp)) { + // If the thread exited on us, don't generate an exception + if (errno != ESRCH && errno != ENOENT) + signalExceptionForGroupError(env, clazz, errno); + } } -void android_os_Process_setThreadGroup(JNIEnv* env, jobject clazz, int pid, jint grp) +void android_os_Process_setProcessGroup(JNIEnv* env, jobject clazz, int pid, jint grp) { + DIR *d; + FILE *fp; + char proc_path[255]; + struct dirent *de; + if (grp > ANDROID_TGROUP_MAX || grp < 0) { signalExceptionForGroupError(env, clazz, EINVAL); return; } - if (add_pid_to_cgroup(pid, grp)) - signalExceptionForGroupError(env, clazz, errno); + sprintf(proc_path, "/proc/%d/task", pid); + if (!(d = opendir(proc_path))) { + // If the process exited on us, don't generate an exception + if (errno != ENOENT) + signalExceptionForGroupError(env, clazz, errno); + return; + } + + while ((de = readdir(d))) { + if (de->d_name[0] == '.') + continue; + + if (add_pid_to_cgroup(atoi(de->d_name), grp)) { + // If the thread exited on us, ignore it and keep going + if (errno != ESRCH && errno != ENOENT) { + signalExceptionForGroupError(env, clazz, errno); + closedir(d); + return; + } + } + } + closedir(d); } void android_os_Process_setThreadPriority(JNIEnv* env, jobject clazz, jint pid, jint pri) { - if (pri == ANDROID_PRIORITY_BACKGROUND) { + if (pri >= ANDROID_PRIORITY_BACKGROUND) { add_pid_to_cgroup(pid, ANDROID_TGROUP_BG_NONINTERACT); - } else if (getpriority(PRIO_PROCESS, pid) == ANDROID_PRIORITY_BACKGROUND) { + } else if (getpriority(PRIO_PROCESS, pid) >= ANDROID_PRIORITY_BACKGROUND) { add_pid_to_cgroup(pid, ANDROID_TGROUP_DEFAULT); } @@ -466,7 +496,7 @@ void android_os_Process_readProcLines(JNIEnv* env, jobject clazz, jstring fileSt const String8& field = fields[i]; if (strncmp(p, field.string(), field.length()) == 0) { p += field.length(); - while (*p == ' ') p++; + while (*p == ' ' || *p == '\t') p++; char* num = p; while (*p >= '0' && *p <= '9') p++; skipToEol = *p != '\n'; @@ -820,6 +850,7 @@ static const JNINativeMethod methods[] = { {"setThreadPriority", "(I)V", (void*)android_os_Process_setCallingThreadPriority}, {"getThreadPriority", "(I)I", (void*)android_os_Process_getThreadPriority}, {"setThreadGroup", "(II)V", (void*)android_os_Process_setThreadGroup}, + {"setProcessGroup", "(II)V", (void*)android_os_Process_setProcessGroup}, {"setOomAdj", "(II)Z", (void*)android_os_Process_setOomAdj}, {"setArgV0", "(Ljava/lang/String;)V", (void*)android_os_Process_setArgV0}, {"setUid", "(I)I", (void*)android_os_Process_setUid}, diff --git a/core/jni/com_google_android_gles_jni_GLImpl.cpp b/core/jni/com_google_android_gles_jni_GLImpl.cpp index 11822e014d9c..89b1f96879e5 100644 --- a/core/jni/com_google_android_gles_jni_GLImpl.cpp +++ b/core/jni/com_google_android_gles_jni_GLImpl.cpp @@ -45,9 +45,11 @@ static jclass OOMEClass; static jclass UOEClass; static jclass IAEClass; static jclass AIOOBEClass; +static jclass G11ImplClass; static jmethodID getBasePointerID; static jmethodID getBaseArrayID; static jmethodID getBaseArrayOffsetID; +static jmethodID allowIndirectBuffersID; static jfieldID positionID; static jfieldID limitID; static jfieldID elementSizeShiftID; @@ -63,13 +65,17 @@ nativeClassInitBuffer(JNIEnv *_env) jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); + jclass g11impClassLocal = _env->FindClass("com/google/android/gles_jni/GLImpl"); + G11ImplClass = (jclass) _env->NewGlobalRef(g11impClassLocal); + getBasePointerID = _env->GetStaticMethodID(nioAccessClass, "getBasePointer", "(Ljava/nio/Buffer;)J"); getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); - + allowIndirectBuffersID = _env->GetStaticMethodID(g11impClassLocal, + "allowIndirectBuffers", "(Ljava/lang/String;)Z"); positionID = _env->GetFieldID(bufferClass, "position", "I"); limitID = _env->GetFieldID(bufferClass, "limit", "I"); elementSizeShiftID = @@ -119,6 +125,9 @@ getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining) *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer); + if (*array == NULL) { + return (void*) NULL; + } offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer); data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0); @@ -133,6 +142,45 @@ releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) commit ? 0 : JNI_ABORT); } +extern "C" { +extern char* __progname; +} + +static bool +allowIndirectBuffers(JNIEnv *_env) { + static jint sIndirectBufferCompatability; + if (sIndirectBufferCompatability == 0) { + jobject appName = _env->NewStringUTF(::__progname); + sIndirectBufferCompatability = _env->CallStaticBooleanMethod(G11ImplClass, allowIndirectBuffersID, appName) ? 2 : 1; + } + return sIndirectBufferCompatability == 2; +} + +static void * +getDirectBufferPointer(JNIEnv *_env, jobject buffer) { + if (!buffer) { + return NULL; + } + void* buf = _env->GetDirectBufferAddress(buffer); + if (buf) { + jint position = _env->GetIntField(buffer, positionID); + jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); + buf = ((char*) buf) + (position << elementSizeShift); + } else { + if (allowIndirectBuffers(_env)) { + jarray array = 0; + jint remaining; + buf = getPointer(_env, buffer, &array, &remaining); + if (array) { + releasePointer(_env, array, buf, 0); + } + } else { + _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); + } + } + return buf; +} + static int getNumCompressedTextureFormats() { int numCompressedTextureFormats = 0; @@ -305,9 +353,8 @@ android_glColorPointerBounds__IIILjava_nio_Buffer_2I GLvoid *pointer = (GLvoid *) 0; if (pointer_buf) { - pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf); + pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); if ( ! pointer ) { - _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); return; } } @@ -2779,9 +2826,8 @@ android_glNormalPointerBounds__IILjava_nio_Buffer_2I GLvoid *pointer = (GLvoid *) 0; if (pointer_buf) { - pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf); + pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); if ( ! pointer ) { - _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); return; } } @@ -3034,9 +3080,8 @@ android_glTexCoordPointerBounds__IIILjava_nio_Buffer_2I GLvoid *pointer = (GLvoid *) 0; if (pointer_buf) { - pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf); + pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); if ( ! pointer ) { - _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); return; } } @@ -3392,9 +3437,8 @@ android_glVertexPointerBounds__IIILjava_nio_Buffer_2I GLvoid *pointer = (GLvoid *) 0; if (pointer_buf) { - pointer = (GLvoid *) _env->GetDirectBufferAddress(pointer_buf); + pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); if ( ! pointer ) { - _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); return; } } diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index bff6b9dfda5e..599360f06244 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -175,6 +175,22 @@ android:label="@string/permlab_writeDictionary" android:description="@string/permdesc_writeDictionary" /> + + + + + + @@ -220,12 +236,6 @@ android:label="@string/permlab_installLocationProvider" android:description="@string/permdesc_installLocationProvider" /> - - - @@ -388,12 +398,12 @@ android:label="@string/permgrouplab_storage" android:description="@string/permgroupdesc_storage" /> - - + + android:protectionLevel="dangerous" /> @@ -650,6 +660,13 @@ android:description="@string/permdesc_changeWifiState" android:label="@string/permlab_changeWifiState" /> + + + - - - - - - - - - + + + + + + + @@ -988,6 +1000,7 @@ android:hasCode="false" android:label="@string/android_system_label" android:allowClearUserData="false" + android:backupAgent="com.android.internal.backup.SystemBackupAgent" android:icon="@drawable/ic_launcher_android"> + + + diff --git a/core/res/res/anim/slide_out_down.xml b/core/res/res/anim/slide_out_down.xml new file mode 100644 index 000000000000..9b8d5b7919a2 --- /dev/null +++ b/core/res/res/anim/slide_out_down.xml @@ -0,0 +1,23 @@ + + + + diff --git a/core/res/res/drawable/call_contact.png b/core/res/res/drawable/call_contact.png new file mode 100644 index 0000000000000000000000000000000000000000..1abeb5da3bcb26f167a8fc5fba79710405e5feb4 GIT binary patch literal 1025 zcmV+c1pfPpP)=llQvJcb29K>x!M`lIDydc5OsU=`2`ECgnS?E}Cg zp#92D>shn|(~8GQycT#cfN?%kKzV$-;R^xOGe&b5*9td+{BCrne`||@8(9h-yaCx; zkY>@~fry1rz*n?&1d1fl9SB@DUgCo`(Tn#)TRVu+4-jyus)QWy0i6`lQ;;_f=J*e6 z90TDw7}L(0b3Q78K|BGW|l1?2Ppgm}GAbiapl>SgS&!qux)gM6k^tz#u_a~ZqP z#l^3%4tuGmVPZgsjjlgHzG2C+5bw1aJJXpkivtfQtyexZ__o!KVH&cOH0-UeI;8C9vGH9Rcc~qzTU3#w(PT7NcpE=`sm@gUd$ zzk8!Cr%BjIpY+wF$iqN_i$P?N%Vx*cq?9nC^%9w8p06f>V{=k@H@;PG*pe&^~v=U566F_23Us9hkuP-%}HZY>4F+>=dC z7?LOCkeUiPO}efEsaBoSb(HkwQjkuoL|RVqbZm2%v$Ye6i{GyVW%KJrPAaZHA6y?DOhCq@+f{@i}hFxZN7v`8)|hCmCQi(rVBcPbTany zIJE5!NEtQ?5orubHv>+b#HEPNRwA*_O-~xJ_+_$|{DgT6KDtmA#7(@#osc0W4B`lL z6kfWHtfpC1sGHKJ66S089*C28r3!Of4qWd>nFcCg0y3380sqx;5!e4x%d3LS8d9m^ zHEBg`#l<0!nH@_cQ}l%J;Yr52>f5gMcgj>dr4q}uXJxp zeD5c24Yb4eSe(W6oO#ZE-rGqW;T(})57FrF(SDcWUQXIhvHXwy{L?#Pc5d*BiifA{GjQ3KH-ch)PVrs8RD0 z^M3E{_#gN$91oLSb>QR9%-*@@anIwfUteGE6}Za4dTBGGKfw<$3bOJ&C<2Q~Ip}PXvI2q_p*7$ZI1FBi>p(Xc1CwML%z#-k$8iL_1CMBVBRJd8 z(BKymya`+ft0=IG3uKl1g$3N_6s=6rrG6%(ajfLd?{!vByJs{3jRtpqQ*pEKM? zk7K0n?Q>)dlIPF#MlHAIinUlQI8Whk!7qLga8a$TxU&;OI4ZqgC!M%l|D z@RgSKFb>ib5YeTcStG%D%fSH%FA|M5g6-Vb31ignEmuka3$tZC`Ic+^?lCFix{vHyt_kMJHm-NTCaDxiYD));g*K+H0s>vD^Atw!*KnnSR zM0s1jVvlkt3O=;&5kOm51*g=yS&|4%Rf=d`K)0s7|G1bkOTi+weon_t7!y2^O8&_E zziW;eP;82jYo&p+I8cG$qEj^906v*WA0y5>`E3cmaf+syrX@uf@4?B>}HSE>q+&*<)Cdbu@S zAWO~Y3fVh%vJ?i&a*rpCNhLhVclH`(I!&4$kWt@8s%f-_OqqUTNu+`-Qk^PL?(|f& z`YK)YsMqu90XZnN2Nc?@0wGi`4UMZLJyy_VjxtuGq{+z3Vt{q?KU6CO4(973;a_wb y>BnDq*stb+t=R1E2s1;DvE2|lQ)toO0t^6IbVyI>!aGR-0000 - - - - - - - - - - - - - diff --git a/core/res/res/drawable/progress_circular_background.png b/core/res/res/drawable/progress_circular_background.png deleted file mode 100644 index 7c637fd602d9ccebe8ba3d86f3f27b2abe103a0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2044 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq zxP?HN@zUM8KR`8tC9V-A5xzcF$@#f@i7EL>sd^Q;1q?R!6$OdO*{LN8NvY|XdA3Rl z3JOXJnJKnP;ikR@z6H*y8JQkcMXAA6ej&+K*~ykEO7?bKHWgMt&AF*1i3%0DIeEoa z6}C!XGp&GZkg&dz0$52&wylyQ$TEcp-v9;Y{GwC^6Fo!SWCLRp1rswpBXc85b2A-< z;KULIuf#kBBXb2K0|OvoWMyb*Wnu_)3>YZcaRF(YqLehNAQv~Noj{(gQbtKhft9{~ zd3m{Bxv^e;QM$gNrKP35fswwEkuFe$ZgFK^Nn(X=Ua>O75STeGsl~}fnFS@8`FRQ; za}$&DOG|8(lt3220n~Ge1#pYcSYnr%o0y)eUyzq>qmK~8>pqC9fyn}x zEcM~(66SPxRMLcj2zQzo4>6RMmdu~6um@OTh=K|SaH0iehmg$NR0eZ>LnD0y^Q%WQ zVt@){KnjBM(@M${i&7b|B$@Nsp%Z zPed=^y)Mb@{QLL8KNSKD<%02j8QWC!cLdElz|Hk6FrnwoJaN<8@(S0=REyZ=9GK(4 zP;>O{YyLF`ZxeMK?4sTnq;c7>UCQCJar9Yzl)-{6jjuNSfT{q~?o<0@AD9=UzTuv} zeuCzGk>g?0#0(o8eOAVr9gmRD;Z)b?zu0lEk@1@h+aCw+iy?d~r>;CY&+&bI@*SUj zT+Cm>ZkT%LtUkDO(_a6Zzu6*LO(e8#|DGZ%^<}naYQsf=sGG5ycb(&WQ$Q1_!Pf9e6SIHwk14iB2exhs?zsIhUo`1U^`))d ztPV{R&D4t%QnL(=4v73^6Jn}uXFPqu{r^|tgjuX6+Z)-v7;RI;<+Xl`7Php^h^k>( zXT)SbafQ!pr!yWs7u-`BKX92p4Q~0NqioB}FYgZnJjL*Y7q#D%D1fvuEyfz7y75`e;fFj5rKi>?2>-tG@BPE`Qkow)Et7m+mlW*G5>UGO zYew06DV_;hd$pW$if$%LD+*qIv+4MOe_6F3m1YT?NS2=YV)r-6O@DTsWwG2DcYFEd dOO=0EC(K@c;7*RF3^1=Tc)I$ztaD0e0ssZ(s9OL4 diff --git a/core/res/res/drawable/progress_circular_background_small.png b/core/res/res/drawable/progress_circular_background_small.png deleted file mode 100644 index 6b8ba9b4390697c706251447167aa1c443b6c568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOR^Fxq;$IEGmCF1@N4bT~kO?LmJDn=5~S zjcej9=73fvp7I6r~lh zq+b=bFqUnYyF*64;%IS6hVlb8i)f>j&V92}{`H2rns|lpKIn5vW=W}(n)>G-Jm+kd%=rtM&jyHtC1ORtT# zGp~{~`=3vz(-`efTv%&)p~d6!*(=Z2aZXIL<~~uc7#y;^Yem=Vj88nD9~>;;J?vqe zpLqGaSNWx=>8FETcZU{Uzj7nL>zH2eZ_Q0{3(gkCNWFW!OKn!E;h`lmeDk}`-}$@v zrt!PTxn{ySn#+#oe`r`;6g;;*c#rz!Wiw|yX6iqkVzSX&Mr+mmt-rWuXfONXUGjq4 Y_MZ8(nT#u^0t1}E)78&qol`;+0PDHKrT_o{ diff --git a/core/res/res/drawable/progress_circular_indeterminate.png b/core/res/res/drawable/progress_circular_indeterminate.png deleted file mode 100644 index 125a264ca7d0cfdcecbba2f4aa8a805eb4a67369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2371 zcmcIkdstKF89yONQYZo{7M0>@gdrfDTnK>}ppbxxmZ%WHv``4i2}DRvNP zq84FO7%LYkh@zAt7v*A@;B1GN!I(u9q81917Fr(WWP&>ZirQz-_LtvtzU%Y*z3=<| zzW2Pj`?$L-%{Q9^0AR^svqI6CXzX}1bc`^0mV-{F%0LbekG3?t=qS2>OU~vi0l;FN zv19rlq(4V7Hmab5s)HdP(1nQ9Lm)z8VGoT|4lw*Ra)B@bR)Mi_oJ8hJ06~xdN<_Yd z2x*+jM46JV@g*$Tq@!!&F+>2D zAgTmkLV(d3craui$V3z{=;=Xn7ZNF+pr@AynMU@ZdF=qh1S)X1Kn9X&Ael%+2Qr;R zqI;6iV3r!e&m5f@3Xzx|$_ifbiSB#}@hX*^4nbF(5hvW$UqP2Oa&}ZAqpOXB>F91KUkuG)rcZN2{OYd3?uV3&`Yl``7leMg8hto zxT7D5%p-ZxiDWvF_~9%3WzetaA&5vK*1k@s@<=o~l}0CeuFzirtfme6Wm{u27?Q@)YKOWogy`DLST(nCkkS$Z?yKFIER1~R?t{)3+S z*zo;*0Rgdh)>y^fDPnsNG}gsB+TPDQG&3OH1|7%!1&cYIEbHz)Yw5vWdAVClCImyD zP28GdIGj7zex+4hdsX}Zm*>)wdagXW^T6OV?*gaFs$>&z(n}YoQ|cudTAUql_h#b6 z^pmm6`JI;@IZa9o2V&OaY_O5Ii=2DprXRXKFTsB5km$xarEArl%EV+}``VZF4j35>{dgP9_<`3|Ta{$Z4~I0ejOgo$hyd|M5zlC0hz`5MZmx z6YqgwL3&p9BrGZ9ZK>L*tG3eZ*&t>jd)Z80dDnEq3AtN8H` z#_Hg>K|X&s`YP`Jb@$rrl3RxY?ajf-PYhMG_eDG2?*X=1H5wY$eAd2rPl`M*%{lu8 z-#QHA7-c$AJ)w0?&fh&AlAit1Zz3{tbkq!Fk$`RKOZ@h`kTg5iI(;p6T6?X|xp)5! zotyrY`0#m|>tA^T;ErY$=SsmI969<=TKA(U_oggZf&f&=5p42W?k=0uCk0+(9$>cy)3-; zyd`TbC@K2c!Zm%;b@^BDIWS{9Q??mj=IGbjQN*1VyGUSXkmJzfWES{ck8Y+*~ z!Fjyys@wb0eFLMLZLx_4g7t>DVzcLmc{Qcm&A#0mdHbD6O1po?&Sy=BZfD!YFy<}_ z>-m6|#!k`qEtXvULM#c|IGFM0fKSPJ-#Ex?{PP!F%-VJhrP+R0xJ@0wBNsr`?oL#Ern1c{kNvw*Cji{;(>pc_Ap=gxKVtv=iT*=DImSKl^US;m|o+64eA4 zeN=#(bvc^j3gm-_*t#9DL2?XtJTBda%W6`l|~kUr4{{y5sue*?3HA z!I9CgF*WpEKLSk3mYdf!=HOFb>E4g~i`rlc(BpJ`H=|pflvdbj9lOM;}3?f`fdBK zr~0@hC~nY_ZRsDJml*wY+d`MCZCaDh+v$T{B~j+QKd6U1d* I42;S85Bfwn+a diff --git a/core/res/res/drawable/progress_large.xml b/core/res/res/drawable/progress_large.xml index 466910420e0f..4f016bcc2e83 100644 --- a/core/res/res/drawable/progress_large.xml +++ b/core/res/res/drawable/progress_large.xml @@ -1,45 +1,25 @@ - - - - - - - - - - - - - - - + diff --git a/core/java/android/app/IIntentSender.aidl b/core/res/res/drawable/progress_large_white.xml similarity index 61% rename from core/java/android/app/IIntentSender.aidl rename to core/res/res/drawable/progress_large_white.xml index 53e135ab1bb0..c690ed4e0e9a 100644 --- a/core/java/android/app/IIntentSender.aidl +++ b/core/res/res/drawable/progress_large_white.xml @@ -1,6 +1,8 @@ -/* //device/java/android/android/app/IActivityPendingResult.aidl + + + diff --git a/core/res/res/drawable/progress_medium.xml b/core/res/res/drawable/progress_medium.xml index 92aebb51a512..eb1bd50d17d7 100644 --- a/core/res/res/drawable/progress_medium.xml +++ b/core/res/res/drawable/progress_medium.xml @@ -1,43 +1,25 @@ - - - - - - - - - - - - - + diff --git a/core/res/res/drawable/progress_indeterminate.xml b/core/res/res/drawable/progress_medium_white.xml similarity index 54% rename from core/res/res/drawable/progress_indeterminate.xml rename to core/res/res/drawable/progress_medium_white.xml index 1bf715e51269..b4f9b318a902 100644 --- a/core/res/res/drawable/progress_indeterminate.xml +++ b/core/res/res/drawable/progress_medium_white.xml @@ -1,8 +1,8 @@ - - - - - - - + diff --git a/core/res/res/drawable/progress_small.xml b/core/res/res/drawable/progress_small.xml index e5b0021d59cf..e0ee5e47d830 100644 --- a/core/res/res/drawable/progress_small.xml +++ b/core/res/res/drawable/progress_small.xml @@ -1,45 +1,25 @@ - - - - - - - - - - - - - - - + diff --git a/core/res/res/drawable/progress_small_titlebar.xml b/core/res/res/drawable/progress_small_titlebar.xml index cf8e41cb373d..8cfba864b5b2 100644 --- a/core/res/res/drawable/progress_small_titlebar.xml +++ b/core/res/res/drawable/progress_small_titlebar.xml @@ -1,45 +1,25 @@ - - - - - - - - - - - - - - - + diff --git a/core/java/android/app/IIntentReceiver.aidl b/core/res/res/drawable/progress_small_white.xml old mode 100755 new mode 100644 similarity index 52% rename from core/java/android/app/IIntentReceiver.aidl rename to core/res/res/drawable/progress_small_white.xml index 5f5d0eb133e5..8cfba864b5b2 --- a/core/java/android/app/IIntentReceiver.aidl +++ b/core/res/res/drawable/progress_small_white.xml @@ -1,6 +1,8 @@ + + + diff --git a/core/res/res/drawable/rate_star_big_half.png b/core/res/res/drawable/rate_star_big_half.png index e73ca799b398845d84d09bf9f518f28e678998f3..9762292a40a6cf6c00256a056f7aa9f3e5574377 100644 GIT binary patch delta 795 zcmV+$1LXY339<%|B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0008i zNklZXjZOF{|*<%MQ|zI`K&FXXhc-pnT6e1 z9}%ItkKj()23&|iXiA|JZFNjal{7Qg@6OzqN5{@h=i1D|1Akv`X9&qJ-#zEtGu0Sl zuU`Z9O1ys4!({<7V1)F%MWdM|L0OPKO2L`r3)^^LGPoEeF*wwdMhD_q3Kk5PV z;#xqJTMmwey??m2E3oVDwG@L}5OvBScI}$xc8H@Lq_FVjnSl;LDWO>Jdk@b&I_K~a zb)j`=L#*{&E?0L2JAGG+9UG-oB#M4SmQIN;PWAIEM;08xc8V3K(SqgR0Ot27$X|>t zqQyD7m$2dXGFpdzLaY@5Yv6%1zpbjETswaea0Z-PTA*@cQ`uI!LP;G-#Ywv$@WoXHU{x6?>9g|X6w`zI zlx$@~)_>NZ>>J@oLP4iLpme%8^U#`9RX7$`3Kk4wd{)%QWFJ(dwlZ?ip6eAwR7?`y z9Semp26c|mJu;EftDmI7jwo{s73t`hX%Ky1v80<#8b@k>5aV>%#W6Kt{1L79UhNCf z*G19|gC5}W{_HKLiyW$m=gOp)%5(+8bekDD-haN{_(rr=CEEH$)3_X;y=?=vLX6BM z0CM+EI#i-mWxCG%XcgJvqx6_h8tcnM7$jd=KzUY`tiree9PYUN#BJtx-%4!b>St@~ z_)#+TI?qb|l%Sa5ivUcDEsn}mrYqRmvbCIjbB9fP=@9_rxmN*TS|-o5|Nn#SGkyy& Z02ETyA=uXq1V#V=002ovPDHLkV1hD0cqIS; delta 1204 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 delta 2003 zcmV;^2Q2vD2jLHpB!32COGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA z00(qQO+^RT0v!hgA;&-~9{>OcZb?KzR9M5!mw${@R~5%UyL-Vqu-$!AcH0@;E;}t- z9H7V|2&`?BrKO4Mk3^7v=sz0L#2C}2wK1kvBqsV-(L{^Uh=0Fg+W+*A*5V%sq|{D9 z2`peb;H>Nl$c*g3d%L{yj@!$uf4no(M`WoBP2nYX-jBKO-p~D>bI&;sKDZ;T?Y25z z2Bx&Ve7itxQJ_HE6!7Tn0QM>{_4V&=d1G+X+IaB))w650MmtG6r_FwzJRBOIT zu%`e9H?18?w}0C9v}fDbZCX2&{O^{kb=coIerjsZ)TyaGQ-}Q*#}lfpycLQ)1+Z>Y z-%;z)1`_jlwykdFMZg zt37G0jeph+^atsTZ5rIXE}LJIzCZS{n%K@4kX3 zA}I-F(RIZ7BQV&cxo#(hvz}+G{R4eLHj`~yyS~4D#RK_{Tu-hGEU|+NAViea(F1(S zK!6Z6%$O#FC5ags zk%^G8^B@-mH{sZ}e*aKqSXKi6(XjGs;N2FDWpjZGz!hNS$l)L(A;nx@x>E$)qyuMY zsyPe}jQJlBt^rqnh6oZmq6r8?K_(ndVA~f8#pYo_RD|FfePj!x#(Aq6Ra%driZ$ z-n$lD&EhT#ZW2TsMqt~G*AKF0bGmLO|^I(OzL$-;TDF0>pZ-> zTzc$Fxp^@d7z`M5mD#SPn8QFVhH?(fq+#1<_9vl!1iYm_eirc6thKsg)4`R272!qK zY37(y%RZG(TLa8?YD&Q>OkKJ9b>pZRT+K1720we|@W~T};Qj>E0Zs1z(tqM|QdzDl zd+J~pfPd;L4(dx}@3HaB#>TBtQ6xhMjaXJcW5Al&Nfr-e>v{h4G*Hu47fHC9?$QMS z{a?;@TP&Ew^iE<(C%l)oVsNQ@oQoG@t&s0ax9U7?*Mpj_>`B6PX|MCv*t_EE1c(C( zV}!^_Tv-@tjA|`dV;c*|Eq~`uouflt<(g2}tH&!#N99jjGUI zhOklv;G;KF^M4#*@j%wb(OZZ@@B<;J3K9S=0tbaxM$VK+d>>M3Vt)v#f*%M`5Z{Zy z;#JvNqAI@O(s}_vW}$8Ox@D{5ZCuYcwDwrc9}ZbY%=y0eD;kcAS)D*0nkwBxHs&MHt^wL1m84txYy z1Kb;oO7HW7Z$+`dyLMXg?#c9Dwbxmk_}pi!T3uYw>jP zK(GL)r<8vH`++m6ShGTQ>1SR~@z24c@5O*8Hf+szTf-dd*?%(<$P!)rzL}cxY2XL> zHQqr|c6M=JWf3q({~Og3<+LXKs+y)rmFU#Ucp0!N@uhWn-4nS|`G_AC4+U$0XSA}I z5!fd+B_)qh;ENDA*-cY;GL$xEshQ;8Nfd^|+WgR_S;%0yDs4z-QI0RW;oO zh55IF`3g0es7$QqDo`D+6Sx!T(`Sc(Kd9<%reL#m!25u1o$#Fm)CIklYYcAG?02Yx l->q#9a5?c|J2oBIe*p~7k0zpHXQ%)G002ovPDHLkV1kF}xikO( diff --git a/core/res/res/drawable/search_dropdown_background.9.png b/core/res/res/drawable/search_dropdown_background.9.png old mode 100755 new mode 100644 index a6923b7c01363d780ffd82c30f94562ddc2eb458..804260afa97f71f3ebfbf89d9ef14eae02093a07 GIT binary patch literal 3058 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0003UNkl`|&q4rIRqdN3mu2~JguM4pO`xJEo{!LCvAAmj&FAxb03;E| zvGd+9bw=L%WgN#25W(_+b8eF7`Kk`c^L*u;n*akz9H2fhjG}0iW!ZGSUO!0EX0v(B zvTPbf(FhmQs6 zvD4qZ^?*y@0w{s+P^>x_XQw{lzgOPo{v_GY0I;F9oIHsBJpcdz07*qoM6N<$f+KjT A+W-In delta 216 zcmew){*=+7Gr-TCmrII^fq{Y7)59eQNQ2m19Be?c*XaCSAjMc5{h2{NU zONI$SNzW|~2r%vauDW8?W4G${bDBC9gfGz7wErqSbP0l+XkKF~&|y diff --git a/core/res/res/drawable/search_dropdown_background_apps.9.png b/core/res/res/drawable/search_dropdown_background_apps.9.png deleted file mode 100644 index 56b697d97b8e738ffa2aed8fc1c8dc4f5e87eb9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmV;N0b~A&P)H&&`nyp=%OtsB%oMGlm0}f-wP8cG9xpje()kQ^UgDW-;9iN zZs`VNjO?6g`(7Q$q<4!*D$Ks55t6_hh(@jkiV$ z+a$G&;fi|Rb=^S+(6;R!eiQglUDwY#@TO^A;5UKq@;qPaz_Tp7hhM&ax}kkh%zWRE zX!fssAkYpU{1OIN!OuxoQ54-)RrMwVqaN+>!7t?~;MlH9(%kdBMVh8}MNvEgT9)M# z%BV-X@Yyns>fyp?DmwbOuvj|jg7isxC#^{voGA`e#&HJD>Tv8x+TzlR?fMdB4Dca* zMo(@(qp*rI(gdkZ`WAzBe-lFs{$Jq?{dII9swd=EfB^vP;RTt9xj$n70000 + + diff --git a/core/res/res/drawable/spinner_black_16.png b/core/res/res/drawable/spinner_black_16.png new file mode 100644 index 0000000000000000000000000000000000000000..5ee33cea6fa7d1672d9ad3661782f873b3a02468 GIT binary patch literal 291 zcmV+;0o?wHP)9C6gx9hi7)mC6?hVngrEhrV4Qhc^Y+x pqN(OWm`}>;*G99VY0BTae*xyid7D(8jXeMW002ovPDHLkV1h)RcuD{O literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/spinner_black_20.png b/core/res/res/drawable/spinner_black_20.png new file mode 100755 index 0000000000000000000000000000000000000000..e55b60dc6cce81d2390bb2bfb06fcfdbd85c38bc GIT binary patch literal 523 zcmV+m0`&cfP)?Xck zX;t}Fh7H@4x*5zjakS+AVlic{DXF;Wg%g7<0rvvtWW2*sux?hN+;HtEUZlBvHBxcY z(}{;=Vn$eI+fdJmEd{Y+(J5O}aY6KuPPsk}-+=*DWzyQ4$%to<#?Mwgw N002ovPDHLkV1ffs>jMA) literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/spinner_black_48.png b/core/res/res/drawable/spinner_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..3a681926b537f4fbf5d2f423dc724d03490be0ca GIT binary patch literal 1022 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 N!PC{xWt~$(69Dz#nnC~o diff --git a/core/res/res/drawable/spinner_white_48.png b/core/res/res/drawable/spinner_white_48.png new file mode 100644 index 0000000000000000000000000000000000000000..d25a33e2453482616501841bc67f721e9dea35ce GIT binary patch literal 782 zcmV+p1M&QcP)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;lu1NER9M69n7>ckKorMwN@C(b;>ZpNb!nw$s9J^!r4mA=Vq)#ahQv~dN^Fd% zQwA0mcIN(@-#$N|FZV0v>`S)#F~kq&`?mN`k$2i zlk^l8U=$bw2l0`;HwtjW_rtg3Edcg#k1t+CovNRu)hX(c$A~gZ_yN~=AafDFapKL8 zgu?2|bGSVKoU*))Soy`3z=-2u%9oZ}0A8L42XW%hZUZ5ZIPzs(2orFw$!m!4%aAW^ ztO2a?SGH&+pIGv84mIG^k-x`YD}Zong5yvF&haaHiR?M#G^Kg`luLEp>u|}W zEl4Rve`6)%h~~5C1W2g#2A)dx7kT_e&3sq^zTy&R_=IDd-%*$<0~6kgvI_8>0JSZ# zz(K^A_c1e4l>wKQ%{l{yPOAO~gaOPTf9RgHn}S@Y>3mmdda$!X8~9qqkP1H8YO9bR z2h^gbvgu}9Zgxb@t?0L&gR`UQ?b++%la*REGxMxam7{7^!iI zkgN|lwit2Hk5NVQTxbYk2QTd~?mnFP0kHBS=0-NQ`J+sfVxk_yg~^rcq${TQc5CT0_9iN)2~80F~lYj zud!+#V}|73h07yf#1$k}DQfqce&kOH)`J6D;X+%GENpwNw#=Q{KO{_^xrU-s)&Kwi M07*qoM6N<$f-`V&hyVZp literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/spinner_white_76.png b/core/res/res/drawable/spinner_white_76.png new file mode 100644 index 0000000000000000000000000000000000000000..f53e8ffdb193c4e3f49c599956f043649e508e5b GIT binary patch literal 3745 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 LNkvXXu0mjfTl@Bl literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/stat_ecb_mode.png b/core/res/res/drawable/stat_ecb_mode.png new file mode 100644 index 0000000000000000000000000000000000000000..a948770f7dfd182ec5055c26c0a76b6518c215d1 GIT binary patch literal 625 zcmV-%0*?KOP)Px#24YJ`L;zX!Mz=+e7He>NbZG-_yJ^^UO2M zyfebyyFI;Ht+I#+1OkXIm+LJHicY74jRl7dz-GIDk01zBfu?EqE)Yc#06W0Jhl9BZ z&0kHD$)u5o*TTrMjN9#II2@AC=gEG`GRte4Mz`B#|NTDYa`{#OaPi}UVzFpU9F0dt zI}{3$NF*p0iX47CB)k?T9*;8`jmUq^n|RSK5|78(dA(y6^!h#O^}4a>&CQL`-gv%& zs;ZG zW|y$>IZwCcZW%s$)kuLb^h%oYp=7xvM4JRbf4658J9%&5Ol00000 LNkvXXu0mjfL#hVf literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/stat_sys_data_dormant_1xrtt.png b/core/res/res/drawable/stat_sys_data_dormant_1xrtt.png new file mode 100755 index 0000000000000000000000000000000000000000..11c2eaebb1ab1613278bffa3ddeb6b996e69c1e6 GIT binary patch literal 1081 zcmV-91jhS`P)P000>X1^@s6#OZ}&00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXM# z3<4u3EEV(s00X&6L_t(Y$K96CZyQAv$3OeSX4XlXb)1B?S`e-T)FlG7hmas3s255l z4peG#$^nT}IYp893s4XI4HZ3ABsr8qFKt1hm5^LGRH`7_mWD>ONo}b~Z6~pJ?48}^ zu*CTthijj-dZU@A`M&pk-QA}GO48K1-Qdz2eBb6K!2qcmNdsF;w_u5|-el6VI z4a8g@q|@oCY+u$%+i8RlNF@>G0lbuyE9F6{!lD~%P1ph=S;2w3q~FbsoKDuoDzvlm_Z_KC5vvDSETaglPl%)-I~HLr&BBvQto z@B491hB)M@Io@G#co-jvxB8uSCT_`lczf&eYhD3*%{08ug5 zo9PO}kVGQUmUGYdKtcXkK5`r3HZst4eBW>NWPE&lOOMuL zkYIIL=lN%JBVru7M92$-+%fiVz_`Xjfk!UHXoh>gdp7JQ% zDQH{Ng^J5wU0uaAO{&%EmW`yhA>00!`zb#!x7OC@J>|t7FIMYz30qy(qHWuUi%*JM z0ybMdpT~7w9{=;WeR*n^b8=$f#22~ObC)o2icgBTb1tsyV*VG>)01Xo3hYiLh-)b_!jQRA ziC3RK<aq?%A}}#EgG_IRuPhm*Y4p z+nY6JAI<_`ga$o*J#=<-f)){~h-T2FQhvsYS0||%Xu1xjLH@No#ie3UDwWKALC$`5 z_Vmetlb1-~{NEo3&-Y61pYG>ZzQ1yv7s~zxG4jra&x<}u00000NkvXXu0mjfspRTf literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/stat_sys_data_dormant_evdo.png b/core/res/res/drawable/stat_sys_data_dormant_evdo.png new file mode 100755 index 0000000000000000000000000000000000000000..811fcb56f8ae74837d6b31f96bcb904d3c57e87e GIT binary patch literal 1008 zcmVP000>X1^@s6#OZ}&00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXM# z3<4)0LDB6100VGIL_t(Y$K8})Xj^p@$3MxvEx+3|>rK**gcY%Zx?oT?L|0KKd(hch z$NEsg!eFwe3BDA3@LBpgR`#TX!Jz8;Fz3c#n}Qn%6_Jgh<#sNv51YGzl_hQ3{C-V- zxz~qmP1F2Yr*AtizjN+6zxzGsd(Qd6(;|UK%HW%WpXC?xlS-?QK%h`;`836<-D`g_ z`^)T9GZ6EU5{X2PCHfM`38s0}F7 z-%MA*#>VTuuP3B8*{v~ZbSb48GOqifhQe~8R@uYY!g2vLxHh=PuM`GyLu_GpA=5`)G^PNYv3Kr34M>uhUIS&dD67ODtg_ zOc8I~_*Vyg1Wo($Uqore_1~`t>gckih$!@c9S9LHobiQ_n1L(xszxhu8ngMsG< zPGS;w@3=S_2gh+RABIGu5%%tVo1>o|rBbP&%bEwd9Jg=(&D@O}{CxQ`!nQF*M*~Qp zRU$+05Bbh5hlR{S_1Up)CMG6Gy_DjIvu6pKCjC7tP}J>Q+e#D)!!rO_U0tQ5 zOK7bbc;Q9jecO5cm6wU9Qe^(R$?VlDsPY=D`D|W=)|DuQ5Q3sA0?<)0F#`s%-WXp_ zPEzqaT-Rm(*IBOo_!D=Xc|@0>Xl{6F9yeX_c>HdnH?d>x)*JwaXAtd+(jDrCfRCqr zN|h4%+| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sfO;$E`6PbNneb<0OKRsO>Lo80e zopP4TF;L)m{qzYnlY_jx<{dcH*4yi{#)d65`zd42-mdK*n9Rhkb$yz6XzR@A$?t6K z#5Ng}W}U15_uRhtnGgHFZ^mMbIgy;g7r(o#;G5IHd*R2HSxZ8Srlc|#>TgOtkpF(p z$6ZlzKYbUl>7>S2e)Uqk`e5TBcCPb#ltO~pH*xW6?fLy?;iWE{qL=R8M~l@KZd01Z z+xhLl1#cBDnU)*IDyvV$ + + + + + diff --git a/core/res/res/drawable/stat_sys_roaming_cdma_flash_anim0.png b/core/res/res/drawable/stat_sys_roaming_cdma_flash_anim0.png new file mode 100755 index 0000000000000000000000000000000000000000..d62502dcb78d27ddc91b8c97804b425dbc74d302 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9R!3HG1hpsgQQjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sfO;!$e5&e?JJ%K| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sfO;$E`6PbNneb<0OKRsO>Lo80e zopP4TF;L)m{qzYnlY_jx<{dcH*4yi{#)d65`zd42-mdK*n9Rhkb$yz6XzR@A$?t6K z#5Ng}W}U15_uRhtnGgHFZ^mMbIgy;g7r(o#;G5IHd*R2HSxZ8Srlc|#>TgOtkpF(p z$6ZlzKYbUl>7>S2e)Uqk`e5TBcCPb#ltO~pH*xW6?fLy?;iWE{qL=R8M~l@KZd01Z z+xhLl1#cBDnU)*IDyvV$P000>X1^@s6#OZ}&00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOV; z3=Jv!2YieG00KQpL_t(Y$K92`s^UNt#=ne4EF`EHP zX~lFp4MGSw=dqHTrU}C^u;1^o+wE|xA1)*R}jV+2q74aM(FqZu`2O>ADnY!G8r(&z!-~$1kZ6o2q9s2A&Q~^04Sxg zAfD#|066EMl)eplq!QbyZcMoBs(Lk+M z!)mpgy+PGSHx=8q1SuU3_O%sme$i;Cq zMNzJLq5wdtRQgpY6u#{D``EW|5UQ%eFbtedr{9Oe;j8RPyWM`SR;xdf$z<^({_&pY j{aLTq&*SkJpDX?XUfn#o9SX>100000NkvXXu0mjf{6#T; literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/stat_sys_signal_cdma_1.png b/core/res/res/drawable/stat_sys_signal_cdma_1.png new file mode 100755 index 0000000000000000000000000000000000000000..f4839d4954fea0a9d07718b2ede327e602821b13 GIT binary patch literal 714 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 Hu0mjf4RZ!^ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/stat_sys_signal_evdo_0.png b/core/res/res/drawable/stat_sys_signal_evdo_0.png new file mode 100755 index 0000000000000000000000000000000000000000..1b8aec7cfc806ba03a968847cf54c9eb1b765cac GIT binary patch literal 912 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 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/stat_sys_signal_evdo_4.png b/core/res/res/drawable/stat_sys_signal_evdo_4.png new file mode 100755 index 0000000000000000000000000000000000000000..f0537ddd847259fb001ecc916ac8d0af87447aaa GIT binary patch literal 823 zcmV-71IYY|P)P000>X1^@s6#OZ}&00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXM% z2Qm=h=4E>T00Os3L_t(Y$Gw!nOB+EH#(z7zf#gsykU+IPc@&|y5~T+bti)iX9xPQ* zTGM}_m)y)>P_Io|5K?Lm9ts}Bi=`65UUT-;Y7c>kIqbMQ+3g|S&2ExvB5fZGv-8cH z_r34U+tH?;OmSJiL@G&?D3T#&Bg#l(gzDESH<=NS#~DqIy77@X(P*?yW(+V(N#nAC zRMG+Tn@F_P7puggF?V5cf#qk*Jr227Ig0O#{x=X>o6-c}^xLU_MhJ15OeWtPA0K}K zFuaX^1jE?u>?{DbZPREp9^1D42^a-1q>>;z&TFe{9cmR0WJ)uTR(tK0Z)0PF>FH^z z)hfke5h>+;Ul|Id>adhQmMQO)LALSWo>USk!)q_WR4V1qj^p6EZl`=w%ASn<0IIE~ zdDZMF`|aDjYJ!4`#syMIgb?0+VB0pfZFjn>yIh%UCQKSA&-%-CaQY-7!wL3~pg;z^ z_CN234rHEYsO(l)dA`EZ;*zhTvReTOv3oIEq7^!0SyqTdn5GE|O7BX2yQX0_DD9Nk ze!J~sTZJt)UvDz;XadtTLjn6K(OlPMW@g5XL?Q#X>%qYRLI@nkVSaudfWyN>e}8Un z4%@alIy%z)id&Wy>W14ac*&M!_3U?-%kbn4L((0vAEs2Ndj!Ds_4OY|KA-30c$OjeSof5)aPK&idAP7>h(AjE|2~uh)N^pPxVU z%aux{a+8yj9}L5|&tEX5)X!S2mJ2EQ*CzN6_6vc5LCb_#%>4iW002ovPDHLkV1hK| BdRhPg literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/stat_sys_vp_phone_call_bluetooth.png b/core/res/res/drawable/stat_sys_vp_phone_call_bluetooth.png new file mode 100644 index 0000000000000000000000000000000000000000..7abfd194fb800bd11d62b8646b5fd4b3133eccae GIT binary patch literal 815 zcmV+~1JL}5P)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!(Md!>RCwBA{Qv(y1FZoQ104VhjG-P; zYyautm9GDP|Cmu~C?hk=DL#3fvYRWK529GYC8fTCSHVDnTUwognVpMl3;zE6#_;v& zO|!qhzOMjsB~dKl6jzpDM#ex~fUIFn-1}T0vhHa_paPj?jJ~7m7f5Pzj=U;?*7;*CVFVObCC>CglaWXV{ z$iVqE+a57&y!;N#e*Eq`!}Oys7-CFB8Kxh3!LazuYZSfzkjz5(1Q;Lxk>Z4xgPCDo zqzWQpw?1T8f9WlXL6Z(W17ocD#mexX;WxB6Sa|#i!-1QS%=hlgFOn=^ zWoBgfja0M4EfL`7dn&}uD*X`X1DHkk-+U!Ge}F8I735%e$Hw#&!xAGoz7%zFp7}sU t5|q~QKu5l~`SME&yv`psO(K8*0{~U`t)sVGg*gBK002ovPDHLkV1n;9epCPe literal 0 HcmV?d00001 diff --git a/core/res/res/layout/character_picker.xml b/core/res/res/layout/character_picker.xml index bb4955a6c71c..03448497f5fd 100644 --- a/core/res/res/layout/character_picker.xml +++ b/core/res/res/layout/character_picker.xml @@ -23,8 +23,8 @@ android:id="@+id/characterPicker" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:padding="12dp" - android:verticalSpacing="8dp" + android:padding="4dp" + android:verticalSpacing="4dp" android:horizontalSpacing="8dp" android:stretchMode="spacingWidth" android:gravity="left" diff --git a/core/res/res/layout/google_web_content_helper_layout.xml b/core/res/res/layout/google_web_content_helper_layout.xml index 40f84bf8f3da..546c4586bcc2 100644 --- a/core/res/res/layout/google_web_content_helper_layout.xml +++ b/core/res/res/layout/google_web_content_helper_layout.xml @@ -18,10 +18,28 @@ android:foregroundGravity="center" android:measureAllChildren="false"> - - + + + + + + + + + diff --git a/core/res/res/layout/progress_dialog.xml b/core/res/res/layout/progress_dialog.xml index 2d7afd60ee16..8f66451e4b3e 100644 --- a/core/res/res/layout/progress_dialog.xml +++ b/core/res/res/layout/progress_dialog.xml @@ -33,6 +33,7 @@ android:paddingBottom="10dip"> - - + android:layout_height="wrap_content" + android:padding="3dip" + android:orientation="vertical"> + + + + + + + + + + + + + + + + - - - - - - - + android:orientation="horizontal" > + + + + + + - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/core/res/res/layout/recent_apps_icon.xml b/core/res/res/layout/recent_apps_icon.xml index b8cf08964697..d32643cb15dd 100644 --- a/core/res/res/layout/recent_apps_icon.xml +++ b/core/res/res/layout/recent_apps_icon.xml @@ -18,27 +18,22 @@ --> - - - - - + android:textColor="@color/primary_text_dark_focused" + + android:paddingTop="5dip" + android:paddingBottom="2dip" + android:drawablePadding="0dip" + + android:textSize="13dip" + android:maxLines="2" + android:ellipsize="marquee" + android:fadingEdge="horizontal" + android:gravity="top|center_horizontal" /> diff --git a/core/res/res/layout/search_bar.xml b/core/res/res/layout/search_bar.xml index b5124904e427..13e66aad0d25 100644 --- a/core/res/res/layout/search_bar.xml +++ b/core/res/res/layout/search_bar.xml @@ -71,9 +71,12 @@ android:layout_weight="1.0" android:paddingLeft="8dip" android:paddingRight="6dip" + android:drawablePadding="2dip" android:singleLine="true" + android:ellipsize="end" android:inputType="text|textAutoComplete" android:dropDownWidth="fill_parent" + android:dropDownHeight="fill_parent" android:dropDownAnchor="@id/search_plate" android:dropDownVerticalOffset="-9dip" android:popupBackground="@android:drawable/search_dropdown_background" diff --git a/core/res/res/layout/search_dropdown_item_icons_2line.xml b/core/res/res/layout/search_dropdown_item_icons_2line.xml index 0d074909361e..2710b3bffcb6 100644 --- a/core/res/res/layout/search_dropdown_item_icons_2line.xml +++ b/core/res/res/layout/search_dropdown_item_icons_2line.xml @@ -67,13 +67,10 @@ android:textAppearance="?android:attr/textAppearanceSearchResultTitle" android:singleLine="true" android:layout_width="fill_parent" - android:layout_height="29dip" - android:paddingTop="4dip" - android:gravity="center_vertical" - android:layout_alignParentTop="true" + android:layout_height="wrap_content" + android:layout_centerVertical="true" android:layout_toRightOf="@android:id/icon1" android:layout_toLeftOf="@android:id/icon2" - android:layout_above="@android:id/text2" - android:layout_alignWithParentIfMissing="true" /> + android:layout_above="@android:id/text2" /> diff --git a/core/res/res/values-ar-rEG/donottranslate-cldr.xml b/core/res/res/values-ar-rEG/donottranslate-cldr.xml new file mode 100644 index 000000000000..2c20ffcdf38e --- /dev/null +++ b/core/res/res/values-ar-rEG/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + يناير + فبراير + مارس + أبريل + مايو + يونيو + يوليو + أغسطس + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + يناير + فبراير + مارس + أبريل + مايو + يونيو + يوليو + أغسطس + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + يناير + فبراير + مارس + أبريل + مايو + يونيو + يوليو + أغسطس + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + ي + ف + م + أ + و + ن + ل + غ + س + ك + ب + د + + الأحد + الإثنين + الثلاثاء + الأربعاء + الخميس + الجمعة + السبت + + أحد + إثنين + ثلاثاء + أربعاء + خميس + جمعة + سبت + + أحد + إثنين + ثلاثاء + أربعاء + خميس + جمعة + سبت + + ح + ن + ث + ر + خ + ج + س + + ص + م + أمس + اليوم + غدًا + + %-k:%M + %-l:%M %p + %-l:%M %p + h:mm a + H:mm + %-e‏/%-m‏/%Y + d‏/M‏/yyyy + "%s‏/%s‏/%s" + %-e %B، %Y + %-l:%M:%S %p + %-l:%M:%S %p %d‏/%m‏/%Y + %2$s %1$s + %1$s %3$s + %d‏/%m‏/%Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s – %2$s + %2$s – %5$s + %3$s‏/%2$s - %8$s‏/%7$s + %1$s، %3$s/‏%2$s - %6$s، %8$s/‏%7$s + %3$s‏/%2$s‏/%4$s - %8$s‏/%7$s‏/%9$s + %1$s، %3$s‏/%2$s‏/%4$s - %6$s، %8$s‏/%7$s‏/%9$s + %5$s %1$s، %3$s/‏%2$s/‏%4$s – %10$s %6$s، %8$s/‏%7$s/‏%9$s + %5$s %3$s/‏%2$s – %10$s %8$s/‏%7$s + %5$s %1$s، %3$s-%2$s – %10$s %6$s، %8$s-%7$s + %5$s %3$s‏/%2$s‏/%4$s – %10$s %8$s‏/%7$s‏/%9$s + %3$s %1$s %2$s – %6$s %4$s %5$s + %1$s %2$s – %4$s %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s – %8$s %7$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %3$s %2$s، %4$s – %10$s %8$s %7$s، %9$s + %5$s %3$s %2$s، %4$s – %10$s %8$s %7$s، %9$s + %5$s %1$s، %3$s %2$s %4$s – %10$s %6$s، %8$s %7$s %9$s + %5$s %1$s، %3$s %2$s %4$s – %10$s %6$s، %8$s %7$s %9$s + %1$s، %3$s %2$s %4$s – %6$s، %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s، %9$s + %3$s-%8$s %2$s، %9$s + %1$s، %3$s %2$s - %6$s، %8$s %7$s، %9$s + %b + diff --git a/core/res/res/values-bg-rBG/donottranslate-cldr.xml b/core/res/res/values-bg-rBG/donottranslate-cldr.xml new file mode 100644 index 000000000000..b8b50cccdd78 --- /dev/null +++ b/core/res/res/values-bg-rBG/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + януари + февруари + март + април + май + юни + юли + август + септември + октомври + ноември + декември + + януари + февруари + март + април + май + юни + юли + август + септември + октомври + ноември + декември + + ян. + февр. + март + апр. + май + юни + юли + авг. + септ. + окт. + ноем. + дек. + + я + ф + м + а + м + ю + ю + а + с + о + н + д + + неделя + понеделник + вторник + сряда + четвъртък + петък + събота + + нд + пн + вт + ср + чт + пт + сб + + нд + пн + вт + ср + чт + пт + сб + + н + п + в + с + ч + п + с + + пр. об. + сл. об. + Вчера + Днес + Утре + + %-k:%M + %-l:%M %p + %-l:%M %p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %d %B %Y + %H:%M:%S + %H:%M:%S %d.%m.%Y + %2$s %1$s + %1$s %3$s + %d.%m.%Y + %-e %B + %-B + %B %Y + %-e %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s - %8$s.%7$s + %3$s.%2$s, %1$s - %8$s.%7$s, %6$s + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %3$s.%2$s.%4$s, %1$s - %8$s.%7$s.%9$s, %6$s + %5$s %3$s.%2$s.%4$s, %1$s - %10$s %8$s.%7$s.%9$s, %6$s + %5$s %3$s.%2$s - %10$s %8$s.%7$s + %5$s %3$s.%2$s, %1$s - %10$s %8$s.%7$s, %6$s + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %2$s, %1$s - %6$s %5$s, %4$s + %2$s, %1$s - %5$s, %4$s + %3$s %2$s - %6$s %5$s + %1$s %3$s, %2$s + %3$s, %2$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %3$s %2$s, %1$s - %8$s %7$s, %6$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s, %1$s - %10$s %8$s %7$s, %6$s + %5$s %3$s %2$s, %1$s - %10$s %8$s %7$s, %6$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s, %1$s - %10$s %8$s %7$s %9$s, %6$s + %5$s %3$s %2$s %4$s, %1$s - %10$s %8$s %7$s %9$s, %6$s + %3$s %2$s %4$s, %1$s - %8$s %7$s %9$s, %6$s + %3$s-%8$s %2$s + %3$s %2$s, %1$s - %8$s %7$s, %6$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %3$s %2$s %9$s, %1$s - %8$s %7$s y, %6$s + %b + diff --git a/core/res/res/values-ca-rES/donottranslate-cldr.xml b/core/res/res/values-ca-rES/donottranslate-cldr.xml new file mode 100644 index 000000000000..d5abeef1a96a --- /dev/null +++ b/core/res/res/values-ca-rES/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + gener + febrer + març + abril + maig + juny + juliol + agost + setembre + octubre + novembre + desembre + + gener + febrer + març + abril + maig + juny + juliol + agost + setembre + octubre + novembre + desembre + + gen. + febr. + març + abr. + maig + juny + jul. + ag. + set. + oct. + nov. + des. + + g + f + m + a + m + j + j + a + s + o + n + d + + diumenge + dilluns + dimarts + dimecres + dijous + divendres + dissabte + + dg. + dl. + dt. + dc. + dj. + dv. + ds. + + dg. + dl. + dt. + dc. + dj. + dv. + ds. + + g + l + t + c + j + v + s + + a.m. + p.m. + ahir + avui + demà + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e de %B de %Y + %-k:%M:%S + %-k:%M:%S %d/%m/%Y + %2$s %1$s + %1$s %3$s + %d/%m/%Y + %-e de %B + %-B + %-B del %Y + %-e %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s - %6$s %8$s/%7$s/%9$s + %5$s %1$s %3$s/%2$s/%4$s - %10$s %6$s %8$s/%7$s/%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s %3$s/%2$s - %10$s %6$s %8$s/%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s %2$s - %6$s %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s de %2$s - %8$s de %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %5$s %3$s de %2$s - %10$s %8$s de %7$s + %5$s %3$s de %2$s - %10$s %8$s de %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %3$s de %2$s de %4$s - %10$s %8$s de %7$s de %9$s + %5$s %3$s de %2$s de %4$s - %10$s %8$s de %7$s de %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s - %6$s %8$s %7$s %9$s + %3$s-%8$s de %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s de %2$s - %8$s de %7$s de %9$s + %3$s-%8$s de %2$s de %9$s + %1$s %3$s de %2$s - %6$s %8$s de %7$s de %9$s + %b + diff --git a/core/res/res/values-cs-rCZ/donottranslate-cldr.xml b/core/res/res/values-cs-rCZ/donottranslate-cldr.xml new file mode 100644 index 000000000000..41f5dea81f00 --- /dev/null +++ b/core/res/res/values-cs-rCZ/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + leden + únor + březen + duben + květen + červen + červenec + srpen + září + říjen + listopad + prosinec + + ledna + února + března + dubna + května + června + července + srpna + září + října + listopadu + prosince + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + l + ú + b + d + k + č + č + s + z + ř + l + p + + neděle + pondělí + úterý + středa + čtvrtek + pátek + sobota + + ne + po + út + st + čt + + so + + ne + po + út + st + čt + + so + + N + P + Ú + S + Č + P + S + + dop. + odp. + Včera + Dnes + Zítra + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %-e.%-m.%Y + d.M.yyyy + "%s.%s.%s" + %-e. %B %Y + %-k:%M:%S + %-k:%M:%S %-e.%-m.%Y + %2$s %1$s + %1$s %3$s + %-e.%-m.%Y + %-e. %B + %-B + %-B %Y + %-e.%-m + %-B + %-B %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s. - %8$s.%7$s. + %1$s, %3$s.%2$s. - %6$s, %8$s.%7$s. + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s - %10$s %8$s.%7$s + %5$s %1$s, %3$s.%2$s. - %10$s %6$s, %8$s.%7$s. + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s, %3$s. %2$s - %10$s %6$s, %8$s. %7$s + %5$s %1$s, %3$s. %2$s - %10$s %6$s, %8$s. %7$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %1$s, %3$s. %2$s %4$s - %6$s, %8$s. %7$s %9$s + %3$s.-%8$s. %2$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s + %3$s. %2$s - %8$s. %7$s %9$s + %3$s.-%8$s. %2$s %9$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s %9$s + %B + diff --git a/core/res/res/values-cs/donottranslate-cldr.xml b/core/res/res/values-cs/donottranslate-cldr.xml new file mode 100644 index 000000000000..41f5dea81f00 --- /dev/null +++ b/core/res/res/values-cs/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + leden + únor + březen + duben + květen + červen + červenec + srpen + září + říjen + listopad + prosinec + + ledna + února + března + dubna + května + června + července + srpna + září + října + listopadu + prosince + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + l + ú + b + d + k + č + č + s + z + ř + l + p + + neděle + pondělí + úterý + středa + čtvrtek + pátek + sobota + + ne + po + út + st + čt + + so + + ne + po + út + st + čt + + so + + N + P + Ú + S + Č + P + S + + dop. + odp. + Včera + Dnes + Zítra + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %-e.%-m.%Y + d.M.yyyy + "%s.%s.%s" + %-e. %B %Y + %-k:%M:%S + %-k:%M:%S %-e.%-m.%Y + %2$s %1$s + %1$s %3$s + %-e.%-m.%Y + %-e. %B + %-B + %-B %Y + %-e.%-m + %-B + %-B %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s. - %8$s.%7$s. + %1$s, %3$s.%2$s. - %6$s, %8$s.%7$s. + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s - %10$s %8$s.%7$s + %5$s %1$s, %3$s.%2$s. - %10$s %6$s, %8$s.%7$s. + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s, %3$s. %2$s - %10$s %6$s, %8$s. %7$s + %5$s %1$s, %3$s. %2$s - %10$s %6$s, %8$s. %7$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %1$s, %3$s. %2$s %4$s - %6$s, %8$s. %7$s %9$s + %3$s.-%8$s. %2$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s + %3$s. %2$s - %8$s. %7$s %9$s + %3$s.-%8$s. %2$s %9$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s %9$s + %B + diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 35a3f9a9cb50..7dbeaebe5d72 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -161,14 +161,10 @@ "Umožňuje aplikaci změnit aktuální konfiguraci, např. národní prostředí či obecnou velikost písma." "restartování ostatních aplikací" "Umožňuje aplikaci vynutit restartování jiných aplikací." - "zamezení zastavení aplikace" - "Umožňuje aplikaci spustit jakýkoli proces v popředí tak, že ho nelze ukončit. Běžné aplikace by toto nastavení nikdy neměly používat." "vynucení zavření aplikace" "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." "načtení interního stavu systému" "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." - "zveřejnění nízkoúrovňových služeb" - "Umožňuje aplikaci zveřejnit své vlastní nízkoúrovňové systémové služby. Škodlivé aplikace mohou převzít kontrolu nad systémem a získat či poškodit jakákoli data v něm obsažená." "sledování a řízení spouštění všech aplikací" "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." "odeslání vysílání o odstranění balíčku" @@ -181,8 +177,6 @@ "Umožňuje aplikaci řídit maximální počet spuštěných procesů. Běžné aplikace toto nastavení nikdy nevyužívají." "zavření všech aplikací na pozadí" "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í." - "automatická instalace aktualizací systému" - "Umožňuje aplikaci přijímat oznámení o čekajících aktualizacích systému a spouštět jejich instalaci. Škodlivé aplikace mohou díky tomuto nastavení poškodit systém pomocí neoprávněných aktualizací nebo celkově narušovat proces aktualizace." "změna statistických údajů o baterii" "Umožňuje změnu shromážděných statistických údajů o baterii. Není určeno pro běžné aplikace." "zobrazení nepovolených oken" @@ -418,9 +412,6 @@ "Heslo" "Přihlásit se" "Neplatné uživatelské jméno nebo heslo." - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "Vymazat oznámení" @@ -452,9 +443,6 @@ "enter" "smazat" "Hledat" - "Dnes" - "Včera" - "Zítra" "před 1 měsícem" "Déle než před 1 měsícem" @@ -536,13 +524,6 @@ "týd." "rokem" "lety" - "neděle" - "pondělí" - "úterý" - "středa" - "čtvrtek" - "pátek" - "sobota" "Každý pracovní den (Po – Pá)" "Denně" "Každý týden v %s" @@ -552,137 +533,15 @@ "Omlouváme se, ale toto video nelze přenášet datovým proudem do tohoto zařízení." "Toto video bohužel nelze přehrát." "OK" - "dop." - "odp." - "%m/%d/%Y" - "%1$s, %2$s, %3$s%4$s, %5$s, %6$s" - "%1$s, %2$s%4$s, %5$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s, %3$s" - "%2$s, %3$s" - "%1$s, %3$s" - "%1$s, %2$s" "%1$s, %2$s" - "%1$s, %2$s" - "MMMM' 'd', 'yyyy" - "d'. 'MMMM' 'yyyy" - "d'. 'MMM' 'yyyy" - "d'. 'MMM' 'yyyy" - "h':'mm' 'a" - "HH':'mm" "poledne" "Poledne" "půlnoc" "Půlnoc" - "%B %-d" - "%B %-d, %Y" - "%B %Y" - "%H:%M:%S" - "%H:%M:%S %-d. %B %Y" - "%3$s. %2$s%8$s. %7$s" - "%1$s, %3$s. %2$s%6$s, %8$s. %7$s" - "%3$s. %2$s%8$s. %7$s %9$s" - "%1$s, %3$s. %2$s%6$s, %8$s. %7$s %9$s" - "%3$s. %2$s, %5$s%8$s. %7$s, %10$s" - "%1$s, %3$s. %2$s, %5$s%6$s, %8$s. %7$s, %10$s" - "%3$s. %2$s %4$s, %5$s%8$s. %7$s %9$s, %10$s" - "%1$s, %3$s. %2$s %4$s, %5$s%6$s, %8$s. %7$s %9$s, %10$s" - "%3$s. %2$s. – %8$s. %7$s." - "%1$s, %3$s. %2$s%6$s, %8$s. %7$s" - "%3$s. %2$s. %4$s%8$s. %7$s. %9$s" - "%1$s, %3$s. %2$s %4$s%6$s, %8$s. %7$s %9$s" - "%3$s. %2$s., %5$s%8$s. %7$s., %10$s" - "%1$s, %3$s. %2$s, %5$s%6$s, %8$s. %7$s, %10$s" - "%2$s/%3$s/%4$s, %5$s%7$s/%8$s/%9$s, %10$s" - "%1$s, %3$s. %2$s %4$s, %5$s%6$s, %8$s. %7$s %9$s, %10$s" - "%3$s. – %8$s. %2$s" - "%1$s, %3$s. %2$s%6$s, %8$s. %7$s" - "%3$s. – %8$s. %2$s %9$s" - "%1$s, %3$s. %2$s %4$s%6$s, %8$s. %7$s %9$s" - "%3$s. %2$s, %5$s%8$s. %7$s, %10$s" - "%1$s, %3$s. %2$s %5$s%6$s, %8$s. %7$s %10$s" - "%2$s %3$s, %4$s, %5$s%7$s %8$s, %9$s, %10$s" - "%1$s, %3$s. %2$s %4$s, %5$s%6$s, %8$s. %7$s %9$s, %10$s" - "%-d. %b %Y" - "%b %Y" - "%b %-d" - "neděle" - "pondělí" - "úterý" - "středa" - "čtvrtek" - "pátek" - "sobota" - "Ne" - "Po" - "Út" - "St" - "Čt" - "Pá" - "So" - "Ne" - "Po" - "Út" - "St" - "Čt" - "Pá" - "So" - "Ne" - "Po" - "Út" - "St" - "Čt" - "Pá" - "So" - "Ne" - "Po" - "Čt" - "St" - "Čt" - "Pá" - "So" - "leden" - "únor" - "březen" - "duben" - "květen" - "červen" - "červenec" - "srpen" - "září" - "říjen" - "listopad" - "prosinec" - "leden" - "únor" - "březen" - "duben" - "květen" - "červen" - "červenec" - "srpen" - "září" - "říjen" - "listopad" - "prosinec" - "1." - "2." - "Po" - "4." - "5." - "6." - "7." - "8." - "9." - "10." - "11." - "12." "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Vybrat vše" diff --git a/core/res/res/values-da-rDK/donottranslate-cldr.xml b/core/res/res/values-da-rDK/donottranslate-cldr.xml new file mode 100644 index 000000000000..2d0db938a69f --- /dev/null +++ b/core/res/res/values-da-rDK/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + januar + februar + marts + april + maj + juni + juli + august + september + oktober + november + december + + januar + februar + marts + april + maj + juni + juli + august + september + oktober + november + december + + jan. + feb. + mar. + apr. + maj + jun. + jul. + aug. + sep. + okt. + nov. + dec. + + J + F + M + A + M + J + J + A + S + O + N + D + + søndag + mandag + tirsdag + onsdag + torsdag + fredag + lørdag + + søn + man + tir + ons + tor + fre + lør + + søn + man + tir + ons + tor + fre + lør + + S + M + T + O + T + F + L + + f.m. + e.m. + i går + i dag + i morgen + + %H.%M + %-l.%M %p + %-l.%M %^p + h.mm a + HH.mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e. %b %Y + %H.%M.%S + %H.%M.%S %d/%m/%Y + %2$s %1$s + %1$s %3$s + %d/%m/%Y + %-e. %B + %B + %B %Y + %-e. %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s - %6$s %8$s/%7$s/%9$s + %5$s %1$s. %3$s-%2$s-%4$s - %10$s %6$s. %8$s-%7$s-%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s. %3$s-%2$s - %10$s %6$s. %8$s-%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s den %2$s - %6$s %4$s den %5$s + %1$s den %2$s - %4$s den %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s den %3$s + %2$s den %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %1$s. %3$s. %2$s %4$s - %10$s %6$s. %8$s. %7$s %9$s + %5$s %1$s. %3$s. %2$s %4$s - %10$s %6$s. %8$s. %7$s %9$s + %1$s. %3$s. %2$s %4$s - %6$s. %8$s. %7$s %9$s + %3$s.-%8$s. %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s. %2$s - %8$s. %7$s %9$s + %3$s.-%8$s. %2$s %9$s + %1$s den %3$s. %2$s - %6$s den %8$s. %7$s %9$s + %b + diff --git a/core/res/res/values-da/donottranslate-cldr.xml b/core/res/res/values-da/donottranslate-cldr.xml new file mode 100644 index 000000000000..2d0db938a69f --- /dev/null +++ b/core/res/res/values-da/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + januar + februar + marts + april + maj + juni + juli + august + september + oktober + november + december + + januar + februar + marts + april + maj + juni + juli + august + september + oktober + november + december + + jan. + feb. + mar. + apr. + maj + jun. + jul. + aug. + sep. + okt. + nov. + dec. + + J + F + M + A + M + J + J + A + S + O + N + D + + søndag + mandag + tirsdag + onsdag + torsdag + fredag + lørdag + + søn + man + tir + ons + tor + fre + lør + + søn + man + tir + ons + tor + fre + lør + + S + M + T + O + T + F + L + + f.m. + e.m. + i går + i dag + i morgen + + %H.%M + %-l.%M %p + %-l.%M %^p + h.mm a + HH.mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e. %b %Y + %H.%M.%S + %H.%M.%S %d/%m/%Y + %2$s %1$s + %1$s %3$s + %d/%m/%Y + %-e. %B + %B + %B %Y + %-e. %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s - %6$s %8$s/%7$s/%9$s + %5$s %1$s. %3$s-%2$s-%4$s - %10$s %6$s. %8$s-%7$s-%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s. %3$s-%2$s - %10$s %6$s. %8$s-%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s den %2$s - %6$s %4$s den %5$s + %1$s den %2$s - %4$s den %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s den %3$s + %2$s den %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %1$s. %3$s. %2$s %4$s - %10$s %6$s. %8$s. %7$s %9$s + %5$s %1$s. %3$s. %2$s %4$s - %10$s %6$s. %8$s. %7$s %9$s + %1$s. %3$s. %2$s %4$s - %6$s. %8$s. %7$s %9$s + %3$s.-%8$s. %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s. %2$s - %8$s. %7$s %9$s + %3$s.-%8$s. %2$s %9$s + %1$s den %3$s. %2$s - %6$s den %8$s. %7$s %9$s + %b + diff --git a/core/res/res/values-de-rAT/donottranslate-cldr.xml b/core/res/res/values-de-rAT/donottranslate-cldr.xml new file mode 100644 index 000000000000..27624a36ab42 --- /dev/null +++ b/core/res/res/values-de-rAT/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Jänner + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + Jänner + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + Jän + Feb + Mär + Apr + Mai + Jun + Jul + Aug + Sep + Okt + Nov + Dez + + J + F + M + A + M + J + J + A + S + O + N + D + + Sonntag + Montag + Dienstag + Mittwoch + Donnerstag + Freitag + Samstag + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + S + M + D + M + D + F + S + + vorm. + nachm. + Gestern + Heute + Morgen + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %d. %B %Y + %H:%M:%S + %H:%M:%S %d.%m.%Y + %2$s %1$s + %1$s %3$s + %d.%m.%Y + %-e. %B + %-B + %B %Y + %d. %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s. - %8$s.%7$s. + %1$s, %3$s.%2$s. - %6$s, %8$s.%7$s. + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s. - %10$s %8$s.%7$s. + %5$s %1$s, %3$s.%2$s. - %10$s %6$s, %8$s.%7$s. + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s, %3$s. %2$s - %10$s %6$s, %8$s. %7$s + %5$s %1$s, %3$s. %2$s - %10$s %6$s, %8$s. %7$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %1$s, %3$s. %2$s %4$s - %6$s, %8$s. %7$s %9$s + %3$s.-%8$s. %2$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s + %3$s. %2$s - %8$s. %7$s %9$s + %3$s.-%8$s. %2$s %9$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s %9$s + %b + diff --git a/core/res/res/values-de-rCH/donottranslate-cldr.xml b/core/res/res/values-de-rCH/donottranslate-cldr.xml new file mode 100644 index 000000000000..f32095bd336e --- /dev/null +++ b/core/res/res/values-de-rCH/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + Jan + Feb + Mär + Apr + Mai + Jun + Jul + Aug + Sep + Okt + Nov + Dez + + J + F + M + A + M + J + J + A + S + O + N + D + + Sonntag + Montag + Dienstag + Mittwoch + Donnerstag + Freitag + Samstag + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + S + M + D + M + D + F + S + + vorm. + nachm. + Gestern + Heute + Morgen + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e. %B %Y + %H:%M:%S + %H:%M:%S %d.%m.%Y + %2$s %1$s + %1$s %3$s + %d.%m.%Y + %-e. %B + %-B + %B %Y + %-e. %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s. - %8$s.%7$s. + %1$s, %3$s.%2$s. - %6$s, %8$s.%7$s. + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s. - %10$s %8$s.%7$s. + %5$s %1$s, %3$s.%2$s. - %10$s %6$s, %8$s.%7$s. + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %1$s %2$s - %6$s %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s %3$s. %2$s - %6$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s %3$s. %2$s - %10$s %6$s %8$s. %7$s + %5$s %1$s %3$s. %2$s - %10$s %6$s %8$s. %7$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %1$s, %3$s. %2$s %4$s - %6$s, %8$s. %7$s %9$s + %3$s.-%8$s. %2$s + %1$s %3$s. %2$s - %6$s %8$s. %7$s + %3$s. %2$s - %8$s. %7$s %9$s + %3$s.-%8$s. %2$s %9$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s %9$s + %b + diff --git a/core/res/res/values-de-rDE/donottranslate-cldr.xml b/core/res/res/values-de-rDE/donottranslate-cldr.xml new file mode 100644 index 000000000000..f32095bd336e --- /dev/null +++ b/core/res/res/values-de-rDE/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + Jan + Feb + Mär + Apr + Mai + Jun + Jul + Aug + Sep + Okt + Nov + Dez + + J + F + M + A + M + J + J + A + S + O + N + D + + Sonntag + Montag + Dienstag + Mittwoch + Donnerstag + Freitag + Samstag + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + S + M + D + M + D + F + S + + vorm. + nachm. + Gestern + Heute + Morgen + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e. %B %Y + %H:%M:%S + %H:%M:%S %d.%m.%Y + %2$s %1$s + %1$s %3$s + %d.%m.%Y + %-e. %B + %-B + %B %Y + %-e. %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s. - %8$s.%7$s. + %1$s, %3$s.%2$s. - %6$s, %8$s.%7$s. + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s. - %10$s %8$s.%7$s. + %5$s %1$s, %3$s.%2$s. - %10$s %6$s, %8$s.%7$s. + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %1$s %2$s - %6$s %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s %3$s. %2$s - %6$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s %3$s. %2$s - %10$s %6$s %8$s. %7$s + %5$s %1$s %3$s. %2$s - %10$s %6$s %8$s. %7$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %1$s, %3$s. %2$s %4$s - %6$s, %8$s. %7$s %9$s + %3$s.-%8$s. %2$s + %1$s %3$s. %2$s - %6$s %8$s. %7$s + %3$s. %2$s - %8$s. %7$s %9$s + %3$s.-%8$s. %2$s %9$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s %9$s + %b + diff --git a/core/res/res/values-de-rLI/donottranslate-cldr.xml b/core/res/res/values-de-rLI/donottranslate-cldr.xml new file mode 100644 index 000000000000..f32095bd336e --- /dev/null +++ b/core/res/res/values-de-rLI/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + Jan + Feb + Mär + Apr + Mai + Jun + Jul + Aug + Sep + Okt + Nov + Dez + + J + F + M + A + M + J + J + A + S + O + N + D + + Sonntag + Montag + Dienstag + Mittwoch + Donnerstag + Freitag + Samstag + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + S + M + D + M + D + F + S + + vorm. + nachm. + Gestern + Heute + Morgen + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e. %B %Y + %H:%M:%S + %H:%M:%S %d.%m.%Y + %2$s %1$s + %1$s %3$s + %d.%m.%Y + %-e. %B + %-B + %B %Y + %-e. %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s. - %8$s.%7$s. + %1$s, %3$s.%2$s. - %6$s, %8$s.%7$s. + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s. - %10$s %8$s.%7$s. + %5$s %1$s, %3$s.%2$s. - %10$s %6$s, %8$s.%7$s. + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %1$s %2$s - %6$s %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s %3$s. %2$s - %6$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s %3$s. %2$s - %10$s %6$s %8$s. %7$s + %5$s %1$s %3$s. %2$s - %10$s %6$s %8$s. %7$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %1$s, %3$s. %2$s %4$s - %6$s, %8$s. %7$s %9$s + %3$s.-%8$s. %2$s + %1$s %3$s. %2$s - %6$s %8$s. %7$s + %3$s. %2$s - %8$s. %7$s %9$s + %3$s.-%8$s. %2$s %9$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s %9$s + %b + diff --git a/core/res/res/values-de/donottranslate-cldr.xml b/core/res/res/values-de/donottranslate-cldr.xml new file mode 100644 index 000000000000..f32095bd336e --- /dev/null +++ b/core/res/res/values-de/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + Jan + Feb + Mär + Apr + Mai + Jun + Jul + Aug + Sep + Okt + Nov + Dez + + J + F + M + A + M + J + J + A + S + O + N + D + + Sonntag + Montag + Dienstag + Mittwoch + Donnerstag + Freitag + Samstag + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + S + M + D + M + D + F + S + + vorm. + nachm. + Gestern + Heute + Morgen + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e. %B %Y + %H:%M:%S + %H:%M:%S %d.%m.%Y + %2$s %1$s + %1$s %3$s + %d.%m.%Y + %-e. %B + %-B + %B %Y + %-e. %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s. - %8$s.%7$s. + %1$s, %3$s.%2$s. - %6$s, %8$s.%7$s. + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s. - %10$s %8$s.%7$s. + %5$s %1$s, %3$s.%2$s. - %10$s %6$s, %8$s.%7$s. + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %1$s %2$s - %6$s %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s %3$s. %2$s - %6$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s %3$s. %2$s - %10$s %6$s %8$s. %7$s + %5$s %1$s %3$s. %2$s - %10$s %6$s %8$s. %7$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %1$s, %3$s. %2$s %4$s - %6$s, %8$s. %7$s %9$s + %3$s.-%8$s. %2$s + %1$s %3$s. %2$s - %6$s %8$s. %7$s + %3$s. %2$s - %8$s. %7$s %9$s + %3$s.-%8$s. %2$s %9$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s %9$s + %b + diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 674c64b91c4e..dfb454991aa4 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -161,14 +161,10 @@ "Ermöglicht einer Anwendung, die aktuelle Konfiguration zu ändern, etwa das Gebietsschema oder die Schriftgröße." "Andere Anwendungen neu starten" "Ermöglicht einer Anwendung, den Neustart anderer Anwendungen zu erzwingen." - "Beenden nicht zulassen" - "Ermöglicht einer Anwendung, beliebige Prozesse im Vordergrund auszuführen, damit diese nicht beendet werden können. Sollte nicht für normale Anwendungen benötigt werden." "Schließen von Anwendung erzwingen" "Ermöglicht einer Anwendung, alle Aktivitäten, die im Vordergrund ablaufen, zu beenden und in den Hintergrund zu schieben. Sollte nicht für normale Anwendungen benötigt werden." "Systeminternen Status abrufen" "Ermöglicht einer Anwendung, den internen Status des Systems abzurufen. Schädliche Anwendungen rufen hierbei möglicherweise eine Vielzahl an privaten und geschützten Daten ab, die Sie in der Regel nicht benötigen würden." - "systemnahe Dienste veröffentlichen" - "Ermöglicht der Anwendung, ihre eigenen systemnahen Dienste anzubieten. Schädliche Anwendungen könnten in das System eindringen und darin befindliche Daten stehlen oder manipulieren." "Start von Anwendungen überwachen und steuern" "Ermöglicht der Anwendung, den Start von Systemaktivitäten zu überwachen und zu steuern. Schädliche Anwendungen können so das gesamte System beeinträchtigen. Diese Berechtigung wird nur zu Entwicklungszwecken und nie für die normale Telefonnutzung benötigt." "Broadcast ohne Paket senden" @@ -181,8 +177,6 @@ "Ermöglicht einer Anwendung, die maximale Anzahl an laufenden Prozessen zu steuern. Wird nicht für normale Anwendungen benötigt." "alle Anwendungen im Hintergrund schließen" "Überlässt einer Anwendung die Entscheidung, ob Aktivitäten beendet werden, sobald Sie in den Hintergrund rücken. Wird nicht für normale Anwendungen benötigt." - "System-Updates automatisch installieren" - "Ermöglicht einer Anwendung, Benachrichtigungen zu ausstehenden System-Updates zu erhalten und deren Installation einzuleiten. Schädliche Anwendungen können so das System durch nicht autorisierte Updates beschädigen oder in den Update-Prozess eingreifen." "Akku-Daten ändern" "Ermöglicht die Änderung von gesammelten Akku-Daten. Nicht für normale Anwendungen vorgesehen." "nicht autorisierte Fenster anzeigen" @@ -418,9 +412,6 @@ "Passwort" "Anmelden" "Ungültiger Nutzername oder ungültiges Passwort." - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "Benachrichtigungen löschen" @@ -452,9 +443,6 @@ "Enter" "löschen" "Suche" - "Heute" - "Gestern" - "Morgen" "Vor 1 Monat" "Vor mehr als 1 Monat" @@ -536,13 +524,6 @@ "Wochen" "Jahr" "Jahre" - "Sonntag" - "Montag" - "Dienstag" - "Mittwoch" - "Donnerstag" - "Freitag" - "Samstag" "Jeden Wochentag (Mo-Fr)" "Täglich" "Jede Woche am %s" @@ -552,137 +533,15 @@ "Leider ist dieses Video nicht für Streaming auf diesem Gerät gültig." "Dieses Video kann leider nicht abgespielt werden." "OK" - "AM" - ".." - "%d/%m/%Y" - "%1$s, %2$s, %3$s%4$s, %5$s, %6$s" - "%1$s, %2$s%4$s, %5$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s, %3$s" - "%2$s, %3$s" - "%1$s, %3$s" - "%1$s, %2$s" "%1$s, %2$s" - "%1$s, %2$s" - "d'. 'MMMM' 'yyyy" - "d'. 'MMMM' 'yyyy" - "d'. 'MMM' 'yyyy" - "d'. 'MMM' 'yyyy" - "h':'mm' 'a" - "HH':'mm" "Mittag" "Mittag" "Mitternacht" "Mitternacht" - "%B %-d" - "%-d. %B %Y" - "%B %Y" - "%H:%M:%S" - "%H:%M:%S %-d. %B %Y" - "%3$s. %2$s%8$s. %7$s" - "%1$s, %3$s. %2$s%6$s, %8$s. %7$s" - "%3$s. %2$s%8$s. %7$s %9$s" - "%1$s, %3$s. %2$s%6$s, %8$s. %7$s %9$s" - "%3$s. %2$s %5$s%8$s. %7$s %10$s" - "%1$s, %3$s. %2$s, %5$s%6$s, %8$s. %7$s %10$s" - "%3$s. %2$s, %4$s, %5$s%8$s. %7$s %9$s, %10$s" - "%1$s, %3$s. %2$s %4$s, %5$s%6$s, %8$s. %7$s %9$s, %10$s" - "%3$s/%2$s%8$s/%7$s" - "%1$s, %3$s/%2$s%6$s, %8$s/%7$s" - "%3$s/%2$s/%4$s%8$s/%7$s/%9$s" - "%1$s, %3$s/%2$s/%4$s%6$s, %8$s/%7$s/%9$s" - "%3$s/%2$s, %5$s%8$s/%7$s, %10$s" - "%1$s, %3$s/%2$s, %5$s%6$s, %8$s/%7$s, %10$s" - "%3$s/%2$s/%4$s, %5$s%8$s/%7$s/%9$s, %10$s" - "%1$s, %3$s/%2$s/%4$s, %5$s%6$s, %8$s/%7$s/%9$s, %10$s" - "%3$s. – %8$s. %2$s" - "%1$s, %3$s. %2$s%6$s, %8$s. %7$s" - "%3$s. – %8$s. %2$s %9$s" - "%1$s, %3$s. %2$s %4$s%6$s, %8$s. %7$s %9$s" - "%3$s. %2$s, %5$s%8$s. %7$s, %10$s" - "%1$s, %3$s. %2$s, %5$s%6$s, %8$s. %7$s, %10$s" - "%3$s. %2$s %4$s, %5$s%8$s. %7$s %9$s, %10$s" - "%1$s, %3$s. %2$s %4$s, %5$s%6$s, %8$s. %7$s %9$s, %10$s" - "%-d. %b %Y" - "%b %Y" - "%b %-d" - "Sonntag" - "Montag" - "Dienstag" - "Mittwoch" - "Donnerstag" - "Freitag" - "Samstag" - "So" - "Mo" - "Di" - "Mi" - "Do" - "Fr" - "Sa" - "So" - "Mo" - "Di" - "Mi" - "Do" - "Fr" - "Sa" - "So" - "März" - "Di" - "Mi" - "Do" - "Fr" - "Sa" - "Sep" - "Mo" - "Do" - "Mi" - "Do" - "Fr" - "Sa" - "Januar" - "Februar" - "März" - "April" - "Mai" - "Juni" - "Juli" - "August" - "September" - "Oktober" - "November" - "Dezember" - "Jan." - "Feb." - "März" - "Apr." - "Mai" - "Juni" - "Juli" - "Aug" - "Sep." - "Okt." - "Nov." - "Dez." - "Juli" - "Fr" - "März" - "Apr" - "Mo" - "Juni" - "Juli" - "Aug." - "Sep" - "Okt." - "No" - "Dez." "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Alles auswählen" diff --git a/core/res/res/values-el-rGR/donottranslate-cldr.xml b/core/res/res/values-el-rGR/donottranslate-cldr.xml new file mode 100644 index 000000000000..e8f02fb0d47b --- /dev/null +++ b/core/res/res/values-el-rGR/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Ιανουάριος + Φεβρουάριος + Μάρτιος + Απρίλιος + Μάιος + Ιούνιος + Ιούλιος + Αύγουστος + Σεπτέμβριος + Οκτώβριος + Νοέμβριος + Δεκέμβριος + + Ιανουαρίου + Φεβρουαρίου + Μαρτίου + Απριλίου + Μαΐου + Ιουνίου + Ιουλίου + Αυγούστου + Σεπτεμβρίου + Οκτωβρίου + Νοεμβρίου + Δεκεμβρίου + + Ιαν + Φεβ + Μαρ + Απρ + Μαϊ + Ιουν + Ιουλ + Αυγ + Σεπ + Οκτ + Νοε + Δεκ + + Ι + Φ + Μ + Α + Μ + Ι + Ι + Α + Σ + Ο + Ν + Δ + + Κυριακή + Δευτέρα + Τρίτη + Τετάρτη + Πέμπτη + Παρασκευή + Σάββατο + + Κυρ + Δευ + Τρι + Τετ + Πεμ + Παρ + Σαβ + + Κυρ + Δευ + Τρι + Τετ + Πεμ + Παρ + Σαβ + + Κ + Δ + Τ + Τ + Π + Π + Σ + + π.μ. + μ.μ. + Χτες + Σήμερα + Αύριο + + %-k:%M + %-l:%M %p + %-l:%M %p + h:mm a + H:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %d %B %Y + %-l:%M:%S %p + %-l:%M:%S %p %d %b %Y + %2$s %1$s + %1$s %3$s + %d %b %Y + %-e %B + %-B + %-B %Y + %-e %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s, %3$s/%2$s - %6$s, %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s - %6$s, %8$s/%7$s/%9$s + %5$s %1$s, %3$s/%2$s/%4$s - %10$s %6$s, %8$s/%7$s/%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s, %3$s/%2$s - %10$s %6$s, %8$s/%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %1$s, %3$s %2$s - %10$s %6$s, %8$s %7$s + %5$s %1$s, %3$s %2$s - %10$s %6$s, %8$s %7$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-el/donottranslate-cldr.xml b/core/res/res/values-el/donottranslate-cldr.xml new file mode 100644 index 000000000000..e8f02fb0d47b --- /dev/null +++ b/core/res/res/values-el/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Ιανουάριος + Φεβρουάριος + Μάρτιος + Απρίλιος + Μάιος + Ιούνιος + Ιούλιος + Αύγουστος + Σεπτέμβριος + Οκτώβριος + Νοέμβριος + Δεκέμβριος + + Ιανουαρίου + Φεβρουαρίου + Μαρτίου + Απριλίου + Μαΐου + Ιουνίου + Ιουλίου + Αυγούστου + Σεπτεμβρίου + Οκτωβρίου + Νοεμβρίου + Δεκεμβρίου + + Ιαν + Φεβ + Μαρ + Απρ + Μαϊ + Ιουν + Ιουλ + Αυγ + Σεπ + Οκτ + Νοε + Δεκ + + Ι + Φ + Μ + Α + Μ + Ι + Ι + Α + Σ + Ο + Ν + Δ + + Κυριακή + Δευτέρα + Τρίτη + Τετάρτη + Πέμπτη + Παρασκευή + Σάββατο + + Κυρ + Δευ + Τρι + Τετ + Πεμ + Παρ + Σαβ + + Κυρ + Δευ + Τρι + Τετ + Πεμ + Παρ + Σαβ + + Κ + Δ + Τ + Τ + Π + Π + Σ + + π.μ. + μ.μ. + Χτες + Σήμερα + Αύριο + + %-k:%M + %-l:%M %p + %-l:%M %p + h:mm a + H:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %d %B %Y + %-l:%M:%S %p + %-l:%M:%S %p %d %b %Y + %2$s %1$s + %1$s %3$s + %d %b %Y + %-e %B + %-B + %-B %Y + %-e %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s, %3$s/%2$s - %6$s, %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s - %6$s, %8$s/%7$s/%9$s + %5$s %1$s, %3$s/%2$s/%4$s - %10$s %6$s, %8$s/%7$s/%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s, %3$s/%2$s - %10$s %6$s, %8$s/%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %1$s, %3$s %2$s - %10$s %6$s, %8$s %7$s + %5$s %1$s, %3$s %2$s - %10$s %6$s, %8$s %7$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-en-rAU/donottranslate-cldr.xml b/core/res/res/values-en-rAU/donottranslate-cldr.xml new file mode 100644 index 000000000000..9811b68e0aa1 --- /dev/null +++ b/core/res/res/values-en-rAU/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + January + February + March + April + May + June + July + August + September + October + November + December + + January + February + March + April + May + June + July + August + September + October + November + December + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + J + F + M + A + M + J + J + A + S + O + N + D + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + Su + Mo + Tu + We + Th + Fr + Sa + + S + M + T + W + T + F + S + + am + pm + Yesterday + Today + Tomorrow + + %H:%M + %-l:%M%p + %-l:%M%^p + h:mm a + HH:mm + %-e/%m/%Y + d/MM/yyyy + "%s/%s/%s" + %-e %B %Y + %-l:%M:%S %p + %d/%m/%Y, %-l:%M:%S %p + %1$s, %2$s + %1$s, %3$s + %d/%m/%Y + %-e %B + %-B + %B %Y + %-e %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s, %3$s/%2$s - %6$s, %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s - %6$s, %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s, %5$s - %6$s, %8$s/%7$s/%9$s, %10$s + %3$s/%2$s, %5$s - %8$s/%7$s, %10$s + %1$s, %3$s/%2$s, %5$s - %6$s, %8$s/%7$s, %10$s + %3$s/%2$s/%4$s, %5$s - %8$s/%7$s/%9$s, %10$s + %1$s, %2$s, %3$s - %4$s, %5$s, %6$s + %1$s, %2$s - %4$s, %5$s + %2$s, %3$s - %5$s, %6$s + %1$s, %2$s, %3$s + %2$s, %3$s + %1$s, %2$s + %3$s %2$s - %8$s %7$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %3$s %2$s, %5$s - %8$s %7$s, %10$s + %3$s %2$s, %5$s - %8$s %7$s, %10$s + %1$s, %3$s %2$s, %5$s - %6$s, %8$s %7$s, %10$s + %1$s, %3$s %2$s, %5$s - %6$s, %8$s %7$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %1$s, %3$s %2$s %4$s, %5$s - %6$s, %8$s %7$s %9$s, %10$s + %1$s, %3$s %2$s %4$s, %5$s - %6$s, %8$s %7$s %9$s, %10$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 9da879b34a16..3de378bee211 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -314,10 +314,6 @@ - - - - @@ -710,7 +706,6 @@ - "h:mm AA" @@ -864,35 +859,24 @@ - "%d/%m/%Y" - "%1$s, %2$s, %3$s%4$s, %5$s, %6$s" - "%1$s, %2$s%4$s, %5$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s, %3$s" - "%2$s, %3$s" - "%1$s, %3$s" - "dd MMMM yyyy" - "dd MMM yyyy" @@ -906,73 +890,43 @@ - "%-d %B" - "%-d %B %Y" - "%H:%M:%S" - "%3$s %2$s%8$s %7$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s" - "%H:%M:%S %-d %B %Y" - "%3$s %2$s%8$s %7$s %9$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s %9$s" - " %3$s %2$s %5$s%8$s %7$s %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s %10$s" - "%3$s %2$s, %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s, %3$s %2$s %4$s, %5$s%6$s, %8$s %7$s %9$s, %10$s" - "%3$s/%2$s%8$s/%7$s" - "%1$s, %3$s/%2$s%6$s, %8$s/%7$s" - "%3$s/%2$s/%4$s%8$s/%7$s/%9$s" - "%1$s, %3$s/%2$s/%4$s%6$s, %8$s/%7$s/%9$s" - "%3$s/%2$s, %5$s%8$s/%7$s, %10$s" - "%1$s, %3$s/%2$s, %5$s%6$s, %8$s/%7$s, %10$s" - "%3$s/%2$s/%4$s, %5$s%8$s/%7$s/%9$s, %10$s" - "%1$s, %3$s/%2$s/%4$s, %5$s%6$s, %8$s/%7$s/%9$s, %10$s" - "%3$s \u2013 %8$s %2$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s" - "%3$s \u2013 %8$s %2$s %9$s" - "%1$s, %3$s %2$s %4$s%6$s, %8$s %7$s %9$s" - "%3$s %2$s, %5$s%8$s %7$s, %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" - "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s, %3$s %2$s %4$s, %5$s%6$s, %8$s %7$s %9$s, %10$s" - "%-d %b %Y" - "%-d %b" diff --git a/core/res/res/values-en-rCA/donottranslate-cldr.xml b/core/res/res/values-en-rCA/donottranslate-cldr.xml new file mode 100644 index 000000000000..1e250c739b73 --- /dev/null +++ b/core/res/res/values-en-rCA/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + January + February + March + April + May + June + July + August + September + October + November + December + + January + February + March + April + May + June + July + August + September + October + November + December + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + J + F + M + A + M + J + J + A + S + O + N + D + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + Su + Mo + Tu + We + Th + Fr + Sa + + S + M + T + W + T + F + S + + am + pm + Yesterday + Today + Tomorrow + + %H:%M + %-l:%M%p + %-l:%M%^p + h:mm a + HH:mm + %Y-%m-%d + yyyy-MM-dd + "%s-%s-%s" + %B %-e, %Y + %-l:%M:%S %p + %Y-%m-%d, %-l:%M:%S %p + %1$s, %2$s + %1$s, %3$s + %Y-%m-%d + %B %-e + %-B + %B %Y + %b %-e + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %2$s-%3$s - %7$s-%8$s + %1$s, %2$s-%3$s - %6$s, %7$s-%8$s + %4$s-%2$s-%3$s - %9$s-%7$s-%8$s + %1$s, %4$s-%2$s-%3$s - %6$s, %9$s-%7$s-%8$s + %1$s, %4$s-%2$s-%3$s, %5$s - %6$s, %9$s-%7$s-%8$s, %10$s + %2$s-%3$s, %5$s - %7$s-%8$s, %10$s + %1$s, %2$s-%3$s, %5$s - %6$s, %7$s-%8$s, %10$s + %4$s-%2$s-%3$s, %5$s - %9$s-%7$s-%8$s, %10$s + %1$s, %2$s, %3$s - %4$s, %5$s, %6$s + %1$s, %2$s - %4$s, %5$s + %2$s, %3$s - %5$s, %6$s + %1$s, %2$s, %3$s + %2$s, %3$s + %1$s, %2$s + %2$s %3$s - %7$s %8$s + %1$s, %2$s %3$s - %6$s, %7$s %8$s + %2$s %3$s, %5$s - %7$s %8$s, %10$s + %2$s %3$s, %5$s - %7$s %8$s, %10$s + %1$s, %2$s %3$s, %5$s - %6$s, %7$s %8$s, %10$s + %1$s, %2$s %3$s, %5$s - %6$s, %7$s %8$s, %10$s + %2$s %3$s, %4$s, %5$s - %7$s %8$s, %9$s, %10$s + %2$s %3$s, %4$s, %5$s - %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s, %5$s - %6$s, %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s, %5$s - %6$s, %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s - %6$s, %7$s %8$s, %9$s + %2$s %3$s-%8$s + %1$s, %2$s %3$s - %6$s, %7$s %8$s + %2$s %3$s - %7$s %8$s, %9$s + %2$s %3$s-%8$s, %9$s + %1$s, %2$s %3$s - %6$s, %7$s %8$s, %9$s + %b + diff --git a/core/res/res/values-en-rGB/donottranslate-cldr.xml b/core/res/res/values-en-rGB/donottranslate-cldr.xml new file mode 100644 index 000000000000..0e3e035b7587 --- /dev/null +++ b/core/res/res/values-en-rGB/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + January + February + March + April + May + June + July + August + September + October + November + December + + January + February + March + April + May + June + July + August + September + October + November + December + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + J + F + M + A + M + J + J + A + S + O + N + D + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + Su + Mo + Tu + We + Th + Fr + Sa + + S + M + T + W + T + F + S + + am + pm + Yesterday + Today + Tomorrow + + %H:%M + %-l:%M%p + %-l:%M%^p + h:mm a + HH:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e %B %Y + %H:%M:%S + %-e %b %Y, %H:%M:%S + %1$s, %2$s + %1$s, %3$s + %-e %b %Y + %-e %B + %-B + %B %Y + %-e %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s, %3$s/%2$s - %6$s, %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s - %6$s, %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s, %5$s - %6$s, %8$s/%7$s/%9$s, %10$s + %3$s/%2$s, %5$s - %8$s/%7$s, %10$s + %1$s, %3$s/%2$s, %5$s - %6$s, %8$s/%7$s, %10$s + %3$s/%2$s/%4$s, %5$s - %8$s/%7$s/%9$s, %10$s + %1$s %2$s, %3$s - %4$s %5$s, %6$s + %1$s %2$s - %4$s %5$s + %2$s, %3$s - %5$s, %6$s + %1$s, %2$s %3$s + %2$s %3$s + %1$s, %2$s + %3$s %2$s - %8$s %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s, %5$s - %8$s %7$s, %10$s + %3$s %2$s, %5$s - %8$s %7$s, %10$s + %1$s %3$s %2$s, %5$s - %6$s %8$s %7$s, %10$s + %1$s %3$s %2$s, %5$s - %6$s %8$s %7$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %1$s, %3$s %2$s %4$s, %5$s - %6$s, %8$s %7$s %9$s, %10$s + %1$s, %3$s %2$s %4$s, %5$s - %6$s, %8$s %7$s %9$s, %10$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-en-rIE/donottranslate-cldr.xml b/core/res/res/values-en-rIE/donottranslate-cldr.xml new file mode 100644 index 000000000000..2e59dcfeaffa --- /dev/null +++ b/core/res/res/values-en-rIE/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + January + February + March + April + May + June + July + August + September + October + November + December + + January + February + March + April + May + June + July + August + September + October + November + December + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + J + F + M + A + M + J + J + A + S + O + N + D + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + Su + Mo + Tu + We + Th + Fr + Sa + + S + M + T + W + T + F + S + + a.m. + p.m. + Yesterday + Today + Tomorrow + + %H:%M + %-l:%M%p + %-l:%M%^p + h:mm a + HH:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e %B %Y + %H:%M:%S + %-e %b %Y, %H:%M:%S + %1$s, %2$s + %1$s, %3$s + %-e %b %Y + %-e %B + %-B + %B %Y + %-e %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s - %6$s %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s, %5$s - %6$s, %8$s/%7$s/%9$s, %10$s + %3$s/%2$s, %5$s - %8$s/%7$s, %10$s + %1$s, %3$s/%2$s, %5$s - %6$s, %8$s/%7$s, %10$s + %3$s/%2$s/%4$s, %5$s - %8$s/%7$s/%9$s, %10$s + %1$s %2$s, %3$s - %4$s %5$s, %6$s + %1$s %2$s - %4$s %5$s + %2$s, %3$s - %5$s, %6$s + %1$s, %2$s %3$s + %2$s %3$s + %1$s, %2$s + %3$s %2$s - %8$s %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s, %5$s - %8$s %7$s, %10$s + %3$s %2$s, %5$s - %8$s %7$s, %10$s + %1$s %3$s %2$s, %5$s - %6$s %8$s %7$s, %10$s + %1$s %3$s %2$s, %5$s - %6$s %8$s %7$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %1$s %3$s %2$s %4$s, %5$s - %6$s %8$s %7$s %9$s, %10$s + %1$s %3$s %2$s %4$s, %5$s - %6$s %8$s %7$s %9$s, %10$s + %1$s %3$s %2$s %4$s - %6$s %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s %3$s %2$s - %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-en-rIN/donottranslate-cldr.xml b/core/res/res/values-en-rIN/donottranslate-cldr.xml new file mode 100644 index 000000000000..e39a59a84019 --- /dev/null +++ b/core/res/res/values-en-rIN/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + January + February + March + April + May + June + July + August + September + October + November + December + + January + February + March + April + May + June + July + August + September + October + November + December + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + J + F + M + A + M + J + J + A + S + O + N + D + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + Su + Mo + Tu + We + Th + Fr + Sa + + S + M + T + W + T + F + S + + am + pm + Yesterday + Today + Tomorrow + + %H:%M + %-l:%M%p + %-l:%M%^p + h:mm a + HH:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e %B %Y + %-l:%M:%S %p + %d-%b-%Y, %-l:%M:%S %p + %1$s, %2$s + %1$s, %3$s + %d-%b-%Y + %-e %B + %-B + %B %Y + %-e %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s - %6$s %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s, %5$s - %6$s %8$s/%7$s/%9$s, %10$s + %3$s/%2$s, %5$s - %8$s/%7$s, %10$s + %1$s %3$s/%2$s, %5$s - %6$s %8$s/%7$s, %10$s + %3$s/%2$s/%4$s, %5$s - %8$s/%7$s/%9$s, %10$s + %1$s %2$s, %3$s - %4$s %5$s, %6$s + %1$s %2$s - %4$s %5$s + %2$s, %3$s - %5$s, %6$s + %1$s, %2$s %3$s + %2$s %3$s + %1$s, %2$s + %3$s %2$s - %8$s %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s, %5$s - %8$s %7$s, %10$s + %3$s %2$s, %5$s - %8$s %7$s, %10$s + %1$s %3$s %2$s, %5$s - %6$s %8$s %7$s, %10$s + %1$s %3$s %2$s, %5$s - %6$s %8$s %7$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %1$s %3$s %2$s %4$s, %5$s - %6$s %8$s %7$s %9$s, %10$s + %1$s %3$s %2$s %4$s, %5$s - %6$s %8$s %7$s %9$s, %10$s + %1$s %3$s %2$s %4$s - %6$s %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s %3$s %2$s - %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-en-rNZ/donottranslate-cldr.xml b/core/res/res/values-en-rNZ/donottranslate-cldr.xml new file mode 100644 index 000000000000..3a8b50bdb9f5 --- /dev/null +++ b/core/res/res/values-en-rNZ/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + January + February + March + April + May + June + July + August + September + October + November + December + + January + February + March + April + May + June + July + August + September + October + November + December + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + J + F + M + A + M + J + J + A + S + O + N + D + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + Su + Mo + Tu + We + Th + Fr + Sa + + S + M + T + W + T + F + S + + am + pm + Yesterday + Today + Tomorrow + + %H:%M + %-l:%M%p + %-l:%M%^p + h:mm a + HH:mm + %-e/%m/%Y + d/MM/yyyy + "%s/%s/%s" + %-e %B %Y + %-l:%M:%S %p + %-e/%m/%Y, %-l:%M:%S %p + %1$s, %2$s + %1$s, %3$s + %-e/%m/%Y + %-e %B + %-B + %B %Y + %-e %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s, %3$s/%2$s - %6$s, %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s - %6$s, %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s, %5$s - %6$s, %8$s/%7$s/%9$s, %10$s + %3$s/%2$s, %5$s - %8$s/%7$s, %10$s + %1$s, %3$s/%2$s, %5$s - %6$s, %8$s/%7$s, %10$s + %3$s/%2$s/%4$s, %5$s - %8$s/%7$s/%9$s, %10$s + %1$s, %2$s, %3$s - %4$s, %5$s, %6$s + %1$s, %2$s - %4$s, %5$s + %2$s, %3$s - %5$s, %6$s + %1$s, %2$s, %3$s + %2$s, %3$s + %1$s, %2$s + %3$s %2$s - %8$s %7$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %3$s %2$s, %5$s - %8$s %7$s, %10$s + %3$s %2$s, %5$s - %8$s %7$s, %10$s + %1$s, %3$s %2$s, %5$s - %6$s, %8$s %7$s, %10$s + %1$s, %3$s %2$s, %5$s - %6$s, %8$s %7$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %1$s, %3$s %2$s %4$s, %5$s - %6$s, %8$s %7$s %9$s, %10$s + %1$s, %3$s %2$s %4$s, %5$s - %6$s, %8$s %7$s %9$s, %10$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-en-rSG/donottranslate-cldr.xml b/core/res/res/values-en-rSG/donottranslate-cldr.xml new file mode 100644 index 000000000000..286cc0e554f2 --- /dev/null +++ b/core/res/res/values-en-rSG/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + January + February + March + April + May + June + July + August + September + October + November + December + + January + February + March + April + May + June + July + August + September + October + November + December + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + J + F + M + A + M + J + J + A + S + O + N + D + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + Su + Mo + Tu + We + Th + Fr + Sa + + S + M + T + W + T + F + S + + am + pm + Yesterday + Today + Tomorrow + + %H:%M + %-l:%M%p + %-l:%M%^p + h:mm a + HH:mm + %-m/%-e/%Y + M/d/yyyy + "%s/%s/%s" + %B %-e, %Y + %-l:%M:%S %p + %b %-e, %Y, %-l:%M:%S %p + %1$s, %2$s + %1$s, %3$s + %b %-e, %Y + %B %-e + %-B + %B %Y + %b %-e + %-b + %b %Y + %1$s – %2$s + %2$s – %5$s + %2$s/%3$s – %7$s/%8$s + %1$s, %2$s/%3$s – %6$s, %7$s/%8$s + %2$s/%3$s/%4$s – %7$s/%8$s/%9$s + %1$s, %2$s/%3$s/%4$s – %6$s, %7$s/%8$s/%9$s + %1$s, %2$s/%3$s/%4$s, %5$s – %6$s, %7$s/%8$s/%9$s, %10$s + %2$s/%3$s, %5$s – %7$s/%8$s, %10$s + %1$s, %2$s/%3$s, %5$s – %6$s, %7$s/%8$s, %10$s + %2$s/%3$s/%4$s, %5$s – %7$s/%8$s/%9$s, %10$s + %1$s, %2$s, %3$s – %4$s, %5$s, %6$s + %1$s, %2$s – %4$s, %5$s + %2$s, %3$s – %5$s, %6$s + %1$s, %2$s, %3$s + %2$s, %3$s + %1$s, %2$s + %2$s %3$s – %7$s %8$s + %1$s, %2$s %3$s – %6$s, %7$s %8$s + %2$s %3$s, %5$s – %7$s %8$s, %10$s + %2$s %3$s, %5$s – %7$s %8$s, %10$s + %1$s, %2$s %3$s, %5$s – %6$s, %7$s %8$s, %10$s + %1$s, %2$s %3$s, %5$s – %6$s, %7$s %8$s, %10$s + %2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s + %2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s – %6$s, %7$s %8$s, %9$s + %2$s %3$s – %8$s + %1$s, %2$s %3$s – %6$s, %7$s %8$s + %2$s %3$s – %7$s %8$s, %9$s + %2$s %3$s – %8$s, %9$s + %1$s, %2$s %3$s – %6$s, %7$s %8$s, %9$s + %b + diff --git a/core/res/res/values-en-rSG/strings.xml b/core/res/res/values-en-rSG/strings.xml index 6850a5d2835b..2ec6b0b02c48 100644 --- a/core/res/res/values-en-rSG/strings.xml +++ b/core/res/res/values-en-rSG/strings.xml @@ -314,10 +314,6 @@ - - - - @@ -710,7 +706,6 @@ - "h:mm AA" @@ -863,33 +858,21 @@ - "%1$s, %2$s, %3$s%4$s, %5$s, %6$s" - "%1$s, %2$s%4$s, %5$s" - "%d/%m/%Y" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s, %3$s" - "%2$s, %3$s" - "%1$s, %3$s" - "%1$s, %2$s" - "dd MMMM yyyy" - "dd MMM yyyy" @@ -903,71 +886,42 @@ - "%-d %B" - "%-d %B %Y" - "%H:%M:%S" - "%H:%M:%S %-d %B %Y" - "%3$s %2$s%8$s %7$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s" - "%3$s %2$s%8$s %7$s %9$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s %9$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s %10$s" - "%3$s %2$s, %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s, %3$s %2$s %4$s, %5$s%6$s, %8$s %7$s %9$s, %10$s" - "%3$s/%2$s%8$s/%7$s" - "%1$s, %3$s/%2$s%6$s, %8$s/%7$s" - "%3$s/%2$s/%4$s%8$s/%7$s/%9$s" - "%1$s, %3$s/%2$s/%4$s%6$s, %8$s/%7$s/%9$s" - "%3$s/%2$s, %5$s%8$s/%7$s, %10$s" - "%1$s, %3$s/%2$s, %5$s%6$s, %8$s/%7$s, %10$s" - "%3$s/%2$s/%4$s, %5$s%8$s/%7$s/%9$s, %10$s" - "%1$s, %3$s/%2$s/%4$s, %5$s%6$s, %8$s/%7$s/%9$s, %10$s" - "%3$s \u2013 %8$s %2$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s" - "%3$s \u2013 %8$s %2$s %9$s" - "%1$s, %3$s %2$s %4$s%6$s, %8$s %7$s %9$s" - "%3$s %2$s, %5$s%8$s %7$s, %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" - "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s, %3$s %2$s %4$s, %5$s%6$s, %8$s %7$s %9$s, %10$s" - "%-d %b %Y" - "%-d %b" diff --git a/core/res/res/values-en-rUS/donottranslate-cldr.xml b/core/res/res/values-en-rUS/donottranslate-cldr.xml new file mode 100644 index 000000000000..286cc0e554f2 --- /dev/null +++ b/core/res/res/values-en-rUS/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + January + February + March + April + May + June + July + August + September + October + November + December + + January + February + March + April + May + June + July + August + September + October + November + December + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + J + F + M + A + M + J + J + A + S + O + N + D + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + Su + Mo + Tu + We + Th + Fr + Sa + + S + M + T + W + T + F + S + + am + pm + Yesterday + Today + Tomorrow + + %H:%M + %-l:%M%p + %-l:%M%^p + h:mm a + HH:mm + %-m/%-e/%Y + M/d/yyyy + "%s/%s/%s" + %B %-e, %Y + %-l:%M:%S %p + %b %-e, %Y, %-l:%M:%S %p + %1$s, %2$s + %1$s, %3$s + %b %-e, %Y + %B %-e + %-B + %B %Y + %b %-e + %-b + %b %Y + %1$s – %2$s + %2$s – %5$s + %2$s/%3$s – %7$s/%8$s + %1$s, %2$s/%3$s – %6$s, %7$s/%8$s + %2$s/%3$s/%4$s – %7$s/%8$s/%9$s + %1$s, %2$s/%3$s/%4$s – %6$s, %7$s/%8$s/%9$s + %1$s, %2$s/%3$s/%4$s, %5$s – %6$s, %7$s/%8$s/%9$s, %10$s + %2$s/%3$s, %5$s – %7$s/%8$s, %10$s + %1$s, %2$s/%3$s, %5$s – %6$s, %7$s/%8$s, %10$s + %2$s/%3$s/%4$s, %5$s – %7$s/%8$s/%9$s, %10$s + %1$s, %2$s, %3$s – %4$s, %5$s, %6$s + %1$s, %2$s – %4$s, %5$s + %2$s, %3$s – %5$s, %6$s + %1$s, %2$s, %3$s + %2$s, %3$s + %1$s, %2$s + %2$s %3$s – %7$s %8$s + %1$s, %2$s %3$s – %6$s, %7$s %8$s + %2$s %3$s, %5$s – %7$s %8$s, %10$s + %2$s %3$s, %5$s – %7$s %8$s, %10$s + %1$s, %2$s %3$s, %5$s – %6$s, %7$s %8$s, %10$s + %1$s, %2$s %3$s, %5$s – %6$s, %7$s %8$s, %10$s + %2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s + %2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s – %6$s, %7$s %8$s, %9$s + %2$s %3$s – %8$s + %1$s, %2$s %3$s – %6$s, %7$s %8$s + %2$s %3$s – %7$s %8$s, %9$s + %2$s %3$s – %8$s, %9$s + %1$s, %2$s %3$s – %6$s, %7$s %8$s, %9$s + %b + diff --git a/core/res/res/values-en-rUS/strings.xml b/core/res/res/values-en-rUS/strings.xml index b9df983a3fc3..05f30fca350f 100644 --- a/core/res/res/values-en-rUS/strings.xml +++ b/core/res/res/values-en-rUS/strings.xml @@ -314,10 +314,6 @@ - - - - diff --git a/core/res/res/values-en-rZA/donottranslate-cldr.xml b/core/res/res/values-en-rZA/donottranslate-cldr.xml new file mode 100644 index 000000000000..2e2d6080d71c --- /dev/null +++ b/core/res/res/values-en-rZA/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + January + February + March + April + May + June + July + August + September + October + November + December + + January + February + March + April + May + June + July + August + September + October + November + December + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + J + F + M + A + M + J + J + A + S + O + N + D + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + Su + Mo + Tu + We + Th + Fr + Sa + + S + M + T + W + T + F + S + + am + pm + Yesterday + Today + Tomorrow + + %H:%M + %-l:%M%p + %-l:%M%^p + h:mm a + HH:mm + %Y/%m/%d + yyyy/MM/dd + "%s/%s/%s" + %d %B %Y + %-l:%M:%S %p + %d %b %Y, %-l:%M:%S %p + %1$s, %2$s + %1$s, %3$s + %d %b %Y + %B %-e + %-B + %B %Y + %d %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %2$s/%3$s - %7$s/%8$s + %1$s %2$s/%3$s - %6$s %7$s/%8$s + %4$s/%2$s/%3$s - %9$s/%7$s/%8$s + %1$s %4$s/%2$s/%3$s - %6$s %9$s/%7$s/%8$s + %1$s %4$s/%2$s/%3$s, %5$s - %6$s %9$s/%7$s/%8$s, %10$s + %2$s/%3$s, %5$s - %7$s/%8$s, %10$s + %1$s %2$s/%3$s, %5$s - %6$s %7$s/%8$s, %10$s + %4$s/%2$s/%3$s, %5$s - %9$s/%7$s/%8$s, %10$s + %1$s %2$s, %3$s - %4$s %5$s, %6$s + %1$s %2$s - %4$s %5$s + %2$s, %3$s - %5$s, %6$s + %1$s, %2$s %3$s + %2$s %3$s + %1$s, %2$s + %2$s %3$s - %7$s %8$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %2$s %3$s, %5$s - %7$s %8$s, %10$s + %2$s %3$s, %5$s - %7$s %8$s, %10$s + %1$s %3$s %2$s, %5$s - %6$s %8$s %7$s, %10$s + %1$s %3$s %2$s, %5$s - %6$s %8$s %7$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %3$s %2$s %4$s, %5$s - %8$s %7$s %9$s, %10$s + %1$s %3$s %2$s %4$s, %5$s - %6$s %8$s %7$s %9$s, %10$s + %1$s %3$s %2$s %4$s, %5$s - %6$s %8$s %7$s %9$s, %10$s + %1$s %3$s %2$s %4$s - %6$s %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s %3$s %2$s - %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-es-rES/donottranslate-cldr.xml b/core/res/res/values-es-rES/donottranslate-cldr.xml new file mode 100644 index 000000000000..c1dc58b815d0 --- /dev/null +++ b/core/res/res/values-es-rES/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + enero + febrero + marzo + abril + mayo + junio + julio + agosto + septiembre + octubre + noviembre + diciembre + + enero + febrero + marzo + abril + mayo + junio + julio + agosto + septiembre + octubre + noviembre + diciembre + + ene + feb + mar + abr + may + jun + jul + ago + sep + oct + nov + dic + + E + F + M + A + M + J + J + A + S + O + N + D + + domingo + lunes + martes + miércoles + jueves + viernes + sábado + + dom + lun + mar + mié + jue + vie + sáb + + dom + lun + mar + mié + jue + vie + sáb + + D + L + M + M + J + V + S + + a.m. + p.m. + ayer + hoy + mañana + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e de %B de %Y + %H:%M:%S + %H:%M:%S %d/%m/%Y + %2$s %1$s + %1$s %3$s + %d/%m/%Y + %-e de %B + %-B + %B de %Y + %-e %b + %-b + %b %Y + %1$s – %2$s + %2$s – %5$s + %3$s/%2$s – %8$s/%7$s + %1$s %3$s/%2$s – %6$s %8$s/%7$s + %3$s/%2$s/%4$s – %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s – %6$s %8$s/%7$s/%9$s + %5$s %1$s %3$s/%2$s/%4$s – %10$s %6$s %8$s/%7$s/%9$s + %5$s %3$s/%2$s – %10$s %8$s/%7$s + %5$s %1$s, %3$s-%2$s – %10$s %6$s, %8$s-%7$s + %5$s %3$s/%2$s/%4$s – %10$s %8$s/%7$s/%9$s + %3$s %1$s %2$s – %6$s %4$s %5$s + %1$s %2$s – %4$s %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s de %2$s – %8$s de %7$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %5$s %3$s de %2$s – %10$s %8$s de %7$s + %5$s %3$s de %2$s – %10$s %8$s de %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s – %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s – %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s – %6$s, %8$s %7$s %9$s + %3$s–%8$s %2$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %3$s %2$s – %8$s %7$s %9$s + %3$s–%8$s %2$s %9$s + %1$s %3$s %2$s – %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-es-rUS/donottranslate-cldr.xml b/core/res/res/values-es-rUS/donottranslate-cldr.xml new file mode 100644 index 000000000000..d6d89540af91 --- /dev/null +++ b/core/res/res/values-es-rUS/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + enero + febrero + marzo + abril + mayo + junio + julio + agosto + septiembre + octubre + noviembre + diciembre + + enero + febrero + marzo + abril + mayo + junio + julio + agosto + septiembre + octubre + noviembre + diciembre + + ene + feb + mar + abr + may + jun + jul + ago + sep + oct + nov + dic + + E + F + M + A + M + J + J + A + S + O + N + D + + domingo + lunes + martes + miércoles + jueves + viernes + sábado + + dom + lun + mar + mié + jue + vie + sáb + + dom + lun + mar + mié + jue + vie + sáb + + D + L + M + M + J + V + S + + a.m. + p.m. + ayer + hoy + mañana + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %-m/%-e/%Y + M/d/yyyy + "%s/%s/%s" + %-e de %B de %Y + %-l:%M:%S %p + %-l:%M:%S %p %b %-e, %Y + %2$s %1$s + %1$s %3$s + %b %-e, %Y + %-e de %B + %-B + %B de %Y + %-e de %b + %b + %b de %Y + %1$s a el %2$s + %2$s a el %5$s + %2$s/%3$s - %7$s/%8$s + %1$s %2$s/%3$s - %6$s %7$s/%8$s + %2$s/%3$s/%4$s - %7$s/%8$s/%9$s + %1$s %2$s/%3$s/%4$s - %6$s %7$s/%8$s/%9$s + %5$s %1$s %2$s/%3$s/%4$s a el %10$s %6$s %7$s/%8$s/%9$s + %5$s %2$s/%3$s a el %10$s %7$s/%8$s + %5$s %1$s %2$s/%3$s a el %10$s %6$s %7$s/%8$s + %5$s %2$s/%3$s/%4$s a el %10$s %7$s/%8$s/%9$s + %3$s %1$s %2$s a el %6$s %4$s %5$s + %1$s %2$s a el %4$s %5$s + %3$s %2$s a el %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s de %2$s a el %8$s de %7$s + %1$s %3$s de %2$s a el %6$s %8$s de %7$s + %5$s %3$s de %2$s a el %10$s %8$s de %7$s + %5$s %3$s de %2$s a el %10$s %8$s de %7$s + %5$s %1$s %3$s de %2$s a el %10$s %6$s %8$s de %7$s + %5$s %1$s %3$s de %2$s a el %10$s %6$s %8$s de %7$s + %5$s %3$s de %2$s de %4$s a el %10$s %8$s de %7$s de %9$s + %5$s %3$s de %2$s de %4$s a el %10$s %8$s de %7$s de %9$s + %5$s %1$s %3$s de %2$s de %4$s a el %10$s %6$s %8$s de %7$s de %9$s + %5$s %1$s %3$s de %2$s de %4$s a el %10$s %6$s %8$s de %7$s de %9$s + %1$s %3$s de %2$s de %4$s a el %6$s %8$s de %7$s de %9$s + %3$s-%8$s de %2$s + %1$s %3$s de %2$s a el %6$s %8$s de %7$s + %3$s de %2$s al %8$s de %7$s de %9$s + %3$s-%8$s de %2$s de %9$s + %1$s %3$s de %2$s al %6$s %8$s de %7$s de %9$s + %b + diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 7b60a39f042b..84435aa8dee8 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -178,14 +178,10 @@ "Admite una aplicación para cambiar la configuración actual, como el tamaño de fuente local o general." "reiniciar otras aplicaciones" "Admite una aplicación que reinicia otras aplicaciones por la fuerza." - "impedir la detención" - "Admite una aplicación que ejecuta cualquier tipo de proceso en primer plano, de manera que no se pueda suprimir. Se debe evitar utilizarlo en aplicaciones normales." "provocar que la aplicación se acerque" "Admite una aplicación que provoca que cualquier actividad del fondo se acerque y vuelva a alejarse. Se debe evitar utilizarlo en aplicaciones normales." "recuperar el estado interno del sistema" "Admite que la aplicación recupere el estado interno del sistema. Las aplicaciones maliciosas pueden recuperar una gran variedad de información privada y segura que normalmente nunca necesitaría." - "publicar servicios de bajo nivel" - "Admite que la aplicación publique sus propios servicios del sistema de bajo nivel. Las aplicaciones maliciosas pueden apropiarse del sistema y robar o corromper cualquiera de sus datos." "verificar y controlar todos los lanzamientos de actividades" "Admite una aplicación que verifica y controla el lanzamiento de actividades por parte del sistema. Las aplicaciones maliciosas pueden comprometer totalmente al sistema. Este permiso sólo es necesario para el desarrollo, nunca para el uso normal del teléfono." "enviar emisión de paquete eliminado" @@ -198,8 +194,6 @@ "Admite una aplicación que controla la cantidad máxima de procesos que se ejecutarán. No se utiliza nunca en aplicaciones normales." "cerrar todas las aplicaciones del fondo" "Admite una aplicación que controla si las actividades siempre finalizan cuando van al fondo. No se utiliza nunca en aplicaciones normales." - "instalar automáticamente las actualizaciones del sistema" - "Admite una aplicación que recibe notificaciones sobre las actualizaciones pendientes del sistema y activa su instalación. Las aplicaciones maliciosas pueden utilizarlo para corromper el sistema con actualizaciones no autorizadas o, en general, para interferir en el proceso de actualización." "modificar la estadística de la batería" "Admite la modificación de estadísticas recopiladas sobre la batería. Las aplicaciones normales no deben utilizarlo." "mostrar ventanas no autorizadas" @@ -436,9 +430,6 @@ "Contraseña" "Inicia sesión" "Nombre de usuario o contraseña incorrecta." - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "Borrar notificaciones" @@ -470,9 +461,6 @@ "ingresar" "borrar" "Buscar" - "Hoy" - "Ayer" - "Mañana" "hace 1 mes" "Anterior a 1 mes atrás" @@ -554,13 +542,6 @@ "semanas" "año" "años" - "Domingo" - "Lunes" - "Martes" - "Miércoles" - "Jueves" - "Viernes" - "Sábado" "Los días de semana (lunes a viernes)" "Diariamente" "Semanalmente el día %s" @@ -570,137 +551,15 @@ "Lo sentimos, este video no es válido para las transmisiones a este dispositivo." "Lo sentimos, no se puede reproducir este video." "Aceptar" - "AM" - "PM" - "%m/%d/%Y" - "%1$s, %2$s, %3$s%4$s, %5$s, %6$s" - "%1$s, %2$s%4$s, %5$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s, %3$s" - "%2$s, %3$s" - "%1$s, %3$s" - "%1$s, %2$s" "%1$s, %2$s" - "%1$s, %2$s" - "MMMM' 'd', 'yyyy" - "d' 'MMMM', 'yyyy" - "MMM' 'd', 'yyyy" - "d' 'MMM', 'yyyy" - "h':'mm' 'a" - "HH':'mm" "mediodía" "Mediodía" "medianoche" "Medianoche" - "%B %-d" - "%B %-d, %Y" - "%B %Y" - "%H:%M:%S" - "%H:%M:%S %B %-d, %Y" - "%2$s %3$s%7$s %8$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s" - "%2$s %3$s%7$s %8$s, %9$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s, %9$s" - "%2$s %3$s, %5$s%7$s %8$s, %10$s" - "%1$s, %2$s %3$s, %5$s%6$s, %7$s %8$s, %10$s" - "%2$s %3$s, %4$s, %5$s%7$s %8$s, %9$s, %10$s" - "%1$s, %2$s %3$s, %4$s, %5$s%6$s, %7$s %8$s, %9$s, %10$s" - "%2$s/%3$s%7$s/%8$s" - "%1$s, %2$s/%3$s%6$s, %7$s/%8$s" - "%2$s/%3$s/%4$s%7$s/%8$s/%9$s" - "%1$s, %2$s/%3$s/%4$s%6$s, %7$s/%8$s/%9$s" - "%2$s/%3$s, %5$s%7$s/%8$s, %10$s" - "%1$s, %2$s/%3$s, %5$s%6$s, %7$s/%8$s, %10$s" - "%2$s/%3$s/%4$s, %5$s%7$s/%8$s/%9$s, %10$s" - "%1$s, %2$s/%3$s/%4$s, %5$s%6$s, %7$s/%8$s/%9$s, %10$s" - "%2$s %3$s%8$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s" - "%2$s %3$s%8$s, %9$s" - "%1$s, %2$s %3$s, %4$s%6$s, %7$s %8$s, %9$s" - "%2$s %3$s, %5$s%7$s %8$s, %10$s" - "%1$s, %2$s %3$s, %5$s%6$s, %7$s %8$s, %10$s" - "%2$s %3$s, %4$s, %5$s%7$s %8$s, %9$s, %10$s" - "%1$s, %2$s %3$s, %4$s, %5$s%6$s, %7$s %8$s, %9$s, %10$s" - "%b %-d, %Y" - "%b %Y" - "%b %-d" - "Domingo" - "Lunes" - "Martes" - "Miércoles" - "Jueves" - "Viernes" - "Sábado" - "Dom." - "Lun." - "Mar." - "Mié." - "Jue." - "Vie." - "Sáb." - "Dom." - "Lun." - "Mar." - "Nosotros" - "Jue." - "V" - "Sáb." - "Dom." - "L" - "Mar." - "M" - "Jue." - "V" - "Sáb." - "D" - "L" - "Mar." - "M" - "Jue." - "V" - "D" - "Enero" - "Febrero" - "Marzo" - "Abril" - "Mayo" - "Junio" - "Julio" - "Agosto" - "Septiembre" - "Octubre" - "Noviembre" - "Diciembre" - "Ene." - "Feb." - "Mar." - "Abr." - "Mayo" - "Jun." - "Jul." - "Ago." - "Sep." - "Oct." - "Nov." - "Dic." - "E" - "V" - "M" - "A" - "M" - "E" - "J" - "Ago." - "D" - "O" - "N" - "Dic." "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Seleccionar todos" diff --git a/core/res/res/values-es/donottranslate-cldr.xml b/core/res/res/values-es/donottranslate-cldr.xml new file mode 100644 index 000000000000..c1dc58b815d0 --- /dev/null +++ b/core/res/res/values-es/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + enero + febrero + marzo + abril + mayo + junio + julio + agosto + septiembre + octubre + noviembre + diciembre + + enero + febrero + marzo + abril + mayo + junio + julio + agosto + septiembre + octubre + noviembre + diciembre + + ene + feb + mar + abr + may + jun + jul + ago + sep + oct + nov + dic + + E + F + M + A + M + J + J + A + S + O + N + D + + domingo + lunes + martes + miércoles + jueves + viernes + sábado + + dom + lun + mar + mié + jue + vie + sáb + + dom + lun + mar + mié + jue + vie + sáb + + D + L + M + M + J + V + S + + a.m. + p.m. + ayer + hoy + mañana + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e de %B de %Y + %H:%M:%S + %H:%M:%S %d/%m/%Y + %2$s %1$s + %1$s %3$s + %d/%m/%Y + %-e de %B + %-B + %B de %Y + %-e %b + %-b + %b %Y + %1$s – %2$s + %2$s – %5$s + %3$s/%2$s – %8$s/%7$s + %1$s %3$s/%2$s – %6$s %8$s/%7$s + %3$s/%2$s/%4$s – %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s – %6$s %8$s/%7$s/%9$s + %5$s %1$s %3$s/%2$s/%4$s – %10$s %6$s %8$s/%7$s/%9$s + %5$s %3$s/%2$s – %10$s %8$s/%7$s + %5$s %1$s, %3$s-%2$s – %10$s %6$s, %8$s-%7$s + %5$s %3$s/%2$s/%4$s – %10$s %8$s/%7$s/%9$s + %3$s %1$s %2$s – %6$s %4$s %5$s + %1$s %2$s – %4$s %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s de %2$s – %8$s de %7$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %5$s %3$s de %2$s – %10$s %8$s de %7$s + %5$s %3$s de %2$s – %10$s %8$s de %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s – %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s – %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s – %6$s, %8$s %7$s %9$s + %3$s–%8$s %2$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %3$s %2$s – %8$s %7$s %9$s + %3$s–%8$s %2$s %9$s + %1$s %3$s %2$s – %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index a9f267a308b1..920ac3e5dcd0 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -161,14 +161,10 @@ "Permite que una aplicación cambie la configuración actual como, por ejemplo, la configuración local o el tamaño de fuente general." "reiniciar otras aplicaciones" "Permite que una aplicación reinicie de forma forzosa otras aplicaciones." - "impedir su interrupción" - "Permite que una aplicación ejecute cualquier proceso en segundo plano, de forma que no se pueda interrumpir. No debería ser necesario nunca para las aplicaciones normales." "forzar el cierre de la aplicación" "Permite que una aplicación fuerce a cualquier actividad en segundo plano a cerrarse y volver a la pantalla anterior. No debería ser necesario nunca para las aplicaciones normales." "recuperar estado interno del sistema" "Permite que la aplicación recupere el estado interno del sistema. Las aplicaciones malintencionadas pueden recuperar una amplia variedad de información protegida y privada que normalmente no deberían necesitar." - "publicar servicios de nivel inferior" - "Permite que la aplicación publique sus propios servicios de sistema de nivel inferior. Las aplicaciones malintencionadas pueden hacerse con el control del sistema, y robar o dañar los datos contenidos en él." "supervisar y controlar la ejecución de todas las aplicaciones" "Permite que una aplicación supervise y controle la ejecución de las actividades por parte del sistema. Las aplicaciones malintencionadas pueden vulnerar la seguridad del sistema. Este permiso sólo es necesario para tareas de desarrollo, nunca para el uso habitual del teléfono." "enviar emisión eliminada de paquete" @@ -181,8 +177,6 @@ "Permite que una aplicación controle el número máximo de procesos que se ejecutarán. No es necesario nunca para las aplicaciones normales." "hacer que se cierren todas las aplicaciones en segundo plano" "Permite que una aplicación controle si las actividades finalizan siempre en cuanto pasan a segundo plano. No es necesario nunca para las aplicaciones normales." - "instalar actualizaciones del sistema de forma automática" - "Permite que una aplicación reciba notificaciones sobre actualizaciones pendientes del sistema e inicie su instalación. Las aplicaciones malintencionadas pueden utilizar este permiso para provocar daños en el sistema con actualizaciones no autorizadas o interferir de forma general en el proceso de actualización." "modificar estadísticas de la batería" "Permite la modificación de estadísticas recopiladas sobre la batería. No está destinado al uso por parte de aplicaciones normales." "mostrar ventanas no autorizadas" @@ -418,9 +412,6 @@ "Contraseña" "Acceder" "Nombre de usuario o contraseña no válido" - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "Cerrar notificaciones" @@ -452,9 +443,6 @@ "intro" "suprimir" "Buscar" - "Hoy" - "Ayer" - "Mañana" "Hace un mes" "Hace más de un mes" @@ -536,13 +524,6 @@ "semanas" "año" "años" - "Domingo" - "Lunes" - "Martes" - "Miércoles" - "Jueves" - "Viernes" - "Sábado" "Todos los días laborables (Lun-Vie)" "Diariamente" "Semanalmente, el %s" @@ -552,137 +533,15 @@ "Este vídeo no se puede transmitir al dispositivo." "Este vídeo no se puede reproducir." "Aceptar" - "a.m." - "p.m." - "%d/%m/%Y" - "%1$s, %2$s, %3$s%4$s, %5$s, %6$s" - "%1$s, %2$s%4$s, %5$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s, %3$s" - "%2$s, %3$s" - "%1$s, %3$s" - "%1$s, %2$s" "%1$s, %2$s" - "%1$s, %2$s" - "d' de 'MMMM' de 'yyyy" - "d' de 'MMMM' de 'yyyy" - "d' de 'MMM' de 'yyyy" - "d' 'MMM', 'yyyy" - "h':'mm' 'a" - "HH':'mm" "mediodía" "Mediodía" "medianoche" "Medianoche" - "%-d %B" - "%-d %B, %Y" - "%B %Y" - "%H:%M:%S" - "%H:%M:%S %B %-d, %Y" - "%3$s %2$s%8$s %7$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s" - "%3$s %2$s%8$s %7$s, %9$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s, %9$s" - "%3$s de %2$s, %5$s%8$s de %7$s, %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" - "%3$s de %2$s de %4$s, %5$s%8$s de %7$s de %9$s, %10$s" - "%1$s, %3$s %2$s, %4$s, %5$s%6$s, %8$s %7$s, %9$s, %10$s" - "%3$s/%2$s%8$s/%7$s" - "%1$s, %2$s/%3$s%6$s, %7$s/%8$s" - "%3$s/%2$s/%4$s%8$s/%7$s/%9$s" - "%1$s, %3$s/%2$s/%4$s%6$s, %8$s/%7$s/%9$s" - "%3$s/%2$s, %5$s%8$s/%7$s, %10$s" - "%1$s, %3$s/%2$s, %5$s%6$s, %8$s/%7$s, %10$s" - "%3$s/%2$s/%4$s, %5$s%8$s/%7$s/%9$s, %10$s" - "%1$s, %3$s/%2$s/%4$s, %5$s%6$s, %8$s/%7$s/%9$s, %10$s" - "%3$s%8$s %2$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s" - "%3$s%8$s %2$s, %9$s" - "%1$s, %3$s de %2$s de %4$s%6$s, %8$s de %7$s de %9$s" - "%3$s %2$s, %5$s%8$s %7$s, %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" - "%2$s %3$s, %4$s, %5$s%7$s %8$s, %9$s, %10$s" - "%1$s, %2$s %3$s, %4$s, %5$s%6$s, %7$s %8$s, %9$s, %10$s" - "%-d de %b de %Y" - "%b %Y" - "%b %-d" - "Domingo" - "Lunes" - "Martes" - "Miércoles" - "Jueves" - "Viernes" - "Sábado" - "Dom" - "Lun" - "Mar" - "Mié" - "Jue" - "Vie" - "Sáb" - "Do" - "Lu" - "Ma" - "Mi" - "Ju" - "Vi" - "Sá" - "Do" - "L" - "Ma" - "Mi" - "Ju" - "V" - "S" - "D" - "Mz" - "M" - "Mi" - "M" - "V" - "D" - "Enero" - "Febrero" - "Marzo" - "Abril" - "Mayo" - "Junio" - "Julio" - "Agosto" - "Septiembre" - "Octubre" - "Noviembre" - "Diciembre" - "Ene" - "Feb" - "Mar" - "Abr" - "May" - "Jun" - "Jul" - "Ago" - "Sep" - "Oct" - "Nov" - "Dic" - "E" - "V" - "Mz" - "A" - "My" - "J" - "E" - "Ag" - "S" - "O" - "N" - "D" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Seleccionar todo" diff --git a/core/res/res/values-fi-rFI/donottranslate-cldr.xml b/core/res/res/values-fi-rFI/donottranslate-cldr.xml new file mode 100644 index 000000000000..df3866e72bda --- /dev/null +++ b/core/res/res/values-fi-rFI/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + tammikuu + helmikuu + maaliskuu + huhtikuu + toukokuu + kesäkuu + heinäkuu + elokuu + syyskuu + lokakuu + marraskuu + joulukuu + + tammikuuta + helmikuuta + maaliskuuta + huhtikuuta + toukokuuta + kesäkuuta + heinäkuuta + elokuuta + syyskuuta + lokakuuta + marraskuuta + joulukuuta + + tammikuuta + helmikuuta + maaliskuuta + huhtikuuta + toukokuuta + kesäkuuta + heinäkuuta + elokuuta + syyskuuta + lokakuuta + marraskuuta + joulukuuta + + T + H + M + H + T + K + H + E + S + L + M + J + + sunnuntaina + maanantaina + tiistaina + keskiviikkona + torstaina + perjantaina + lauantaina + + su + ma + ti + ke + to + pe + la + + su + ma + ti + ke + to + pe + la + + S + M + T + K + T + P + L + + ap. + ip. + eilen + tänään + huomenna + + %-k.%M + %-l.%M %p + %-l.%M %^p + h.mm a + H.mm + %-e.%-m.%Y + d.M.yyyy + "%s.%s.%s" + %-e. %B %Y + %-k.%M.%S + %-k.%M.%S %-e.%-m.%Y + %2$s %1$s + %1$s %3$s + %-e.%-m.%Y + %-e. %B + %-b + %-B %Y + %-e. %b + %-b + %-b %Y + %1$s–%2$s + %2$s–%5$s + %3$s.%2$s.–%8$s.%7$s. + %1$s %3$s.%2$s. – %6$s %8$s.%7$s. + %3$s.%2$s.%4$s–%8$s.%7$s.%9$s + %1$s %3$s.%2$s.%4$s – %6$s %8$s.%7$s.%9$s + %5$s %1$s %3$s.%2$s.%4$s–%10$s %6$s %8$s.%7$s.%9$s + %5$s %3$s.%2$s.–%10$s %8$s.%7$s. + %5$s %1$s %3$s.%2$s.–%10$s %6$s %8$s.%7$s. + %5$s %3$s.%2$s.%4$s–%10$s %8$s.%7$s.%9$s + %3$s %1$s %2$s–%6$s %4$s %5$s + %1$s %2$s–%4$s %5$s + %3$s %2$s–%6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s. %2$s–%8$s. %7$s + %1$s %3$s. %2$s–%6$s %8$s. %7$s + %5$s %3$s. %2$s–%10$s %8$s. %7$s + %5$s %3$s. %2$s–%10$s %8$s. %7$s + %5$s %1$s %3$s. %2$s–%10$s %6$s %8$s. %7$s + %5$s %1$s %3$s. %2$s–%10$s %6$s %8$s. %7$s + %5$s %3$s. %2$s %4$s–%10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s–%10$s %8$s. %7$s %9$s + %5$s %1$s %3$s. %2$s %4$s–%10$s %6$s %8$s. %7$s %9$s + %5$s %1$s %3$s. %2$s %4$s–%10$s %6$s %8$s. %7$s %9$s + %1$s %3$s. %2$s %4$s–%6$s %8$s. %7$s %9$s + %3$s.–%8$s. %2$s + %1$s %3$s. %2$s–%6$s %8$s. %7$s + %3$s. %2$s – %8$s. %7$s %9$s + %3$s.–%8$s. %2$s %9$s + %1$s %3$s. %2$s – %6$s %8$s. %7$s %9$s + %b + diff --git a/core/res/res/values-fr-rBE/donottranslate-cldr.xml b/core/res/res/values-fr-rBE/donottranslate-cldr.xml new file mode 100644 index 000000000000..e1908373a3fe --- /dev/null +++ b/core/res/res/values-fr-rBE/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + janv. + févr. + mars + avr. + mai + juin + juil. + août + sept. + oct. + nov. + déc. + + J + F + M + A + M + J + J + A + S + O + N + D + + dimanche + lundi + mardi + mercredi + jeudi + vendredi + samedi + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + D + L + M + M + J + V + S + + matin + soir + hier + aujourd’hui + demain + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %-e/%m/%Y + d/MM/yyyy + "%s/%s/%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %-e %b %Y + %2$s %1$s + %1$s %3$s + %-e %b %Y + %-e %B + %-B + %B %Y + %-e %b + %b + %b %Y + du %1$s au %2$s + du %2$s au %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s - %6$s %8$s/%7$s/%9$s + du %5$s %1$s %3$s/%2$s/%4$s au %10$s %6$s %8$s/%7$s/%9$s + du %5$s %3$s/%2$s au %10$s %8$s/%7$s + du %5$s %1$s %3$s/%2$s au %10$s %6$s %8$s/%7$s + du %5$s %3$s/%2$s/%4$s au %10$s %8$s/%7$s/%9$s + du %3$s %1$s %2$s au %6$s %4$s %5$s + du %1$s %2$s au %4$s %5$s + du %3$s %2$s au %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + du %3$s %2$s au %8$s %7$s + du %1$s %3$s %2$s au %6$s %8$s %7$s + du %5$s %3$s %2$s au %10$s %8$s %7$s + du %5$s %3$s %2$s au %10$s %8$s %7$s + du %5$s %1$s %3$s %2$s au %10$s %6$s %8$s %7$s + du %5$s %1$s %3$s %2$s au %10$s %6$s %8$s %7$s + du %5$s %3$s %2$s %4$s au %10$s %8$s %7$s %9$s + du %5$s %3$s %2$s %4$s au %10$s %8$s %7$s %9$s + du %5$s %1$s %3$s %2$s %4$s au %10$s %6$s %8$s %7$s %9$s + du %5$s %1$s %3$s %2$s %4$s au %10$s %6$s %8$s %7$s %9$s + du %1$s %3$s %2$s %4$s au %6$s %8$s %7$s %9$s + %3$s-%8$s %2$s + du %1$s %3$s %2$s au %6$s %8$s %7$s + %3$s %2$s au %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s %3$s %2$s au %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-fr-rCA/donottranslate-cldr.xml b/core/res/res/values-fr-rCA/donottranslate-cldr.xml new file mode 100644 index 000000000000..346b97107331 --- /dev/null +++ b/core/res/res/values-fr-rCA/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + janv. + févr. + mars + avr. + mai + juin + juil. + août + sept. + oct. + nov. + déc. + + J + F + M + A + M + J + J + A + S + O + N + D + + dimanche + lundi + mardi + mercredi + jeudi + vendredi + samedi + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + D + L + M + M + J + V + S + + matin + soir + hier + aujourd’hui + demain + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %Y-%m-%d + yyyy-MM-dd + "%s-%s-%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %Y-%m-%d + %2$s %1$s + %1$s %3$s + %Y-%m-%d + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s – %2$s + %2$s – %5$s + %2$s-%3$s – %7$s-%8$s + %1$s %2$s-%3$s – %6$s %7$s-%8$s + %4$s-%2$s-%3$s – %9$s-%7$s-%8$s + du %1$s %4$s-%2$s-%3$s au %6$s %9$s-%7$s-%8$s + %5$s %1$s %4$s-%2$s-%3$s – %10$s %6$s %9$s-%7$s-%8$s + %5$s %2$s-%3$s – %10$s %7$s-%8$s + %5$s %1$s %2$s-%3$s – %10$s %6$s %7$s-%8$s + %5$s %4$s-%2$s-%3$s – %10$s %9$s-%7$s-%8$s + %3$s %1$s %2$s – %6$s %4$s %5$s + %1$s %2$s – %4$s %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s – %8$s %7$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s – %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s – %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s – %6$s %8$s %7$s %9$s + %3$s–%8$s %2$s + %1$s %3$s %2$s – %6$s %8$s %7$s + du %3$s %2$s au %8$s %7$s %9$s + %3$s–%8$s %2$s %9$s + du %1$s %3$s %2$s au %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-fr-rCH/donottranslate-cldr.xml b/core/res/res/values-fr-rCH/donottranslate-cldr.xml new file mode 100644 index 000000000000..48db6b8d4169 --- /dev/null +++ b/core/res/res/values-fr-rCH/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + janv. + févr. + mars + avr. + mai + juin + juil. + août + sept. + oct. + nov. + déc. + + J + F + M + A + M + J + J + A + S + O + N + D + + dimanche + lundi + mardi + mercredi + jeudi + vendredi + samedi + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + D + L + M + M + J + V + S + + matin + soir + hier + aujourd’hui + demain + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %-e %b %Y + %2$s %1$s + %1$s %3$s + %-e %b %Y + %-e %B + %-B + %B %Y + %-e %b + %b + %b %Y + du %1$s au %2$s + du %2$s au %5$s + %3$s.%2$s - %8$s.%7$s + %1$s, %3$s.%2$s - %6$s, %8$s.%7$s + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + du %5$s %1$s, %3$s.%2$s.%4$s au %10$s %6$s, %8$s.%7$s.%9$s + du %5$s %3$s.%2$s au %10$s %8$s.%7$s + du %5$s %1$s, %3$s.%2$s au %10$s %6$s, %8$s.%7$s + du %5$s %3$s.%2$s.%4$s au %10$s %8$s.%7$s.%9$s + du %3$s %1$s, %2$s au %6$s %4$s, %5$s + du %1$s, %2$s au %4$s, %5$s + du %3$s %2$s au %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + du %3$s %2$s au %8$s %7$s + du %1$s, %3$s %2$s au %6$s, %8$s %7$s + du %5$s %3$s %2$s au %10$s %8$s %7$s + du %5$s %3$s %2$s au %10$s %8$s %7$s + du %5$s %1$s, %3$s %2$s au %10$s %6$s, %8$s %7$s + du %5$s %1$s, %3$s %2$s au %10$s %6$s, %8$s %7$s + du %5$s %3$s %2$s %4$s au %10$s %8$s %7$s %9$s + du %5$s %3$s %2$s %4$s au %10$s %8$s %7$s %9$s + du %5$s %1$s, %3$s %2$s %4$s au %10$s %6$s, %8$s %7$s %9$s + du %5$s %1$s, %3$s %2$s %4$s au %10$s %6$s, %8$s %7$s %9$s + du %1$s, %3$s %2$s %4$s au %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + du %1$s, %3$s %2$s au %6$s, %8$s %7$s + %3$s %2$s au %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s, %3$s %2$s au %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-fr-rFR/donottranslate-cldr.xml b/core/res/res/values-fr-rFR/donottranslate-cldr.xml new file mode 100644 index 000000000000..f340e8384116 --- /dev/null +++ b/core/res/res/values-fr-rFR/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + janv. + févr. + mars + avr. + mai + juin + juil. + août + sept. + oct. + nov. + déc. + + J + F + M + A + M + J + J + A + S + O + N + D + + dimanche + lundi + mardi + mercredi + jeudi + vendredi + samedi + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + D + L + M + M + J + V + S + + matin + soir + hier + aujourd’hui + demain + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %-e %b %Y + %2$s %1$s + %1$s %3$s + %-e %b %Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s – %2$s + %2$s – %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s – %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s – %6$s %8$s/%7$s/%9$s + %5$s %1$s %3$s/%2$s/%4$s – %10$s %6$s %8$s/%7$s/%9$s + %5$s %3$s/%2$s – %10$s %8$s/%7$s + %5$s %1$s %3$s/%2$s – %10$s %6$s %8$s/%7$s + %5$s %3$s/%2$s/%4$s – %10$s %8$s/%7$s/%9$s + %3$s %1$s %2$s – %6$s %4$s %5$s + %1$s %2$s – %4$s %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s – %8$s %7$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s – %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s – %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s – %6$s %8$s %7$s %9$s + %3$s–%8$s %2$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %3$s %2$s – %8$s %7$s %9$s + %3$s–%8$s %2$s %9$s + %1$s %3$s %2$s – %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-fr/donottranslate-cldr.xml b/core/res/res/values-fr/donottranslate-cldr.xml new file mode 100644 index 000000000000..f340e8384116 --- /dev/null +++ b/core/res/res/values-fr/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + janv. + févr. + mars + avr. + mai + juin + juil. + août + sept. + oct. + nov. + déc. + + J + F + M + A + M + J + J + A + S + O + N + D + + dimanche + lundi + mardi + mercredi + jeudi + vendredi + samedi + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + D + L + M + M + J + V + S + + matin + soir + hier + aujourd’hui + demain + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %-e %b %Y + %2$s %1$s + %1$s %3$s + %-e %b %Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s – %2$s + %2$s – %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s – %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s – %6$s %8$s/%7$s/%9$s + %5$s %1$s %3$s/%2$s/%4$s – %10$s %6$s %8$s/%7$s/%9$s + %5$s %3$s/%2$s – %10$s %8$s/%7$s + %5$s %1$s %3$s/%2$s – %10$s %6$s %8$s/%7$s + %5$s %3$s/%2$s/%4$s – %10$s %8$s/%7$s/%9$s + %3$s %1$s %2$s – %6$s %4$s %5$s + %1$s %2$s – %4$s %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s – %8$s %7$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s – %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s – %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s – %6$s %8$s %7$s %9$s + %3$s–%8$s %2$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %3$s %2$s – %8$s %7$s %9$s + %3$s–%8$s %2$s %9$s + %1$s %3$s %2$s – %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index c664d1ae8dd9..ce650c128702 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -21,6 +21,7 @@ "Go" "To" "Po" + %1$s %2$s "<sans titre>" "…" "(Aucun numéro de téléphone)" @@ -161,14 +162,10 @@ "Permet à une application de modifier la configuration actuelle (par ex. : la taille de la police générale ou des paramètres régionaux)." "Démarrage d\'autres applications" "Permet à une application de forcer le lancement d\'autres applications." - "Non-possibilité d\'interruption" - "Permet à une application d\'exécuter tout processus au premier plan afin qu\'il ne puisse pas être interrompu. Les applications normales ne devraient jamais nécessiter cette fonctionnalité." "Fermeture forcée de l\'application" "Permet à une application de forcer une autre application exécutée au premier plan à se fermer et à passer en arrière-plan. Les applications normales ne devraient jamais avoir recours à cette fonctionnalité." "Vérification de l\'état interne du système" "Permet à l\'application de récupérer l\'état interne du système. Des applications malveillantes peuvent obtenir de nombreuses informations personnelles et sécurisées auxquelles elles ne devraient pas avoir accès." - "Éditer des services à faible niveau" - "Permet à l\'application de publier ses propres services de système de niveau inférieur. Des applications malveillantes peuvent prendre le contrôle du système et subtiliser ou endommager ses données." "Contrôle du lancement des applications" "Permet à une application de suivre et de contrôler la façon dont le système lance des activités. Des applications malveillantes peuvent entièrement déstabiliser le système. Cette autorisation est uniquement nécessaire au développement et non pour l\'utilisation normale du téléphone." "Envoyer une diffusion sans paquet" @@ -181,8 +178,6 @@ "Permet à une application de contrôler le nombre de processus maximal exécutés en même temps. Les applications normales n\'ont jamais recours à cette fonctionnalité." "Fermeture de toutes les applications en tâche de fond" "Permet à une application de vérifier si des activités sont systématiquement interrompues lorsqu\'elles sont placées en tâche de fond. Cette fonctionnalité n\'est jamais utilisée par les applications normales." - "Installation des mises à jour du système" - "Permet à une application de recevoir des notifications sur des mises à jour système en cours et de lancer leur installation. Des applications malveillantes peuvent utiliser cette fonctionnalité pour endommager le système avec des mises à jour non autorisées ou interférer avec le processus de mise à jour." "Modification des statistiques de la batterie" "Autoriser la modification des statistiques de la batterie. Les applications normales n\'utilisent pas cette fonctionnalité." "Affichage de fenêtres non autorisées" @@ -418,9 +413,6 @@ "Mot de passe" "Se connecter" "Nom d\'utilisateur ou mot de passe incorrect." - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "Effacer les notifications" @@ -452,9 +444,6 @@ "entrée" "supprimer" "Rechercher" - "Aujourd\'hui" - "Hier" - "Demain" "Il y a 1 mois" "Il y a plus d\'un mois" @@ -536,13 +525,6 @@ "semaines" "année" "années" - "dimanche" - "lundi" - "mardi" - "mercredi" - "jeudi" - "vendredi" - "samedi" "Tous les jours ouvrés (lun.- ven.)" "Tous les jours" "Toutes les semaines le %s" @@ -552,137 +534,15 @@ "Désolé, cette vidéo ne peut être lue sur cet appareil." "Désolé, impossible de lire cette vidéo." "OK" - "AM" - "PM" - "%d/%m/%Y" - "%1$s %2$s, %3$s%4$s %5$s, %6$s" - "%1$s, %2$s%4$s, %5$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s, %3$s" - "%2$s, %3$s" - "%1$s, %3$s" - "%1$s, %2$s" "%1$s, %2$s" - "%1$s, %2$s" - "d' 'MMMM' 'yyyy" - "d' 'MMMM' 'yyyy" - "d' 'MMM' 'yyyy" - "d' 'MMM' 'yyyy" - "h':'mm' 'a" - "HH':'mm" "midi" "Midi" "minuit" "Minuit" - "%-d %B" - "%-d %B %Y" - "%B %Y" - "%H:%M:%S" - "%H:%M:%S %-d %B %Y" - "%3$s %2$s%8$s %7$s" - "%1$s %3$s %2$s%6$s %8$s %7$s" - "%3$s %2$s%8$s %7$s %9$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s %9$s" - "%3$s %2$s %5$s%8$s %7$s %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" - "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s, %3$s %2$s %4$s, %5$s%6$s, %8$s %7$s %9$s, %10$s" - "%3$s/%2$s%8$s/%7$s" - "%1$s %3$s/%2$s%6$s %8$s/%7$s" - "%3$s/%2$s/%4$s%8$s/%7$s/%9$s" - "%1$s, %3$s/%2$s/%4$s%6$s, %8$s/%7$s/%9$s" - "%3$s/%2$s %5$s%8$s/%7$s %10$s" - "%1$s, %3$s/%2$s, %5$s%6$s, %8$s/%7$s, %10$s" - "%3$s/%2$s/%4$s, %5$s%8$s/%7$s/%9$s, %10$s" - "%1$s %3$s/%2$s/%4$s, %5$s%6$s %8$s/%7$s/%9$s, %10$s" - "%3$s%8$s %2$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s" - "%3$s%8$s %2$s %9$s" - "%1$s %3$s %2$s %4$s%6$s %8$s %7$s %9$s" - "%3$s %2$s %5$s%8$s %7$s %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" - "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s %3$s %2$s %4$s, %5$s%6$s %8$s %7$s %9$s, %10$s" - "%-d %b %Y" - "%b %Y" - "%b %-d" - "dimanche" - "lundi" - "mardi" - "mercredi" - "jeudi" - "vendredi" - "samedi" - "dim." - "Lun" - "Mar" - "Mer" - "Jeu" - "Ven" - "Sam" - "Dim" - "Lun" - "Mar" - "Mer" - "Jeu" - "Ven" - "Sam" - "Dim" - "Lun" - "Mar" - "Mer" - "Jeu" - "Ven" - "sam." - "Dim" - "Lun" - "Mar" - "Mer" - "Jeu" - "Ven" - "Sam" - "janvier" - "février" - "mars" - "avril" - "mai" - "juin" - "juillet" - "août" - "septembre" - "octobre" - "novembre" - "décembre" - "janv." - "févr." - "mars" - "avr." - "mai" - "juin" - "juil." - "août" - "sept." - "oct." - "nov." - "déc." - "jan." - "Ven" - "mars" - "avr." - "mai" - "juin" - "juil." - "août" - "sept." - "oct." - "nov." - "déc." "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Tout sélectionner" diff --git a/core/res/res/values-he-rIL/donottranslate-cldr.xml b/core/res/res/values-he-rIL/donottranslate-cldr.xml new file mode 100644 index 000000000000..e3feb1e33146 --- /dev/null +++ b/core/res/res/values-he-rIL/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + ינואר + פברואר + מרס + אפריל + מאי + יוני + יולי + אוגוסט + ספטמבר + אוקטובר + נובמבר + דצמבר + + ינואר + פברואר + מרס + אפריל + מאי + יוני + יולי + אוגוסט + ספטמבר + אוקטובר + נובמבר + דצמבר + + ינו + פבר + מרס + אפר + מאי + יונ + יול + אוג + ספט + אוק + נוב + דצמ + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + יום ראשון + יום שני + יום שלישי + יום רביעי + יום חמישי + יום שישי + יום שבת + + יום א' + יום ב' + יום ג' + יום ד' + יום ה' + יום ו' + שבת + + יום א' + יום ב' + יום ג' + יום ד' + יום ה' + יום ו' + שבת + + א + ב + ג + ד + ה + ו + ש + + לפנה"צ + אחה"צ + אתמול + היום + מחר + + %-k:%M + %-l:%M %p + %-l:%M %p + h:mm a + H:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e ב%B %Y + %H:%M:%S + %H:%M:%S %-e.%-m.%Y + %2$s %1$s + %1$s %3$s + %-e.%-m.%Y + %-e ב%B + %-B + %B %Y + %b %-e + %-b + %Y %b + %1$s – %2$s + %2$s – %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s - %6$s %8$s/%7$s/%9$s + %5$s %1$s, %3$s.%2$s.%4$s – %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s/%2$s – %10$s %8$s/%7$s + %5$s %1$s, %2$s-%3$s – %10$s %6$s, %7$s-%8$s + %5$s %3$s/%2$s/%4$s – %10$s %8$s/%7$s/%9$s + %3$s %1$s %2$s – %6$s %4$s %5$s + %1$s %2$s – %4$s %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s ב%2$s – %8$s ב%7$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %5$s %3$s ב%2$s – %10$s %8$s ב%7$s + %5$s %3$s ב%2$s – %10$s %8$s ב%7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %1$s, %4$s %2$s %3$s – %10$s %6$s, %9$s %7$s %8$s + %5$s %1$s, %4$s %2$s %3$s – %10$s %6$s, %9$s %7$s %8$s + %1$s, %4$s %2$s %3$s – %6$s, %9$s %7$s %8$s + %3$s-%8$s %2$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s %3$s %2$s - %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-hi-rIN/donottranslate-cldr.xml b/core/res/res/values-hi-rIN/donottranslate-cldr.xml new file mode 100644 index 000000000000..2a19da4c482c --- /dev/null +++ b/core/res/res/values-hi-rIN/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + जनवरी + फरवरी + मार्च + अप्रैल + मई + जून + जुलाई + अगस्त + सितम्बर + अक्तूबर + नवम्बर + दिसम्बर + + जनवरी + फरवरी + मार्च + अप्रैल + मई + जून + जुलाई + अगस्त + सितम्बर + अक्तूबर + नवम्बर + दिसम्बर + + जनवरी + फरवरी + मार्च + अप्रैल + मई + जून + जुलाई + अगस्त + सितम्बर + अक्तूबर + नवम्बर + दिसम्बर + + + फ़ + मा + + + जू + जु + + सि + + + दि + + रविवार + सोमवार + मंगलवार + बुधवार + गुरुवार + शुक्रवार + शनिवार + + रवि + सोम + मंगल + बुध + गुरु + शुक्र + शनि + + रवि + सोम + मंगल + बुध + गुरु + शुक्र + शनि + + + सो + मं + बु + गु + शु + + + AM + PM + Yesterday + Today + Tomorrow + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %-e-%-m-%Y + d-M-yyyy + "%s-%s-%s" + %-e %B %Y + %-l:%M:%S %p + %-l:%M:%S %p %d-%m-%Y + %2$s %1$s + %1$s %3$s + %d-%m-%Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s – %2$s + %2$s – %5$s + %2$s-%3$s – %7$s-%8$s + %1$s, %2$s-%3$s – %6$s, %7$s-%8$s + %4$s-%2$s-%3$s – %9$s-%7$s-%8$s + %1$s, %4$s-%2$s-%3$s – %6$s, %9$s-%7$s-%8$s + %5$s %1$s, %4$s-%2$s-%3$s – %10$s %6$s, %9$s-%7$s-%8$s + %5$s %3$s/%2$s – %10$s %8$s/%7$s + %5$s %1$s, %3$s/%2$s – %10$s %6$s, %8$s/%7$s + %5$s %3$s-%2$s-%4$s – %10$s %8$s-%7$s-%9$s + %3$s %1$s, %2$s – %6$s %4$s, %5$s + %1$s, %2$s – %4$s, %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s %2$s – %8$s %7$s + %1$s, %3$s %2$s – %6$s, %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %1$s, %3$s %2$s – %10$s %6$s, %8$s %7$s + %5$s %1$s, %3$s %2$s – %10$s %6$s, %8$s %7$s + %5$s %4$s-%2$s-%3$s – %10$s %9$s-%7$s-%8$s + %5$s %4$s-%2$s-%3$s – %10$s %9$s-%7$s-%8$s + %5$s %1$s, %3$s %2$s %4$s – %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s – %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s – %6$s, %8$s %7$s %9$s + %2$s-%3$s – %8$s + %1$s, %3$s %2$s – %6$s, %8$s %7$s + %9$s-%2$s-%3$s – %7$s-%8$s + %9$s-%2$s-%3$s – %8$s + %1$s, %9$s-%2$s-%3$s – %6$s, yyyy-%7$s-%8$s + %b + diff --git a/core/res/res/values-hu-rHU/donottranslate-cldr.xml b/core/res/res/values-hu-rHU/donottranslate-cldr.xml new file mode 100644 index 000000000000..08a70b81f7b4 --- /dev/null +++ b/core/res/res/values-hu-rHU/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + január + február + március + április + május + június + július + augusztus + szeptember + október + november + december + + január + február + március + április + május + június + július + augusztus + szeptember + október + november + december + + jan. + febr. + márc. + ápr. + máj. + jún. + júl. + aug. + szept. + okt. + nov. + dec. + + J + F + M + Á + M + J + J + A + S + O + N + D + + vasárnap + hétfő + kedd + szerda + csütörtök + péntek + szombat + + V + H + K + Sze + Cs + P + Szo + + V + H + K + Sze + Cs + P + Szo + + V + H + K + S + C + P + S + + de. + du. + tegnap + ma + holnap + + %H:%M + %-l:%M %p + %-l:%M %^p + h:mm a + HH:mm + %Y.%m.%d. + yyyy.MM.dd. + "%s.%s.%s." + %Y. %B %-e. + %-k:%M:%S + %-k:%M:%S %Y.%m.%d. + %2$s %1$s + %1$s %3$s + %Y.%m.%d. + %B %-e. + %-B + %Y. %B + %b %-e. + %-b + %Y. %b + %1$s - %2$s + %2$s - %5$s + %2$s.%3$s. - %7$s.%8$s. + %2$s.%3$s., %1$s - %7$s.%8$s., %6$s + %4$s.%2$s.%3$s. - %9$s.%7$s.%8$s. + %4$s.%2$s.%3$s., %1$s - %9$s.%7$s.%8$s., %6$s + %5$s %4$s.%2$s.%3$s., %1$s - %10$s %9$s.%7$s.%8$s., %6$s + %5$s %2$s. %3$s. - %10$s %7$s. %8$s. + %5$s %2$s. %3$s., %1$s - %10$s %7$s. %8$s., %6$s + %5$s %4$s.%2$s.%3$s. - %10$s %9$s.%7$s.%8$s. + %3$s %2$s, %1$s - %6$s %5$s, %4$s + %2$s, %1$s - %5$s, %4$s + %3$s %2$s - %6$s %5$s + %1$s %3$s, %2$s + %3$s, %2$s + %1$s %2$s + %2$s %3$s. - %7$s %8$s. + %2$s %3$s., %1$s - %7$s %8$s., %6$s + %5$s %2$s %3$s. - %10$s %7$s %8$s. + %5$s %2$s %3$s. - %10$s %7$s %8$s. + %5$s %2$s %3$s., %1$s - %10$s %7$s %8$s., %6$s + %5$s %2$s %3$s., %1$s - %10$s %7$s %8$s., %6$s + %5$s %4$s. %2$s %3$s. - %10$s %9$s. %7$s %8$s. + %5$s %4$s. %2$s %3$s. - %10$s %9$s. %7$s %8$s. + %5$s %4$s. %2$s %3$s., %1$s - %10$s %9$s. %7$s %8$s., %6$s + %5$s %4$s. %2$s %3$s., %1$s - %10$s %9$s. %7$s %8$s., %6$s + %4$s. %2$s %3$s., %1$s - %9$s. %7$s %8$s., %6$s + %2$s %3$s-%8$s. + %2$s %3$s., %1$s - %7$s %8$s., %6$s + %9$s. %2$s %3$s. - %7$s %8$s. + %9$s. %2$s %3$s-%8$s. + %9$s. %2$s %3$s., %1$s - %7$s %8$s., %6$s + %b + diff --git a/core/res/res/values-id-rID/donottranslate-cldr.xml b/core/res/res/values-id-rID/donottranslate-cldr.xml new file mode 100644 index 000000000000..6adec84b8ab8 --- /dev/null +++ b/core/res/res/values-id-rID/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Januari + Februari + Maret + April + Mei + Juni + Juli + Agustus + September + Oktober + November + Desember + + Januari + Februari + Maret + April + Mei + Juni + Juli + Agustus + September + Oktober + November + Desember + + Jan + Feb + Mar + Apr + Mei + Jun + Jul + Agu + Sep + Okt + Nov + Des + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + Minggu + Senin + Selasa + Rabu + Kamis + Jumat + Sabtu + + Min + Sen + Sel + Rab + Kam + Jum + Sab + + Min + Sen + Sel + Rab + Kam + Jum + Sab + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + AM + PM + Yesterday + Today + Tomorrow + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %-e %b %Y + %2$s %1$s + %1$s %3$s + %-e %b %Y + %B %-e + %-B + %B %Y + %b %-e + %-b + %Y %b + %1$s – %2$s + %2$s – %5$s + %2$s-%3$s – %7$s-%8$s + %1$s, %2$s-%3$s – %6$s, %7$s-%8$s + %4$s-%2$s-%3$s – %9$s-%7$s-%8$s + %1$s, %4$s-%2$s-%3$s – %6$s, %9$s-%7$s-%8$s + %5$s %1$s, %4$s-%2$s-%3$s – %10$s %6$s, %9$s-%7$s-%8$s + %5$s %2$s-%3$s – %10$s %7$s-%8$s + %5$s %1$s, %2$s-%3$s – %10$s %6$s, %7$s-%8$s + %5$s %3$s/%2$s/%4$s – %10$s %8$s/%7$s/%9$s + %3$s %1$s %2$s – %6$s %4$s %5$s + %1$s %2$s – %4$s %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %2$s %3$s – %7$s %8$s + %1$s %2$s %3$s – %6$s %7$s %8$s + %5$s %2$s %3$s – %10$s %7$s %8$s + %5$s %2$s %3$s – %10$s %7$s %8$s + %5$s %1$s %2$s %3$s – %10$s %6$s %7$s %8$s + %5$s %1$s %2$s %3$s – %10$s %6$s %7$s %8$s + %5$s %4$s-%2$s-%3$s – %10$s %9$s-%7$s-%8$s + %5$s %4$s-%2$s-%3$s – %10$s %9$s-%7$s-%8$s + %5$s %1$s, %4$s %2$s %3$s – %10$s %6$s, %9$s %7$s %8$s + %5$s %1$s, %4$s %2$s %3$s – %10$s %6$s, %9$s %7$s %8$s + %1$s, %4$s %2$s %3$s – %6$s, %9$s %7$s %8$s + %2$s-%3$s – %8$s + %1$s %2$s %3$s – %6$s %7$s %8$s + %9$s-%2$s-%3$s – %7$s-%8$s + %9$s-%2$s-%3$s – %8$s + %1$s, %9$s-%2$s-%3$s – %6$s, yyyy-%7$s-%8$s + %b + diff --git a/core/res/res/values-it-rCH/donottranslate-cldr.xml b/core/res/res/values-it-rCH/donottranslate-cldr.xml new file mode 100644 index 000000000000..12170d6c4159 --- /dev/null +++ b/core/res/res/values-it-rCH/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Gennaio + Febbraio + Marzo + Aprile + Maggio + Giugno + Luglio + Agosto + Settembre + Ottobre + Novembre + Dicembre + + gennaio + febbraio + marzo + aprile + maggio + giugno + luglio + agosto + settembre + ottobre + novembre + dicembre + + gen + feb + mar + apr + mag + giu + lug + ago + set + ott + nov + dic + + G + F + M + A + M + G + L + A + S + O + N + D + + domenica + lunedì + martedì + mercoledì + giovedì + venerdì + sabato + + dom + lun + mar + mer + gio + ven + sab + + dom + lun + mar + mer + gio + ven + sab + + D + L + M + M + G + V + S + + m. + p. + ieri + oggi + domani + + %H:%M + %-l:%M %p + %-l:%M %^p + h:mm a + HH:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e %B %Y + %H.%M.%S + %H.%M.%S %-e-%b-%Y + %2$s %1$s + %1$s %3$s + %-e-%b-%Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s - %8$s.%7$s + %1$s, %3$s.%2$s - %6$s, %8$s.%7$s + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s - %10$s %8$s.%7$s + %5$s %1$s, %3$s.%2$s - %10$s %6$s, %8$s.%7$s + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %1$s, %3$s %2$s - %10$s %6$s, %8$s %7$s + %5$s %1$s, %3$s %2$s - %10$s %6$s, %8$s %7$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-it-rIT/donottranslate-cldr.xml b/core/res/res/values-it-rIT/donottranslate-cldr.xml new file mode 100644 index 000000000000..2178bbea2481 --- /dev/null +++ b/core/res/res/values-it-rIT/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Gennaio + Febbraio + Marzo + Aprile + Maggio + Giugno + Luglio + Agosto + Settembre + Ottobre + Novembre + Dicembre + + gennaio + febbraio + marzo + aprile + maggio + giugno + luglio + agosto + settembre + ottobre + novembre + dicembre + + gen + feb + mar + apr + mag + giu + lug + ago + set + ott + nov + dic + + G + F + M + A + M + G + L + A + S + O + N + D + + domenica + lunedì + martedì + mercoledì + giovedì + venerdì + sabato + + dom + lun + mar + mer + gio + ven + sab + + dom + lun + mar + mer + gio + ven + sab + + D + L + M + M + G + V + S + + m. + p. + ieri + oggi + domani + + %H:%M + %-l:%M %p + %-l:%M %^p + h:mm a + HH:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %d %B %Y + %H.%M.%S + %H.%M.%S %d/%b/%Y + %2$s %1$s + %1$s %3$s + %d/%b/%Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s - %6$s %8$s/%7$s/%9$s + %5$s %1$s, %3$s/%2$s/%4$s - %10$s %6$s, %8$s/%7$s/%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s %3$s/%2$s - %10$s %6$s %8$s/%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s %2$s - %6$s %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s - %6$s %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s %3$s %2$s - %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-it/donottranslate-cldr.xml b/core/res/res/values-it/donottranslate-cldr.xml new file mode 100644 index 000000000000..2178bbea2481 --- /dev/null +++ b/core/res/res/values-it/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Gennaio + Febbraio + Marzo + Aprile + Maggio + Giugno + Luglio + Agosto + Settembre + Ottobre + Novembre + Dicembre + + gennaio + febbraio + marzo + aprile + maggio + giugno + luglio + agosto + settembre + ottobre + novembre + dicembre + + gen + feb + mar + apr + mag + giu + lug + ago + set + ott + nov + dic + + G + F + M + A + M + G + L + A + S + O + N + D + + domenica + lunedì + martedì + mercoledì + giovedì + venerdì + sabato + + dom + lun + mar + mer + gio + ven + sab + + dom + lun + mar + mer + gio + ven + sab + + D + L + M + M + G + V + S + + m. + p. + ieri + oggi + domani + + %H:%M + %-l:%M %p + %-l:%M %^p + h:mm a + HH:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %d %B %Y + %H.%M.%S + %H.%M.%S %d/%b/%Y + %2$s %1$s + %1$s %3$s + %d/%b/%Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s - %6$s %8$s/%7$s/%9$s + %5$s %1$s, %3$s/%2$s/%4$s - %10$s %6$s, %8$s/%7$s/%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s %3$s/%2$s - %10$s %6$s %8$s/%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s %2$s - %6$s %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s - %6$s %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s %3$s %2$s - %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index f80a4f4cd156..5bfbc4943143 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -161,14 +161,10 @@ "Consente a un\'applicazione di modificare la configurazione corrente, come le dimensioni dei caratteri locali o complessive." "riavvio altre applicazioni" "Consente a un\'applicazione di riavviare forzatamente altre applicazioni." - "impedire l\'interruzione" - "Consente a un\'applicazione di eseguire i processi in primo piano in modo che non possano essere interrotti. Non dovrebbe essere mai necessario per le normali applicazioni." "chiusura forzata dell\'applicazione" "Consente a un\'applicazione di forzare la chiusura di attività in primo piano. Non dovrebbe essere mai necessario per le normali applicazioni." "recupero stato interno del sistema" "Consente all\'applicazione di recuperare lo stato interno del sistema. Le applicazioni dannose potrebbero recuperare molte informazioni riservate e protette di cui non dovrebbero avere mai bisogno." - "pubblicaz. servizi di basso livello" - "Consente a un\'applicazione di pubblicare i suoi servizi di sistema di basso livello. Le applicazioni dannose potrebbero assumere il controllo del sistema e impossessarsi di dati o danneggiarli." "monitoraggio e controllo avvio applicazioni" "Consente a un\'applicazione di monitorare e controllare la modalità di avvio delle attività nel sistema. Le applicazioni dannose potrebbero compromettere totalmente il sistema. Questa autorizzazione è necessaria soltanto per lo sviluppo, mai per il normale utilizzo del telefono." "invio broadcast rimossi dal pacchetto" @@ -181,8 +177,6 @@ "Consente a un\'applicazione di stabilire il numero massimo di processi in esecuzione. Mai necessario per le normali applicazioni." "chiusura applicazioni in background" "Consente a un\'applicazione di controllare se le attività sono sempre completate quando vengono messe in secondo piano. Mai necessario per le normali applicazioni." - "installazione autom. aggiornamenti di sistema" - "Consente a un\'applicazione di ricevere notifiche sugli aggiornamenti del sistema in sospeso e di attivarne l\'installazione. Le applicazioni dannose possono sfruttare questa possibilità per danneggiare il sistema con aggiornamenti non autorizzati, o interferire con il processo di aggiornamento." "modifica statistiche batteria" "Consente la modifica delle statistiche sulla batteria raccolte. Da non usare per normali applicazioni." "visualizzazione finestre non autorizzate" @@ -418,9 +412,6 @@ "Password" "Accedi" "Password o nome utente non valido." - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "Cancella notifiche" @@ -452,9 +443,6 @@ "Invio" "Canc" "Cerca" - "Oggi" - "Ieri" - "Domani" "1 mese fa" "Oltre 1 mese fa" @@ -536,13 +524,6 @@ "settimane" "anno" "anni" - "Domenica" - "Lunedì" - "Martedì" - "Mercoledì" - "Giovedì" - "Venerdì" - "Sabato" "Ogni giorno feriale (lun-ven)" "Quotidianamente" "Ogni settimana il %s" @@ -552,137 +533,15 @@ "Spiacenti, questo video non è valido per lo streaming su questo dispositivo." "Spiacenti. Impossibile riprodurre il video." "OK" - "AM" - "PM" - "%d/%m/%Y" - "%1$s, %2$s, %3$s%4$s, %5$s, %6$s" - "%1$s, %2$s%4$s, %5$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s, %3$s" - "%2$s, %3$s" - "%1$s, %3$s" - "%1$s, %2$s" "%1$s, %2$s" - "%1$s, %2$s" - "MMMM' 'd', 'yyyy" - "d' 'MMMM' 'yyyy" - "MMM' 'd', 'yyyy" - "d' 'MMM' 'yyyy" - "h':'mm' 'a" - "HH':'mm" "mezzogiorno" "Mezzogiorno" "mezzanotte" "Mezzanotte" - "%-d %B" - "%B %-d, %Y" - "%B %Y" - "%H:%M:%S" - "%H:%M:%S %-d %B, %Y" - "%3$s %2$s%8$s %7$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s" - "%3$s %2$s%8$s %7$s, %9$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s, %9$s" - "%3$s %2$s, %5$s%8$s %7$s, %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" - "%3$s %2$s, %4$s, %5$s%8$s %7$s, %9$s, %10$s" - "%1$s, %3$s %2$s %4$s, %5$s%6$s, %8$s %7$s %9$s, %10$s" - "%3$s/%2$s%8$s/%7$s" - "%1$s, %3$s/%2$s%6$s, %8$s/%7$s" - "%3$s/%2$s/%4$s%8$s/%7$s/%9$s" - "%1$s, %3$s/%2$s/%4$s%6$s, %8$s/%7$s/%9$s" - "%3$s/%2$s, %5$s%8$s/%7$s, %10$s" - "%1$s, %3$s/%2$s, %5$s%6$s, %8$s/%7$s, %10$s" - "%3$s/%2$s/%4$s, %5$s%8$s/%7$s/%9$s, %10$s" - "%1$s, %3$s/%2$s/%4$s, %5$s%6$s, %8$s/%7$s/%9$s, %10$s" - "%3$s%8$s %2$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s" - "%3$s%8$s %2$s, %9$s" - "%1$s, %3$s %2$s, %4$s%6$s, %8$s %7$s, %9$s" - "%3$s %2$s, %5$s%8$s %7$s, %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" - "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s, %3$s %2$s, %4$s, %5$s%6$s, %8$s %7$s, %9$s, %10$s" - "%-d %b, %Y" - "%b %Y" - "%-d %b" - "Domenica" - "Lunedì" - "Martedì" - "Mercoledì" - "Giovedì" - "Venerdì" - "Sabato" - "Dom" - "Lun" - "Mar" - "Mer" - "Gio" - "Ven" - "Sab" - "Do" - "Lu" - "Ma" - "Me" - "Gi" - "Ve" - "Sa" - "Do" - "Lu" - "Ma" - "Me" - "Gi" - "V" - "Sa" - "D" - "Lun" - "M" - "Me" - "G" - "V" - "Sa" - "Gennaio" - "Febbraio" - "Marzo" - "Aprile" - "Maggio" - "Giugno" - "Luglio" - "Agosto" - "Settembre" - "Ottobre" - "Novembre" - "Dicembre" - "Gen" - "Feb" - "Mar" - "Apr" - "Mag" - "Giu" - "Lug" - "Ago" - "Set" - "Ott" - "Nov" - "Dic" - "G" - "F" - "M" - "Ap" - "Mag" - "Gi" - "Lug" - "Ago" - "Set" - "O" - "N" - "Di" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Seleziona tutto" diff --git a/core/res/res/values-ja-rJP/donottranslate-cldr.xml b/core/res/res/values-ja-rJP/donottranslate-cldr.xml new file mode 100644 index 000000000000..d2510f60132a --- /dev/null +++ b/core/res/res/values-ja-rJP/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + 日曜日 + 月曜日 + 火曜日 + 水曜日 + 木曜日 + 金曜日 + 土曜日 + + + + + + + + + + + + + + + + + + + + + + + + + + 午前 + 午後 + 昨日 + 今日 + 明日 + + %-k:%M + %p%-l:%M + %p%-l:%M + ah:mm + H:mm + %Y/%m/%d + yyyy/MM/dd + "%s/%s/%s" + %Y年%-m月%-e日 + %-k:%M:%S + %-k:%M:%S %Y/%m/%d + %2$s %1$s + %1$s %3$s + %Y/%m/%d + %-m月%-e日 + %-B + %Y年%-m月 + %-m月%-e日 + %-b + %Y年%-m月 + %1$s~%2$s + %2$s~%5$s + %2$s/%3$s~%7$s/%8$s + %2$s/%3$s(%1$s)~%7$s/%8$s(%6$s) + %4$s/%2$s/%3$s~%9$s/%7$s/%8$s + %4$s/%2$s/%3$s(%1$s)~%9$s/%7$s/%8$s(%6$s) + %5$s %4$s/%2$s/%3$s(%1$s)~%10$s %9$s/%7$s/%8$s(%6$s) + %5$s %2$s/%3$s~%10$s %7$s/%8$s + %5$s %2$s/%3$s(%1$s)~%10$s %7$s/%8$s(%6$s) + %5$s %4$s/%2$s/%3$s~%10$s %9$s/%7$s/%8$s + %3$s %2$s(%1$s)~%6$s %5$s(%4$s) + %2$s(%1$s)~%5$s(%4$s) + %3$s %2$s~%6$s %5$s + %1$s %3$s(%2$s) + %3$s(%2$s) + %1$s %2$s + %2$s%3$s日~%7$s%8$s日 + %2$s%3$s日(%1$s)~%7$s%8$s日(%6$s) + %5$s %2$s%3$s日~%10$s %7$s%8$s日 + %5$s %2$s%3$s日~%10$s %7$s%8$s日 + %5$s %2$s%3$s日(%1$s)~%10$s %7$s%8$s日(%6$s) + %5$s %2$s%3$s日(%1$s)~%10$s %7$s%8$s日(%6$s) + %5$s %4$s年%2$s%3$s日~%10$s %9$s年%7$s%8$s日 + %5$s %4$s年%2$s%3$s日~%10$s %9$s年%7$s%8$s日 + %5$s %4$s年%2$s%3$s日(%1$s)~%10$s %9$s年%7$s%8$s日(%6$s) + %5$s %4$s年%2$s%3$s日(%1$s)~%10$s %9$s年%7$s%8$s日(%6$s) + %4$s年%2$s%3$s日(%1$s)~%9$s年%7$s%8$s日(%6$s) + %2$s%3$s日~%8$s日 + %2$s%3$s日(%1$s)~%7$s%8$s日(%6$s) + %9$s年%2$s%3$s日~%7$s%8$s日 + %9$s年%2$s%3$s日~%8$s日 + %9$s年%2$s%3$s日(%1$s)~%7$s%8$s日(%6$s) + %b + diff --git a/core/res/res/values-ja/donottranslate-cldr.xml b/core/res/res/values-ja/donottranslate-cldr.xml new file mode 100644 index 000000000000..d2510f60132a --- /dev/null +++ b/core/res/res/values-ja/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + 日曜日 + 月曜日 + 火曜日 + 水曜日 + 木曜日 + 金曜日 + 土曜日 + + + + + + + + + + + + + + + + + + + + + + + + + + 午前 + 午後 + 昨日 + 今日 + 明日 + + %-k:%M + %p%-l:%M + %p%-l:%M + ah:mm + H:mm + %Y/%m/%d + yyyy/MM/dd + "%s/%s/%s" + %Y年%-m月%-e日 + %-k:%M:%S + %-k:%M:%S %Y/%m/%d + %2$s %1$s + %1$s %3$s + %Y/%m/%d + %-m月%-e日 + %-B + %Y年%-m月 + %-m月%-e日 + %-b + %Y年%-m月 + %1$s~%2$s + %2$s~%5$s + %2$s/%3$s~%7$s/%8$s + %2$s/%3$s(%1$s)~%7$s/%8$s(%6$s) + %4$s/%2$s/%3$s~%9$s/%7$s/%8$s + %4$s/%2$s/%3$s(%1$s)~%9$s/%7$s/%8$s(%6$s) + %5$s %4$s/%2$s/%3$s(%1$s)~%10$s %9$s/%7$s/%8$s(%6$s) + %5$s %2$s/%3$s~%10$s %7$s/%8$s + %5$s %2$s/%3$s(%1$s)~%10$s %7$s/%8$s(%6$s) + %5$s %4$s/%2$s/%3$s~%10$s %9$s/%7$s/%8$s + %3$s %2$s(%1$s)~%6$s %5$s(%4$s) + %2$s(%1$s)~%5$s(%4$s) + %3$s %2$s~%6$s %5$s + %1$s %3$s(%2$s) + %3$s(%2$s) + %1$s %2$s + %2$s%3$s日~%7$s%8$s日 + %2$s%3$s日(%1$s)~%7$s%8$s日(%6$s) + %5$s %2$s%3$s日~%10$s %7$s%8$s日 + %5$s %2$s%3$s日~%10$s %7$s%8$s日 + %5$s %2$s%3$s日(%1$s)~%10$s %7$s%8$s日(%6$s) + %5$s %2$s%3$s日(%1$s)~%10$s %7$s%8$s日(%6$s) + %5$s %4$s年%2$s%3$s日~%10$s %9$s年%7$s%8$s日 + %5$s %4$s年%2$s%3$s日~%10$s %9$s年%7$s%8$s日 + %5$s %4$s年%2$s%3$s日(%1$s)~%10$s %9$s年%7$s%8$s日(%6$s) + %5$s %4$s年%2$s%3$s日(%1$s)~%10$s %9$s年%7$s%8$s日(%6$s) + %4$s年%2$s%3$s日(%1$s)~%9$s年%7$s%8$s日(%6$s) + %2$s%3$s日~%8$s日 + %2$s%3$s日(%1$s)~%7$s%8$s日(%6$s) + %9$s年%2$s%3$s日~%7$s%8$s日 + %9$s年%2$s%3$s日~%8$s日 + %9$s年%2$s%3$s日(%1$s)~%7$s%8$s日(%6$s) + %b + diff --git a/core/res/res/values-ja/donottranslate.xml b/core/res/res/values-ja/donottranslate.xml new file mode 100644 index 000000000000..f7c3566f644c --- /dev/null +++ b/core/res/res/values-ja/donottranslate.xml @@ -0,0 +1,23 @@ + + + + + Shift_JIS + diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 8da040e410f6..a2e3e51846c4 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -161,14 +161,10 @@ "地域/言語やフォントのサイズなど、現在の設定の変更をアプリケーションに許可します。" "他のアプリケーションの再起動" "他のアプリケーションの強制的な再起動をアプリケーションに許可します。" - "停止の阻止" - "フォアグラウンドでプロセスを実行して、強制終了できないようにすることをアプリケーションに許可します。通常のアプリケーションではまったく必要ありません。" "アプリケーションの強制終了" "フォアグラウンドで実行されている操作を強制終了して戻ることをアプリケーションに許可します。通常のアプリケーションではまったく必要ありません。" "システムの内部状態の取得" "システムの内部状態の取得をアプリケーションに許可します。悪意のあるアプリケーションが、通常は必要としない広範囲にわたる非公開の機密情報を取得する恐れがあります。" - "低レベルサービスの公開" - "独自の低レベルのシステムサービスを公開することをアプリケーションに許可します。悪意のあるアプリケーションがシステムを乗っ取って、データの盗用や破壊をする恐れがあります。" "起動中のすべてのアプリケーションの監視と制御" "システムが起動する操作の監視と制御をアプリケーションに許可します。悪意のあるアプリケーションがシステムを完全に破壊する恐れがあります。この許可は開発にのみ必要で、携帯電話の通常の使用にはまったく必要ありません。" "パッケージ削除ブロードキャストの送信" @@ -181,8 +177,6 @@ "実行するプロセス数の上限の制御をアプリケーションに許可します。通常のアプリケーションにはまったく必要ありません。" "バックグラウンドアプリケーションをすべて終了する" "バックグラウンドになり次第必ず操作を終了させるかどうかの制御をアプリケーションに許可します。通常のアプリケーションではまったく必要ありません。" - "システムアップデートの自動インストール" - "保留中のシステムアップデートに関する通知の受信とインストールの開始をアプリケーションに許可します。悪意のあるアプリケーションが許可なく更新を行ってシステムを破壊したり、更新処理を妨害する恐れがあります。" "電池統計情報の変国" "収集した電池統計情報の変更を許可します。通常のアプリケーションでは使用しません。" "未許可のウィンドウの表示" @@ -418,9 +412,6 @@ "パスワード" "ログイン" "ユーザー名またはパスワードが正しくありません。" - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "通知を消去" @@ -452,9 +443,6 @@ "Enter" "Del" "検索" - "今日" - "昨日" - "明日" "1か月前" "1か月前" @@ -536,13 +524,6 @@ "週間" "年" "年" - "日曜日" - "月曜日" - "火曜日" - "水曜日" - "木曜日" - "金曜日" - "土曜日" "平日(月~金)" "毎日" "毎週%s" @@ -552,137 +533,15 @@ "この動画はご使用の端末でストリーミングできません。" "この動画は再生できません。" "OK" - "AM" - "PM" - "%Y/%m/%d" - "%2$s%1$s%3$s%5$s%4$s%6$s" - "%2$s%1$s%5$s%4$s" - "%2$s %3$s%5$s %6$s" - "%2$s%5$s" - "%1$s - %2$s" - "%3$s%2$s%1$s" - "%3$s%2$s" - "%3$s%1$s" - "%1$s %2$s" "%1$s %2$s" - "%2$s%1$s" - "MMMMd'日 'yyyy" - "yyyy'年'MMMM'月'd'日'" - "MMM'/'d' 'yyyy'年'" - "d'/'MMM'/'yyyy" - "h':'mm' 'a" - "HH':'mm" "正午" "正午" "午前0時" "午前0時" - "%B%-d日" - "%Y%B%-d日" - "%Y%B" - "%H:%M:%S" - "%Y/%B/%-d %H:%M:%S" - "%2$s/%3$s%7$s/%8$s" - "%2$s/%3$s%1$s%7$s/%8$s%6$s" - "%2$s/%3$s%7$s/%8$s, %9$s" - "%9$s/%2$s/%3$s%1$s%7$s/%8$s%6$s" - "%2$s/%3$s %5$s%7$s/%8$s %10$s" - "%2$s/%3$s%1$s%5$s%7$s/%8$s%6$s%10$s" - "%4$s/%2$s/%3$s %5$s%9$s/%7$s/%8$s %10$s" - "%4$s/%2$s/%3$s%1$s%5$s%9$s/%7$s/%8$s%6$s%10$s" - "%2$s/%3$s%7$s/%8$s" - "%2$s/%3$s%1$s%7$s/%8$s%6$s" - "%4$s/%2$s/%3$s%9$s/%7$s/%8$s" - "%4$s/%2$s/%3$s%1$s%9$s/%7$s/%8$s%6$s" - "%2$s/%3$s %5$s%7$s/%8$s %10$s" - "%2$s/%3$s%1$s%5$s%7$s/%8$s%6$s%10$s" - "%4$s/%2$s/%3$s %5$s%9$s/%7$s/%8$s %10$s" - "%4$s/%2$s/%3$s%1$s%5$s%9$s/%7$s/%8$s%6$s%10$s" - "%2$s%3$s日~%8$s日" - "%2$s/%3$s%1$s%7$s/%8$s%6$s" - "%2$s/%3$s - %8$s, %9$s" - "%4$s/%2$s/%3$s%1$s%9$s/%7$s/%8$s%6$s" - "%2$s/%3$s%5$s%7$s/%8$s%10$s" - "%2$s/%3$s%1$s%5$s%7$s/%8$s%6$s%10$s" - "%4$s/%2$s/%3$s%5$s%9$s/%7$s/%8$s%10$s" - "%4$s/%2$s/%3$s%1$s%5$s%9$s/%7$s/%8$s%6$s%10$s" - "%Y/%b/%-d" - "%Y%b月" - "%b/%-d" - "日曜日" - "月曜日" - "火曜日" - "水曜日" - "木曜日" - "金曜日" - "土曜日" - "(日)" - "(月)" - "(火)" - "(水)" - "(木)" - "(金)" - "(土)" - "日" - "月" - "火" - "水" - "木" - "金" - "土" - "日" - "月" - "火" - "水" - "木" - "金" - "土" - "日" - "月" - "火" - "水" - "火" - "金" - "土" - "1月" - "2月" - "3月" - "4月" - "5月" - "6月" - "7月" - "8月" - "9月" - "10月" - "11月" - "12月" - "1" - "2" - "3" - "4" - "5" - "6" - "7" - "8" - "9" - "10" - "11" - "12" - "1" - "2" - "3" - "4" - "5" - "6" - "7" - "8" - "9" - "10" - "11" - "12" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "すべて選択" diff --git a/core/res/res/values-ko-rKR/donottranslate-cldr.xml b/core/res/res/values-ko-rKR/donottranslate-cldr.xml new file mode 100644 index 000000000000..57cd35692e36 --- /dev/null +++ b/core/res/res/values-ko-rKR/donottranslate-cldr.xml @@ -0,0 +1,135 @@ + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + 일요일 + 월요일 + 화요일 + 수요일 + 목요일 + 금요일 + 토요일 + + + + + + + + + + + + + + + + + + + + + + + + + + 오전 + 오후 + 어제 + 오늘 + 내일 + + %-k:%M + %-l:%M %p + %-l:%M %p + h:mm a + H:mm + %Y. %-m. %-e. + yyyy. M. d. + "%s. %s. %s." + %Y년 %-m월 %-e일 + %p %-l:%M:%S + %p %-l:%M:%S %Y. %-m. %-e. + %2$s %1$s + %1$s %3$s + %Y. %-m. %-e. + %B %-e일 + %-B + %Y년 %B + %b %-e일 + %-b + %Y년 %b + %1$s – %2$s + %2$s – %5$s + %2$s. %3$s ~ %7$s. %8$s + %2$s. %3$s %1$s ~ %7$s. %8$s %6$s + %4$s. %2$s. %3$s. ~ %9$s. %7$s. %8$s. + %4$s. %2$s. %3$s. %1$s ~ %9$s. %7$s. %8$s. %6$s + %5$s %4$s. %2$s. %3$s. %1$s – %10$s %9$s. %7$s. %8$s. %6$s + %5$s %2$s. %3$s. – %10$s %7$s. %8$s. + %5$s %2$s. %3$s. (%1$s) – %10$s %7$s. %8$s. (%6$s) + %5$s %4$s. %2$s. %3$s. – %10$s %9$s. %7$s. %8$s. + %3$s %2$s (%1$s) – %6$s %5$s (%4$s) + %2$s (%1$s) – %5$s (%4$s) + %3$s %2$s – %6$s %5$s + %1$s %3$s (%2$s) + %3$s (%2$s) + %1$s %2$s + %2$s %3$s일 – %7$s %8$s일 + %2$s %3$s일 (%1$s) – %7$s %8$s일 (%6$s) + %5$s %2$s %3$s일 – %10$s %7$s %8$s일 + %5$s %2$s %3$s일 – %10$s %7$s %8$s일 + %5$s %2$s %3$s일 (%1$s) – %10$s %7$s %8$s일 (%6$s) + %5$s %2$s %3$s일 (%1$s) – %10$s %7$s %8$s일 (%6$s) + %5$s %4$s년 %2$s %3$s일 – %10$s %9$s년 %7$s %8$s일 + %5$s %4$s년 %2$s %3$s일 – %10$s %9$s년 %7$s %8$s일 + %5$s %4$s년 %2$s %3$s일 %1$s – %10$s %9$s년 %7$s %8$s일 %6$s + %5$s %4$s년 %2$s %3$s일 %1$s – %10$s %9$s년 %7$s %8$s일 %6$s + %4$s년 %2$s %3$s일 %1$s – %9$s년 %7$s %8$s일 %6$s + %2$s %3$s일 ~ %8$s일 + %2$s %3$s일 (%1$s) – %7$s %8$s일 (%6$s) + %9$s년 %2$s %3$s일 ~ %7$s %8$s일 + %9$s년 %2$s %3$s일~%8$s일 + %9$s년 %2$s %3$s일 %1$s ~ %7$s %8$s일 %6$s + %b + diff --git a/core/res/res/values-ko/donottranslate-cldr.xml b/core/res/res/values-ko/donottranslate-cldr.xml new file mode 100644 index 000000000000..57cd35692e36 --- /dev/null +++ b/core/res/res/values-ko/donottranslate-cldr.xml @@ -0,0 +1,135 @@ + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + 일요일 + 월요일 + 화요일 + 수요일 + 목요일 + 금요일 + 토요일 + + + + + + + + + + + + + + + + + + + + + + + + + + 오전 + 오후 + 어제 + 오늘 + 내일 + + %-k:%M + %-l:%M %p + %-l:%M %p + h:mm a + H:mm + %Y. %-m. %-e. + yyyy. M. d. + "%s. %s. %s." + %Y년 %-m월 %-e일 + %p %-l:%M:%S + %p %-l:%M:%S %Y. %-m. %-e. + %2$s %1$s + %1$s %3$s + %Y. %-m. %-e. + %B %-e일 + %-B + %Y년 %B + %b %-e일 + %-b + %Y년 %b + %1$s – %2$s + %2$s – %5$s + %2$s. %3$s ~ %7$s. %8$s + %2$s. %3$s %1$s ~ %7$s. %8$s %6$s + %4$s. %2$s. %3$s. ~ %9$s. %7$s. %8$s. + %4$s. %2$s. %3$s. %1$s ~ %9$s. %7$s. %8$s. %6$s + %5$s %4$s. %2$s. %3$s. %1$s – %10$s %9$s. %7$s. %8$s. %6$s + %5$s %2$s. %3$s. – %10$s %7$s. %8$s. + %5$s %2$s. %3$s. (%1$s) – %10$s %7$s. %8$s. (%6$s) + %5$s %4$s. %2$s. %3$s. – %10$s %9$s. %7$s. %8$s. + %3$s %2$s (%1$s) – %6$s %5$s (%4$s) + %2$s (%1$s) – %5$s (%4$s) + %3$s %2$s – %6$s %5$s + %1$s %3$s (%2$s) + %3$s (%2$s) + %1$s %2$s + %2$s %3$s일 – %7$s %8$s일 + %2$s %3$s일 (%1$s) – %7$s %8$s일 (%6$s) + %5$s %2$s %3$s일 – %10$s %7$s %8$s일 + %5$s %2$s %3$s일 – %10$s %7$s %8$s일 + %5$s %2$s %3$s일 (%1$s) – %10$s %7$s %8$s일 (%6$s) + %5$s %2$s %3$s일 (%1$s) – %10$s %7$s %8$s일 (%6$s) + %5$s %4$s년 %2$s %3$s일 – %10$s %9$s년 %7$s %8$s일 + %5$s %4$s년 %2$s %3$s일 – %10$s %9$s년 %7$s %8$s일 + %5$s %4$s년 %2$s %3$s일 %1$s – %10$s %9$s년 %7$s %8$s일 %6$s + %5$s %4$s년 %2$s %3$s일 %1$s – %10$s %9$s년 %7$s %8$s일 %6$s + %4$s년 %2$s %3$s일 %1$s – %9$s년 %7$s %8$s일 %6$s + %2$s %3$s일 ~ %8$s일 + %2$s %3$s일 (%1$s) – %7$s %8$s일 (%6$s) + %9$s년 %2$s %3$s일 ~ %7$s %8$s일 + %9$s년 %2$s %3$s일~%8$s일 + %9$s년 %2$s %3$s일 %1$s ~ %7$s %8$s일 %6$s + %b + diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 96b897a495d5..e2c6e570fe27 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -161,14 +161,10 @@ "응용프로그램이 로케일 또는 전체 글꼴 크기 같은 현재 구성을 변경할 수 있습니다." "다른 응용프로그램 다시 시작" "응용프로그램이 다른 응용프로그램을 강제로 다시 시작할 수 있습니다." - "중지되지 않도록 하기" - "응용프로그램이 프로세스를 포그라운드에서 실행되도록 하여 프로세스를 중지할 수 있습니다. 일반 응용프로그램에는 필요하지 않습니다." "강제로 응용프로그램 닫기" "응용프로그램이 포그라운드에 있는 활동을 강제로 닫을 수 있습니다. 일반 응용프로그램에는 필요하지 않습니다." "시스템 내부 상태 검색" "응용프로그램이 시스템의 내부 상태를 검색할 수 있습니다. 악성 응용프로그램은 이 기능을 이용하여 일반적으로 필요하지 않은 다양한 개인 정보와 보안 정보를 검색할 수 있습니다." - "하위 수준 서비스 게시" - "응용프로그램이 자체 하위 수준 시스템 서비스를 게시할 수 있습니다. 악성 응용프로그램은 이 기능을 이용하여 시스템을 하이재킹하거나 시스템의 데이터를 도용 또는 손상시킬 수 있습니다." "실행 중인 모든 응용프로그램 모니터링 및 제어" "응용프로그램이 시스템에서 활동이 시작되는 방식을 모니터링하고 제어할 수 있습니다. 악성 응용프로그램은 이 기능을 이용하여 시스템을 완전히 손상시킬 수 있습니다. 이 권한은 개발 과정에만 필요하며 일반 전화기 사용 시에는 필요하지 않습니다." "패키지 제거 브로드캐스트 보내기" @@ -181,8 +177,6 @@ "응용프로그램이 실행할 최대 프로세스 수를 제어할 수 있습니다. 일반 응용프로그램에는 필요하지 않습니다." "모든 백그라운드 응용프로그램이 닫히도록 하기" "응용프로그램이 백그라운드로 이동한 활동을 항상 바로 마칠지 여부를 제어할 수 있습니다. 일반 응용프로그램에는 필요하지 않습니다." - "시스템 업데이트 자동으로 설치" - "응용프로그램이 대기 중인 시스템 업데이트에 대한 알림을 받고 설치를 트리거할 수 있습니다. 악성 응용프로그램은 이 기능을 이용하여 인증되지 않은 업데이트로 시스템을 손상시키거나 업데이트 절차를 방해할 수 있습니다." "배터리 통계 수정" "수집된 배터리 통계를 수정할 수 있습니다. 일반 응용프로그램에서는 사용하지 않습니다." "인증되지 않은 창 표시" @@ -418,9 +412,6 @@ "비밀번호" "로그인" "사용자 이름 또는 비밀번호가 잘못되었습니다." - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "알림 지우기" @@ -452,9 +443,6 @@ "입력" "삭제" "검색" - "오늘" - "어제" - "내일" "한 달 전" "한 달 전" @@ -536,13 +524,6 @@ "주" "년" "년" - "일요일" - "월요일" - "화요일" - "수요일" - "목요일" - "금요일" - "토요일" "주중 매일(월-금)" "매일" "매주 %s" @@ -552,137 +533,15 @@ "죄송합니다. 이 기기로의 스트리밍에 적합하지 않은 동영상입니다." "죄송합니다. 동영상을 재생할 수 없습니다." "확인" - "AM" - "PM" - "%m/%d/%Y" - "%2$s, %1$s, %3$s%5$s, %4$s, %6$s" - "%2$s, %1$s%5$s, %4$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%3$s, %2$s, %1$s" - "%2$s, %3$s" - "%3$s, %1$s" - "%1$s, %2$s" "%1$s, %2$s" - "%2$s, %1$s" - "yyyy' 'MMMM', 'd" - "yyyy' 'MMMM', 'd" - "MMM' 'd', 'yyyy" - "d' 'MMM', 'yyyy" - "h':'mm' 'a" - "HH':'mm" "정오" "정오" "자정" "자정" - "%B %-d" - "%Y, %B %-d" - "%B %Y" - "%H:%M:%S" - "%Y, %B %-d, %H:%M:%S" - "%2$s %3$s%7$s %8$s" - "%2$s %3$s, %1$s%7$s %8$s, %6$s" - "%9$s, %2$s %3$s%7$s %8$s" - "%9$s, %2$s %3$s, %1$s%7$s %8$s, %6$s" - "%2$s %3$s, %5$s%7$s %8$s, %10$s" - "%2$s %3$s, %1$s, %5$s%7$s %8$s, %6$s, %10$s" - "%4$s, %2$s %3$s, %5$s%9$s, %7$s %8$s, %10$s" - "%1$s, %2$s %3$s, %4$s, %5$s%6$s, %7$s %8$s, %9$s, %10$s" - "%2$s/%3$s%7$s/%8$s" - "%2$s/%3$s, %1$s%7$s/%8$s, %6$s" - "%4$s/%2$s/%3$s%9$s/%7$s/%8$s/" - "%4$s/%2$s/%3$s, %1$s%9$s/%7$s/%8$s, %6$s" - "%2$s/%3$s, %5$s%7$s/%8$s, %10$s" - "%2$s/%3$s, %1$s, %5$s%7$s/%8$s, %6$s, %10$s" - "%2$s/%3$s/%4$s, %5$s%7$s/%8$s/%9$s, %10$s" - "%1$s, %2$s/%3$s/%4$s, %5$s%6$s, %7$s/%8$s/%9$s, %10$s" - "%2$s %3$s%8$s" - "%2$s %3$s, %1$s%7$s %8$s, %6$s" - "%9$s, %2$s %3$s%8$s" - "%4$s, %2$s %3$s, %1$s%9$s, %7$s %8$s, %6$s" - "%2$s %3$s, %5$s%7$s %8$s, %10$s" - "%1$s, %2$s %3$s, %5$s%6$s, %7$s %8$s, %10$s" - "%2$s %3$s, %4$s, %5$s%7$s %8$s, %9$s, %10$s" - "%4$s, %2$s %3$s, %1$s, %5$s%9$s, %7$s %8$s, %6$s, %10$s" - "%Y %b, %-d" - "%b %Y" - "%b %-d" - "일요일" - "월요일" - "화요일" - "수요일" - "목요일" - "금요일" - "토요일" - "일요일" - "월" - "화" - "수" - "목" - "금" - "토" - "일" - "월" - "화" - "수" - "목" - "금" - "토" - "일" - "월" - "화" - "수" - "목" - "금" - "토" - "일" - "3월" - "목" - "수" - "목" - "금" - "토" - "1월" - "2월" - "3월" - "4월" - "5월" - "6월" - "7월" - "8월" - "9월" - "10월" - "11월" - "12월" - "1월" - "2월" - "3월" - "4월" - "5월" - "6월" - "7월" - "8월" - "9월" - "10월" - "11월" - "12월" - "1월" - "금" - "3월" - "4월" - "5월" - "6월" - "7월" - "8월" - "9월" - "10월" - "11월" - "12월" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "모두 선택" diff --git a/core/res/res/values-lt-rLT/donottranslate-cldr.xml b/core/res/res/values-lt-rLT/donottranslate-cldr.xml new file mode 100644 index 000000000000..20d58e05fea5 --- /dev/null +++ b/core/res/res/values-lt-rLT/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Sausis + Vasaris + Kovas + Balandis + Gegužė + Birželis + Liepa + Rugpjūtis + Rugsėjis + Spalis + Lapkritis + Gruodis + + sausio + vasario + kovo + balandžio + gegužės + birželio + liepos + rugpjūčio + rugsėjo + spalio + lapkričio + gruodžio + + Sau + Vas + Kov + Bal + Geg + Bir + Lie + Rgp + Rgs + Spl + Lap + Grd + + S + V + K + B + G + B + L + R + R + S + L + G + + sekmadienis + pirmadienis + antradienis + trečiadienis + ketvirtadienis + penktadienis + šeštadienis + + Sk + Pr + An + Tr + Kt + Pn + Št + + Sk + Pr + An + Tr + Kt + Pn + Št + + S + P + A + T + K + P + Š + + priešpiet + popiet + vakar + šiandien + rytoj + + %-k:%M + %-l:%M %p + %-l:%M %p + h:mm a + H:mm + %Y-%m-%d + yyyy-MM-dd + "%s-%s-%s" + %Y m. %B %-e d. + %H:%M:%S + %H:%M:%S %Y.%m.%d + %2$s %1$s + %1$s %3$s + %Y.%m.%d + %B %-e + %-B + %Y %B + %b %-e d. + %b + %Y m. %b + %1$s - %2$s + %2$s - %5$s + %2$s-%3$s - %7$s-%8$s + %2$s-%3$s%1$s - %7$s-%8$s%6$s + %4$s-%2$s-%3$s - %9$s-%7$s-%8$s + %4$s-%2$s-%3$s%1$s - %9$s-%7$s-%8$s%6$s + %5$s %4$s-%2$s-%3$s%1$s - %10$s %9$s-%7$s-%8$s%6$s + %5$s %2$s-%3$s - %10$s %7$s-%8$s + %5$s %2$s-%3$s%1$s - %10$s %7$s-%8$s%6$s + %5$s %4$s-%2$s-%3$s - %10$s %9$s-%7$s-%8$s + %3$s %2$s%1$s - %6$s %5$s%4$s + %2$s%1$s - %5$s%4$s + %3$s %2$s - %6$s %5$s + %1$s %3$s%2$s + %3$s%2$s + %1$s %2$s + %2$s %3$s - %7$s %8$s + %2$s %3$s d.%1$s - %7$s %8$s d.%6$s + %5$s %2$s %3$s - %10$s %7$s %8$s + %5$s %2$s %3$s - %10$s %7$s %8$s + %5$s %2$s %3$s d.%1$s - %10$s %7$s %8$s d.%6$s + %5$s %2$s %3$s d.%1$s - %10$s %7$s %8$s d.%6$s + %5$s %4$s m. %2$s %3$s d. - %10$s %9$s m. %7$s %8$s d. + %5$s %4$s m. %2$s %3$s d. - %10$s %9$s m. %7$s %8$s d. + %5$s %4$s m. %2$s %3$s d.,%1$s - %10$s %9$s m. %7$s %8$s d.,%6$s + %5$s %4$s m. %2$s %3$s d.,%1$s - %10$s %9$s m. %7$s %8$s d.,%6$s + %4$s m. %2$s %3$s d.,%1$s - %9$s m. %7$s %8$s d.,%6$s + %2$s %3$s d.-%8$s d. + %2$s %3$s d.%1$s - %7$s %8$s d.%6$s + %9$s m. %2$s %3$s d. - %7$s %8$s d. + %9$s m. %2$s %3$s d.-%8$s d. + %9$s m. %2$s %3$s d.,%1$s - %7$s %8$s d.,%6$s + %b + diff --git a/core/res/res/values-lv-rLV/donottranslate-cldr.xml b/core/res/res/values-lv-rLV/donottranslate-cldr.xml new file mode 100644 index 000000000000..3dec1d2e3726 --- /dev/null +++ b/core/res/res/values-lv-rLV/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + janvāris + februāris + marts + aprīlis + maijs + jūnijs + jūlijs + augusts + septembris + oktobris + novembris + decembris + + janvāris + februāris + marts + aprīlis + maijs + jūnijs + jūlijs + augusts + septembris + oktobris + novembris + decembris + + janv. + febr. + marts + apr. + maijs + jūn. + jūl. + aug. + sept. + okt. + nov. + dec. + + J + F + M + A + M + J + J + A + S + O + N + D + + svētdiena + pirmdiena + otrdiena + trešdiena + ceturtdiena + piektdiena + sestdiena + + Sv + Pr + Ot + Tr + Ce + Pk + Se + + Sv + Pr + Ot + Tr + Ce + Pk + Se + + S + P + O + T + C + P + S + + AM + PM + vakar + šodien + rīt + + %H:%M + %-l:%M %p + %-l:%M %^p + h:mm a + HH:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %Y. gada %-e. %B + %H:%M:%S + %H:%M:%S %Y. gada %-e. %b + %2$s %1$s + %1$s %3$s + %Y. gada %-e. %b + %-e. %B + %-B + %Y. g. %B + %-e. %b + %-b + %Y. g. %b + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s–%8$s.%7$s + %1$s, %3$s.%2$s - %6$s, %8$s.%7$s + %3$s.%2$s.%4$s.–%8$s.%7$s.%9$s. + %1$s, %3$s.%2$s.%4$s. – %6$s, %8$s.%7$s.%9$s. + %5$s %1$s, %3$s.%2$s.%4$s. - %10$s %6$s, %8$s.%7$s.%9$s. + %5$s %3$s.%2$s. - %10$s %8$s.%7$s. + %5$s %1$s, %3$s.%2$s. - %10$s %6$s, %8$s.%7$s. + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s, %3$s. %2$s - %10$s %6$s, %8$s. %7$s + %5$s %1$s, %3$s. %2$s - %10$s %6$s, %8$s. %7$s + %5$s %4$s. gada %3$s. %2$s - %10$s %9$s. gada %8$s. %7$s + %5$s %4$s. gada %3$s. %2$s - %10$s %9$s. gada %8$s. %7$s + %5$s %1$s, %4$s. g. %3$s. %2$s - %10$s %6$s, %9$s. g. %8$s. %7$s + %5$s %1$s, %4$s. g. %3$s. %2$s - %10$s %6$s, %9$s. g. %8$s. %7$s + %1$s, %4$s. g. %3$s. %2$s - %6$s, %9$s. g. %8$s. %7$s + %3$s.-%8$s. %2$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s + %9$s. gada %3$s. %2$s - %8$s. %7$s + %9$s. gada %3$s.-%8$s. %2$s + %1$s, %9$s. gada %3$s. %2$s - %6$s, y. gada %8$s. %7$s + %b + diff --git a/core/res/res/values-mcc204-pt/strings.xml b/core/res/res/values-mcc204-pt/strings.xml new file mode 100644 index 000000000000..7d962307a3de --- /dev/null +++ b/core/res/res/values-mcc204-pt/strings.xml @@ -0,0 +1,19 @@ + + + + "nl_nl" + diff --git a/core/res/res/values-mcc230-pt/strings.xml b/core/res/res/values-mcc230-pt/strings.xml new file mode 100644 index 000000000000..d3ecdbba28ed --- /dev/null +++ b/core/res/res/values-mcc230-pt/strings.xml @@ -0,0 +1,19 @@ + + + + "cs_cz" + diff --git a/core/res/res/values-mcc232-pt/strings.xml b/core/res/res/values-mcc232-pt/strings.xml new file mode 100644 index 000000000000..4773838f9c47 --- /dev/null +++ b/core/res/res/values-mcc232-pt/strings.xml @@ -0,0 +1,19 @@ + + + + "de_at" + diff --git a/core/res/res/values-mcc234-pt/strings.xml b/core/res/res/values-mcc234-pt/strings.xml new file mode 100644 index 000000000000..2538b7329239 --- /dev/null +++ b/core/res/res/values-mcc234-pt/strings.xml @@ -0,0 +1,19 @@ + + + + "en_gb" + diff --git a/core/res/res/values-mcc260-pt/strings.xml b/core/res/res/values-mcc260-pt/strings.xml new file mode 100644 index 000000000000..1161f9a6356f --- /dev/null +++ b/core/res/res/values-mcc260-pt/strings.xml @@ -0,0 +1,19 @@ + + + + "pl_pl" + diff --git a/core/res/res/values-mcc262-pt/strings.xml b/core/res/res/values-mcc262-pt/strings.xml new file mode 100644 index 000000000000..9505cf4b4226 --- /dev/null +++ b/core/res/res/values-mcc262-pt/strings.xml @@ -0,0 +1,19 @@ + + + + "de_de" + diff --git a/core/res/res/values-nb/donottranslate-cldr.xml b/core/res/res/values-nb/donottranslate-cldr.xml new file mode 100644 index 000000000000..ecf01118298f --- /dev/null +++ b/core/res/res/values-nb/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + januar + februar + mars + april + mai + juni + juli + august + september + oktober + november + desember + + januar + februar + mars + april + mai + juni + juli + august + september + oktober + november + desember + + jan. + feb. + mars + apr. + mai + juni + juli + aug. + sep. + okt. + nov. + des. + + J + F + M + A + M + J + J + A + S + O + N + D + + søndag + mandag + tirsdag + onsdag + torsdag + fredag + lørdag + + søn. + man. + tir. + ons. + tor. + fre. + lør. + + søn. + man. + tir. + ons. + tor. + fre. + lør. + + S + M + T + O + T + F + L + + AM + PM + i går + i dag + i morgen + + %H.%M + %-l.%M %p + %-l.%M %^p + h.mm a + HH.mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e. %B %Y + %H.%M.%S + %H.%M.%S %-e. %b %Y + %2$s %1$s + %1$s %3$s + %-e. %b %Y + %-e. %B + %-B + %B %Y + %-e. %b + %-b + %b %Y + %1$s–%2$s + %2$s–%5$s + %3$s.%2$s.–%8$s.%7$s. + %1$s %3$s.%2$s.–%6$s %8$s.%7$s. + %3$s.%2$s.%4$s–%8$s.%7$s.%9$s + %1$s %3$s.%2$s.%4$s–%6$s %8$s.%7$s.%9$s + %5$s %1$s %3$s.%2$s.%4$s–%10$s %6$s %8$s.%7$s.%9$s + %5$s %3$s.%2$s.–%10$s %8$s.%7$s. + %5$s %1$s %3$s.%2$s–%10$s %6$s %8$s.%7$s + %5$s %3$s.%2$s.%4$s–%10$s %8$s.%7$s.%9$s + %3$s %1$s %2$s–%6$s %4$s %5$s + %1$s %2$s–%4$s %5$s + %3$s %2$s–%6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s. %2$s–%8$s. %7$s + %1$s %3$s. %2$s–%6$s %8$s. %7$s + %5$s %3$s. %2$s–%10$s %8$s. %7$s + %5$s %3$s. %2$s–%10$s %8$s. %7$s + %5$s %1$s %3$s. %2$s–%10$s %6$s %8$s. %7$s + %5$s %1$s %3$s. %2$s–%10$s %6$s %8$s. %7$s + %5$s %3$s. %2$s %4$s–%10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s–%10$s %8$s. %7$s %9$s + %5$s %1$s %3$s. %2$s %4$s–%10$s %6$s %8$s. %7$s %9$s + %5$s %1$s %3$s. %2$s %4$s–%10$s %6$s %8$s. %7$s %9$s + %1$s %3$s. %2$s %4$s–%6$s %8$s. %7$s %9$s + %3$s.–%8$s. %2$s + %1$s %3$s. %2$s–%6$s %8$s. %7$s + %3$s. %2$s–%8$s. %7$s %9$s + %3$s.–%8$s. %2$s %9$s + %1$s %3$s. %2$s–%6$s %8$s. %7$s %9$s + %b + diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 7bed159c51ca..33d015997b34 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -166,14 +166,10 @@ "Tillater applikasjonen å endre gjeldende innstillinger, slik som språk eller skriftstørrelse." "omstarte andre applikasjoner" "Lar applikasjonen tvinge andre applikasjoner til å starte på nytt." - "unngå å bli stoppet" - "Lar applikasjonen sette en vilkårlig prosess i forgrunnen, så den ikke kan bli drept. Vanlige applikasjoner bør aldri trenge dette." "tvinge applikasjoner til å lukkes" "Lar applikasjonen tvinge enhver aktivitet som er i forgrunnen til å lukkes og gå tilbake. Vanlige applikasjoner bør aldri trenge dette." "hente intern systemtilstand" "Lar applikasjonen hente intern tilstand fra systemet. Onsdinnede applikasjoner kan hente et bredt spekter av privat og sikker informasjon som de vanligvis aldri burde ha behov for." - "publisere lavnivåtjenester" - "Lar applikasjonen publisere sine egne lavnivås systemtjenester. Ondsinnede applikasjoner kan kapre systemet, og stjele eller ødelegge alle data på det." "overvåke og kontrollere all applikasjonsoppstart" "Lar applikasjonen overvåke og kontrollere hvordan systemet starter applikasjoner. Ondsinnede applikasjoner kan ta over systemet helt. Denne rettigheten behøves bare for utvikling, aldri for vanlig bruk av telefonen." "kringkaste melding om fjernet pakke" @@ -186,8 +182,6 @@ "Lar applikasjonen kontrollere maksimalt antall kjørende prosesser. Behøves aldri for vanlige applikasjoner." "få alle bakgrunnsapplikasjoner til å lukkes" "Lar applikasjonen kontrollere om aktiviteter alltid avsluttes når de sendes til bakgrunnen. Behøves aldri for vanlige applikasjoner." - "installere systemoppdateringer automatisk" - "Lar applikasjonen motta meldinger om pågående systemoppdateringer, og starte installeringen av dem. Ondsinnede applikasjoner kan bruke dette for å skade systemet med uautoriserte oppdateringer, eller generelt forstyrre oppdateringsprosessen." "endre batteristatistikk" "Lar applikasjonen endre på innsamlet batteristatistikk. Ikke ment for vanlige applikasjoner." "vis uautoriserte vinduer" @@ -424,9 +418,6 @@ "Password" "Sign in" "Invalid username or password." - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "Fjern varslinger" @@ -458,9 +449,6 @@ "enter" "slett" "Søk" - "I dag" - "I går" - "I morgen" "For en måned siden" "For over en måned siden" @@ -542,13 +530,6 @@ "uker" "år" "år" - "søndag" - "mandag" - "tirsdag" - "onsdag" - "torsdag" - "fredag" - "lørdag" "Hverdager (man–fre)" "Hver dag" "Hver %s" @@ -558,26 +539,7 @@ "Beklager, denne videoen er ikke gyldig for streaming til denne enheten." "Beklager, kan ikke spille denne videoen." "OK" - "AM" - "PM" - "%Y-%m-%d" - "%1$s %2$s %3$s%4$s %5$s %6$s" - "%1$s %2$s%4$s %5$s" - "%2$s %3$s%5$s %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s %3$s" - "%2$s %3$sPLACEHOLDERplaceholder" - "%1$s, %3$s" - "%1$s, %2$s" "%1$s, %2$s" - "%1$s, %2$s" - "MMMM' 'd'., 'yyyy" - "d'. 'MMMM' 'yyyy" - "MMM' 'd', 'yyyy" - "d'. 'MMM' 'yyyy" - "h':'mm' 'a" - "HH':'mm" "middag" "Middag" "midnatt" @@ -586,111 +548,10 @@ - "%-d. %B %Y" - "%B %Y" - "%H:%M:%S" - "%H:%M:%S %-d. %B %Y" - "%2$s %3$s%7$s %8$s" - "%1$s %3$s. %2$s%6$s %8$s. %7$s" - "%3$s. %2$s%8$s. %7$s %9$s" - "%1$s %2$s %3$s%6$s %7$s %8$s, %9$s" - "%3$s. %2$s %5$s%8$s. %7$s %10$s" - "%1$s %3$s. %2$s %5$s%6$s %8$s. %7$s %10$s" - "%3$s. %2$s %4$s %5$s%8$s. %7$s %9$s %10$s" - "%1$s %3$s. %2$s %4$s %5$s%6$s %8$s. %7$s %9$s %10$s" - "%3$s.%2$s. – %8$s.%7$s." - "%1$s %3$s.%2$s. – %6$s %8$s.%7$s." - "%3$s.%2$s.%4$s%8$s.%7$s.%9$s" - "%1$s %3$s.%2$s.%4$s%6$s %8$s.%7$s.%9$s" - "%3$s.%2$s. %5$s%8$s.%7$s. %10$s" - "%1$s %3$s.%2$s. %5$s%6$s %8$s.%7$s. %10$s" - "%3$s.%2$s.%4$s %5$s%8$s.%7$s.%9$s %10$s" - "%1$s %3$s.%2$s.%4$s %5$s%6$s %8$s.%7$s.%9$s %10$s" - "%3$s.–%8$s. %2$s" - "%1$s %3$s. %2$s%6$s %8$s. %7$s" - "%3$s.–%8$s %2$s %9$s" - "%1$s %3$s. %2$s %4$s%6$s %8$s. %7$s %9$s" - "%3$s. %2$s %5$s%8$s. %7$s %10$s" - "%1$s %3$s. %2$s %5$s%6$s %8$s. %7$s %10$s" - "%3$s. %2$s %4$s %5$s%8$s. %7$s %9$s %10$s" - "%1$s %3$s. %2$s %4$s %5$s%6$s %8$s. %7$s %9$s %10$s" - "%-d. %b %Y" - "%b %Y" - "søndag" - "mandag" - "tirsdag" - "onsdag" - "torsdag" - "fredag" - "lørdag" - "søn" - "man" - "tir" - "ons" - "tor" - "fre" - "lør" - "sø" - "ma" - "ti" - "on" - "to" - "fr" - "lø" - "S" - "M" - "Ti" - "O" - "To" - "F" - "L" - "S" - "M" - "T" - "O" - "T" - "F" - "L" - "januar" - "februar" - "mars" - "april" - "mai" - "juni" - "juli" - "august" - "september" - "oktober" - "november" - "desember" - "jan" - "feb" - "mar" - "apr" - "mai" - "jun" - "jul" - "aug" - "sep" - "okt" - "nov" - "des" - "J" - "F" - "M" - "A" - "M" - "J" - "J" - "A" - "S" - "O" - "N" - "D" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Merk alt" diff --git a/core/res/res/values-nl-rBE/donottranslate-cldr.xml b/core/res/res/values-nl-rBE/donottranslate-cldr.xml new file mode 100644 index 000000000000..680a39286357 --- /dev/null +++ b/core/res/res/values-nl-rBE/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + januari + februari + maart + april + mei + juni + juli + augustus + september + oktober + november + december + + januari + februari + maart + april + mei + juni + juli + augustus + september + oktober + november + december + + jan. + feb. + mrt. + apr. + mei + jun. + jul. + aug. + sep. + okt. + nov. + dec. + + J + F + M + A + M + J + J + A + S + O + N + D + + zondag + maandag + dinsdag + woensdag + donderdag + vrijdag + zaterdag + + zo + ma + di + wo + do + vr + za + + zo + ma + di + wo + do + vr + za + + Z + M + D + W + D + V + Z + + AM + PM + Gisteren + Vandaag + Morgen + + %H:%M + %-l:%M %p + %-l:%M %^p + h:mm a + HH:mm + %-e/%m/%Y + d/MM/yyyy + "%s/%s/%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %-e-%b-%Y + %2$s %1$s + %1$s %3$s + %-e-%b-%Y + %-e %B + %-B + %B %Y + %-e-%b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s - %6$s %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s - %6$s %8$s/%7$s/%9$s + %5$s %1$s %3$s/%2$s/%4$s - %10$s %6$s %8$s/%7$s/%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s %3$s/%2$s - %10$s %6$s %8$s/%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s %2$s - %6$s %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s - %6$s %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s %3$s %2$s - %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-nl-rNL/donottranslate-cldr.xml b/core/res/res/values-nl-rNL/donottranslate-cldr.xml new file mode 100644 index 000000000000..b6231b622790 --- /dev/null +++ b/core/res/res/values-nl-rNL/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + januari + februari + maart + april + mei + juni + juli + augustus + september + oktober + november + december + + januari + februari + maart + april + mei + juni + juli + augustus + september + oktober + november + december + + jan. + feb. + mrt. + apr. + mei + jun. + jul. + aug. + sep. + okt. + nov. + dec. + + J + F + M + A + M + J + J + A + S + O + N + D + + zondag + maandag + dinsdag + woensdag + donderdag + vrijdag + zaterdag + + zo + ma + di + wo + do + vr + za + + zo + ma + di + wo + do + vr + za + + Z + M + D + W + D + V + Z + + AM + PM + Gisteren + Vandaag + Morgen + + %H:%M + %-l:%M %p + %-l:%M %^p + h:mm a + HH:mm + %d-%m-%Y + dd-MM-yyyy + "%s-%s-%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %-e %b %Y + %2$s %1$s + %1$s %3$s + %-e %b %Y + %-e %B + %-B + %B %Y + %-e-%b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s-%2$s - %8$s-%7$s + %1$s %3$s-%2$s - %6$s %8$s-%7$s + %3$s-%2$s-%4$s - %8$s-%7$s-%9$s + %1$s %3$s-%2$s-%4$s - %6$s %8$s-%7$s-%9$s + %5$s %1$s %3$s-%2$s-%4$s - %10$s %6$s %8$s-%7$s-%9$s + %5$s %3$s-%2$s - %10$s %8$s-%7$s + %5$s %1$s %3$s-%2$s - %10$s %6$s %8$s-%7$s + %5$s %3$s-%2$s-%4$s - %10$s %8$s-%7$s-%9$s + %3$s %1$s %2$s - %6$s %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s - %6$s %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s %3$s %2$s - %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-nl/donottranslate-cldr.xml b/core/res/res/values-nl/donottranslate-cldr.xml new file mode 100644 index 000000000000..b6231b622790 --- /dev/null +++ b/core/res/res/values-nl/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + januari + februari + maart + april + mei + juni + juli + augustus + september + oktober + november + december + + januari + februari + maart + april + mei + juni + juli + augustus + september + oktober + november + december + + jan. + feb. + mrt. + apr. + mei + jun. + jul. + aug. + sep. + okt. + nov. + dec. + + J + F + M + A + M + J + J + A + S + O + N + D + + zondag + maandag + dinsdag + woensdag + donderdag + vrijdag + zaterdag + + zo + ma + di + wo + do + vr + za + + zo + ma + di + wo + do + vr + za + + Z + M + D + W + D + V + Z + + AM + PM + Gisteren + Vandaag + Morgen + + %H:%M + %-l:%M %p + %-l:%M %^p + h:mm a + HH:mm + %d-%m-%Y + dd-MM-yyyy + "%s-%s-%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %-e %b %Y + %2$s %1$s + %1$s %3$s + %-e %b %Y + %-e %B + %-B + %B %Y + %-e-%b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s-%2$s - %8$s-%7$s + %1$s %3$s-%2$s - %6$s %8$s-%7$s + %3$s-%2$s-%4$s - %8$s-%7$s-%9$s + %1$s %3$s-%2$s-%4$s - %6$s %8$s-%7$s-%9$s + %5$s %1$s %3$s-%2$s-%4$s - %10$s %6$s %8$s-%7$s-%9$s + %5$s %3$s-%2$s - %10$s %8$s-%7$s + %5$s %1$s %3$s-%2$s - %10$s %6$s %8$s-%7$s + %5$s %3$s-%2$s-%4$s - %10$s %8$s-%7$s-%9$s + %3$s %1$s %2$s - %6$s %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s - %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s - %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s - %6$s %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s %3$s %2$s - %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 3a9e32c52471..a418d72a882f 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -161,14 +161,10 @@ "Hiermee kan een toepassing de huidige configuratie, zoals de landinstelling of de algemene lettergrootte, wijzigen." "andere toepassingen opnieuw starten" "Hiermee kan een toepassing andere toepassingen opnieuw starten." - "stoppen voorkomen" - "Hiermee kan een toepassing ervoor zorgen dat elk willekeurig proces op de voorgrond wordt uitgevoerd en dus niet kan worden afgesloten. Nooit vereist voor normale toepassingen." "toepassing nu sluiten" "Hiermee kan een toepassing elke willekeurige activiteit die op de voorgrond wordt uitgevoerd, sluiten en naar de achtergrond verplaatsen. Nooit vereist voor normale toepassingen." "interne systeemstatus ophalen" "Hiermee kan een toepassing de interne status van het systeem ophalen. Schadelijke toepassingen kunnen privé- of veiligheidsgegevens ophalen die ze normaal niet nodig hebben." - "services op laag niveau publiceren" - "Hiermee kunnen toepassingen hun eigen systeemservices op laag niveau publiceren. Schadelijke toepassingen kunnen het systeem mogelijk kapen en willekeurige gegevens van het systeem stelen of beschadigen." "alle startende toepassingen bijhouden en beheren" "Hiermee kan een toepassing de manier waarop het systeem activiteiten start, bijhouden en beheren. Schadelijke toepassingen kunnen het systeem volledig in gevaar brengen. Deze machtiging is alleen voor ontwikkeling vereist, nooit voor normaal telefoongebruik." "melding verzenden dat pakket is verwijderd" @@ -181,8 +177,6 @@ "Hiermee kan een toepassing het maximum aantal processen bepalen dat wordt uitgevoerd. Nooit vereist voor normale toepassingen." "alle achtergrondtoepassingen sluiten" "Hiermee kan een toepassing bepalen of activiteiten altijd worden afgesloten zodra deze naar de achtergrond gaan. Nooit nodig voor normale toepassingen." - "systeemupdates automatisch installeren" - "Hiermee ontvangt een toepassing meldingen over beschikbare systeemupdates en kan hun installatie starten. Schadelijke toepassingen kunnen hiervan gebruik maken om het systeem met ongeautoriseerde updates te beschadigen of het updateproces in het algemeen te verstoren." "accustatistieken aanpassen" "Hiermee kunnen verzamelde accustatistieken worden gewijzigd. Niet voor gebruik door normale toepassingen." "niet-geautoriseerde vensters weergeven" @@ -418,9 +412,6 @@ "Wachtwoord" "Aanmelden" "Gebruikersnaam of wachtwoord ongeldig." - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "Meldingen wissen" @@ -452,9 +443,6 @@ "invoeren" "verwijderen" "Zoeken" - "Vandaag" - "Gisteren" - "Morgen" "1 maand geleden" "Meer dan 1 maand geleden" @@ -536,13 +524,6 @@ "weken" "jaar" "jaren" - "Zondag" - "Maandag" - "Dinsdag" - "Woensdag" - "Donderdag" - "Vrijdag" - "Zaterdag" "Elke weekdag (ma-vr)" "Dagelijks" "Wekelijks op %s" @@ -552,137 +533,15 @@ "Deze video kan helaas niet worden gestreamd naar dit apparaat." "Deze video kan niet worden afgespeeld." "OK" - "am" - "pm" - "%d-%m-%Y" - "%1$s %2$s, %3$s%4$s %5$s, %6$s" - "%1$s %2$s%4$s %5$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s %3$s" - "%2$s %3$s" - "%1$s, %3$s" - "%1$s, %2$s" "%1$s, %2$s" - "%1$s, %2$s" - "d' 'MMMM' 'yyyy" - "d' 'MMMM' 'yyyy" - "d' 'MMM' 'yyyy" - "d' 'MMM' 'yyyy" - "h':'mm' 'a" - "HH':'mm" "twaalf uur \'s middags" "Twaalf uur \'s middags" "middernacht" "Middernacht" - "%-d %B" - "%-d %B %Y" - "%B %Y" - "%H:%M:%S" - "%H:%M:%S %-d %B %Y" - "%3$s %2$s%8$s %7$s" - "%1$s %3$s %2$s%6$s %8$s %7$s" - "%3$s %2$s%8$s %7$s %9$s" - "%1$s %3$s %2$s%6$s %8$s %7$s %9$s" - "%3$s %2$s, %5$s%8$s %7$s, %10$s" - "%1$s %3$s %2$s, %5$s%6$s %8$s %7$s, %10$s" - "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s %3$s %2$s %4$s, %5$s%6$s %8$s %7$s %9$s, %10$s" - "%3$s-%2$s%8$s-%7$s" - "%1$s %3$s-%2$s%6$s %8$s-%7$s" - "%3$s-%2$s-%4$s%8$s-%7$s-%9$s" - "%1$s %3$s-%2$s-%4$s%6$s %8$s-%7$s-%9$s" - "%3$s-%2$s, %5$s%8$s-%7$s, %10$s" - "%1$s %3$s-%2$s, %5$s%6$s %8$s-%7$s, %10$s" - "%3$s-%2$s-%4$s, %5$s%8$s-%7$s-%9$s, %10$s" - "%1$s %3$s-%2$s-%4$s, %5$s%6$s %8$s-%7$s-%9$s, %10$s" - "%3$s%8$s %2$s" - "%1$s %3$s %2$s%6$s %8$s %7$s" - "%3$s%8$s %2$s %9$s" - "%1$s %3$s %2$s %4$s%6$s %8$s %7$s %9$s" - "%3$s %2$s, %5$s%8$s %7$s, %10$s" - "%1$s %3$s %2$s, %5$s%6$s %8$s %7$s, %10$s" - "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s %3$s %2$s %4$s, %5$s%6$s %8$s %7$s %9$s, %10$s" - "%-d %b %Y" - "%b %Y" - "%-d %b" - "Zondag" - "Maandag" - "Dinsdag" - "Woensdag" - "Donderdag" - "Vrijdag" - "Zaterdag" - "Zo" - "Ma" - "Di" - "Wo" - "Do" - "Vr" - "Za" - "Zo" - "Ma" - "Di" - "Wo" - "Do" - "Vr" - "Za" - "Zo" - "M" - "Di" - "W" - "Do" - "V" - "Za" - "Z" - "M" - "D" - "W" - "D" - "V" - "Z" - "Januari" - "Februari" - "Maart" - "April" - "Mei" - "Juni" - "Juli" - "Augustus" - "September" - "Oktober" - "November" - "December" - "Jan" - "Feb" - "Mrt" - "Apr" - "Mei" - "Jun" - "Jul" - "Aug" - "Sep" - "Okt" - "Nov" - "Dec" - "J" - "V" - "M" - "A" - "M" - "J" - "J" - "A" - "S" - "O" - "N" - "D" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Alles selecteren" diff --git a/core/res/res/values-pl-rPL/donottranslate-cldr.xml b/core/res/res/values-pl-rPL/donottranslate-cldr.xml new file mode 100644 index 000000000000..4ad17bf11c46 --- /dev/null +++ b/core/res/res/values-pl-rPL/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + styczeń + luty + marzec + kwiecień + maj + czerwiec + lipiec + sierpień + wrzesień + październik + listopad + grudzień + + stycznia + lutego + marca + kwietnia + maja + czerwca + lipca + sierpnia + września + października + listopada + grudnia + + sty + lut + mar + kwi + maj + cze + lip + sie + wrz + paź + lis + gru + + s + l + m + k + m + c + l + s + w + p + l + g + + niedziela + poniedziałek + wtorek + środa + czwartek + piątek + sobota + + niedz. + pon. + wt. + śr. + czw. + pt. + sob. + + niedz. + pon. + wt. + śr. + czw. + pt. + sob. + + N + P + W + Ś + C + P + S + + AM + PM + Wczoraj + Dzisiaj + Jutro + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d-%m-%Y + dd-MM-yyyy + "%s-%s-%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %d-%m-%Y + %2$s %1$s + %1$s %3$s + %d-%m-%Y + %-e %B + %-B + %-B %Y + %b %-e + %-b + %Y %b + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s-%8$s.%7$s + %1$s, %3$s.%2$s - %6$s, %8$s.%7$s + %3$s.%2$s.%4$s-%8$s.%7$s.%9$s + %1$s, %3$s-%2$s-%4$s-%6$s, %8$s-%7$s-%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s - %10$s %8$s.%7$s + %5$s %1$s, %2$s-%3$s - %10$s %6$s, %7$s-%8$s + %5$s %3$s-%2$s-%4$s - %10$s %8$s-%7$s-%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %3$s %2$s %1$s - %8$s %7$s %6$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s %1$s - %10$s %8$s %7$s %6$s + %5$s %3$s %2$s %1$s - %10$s %8$s %7$s %6$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %3$s %2$s %1$s - %8$s %7$s %6$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-pl/donottranslate-cldr.xml b/core/res/res/values-pl/donottranslate-cldr.xml new file mode 100644 index 000000000000..4ad17bf11c46 --- /dev/null +++ b/core/res/res/values-pl/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + styczeń + luty + marzec + kwiecień + maj + czerwiec + lipiec + sierpień + wrzesień + październik + listopad + grudzień + + stycznia + lutego + marca + kwietnia + maja + czerwca + lipca + sierpnia + września + października + listopada + grudnia + + sty + lut + mar + kwi + maj + cze + lip + sie + wrz + paź + lis + gru + + s + l + m + k + m + c + l + s + w + p + l + g + + niedziela + poniedziałek + wtorek + środa + czwartek + piątek + sobota + + niedz. + pon. + wt. + śr. + czw. + pt. + sob. + + niedz. + pon. + wt. + śr. + czw. + pt. + sob. + + N + P + W + Ś + C + P + S + + AM + PM + Wczoraj + Dzisiaj + Jutro + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d-%m-%Y + dd-MM-yyyy + "%s-%s-%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %d-%m-%Y + %2$s %1$s + %1$s %3$s + %d-%m-%Y + %-e %B + %-B + %-B %Y + %b %-e + %-b + %Y %b + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s-%8$s.%7$s + %1$s, %3$s.%2$s - %6$s, %8$s.%7$s + %3$s.%2$s.%4$s-%8$s.%7$s.%9$s + %1$s, %3$s-%2$s-%4$s-%6$s, %8$s-%7$s-%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s - %10$s %8$s.%7$s + %5$s %1$s, %2$s-%3$s - %10$s %6$s, %7$s-%8$s + %5$s %3$s-%2$s-%4$s - %10$s %8$s-%7$s-%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %3$s %2$s %1$s - %8$s %7$s %6$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s %1$s - %10$s %8$s %7$s %6$s + %5$s %3$s %2$s %1$s - %10$s %8$s %7$s %6$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %3$s %2$s %1$s - %8$s %7$s %6$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 50d245b5d8e1..c6c9bd07dec2 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -161,14 +161,10 @@ "Pozwala aplikacji zmieniać bieżącą konfigurację, na przykład lokalny lub globalny rozmiar czcionki." "resetowanie innych aplikacji" "Pozwala aplikacji na wymuszenie ponownego uruchomienia innych aplikacji." - "zapobieganie zatrzymaniu" - "Pozwala aplikacji na uruchamianie dowolnego procesu na pierwszym planie tak, że nie można go wyłączyć. Nigdy nie powinno być potrzebne normalnym aplikacjom." "wymuszanie zamknięcia aplikacji" "Pozwala aplikacji na wymuszenie zamknięcia i cofnięcia dowolnej operacji działającej na pierwszym planie. Nigdy nie powinno być potrzebne normalnym aplikacjom." "pobieranie informacji o wewnętrznym stanie systemu" "Pozwala aplikacjom na pobieranie informacji o wewnętrznym stanie systemu. Szkodliwe aplikacje mogą pobrać szeroką gamę osobistych i zabezpieczonych informacji, które normalnie nie powinny im być nigdy potrzebne." - "publikowanie usług niskiego poziomu" - "Pozwala aplikacji na publikowanie własnych usług systemowych niskiego poziomu. Szkodliwe aplikacje mogą przejąć kontrolę nad systemem oraz wykraść lub uszkodzić znajdujące się w nim dane." "monitorowanie i kontrolowanie wszystkich uruchamianych aplikacji" "Pozwala aplikacji na monitorowanie i kontrolowanie sposobu, w jaki w systemie uruchamiane są różne działania. Szkodliwe aplikacje mogą całkowicie przejąć system. Te uprawnienia potrzebne są tylko programistom, nigdy w przypadku normalnego wykorzystywania telefonu." "wysyłanie transmisji informującej o usuniętym pakiecie" @@ -181,8 +177,6 @@ "Pozwala aplikacji na kontrolowanie maksymalnej liczby uruchamianych procesów. Nigdy nie wykorzystywane przez normalne aplikacje." "zamykanie wszystkich aplikacji działających w tle" "Pozwala aplikacji na kontrolowanie, czy czynności są zawsze kończone, kiedy zaczynają działać w tle. Nigdy nie jest potrzebne normalnym aplikacjom." - "automatyczne instalowanie aktualizacji systemu" - "Pozwala aplikacji na otrzymywanie powiadomień o oczekujących aktualizacjach systemu i uruchamianie ich instalacji. Szkodliwe aplikacje mogą to wykorzystać do uszkodzenia systemu za pomocą nieuwierzytelnionych aktualizacji lub ogólnie wpłynąć na proces aktualizowania." "zmienianie statystyk dotyczących baterii" "Pozwala na zmianę zebranych statystyk dotyczących baterii. Nie do wykorzystania przez normalne aplikacje." "wyświetlanie nieuwierzytelnionych okien" @@ -418,9 +412,6 @@ "Hasło" "Zaloguj" "Błędna nazwa użytkownika lub hasło." - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "Wyczyść powiadomienia" @@ -452,9 +443,6 @@ "enter" "usuń" "Szukaj" - "Dzisiaj" - "Wczoraj" - "Jutro" "1 miesiąc temu" "Ponad 1 miesiąc temu" @@ -536,13 +524,6 @@ "tygodni" "rok" "lat" - "niedziela" - "poniedziałek" - "wtorek" - "środa" - "czwartek" - "piątek" - "sobota" "W każdy dzień roboczy (pon–pt)" "Codziennie" "Co tydzień w %s" @@ -552,137 +533,15 @@ "Przepraszamy, ten film wideo nie nadaje się do przesyłania strumieniowego do tego urządzenia." "Niestety, nie można odtworzyć tego filmu wideo." "OK" - "rano" - "po południu" - "%m/%d/%Y" - "%1$s, %2$s, %3$s%4$s, %5$s, %6$s" - "%1$s, %2$s%4$s, %5$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s, %3$s" - "%2$s, %3$s" - "%1$s, %3$s" - "%1$s, %2$s" "%1$s, %2$s" - "%1$s, %2$s" - "MMMM' 'd', 'yyyy" - "d' 'MMMM', 'yyyy" - "MMM' 'd', 'yyyy" - "d' 'MMM', 'yyyy" - "h':'mm' 'a" - "HH':'mm" "południe" "Południe" "północ" "Północ" - "%-d %B" - "%-d %B %Y" - "%B %Y" - "%H:%M:%S" - "%H:%M:%S %B %-d, %Y" - "%2$s %3$s%7$s %8$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s" - "%2$s %3$s%7$s %8$s, %9$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s, %9$s" - "%2$s %3$s, %5$s%7$s %8$s, %10$s" - "%1$s, %2$s %3$s, %5$s%6$s, %7$s %8$s, %10$s" - "%2$s %3$s, %4$s, %5$s%7$s %8$s, %9$s, %10$s" - "%1$s, %2$s %3$s, %4$s, %5$s%6$s, %7$s %8$s, %9$s, %10$s" - "%2$s/%3$s%7$s/%8$s" - "%1$s, %2$s/%3$s%6$s, %7$s/%8$s" - "%2$s/%3$s/%4$s%7$s/%8$s/%9$s" - "%1$s, %2$s/%3$s/%4$s%6$s, %7$s/%8$s/%9$s" - "%2$s/%3$s, %5$s%7$s/%8$s, %10$s" - "%1$s, %2$s/%3$s, %5$s%6$s, %7$s/%8$s, %10$s" - "%2$s/%3$s/%4$s, %5$s%7$s/%8$s/%9$s, %10$s" - "%1$s, %2$s/%3$s/%4$s, %5$s%6$s, %7$s/%8$s/%9$s, %10$s" - "%2$s %3$s%8$s" - "%1$s, %2$s %3$s%6$s, %7$s %8$s" - "%2$s %3$s%8$s, %9$s" - "%1$s, %2$s %3$s, %4$s%6$s, %7$s %8$s, %9$s" - "%2$s %3$s, %5$s%7$s %8$s, %10$s" - "%1$s, %2$s %3$s, %5$s%6$s, %7$s %8$s, %10$s" - "%2$s %3$s, %4$s, %5$s%7$s %8$s, %9$s, %10$s" - "%1$s, %2$s %3$s, %4$s, %5$s%6$s, %7$s %8$s, %9$s, %10$s" - "%-d %b %Y" - "%b %Y" - "%b %-d" - "niedziela" - "poniedziałek" - "wtorek" - "środa" - "czwartek" - "piątek" - "sobota" - "Nie" - "Pon" - "Wt" - "Śro" - "Czw" - "Pią" - "Sob" - "Nd" - "Pn" - "Wt" - "Śr" - "Czw" - "Pt" - "So" - "Nd" - "Pon" - "Wt" - "Śr" - "Czw" - "Pt" - "So" - "Nd" - "Pon" - "Czw" - "Śr" - "Czw" - "Pt" - "Sob" - "Styczeń" - "Luty" - "Marzec" - "Kwiecień" - "Maj" - "Czerwiec" - "Lipiec" - "Sierpień" - "Wrzesień" - "Październik" - "Listopad" - "Grudzień" - "Sty" - "Lut" - "Mar" - "Kwi" - "Maj" - "Cze" - "Lip" - "Sie" - "Wrz" - "Paź" - "Lis" - "Gru" - "Sty" - "Lut" - "Pon" - "Kwi" - "Maj" - "Cze" - "Lip" - "Sie" - "Wrz" - "Paź" - "Lis" - "Gru" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Zaznacz wszystko" diff --git a/core/res/res/values-pt-rBR/donottranslate-cldr.xml b/core/res/res/values-pt-rBR/donottranslate-cldr.xml new file mode 100644 index 000000000000..47290552dd2e --- /dev/null +++ b/core/res/res/values-pt-rBR/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + janeiro + fevereiro + março + abril + maio + junho + julho + agosto + setembro + outubro + novembro + dezembro + + janeiro + fevereiro + março + abril + maio + junho + julho + agosto + setembro + outubro + novembro + dezembro + + jan + fev + mar + abr + mai + jun + jul + ago + set + out + nov + dez + + J + F + M + A + M + J + J + A + S + O + N + D + + domingo + segunda-feira + terça-feira + quarta-feira + quinta-feira + sexta-feira + sábado + + dom + seg + ter + qua + qui + sex + sáb + + dom + seg + ter + qua + qui + sex + sáb + + D + S + T + Q + Q + S + S + + AM + PM + Ontem + Hoje + Amanhã + + %-kh%M + %-l:%M %p + %-l:%M %^p + h:mm a + H'h'mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e de %B de %Y + %H:%M:%S + %H:%M:%S %d/%m/%Y + %2$s %1$s + %1$s %3$s + %d/%m/%Y + %-e de %B + %-B + %B de %Y + %-e de %b + %-b + %b de %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s, %3$s/%2$s - %6$s, %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s - %6$s, %8$s/%7$s/%9$s + %5$s %1$s, %3$s/%2$s/%4$s - %10$s %6$s, %8$s/%7$s/%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s, %3$s/%2$s - %10$s %6$s, %8$s/%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s de %2$s - %8$s de %7$s + %1$s, %3$s de %2$s - %6$s, %8$s de %7$s + %5$s %3$s de %2$s - %10$s %8$s de %7$s + %5$s %3$s de %2$s - %10$s %8$s de %7$s + %5$s %1$s, %3$s de %2$s - %10$s %6$s, %8$s de %7$s + %5$s %1$s, %3$s de %2$s - %10$s %6$s, %8$s de %7$s + %5$s %3$s de %2$s de %4$s - %10$s %8$s de %7$s de %9$s + %5$s %3$s de %2$s de %4$s - %10$s %8$s de %7$s de %9$s + %5$s %1$s, %3$s de %2$s de %4$s - %10$s %6$s, %8$s de %7$s de %9$s + %5$s %1$s, %3$s de %2$s de %4$s - %10$s %6$s, %8$s de %7$s de %9$s + %1$s, %3$s de %2$s de %4$s - %6$s, %8$s de %7$s de %9$s + %3$s-%8$s de %2$s + %1$s, %3$s de %2$s - %6$s, %8$s de %7$s + %3$s de %2$s - %8$s de %7$s de %9$s + %3$s-%8$s de %2$s de %9$s + %1$s, %3$s de %2$s - %6$s, %8$s de %7$s de %9$s + %b + diff --git a/core/res/res/values-pt-rPT/donottranslate-cldr.xml b/core/res/res/values-pt-rPT/donottranslate-cldr.xml new file mode 100644 index 000000000000..f38a2d0499d7 --- /dev/null +++ b/core/res/res/values-pt-rPT/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Janeiro + Fevereiro + Março + Abril + Maio + Junho + Julho + Agosto + Setembro + Outubro + Novembro + Dezembro + + Janeiro + Fevereiro + Março + Abril + Maio + Junho + Julho + Agosto + Setembro + Outubro + Novembro + Dezembro + + Jan + Fev + Mar + Abr + Mai + Jun + Jul + Ago + Set + Out + Nov + Dez + + J + F + M + A + M + J + J + A + S + O + N + D + + domingo + segunda-feira + terça-feira + quarta-feira + quinta-feira + sexta-feira + sábado + + dom + seg + ter + qua + qui + sex + sáb + + dom + seg + ter + qua + qui + sex + sáb + + D + S + T + Q + Q + S + S + + Antes do meio-dia + Depois do meio-dia + Ontem + Hoje + Amanhã + + %-kh%M + %-l:%M %p + %-l:%M %^p + h:mm a + H'h'mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e de %B de %Y + %H:%M:%S + %H:%M:%S %-e de %b de %Y + %2$s %1$s + %1$s %3$s + %-e de %b de %Y + %-e de %B + %-B + %B de %Y + %-e de %b + %b + %b de %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s, %3$s/%2$s - %6$s, %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s - %6$s, %8$s/%7$s/%9$s + %5$s %1$s, %3$s/%2$s/%4$s - %10$s %6$s, %8$s/%7$s/%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s, %3$s/%2$s - %10$s %6$s, %8$s/%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s de %2$s - %8$s de %7$s + %1$s, %3$s de %2$s - %6$s, %8$s de %7$s + %5$s %3$s de %2$s - %10$s %8$s de %7$s + %5$s %3$s de %2$s - %10$s %8$s de %7$s + %5$s %1$s, %3$s de %2$s - %10$s %6$s, %8$s de %7$s + %5$s %1$s, %3$s de %2$s - %10$s %6$s, %8$s de %7$s + %5$s %3$s de %2$s de %4$s - %10$s %8$s de %7$s de %9$s + %5$s %3$s de %2$s de %4$s - %10$s %8$s de %7$s de %9$s + %5$s %1$s, %3$s de %2$s de %4$s - %10$s %6$s, %8$s de %7$s de %9$s + %5$s %1$s, %3$s de %2$s de %4$s - %10$s %6$s, %8$s de %7$s de %9$s + %1$s, %3$s de %2$s de %4$s - %6$s, %8$s de %7$s de %9$s + %3$s-%8$s de %2$s + %1$s, %3$s de %2$s - %6$s, %8$s de %7$s + %3$s de %2$s - %8$s de %7$s de %9$s + %3$s-%8$s de %2$s de %9$s + %1$s, %3$s de %2$s - %6$s, %8$s de %7$s de %9$s + %b + diff --git a/core/res/res/values-pt/donottranslate-cldr.xml b/core/res/res/values-pt/donottranslate-cldr.xml new file mode 100644 index 000000000000..47290552dd2e --- /dev/null +++ b/core/res/res/values-pt/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + janeiro + fevereiro + março + abril + maio + junho + julho + agosto + setembro + outubro + novembro + dezembro + + janeiro + fevereiro + março + abril + maio + junho + julho + agosto + setembro + outubro + novembro + dezembro + + jan + fev + mar + abr + mai + jun + jul + ago + set + out + nov + dez + + J + F + M + A + M + J + J + A + S + O + N + D + + domingo + segunda-feira + terça-feira + quarta-feira + quinta-feira + sexta-feira + sábado + + dom + seg + ter + qua + qui + sex + sáb + + dom + seg + ter + qua + qui + sex + sáb + + D + S + T + Q + Q + S + S + + AM + PM + Ontem + Hoje + Amanhã + + %-kh%M + %-l:%M %p + %-l:%M %^p + h:mm a + H'h'mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + %-e de %B de %Y + %H:%M:%S + %H:%M:%S %d/%m/%Y + %2$s %1$s + %1$s %3$s + %d/%m/%Y + %-e de %B + %-B + %B de %Y + %-e de %b + %-b + %b de %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s, %3$s/%2$s - %6$s, %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s - %6$s, %8$s/%7$s/%9$s + %5$s %1$s, %3$s/%2$s/%4$s - %10$s %6$s, %8$s/%7$s/%9$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s, %3$s/%2$s - %10$s %6$s, %8$s/%7$s + %5$s %3$s/%2$s/%4$s - %10$s %8$s/%7$s/%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s de %2$s - %8$s de %7$s + %1$s, %3$s de %2$s - %6$s, %8$s de %7$s + %5$s %3$s de %2$s - %10$s %8$s de %7$s + %5$s %3$s de %2$s - %10$s %8$s de %7$s + %5$s %1$s, %3$s de %2$s - %10$s %6$s, %8$s de %7$s + %5$s %1$s, %3$s de %2$s - %10$s %6$s, %8$s de %7$s + %5$s %3$s de %2$s de %4$s - %10$s %8$s de %7$s de %9$s + %5$s %3$s de %2$s de %4$s - %10$s %8$s de %7$s de %9$s + %5$s %1$s, %3$s de %2$s de %4$s - %10$s %6$s, %8$s de %7$s de %9$s + %5$s %1$s, %3$s de %2$s de %4$s - %10$s %6$s, %8$s de %7$s de %9$s + %1$s, %3$s de %2$s de %4$s - %6$s, %8$s de %7$s de %9$s + %3$s-%8$s de %2$s + %1$s, %3$s de %2$s - %6$s, %8$s de %7$s + %3$s de %2$s - %8$s de %7$s de %9$s + %3$s-%8$s de %2$s de %9$s + %1$s, %3$s de %2$s - %6$s, %8$s de %7$s de %9$s + %b + diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml new file mode 100644 index 000000000000..c5c5bbbdf66e --- /dev/null +++ b/core/res/res/values-pt/strings.xml @@ -0,0 +1,793 @@ + + + + "B" + "KB" + "MB" + "GB" + "TB" + "PB" + "<sem título>" + "…" + "(Nenhum número de telefone)" + "(Desconhecido)" + "Correio de voz" + "MSISDN1" + "Problema de conexão ou código MMI inválido." + "O serviço foi ativado." + "O serviço foi ativado para:" + "O serviço foi desativado." + "O registro foi bem-sucedido." + "Exclusão bem-sucedida." + "Senha incorreta" + "MMI completo." + "O PIN antigo digitado não está correto." + "O PUK digitado não está correto." + "Os PINs digitados não correspondem." + "Digite um PIN com 4 a 8 números." + "Seu cartão SIM está bloqueado pelo código PUK. Digite o PUK para desbloqueá-lo." + "Digite PUK2 para desbloquear cartão SIM." + "ID do chamador" + "ID de quem realiza a chamada" + "Transferência de chamada" + "Chamada em espera" + "Bloqueio de chamada" + "Alteração da senha" + "Alteração de PIN" + + + + + + + + + + + + + "ID do chamador assume o padrão de restrito. Próxima chamada: restrita" + "ID do chamador assume o padrão de restrito. Próxima chamada: não restrita" + "ID do chamador assume o padrão de não restrito. Próxima chamada: restrita" + "ID do chamador assume o padrão de não restrito. Próxima chamada: não restrita" + "Serviço não fornecido" + "A configuração da ID do chamador não pode ser alterada." + + + + + + + + + + + "Voz" + "Dados" + "FAX" + "SMS" + "Assíncrono" + "Sincronizar" + "Pacote" + "PAD" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "{0}: Não transferido" + "{0}: {1}" + "{0}: {1} após {2} segundos" + "{0}: Não transferido" + "{0}: Não transferido" + + + + + "OK" + "A página da web contém um erro." + "Não foi possível encontrar o URL." + "O esquema de autenticação não é suportado." + "Falha na autenticação." + "Falha na autenticação pelo servidor proxy." + "Falha na conexão com o servidor." + "Falha de comunicação com o servidor. Tente novamente mais tarde." + "Tempo limite da conexão com o servidor esgotado." + "A página contém muitos redirecionamentos do servidor." + "O protocolo não é suportado." + "Não foi possível estabelecer uma conexão segura." + "A página não pode ser aberta, pois o URL é inválido." + "Não foi possível acessar o arquivo." + "O arquivo solicitado não foi encontrado." + "Muitas solicitações sendo processadas. Tente novamente mais tarde." + "Sincronizar" + "Sincronizar" + "Muitas exclusões do %s." + "O armazenamento do telefone está cheio! Exclua alguns arquivos para liberar espaço." + "Eu" + "Opções do telefone" + "Modo silencioso" + "Ativar rede sem fio" + "Desativar a rede sem fio" + "Bloqueio de tela" + "Desligar" + "Desligando…" + "Seu telefone desligará" + "Nenhum aplicativo recente." + "Opções do telefone" + "Bloqueio de tela" + "Desligar" + "Modo silencioso" + "O som está DESLIGADO" + "O som está ATIVADO" + + + + + + + "Modo de segurança" + + + "Serviços que custam dinheiro" + "Permite que os aplicativos façam coisas que podem custar dinheiro." + "Suas mensagens" + "Ler e gravar suas mensagens SMS, e-mail e outras mensagens." + "Suas informações pessoais" + "Acesso direto aos seus contatos e calendário armazenados no telefone." + "Sua localização" + "Monitore seu local físico" + "Comunicação de rede" + "Permite que os aplicativos acessem diversos recursos de rede." + "Suas contas do Google" + "Acesse as contas do Google disponíveis." + "Controles de hardware" + "Acesso direto ao hardware no handset." + "Chamadas telefônicas" + "Monitorar, registrar e processar chamadas telefônicas." + "Ferramentas do sistema" + "Acesso de nível inferior e controle do sistema." + "Ferramentas de desenvolvimento" + "Recursos necessários apenas aos desenvolvedores de aplicativo." + + + + + "desativar ou modificar a barra de status" + "Permite que os aplicativos desativem a barra de status ou adicionem e removam ícones do sistema." + "expandir/recolher barra de status" + "Permite que um aplicativo expanda ou recolha a barra de status." + "Interceptar chamadas realizadas" + "Permite que aplicativos processem chamadas realizadas e alterem o número a ser discado. Aplicativos maliciosos podem monitorar, redirecionar ou impedir chamadas realizadas." + "receber SMS" + "Permite que o aplicativo receba e processe mensagens SMS. Aplicativos maliciosos podem monitorar suas mensagens ou excluí-las sem mostrá-las a você." + "receber MMS" + "Permite que o aplicativo receba e processe mensagens MMS. Aplicativos maliciosos podem monitorar suas mensagens ou excluí-las sem mostrá-las a você." + "enviar mensagens SMS" + "Permite que os aplicativos enviem mensagens SMS. Os aplicativos maliciosos podem causar prejuízo financeiro a você ao enviar mensagens sem a sua confirmação." + "ler SMS ou MMS" + "Permite que um aplicativo leia mensagens SMS armazenadas no seu telefone ou cartão SIM. Aplicativos maliciosos podem ler suas mensagens confidenciais." + "editar SMS ou MMS" + "Permite que um aplicativo grave mensagens SMS armazenadas no seu telefone ou cartão SIM. Aplicativos maliciosos podem excluir suas mensagens." + "receber WAP" + "Permite que o aplicativo receba e processe mensagens WAP. Aplicativos maliciosos podem monitorar suas mensagens ou excluí-las sem mostrá-las a você." + "recuperar aplicativos em execução" + "Permite que os aplicativos recuperem informações sobre as tarefas em execução no momento ou recentemente. Pode permitir que aplicativos maliciosos descubram informações particulares sobre outros aplicativos." + "reorganizar os aplicativos em execução" + "Permite que um aplicativo mova as tarefas para o primeiro ou segundo plano. Os aplicativos maliciosos podem forçar sua permanência no primeiro plano sem o seu controle." + "ativar depuração do aplicativo" + "Permite que um aplicativo ative a depuração de outro aplicativo. Aplicativos maliciosos podem usar isso para encerrar outros aplicativos." + "alterar as configurações da sua IU" + "Permite que um aplicativo mude a configuração atual, como a localidade ou o tamanho geral de fonte." + "reiniciar outros aplicativos" + "Permite que um aplicativo reinicie outros aplicativos forçosamente." + "forçar fechamento do aplicativo" + "Permite que um aplicativo force qualquer atividade que esteja em primeiro plano a fechar e voltar. Normalmente não é necessário para aplicativos normais." + "recuperar estado interno do sistema" + "Permite que um aplicativo recupere o estado interno do sistema. Aplicativos maliciosos podem recuperar um ampla variedade de informações privadas e seguras, as quais não deveriam precisar normalmente." + + + + + + + + + "monitorar e controle toda inicialização de aplicativo" + "Permite que um aplicativo monitore e controle como o sistema inicia as atividades. Os aplicativos maliciosos podem comprometer completamente o sistema. Esta permissão é necessária apenas para desenvolvimento, nunca para uso normal do telefone." + "enviar transmissão de pacote removido" + "Permite que um aplicativo transmita uma notificação de que o pacote de um aplicativo foi removido. Aplicativos maliciosos podem usar isso para encerrar outro aplicativo em execução." + "enviar transmissão de SMS recebido" + "Permite que um aplicativo transmita uma notificação de que uma mensagem SMS foi recebida. Aplicativos maliciosos podem usar isso para forjar o recebimento de mensagens SMS." + "enviar transmissão de WAP-PUSH recebido" + "Permite que um aplicativo transmita uma notificação de que uma mensagem WAP PUSH foi recebida. Aplicativos maliciosos podem usar isso para forjar o recebimento de uma mensagem MMS ou substituir silenciosamente o conteúdo de qualquer página da web por variantes maliciosas." + "limitar o número de processos em execução" + "Permite que um aplicativo controle o número máximo de processos que serão executados. Nunca é necessário para aplicativos normais." + "fazer todos os aplicativos em segundo plano fechar" + "Permite que um aplicativo controle se as atividades são sempre concluídas assim que vão para o segundo plano. Nunca é necessário para aplicativos normais." + "Modificar as estatísticas da bateria" + "Permite a modificação das estatísticas coletadas sobre a bateria. Não deve ser usado em aplicativos normais." + + + + + "exibir janelas não autorizadas" + "Permite a criação de janelas que devem ser usadas pela interface de usuário do sistema interno. Normalmente não é necessário para aplicativos normais." + "exibir alertas do nível do sistema" + "Permite que um aplicativo mostre janelas de alerta do sistema. Aplicativos maliciosos podem assumir o controle de toda a tela do telefone." + "modificar a velocidade de animação global" + "Permite que um aplicativo altere a velocidade de animação global (animações mais rápidas ou mais lentas) a qualquer momento." + "gerenciar os símbolos do aplicativo" + "Permite que um aplicativo crie e gerencie seus próprio símbolos, ignorando a ordem-Z (Z-ordering). Normalmente não é necessário para aplicativos normais." + "pressionar as teclas e os botões de controle" + "Permite que um aplicativo proporcione seus próprios eventos de entrada (pressionamentos de tecla etc.) a outros aplicativos. Aplicativos maliciosos podem usar isso para assumir o controle do telefone." + "registrar o que você digita e as ações que executa" + "Permite que os aplicativos observem as teclas que você pressiona ao interagir com outro aplicativo (como ao digitar uma senha). Normalmente não é necessário para aplicativos normais." + "aderir a um método de entrada" + "Permite que o portador se vincule à interface de nível superior de um método de entrada. Normalmente não é necessário em aplicativos normais." + "alterar orientação da tela" + "Permite que um aplicativo altere a rotação da tela a qualquer momento. Normalmente não é necessário para aplicativos normais." + "enviar sinais de Linux aos aplicativos" + "Permite que o aplicativo solicite que o sinal fornecido seja enviado a todos os processos persistentes." + "fazer com que o aplicativo execute sempre" + "Permite que um aplicativo torne partes dele mesmo persistentes, para que o sistema não possa usá-lo para outros aplicativos." + "excluir aplicativos" + "Permite que um aplicativo exclua pacotes do Android. Aplicativos maliciosos podem usar isso para excluir aplicativos importantes." + "excluir os dados de outros aplicativos" + "Permite que um aplicativo limpe os dados do usuário." + "excluir o cache de outros aplicativos" + "Permite que um aplicativo exclua arquivos armazenados em cache." + "medir o espaço de armazenamento do aplicativo" + "Permite que um aplicativo recupere seu código, dados e tamanho de cache" + "instalar os aplicativos diretamente" + "Permite que um aplicativo instale pacotes novos ou atualizados do Android. Aplicativos maliciosos podem usar isso para adicionar novos aplicativos com permissões aleatórias avançadas." + "excluir todos os dados do cache do aplicativo" + "Permite que um aplicativo libere espaço de armazenamento do telefone excluindo arquivos no diretório de cache do aplicativo. O acesso é normalmente restrito ao processo do sistema." + "ler arquivos do registro do sistema" + "Permite que um aplicativo leia os diversos arquivos de registro do sistema. Isso permite que ele descubra informações gerais sobre o que você está fazendo com o telefone, mas esses arquivos não devem conter informações pessoais ou privadas." + "ler/gravar em recursos que pertencem ao diagnóstico" + "Permite que um aplicativo leia e grave em qualquer recurso que pertença ao grupo diag; por exemplo, arquivos em /dev. Isso poderia afetar a estabilidade e a segurança do sistema. Por isso, SÓ deve ser usado para diagnósticos específicos do hardware pelo fabricante ou operador." + "ativar ou desativar componentes do aplicativo" + "Permite que um aplicativo altere a ativação ou desativação de um componente de outro aplicativo. Aplicativos maliciosos podem usar isso para desativar recursos importantes do telefone. É preciso ter permissão e cuidado no uso, pois é possível deixar os componentes do aplicativo em um estado inutilizável, inconsistente ou instável." + "definir aplicativos preferidos" + "Permite que um aplicativo modifique seus aplicativos preferidos. Isso pode permitir que aplicativos maliciosos alterem silenciosamente os aplicativos em execução, falsificando seus aplicativos existentes para coletar seus dados privados." + "modificar configurações globais do sistema" + "Permite que um aplicativo modifique os dados da configuração do sistema. Aplicativos maliciosos podem corromper a configuração do sistema." + "modificar configurações de segurança do sistema" + "Permite que um aplicativo modifique os dados das configurações de segurança dos sistemas. Não deve ser usado em aplicativos normais." + "modificar o mapa de serviços do Google" + "Permite que um aplicativo modifique o mapa de serviços do Google. Não deve ser usado em aplicativos normais." + "iniciar automaticamente na inicialização" + "Permite que um aplicativo se inicie assim que o sistema termina de inicializar. Isso pode causar uma demora na inicialização do telefone e faz com que todo o telefone fique mais lento pela execução contínua do aplicativo." + "enviar transmissão complexa" + "Permite que um aplicativo envie transmissões persistentes, as quais permanecem após o término da transmissão. Aplicativos maliciosos podem tornar o telefone lento ou instável fazendo com que use muita memória." + "ler dados de contato" + "Permite que um aplicativo leia todos os dados de contato (endereço) armazenados no telefone. Aplicativos maliciosos podem usar isso para enviar seus dados a outras pessoas." + "gravar dados de contato" + "Permite que um aplicativo modifique os dados de contato (endereço) armazenados no telefone. Aplicativos maliciosos podem usar isso para apagar ou modificar seus dados de contato." + "gravar dados do proprietário" + "Permite que um aplicativo modifique os dados do proprietário do telefone armazenados no seu telefone. Aplicativos maliciosos podem usar isso para apagar ou modificar os dados do proprietário." + "ler dados do proprietário" + "Permite que um aplicativo leia os dados do proprietário do telefone armazenados no seu telefone. Aplicativos maliciosos podem usar isso para ler os dados do proprietário." + "ler os dados do calendário" + "Permite que um aplicativo leia todos os eventos de calendário armazenados no seu telefone. Aplicativos maliciosos podem usar isso para enviar os eventos do seu calendário a outras pessoas." + "gravar dados do calendário" + "Permite que um aplicativo modifique os eventos do calendário armazenados no seu telefone. Aplicativos maliciosos podem usar isso para apagar ou modificar seus dados de contato." + "imitar fontes de localização para teste" + "Criar imitação de fontes de localização para teste. Os aplicativos maliciosos podem usar isso para sobrescrever o local e/ou status retornado pelas fontes de localização reais como GPS ou provedores de rede." + "acessar comandos extra do provedor de localização" + "Acessar comandos extra de fornecedor de localização. Aplicativos maliciosos podem usar isso para interferir com a operação do GPS ou com outras fontes de localização." + + + + + "Localização precisa (GPS)" + "Acesse fontes de localização precisa como o sistema GPS (Global Positioning System) no telefone, quando estiver disponível. Aplicativos maliciosos podem usar isso para determinar onde você está e também pode consumir energia da bateria." + "Local inadequado (com base na rede)" + "Acessar fontes de localização aproximada como o banco de dados de rede de celular para determinar a localização aproximada de um telefone, quando houver disponibilidade. Aplicativos maliciosos podem usar isso para determinar sua localização aproximada." + "acessar SurfaceFlinger" + "Permite que o aplicativo use os recursos de nível inferior do SurfaceFlinger." + "ler buffer do quadro" + "Permite que o aplicativo leia o conteúdo do buffer do quadro." + "alterar as configurações do seu áudio" + "Permite que o aplicativo modifique as configurações de áudio globais como volume e roteamento." + "gravar áudio" + "Permite que o aplicativo acesso o caminho do registro de áudio." + "tirar fotos" + "Permite que o aplicativo tire fotos com a câmera. Isso permite que o aplicativo colete imagens exibidas pela câmera a qualquer momento." + "desativar permanentemente o telefone" + "Permite que o aplicativo desative todo o telefone permanentemente. Isso é muito perigoso." + "forçar reinicializarão do telefone" + "Permite que o aplicativo force a reinicialização do telefone." + "montar e desmontar sistemas de arquivos" + "Permite que o aplicativo monte e desmonte sistemas de arquivos para armazenamento removível." + + + + + "controlar vibrador" + "Permite que o aplicativo controle o vibrador." + "controlar lanterna" + "Permite que o aplicativo controle a lanterna." + "testar hardware" + "Permite que o aplicativo controle diversos periféricos para teste de hardware." + "chamar números de telefone diretamente" + "Permite que o aplicativo chame números de telefone sem sua intervenção. Aplicativos maliciosos podem causar a aparição de chamadas inesperadas na conta do seu telefone. Observe que isso não permite que o aplicativo ligue para números de emergência." + "chamar quaisquer números de telefone diretamente" + "Permite que o aplicativo chame qualquer número de telefone, incluindo números de emergência, sem sua intervenção. Aplicativos maliciosos podem fazer chamadas desnecessárias e ilegais para serviços de emergência." + "controlar notificações de atualização de localização" + "Permite a ativação/desativação das notificações sobre atualização de localização pelo rádio. Não deve ser usado em aplicativos normais." + "acessar propriedades de verificação" + "Permite acesso de leitura/gravação às propriedades enviadas pelo serviço de verificação. Não deve ser usado em aplicativos normais." + + + + + "modificar estado do telefone" + "Permite que o aplicativo controle os recursos do telefone do dispositivo. Um aplicativo com essa permissão pode alternar entre redes, ligar e desligar o rádio e executar ações parecidas sem o notificar." + "ler estado do telefone" + "Permite que o aplicativo acesse os recursos do telefone do aparelho. Um aplicativo com essa permissão pode determinar o número deste telefone, se uma chamada está ativa, o número com o qual está chamada está conectada e outras coisas semelhantes." + "impedir que o telefone entre em repouso" + "Permite que um aplicativo impeça o telefone de entrar em repouso." + "ligar ou desligar o telefone" + "Permite que o aplicativo ligue ou desligue o telefone." + "executar no modo de teste de fábrica" + "Executar como um teste de fabricante de nível inferior, permitindo o acesso completo ao hardware do telefone. Disponível apenas quando um telefone está executando no modo de teste de fábrica." + "definir papel de parede" + "Permite que o aplicativo defina o papel de parede do sistema." + "definir dicas de tamanho de papel de parede" + "Permite que o aplicativo defina as dicas de tamanho do papel de parede do sistema." + "reiniciar o sistema com o padrão de fábrica" + "Permite que um aplicativo reinicie completamente o sistema com suas configurações de fábrica, apagando todos os dados, configuração e aplicativos instalados." + "definir fuso horário" + "Permite que um aplicativo altere o fuso horário do telefone." + "descobrir contas conhecidas" + "Permite que um aplicativo obtenha a lista de contas conhecidas pelo telefone." + "exibir estado da rede" + "Permite que um aplicativo exiba o estado de todas as redes." + "acesso total à Internet" + "Permite que um aplicativo crie soquetes de rede." + "gravar configurações de Nome do ponto de acesso" + "Permite que um aplicativo modifique as configurações de APN, como Proxy e a Porta de qualquer APN." + "alterar conectividade da rede" + "Permite que um aplicativo mude o estado da conectividade da rede." + + + + + "exibir estado da rede Wi-Fi" + "Permite que um aplicativo exiba as informações sobre o estado da rede Wi-Fi." + "Alterar estado de Wi-Fi" + "Permite que um aplicativo se conecte e desconecte dos pontos de acesso Wi-Fi e faça alterações nas redes Wi-Fi configuradas." + + + + + "administração do bluetooth" + "Permite que um aplicativo configure o telefone Bluetooth local, além de descobrir e parear com dispositivos remotos." + "criar conexões Bluetooth" + "Permite que um aplicativo exiba a configuração do telefone Bluetooth local e faça e aceite conexões com os dispositivos pareados." + "desativar bloqueio de teclado" + "Permite que um aplicativo desative o bloqueio do teclado e qualquer segurança de senha associada. Um exemplo legítimo disso é o telefone desativando o bloqueio do teclado ao receber uma chamada e reativando o bloqueio ao final da chamada." + "ler configurações de sincronização" + "Permite que um aplicativo leia as configurações de sincronização, por exemplo se a sincronização está ativada para Contatos." + "gravar configurações de sincronização" + "Permite que um aplicativo modifique as configurações de sincronização, por exemplo se a sincronização está ativada para Contatos." + "ler estatísticas de sincronização" + "Permite que um aplicativo leia as estatísticas de sincronização; por exemplo, o histórico de sincronizações realizadas." + "ler feeds inscritos" + "Permite que um aplicativo obtenha detalhes sobre os feeds sincronizados atualmente." + "gravar feeds inscritos" + "Permite que um aplicativo modifique seus feeds sincronizados recentemente. Isso poderia permitir que um aplicativo malicioso alterasse seus feeds sincronizados." + + + + + + + + + + + + + + "Página Inicial" + "Celular" + "Trabalho" + "Fax comercial" + "Fax doméstico" + "Pager" + "Outro" + "Personalizar" + + + "Página Inicial" + "Trabalho" + "Outro" + "Personalizar" + + + + + "Página Inicial" + "Trabalho" + "Outro" + "Personalizar" + + + "Página Inicial" + "Trabalho" + "Outro" + "Personalizar" + + + "Trabalho" + "Outro" + "Personalizar" + + + "AIM" + "Windows Live" + "Yahoo" + "Skype" + "QQ" + "Google Talk" + "ICQ" + "Jabber" + + "Digite o código PIN" + "Código PIN incorreto!" + "Para desbloquear, pressione Menu e 0." + "Número de emergência" + "(Sem serviço)" + "Tela bloqueada." + "Pressione Menu para desbloquear ou fazer chamada de emergência." + "Pressione Menu para desbloquear." + "Desenhar padrão para desbloqueio" + "Chamada de emergência" + "Correto!" + "Sentimos muito, tente novamente" + + + "Conecte o carregador." + "Sem cartão SIM." + "Não há um cartão SIM no telefone." + "Insira um cartão SIM." + "Rede bloqueada" + "O cartão SIM está bloqueado pelo PUK." + + + "O cartão SIM está bloqueado." + "Desbloqueando cartão SIM…" + "Você desenhou incorretamente seu padrão de desbloqueio %d vezes. "\n\n"Tente novamente em %d segundos." + "Você desenhou seu padrão de desbloqueio incorretamente %d vezes. Após mais %d tentativas sem êxito, você receberá uma solicitação para desbloquear o telefone usando seu login do Google."\n\n" Tente novamente em %d segundos." + "Tentar novamente em %d segundos." + "Esqueceu o padrão?" + "Muitas tentativas de padrão!" + + + "Nome de usuário (e-mail)" + "Senha" + "Fazer login" + "Nome de usuário ou senha inválida." + + + + + "Limpar notificações" + "Sem modificações" + "Em andamento" + "Notificações" + + + "Carregando..." + "Conecte o carregador" + "A carga da bateria está ficando baixa:" + "menos de %d%% restantes." + "Falha no teste de fábrica" + "A ação FACTORY_TEST é suportada apenas para pacotes instalados em /system/app." + "Nenhum pacote foi encontrado que forneça a ação FACTORY_TEST." + "Reiniciar" + + + + + + + "Confirmar" + "Deseja que o navegador se lembre desta senha?" + "Não agora" + "Lembre-se" + "Nunca" + "Você não tem permissão para abrir essa página." + "Texto copiado para a área de transferência." + "Mais" + "Menu+" + "espaço" + "enter" + "excluir" + "Procurar" + "1 mês atrás" + "Antes de 1 mês atrás" + + "1 segundo atrás" + "%d segundos atrás" + + + "1 minute atrás" + "%d minutos atrás" + + + "1 hora trás" + "%d horas atrás" + + + "ontem" + "%d dias atrás" + + + "em 1 segundo" + "em %d segundos" + + + "em 1 minuto" + "em %d minutos" + + + "em 1 hora" + "em %d horas" + + + "amanhã" + "em %d dias" + + + + + + + + + + + + + + + + + + "em %s" + "a %s" + "em %s" + "dia" + "dias" + "hora" + "horas" + "minuto" + "minutos" + "segundos" + "segundos" + "semana" + "semanas" + "ano" + "anos" + "Todo dia de semana (Seg–Sex)" + "Diariamente" + "Semanalmente em %s" + "Mensalmente" + "Anualmente" + "Não é possível reproduzir o vídeo" + + + "Sentimos muito, este vídeo não pode ser reproduzido." + "OK" + + + "meio-dia" + "Meio-dia" + "meia-noite" + "Meia-noite" + "%1$02d:%2$02d" + "%1$d:%2$02d:%3$02d" + "Selecionar tudo" + "Selecionar texto" + "Interromper seleção de texto" + "Recortar" + "Recortar tudo" + "Copiar" + "Copiar tudo" + "Colar" + "Copiar URL" + "Método de entrada" + + + "Editar texto" + "Pouco espaço" + "O espaço de armazenamento do telefone está diminuindo." + "OK" + "Cancelar" + "OK" + "Cancelar" + + + "LIGAR" + "DESLIGADO" + "Completar ação usando" + "Use por padrão para esta ação." + "Limpar o padrão nas Configurações da página inicial> Aplicativos > Gerenciar aplicativos." + "Selecione uma ação" + "Nenhum aplicativo pode executar essa ação." + "Sentimos muito." + "O aplicativo %1$s(processo %2$s) parou inesperadamente. Tente novamente." + "O processo %1$s parou inesperadamente. Tente novamente." + "Sentimos muito." + "A atividade %1$s (no aplicativo %2$s) não está respondendo." + "A atividade %1$s (%2$s em processamento) não está respondendo." + "O aplicativo %1$s (%2$s em processamento) não está respondendo." + "O processo %1$s não está respondendo." + "Forçar fechamento" + + + "Aguarde" + "Depuração" + "Selecione uma ação para texto" + "Volume da campainha" + "Volume da mídia" + "Reprodução usando Bluetooth" + "Volume da chamada recebida" + + + "Volume do alarme" + "Volume da notificação" + "Volume" + "Ringtone padrão" + "Ringtone padrão (%1$s)" + "Silencioso" + "Ringtones" + "Ringtone desconhecido" + + "Rede Wi-Fi disponível" + "Redes Wi-Fi disponíveis" + + + "Redes Wi-Fi abertas disponíveis" + "Redes Wi-Fi abertas disponíveis" + + "Inserir caractere" + "Aplicativo desconhecido" + "Envio de mensagens SMS" + "Uma grande quantidade de mensagens SMS está sendo enviada. Selecione \"OK\" para continuar ou \"Cancelar\" para parar de enviar." + "OK" + "Cancelar" + "Definir" + "Padrão" + "Nenhuma permissão é necessária" + "Ocultar" + "Mostrar tudo" + "Carregando…" + "Conectado via USB" + "Você conectou o telefone ao seu computador via USB. Selecione \"Montar\" se quiser copiar os arquivos entre seu computador e o cartão SD do telefone." + "Montar" + "Não montar" + "Há um problema com o uso do seu cartão SD para armazenamento USB." + "Conectado via USB" + "Selecione para copiar os arquivos para/do computador." + + + + + + + + + + + + + + + + + + + + + "Selecionar método de entrada" + " ABCDEFGHIJKLMNOPQRSTUVWXYZ" + " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/res/res/values-ro-rRO/donottranslate-cldr.xml b/core/res/res/values-ro-rRO/donottranslate-cldr.xml new file mode 100644 index 000000000000..4622445ca6c2 --- /dev/null +++ b/core/res/res/values-ro-rRO/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + ianuarie + februarie + martie + aprilie + mai + iunie + iulie + august + septembrie + octombrie + noiembrie + decembrie + + ianuarie + februarie + martie + aprilie + mai + iunie + iulie + august + septembrie + octombrie + noiembrie + decembrie + + ian. + feb. + mar. + apr. + mai + iun. + iul. + aug. + sept. + oct. + nov. + dec. + + I + F + M + A + M + I + I + A + S + O + N + D + + duminică + luni + marți + miercuri + joi + vineri + sâmbătă + + Du + Lu + Ma + Mi + Jo + Vi + + + Du + Lu + Ma + Mi + Jo + Vi + + + D + L + M + M + J + V + S + + AM + PM + ieri + azi + mâine + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S, %d.%m.%Y + %2$s, %1$s + %1$s, %3$s + %d.%m.%Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s - %8$s.%7$s + %1$s, %3$s.%2$s - %6$s, %8$s.%7$s + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + %5$s, %1$s, %3$s/%2$s/%4$s - %10$s, %6$s, %8$s/%7$s/%9$s + %5$s, %3$s.%2$s - %10$s, %8$s.%7$s + %5$s, %1$s, %3$s %2$s - %10$s, %6$s, %8$s %7$s + %5$s, %3$s.%2$s.%4$s - %10$s, %8$s.%7$s.%9$s + %3$s, %1$s, %2$s - %6$s, %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s, %2$s - %6$s, %5$s + %1$s, %2$s, %3$s + %2$s, %3$s + %1$s, %2$s + %3$s %2$s - %8$s %7$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %5$s, %3$s %2$s - %10$s, %8$s %7$s + %5$s, %3$s %2$s - %10$s, %8$s %7$s + %5$s, %1$s, %3$s %2$s - %10$s, %6$s, %8$s %7$s + %5$s, %1$s, %3$s %2$s - %10$s, %6$s, %8$s %7$s + %5$s, %3$s %2$s %4$s - %10$s, %8$s %7$s %9$s + %5$s, %3$s %2$s %4$s - %10$s, %8$s %7$s %9$s + %5$s, %1$s, %3$s %2$s %4$s - %10$s, %6$s, %8$s %7$s %9$s + %5$s, %1$s, %3$s %2$s %4$s - %10$s, %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %1$s, %3$s %2$s - %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-ru-rRU/donottranslate-cldr.xml b/core/res/res/values-ru-rRU/donottranslate-cldr.xml new file mode 100644 index 000000000000..21c06ff3a0ab --- /dev/null +++ b/core/res/res/values-ru-rRU/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Январь + Февраль + Март + Апрель + Май + Июнь + Июль + Август + Сентябрь + Октябрь + Ноябрь + Декабрь + + января + февраля + марта + апреля + мая + июня + июля + августа + сентября + октября + ноября + декабря + + янв. + февр. + марта + апр. + мая + июня + июля + авг. + сент. + окт. + нояб. + дек. + + Я + Ф + М + А + М + И + И + А + С + О + Н + Д + + воскресенье + понедельник + вторник + среда + четверг + пятница + суббота + + Вс + Пн + Вт + Ср + Чт + Пт + Сб + + Вс + Пн + Вт + Ср + Чт + Пт + Сб + + В + П + В + С + Ч + П + С + + AM + PM + Вчера + Сегодня + Завтра + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e %B %Y г. + %-k:%M:%S + %-k:%M:%S %d.%m.%Y + %2$s %1$s + %1$s %3$s + %d.%m.%Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s - %8$s.%7$s + %1$s, %2$s-%3$s – %6$s, %7$s-%8$s + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %5$s %1$s, %4$s-%2$s-%3$s - %10$s %6$s, %9$s-%7$s-%8$s + %5$s %3$s.%2$s - %10$s %8$s.%7$s + %5$s %1$s, %2$s-%3$s - %10$s %6$s, %7$s-%8$s + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %2$s - %6$s %5$s + %2$s - %5$s + %3$s %2$s - %6$s %5$s + %1$s %3$s + %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %1$s %2$s %3$s - %6$s %7$s %8$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %1$s %2$s %3$s - %10$s %6$s %7$s %8$s + %5$s %1$s %2$s %3$s - %10$s %6$s %7$s %8$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %2$s %3$s - %6$s %7$s %8$s + %3$s %2$s - %8$s %7$s %9$s г. + %3$s-%8$s %2$s %9$s г. + %3$s %2$s - %8$s %7$s %9$s г. + %b + diff --git a/core/res/res/values-ru/donottranslate-cldr.xml b/core/res/res/values-ru/donottranslate-cldr.xml new file mode 100644 index 000000000000..21c06ff3a0ab --- /dev/null +++ b/core/res/res/values-ru/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Январь + Февраль + Март + Апрель + Май + Июнь + Июль + Август + Сентябрь + Октябрь + Ноябрь + Декабрь + + января + февраля + марта + апреля + мая + июня + июля + августа + сентября + октября + ноября + декабря + + янв. + февр. + марта + апр. + мая + июня + июля + авг. + сент. + окт. + нояб. + дек. + + Я + Ф + М + А + М + И + И + А + С + О + Н + Д + + воскресенье + понедельник + вторник + среда + четверг + пятница + суббота + + Вс + Пн + Вт + Ср + Чт + Пт + Сб + + Вс + Пн + Вт + Ср + Чт + Пт + Сб + + В + П + В + С + Ч + П + С + + AM + PM + Вчера + Сегодня + Завтра + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e %B %Y г. + %-k:%M:%S + %-k:%M:%S %d.%m.%Y + %2$s %1$s + %1$s %3$s + %d.%m.%Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s - %8$s.%7$s + %1$s, %2$s-%3$s – %6$s, %7$s-%8$s + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %5$s %1$s, %4$s-%2$s-%3$s - %10$s %6$s, %9$s-%7$s-%8$s + %5$s %3$s.%2$s - %10$s %8$s.%7$s + %5$s %1$s, %2$s-%3$s - %10$s %6$s, %7$s-%8$s + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %2$s - %6$s %5$s + %2$s - %5$s + %3$s %2$s - %6$s %5$s + %1$s %3$s + %3$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %1$s %2$s %3$s - %6$s %7$s %8$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %1$s %2$s %3$s - %10$s %6$s %7$s %8$s + %5$s %1$s %2$s %3$s - %10$s %6$s %7$s %8$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s - %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + %3$s-%8$s %2$s + %1$s %2$s %3$s - %6$s %7$s %8$s + %3$s %2$s - %8$s %7$s %9$s г. + %3$s-%8$s %2$s %9$s г. + %3$s %2$s - %8$s %7$s %9$s г. + %b + diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index fac6cb7ea753..048f6b1c20d0 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -161,14 +161,10 @@ "Позволяет приложению изменять текущую конфигурацию, например локаль и общий размер шрифта." "перезапускать другие приложения" "Разрешает приложению принудительно перезапускать другие приложения." - "предотвращать остановку" - "Разрешает приложению запускать любые процессы на переднем плане так, что их нельзя прекратить. Не требуется обычным приложениям." "принудительно закрывать приложения" "Позволяет приложению принудительно закрывать и переводить в фоновый режим действия, работающие на переднем плане. Не требуется обычным приложениям." "получать внутреннее состояние системы" "Разрешает приложениям получать внутреннее состояние системы. Вредоносное ПО может получать множество личной и защищенной информации, которая обычно не была бы им доступна." - "публиковать службы низкого уровня" - "Разрешает приложению публиковать собственные системные службы низкого уровня. Вредоносное ПО может взломать систему и украсть или повредить данные в ней." "наблюдать и управлять запуском всех приложений" "Разрешает приложению следить и управлять тем, как система запускает действия. Вредоносное ПО может полностью нарушить работу системы. Это разрешение нужно только для разработки, но не при обычном использовании телефона." "отправлять оповещения об удалении пакетов" @@ -181,8 +177,6 @@ "Позволяет приложению контролировать максимальное количество выполняемых процессов. Не требуется обычным приложениям." "закрывать все фоновые приложения" "Разрешает приложению следить, чтобы действия всегда завершались после перехода в фоновый режим. Не требуется обычным приложениям." - "автоматически устанавливать системные обновления" - "Разрешает приложению получать уведомления о предстоящих обновлениях системы и запускать их установку. Это дает вредоносному ПО возможность повредить систему неавторизованными обновлениями или помешать выполнению обновления." "изменять данные о батарее" "Разрешает изменять данные о батарее. Не используется обычными приложениями." "отображать неавторизованные окна" @@ -418,9 +412,6 @@ "Пароль" "Войти" "Недействительное имя пользователя или пароль." - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "Очистить уведомления" @@ -452,9 +443,6 @@ "ввод" "удалить" "Поиск" - "Сегодня" - "Вчера" - "Завтра" "1 месяц назад" "Больше 1 месяца назад" @@ -536,13 +524,6 @@ "недели" "год" "годы" - "воскресенье" - "понедельник" - "вторник" - "среда" - "четверг" - "пятница" - "суббота" "По рабочим дням (пн-пт)" "Ежедневно" "Еженедельно в: %s" @@ -552,137 +533,15 @@ "К сожалению, это видео не подходит для потокового воспроизведения на данном устройстве." "К сожалению, это видео нельзя воспроизвести." "ОК" - "AM" - "PM" - "%d/%m/%Y" - "%1$s, %2$s, %3$s%4$s, %5$s, %6$s" - "%1$s, %2$s%4$s, %5$s" - "%2$s, %3$s%5$s, %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%1$s, %2$s, %3$s" - "%2$s, %3$s" - "%1$s, %3$s" - "%1$s, %2$s" "%1$s, %2$s" - "%1$s, %2$s" - "d' 'MMMM' 'yyyy" - "d' 'MMMM' 'yyyy" - "d' 'MMM' 'yyyy" - "d' 'MMM' 'yyyy" - "h':'mm' 'a" - "HH':'mm" "полдень" "Полдень" "полночь" "Полночь" - "%-d %B" - "%-d %B %Y" - "%Y %B г." - "%H:%M:%S" - "%H:%M:%S %-d %B %Y" - "%3$s %2$s%8$s %7$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s" - "%3$s %2$s%8$s %7$s %9$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s %9$s" - "%3$s %2$s, %5$s%8$s %7$s, %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" - "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s, %3$s %2$s %4$s, %5$s%6$s, %8$s %7$s %9$s, %10$s" - "%3$s/%2$s%8$s/%7$s" - "%1$s, %3$s/%2$s%6$s, %8$s/%7$s" - "%3$s/%2$s/%4$s%8$s/%7$s/%9$s" - "%1$s, %3$s/%2$s/%4$s%6$s, %8$s/%7$s/%9$s" - "%3$s/%2$s, %5$s%8$s/%7$s, %10$s" - "%1$s, %3$s/%2$s, %5$s%6$s, %8$s/%7$s, %10$s" - "%3$s/%2$s/%4$s, %5$s%8$s/%7$s/%9$s, %10$s" - "%1$s, %3$s/%2$s/%4$s, %5$s%6$s, %8$s/%7$s/%9$s, %10$s" - "%3$s%8$s %2$s" - "%1$s, %3$s %2$s%6$s, %8$s %7$s" - "%3$s%8$s %2$s %9$s" - "%1$s, %3$s %2$s %4$s%6$s, %8$s %7$s %9$s" - "%3$s %2$s, %5$s%8$s %7$s, %10$s" - "%1$s, %3$s %2$s, %5$s%6$s, %8$s %7$s, %10$s" - "%3$s %2$s %4$s, %5$s%8$s %7$s %9$s, %10$s" - "%1$s, %3$s %2$s %4$s, %5$s%6$s, %8$s %7$s %9$s, %10$s" - "%-d %b %Y" - "%b %Y г." - "%-d %b" - "воскресенье" - "понедельник" - "вторник" - "среда" - "четверг" - "пятница" - "суббота" - "вс" - "пн" - "вт" - "ср" - "чт" - "пт" - "сб" - "вс" - "пн" - "вт" - "ср" - "чт" - "пт" - "сб" - "вс" - "пн" - "вт" - "с" - "чт" - "пт" - "сб" - "в" - "п" - "в" - "с" - "ч" - "п" - "с" - "январь" - "февраль" - "март" - "апрель" - "май" - "июнь" - "июль" - "август" - "сентябрь" - "октябрь" - "ноябрь" - "декабрь" - "янв" - "фев" - "мар" - "апр" - "май" - "июн" - "июл" - "авг" - "сен" - "окт" - "ноя" - "дек" - "Я" - "ф" - "м" - "а" - "м" - "и" - "и" - "а" - "с" - "о" - "н" - "д" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Выбрать все" diff --git a/core/res/res/values-sk-rSK/donottranslate-cldr.xml b/core/res/res/values-sk-rSK/donottranslate-cldr.xml new file mode 100644 index 000000000000..16239df8c04e --- /dev/null +++ b/core/res/res/values-sk-rSK/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + január + február + marec + apríl + máj + jún + júl + august + september + október + november + december + + januára + februára + marca + apríla + mája + júna + júla + augusta + septembra + októbra + novembra + decembra + + jan + feb + mar + apr + máj + jún + júl + aug + sep + okt + nov + dec + + j + f + m + a + m + j + j + a + s + o + n + d + + nedeľa + pondelok + utorok + streda + štvrtok + piatok + sobota + + ne + po + ut + st + št + pi + so + + ne + po + ut + st + št + pi + so + + N + P + U + S + Š + P + S + + dopoludnia + popoludní + Včera + Dnes + Zajtra + + %H:%M + %-l:%M %p + %-l:%M %p + h:mm a + HH:mm + %-e.%-m.%Y + d.M.yyyy + "%s.%s.%s" + %-e. %B %Y + %-k:%M:%S + %-k:%M:%S %-e.%-m.%Y + %2$s %1$s + %1$s %3$s + %-e.%-m.%Y + %-e. %B + %-B + %B %Y + %-e. %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s. - %8$s.%7$s. + %1$s, %3$s.%2$s. - %6$s, %8$s.%7$s. + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s - %6$s, %8$s.%7$s.%9$s + %5$s %1$s, %3$s.%2$s.%4$s - %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s. - %10$s %8$s.%7$s. + %5$s %1$s, %3$s.%2$s. - %10$s %6$s, %8$s.%7$s. + %5$s %3$s.%2$s.%4$s - %10$s %8$s.%7$s.%9$s + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s. %2$s - %8$s. %7$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %3$s. %2$s - %10$s %8$s. %7$s + %5$s %1$s, %3$s. %2$s - %10$s %6$s, %8$s. %7$s + %5$s %1$s, %3$s. %2$s - %10$s %6$s, %8$s. %7$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %3$s. %2$s %4$s - %10$s %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %5$s %1$s, %3$s. %2$s %4$s - %10$s %6$s, %8$s. %7$s %9$s + %1$s, %3$s. %2$s %4$s - %6$s, %8$s. %7$s %9$s + %3$s. - %8$s. %2$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s + %3$s. %2$s - %8$s. %7$s %9$s + %3$s. - %8$s. %2$s %9$s + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s %9$s + %b + diff --git a/core/res/res/values-sl-rSI/donottranslate-cldr.xml b/core/res/res/values-sl-rSI/donottranslate-cldr.xml new file mode 100644 index 000000000000..b4ea32f37abd --- /dev/null +++ b/core/res/res/values-sl-rSI/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + januar + februar + marec + april + maj + junij + julij + avgust + september + oktober + november + december + + januar + februar + marec + april + maj + junij + julij + avgust + september + oktober + november + december + + jan + feb + mar + apr + maj + jun + jul + avg + sep + okt + nov + dec + + j + f + m + a + m + j + j + a + s + o + n + d + + nedelja + ponedeljek + torek + sreda + četrtek + petek + sobota + + ned + pon + tor + sre + čet + pet + sob + + ned + pon + tor + sre + čet + pet + sob + + n + p + t + s + č + p + s + + dop. + pop. + Včeraj + Danes + Jutri + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %-e. %m. %Y + d. MM. yyyy + "%s. %s. %s" + %d. %B %Y + %H:%M:%S + %H:%M:%S %-e. %b. %Y + %2$s %1$s + %1$s %3$s + %-e. %b. %Y + %-e. %B + %-B + %B %Y + %-e. %b. + %b + %b. %Y + %1$s – %2$s + %2$s – %5$s + %3$s. %2$s. – %8$s. %7$s. + %1$s., %3$s. %2$s. – %6$s., %8$s. %7$s. + %3$s. %2$s. %4$s – %8$s. %7$s. %9$s + %1$s., %3$s. %2$s. %4$s – %6$s., %8$s. %7$s. %9$s + %5$s %1$s., %3$s. %2$s. %4$s – %10$s %6$s., %8$s. %7$s. %9$s + %5$s %3$s. %2$s. – %10$s %8$s. %7$s. + %5$s %1$s., %3$s. %2$s. – %10$s %6$s., %8$s. %7$s. + %5$s %3$s. %2$s. %4$s – %10$s %8$s. %7$s. %9$s + %3$s %1$s., %2$s – %6$s %4$s., %5$s + %1$s., %2$s – %4$s., %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s., %3$s + %2$s., %3$s + %1$s %2$s + %3$s. %2$s – %8$s. %7$s + %1$s., %3$s. %2$s. – %6$s., %8$s. %7$s. + %5$s %3$s. %2$s – %10$s %8$s. %7$s + %5$s %3$s. %2$s – %10$s %8$s. %7$s + %5$s %1$s., %3$s. %2$s. – %10$s %6$s., %8$s. %7$s. + %5$s %1$s., %3$s. %2$s. – %10$s %6$s., %8$s. %7$s. + %5$s %3$s. %2$s. %4$s – %10$s %8$s. %7$s. %9$s + %5$s %3$s. %2$s. %4$s – %10$s %8$s. %7$s. %9$s + %5$s %1$s., %3$s. %2$s. %4$s – %10$s %6$s., %8$s. %7$s. %9$s + %5$s %1$s., %3$s. %2$s. %4$s – %10$s %6$s., %8$s. %7$s. %9$s + %1$s., %3$s. %2$s. %4$s – %6$s., %8$s. %7$s. %9$s + %3$s.–%8$s. %2$s. + %1$s., %3$s. %2$s. – %6$s., %8$s. %7$s. + %3$s. %2$s. – %8$s. %7$s. %9$s + %3$s.–%8$s. %2$s. %9$s + %1$s., %3$s. %2$s. – %6$s., %8$s. %7$s. %9$s + %b + diff --git a/core/res/res/values-sr-rRS/donottranslate-cldr.xml b/core/res/res/values-sr-rRS/donottranslate-cldr.xml new file mode 100644 index 000000000000..55ca96829f4e --- /dev/null +++ b/core/res/res/values-sr-rRS/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + јануар + фебруар + март + април + мај + јун + јул + август + септембар + октобар + новембар + децембар + + јануар + фебруар + март + април + мај + јун + јул + август + септембар + октобар + новембар + децембар + + јан + феб + мар + апр + мај + јун + јул + авг + сеп + окт + нов + дец + + ј + ф + м + а + м + ј + ј + а + с + о + н + д + + недеља + понедељак + уторак + среда + четвртак + петак + субота + + нед + пон + уто + сре + чет + пет + суб + + нед + пон + уто + сре + чет + пет + суб + + н + п + у + с + ч + п + с + + пре подне + поподне + јуче + данас + сутра + + %H.%M + %-l:%M %p + %-l:%M %p + h:mm a + HH.mm + %-e.%-m.%Y. + d.M.yyyy. + "%s.%s.%s." + %d. %B %Y. + %H.%M.%S + %H.%M.%S %d.%m.%Y. + %2$s %1$s + %1$s %3$s + %d.%m.%Y. + %B %-e. + %-B + %Y %B + %b %-e. + %-b + %b. %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s - %8$s.%7$s + %1$s, %3$s.%2$s - %6$s, %8$s.%7$s + %3$s.%2$s.%4$s. - %8$s.%7$s.%9$s. + %1$s, %3$s.%2$s.%4$s. - %6$s, %8$s.%7$s.%9$s. + %5$s %1$s, %3$s. %2$s. %4$s. - %10$s %6$s, %8$s. %7$s. %9$s. + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %1$s, %2$s-%3$s - %10$s %6$s, %7$s-%8$s + %5$s %3$s.%2$s.%4$s. - %10$s %8$s.%7$s.%9$s. + %3$s %1$s, %2$s - %6$s %4$s, %5$s + %1$s, %2$s - %4$s, %5$s + %3$s %2$s - %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %2$s %3$s. - %7$s %8$s. + %1$s %3$s. %2$s - %6$s %8$s. %7$s + %5$s %2$s %3$s. - %10$s %7$s %8$s. + %5$s %2$s %3$s. - %10$s %7$s %8$s. + %5$s %1$s %3$s. %2$s - %10$s %6$s %8$s. %7$s + %5$s %1$s %3$s. %2$s - %10$s %6$s %8$s. %7$s + %5$s %3$s. %2$s %4$s. - %10$s %8$s. %7$s %9$s. + %5$s %3$s. %2$s %4$s. - %10$s %8$s. %7$s %9$s. + %5$s %1$s, %3$s. %2$s %4$s. - %10$s %6$s, %8$s. %7$s %9$s. + %5$s %1$s, %3$s. %2$s %4$s. - %10$s %6$s, %8$s. %7$s %9$s. + %1$s, %3$s. %2$s %4$s. - %6$s, %8$s. %7$s %9$s. + %3$s.-%8$s. %2$s + %1$s %3$s. %2$s - %6$s %8$s. %7$s + %3$s. %2$s - %8$s. %7$s %9$s. + %3$s.-%8$s. %2$s %9$s. + %1$s, %3$s. %2$s - %6$s, %8$s. %7$s %9$s. + %b + diff --git a/core/res/res/values-sv-rSE/donottranslate-cldr.xml b/core/res/res/values-sv-rSE/donottranslate-cldr.xml new file mode 100644 index 000000000000..a6ffc9aa77af --- /dev/null +++ b/core/res/res/values-sv-rSE/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + januari + februari + mars + april + maj + juni + juli + augusti + september + oktober + november + december + + januari + februari + mars + april + maj + juni + juli + augusti + september + oktober + november + december + + jan + feb + mar + apr + maj + jun + jul + aug + sep + okt + nov + dec + + J + F + M + A + M + J + J + A + S + O + N + D + + söndag + måndag + tisdag + onsdag + torsdag + fredag + lördag + + sön + mån + tis + ons + tors + fre + lör + + sön + mån + tis + ons + tors + fre + lör + + S + M + T + O + T + F + L + + f.m. + e.m. + igår + idag + imorgon + + %-k.%M + %-l:%M %p + %-l:%M %^p + h:mm a + H.mm + %Y-%m-%d + yyyy-MM-dd + "%s-%s-%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %-e %b %Y + %2$s %1$s + %1$s %3$s + %-e %b %Y + %-e %B + %-B + %Y %B + %-e %b + %-b + %Y %b + %1$s – %2$s + %2$s – %5$s + %3$s/%2$s – %8$s/%7$s + %1$s %3$s/%2$s – %6$s %8$s/%7$s + %4$s-%2$s-%3$s – %9$s-%7$s-%8$s + %1$s, %4$s-%2$s-%3$s – %6$s, %9$s-%7$s-%8$s + %5$s %1$s, %4$s-%2$s-%3$s – %10$s %6$s, %9$s-%7$s-%8$s + %5$s %3$s/%2$s – %10$s %8$s/%7$s + %5$s %1$s %3$s/%2$s – %10$s %6$s %8$s/%7$s + %5$s %4$s-%2$s-%3$s – %10$s %9$s-%7$s-%8$s + %3$s %1$s %2$s – %6$s %4$s %5$s + %1$s %2$s – %4$s %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s – %8$s %7$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s – %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s – %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s – %6$s %8$s %7$s %9$s + %3$s–%8$s %2$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %3$s %2$s–%8$s %7$s %9$s + %3$s–%8$s %2$s %9$s + %1$s %3$s %2$s–%6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-sv/donottranslate-cldr.xml b/core/res/res/values-sv/donottranslate-cldr.xml new file mode 100644 index 000000000000..a6ffc9aa77af --- /dev/null +++ b/core/res/res/values-sv/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + januari + februari + mars + april + maj + juni + juli + augusti + september + oktober + november + december + + januari + februari + mars + april + maj + juni + juli + augusti + september + oktober + november + december + + jan + feb + mar + apr + maj + jun + jul + aug + sep + okt + nov + dec + + J + F + M + A + M + J + J + A + S + O + N + D + + söndag + måndag + tisdag + onsdag + torsdag + fredag + lördag + + sön + mån + tis + ons + tors + fre + lör + + sön + mån + tis + ons + tors + fre + lör + + S + M + T + O + T + F + L + + f.m. + e.m. + igår + idag + imorgon + + %-k.%M + %-l:%M %p + %-l:%M %^p + h:mm a + H.mm + %Y-%m-%d + yyyy-MM-dd + "%s-%s-%s" + %-e %B %Y + %H:%M:%S + %H:%M:%S %-e %b %Y + %2$s %1$s + %1$s %3$s + %-e %b %Y + %-e %B + %-B + %Y %B + %-e %b + %-b + %Y %b + %1$s – %2$s + %2$s – %5$s + %3$s/%2$s – %8$s/%7$s + %1$s %3$s/%2$s – %6$s %8$s/%7$s + %4$s-%2$s-%3$s – %9$s-%7$s-%8$s + %1$s, %4$s-%2$s-%3$s – %6$s, %9$s-%7$s-%8$s + %5$s %1$s, %4$s-%2$s-%3$s – %10$s %6$s, %9$s-%7$s-%8$s + %5$s %3$s/%2$s – %10$s %8$s/%7$s + %5$s %1$s %3$s/%2$s – %10$s %6$s %8$s/%7$s + %5$s %4$s-%2$s-%3$s – %10$s %9$s-%7$s-%8$s + %3$s %1$s %2$s – %6$s %4$s %5$s + %1$s %2$s – %4$s %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s %3$s + %2$s %3$s + %1$s %2$s + %3$s %2$s – %8$s %7$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %1$s %3$s %2$s – %10$s %6$s %8$s %7$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s – %10$s %6$s %8$s %7$s %9$s + %5$s %1$s %3$s %2$s %4$s – %10$s %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s – %6$s %8$s %7$s %9$s + %3$s–%8$s %2$s + %1$s %3$s %2$s – %6$s %8$s %7$s + %3$s %2$s–%8$s %7$s %9$s + %3$s–%8$s %2$s %9$s + %1$s %3$s %2$s–%6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-th-rTH/donottranslate-cldr.xml b/core/res/res/values-th-rTH/donottranslate-cldr.xml new file mode 100644 index 000000000000..b3c76a33abf5 --- /dev/null +++ b/core/res/res/values-th-rTH/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + มกราคม + กุมภาพันธ์ + มีนาคม + เมษายน + พฤษภาคม + มิถุนายน + กรกฎาคม + สิงหาคม + กันยายน + ตุลาคม + พฤศจิกายน + ธันวาคม + + มกราคม + กุมภาพันธ์ + มีนาคม + เมษายน + พฤษภาคม + มิถุนายน + กรกฎาคม + สิงหาคม + กันยายน + ตุลาคม + พฤศจิกายน + ธันวาคม + + ม.ค. + ก.พ. + มี.ค. + เม.ย. + พ.ค. + มิ.ย. + ก.ค. + ส.ค. + ก.ย. + ต.ค. + พ.ย. + ธ.ค. + + ม.ค. + ก.พ. + มี.ค. + เม.ย. + พ.ค. + มิ.ย. + ก.ค. + ส.ค. + ก.ย. + ต.ค. + พ.ย. + ธ.ค. + + วันอาทิตย์ + วันจันทร์ + วันอังคาร + วันพุธ + วันพฤหัสบดี + วันศุกร์ + วันเสาร์ + + อา. + จ. + อ. + พ. + พฤ. + ศ. + ส. + + อา. + จ. + อ. + พ. + พฤ. + ศ. + ส. + + + + + + + + + + ก่อนเที่ยง + หลังเที่ยง + เมื่อวาน + วันนี้ + พรุ่งนี้ + + %-k:%M + %-l:%M %p + %-l:%M %p + h:mm a + H:mm + %-e/%-m/%Y + d/M/yyyy + "%s/%s/%s" + %-e %B %Y + %-k:%M:%S + %-k:%M:%S, %-e %b %Y + %2$s, %1$s + %1$s, %3$s + %-e %b %Y + %-e %B + %-B + %B %Y + %-e %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s %3$s/%2$s – %6$s %8$s/%7$s + %3$s/%2$s/%4$s – %8$s/%7$s/%9$s + %1$s %3$s/%2$s/%4$s – %6$s %8$s/%7$s/%9$s + %5$s, %1$s %3$s/%2$s/%4$s - %10$s, %6$s %8$s/%7$s/%9$s + %5$s, %3$s/%2$s - %10$s, %8$s/%7$s + %5$s, %1$s, %3$s/%2$s - %10$s, %6$s, %8$s/%7$s + %5$s, %3$s/%2$s/%4$s - %10$s, %8$s/%7$s/%9$s + %3$s, %1$s %2$s - %6$s, %4$s %5$s + %1$s %2$s - %4$s %5$s + %3$s, %2$s - %6$s, %5$s + %1$s, %2$s %3$s + %2$s %3$s + %1$s, %2$s + %3$s %2$s - %8$s %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %5$s, %3$s %2$s - %10$s, %8$s %7$s + %5$s, %3$s %2$s - %10$s, %8$s %7$s + %5$s, %1$s %3$s %2$s - %10$s, %6$s %8$s %7$s + %5$s, %1$s %3$s %2$s - %10$s, %6$s %8$s %7$s + %5$s, %3$s %2$s %4$s - %10$s, %8$s %7$s %9$s + %5$s, %3$s %2$s %4$s - %10$s, %8$s %7$s %9$s + %5$s, %1$s %3$s %2$s %4$s - %10$s, %6$s %8$s %7$s %9$s + %5$s, %1$s %3$s %2$s %4$s - %10$s, %6$s %8$s %7$s %9$s + %1$s %3$s %2$s %4$s - %6$s %8$s %7$s %9$s + %3$s – %8$s %2$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s – %8$s %7$s %9$s + %3$s–%8$s %2$s %9$s + %1$s %3$s %2$s – %6$s %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-tr-rTR/donottranslate-cldr.xml b/core/res/res/values-tr-rTR/donottranslate-cldr.xml new file mode 100644 index 000000000000..d61230593437 --- /dev/null +++ b/core/res/res/values-tr-rTR/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Ocak + Şubat + Mart + Nisan + Mayıs + Haziran + Temmuz + Ağustos + Eylül + Ekim + Kasım + Aralık + + Ocak + Şubat + Mart + Nisan + Mayıs + Haziran + Temmuz + Ağustos + Eylül + Ekim + Kasım + Aralık + + Oca + Şub + Mar + Nis + May + Haz + Tem + Ağu + Eyl + Eki + Kas + Ara + + O + Ş + M + N + M + H + T + A + E + E + K + A + + Pazar + Pazartesi + Salı + Çarşamba + Perşembe + Cuma + Cumartesi + + Paz + Pzt + Sal + Çar + Per + Cum + Cmt + + Paz + Pzt + Sal + Çar + Per + Cum + Cmt + + P + P + S + Ç + P + C + C + + AM + PM + Dün + Bugün + Yarın + + %H:%M + %-l:%M %p + %-l:%M %^p + h:mm a + HH:mm + %d %m %Y + dd MM yyyy + "%s %s %s" + %d %B %Y + %H:%M:%S + %H:%M:%S %d %b %Y + %2$s %1$s + %1$s %3$s + %d %b %Y + %d %B + %-B + %B %Y + %d %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s - %8$s.%7$s + %3$s.%2$s %1$s - %8$s.%7$s %6$s + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %3$s.%2$s.%4$s %1$s - %8$s.%7$s.%9$s %6$s + %5$s %3$s.%2$s.%4$s %1$s - %10$s %8$s.%7$s.%9$s %6$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %3$s/%2$s %1$s - %10$s %8$s/%7$s %6$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %3$s %2$s %1$s - %6$s %5$s %4$s + %2$s %1$s - %5$s %4$s + %3$s %2$s - %6$s %5$s + %1$s %3$s %2$s + %3$s %2$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %3$s %2$s %1$s - %8$s %7$s %6$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s %1$s - %10$s %8$s %7$s %6$s + %5$s %3$s %2$s %1$s - %10$s %8$s %7$s %6$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s %1$s - %10$s %8$s %7$s %9$s %6$s + %5$s %3$s %2$s %4$s %1$s - %10$s %8$s %7$s %9$s %6$s + %3$s %2$s %4$s %1$s - %8$s %7$s %9$s %6$s + %3$s-%8$s %2$s + %3$s %2$s %1$s - %8$s %7$s %6$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %3$s %2$s %9$s %1$s - %8$s %7$s y %6$s + %b + diff --git a/core/res/res/values-tr/donottranslate-cldr.xml b/core/res/res/values-tr/donottranslate-cldr.xml new file mode 100644 index 000000000000..d61230593437 --- /dev/null +++ b/core/res/res/values-tr/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Ocak + Şubat + Mart + Nisan + Mayıs + Haziran + Temmuz + Ağustos + Eylül + Ekim + Kasım + Aralık + + Ocak + Şubat + Mart + Nisan + Mayıs + Haziran + Temmuz + Ağustos + Eylül + Ekim + Kasım + Aralık + + Oca + Şub + Mar + Nis + May + Haz + Tem + Ağu + Eyl + Eki + Kas + Ara + + O + Ş + M + N + M + H + T + A + E + E + K + A + + Pazar + Pazartesi + Salı + Çarşamba + Perşembe + Cuma + Cumartesi + + Paz + Pzt + Sal + Çar + Per + Cum + Cmt + + Paz + Pzt + Sal + Çar + Per + Cum + Cmt + + P + P + S + Ç + P + C + C + + AM + PM + Dün + Bugün + Yarın + + %H:%M + %-l:%M %p + %-l:%M %^p + h:mm a + HH:mm + %d %m %Y + dd MM yyyy + "%s %s %s" + %d %B %Y + %H:%M:%S + %H:%M:%S %d %b %Y + %2$s %1$s + %1$s %3$s + %d %b %Y + %d %B + %-B + %B %Y + %d %b + %-b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s.%2$s - %8$s.%7$s + %3$s.%2$s %1$s - %8$s.%7$s %6$s + %3$s.%2$s.%4$s - %8$s.%7$s.%9$s + %3$s.%2$s.%4$s %1$s - %8$s.%7$s.%9$s %6$s + %5$s %3$s.%2$s.%4$s %1$s - %10$s %8$s.%7$s.%9$s %6$s + %5$s %3$s/%2$s - %10$s %8$s/%7$s + %5$s %3$s/%2$s %1$s - %10$s %8$s/%7$s %6$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %3$s %2$s %1$s - %6$s %5$s %4$s + %2$s %1$s - %5$s %4$s + %3$s %2$s - %6$s %5$s + %1$s %3$s %2$s + %3$s %2$s + %1$s %2$s + %3$s %2$s - %8$s %7$s + %3$s %2$s %1$s - %8$s %7$s %6$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s - %10$s %8$s %7$s + %5$s %3$s %2$s %1$s - %10$s %8$s %7$s %6$s + %5$s %3$s %2$s %1$s - %10$s %8$s %7$s %6$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s - %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s %1$s - %10$s %8$s %7$s %9$s %6$s + %5$s %3$s %2$s %4$s %1$s - %10$s %8$s %7$s %9$s %6$s + %3$s %2$s %4$s %1$s - %8$s %7$s %9$s %6$s + %3$s-%8$s %2$s + %3$s %2$s %1$s - %8$s %7$s %6$s + %3$s %2$s - %8$s %7$s %9$s + %3$s-%8$s %2$s %9$s + %3$s %2$s %9$s %1$s - %8$s %7$s y %6$s + %b + diff --git a/core/res/res/values-uk-rUA/donottranslate-cldr.xml b/core/res/res/values-uk-rUA/donottranslate-cldr.xml new file mode 100644 index 000000000000..c51f8d1eae06 --- /dev/null +++ b/core/res/res/values-uk-rUA/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + Січень + Лютий + Березень + Квітень + Травень + Червень + Липень + Серпень + Вересень + Жовтень + Листопад + Грудень + + січня + лютого + березня + квітня + травня + червня + липня + серпня + вересня + жовтня + листопада + грудня + + січ. + лют. + бер. + квіт. + трав. + черв. + лип. + серп. + вер. + жовт. + лист. + груд. + + С + Л + Б + К + Т + Ч + Л + С + В + Ж + Л + Г + + Неділя + Понеділок + Вівторок + Середа + Четвер + Пʼятниця + Субота + + Нд + Пн + Вт + Ср + Чт + Пт + Сб + + Нд + Пн + Вт + Ср + Чт + Пт + Сб + + Н + П + В + С + Ч + П + С + + дп + пп + Вчора + Сьогодні + Завтра + + %-k:%M + %-l:%M %p + %-l:%M %p + h:mm a + H:mm + %d.%m.%Y + dd.MM.yyyy + "%s.%s.%s" + %-e %B %Y р. + %H:%M:%S + %H:%M:%S %-e %b %Y + %2$s %1$s + %1$s %3$s + %-e %b %Y + %-e %B + %-B + %-B %Y + %-e %b + %-b + %-b %Y + %1$s – %2$s + %2$s – %5$s + %3$s.%2$s – %8$s.%7$s + %1$s, %3$s.%2$s – %6$s, %8$s.%7$s + %3$s.%2$s.%4$s – %8$s.%7$s.%9$s + %1$s, %3$s.%2$s.%4$s – %6$s, %8$s.%7$s.%9$s + %5$s %1$s, %3$s.%2$s.%4$s – %10$s %6$s, %8$s.%7$s.%9$s + %5$s %3$s.%2$s – %10$s %8$s.%7$s + %5$s %1$s, %3$s.%2$s – %10$s %6$s, %8$s.%7$s + %5$s %3$s.%2$s.%4$s – %10$s %8$s.%7$s.%9$s + %3$s %1$s, %2$s – %6$s %4$s, %5$s + %1$s, %2$s – %4$s, %5$s + %3$s %2$s – %6$s %5$s + %1$s %2$s, %3$s + %2$s, %3$s + %1$s %2$s + %3$s %2$s – %8$s %7$s + %1$s, %3$s %2$s – %6$s, %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %3$s %2$s – %10$s %8$s %7$s + %5$s %1$s, %3$s %2$s – %10$s %6$s, %8$s %7$s + %5$s %1$s, %3$s %2$s – %10$s %6$s, %8$s %7$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %3$s %2$s %4$s – %10$s %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s – %10$s %6$s, %8$s %7$s %9$s + %5$s %1$s, %3$s %2$s %4$s – %10$s %6$s, %8$s %7$s %9$s + %1$s, %3$s %2$s %4$s – %6$s, %8$s %7$s %9$s + %3$s–%8$s %2$s + %1$s, %3$s %2$s – %6$s, %8$s %7$s + %3$s %2$s – %8$s %7$s %9$s + %3$s–%8$s %2$s %9$s + %1$s, %3$s %2$s – %6$s, %8$s %7$s %9$s + %b + diff --git a/core/res/res/values-vi-rVN/donottranslate-cldr.xml b/core/res/res/values-vi-rVN/donottranslate-cldr.xml new file mode 100644 index 000000000000..72ff8b68999c --- /dev/null +++ b/core/res/res/values-vi-rVN/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + tháng một + tháng hai + tháng ba + tháng tư + tháng năm + tháng sáu + tháng bảy + tháng tám + tháng chín + tháng mười + tháng mười một + tháng mười hai + + tháng một + tháng hai + tháng ba + tháng tư + tháng năm + tháng sáu + tháng bảy + tháng tám + tháng chín + tháng mười + tháng mười một + tháng mười hai + + thg 1 + thg 2 + thg 3 + thg 4 + thg 5 + thg 6 + thg 7 + thg 8 + thg 9 + thg 10 + thg 11 + thg 12 + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + Chủ nhật + Thứ hai + Thứ ba + Thứ tư + Thứ năm + Thứ sáu + Thứ bảy + + CN + Th 2 + Th 3 + Th 4 + Th 5 + Th 6 + Th 7 + + CN + Th 2 + Th 3 + Th 4 + Th 5 + Th 6 + Th 7 + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + SA + CH + Yesterday + Today + Tomorrow + + %-k:%M + %-l:%M %p + %-l:%M %^p + h:mm a + H:mm + %d/%m/%Y + dd/MM/yyyy + "%s/%s/%s" + Ngày %d tháng %-m năm %Y + %H:%M:%S + %d-%m-%Y %H:%M:%S + %1$s %2$s + %3$s %1$s + %d-%m-%Y + %-e %B + %-B + %B %Y + %-e %b + %b + %b %Y + %1$s - %2$s + %2$s - %5$s + %3$s/%2$s - %8$s/%7$s + %1$s, %3$s/%2$s - %6$s, %8$s/%7$s + %3$s/%2$s/%4$s - %8$s/%7$s/%9$s + %1$s, %3$s/%2$s/%4$s - %6$s, %8$s/%7$s/%9$s + %1$s, %3$s-%2$s-%4$s %5$s - %6$s, %8$s-%7$s-%9$s %10$s + %3$s-%2$s %5$s - %8$s-%7$s %10$s + %1$s, %3$s-%2$s %5$s - %6$s, %8$s-%7$s %10$s + %3$s/%2$s/%4$s %5$s - %8$s/%7$s/%9$s %10$s + %1$s %2$s %3$s - %4$s %5$s %6$s + %1$s %2$s - %4$s %5$s + %2$s %3$s - %5$s %6$s + %2$s %3$s %1$s + %2$s %3$s + %2$s %1$s + %3$s %2$s - %8$s %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + %3$s %2$s %5$s - %8$s %7$s %10$s + %3$s %2$s %5$s - %8$s %7$s %10$s + %1$s %3$s %2$s %5$s - %6$s %8$s %7$s %10$s + %1$s %3$s %2$s %5$s - %6$s %8$s %7$s %10$s + Ngày %3$s tháng %2$s năm %4$s %5$s - 'Ngày %8$s tháng %7$s năm %9$s %10$s + Ngày %3$s tháng %2$s năm %4$s %5$s - 'Ngày %8$s tháng %7$s năm %9$s %10$s + %1$s, %3$s %2$s %4$s %5$s - %6$s, %8$s %7$s %9$s %10$s + %1$s, %3$s %2$s %4$s %5$s - %6$s, %8$s %7$s %9$s %10$s + %1$s, %3$s %2$s %4$s - %6$s, %8$s %7$s %9$s + Ngày %3$s tháng %2$s - Ngày %8$s tháng %7$s + %1$s %3$s %2$s - %6$s %8$s %7$s + Ngày %3$s tháng %2$s - Ngày %8$s tháng %7$s năm %9$s + Ngày %3$s tháng %2$s - Ngày %8$s tháng M năm %9$s + %1$s, ngày %3$s %2$s - %6$s, ngày %8$s %7$s năm %9$s + %b + diff --git a/core/res/res/values-zh-rCN/donottranslate-cldr.xml b/core/res/res/values-zh-rCN/donottranslate-cldr.xml new file mode 100644 index 000000000000..6d52d7046f99 --- /dev/null +++ b/core/res/res/values-zh-rCN/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 星期日 + 星期一 + 星期二 + 星期三 + 星期四 + 星期五 + 星期六 + + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + + + + + + + + + + 上午 + 下午 + 昨天 + 今天 + 明天 + + %-k:%M + %p%-l:%M + %p%-l:%M + ah:mm + H:mm + %Y-%-m-%-e + yyyy-M-d + "%s-%s-%s" + %Y年%-m月%-e日 + %p%I:%M:%S + %p%I:%M:%S %Y-%-m-%-e + %2$s %1$s + %1$s %3$s + %Y-%-m-%-e + %B%-e日 + %-B + %Y年%B + %b%-e日 + %-b + %Y年%b + %1$s–%2$s + %2$s–%5$s + %2$s-%3$s至%7$s-%8$s + %2$s-%3$s%1$s至%7$s-%8$s%6$s + %4$s-%2$s-%3$s至%9$s-%7$s-%8$s + %4$s-%2$s-%3$s%1$s至%9$s-%7$s-%8$s%6$s + %5$s %4$s年%2$s月%3$s日,%1$s–%10$s %9$s年%7$s月%8$s日,%6$s + %5$s %2$s-%3$s–%10$s %7$s-%8$s + %5$s %2$s-%3$s%1$s–%10$s %7$s-%8$s%6$s + %5$s %4$s-%2$s-%3$s–%10$s %9$s-%7$s-%8$s + %3$s %2$s%1$s–%6$s %5$s%4$s + %2$s%1$s–%5$s%4$s + %3$s %2$s–%6$s %5$s + %1$s %3$s%2$s + %3$s%2$s + %1$s %2$s + %2$s%3$s日–%7$s%8$s日 + %2$s%3$s日%1$s–%7$s%8$s日%6$s + %5$s %2$s%3$s日–%10$s %7$s%8$s日 + %5$s %2$s%3$s日–%10$s %7$s%8$s日 + %5$s %2$s%3$s日%1$s–%10$s %7$s%8$s日%6$s + %5$s %2$s%3$s日%1$s–%10$s %7$s%8$s日%6$s + %5$s %4$s年%2$s%3$s日–%10$s %9$s年%7$s%8$s日 + %5$s %4$s年%2$s%3$s日–%10$s %9$s年%7$s%8$s日 + %5$s %4$s年%2$s%3$s日%1$s–%10$s %9$s年%7$s%8$s日%6$s + %5$s %4$s年%2$s%3$s日%1$s–%10$s %9$s年%7$s%8$s日%6$s + %4$s年%2$s%3$s日%1$s–%9$s年%7$s%8$s日%6$s + %2$s%3$s日至%8$s日 + %2$s%3$s日%1$s–%7$s%8$s日%6$s + %9$s年%2$s%3$s日至%7$s%8$s日 + %9$s年%2$s%3$s日至%8$s日 + %9$s年%2$s%3$s日%1$s至%7$s%8$s日%6$s + %b + diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 54b0b97d9691..3be8aa09a5fe 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -166,14 +166,10 @@ "允许应用程序更改当前配置,例如语言设置或整体的字体大小。" "重新启动其他应用程序" "允许应用程序强制重新启动其他应用程序。" - "防止停止" - "允许应用程序在前台运行任何进程,因此该进程不能被终止。普通应用程序从不需要使用此权限。" "强制应用程序关闭" "允许应用程序强制前台的任何活动关闭和重新开始。普通应用程序从不需要使用此权限。" "检索系统内部状态" "允许应用程序检索系统的内部状态。恶意应用程序可能会借此检索通常它们本不需要的各种私有和安全信息。" - "发布低级服务" - "允许应用程序发布自己的低级系统服务。恶意应用程序可能会借此攻击系统,以及盗取或破坏系统中的任何数据。" "监视和控制所有应用程序启动" "允许应用程序监视和控制系统启动活动的方式。恶意应用程序可能会借此彻底损坏系统。此权限仅在开发时才需要,普通的手机应用不需要。" "发送包删除的广播" @@ -186,8 +182,6 @@ "允许应用程序控制运行的进程数上限。普通应用程序从不需要使用此权限。" "关闭所有后台应用程序" "允许应用程序控制活动是否始终是一转至后台就完成。普通应用程序从不需要使用此权限。" - "自动安装系统更新" - "允许应用程序接收有关未决系统更新的通知并安装这些更新。恶意应用程序可能会借此通过未经授权的更新破坏系统,通常情况下,它们会干扰更新过程。" "修改电池统计信息" "允许修改收集的电池统计信息。普通应用程序不能使用此权限。" "显示未授权的窗口" @@ -424,9 +418,6 @@ "密码" "登录" "用户名或密码无效。" - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%P%-l点" "%p%-l点" "清除通知" @@ -458,9 +449,6 @@ "Enter 键" "删除" "搜索" - "今天" - "昨天" - "明天" "1 个月前" "1 个月前" @@ -542,13 +530,6 @@ "周" "年" "年" - "周日" - "周一" - "周二" - "周三" - "周四" - "周五" - "周六" "每个工作日(周一到周五)" "每天" "每周的%s" @@ -558,137 +539,15 @@ "抱歉,该视频不适合在此设备上播放。" "很抱歉,此视频不能播放。" "确定" - "上午" - "下午" - "%Y%m%d 日" - "%2$s%1$s %3$s%5$s%4$s %6$s" - "%2$s%1$s%5$s%4$s" - "%2$s %3$s%5$s %6$s" - "%2$s%5$s" - "%1$s%2$s" - "%3$s%2$s %1$s" - "%3$s%2$s" - "%3$s %1$s" - "%1$s%2$s" "%1$s%2$s" - "%2$s %1$s" - "yyyy' 年 'MMMM' 月 'd' 日'" - "yyyy' 年 'MMMM' 月 'd' 日'" - "yyyy' 年 'MMM' 月 'd' 日'" - "yyyy' 年 'd' 月 'MMM' 日'" - "h':'mm' 'a" - "HH':'mm" "中午" "中午" "午夜" "午夜" - "%B%-d 日" - "%Y%B%-d 日" - "%Y%B 月" - "%H:%M:%S" - "%Y%B%-d%H:%M:%S" - "%2$s%3$s 日至 %7$s%8$s 日" - "%2$s%3$s%1$s%7$s%8$s%6$s" - "%9$s%2$s%3$s 日至 %7$s%8$s 日" - "%9$s%2$s%3$s%1$s%7$s%8$s%6$s" - "%2$s%3$s%5$s%7$s%8$s%10$s" - "%2$s%3$s%1$s %5$s%7$s%8$s%6$s %10$s" - "%4$s%2$s%3$s%5$s%9$s%7$s%8$s%10$s" - "%4$s%2$s%3$s%1$s %5$s 至 – %9$s%7$s%8$s%6$s %10$s" - "%2$s%3$s 日至 %7$s%8$s 日" - "%2$s%3$s%1$s%7$s%8$s%6$s" - "%4$s%2$s%3$s 日至 %9$s%7$s%8$s 日" - "%4$s%2$s%3$s%1$s%9$s%7$s%8$s%6$s" - "%2$s%3$s%5$s%7$s%8$s%10$s" - "%2$s%3$s%1$s %5$s%7$s%8$s%6$s %10$s" - "%4$s%2$s%3$s%5$s%9$s%7$s%8$s%10$s" - "%4$s%2$s%3$s%1$s %5$s%9$s%7$s%8$s%6$s %10$s" - "%2$s%3$s 日至 %8$s 日" - "%2$s%3$s%1$s%7$s%8$s%6$s" - "%9$s%2$s%3$s 日至 %8$s 日" - "%4$s%2$s%3$s%1$s%9$s%7$s%8$s%6$s" - "%2$s%3$s%5$s%7$s%8$s%10$s" - "%2$s%3$s%1$s %5$s%7$s%8$s%6$s %10$s" - "%4$s%2$s%3$s%5$s%9$s%7$s%8$s%10$s" - "%4$s%2$s%3$s%1$s %5$s%9$s%7$s%8$s%6$s %10$s" - "%Y%b%-d 日" - "%Y%b 月" - "%b%-d 日" - "周日" - "周一" - "周二" - "周三" - "周四" - "周五" - "周六" - "周日" - "周一" - "周二" - "周三" - "周四" - "周五" - "周六" - "周日" - "周一" - "周二" - "周三" - "周四" - "周五" - "周六" - "周日" - "周一" - "周二" - "周三" - "周四" - "周五" - "周六" - "周日" - "周一" - "周二" - "周三" - "周四" - "周五" - "周六" - "1 月" - "2 月" - "3 月" - "4 月" - "5 月" - "6 月" - "7 月" - "8 月" - "9 月" - "10 月" - "11 月" - "12 月" - "1 月" - "2 月" - "3 月" - "4 月" - "5 月" - "6 月" - "7 月" - "8 月" - "9 月" - "10 月" - "11 月" - "12 月" - "1 月" - "2 月" - "3 月" - "4 月" - "5 月" - "6 月" - "7 月" - "8 月" - "9 月" - "10 月" - "11 月" - "12 月" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "全选" diff --git a/core/res/res/values-zh-rTW/donottranslate-cldr.xml b/core/res/res/values-zh-rTW/donottranslate-cldr.xml new file mode 100644 index 000000000000..6d52d7046f99 --- /dev/null +++ b/core/res/res/values-zh-rTW/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + 星期日 + 星期一 + 星期二 + 星期三 + 星期四 + 星期五 + 星期六 + + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + + + + + + + + + + 上午 + 下午 + 昨天 + 今天 + 明天 + + %-k:%M + %p%-l:%M + %p%-l:%M + ah:mm + H:mm + %Y-%-m-%-e + yyyy-M-d + "%s-%s-%s" + %Y年%-m月%-e日 + %p%I:%M:%S + %p%I:%M:%S %Y-%-m-%-e + %2$s %1$s + %1$s %3$s + %Y-%-m-%-e + %B%-e日 + %-B + %Y年%B + %b%-e日 + %-b + %Y年%b + %1$s–%2$s + %2$s–%5$s + %2$s-%3$s至%7$s-%8$s + %2$s-%3$s%1$s至%7$s-%8$s%6$s + %4$s-%2$s-%3$s至%9$s-%7$s-%8$s + %4$s-%2$s-%3$s%1$s至%9$s-%7$s-%8$s%6$s + %5$s %4$s年%2$s月%3$s日,%1$s–%10$s %9$s年%7$s月%8$s日,%6$s + %5$s %2$s-%3$s–%10$s %7$s-%8$s + %5$s %2$s-%3$s%1$s–%10$s %7$s-%8$s%6$s + %5$s %4$s-%2$s-%3$s–%10$s %9$s-%7$s-%8$s + %3$s %2$s%1$s–%6$s %5$s%4$s + %2$s%1$s–%5$s%4$s + %3$s %2$s–%6$s %5$s + %1$s %3$s%2$s + %3$s%2$s + %1$s %2$s + %2$s%3$s日–%7$s%8$s日 + %2$s%3$s日%1$s–%7$s%8$s日%6$s + %5$s %2$s%3$s日–%10$s %7$s%8$s日 + %5$s %2$s%3$s日–%10$s %7$s%8$s日 + %5$s %2$s%3$s日%1$s–%10$s %7$s%8$s日%6$s + %5$s %2$s%3$s日%1$s–%10$s %7$s%8$s日%6$s + %5$s %4$s年%2$s%3$s日–%10$s %9$s年%7$s%8$s日 + %5$s %4$s年%2$s%3$s日–%10$s %9$s年%7$s%8$s日 + %5$s %4$s年%2$s%3$s日%1$s–%10$s %9$s年%7$s%8$s日%6$s + %5$s %4$s年%2$s%3$s日%1$s–%10$s %9$s年%7$s%8$s日%6$s + %4$s年%2$s%3$s日%1$s–%9$s年%7$s%8$s日%6$s + %2$s%3$s日至%8$s日 + %2$s%3$s日%1$s–%7$s%8$s日%6$s + %9$s年%2$s%3$s日至%7$s%8$s日 + %9$s年%2$s%3$s日至%8$s日 + %9$s年%2$s%3$s日%1$s至%7$s%8$s日%6$s + %b + diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 514e304f1b25..8cace6638b43 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -161,14 +161,10 @@ "允許應用程式變更目前設定,例如:地區設定或字型大小。" "重新啟動其他應用程式" "允許應用程式強制重新啟動其他應用程式。" - "保持已停止狀態" - "允許應用程式在前端執行任何程序 (無法中止)。一般應用程式不需要此功能。" "強制關閉應用程式" "允許應用程式強制關閉在前端運作的活動並返回。一般應用程式不需要此功能。" "接收系統內部狀態" "允許應用程式取得系統內部狀態。請注意:惡意程式可能利用此功能,不當取得私人或安全性資料。" - "發行低階服務" - "允許應用程式發行自有低階系統服務。請注意:惡意程式可能利用此功能綁架系統或偷取、竄改資料內容。" "監視控制所有應用程式啟動狀態。" "允許應用程式監控管理系統啟動活動。請注意:惡意程式可能因此癱瘓整個系統。此權限只在開發時需要,一般手機使用不需要此權限。" "傳送程式已移除廣播" @@ -181,8 +177,6 @@ "允許應用程式控制可使用的最大執行緒。一般應用程式不需要此功能。" "關閉所有背景程式" "允許應用程式控制哪些活動在被移到背景執行時,儘速結束。一般應用程式不需要此功能。" - "自動安裝系統更新" - "允許應用程式接收可安裝系統更新的通知,並啟動安裝。請注意:惡意程式可能透過未授權的更新竄改系統,或干擾更新程序。" "編輯電池狀態" "允許修改電池狀態。一般應用程式不會使用此功能。" "顯示未授權視窗" @@ -418,9 +412,6 @@ "密碼" "登入" "使用者名稱或密碼錯誤。" - "h:mm AA" - "%-l:%M%P" - "%-l:%M%p" "%-l%P" "%-l%p" "清除通知" @@ -452,9 +443,6 @@ "輸入" "刪除" "搜尋" - "今天" - "昨天" - "明天" "1 個月以前" "1 個月前" @@ -536,13 +524,6 @@ "週" "年" "年" - "星期日" - "星期一" - "星期二" - "星期三" - "星期四" - "星期五" - "星期六" "每天 (週一至週五)" "每天" "每週%s" @@ -552,137 +533,15 @@ "很抱歉,影片格式無效,裝置無法進行串流處理。" "很抱歉,此影片無法播放。" "確定" - "上午" - "下午" - "%m/%d/%Y" - "%2$s%1$s%3$s%5$s%4$s%6$s" - "%2$s%1$s%5$s%4$s" - "%2$s%3$s%5$s%6$s" - "%2$s%5$s" - "%1$s%2$s" - "%3$s%2$s%1$s" - "%3$s%2$s" - "%3$s%1$s" - "%1$s%2$s" "%1$s%2$s" - "%2$s%1$s" - "MMMM' 'd','yyyy" - "yyyy' 年 'MMMM' 'd' 日'" - "MMM' 'd','yyyy" - "yyyy' 年 'MMM' 'd' 日'" - "h':'mm' 'a" - "HH':'mm" "中午" "中午" "午夜" "午夜" - "%B %-d 日" - "%Y%B %-d 日" - "%Y%B" - "%H:%M:%S" - "%Y%B %-d 日,%H:%M:%S" - "%2$s %3$s%7$s %8$s" - "%2$s %3$s 日,%1$s%7$s %8$s 日,%6$s" - "%9$s%2$s %3$s 日 – %7$s %8$s 日" - "%9$s%2$s %3$s 日,%1$s%7$s %8$s日,%6$s" - "%2$s %3$s 日,%5$s%7$s %8$s 日,%10$s" - "%2$s %3$s%1$s%5$s%7$s %8$s%6$s%10$s" - "%4$s%2$s %3$s 日,%5$s%9$s%7$s %8$s 日,%10$s" - "%4$s%2$s %3$s%1$s%5$s%9$s%7$s %8$s%6$s%10$s" - "%2$s/%3$s%7$s/%8$s" - "%2$s/%3$s%1$s%7$s/%8$s%6$s" - "%4$s/%2$s/%3$s%9$s/%7$s/%8$s" - "%4$s/%2$s/%3$s%1$s%9$s/%7$s/%8$s%6$s" - "%2$s/%3$s%5$s%7$s/%8$s%10$s" - "%2$s/%3$s%1$s%5$s%7$s/%8$s%6$s%10$s" - "%4$s/%2$s/%3$s%5$s%9$s/%7$s/%8$s%10$s" - "%4$s/%2$s/%3$s%1$s%5$s%9$s/%7$s/%8$s%6$s%10$s" - "%2$s %3$s 日 – %8$s 日" - "%2$s %3$s 日,%1$s%7$s %8$s 日,%6$s" - "%9$s%2$s %3$s 日 – %8$s 日" - "%4$s%2$s %3$s 日,%1$s%9$s%7$s %8$s 日,%6$s" - "%2$s %3$s 日,%5$s%7$s %8$s 日,%10$s" - "%2$s %3$s 日,%1$s%5$s%7$s %8$s 日,%6$s%10$s" - "%4$s%2$s %3$s%5$s%9$s%7$s %8$s%10$s" - "%4$s%2$s %3$s 日,%1$s%5$s%9$s%7$s %8$s 日,%6$s%10$s" - "%Y%b %-d 日" - "%Y%b" - "%b %-d 日" - "星期日" - "星期一" - "星期二" - "星期三" - "星期四" - "星期五" - "星期六" - "週日" - "週一" - "週二" - "週三" - "週四" - "五" - "週六" - "日" - "一" - "二" - "三" - "週四" - "五" - "六" - "日" - "一" - "二" - "三" - "四" - "五" - "六" - "日" - "一" - "二" - "三" - "四" - "五" - "六" - "1 月" - "2 月" - "3 月" - "4 月" - "5 月" - "6 月" - "7 月" - "8 月" - "9 月" - "10 月" - "11 月" - "12 月" - "1 月" - "2 月" - "3 月" - "4 月" - "5 月" - "6 月" - "7 月" - "8 月" - "9 月" - "10 月" - "11 月" - "12 月" - "1" - "2" - "3" - "4" - "5" - "6" - "7" - "8" - "9" - "10" - "11" - "12" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "全部選取" diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml index 7db73f014140..66f0e820cb38 100644 --- a/core/res/res/values/arrays.xml +++ b/core/res/res/values/arrays.xml @@ -110,7 +110,10 @@ alarm_clock battery phone_signal + phone_evdo_signal data_connection + cdma_eri + tty volume mute speakerphone @@ -122,4 +125,14 @@ sync_failing ime + + + + com.google.android.providers.enhancedgooglesearch/.Launcher + com.android.googlesearch/.GoogleSearch + com.android.websearch/.Search.1 + diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 633a831f0b18..6f2a5d3c6f8a 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -4,9 +4,9 @@ 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. @@ -64,10 +64,13 @@ - + + + + @@ -80,6 +83,11 @@ + + + + + @@ -94,27 +102,28 @@ - - - + + + + - + - + - + @@ -139,7 +148,7 @@ - + @@ -152,27 +161,27 @@ - - + + + the indicator that will be shown to next to the item. --> + If this is not provided, it defaults to the expandableListPreferredItemPaddingLeft. --> + indicator, use expandableListPreferredChildIndicatorLeft. --> + indicator, use expandableListPreferredChildIndicatorRight. --> - + - + @@ -221,7 +230,7 @@ any of the attributes defined by {@link android.R.styleable#WindowAnimation}. --> - + @@ -243,7 +252,7 @@ - + - + - + - + @@ -320,6 +329,8 @@ + + @@ -342,6 +353,12 @@ + + + + + + @@ -381,7 +398,7 @@ - + @@ -402,7 +419,7 @@ - + @@ -420,7 +437,7 @@ --> - + @@ -428,26 +445,26 @@ - + - + - + - + - + - + @@ -456,7 +473,7 @@ - + - - + + @@ -721,8 +738,7 @@ + Defines how to place the view, both its x and y axis, within its parent view group. --> @@ -769,11 +785,11 @@ - - + @@ -906,7 +922,7 @@ - + @@ -950,7 +966,7 @@ allows you to later retrieve the view with findViewById(R.id.my_id). --> - + - + @@ -972,7 +988,7 @@ @@ -1044,14 +1060,14 @@ - + - + @@ -1113,10 +1129,10 @@ - + - + - + @@ -1142,16 +1158,16 @@ - + - + - + @@ -1165,6 +1181,11 @@ enabled for events such as long presses. --> + + + - + - + @@ -1330,7 +1351,7 @@ - @@ -1353,13 +1374,13 @@ already visible on screen. --> + are currently visible. --> - - @@ -1458,14 +1479,14 @@ + use childIndicatorLeft. --> + use childIndicatorRight. --> - + - + - - @@ -1573,9 +1594,9 @@ - @@ -1620,7 +1641,7 @@ - + @@ -1653,27 +1674,27 @@ - + - + - + - + - + - - - - - - - - + + + + + + + + - + @@ -1695,7 +1716,7 @@ indices are ignored. You can shrink all columns by using the value "*" instead. Note that a column can be marked stretchable and shrinkable at the same time. --> - + @@ -1796,7 +1817,7 @@ - @@ -1921,7 +1942,7 @@ - @@ -1986,6 +2007,16 @@ + + + + + + + @@ -2012,7 +2043,7 @@ - + @@ -2053,6 +2084,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2136,7 +2205,7 @@ {@link android.graphics.drawable.Drawable#setVisible} --> - + - + @@ -2161,15 +2230,15 @@ restarting at the first frame after the last has finished. --> - + - + - + @@ -2192,18 +2261,18 @@ - + - + - + @@ -2214,18 +2283,18 @@ - + - + - + @@ -2233,14 +2302,14 @@ - + - + @@ -2249,7 +2318,7 @@ - + @@ -2257,7 +2326,7 @@ - + @@ -2267,6 +2336,15 @@ + + + + + + + + + @@ -2413,7 +2491,7 @@ - + @@ -2456,14 +2534,14 @@ - + - + @@ -2472,14 +2550,14 @@ - + - + @@ -2541,12 +2619,12 @@ - + - + @@ -2656,18 +2734,18 @@ - + - + - + - + @@ -2677,7 +2755,7 @@ @@ -2686,29 +2764,29 @@ plain text. This is a reference to a drawable (icon) resource. Optional attribute. --> - - - + - + @@ -2757,14 +2835,14 @@ - - - + - + + + + + + + - + - + - + - + - + - + - + - + @@ -2888,11 +2979,11 @@ - + - + @@ -2903,7 +2994,7 @@ this group. --> - + @@ -2917,7 +3008,7 @@ - + @@ -2928,15 +3019,15 @@ - + + the title should be sufficient in describing this item. --> - + @@ -2944,14 +3035,14 @@ - + - - - + @@ -2977,7 +3068,7 @@ with a View's attributes. Some subclasses (e.g., EditTextPreference) proxy all attributes to its EditText widget. --> - + @@ -3106,7 +3197,7 @@ it had previously been shown. --> - + @@ -3139,13 +3230,13 @@ - + - + - @@ -3228,7 +3319,7 @@ If not supplied, then no activity will be launched. --> - - + + diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 7b48267045fa..7571e2453627 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -512,6 +512,9 @@ + + @@ -570,6 +573,15 @@ + + + + + + + {@link #AndroidManifestInstrumentation instrumentation}, + {@link #AndroidManifestUsesFeature uses-feature}. --> @@ -643,6 +656,8 @@ + + + + + + + - - - + {@link #AndroidManifest manifest} tag. --> + + + + + + + + + + + + + + + + + + + + + + + + - #ffffffff + #fff9f9f9 #ff1a1a1a #ff000000 #ff000000 @@ -37,7 +37,7 @@ #323232 #80323232 #808080 - #ffffffff + #fff9f9f9 #ff000000 #ffffffff #80000000 @@ -58,7 +58,7 @@ @drawable/editbox_dropdown_background_dark @drawable/editbox_dropdown_background - #ffffffff + #fff9f9f9 #ff0092f4 @@ -73,5 +73,9 @@ #eeeeee #c0c0c0 + + #7fa87f + @android:color/lighter_gray + diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 83ac8e27e146..7215685a3d46 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -34,4 +34,8 @@ 300 + + + false diff --git a/core/res/res/values/donottranslate-cldr.xml b/core/res/res/values/donottranslate-cldr.xml new file mode 100644 index 000000000000..286cc0e554f2 --- /dev/null +++ b/core/res/res/values/donottranslate-cldr.xml @@ -0,0 +1,147 @@ + + + January + February + March + April + May + June + July + August + September + October + November + December + + January + February + March + April + May + June + July + August + September + October + November + December + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + J + F + M + A + M + J + J + A + S + O + N + D + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + Su + Mo + Tu + We + Th + Fr + Sa + + S + M + T + W + T + F + S + + am + pm + Yesterday + Today + Tomorrow + + %H:%M + %-l:%M%p + %-l:%M%^p + h:mm a + HH:mm + %-m/%-e/%Y + M/d/yyyy + "%s/%s/%s" + %B %-e, %Y + %-l:%M:%S %p + %b %-e, %Y, %-l:%M:%S %p + %1$s, %2$s + %1$s, %3$s + %b %-e, %Y + %B %-e + %-B + %B %Y + %b %-e + %-b + %b %Y + %1$s – %2$s + %2$s – %5$s + %2$s/%3$s – %7$s/%8$s + %1$s, %2$s/%3$s – %6$s, %7$s/%8$s + %2$s/%3$s/%4$s – %7$s/%8$s/%9$s + %1$s, %2$s/%3$s/%4$s – %6$s, %7$s/%8$s/%9$s + %1$s, %2$s/%3$s/%4$s, %5$s – %6$s, %7$s/%8$s/%9$s, %10$s + %2$s/%3$s, %5$s – %7$s/%8$s, %10$s + %1$s, %2$s/%3$s, %5$s – %6$s, %7$s/%8$s, %10$s + %2$s/%3$s/%4$s, %5$s – %7$s/%8$s/%9$s, %10$s + %1$s, %2$s, %3$s – %4$s, %5$s, %6$s + %1$s, %2$s – %4$s, %5$s + %2$s, %3$s – %5$s, %6$s + %1$s, %2$s, %3$s + %2$s, %3$s + %1$s, %2$s + %2$s %3$s – %7$s %8$s + %1$s, %2$s %3$s – %6$s, %7$s %8$s + %2$s %3$s, %5$s – %7$s %8$s, %10$s + %2$s %3$s, %5$s – %7$s %8$s, %10$s + %1$s, %2$s %3$s, %5$s – %6$s, %7$s %8$s, %10$s + %1$s, %2$s %3$s, %5$s – %6$s, %7$s %8$s, %10$s + %2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s + %2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s + %1$s, %2$s %3$s, %4$s – %6$s, %7$s %8$s, %9$s + %2$s %3$s – %8$s + %1$s, %2$s %3$s – %6$s, %7$s %8$s + %2$s %3$s – %7$s %8$s, %9$s + %2$s %3$s – %8$s, %9$s + %1$s, %2$s %3$s – %6$s, %7$s %8$s, %9$s + %b + diff --git a/core/res/res/values/donottranslate.xml b/core/res/res/values/donottranslate.xml new file mode 100644 index 000000000000..6def3bfdd1b0 --- /dev/null +++ b/core/res/res/values/donottranslate.xml @@ -0,0 +1,23 @@ + + + + + Latin-1 + diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index f90c6b82edf9..32c693757dcf 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -1091,22 +1091,73 @@ =============================================================== --> - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 331ef1a0feaa..9b9ba681713a 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -30,6 +30,11 @@ TB PB + + %1$s%2$s @@ -148,6 +153,24 @@ PAD + + + Roaming Indicator On + Roaming Indicator Off + Roaming Indicator Flashing + Out of Neighborhood + Out of Building + Roaming - Preferred System + Roaming - Available System + Roaming - Alliance Partner + Roaming - Premium Partner + Roaming - Full Service Functionality + Roaming - Partial Service Functionality + Roaming Banner On + Roaming Banner Off + Searching for Service + + Too many requests are being processed. Try again later. + + The certificate is saved in the system\'s key store. @@ -437,13 +462,6 @@ Allows an application to forcibly restart other applications. - - keep from being stopped - - Allows an application to make - any process run in the foreground, so it can\'t be killed. - Should never be needed for normal applications. - force application to close @@ -459,19 +477,18 @@ a wide variety of private and secure information that they should never normally need. - - publish low-level services - - Allows application to publish - its own low-level system services. Malicious applications may hijack - the system, and steal or corrupt any data on it. - partial shutdown Puts the activity manager into a shutdown state. Does not perform a complete shutdown. + + prevent app switches + + Prevents the user from switching to + another application. + monitor and control all application launching @@ -518,21 +535,17 @@ to control whether activities are always finished as soon as they go to the background. Never needed for normal applications. - - automatically install system updates - - Allows an application to receive - notifications about pending system updates and trigger their - installation. Malicious applications may use this to corrupt the system - with unauthorized updates, or generally interfere with the update - process. - modify battery statistics Allows the modification of collected battery statistics. Not for use by normal applications. + + control system backup and restore + + Allows the application to control the system's backup and restore mechanism. Not for use by normal applications. + display unauthorized windows @@ -763,13 +776,7 @@ Create mock location sources for testing. Malicious applications can use this to override the location and/or status returned by real - location sources such as GPS or Network providers. - - - permission to install a location collector - - Create mock location sources for testing. - Malicious applications can use this to monitor and report your location to an external source. + location sources such as GPS or Network providers or monitor and report your location to an external source. fine (GPS) location @@ -887,7 +894,6 @@ properties uploaded by the checkin service. Not for use by normal applications. - choose widgets @@ -1005,6 +1011,15 @@ to and disconnect from Wi-Fi access points, and to make changes to configured Wi-Fi networks. + + allow Wi-Fi Multicast + reception + + Allows an application to + receive packets not directly addressed to your device. This can be + useful when discovering services offered near by. It uses more power + than the non-multicast mode. + bluetooth administration @@ -1070,7 +1085,7 @@ user dictionary. - write to SD card + modify/delete SD card contents Allows an application to write to the SD card. @@ -1096,6 +1111,9 @@ Custom + + Mobile + @@ -1174,9 +1192,12 @@ Sorry, try again - + Charging (%d%%) + + Charged. @@ -1245,15 +1266,6 @@ Invalid username or password. - - "h:mm AA" - - - "%-l:%M%P" - - - "%-l:%M%p" - "%-l%P" @@ -1262,7 +1274,7 @@ - Clear notifications + Clear @@ -1295,6 +1307,9 @@ less than %d%% remaining. + + Why? Factory test failed @@ -1321,7 +1336,23 @@ Confirm - + + + read Browser\'s history and bookmarks + + Allows the application to read all + the URLs that the Browser has visited, and all of the Browser\'s bookmarks. + + write Browser\'s history and bookmarks + + Allows an application to modify the + Browser\'s history or bookmarks stored on your phone. Malicious applications + can use this to erase or modify your Browser\'s data. + Do you want the browser to remember this password? @@ -1354,12 +1385,6 @@ It is also used by the home screen's search "widget". It should be short --> Search - - Today - - Yesterday - - Tomorrow 1 month ago @@ -1493,21 +1518,6 @@ years - - Sunday - - Monday - - Tuesday - - Wednesday - - Thursday - - Friday - - Saturday - "Every weekday (Mon\u2013Fri)" @@ -1530,95 +1540,12 @@ OK - - "AM" - - - "PM" - - - - "%m/%d/%Y" - - - "%1$s, %2$s, %3$s \u2013 %4$s, %5$s, %6$s" - - - "%1$s, %2$s \u2013 %4$s, %5$s" - - "%2$s, %3$s \u2013 %5$s, %6$s" - - - "%2$s \u2013 %5$s" - - - "%1$s \u2013 %2$s" - - - "%1$s, %2$s, %3$s" - - - "%2$s, %3$s" - - - "%1$s, %3$s" - - - "%1$s, %2$s" "%1$s, %2$s" - - "%1$s, %2$s" - - - MMMM d, yyyy - - - d MMMM, yyyy - - - MMM d, yyyy - - - d MMM, yyyy - - - h:mm a - - - HH:mm "noon" @@ -1629,433 +1556,15 @@ "Midnight" - - "%B %-d" - - - "%B" - - - "%B %-d, %Y" - - - "%B %Y" - - - "%H:%M:%S" - - - "%H:%M:%S %B %-d, %Y" - - - "%2$s %3$s \u2013 %7$s %8$s" - - - "%1$s, %2$s %3$s \u2013 %6$s, %7$s %8$s" - - - "%2$s %3$s \u2013 %7$s %8$s, %9$s" - - - "%1$s, %2$s %3$s \u2013 %6$s, %7$s %8$s, %9$s" - - - "%2$s %3$s, %5$s \u2013 %7$s %8$s, %10$s" - - - "%1$s, %2$s %3$s, %5$s \u2013 %6$s, %7$s %8$s, %10$s" - - - "%2$s %3$s, %4$s, %5$s \u2013 %7$s %8$s, %9$s, %10$s" - - - "%1$s, %2$s %3$s, %4$s, %5$s \u2013 %6$s, %7$s %8$s, %9$s, %10$s" - - - - "%2$s/%3$s \u2013 %7$s/%8$s" - - - "%1$s, %2$s/%3$s \u2013 %6$s, %7$s/%8$s" - - - "%2$s/%3$s/%4$s \u2013 %7$s/%8$s/%9$s" - - - "%1$s, %2$s/%3$s/%4$s \u2013 %6$s, %7$s/%8$s/%9$s" - - - "%2$s/%3$s, %5$s \u2013 %7$s/%8$s, %10$s" - - - "%1$s, %2$s/%3$s, %5$s \u2013 %6$s, %7$s/%8$s, %10$s" - - - "%2$s/%3$s/%4$s, %5$s \u2013 %7$s/%8$s/%9$s, %10$s" - - - "%1$s, %2$s/%3$s/%4$s, %5$s \u2013 %6$s, %7$s/%8$s/%9$s, %10$s" - - - - "%2$s %3$s \u2013 %8$s" - - - "%1$s, %2$s %3$s \u2013 %6$s, %7$s %8$s" - - - "%2$s %3$s \u2013 %8$s, %9$s" - - - "%1$s, %2$s %3$s, %4$s \u2013 %6$s, %7$s %8$s, %9$s" - - - "%2$s %3$s, %5$s \u2013 %7$s %8$s, %10$s" - - - "%1$s, %2$s %3$s, %5$s \u2013 %6$s, %7$s %8$s, %10$s" - - - "%2$s %3$s, %4$s, %5$s \u2013 %7$s %8$s, %9$s, %10$s" - - - "%1$s, %2$s %3$s, %4$s, %5$s \u2013 %6$s, %7$s %8$s, %9$s, %10$s" - - - "%b %-d, %Y" - - "%b %Y" - - "%b %-d" - - "%b" - - Sunday - - Monday - - Tuesday - - Wednesday - - Thursday - - Friday - - - Saturday - - - - Sun - - - Mon - - - Tue - - - Wed - - - Thu - - - Fri - - - Sat - - - - Su - - - Mo - - - Tu - - - We - - - Th - - - Fr - - - Sa - - - - Su - - - M - - - Tu - - - W - - - Th - - - F - - - Sa - - - - S - - - M - - - T - - - W - - - T - - - F - - - S - - - - January - - - February - - - March - - - April - - - May - - - June - - - July - - - August - - - September - - - October - - - November - - - December - - - - Jan - - - Feb - - - Mar - - - Apr - - - May - - - Jun - - - Jul - - - Aug - - - Sep - - - Oct - - - Nov - - - Dec - - - - J - - - F - - - M - - - A - - - M - - - J - - - J - - - A - - - S - - - O - - - N - - - D %1$02d:%2$02d @@ -2153,6 +1662,8 @@ Process %1$s is not responding. Force close + + Report Wait @@ -2278,6 +1789,11 @@ Format + + USB debugging connected + + A computer is connected to your phone. + @@ -2296,15 +1812,15 @@ Preparing SD card - Checking for errors + Checking for errors. Blank SD card - The SD card is blank or using an unsupported filesystem. + SD card blank or has unsupported filesystem. Damaged SD card - The SD card is damaged. You may have to reformat your card. + SD card damaged. You may have to reformat it. SD card unexpectedly removed @@ -2312,11 +1828,11 @@ SD card safe to remove - The SD card can now be safely removed. + You can safely remove SD card. Removed SD card - The SD has been removed. Insert a new SD card to increase your device storage. + SD card removed. Insert a new one. No matching activities found @@ -2366,10 +1882,12 @@ - - - - + + + checked + + not checked + diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index 8160c9c9298f..7d235ec8d4ef 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -124,6 +124,12 @@ @anim/shrink_fade_out_from_bottom + + + + + + + + + + + + + diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml index 9567523445e8..be836ebec4e5 100644 --- a/core/res/res/values/themes.xml +++ b/core/res/res/values/themes.xml @@ -44,12 +44,14 @@ @android:color/secondary_text_light @android:color/tertiary_text_light @android:color/primary_text_dark_disable_only + @android:color/primary_text_light_disable_only @android:color/primary_text_dark_nodisable @android:color/secondary_text_dark_nodisable @android:color/primary_text_light_nodisable @android:color/secondary_text_light_nodisable @android:color/hint_foreground_dark @android:color/hint_foreground_light + @android:color/search_url_text @android:style/TextAppearance.Large @android:style/TextAppearance.Medium @@ -141,7 +143,8 @@ @android:style/Widget.EditText @android:style/Widget.ExpandableListView @android:style/Widget.Gallery - @android:style/Widget.GridView + @android:style/Widget.GestureOverlayView + @android:style/Widget.GridView @android:style/Widget.ImageButton @android:style/Widget.ImageWell @android:style/Widget.ListView @@ -152,6 +155,9 @@ @android:style/Widget.ProgressBar.Small @android:style/Widget.ProgressBar.Small.Title @android:style/Widget.ProgressBar.Large + @android:style/Widget.ProgressBar.Inverse + @android:style/Widget.ProgressBar.Small.Inverse + @android:style/Widget.ProgressBar.Large.Inverse @android:style/Widget.SeekBar @android:style/Widget.RatingBar @android:style/Widget.RatingBar.Indicator @@ -181,6 +187,9 @@ @android:style/Preference.DialogPreference.EditTextPreference @android:style/Preference.RingtonePreference @android:layout/preference_child + + + @android:color/search_widget_corpus_item_background @@ -212,6 +221,7 @@ @android:color/secondary_text_dark @android:color/tertiary_text_dark @android:color/primary_text_light_disable_only + @android:color/primary_text_dark_disable_only @android:color/primary_text_light_nodisable @android:color/secondary_text_light_nodisable @android:color/primary_text_dark_nodisable @@ -224,9 +234,17 @@ @android:drawable/indicator_check_mark_light @android:drawable/indicator_check_mark_dark + @android:style/Widget.GestureOverlayView.White @android:style/Widget.ListView.White @drawable/divider_horizontal_bright @android:style/Widget.TextView.ListSeparator.White + + @android:style/Widget.ProgressBar.Inverse + @android:style/Widget.ProgressBar.Small.Inverse + @android:style/Widget.ProgressBar.Large.Inverse + @android:style/Widget.ProgressBar + @android:style/Widget.ProgressBar.Small + @android:style/Widget.ProgressBar.Large @@ -365,6 +383,12 @@ true @null + + + diff --git a/core/res/res/xml/eri.xml b/core/res/res/xml/eri.xml new file mode 100644 index 000000000000..cd66f1447a59 --- /dev/null +++ b/core/res/res/xml/eri.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/res/res/xml/power_profile.xml b/core/res/res/xml/power_profile.xml new file mode 100644 index 000000000000..859902e73d9e --- /dev/null +++ b/core/res/res/xml/power_profile.xml @@ -0,0 +1,40 @@ + + + + + 0 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.2 + 1 + 0.1 + 0.1 + 1 + 1 + + 1 + 0.1 + + diff --git a/data/etc/platform.xml b/data/etc/platform.xml index f80bd6b00cdc..0bd32767cba9 100644 --- a/data/etc/platform.xml +++ b/data/etc/platform.xml @@ -54,7 +54,7 @@ - + @@ -84,6 +84,24 @@ others should have a fairly open environment in which to interact with the system. --> + + + + + + + + + + + + + + + + + + @@ -114,11 +132,14 @@ + + + diff --git a/data/fonts/DroidSansJapanese.ttf b/data/fonts/DroidSansJapanese.ttf index ca7922122ab536ba681800615c3c818a7983b69d..412fa3de05e84bc5cdac712997583dbcedddbe64 100755 GIT binary patch literal 1173140 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

      rB-hwj(dsw>hR(qKcBk- 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

      )!}~bOiI?abb#WFI4A6;H*i?27Vt7zD5i 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�=^40<0S^%c+*hQrA$aiYz&z{~r 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%0Db-Ex3CphcX!++yx|Ru0!erO!pGP^ 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

      P5Yvn@Dz1p{LvIx16a#N2My0A0fv4Pw1#; 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%0Aj$y45R7cg?#3apY?Q`)>_AHJ55I~7NM%Cn9%%> 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 z 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

      nwAYy{ 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 z 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%0A%aEqRZnL-r@x*SpD#Fti851N1nu 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�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

      _#lWgYi#d8F|EU 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 JH{|OF?LW!~Bxe8s literal 0 HcmV?d00001 diff --git a/docs/html/guide/appendix/media-formats.jd b/docs/html/guide/appendix/media-formats.jd index a3cc0ff09692..db5a15e10126 100644 --- a/docs/html/guide/appendix/media-formats.jd +++ b/docs/html/guide/appendix/media-formats.jd @@ -2,8 +2,9 @@ page.title=Android Supported Media Formats @jd:body

      The Core Media Formats table below describes the media format support built into the Android platform. Note that any given mobile device may provide support for additional formats or file types not listed in the table.

      -

      For your convenience, the table T-Mobile G1 Media Formats describes additional media format details for the T-Mobile G1 device.

      +

      For your convenience, the table T-Mobile G1 Media Formats describes additional media formats and characteristics provided by the T-Mobile G1 device. Other devices may support additional formats not listed on this page.

      +

      As an application developer, you are free to make use of any media codec that is available on any Android-powered device, including those provided by the Android platform and those that are device-specific.

      Core Media Formats

      @@ -130,7 +131,7 @@ page.title=Android Supported Media Formats X X   -3GPP (.3gp) +3GPP (.3gp) and MPEG-4 (.mp4) @@ -151,9 +152,9 @@ page.title=Android Supported Media Formats -

      T-Mobile G1 Media Formats

      +

      T-Mobile G1 Media Formats and Characteristics

      -

      In addition to the core media formats supported in the Android platform, the T-Mobile G1 also supports the formats listed below.

      +

      The table below lists media formats supported by the T-Mobile G1 in addition to those provided as part of the Android platform. This table also details G1-specific performance characteristics of some Android core media formats.

      @@ -163,7 +164,7 @@ page.title=Android Supported Media Formats - + @@ -178,13 +179,13 @@ page.title=Android Supported Media Formats
    4. L2: <=161 kbps <=48 kHz
    5. L3: <385 kbps <=48 kHz
    6. -Mono and stereo profiles with 16-bits per sample. Decoder does not support WMA Pro, Lossless, or Speech codecs. +Mono and stereo profiles with 16-bits per sample. Decoder does not support WMA Pro, Lossless, or Speech codecs. - + @@ -192,23 +193,17 @@ Mono and stereo profiles with 16-bits per sample. Decoder does not support WMA P - - - - - - - - - +
      Format Encoder DecoderDetailsComment File Type(s) Supported
      Windows Media Audio (.wma)
      VideoVideo WMV   XWindows Media Video (.wmv)
      H.263XX 3GPP (.3gp) and MPEG-4 (.mp4)
      H.264 AVC   XLimited to baseline profile up to 480x320, and 600 kbps average bitrate for the video stream.On the G1, this decoder is limited to baseline profile up to 480x320, and 600 kbps average bitrate for the video stream. 3GPP (.3gp) and MPEG-4 (.mp4)
      -

      Note that Windows Media codecs are not part of the Android platform and require special licensing from Microsoft or an authorized developer such as Packet Video.

      + + + diff --git a/docs/html/guide/developing/eclipse-adt.jd b/docs/html/guide/developing/eclipse-adt.jd index 75f3d78f4809..3b3bb38a476d 100644 --- a/docs/html/guide/developing/eclipse-adt.jd +++ b/docs/html/guide/developing/eclipse-adt.jd @@ -38,15 +38,15 @@ manifest and resource files.

      To begin developing Android applications in the Eclipse IDE with ADT, you first need to download the Eclipse IDE and then download and install the ADT plugin. To do so, follow the -steps given in Installing +steps given in Installing the ADT Plugin.

      If you are already developing applications using a version of ADT earlier than 0.9, make sure to upgrade to the latest version before continuing. See the guide to -Update Your Eclipse ADT Plugin.

      +Updating Your Eclipse ADT Plugin.

      Note: This guide assumes you are using the latest version of -the ADT plugin (0.9). While most of the information covered also applies to previous +the ADT plugin. While most of the information covered also applies to previous versions, if you are using an older version, you may want to consult this document from the set of documentation included in your SDK package (instead of the online version).

      @@ -138,9 +138,9 @@ folders and files in your new project:

      Wait! Before you can run your application on the Android Emulator, you must create an Android Virtual Device (AVD). An AVD is a configuration that specifies the Android platform to be used on the emulator. -You can read more about AVDs in the Developing -Overview, but if you just want to get started, follow the simple guide below to create -an AVD.

      +You can read more in the Android Virtual +Devices document, but if you just want to get started, follow the simple guide below to +create an AVD.

      If you will be running your applications only on actual device hardware, you do not need an AVD — see diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs index a044ceaecd3b..da4a2c33c5cf 100644 --- a/docs/html/guide/guide_toc.cs +++ b/docs/html/guide/guide_toc.cs @@ -146,7 +146,9 @@

    7. Designing for Performance
    8. diff --git a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd new file mode 100644 index 000000000000..e2fc89c6ddba --- /dev/null +++ b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd @@ -0,0 +1,1238 @@ +page.title=Activity and Task Design Guidelines +@jd:body + +
      +
      + +

      Activity and task design quickview

      + +
        +
      • Activities are the main building blocks of Android applications.
      • +
      • In addition to writing your own activities, you are free to re-use activities from many other applications through intents.
      • +
      • You can enable activities in your application to be started from intents in other applications.
      • +
      • In nearly all cases, the activity stack just works as expected.
      • + In a couple of cases you might need to ensure the right thing happens by setting a string or flag. +
      + +

      In this document

      + +
        +
      1. Applications, Activities, Activity Stack and Tasks +
      2. +
      3. A Tour of Activities and Tasks +
          +
        1. Starting an Activity from Home
        2. +
        3. Navigating Away from an Activity
        4. +
        5. Re-using an Activity
        6. +
        7. Replacing an Activity
        8. +
        9. Multitasking
        10. +
        11. Launching from Two Entry Points
        12. +
        13. Intents
        14. +
        15. Switching Between Tasks
        16. +
        +
      4. +
      5. Design Tips +
          +
        1. Don't specify intent filters in an activity that won't be re-used
        2. + +
        3. Handle case where no activity matches
        4. +
        5. Consider how to launch your activities
        6. +
        7. Allow activities to add to current task
        8. +
        9. Notifications should let user easily get back
        10. +
        11. Use the notification system
        12. +
        13. Don't take over BACK key unless you absolutely need to
        14. +
        +
      6. +
      + +

      See also

      + +
        +
      1. Application Fundamentals
      2. +
      + +
      +
      + +

      + This document describes core principles of the Android application + framework, from a high-level, user-centric perspective useful to + interaction and application designers as well as application + developers. +

      + +

      + It illustrates activities and tasks with examples, and describes some + of their underlying principles and mechanisms, such as navigation, + multitasking, activity re-use, intents, and the activity stack. + The document also highlights design decisions that are available to you + and what control they give you over the UI of your application. +

      + +

      + This document draws examples from several Android applications, + including default applications (such as Dialer) and Google + applications (such as Maps). You can try out the examples yourself in + the Android emulator or on an Android-powered device. If you are using + a device, note that your device may not offer all of the example + applications used in this document. +

      + +

      + Be sure to look at the Design Tips section + for guidelines, tips, and things to avoid. This document is a + complement to Application Fundamentals, + which covers the underlying mechanics for programmers. +

      + +

      Applications, Activities, Activity Stack and Tasks

      + +

      + Four fundamental concepts in the Android system that are helpful for you to understand are: +

      + +
        +
      • Applications +
      • Activities +
      • Activity Stack +
      • Tasks +
      + +

      Applications

      + +

      + An Android application typically consists of one or more + related, loosely bound activities for the user to interact with, typically bundled up + in a single file (with an .apk suffix). Android ships with a rich set + of applications that may include email, calendar, browser, maps, text + messaging, contacts, camera, dialer, music player, settings and + others. +

      + +

      + Android has an application launcher available at the Home screen, + typically in a sliding drawer which displays applications as icons, + which the user can pick to start an application. +

      + + +

      Activities

      + +

      + Activities are the main building blocks of Android + applications. When you create an application, you can assemble it from + activities that you create and from activities you re-use from other + applications. These activities are bound at runtime, so that newly + installed applications can take advantage of already installed + activities. Once assembled, activities work together to form a + cohesive user interface. An activity has a distinct visual user + interface designed around a single, well-bounded purpose, such as + viewing, editing, dialing the phone, taking a photo, searching, + sending data, starting a voice command, or performing some other type + of user action. Any application that presents anything on the display + must have at least one activity responsible for that display. +

      + +

      + When using an Android device, as the user moves through the user + interface they start activities one after the other, totally oblivious + to the underlying behavior — to them the experience should be + seamless, activity after activity, task after + task. +

      + +

      + An activity handles a particular type of content (data) and accepts a + set of related user actions. In general, each activity has a + lifecycle that is independent of the other + activities in its application or task — each activity is + launched (started) independently, and the user or system can start, + run, pause, resume, stop and restart it as needed. Because of this + independence, activities can be re-used and replaced by other + activities in a variety of ways. +

      + +

      + The Dialer application is an example of an application that consists + basically of four activities: dialer, contacts list, view contact, and + new contact, as shown in the following screenshots: +

      + + + + + + + + + + +
      + +
      + Dialer +
      +
      + +
      + Contacts +
      +
      + +
      + View Contact +
      +
      + +
      + New Contact +
      +
      + +

      + Here are other examples of applications and the activities they might contain: +

      + +
        +
      • + Email - activities to view folders, view list of messages, + view a message, compose a message, and set up an account +
      • +
      • + Calendar - activities to view day, view week, view month, view + agenda, edit an event, edit preferences, and view an alert +
      • +
      • + Camera - activities for running the camera, viewing the list + of pictures, viewing a picture, cropping a picture, running + the camcorder, viewing the list of movies, and viewing a movie +
      • +
      • + Game - one activity to play the game, typically another for setup +
      • +
      • + Maps - one activity to view a location on a map, a second for lists + (such as turn list or friend list), and a third for details + (friend location, status, photo) +
      • +
      + + +

      + An activity is the most prominent of four components of an + application. The other components are service, content provider and + broadcast receiver. For more details on activities, see Activity in + Application Components. +

      + + +

      Activity Stack

      + +

      + As the user moves from activity to activity, across applications, the + Android system keeps a linear navigation history of activities the + user has visited. This is the activity stack, also known as the + back stack. In general, when a user starts a new activity, it is added + to the activity stack, so that pressing BACK displays the previous + activity on the stack. However, the user cannot use the BACK key to go + back further than the last visit to Home. The adding of an activity to + the current stack happens whether or not that activity begins a new + task (as long as that task was started + without going Home), so going back can let the user go back to + activities in previous tasks. The user can get to tasks earlier than + the most recent Home by selecting its root activity from the + application launcher, a shortcut, or the "Recent tasks" screen. +

      + +

      + Activities are the only things that can be added to the activity stack + — views, windows, menus, and dialogs cannot. That is, when + designing the navigation, if you have screen A and you want the user + to be able go to a subsequent screen B and then use the BACK key to go + back to screen A, then the screen A needs to be implemented as an + activity. The one exception to this rule is if your application + and manages the navigation itself. +

      + + + +

      Tasks

      + +

      + A task is the sequence of activities the user follows to + accomplish an objective, regardless of which applications the + activities belong to. Until a new task is explicitly specified (see + "Interrupting the Task"), all activities the user starts are + considered to be part of the current task. It's notable that these + activities can be in any application — that is, all in the same + application or in different ones. That is, a task that starts out in + contacts can continue, by choosing an email address, to an email + activity and then, by attaching a file, to a picture gallery to pick + from. Contacts, email and picture gallery are all separate + applications. +

      + +

      + The activity that starts a task is called the root activity. + It is often, but not necessarily, started from the application + launcher, Home screen shortcut or "Recent tasks" switcher (a long + press on Home on some devices). The user can return to a task by + choosing the icon for its root activity the same way they started the + task. Once inside a task, the BACK key goes to previous activities in + that task. The activity stack is made up of one or more tasks. +

      + +

      + Here are some examples of tasks: +

      + +
        +
      • + Send a text message with an attachment +
      • +
      • + View a YouTube video and share it by email with someone else +
      • +
      + +

      + Interrupting the Task - An important property of a task is that + the user can interrupt what they're doing (their task) to perform a + different task, then are able to return to where they left off to + complete the original task. The idea is that users can run multiple + tasks simultaneously and switch between them. There are two primary + ways to jump off to that other task — in both cases the user + should be able to return to where they were before the interruption: +

      + + +
        +
      • + User is interrupted by a notification – a notification appears and the user wants to act on it +
      • +
      • + User deciding to perform another task – user just presses Home and starts an application +
      • +
      + +

      + Of course, there are exceptions to the rules. Beyond the two ways just + mentioned, there is a third way to start a task, and that is by + starting an activity that defines itself as a new task. Maps and + Browser are two applications that do this. For example, choosing an + address in an email starts the Maps activity as a new task, and + choosing a link in an email starts the Browser activity as a new + task. In these cases, the BACK key will return to the previous + activity in a different task (Email), because it was not started from + Home. +

      + + +

      A Tour of Activities and Tasks

      + +

      + The following examples illustrate basic principles for applications, + activities, the activity stack, the BACK key, tasks and intents. It + shows how the system responds to user actions such as starting + activities and switching between tasks. With most of these examples + you can follow along, launching activities on your device as + indicated. +

      + + +

      Starting an Activity from Home

      + +

      + Home is the starting place for most applications. (Some applications + can be launched only from other applications.) When the user touches + an icon in the application launcher (or a shortcut on the Home + screen), the main activity for that application is launched into the + foreground where it has user focus. As shown in the following figure, + the user action of going Home and touching the Email icon launches the + List Messages activity of the Email application. The Home activity + remains stopped in the background, ready to restart when called on by + the user. +

      + +

      + +

      + + + +

      + An activity can keep or lose its state depending on how the user + leaves the activity — by the HOME or BACK key. +

      + +

      + By default, pressing the BACK key finishes (destroys) the current + activity and displays the previous activity to the user. In the + following figure, the user starts email by touching the Email icon in + the Home screen, which displays a list of email messages. The user + scrolls down the list (changing its initial state). Pressing BACK + destroys the List Messages activity and returns to the previous + activity, which is Home. If the user re-launches Email, it would + re-load the messages and display its initial, non-scrolled state. +

      + +

      + +

      + +

      + In the above example, pressing BACK goes to Home because it was the + last activity the user was viewing. But if the user had gotten to List + Message from some other activity, then pressing BACK would have + returned there. +

      + +

      + By contrast, the next figure shows the user leaving List Messages by + pressing HOME instead of BACK — the List Messages activity is + stopped and moved to the background rather than being + destroyed. Starting Email again from its icon would simply bring the + List Messages activity to the foreground (changing it from stopped to + running) in the same scrolled state the user last left it. +

      + +

      + +

      + +

      + Exceptions. Some background activities return to their initial + screen (they lose any state, such as scrolling) when they are brought + to the foreground. This is true for Contacts and Gallery. If the user + chooses Home > Contacts then chooses a contact, they are viewing + the details of a contact. If they start again by choosing Home > + Contacts, they are presented with the initial list of contacts rather + than the contact they were last viewing. Contacts is designed this way + because this initial screen is the main entry point for the + application with four tabs for accessing the full range of features. +

      + +

      + In addition, not all activities have the behavior that they are + destroyed when BACK is pressed. When the user starts playing music in + the Music application and then presses BACK, the application overrides + the normal back behavior, preventing the player activity from being + destroyed, and continues playing music, even though its activity is no + longer visible — as a visual substitute, the Music application + places a notification in the status bar so the user still has an easy + way to get to the application to stop or control the music. Note that + you can write an activity to stop when its screen is no longer + visible, or to continue running in the background — the latter + was chosen for the music player. +

      + + +

      Re-using an Activity

      + +

      + When activity A starts activity B in a different application, activity + B is said to be re-used. This use case normally takes place + because activity A is lacking a capability and can find it in activity B. +

      + +

      + Contacts Re-Uses Gallery to Get a Picture - The Contacts + activity has a field for a picture of a contact, but the Gallery is + normally where pictures are kept. So Contacts can re-use the Gallery + activity to get a picture. This is a good example of re-use of the + Gallery activity. The following figure illustrates the sequence of + activities to do this (up to crop). This is how it's done: The user + chooses Contacts, selects the contact for viewing, chooses MENU > + Edit contact and touches the picture field, which launches the Gallery + activity. The user then chooses the picture they want, crops and saves + it. Saving it causes the picture to be inserted into the picture field + in the contact. +

      + +

      + Notice the Gallery returns a picture to the Contacts application that + started it. The next example illustrates re-use of an activity that + does not return a result. Also notice that the following figure is + illustrates the navigation history through the activities, or the + activity stack — the user can back up through each activity all + the way to Home. +

      + +

      + When designing an application, it's good to think about how it can + re-use activities in other applications, and how your activities might + be re-used by other applications. If you add an activity with the same + intent filter as an + exisiting activity, then the system presents the user with a choice + between the activities. +

      + +

      + +

      + +

      + Gallery Re-Uses Messaging for Sharing a Picture - Sharing is + another good example of one application re-using an activity from a + different application. As shown in the following figure, the user + starts Gallery, picks a picture to view, chooses MENU > Share, and + picks "Messaging". This starts the Messaging activity, creates a new + message and attaches the original picture to it. The user then fills + in the "To" field, writes a short message and sends it. User focus + remains in the Messaging program. If the user wants to go back to the + Gallery, they must press the BACK key. (The user can back up through + each activity all the way to Home.) +

      + +

      + In contrast to the previous example, this re-use of the Messaging + activity does not return anything to the Gallery activity that started it. +

      + +

      + +

      + +

      + Both of these examples illustrate tasks — a sequence of + activities that accomplish an objective. Each case uses activities + from two different applications to get the job done. +

      + + +

      Replacing an Activity

      + +

      + This is the use case where activity A replaces activity B in a + different application. This situation normally happens because + activity A is better at doing the job than activity B. In other words, + A and B are equivalent enough that A can replace B. This case stands + in contrast with re-using an activity, where A and B are quite + different activities and supplement each other. +

      + +

      + In this example, the user has downloaded a replacement for the Phone + Ringtone activity, called Rings Extended. Now when they go to + Settings, Sound & Display, Phone Ringtone, the system presents + them with a choice between the Android System's ringtone activity and + the new one. This dialog box has an option to remember their choice + "Use by default for this action". When they choose "Rings Extended", + that activity loads, replacing the original Android ringtone activity. +

      + +

      + +

      + +

      Multitasking

      + +

      + As previously noted, when an activity has been launched, the user can + go to Home and launch a second activity without destroying the first + activity. This scenario demonstrates launching the Maps application. +

      + +
        +
      • + State 1 - The user launches the View Map activity and searches + for a map location. Let's say the network is slow, so the map is + taking an unusually long taking time to draw. +
      • +
      +
        +
      • + State 2 - The user wants to do something else while they're + waiting, so they press HOME, which does not interrupt the map's + network connection and allows the map to continue loading in the + background. + +

        + Note that when you write an activity, you can make it stop or + continue running when it is moved to the background (see + onStop() in Activity Lifecycle). + For activities that download data from the network, it's recommended + to let them continue downloading so the user can multi-task. +

        + +
      • + +
      • + State 3 - The map activity is now running in the background, + with Home in the foreground. The user then launches the Calendar + activity, which launches into the foreground, taking user focus, + where they view today's calendar (as indicated by the heavy + outline). +
      • +
      + +

      + +

      +
        +
      • + State 4 - The user presses Home, then Maps to return to the map, which by now has fully loaded. +
      • +
      + +

      + +

      + +

      + The application launcher at Home has launched "View Map" and "Day + View" activities into separate tasks, hence the system is + multitasking — running multiple tasks. +

      + + +

      Launching from Two Entry Points

      + +

      + Every application must have at least one entry point — a way + for the user or system to access activities inside the + application. Each icon in the application launcher at home + represents an entry point. Applications can also from another + application. Each activity is a potential entry point into the + application.  +

      + +

      + The phone application has two entry points: Contacts and Dialer. A + user entering from Contacts can choose a phone number to launch the + Dialer. As shown in the following figure, a user could choose the + Contacts icon to launch the Contacts activity, then pick a phone + number to launch the Dialer activity and dial the phone. +

      + +

      + Once the user is inside the application, they can access other + activities, such as New Contact and Edit Contact, through tabs, menu + items, list items, onscreen buttons, or other user interface + controls. +

      + +

      + +

      + +

      Intents

      + +

      + When the user takes an action on some data, such as touching a + mailto:info@example.com link, they are actually initiating an Intent + object, or just an intent, which then gets resolved to a + particular component (we consider only activity components here). + So, the result of a user touching a mailto: link is an Intent object + that the system tries to match to an activity. If that Intent object was + written explicitly naming an activity (an explicit intent), + then the system immediately launches that activity in response to the user + action. However, if that Intent object was written without naming an + activity (an implicit intent), the system compares the Intent + object to the intent filters of available activities. If more + than one activity can handle the action and data, the system + displays an activity chooser for the user to choose from. +

      + +

      + This example of touching the mailto: link is shown in the following + figure. If the device has two email applications set up, when a user + touches a mailto: email address on a web page, the result is an + Intent object which displays a dialog box with a choice between the + two activities to compose an email (Gmail and Email). +

      + +

      + +

      + +

      + Here are some examples of Intent objects and the activities they resolve to: +

      + +
        +
      • + View the list of contacts - resolves to a contact list viewer activity +
      • + +
      • + View a particular contact - resolves to a contact viewer activity +
      • + +
      • + Edit a particular contact - resolves to a contact editor activity +
      • + +
      • + Send to a particular email - resolves to an email activity +
      • + +
      • + Dial a phone number - resolves to a phone dialer activity +
      • + +
      • + View the list of images - resolves to an image list viewer activity +
      • + +
      • + View a particular image - resolves to an image viewer activity +
      • + +
      • + Crop a particular image - resolves to an image cropper activity +
      • +
      + +

      + Notice that an Intent object specifies two things, an action and data: +

      + +
        +
      • + A generic action to be performed. In these examples: view, edit, dial or crop +
      • + +
      • + The specific data to be acted on. In these examples: the list of contacts, a particular contact, a phone number, the list of images, or a particular image +
      • +
      + +

      + Note that any user action to start an activity from the + application launcher at Home is an explicit intent to a specific + activity. Likewise, some activities launch private activities + within their application as explicit intents so no other activity + can access them. +

      + +

      + For more on intents, see {@link android.content.Intent Intent class} and + intent filters. +

      + + +

      Switching Between Tasks

      + +

      + This scenario shows how the user can switch between two tasks. In + this example, the user writes a text message, attaches a picture, + but before they are done they glance at their calendar. They then + return to where they left off, attaching the picture and sending the + message. +

      + +
        +
      1. + Start first task. You want to send a text message and attach a photo. You would choose: + +

        + Home > Messaging > New message > MENU > Attach + > Pictures. This last step launches the picture gallery + for picking a photo. Notice that picture gallery is an + activity in a separate application. +

        + + + + + + + + + + +
        + + + + + +
        + +

        + At this point, before you have picked a picture, you decide + to stop and glance at your calendar, which is a separate + task. Because the current activity has no button to go + directly to the Calendar, you need to start from Home. +

        + +
      2. +
      3. + Start second task. You choose Home > Calendar to + look at a calendar event. Calendar launches from Home as a new + task because the application launcher creates a new task for + each application it launches. + +

        + +

        +
      4. + +
      5. + Switch to first task and complete it. When done looking + at the Calendar, you can return to attaching the picture by + starting the root activity again for that task: choose Home + > Messaging, which takes you not to Messaging, but directly + to the Picture gallery, where you left off. You can then pick + a photo, which is added to the message, you send the message + and you're done with the first task. + + + + + + + + + + + + + +
        + + + + +         +
        +
      6. +
      + + +

      Design Tips

      + +

      + The following are tips and guidelines for application designers and developers. +

      + +

      When writing an activity that won't be re-used, don't specify intent filters — use explicit intents

      + +

      + If you're writing an activity that you don't want other activities + to use, be sure not to add any intent filters to that activity. This + applies to an activity that will be launched only from the + application launcher or from other activities inside your + application. Instead, just create intents specifying the explicit + component to launch — that is, explicit intents. In this case, + there's just no need for intent filters. Intent filters are + published to all other applications, so if you make an intent + filter, what you're doing is publishing access to your activity, + which means you can cause unintentional security holes. +

      + + + +

      When reusing an activity owned by others, handle the case where no activity matches

      + +

      + Your applications can re-use activities made available from other + applications. In doing so, you cannot presume your intent will always + be resolved to a matching external activity — you must handle the case + where no application installed on the device can handle the intent. +

      + +

      + You can either test that an activity matches the intent, which you can do + before starting the activity, or catch an exception if starting the + activity fails. Both approaches are descibed in the blog posting + Can + I use this Intent?. +

      + +

      + To test whether an intent can be resolved, your code can query the package manager. + The blog post provides an example in the isIntentAvailable() helper method. + You can perform this test when initializing the user interface. + For instance, you could disable the user control that initiates + the Intent object, or display a message to the user that lets them go + to a location, such as the Market, to download its application. + In this way, your code can start the activity (using either startActivity() + or startActivityForResult()) only if the intent has tested to resolve + to an activity that is actually present. +

      + +

      Consider how you want your activities to be launched or used by other applications

      + +

      + As a designer or developer, it's up to you to determine how users + start your application and the activities in it. As an application + is a set of activities, the user can start these activities from + Home or from another application. +

      + +
        +
      • + Launch your main activity from an icon at Home - If + your application can run standalone, it should probably be + started by the user touching an icon in application + launcher (typically implemented as a sliding drawer on the + Home screen), or from a shortcut icon on the Home screen, or + from the task switcher. (The mechanism for this is for the + activity to have an + intent filter with action MAIN and + category LAUNCHER.) +
      • +
      + +
        +
      • + Launch your activity from within another application - + Perhaps your activities are meant for re-use. For example, + many applications have data they want to share with other + users. Activities that can share data with other users include + email, text messaging and uploading to a public website.

        + If one or more of your activities can be an alternative to an + existing activity in another application, you can make it + available to users at the point they request that + activity. For example, if your activity can send data to + others (such as by email, text messaging, or uploading), + consider setting up that activity to appear as a choice to the + user. To give a specific example, Gallery enables a user to + view and share pictures. When the user chooses "Share" from + the menus, the system compares the "Share" request (an Intent + object) to available activities (by looking at their intent + filters) and displays choices to share. In this case, it + matches Email, Gmail, Messaging and Picassa. If your activity + can send a picture or upload it to a website, all it needs to + do is make itself available for sharing (by setting its intent + filter). +

        +

        + Another activity can start your activity either with or without expecting a result back.  +

        +
      • + +
          +
        • + Start an activity expecting a result - This approach + is closed loop, where the activity being started must either + return a valid result or be canceled. In the previous + examples of sharing a photo from a Gallery, the user ends up + back in the Gallery after completing the send or upload + procedure. These are examples of starting an activity + external to the Gallery. (Such an activity is started with + {@link + android.app.Activity#startActivityForResult(android.content.Intent, + int) startActivityForResult()}.) +
        • + +
        • + Start an activity not expecting a result - This + approach is open-ended. An example is choosing an house + address in an email message (or web page), where the Maps + activity is started to map the location. No result from maps + is expected to be returned to the email message; the user + can return by pressing the BACK key. (Such an activity is + started with {@link + android.content.Context#startActivity(android.content.Intent) + startActivity()}.) +
        • +
        + +
      • + Launch your activity only from within another + application - The previous cases of sharing by way of + Email, Gmail, Messaging and Picassa (from within Gallery) are + all activities that can also be started from icons in the + application launcher at Home. In contrast, the activities for + cropping a picture and attaching a file cannot be started from + Home, because they do not stand alone and require a + context.  +
      • + +

        + In fact, not all applications have icons and can be started from + Home. Take for example a small app that is infrequently used and + replaces existing functionality, that already has a natural entry + point inside an existing application. For example, an Android phone + typically has a built-in ringtone picker that can be selected from + the sound settings of the Settings application. A custom ringtone + picker application that you write could be launched by an intent + identical to the built-in ringtone picker. At the point where the + user chooses "Phone ringtone", they are presented with a dialog + letting them choose between "Android System" and your ringtone + picker (and letting them save their choice) as shown in the + following figure. A ringtone is something you set infrequently, and + already has a well-defined starting point, so probably does not need + an application icon at Home. +

        + +

        + +

        + +
      • + Launch two or more main activities within a single + application from separate icon at Home - As we have + defined it, all the code in a single .apk file is considered + to be one application. You can write an application + that contains two main activities launchable from Home. +
      • + +

        + The Camera.apk application is a good example of an application that + contains two independent main activities — Camera and + Camcorder — that each have their own icons in application + launcher, that can be launched separately, and so appear to the user + as separate applications. They both share use of the same lens, and + both store their images (still and moving) in the Gallery.  +

        + +

        + In order for your application to contain two different, independent + activities launchable from Home, you must define them to be + associated with different tasks. (This means setting the main + activity for each task to a different task affinity — in this case, + "com.android.camera" and "com.android.videocamera".) +

        + +

        + Contacts and Dialer are another example of two main activities + launchable from Home that reside in the same application. +

        + +
      • + Making your application available as a widget - An + application can also display a portion of itself as an app widget, embedded in Home or another + application, and receive periodic updates. +
      • + +
      + + +

      Allow your activities to be added to the current task

      + +

      + If your activities can be started from another application, allow + them to be added to the current task + (or an existing task it has an affinity with). Having activities + added to a task enables the user to switch between a task that + contains your activities and other tasks. Exceptions are + your activities that have only one instance.  +

      + +

      + For this behavior, your activity should have a launch + mode of standard or singleTop rather than singleTask or + singleInstance. These modes also enable multiple instances of your + activity to be run. +

      + + +

      Notifications should let the user easily get back to the previous activity

      +

      + Applications that are in the background or not running can have + services that send out notifications to the user letting them know about + events of interest. Two examples are Calendar, which can send out notifications of + upcoming events, and Email, which can send out notifications when new + messages arrive. One of the user interface guidelines is that when the + user is in activity A, gets a notification for activity B and + picks that notification, when they press the BACK key, they should + go back to activity A.  +

      + +

      + The following scenario shows how the activity stack should work + when the user responds to a notification. +

      + +
        +
      1. + User is creating a new event in Calendar. They realize they + need to copy part of an email message into this event +
      2. +
      3. + The user chooses Home > Gmail +
      4. +
      5. + While in Gmail, they receive a notification from Calendar for an upcoming meeting +
      6. +
      7. + So they choose that notification, which takes them to a + dedicated Calendar activity that displays brief details of the + upcoming meeting +
      8. +
      9. + The user chooses this short notice to view further details +
      10. +
      11. + When done viewing the event, the user presses the BACK + key. They should be taken to Gmail, which is where they were + when they took the notification +
      12. +
      + +

      +This behavior doesn't necessarily happen by default. +

      + +

      +Notifications generally happen primarily in one of two ways: +

      + +
        +
      • + The chosen activity is dedicated for notification only - + For example, when the user receives a + Calendar notification, choosing that + notification starts a special activity that displays a list + of upcoming calendar events — this view is available only + from the notification, not through the Calendar's own user + interface. After viewing this upcoming event, to ensure that + the user pressing the BACK key will return to the activity + the user was in when they picked the notification, you would + make sure this dedicated activity does not have the same + task affinity as the Calendar or any other activity. (You do + this by setting task affinity to the empty string, which + means it has no affinity to anything.) The explanation for + this follows. + +

        + Because of the way tasks work, if the taskAffinity of the + dedicated activity is kept as its default, then pressing the + BACK key (in step 6, above) would go to Calendar, rather + than Gmail. The reason is that, by default, all activities + in a given application have the same task + affinity. Therefore, the task affinity of the dedicated + activity matches the Calendar task, which is already running + in step 1. This means in step 4, choosing the notification + brings the existing Calendar event (in step 1) forward and + starts the dedicated activity on top of it. This is not + what you want to have happen. Setting the dedicated + activity's taskAffinity to empty string fixes this. +

        +
      • + +
      • + The chosen activity is not dedicated, but always comes to + the foreground in its initial state - For example, in + response to a notification, when the Gmail application comes + to the foreground, it always presents the list of conversations. + You can ensure this happens by setting a "clear top" flag in the + intent that the notification triggers. This ensures that when the + activity is launched, it displays its initial activity, preventing + Gmail from coming to the foreground in whatever state the user last + happened to be viewing it. (To do this, you put {@link + android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP + FLAG_ACTIVITY_CLEAR_TOP} in the intent you pass to startActivity()). +
      • +
      + +

      + There are other ways to handle notifications, such as bringing the + activity to the foreground, set to display specific data, such as + displaying the text message thread for the person who just sent a + new text message. +

      + +

      + A notification always starts an activity as a new task (that is, it + puts FLAG_ACTIVITY_NEW_TASK in the intent it + passes to startActivity()). This is done because interruptions to a + task should not become part of that task. +

      + +

      Use the notification system — don't use dialog boxes in place of notifications

      + +

      + If your background service needs to notify a user, use the standard + notification system — don't use a dialog or toast to notify + them. A dialog or toast would immediately take focus and interrupt + the user, taking focus away from what they were doing: the user + could be in the middle of typing text the moment the dialog appears + and could accidentally act on the dialog. Users are used to dealing + with notifications and can pull down the notification shade at their + convenience to respond to your message. +

      + +

      Don't take over the BACK key unless you absolutely need to

      + +

      + As a user navigates from one activity to the next, the system adds + them to the activity stack. This forms a navigation history that is + accessible with the BACK key. Most activities are relatively limited + in scope, with just one set of data, such as viewing a list of + contacts, composing an email, or taking a photo. But what if your + application is one big activity with several pages of content and + needs finer-grained control of the BACK key? Examples of such Google + applications are the Browser, which can have several web pages open + at once, and Maps, which can have several layers of geographic data + to switch between. Both of these applications take control of the + BACK key and maintain their own internal back stacks that operate + only when these applications have focus. +

      + +

      + For example, Maps uses layers to present different + information on a map to the user: displaying the location of a + search result, displaying locations of friends, and displaying a + line for a street path providing direction between points. Maps + stores these layers in its own history so the BACK key can return to + a previous layer. +

      + +

      + Similarly, Browser uses browser windows to present different + web pages to the user. Each window has its own navigation history, + equivalent to tabs in a browser in a desktop operating system (such + as Windows, Macintosh or Linux). For example, if you did a Google + web search in one window of the Android Browser, clicking on a link + in the search results displays a web page in that same window, and + then pressing BACK would to the search results page. Pressing + BACK goes to a previous window only if the current window was + launched from that previous window. If the user keeps pressing + back, they will eventually leave the browser activity and return + Home. +

      + diff --git a/docs/html/guide/practices/ui_guidelines/icon_design.jd b/docs/html/guide/practices/ui_guidelines/icon_design.jd new file mode 100644 index 000000000000..155684a25b93 --- /dev/null +++ b/docs/html/guide/practices/ui_guidelines/icon_design.jd @@ -0,0 +1,1406 @@ +page.title=Icon Design Guidelines +@jd:body + +
      +
      + +

      Icon design quickview

      + +
        +
      • You can use several types of icons in an Android application.
      • +
      • Your icons should follow the specification in this document.
      • +
      • A set of standard icons is provided by the Android platform. Your +application can use the standard icons by referencing them as resources.
      • +
      + +

      In this document

      + +
        +
      1. Launcher icon
      2. +
      3. Menu icon
      4. +
      5. Status bar icon
      6. +
      7. Tab icon
      8. +
      9. Dialog icon
      10. +
      11. List view icon
      12. + +
      13. General guidelines
      14. +
      15. Using the Icon Templates Pack
      16. +
      17. Icon appendix +
          +
        1. Launcher icons
        2. +
        3. Menu icons
        4. +
        5. Status bar icons
        6. +
        +
      18. + +
      + +

      See also

      + +
        +
      1. Android Icon +Templates Pack »
      2. +
      + +
      +
      + +

      Creating a unified look and feel throughout a user interface adds value to +your product. Streamlining the graphic style will also make the UI seem more +professional to the user.

      + +

      This document shows you how to create icons for various parts +of your application’s user interface that fit the style set by the Android UI +team. Following these guidelines will help you to create a polished and unified +experience for the user.

      + +

      To get started creating conforming icons more quickly, you can download +the Android Icon Templates Pack. For more information, see +Using the Android Icon Template Pack.

      + +

      Launcher icon

      + +

      A launcher icon is the graphic that represents your application on an Android +device’s Home screen. It is a simplified 3D icon with a fixed perspective. The +required perspective is shown in Figure 1.

      + +

      Structure

      + +
        +
      • The base of a launcher icon can face either the top view or the front +view.
      • + +
      • The majority of a launcher icon’s surface should be created using the +launcher icon color palette. To add emphasis, use +one or more bright accent colors to highlight specific characteristics.
      • + +
      • All launcher icons must be created with rounded corners to make them look +friendly and simple—as shown in Figure 2.
      • + +
      • All dimensions specified are based on a 250x250 pixel artboard size +in a vector graphics editor like Adobe Illustrator, where the icon fits within +the artboard boundaries.
      • + +
      • Final art must be scaled down and exported as a transparent 48x48 px +PNG file using a raster image editor such as Adobe Photoshop.
      • + +
      • Templates for creating launcher icons in Adobe Illustrator and Photoshop are +available in the Icon Templates Pack.
      • +
      + + + + + + +
      + A view of
+launcher icon corners and perspective angles + +
      +

      Figure 1. Perspective angles for launcher icons (90° is +vertical).

      +
      + + + + + + + + + + + + +
      1.92°
      2.92°
      3.173°
      4.171°
      5.49°
      6.171°
      7.64°
      8.97°
      9.75°
      10.93°
      11.169°
      +
      +
      +
      +

      Figure 2. Rounded corners for launcher icons.

      +
      +
      + +

      Light, effects, and shadows

      + +

      Launcher icons are simplified 3D icons using light and shadows for +definition. A light source is placed slightly to the left in front of the icon, +and therefore the shadow expands to the right and back.

      + + + + + + +
      + A view of
+light, effects, and shadows for launcher icons. + +
      +

      Figure 3. Light, effects, and shadows for launcher icons.

      +
      + + + + + + +
      1.Edge highlight:white
      2.Icon shadow:black | 20px blur
      50% opacity | angle 67°
      3.Front part:Use light gradient from color palette
      4.Detail shadow:black | 10px blur
      75% opacity
      5. Side part:Use medium gradient from color palette
      +
      +
      +
      + + + + + + + +
      + +

      Launcher icon color palette

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Color palette, whiteWhite
      r 0 | g 0 | b 0
      Used for highlights on edges.
      Color palette, light gradientLight gradient
      1:  r 0 | g 0 | b 0
      2:  r 217 | g 217 | b 217
      Used on the front (lit) part of the icon.
      Color palette, medium gradienMedium gradient
      1:  r 190 | g 190 | b 190
      2:  r 115 | g 115 | b 115
      Used on the side (shaded) part of the icon.
      Color palette, dark gradientDark gradient
      1:  r 100 | g 100 | b 100
      2:  r 25 | g 25 | b 25
      Used on details and parts in the shade of the icon.
      Color palette, blackBlack
      r 255 | g 255 | b 255
      Used as base color in shadows.
      + +
      + +

      Step by step

      + +
        +
      1. Create the basic shapes with a tool like Adobe Illustrator, using the +angles described in Launcher icon: structure. +The shapes and effects must fit within a 250x250 pixel artboard.
      2. +
      3. Add depth to shapes by extruding them and create the rounded corners as +described for the launcher icon structure.
      4. +
      5. Add details and colors. Gradients should be treated as if there is a light +source placed slightly to the left in front of the icon.
      6. +
      7. Create the shadows with the correct angle and blur effect.
      8. +
      9. Import the icon into a tool like Adobe Photoshop and scale to fit an image +size of 48x48 px on a transparent background.
      10. +
      11. Export the icon at 48x48 as a PNG file with transparency enabled.
      12. +
      + +
      + + + +

      Menu icons are graphical elements placed in the pop-up menu shown to users +when they press the Menu button. They are drawn in a flat-front perspective. +Elements in a menu icon must not be visualized in 3D or perspective.

      + +

      Structure

      + +
        +
      • In order to maintain consistency, all menu icons must use the same +primary palette and the same effects. For more information, see the +menu icon color palette.
      • + +
      • Menu icons should include rounded corners, but only when logically +appropriate. For example, in Figure 3 the logical place for rounded corners is +the roof and not the rest of the building.
      • + +
      • All dimensions specified on this page are based on a 48x48 pixel artboard +size with a 6 pixel safeframe.
      • + +
      • The menu icon effect (the outer glow) described in Light, effects, and shadows can overlap the 6px safeframe, +but only when necessary. The base shape must always stay inside the +safeframe.
      • + +
      • Final art must be exported as a transparent PNG file.
      • + +
      • Templates for creating menu icons in Adobe Photoshop are available in the +Icon Templates Pack.
      • +
      + + + + + + +
      + A view of menu
+icon structure. + +
      +

      Figure 4. Safeframe and corner-rounding for menu +icons. Icon size is 48x48.

      +
      +
      + + + + +

      Menu icons are flat and pictured face on. A slight deboss and some other +effects, which are shown below, are used to create depth.

      + + + + + + +
      + A view of light, effects, and shadows for launcher icons. + +
      +

      Figure 5. Light, effects, and shadows for launcher icons.

      +
      + + + + + +
      1.Front part:Use fill gradient from primary color palette
      2.Inner shadow:black | 20 % opacity
      angle 90° | distance 2px
      size 2px
      3.Outer glow:white | 55% opacity
      spread 10% | size 3px
      5.Inner bevel:depth 1% | direction down size 0px
      angle 90° | altitude 10°
      highlight white 70% opacity
      shadow black 25% opacity
      +
      +
      +
      + + + + + + + +
      + + + + + + + + + + + + + + + + + + + +
      Color palette, whiteWhite
      r 0 | g 0 | b 0
      Used for outer glow and bevel highlight.
      Color palette, medium gradientFill gradient
      1:  r 163 | g 163 | b 163
      2:  r 120 | g 120 | b 120
      Used as color fill.
      Color palette, blackBlack
      r 255 | g 255 | b 255
      Used for inner shadow and bevel shadow.
      + +
      + + + +
        +
      1. Create the basic shapes using a tool like Adobe Illustrator.
      2. +
      3. Import the shape into a tool like Adobe Photoshop and scale to fit an image +of 48x48 px on a transparent background. Mind the safeframe.
      4. +
      5. Add the effects seen as described in Figure 5.
      6. +
      7. Export the icon at 48x48 as a PNG file with transparency enabled.
      8. +
      + +
      + + +

      Status bar icon

      + +

      Status bar icons are used to represent notifications from your application in +the status bar. Graphically, they are very similar to menu icons, but are +smaller and higher in contrast.

      + +

      Structure

      + +
        +
      • Rounded corners must always be applied to the base shape and to the details +of a status bar icon shown Figure 7.
      • + +
      • All dimensions specified are based on a 25x25 pixel artboard size with a 2 +pixel safeframe.
      • + +
      • Status bar icons can overlap the safeframe to the left and right when +necessary, but must not overlap the safeframe at the top and bottom.
      • + +
      • Final art must be exported as a transparent PNG file.
      • + +
      • Templates for creating status bar icons using Adobe Photoshop are available +in the Icon Templates Pack.
      • +
      + + + + + + +
      + A view of
+status bar icon structure. + +
      +

      Figure 6. Safeframe and corner-rounding for status bar +icons. Icon size is 25x25.

      +
      +
      + + +

      Light, effects, and shadows

      + +

      Status bar icons are slightly debossed, high in contrast, and pictured +face-on to enhance clarity at small sizes.

      + + + + + + +
      + A view of
+light, effects, and shadows for launcher icons. + +
      +

      Figure 7. Light, effects, and shadows for launcher icons.

      +
      + + + + + +
      1.Front part:Use fill gradient from primary color palette
      2.Inner bevel:depth 100% | direction down
      size 0px | angle 90° |
      altitude 30°
      highlight white 75% opacity
      shadow black 75% opacity
      3.Detail:white
      4.Disabled detail:grey gradient from palette
      + inner bevel: smooth | depth 1% | direction down | size 0px | angle 117° |
      altitude 42° | highlight white 70% | no shadow
      +
      +
      +
      + + + + + + + +
      + + + +

      Only status bar icons related to the phone function use full color; all other status bar icons should remain monochromatic.

      + + + + + + + + + + + + + + + + + + + + + + +
      Color palette, whiteWhite
      r 0 | g 0 | b 0
      Used for details within the icons and bevel highlight.
      Color palette, grey gradientGrey gradient
      1:  r 169 | g 169 | b 169
      2:  r 126 | g 126 | b 126
      Used for disabled details within the icon.
      Color palette, fill gradientFill gradient
      1:  1 r 105 | g 105 | b 105
      2:  r 10 | g 10 | b 10
      Used as color fill.
      Color palette, blackBlack
      r 255 | g 255 | b 255
      Used for bevel shadow.
      + +
      + + + +
        +
      1. In a tool like Adobe Photoshop, create the base shape within a 25x25 px +image on a transparent background. Mind the safeframe, and keep the upper and +lower 2 pixels free.
      2. +
      3. Add rounded corners as specified in Figure 6.
      4. +
      5. Add light, effects, and shadows as specified in Figure 7.
      6. +
      7. Export the icon at 25x25 as a PNG file with transparency enabled.
      8. +
      + +
      + + +

      Tab icon

      + +

      Tab icons are graphical elements used to represent individual tabs in a +multi-tab interface. Each tab icon has two states: unselected and selected.

      + +

      Structure

      + +
        +
      • Unselected tab icons have the same fill gradient and effects as menu icons, +but with no outer glow.
      • + +
      • Selected tab icons look just like unselected tab icons, but with a fainter +inner shadow, and have the same front part gradient as dialog icons.
      • + +
      • Tab icons have a 1 px safeframe which should only be overlapped for the edge +of the anti-alias of a round shape.
      • + +
      • All dimensions specified on this page are based on a 32x32 px artboard size. +Keep 1 px of padding around the bounding box inside the Photoshop template.
      • + +
      • Final art must be exported as a 32x32 px transparent PNG +file.
      • + +
      • Templates for creating tab icons in Adobe Photoshop are available in the +Icon Templates Pack.
      • +
      + + + + + + + + + + +
      + A view of
+unselected tab icon structure. + +
      +

      Figure 8. Safeframe and fill gradient for unselected tab +icons. Icon size is 32x32.

      +
      +
      + A view of
+selected tab icon structure. + +
      +

      Figure 9. Safeframe and fill gradient for tab icons in +selected state. Icon size is 32x32.

      +
      +
      + +

      Unselected tab icon

      + +

      Light, effects, and shadows

      + +

      Unselected tab icons look just like the selected tab icons, but with a +fainter inner shadow, and the same front part gradient as the dialog icons.

      + + + + + + +
      + A view
+of light, effects, and shadows for unselected tab icons. + +
      +

      Figure 10. Light, effects, and shadows for unselected +tab icons.

      +
      + + + + +
      1.Front part:gradient overlay | angle 90°
      bottom color: r 223 | g 223 | b 223
      top color: r 249 | g 249 | b 249
      bottom color location: 0%
      top color location: 75%
      2.Inner shadow:black | 10 % opacity | angle 90° distance 2px | size 2px
      3.Inner bevel:depth 1% | direction down | size 0px | angle 90° | altitude 10°
      highlight white 70% opacity
      shadow black 25% opacity
      +
      +
      +
      + + + + + + +
      + + + +
        +
      1. Create the basic shapes using a tool like Adobe Illustrator.
      2. +
      3. Import the shape to a tool like Adobe Photoshop and scale to fit an image of +32x32 px on a transparent background.
      4. +
      5. Add the effects seen in Figure 10 for the unselected state filter.
      6. +
      7. Export the icon at 32x32 as a PNG file with transparency enabled.
      8. +
      + +
      + +

      Selected tab icon

      + +

      The selected tab icons have the same fill gradient and effects as the menu +icon, but with no outer glow.

      + + + + + + +
      + A view of
+light, effects, and shadows for selected tab icons. + +
      +

      Figure 11. Light, effects, and shadows for selected tab +icons.

      +
      + + + + +
      1.Front part:Use fill gradient from color palette.
      2.Inner shadow:black | 20% opacity |
      angle 90° | distance 2px |
      size 2px
      3.Inner bevel:depth 1% | direction down | size 0px | angle 90° |
      altitude 10°
      highlight white 70% opacity
      shadow black 25% opacity
      +
      +
      +
      + + + + + + + +
      + + + + + + + + + +
      Color palette, fill gradientFill gradient
      1:  r 163 | g 163 | b 163
      2:  r 120 | g 120 | b 120
      Used as color fill on unselected tab icons.
      + +
      + + + +
        +
      1. Create the basic shape using a tool like Adobe Illustrator.
      2. +
      3. Import the shape into a tool like Adobe Photoshop and scale to fit a 32x32 +px artboard with a transparent background.
      4. +
      5. Add the effects seen in Figure 11 for the selected state filter.
      6. +
      7. Export the icon at 32x32 as a PNG file with transparency enabled.
      8. +
      + +
      + + +

      Dialog icon

      + +

      Dialog icons are shown in pop-up dialog boxes that prompt the user for +interaction. They use a light gradient and inner +shadow in order to stand out against a dark background.

      + +

      Structure

      + +
        +
      • Dialog icons have a 1 pixel safeframe. The base shape must fit within the +safeframe, but the anti-alias of a round shape can overlap the safeframe.
      • + +
      • All dimensions specified on this page are based on a 32x32 pixel artboard size +in Adobe Photoshop. Keep 1 pixel of padding around the bounding box inside the +Photoshop template.
      • + +
      • Final art must be exported as a transparent PNG file.
      • + +
      • Templates for creating dialog icons in Adobe Photoshop are available in the +Icon Templates Pack.
      • +
      + + + + + + +
      + A view of dialog
+icon structure. + +
      +

      Figure 12. Safeframe and fill gradient for dialog icons. +Icon size is 32x32.

      +
      +
      + + +

      Light, effects, and shadows

      + +

      Dialog icons are flat and pictured face-on. In order to stand out against a +dark background, they are built up using a light gradient and inner shadow.

      + + + + + + +
      + A view of light,
+effects, and shadows for dialog icons. + +
      +

      Figure 13. Light, effects, and shadows for dialog +icons.

      +
      + + + +
      1.Front part:gradient overlay | angle 90°
      bottom: r 223 | g 223 | b 223
      top: r 249 | g 249 | b 249
      bottom color location: 0%
      top color location: 75%
      2.Inner shadow:black | 25% opacity |
      angle -90° | distance 1px | size 0px
      +
      +
      +
      + + + + + + +
      + + + +
        +
      1. Create the basic shapes using a tool like Adobe Illustrator.
      2. +
      3. Import the shape into a tool like Adobe Photoshop and scale to fit an image +of 32x32 px on a transparent background.
      4. +
      5. Add the effects seen in Figure 13 for the proper filter.
      6. +
      7. Export the icon at 32x32 as a PNG file with transparency enabled.
      8. +
      + +
      + + +

      List view icon

      + +

      List view icons look a lot like dialog icons, but they use an inner shadow +effect where the light source is above the object. They are also designed to be +used only in a list view. Examples include the Android Market application home +screen and the driving directions screen in the Maps application.

      + +

      Structure

      + +
        +
      • A list view icon normally has a 1 px safeframe, but it is OK to use the +safeframe area for the edge of the anti-alias of a round shape.
      • + +
      • All dimensions specified are based on a 32x32 pixel artboard size in +Photoshop. Keep 1 pixel of padding around the bounding box inside the template. +
      • + +
      • Final art must be exported as a transparent PNG file.
      • + +
      • Templates for creating list view icons in Adobe Photoshop are available in +the Icon Templates Pack.
      • +
      + + + + + + +
      + A view of list
+view icon structure. + +
      +

      Figure 14. Safeframe and fill gradient for list view +icons. Icon size is 32x32.

      +
      +
      + +

      Light, effects, and shadows

      + +

      List view icons are flat and pictured face-on with an inner shadow. Built up +by a light gradient and inner shadow, they stand out well on a dark +background.

      + + + + + + +
      + A view
+of light, effects, and shadows for list view icons. + +
      +

      Figure 15. Light, effects, and shadows for list view +icons.

      +
      + + + + +
      1.Inner shadow:black | 57 % opacity | angle 120° | blend mode normal | distance 1px | size 1px
      2.Background:black | standard system color
      These icons are displayed in list views only.
      Note: The list view icon sits on 32x32 px artboard in Photoshop, without a safeframe.
      +
      +
      +
      + + + + + +
      + + + +
        +
      1. Add the effects seen in Figure 15 for the proper filter.
      2. +
      3. Export the icon at 32x32 as a PNG file with transparency enabled.
      4. +
      5. Create the basic shapes using a tool like Adobe Illustrator.
      6. +
      7. Import the shape into a tool like Adobe Photoshop and scale to fit an image +of 32x32 px on a transparent background.
      8. +
      + +
      + + +

      General guidelines

      + +

      Below are some "do and don't" guidelines to consider when creating icons for +your application. By following the guidelines, you can ensure that your icons +will work well with other parts of the Android platform UI and will meet the +expectations of your application's users.

      + + + + + + + + +
      + +

      Do...

      + +
        +
      • Use a normal perspective. The depth of an object should be realistic.
      • +
      • Keep it simple! By overdoing an icon, it loses it purpose and +readability.
      • +
      • Use colors only when necessary. Mind that the base of a launcher icon should +be grey and feel solid.
      • +
      • Use the correct angles for the specific icon types.
      • +
      +
      + +

      Don’t...

      + +
        +
      • Use open elements like text alone as icons. Instead place those elements on +a base shape.
      • +
      • Use colors for your status bar notifications. Those are reserved for +specific phone-only functions.
      • +
      +
      +Side-by-side examples
+of good/bad icon design. +
      + +

      Using the Android Icon Templates Pack

      + +

      The Android Icon Templates Pack is a collection of template designs, filters, +and settings that make it easier for you to create icons that conform to the +general specifications given in this document. We recommend downloading the +template pack archive before you get started with your icon design.

      + +

      The icon templates are provided in Adobe Photoshop and Adobe Illustrator file +formats, which preserves the layers and design treatments we used when creating the +standard icons for the Android platform. You can load the template files into any +compatible image-editing program, although your ability to work directly with the +layers and treatments may vary based on the program you are using.

      + +

      You can obtain the Icon Templates Pack archive using the link below:

      + +

      Download the Icon Templates +Pack » + + +

      Icon appendix

      + +

      Standard launcher icons

      + +

      Shown below are examples of launcher icons used by Android applications. The +icons are provided for your reference only — please do not reuse these +icons in your applications.. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Android asset +
      Alarm Clock
      + Android asset +
      Browser
      + Android asset +
      Calculator
      + Android asset +
      Calendar
      + Android asset +
      Camcorder
      + Android asset +
      Camera
      + Android asset +
      Contacts
      + Android asset +
      Dialer
      + Android asset +
      Email
      + Android asset +
      Gallery
      + Android asset +
      Generic application
      + Android asset +
      Gmail
      + Android asset +
      Google Talk
      + Android asset +
      IM
      + Android asset +
      Maps
      + Android asset +
      Market
      + Android asset +
      Messaging
      + Android asset +
      Music
      + Android asset +
      Settings
      + Android asset +
      Voice Dialer
      + Android asset +
      Voice Search
      + Android asset +
      YouTube
      + +

      + +

      Shown below are standard menu icons that are included in the Android platform +(as of Android 1.5). You can reference any of these icon resources from your +application as needed, but make sure that the action you assign to the icon is +consistent with that listed. Note that this is not a complete list of icons and +that the actual appearance of standard icons may change across platform +versions.

      + +

      To reference one of the icons from your code, use +android.R.drawable.<icon_resource_identifier>. For example, +you can call a menu item's {@link android.view.MenuItem#setIcon(android.graphics.drawable.Drawable) setIcon()} +method and pass the resource name:

      + +

      .setIcon(android.R.drawable.ic_menu_more);. + +

      You could reference the same icon from a layout file using +android:icon="@android:drawable/ic_menu_more">.

      + +

      To determine the resource ID for an icon listed below, hover over the icon or +simply look at image filenames, which use the format +"<icon_resource_identifier>.png".

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Android asset +
      Add
      + Android asset +
      Archive
      + Android asset +
      Attach
      + Android asset +
      Back
      + Android asset +
      Call
      + Android asset +
      Camera
      + Android asset +
      Clear / Close / Cancel / Discard
      + Android asset +
      Compass
      + Android asset +
      Delete
      + Android asset +
      Directions
      + Android asset +
      Edit
      + Android asset +
      Favorite
      + Android asset +
      Forward
      + Android asset +
      Gallery
      + Android asset +
      Go to
      + Android asset +
      Help
      + Android asset +
      History
      + Android asset +
      Home
      + Android asset +
      Info / details
      + Android asset +
      Map mode
      + Android asset +
      Mark
      + Android asset +
      My Location
      + Android asset +
      More
      + Android asset +
      Play
      + Android asset +
      Preferences
      + Android asset +
      Refresh
      + Android asset +
      Rotate
      + Android asset +
      Save
      + Android asset +
      Send
      + Android asset +
      Search
      + Android asset +
      Share
      + Android asset +
      Shuffle
      + Android asset +
      Upload
      + Android asset +
      View
      + Android asset +
      Video
      + Android asset +
      Zoom
      + + +

      Standard status bar icons

      + +

      Shown below are standard status bar icons included in the Android platform +(as of Android 1.5). You can reference any of these icon resources from your +application as needed, but make sure that the meaning of the icon is consistent +with the standard meaning listed. Note that this is not a complete list of icons +and that the actual appearance of standard icons may change across platform +versions.

      + +

      To reference one of the icons from your code, use +android.R.drawable.<icon_resource_identifier>. For example, +you can construct a simple notification that references one of the icons like +this:

      + +

      new Notification(R.drawable.stat_notify_calendar, +"sample text", System.currentTimeMillis());

      + +

      To determine the resource ID for an icon listed below, hover over the icon +or simply look at the image filename, which use the format +"<icon_resource_identifier>.png".

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Android asset +
      3G
      + Android asset +
      Airplane mode
      + Android asset +
      Alarm
      + Android asset +
      Bluetooth
      + Android asset +
      Bluetooth connected
      + Android asset +
      Calendar
      + Android asset +
      Disk full
      + Android asset +
      EDGE
      + Android asset +
      Email
      + Android asset +
      Gmail
      + Android asset +
      GPRS
      + Android asset +
      IM
      + Android asset +
      Installation complete
      + Android asset +
      Music
      + Android asset +
      Roaming
      + Android asset +
      Signal
      + Android asset +
      Signal unavailable
      + Android asset +
      Silent mode
      + Android asset +
      SMS/MMS
      + Android asset +
      Speaker phone
      + Android asset +
      Sync
      + Android asset +
      Sync error
      + Android asset +
      USB connected
      + Android asset +
      Vibrate
      + Android asset +
      Voicemail
      + Android asset +
      Warning
      + Android asset +
      WiFi
      + Android asset +
      WiFi network available
      + Android asset +
      WiFi unavailable
      + Android asset +
      Battery 100%
      + Android asset +
      Battery empty
      + Android asset +
      Call
      + Android asset +
      Call forward
      + Android asset +
      Call on hold
      + Android asset +
      GPS on
      + Android asset +
      Missed call
      + + diff --git a/docs/html/guide/practices/ui_guidelines/index.jd b/docs/html/guide/practices/ui_guidelines/index.jd index e19d5b49f3ff..0b9d2754d21a 100644 --- a/docs/html/guide/practices/ui_guidelines/index.jd +++ b/docs/html/guide/practices/ui_guidelines/index.jd @@ -6,18 +6,39 @@ page.title=User Interface Guidelines

      The Android UI team has begun developing guidelines for the interaction and -design of Android applications. Look here for articles that describe these -visual guidelines as we release them.

      +visual design of Android applications. Look here for articles that describe +these guidelines as we release them.

      -
      -
      Widget Design Guidelines
      -
      Widgets are a new feature introduced in Cupcake. A widget displays -an application's most important or timely information at a glance, on a user's -Home screen. These design guidelines describe how to design widgets that fit -with others on the Home screen. They include links to graphics files and -templates that will make your designer's life easier.
      - +
      Icon +Design Guidelines and Android Icon Templates Pack +»
      +
      Your applications need a wide variety of icons, from a launcher icon to +icons in menus, dialogs, tabs, the status bar, and lists. The Icon Guidelines +describe each kind of icon in detail, with specifications for the size, color, +shading, and other details for making all your icons fit in the Android system. +The Icon Templates Pack is an archive of Photoshop and Illustrator templates and +filters that make it much simpler to create conforming icons.
      +
      +
      +
      Widget Design Guidelines
      +
      A widget displays an application's most important or timely information +at a glance, on a user's Home screen. These design guidelines describe how to +design widgets that fit with others on the Home screen. They include links to +graphics files and templates that will make your designer's life easier.
      +
      +
      +
      Activity and Task Design Guidelines
      +
      Activities are the basic, independent building blocks of applications. + As you design your application's UI and feature set, you are free to + re-use activities from other applications as if they were yours, + to enrich and extend your application. These guidelines + describe how activities work, illustrates them with examples, and + describes important underlying principles and mechanisms, such as + multitasking, activity reuse, intents, the activity stack, and + tasks. It covers this all from a high-level design perspective. +
      diff --git a/docs/html/guide/topics/resources/res-selection-flowchart.png b/docs/html/guide/topics/resources/res-selection-flowchart.png new file mode 100755 index 0000000000000000000000000000000000000000..d738b3f0c866ef39f9b756dc08dd615798ec5400 GIT binary patch literal 23228 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 Z$(iO>E@?EQ0ek6lH?)kd*JwIE{2ztiF(?24 literal 0 HcmV?d00001 diff --git a/docs/html/guide/topics/resources/resources-i18n.jd b/docs/html/guide/topics/resources/resources-i18n.jd old mode 100644 new mode 100755 index 4bbb44ac5e5a..2bcc5e33deea --- a/docs/html/guide/topics/resources/resources-i18n.jd +++ b/docs/html/guide/topics/resources/resources-i18n.jd @@ -37,7 +37,7 @@ PNG, and JPEG files. The XML files have very different formats depending on what they describe. This document describes what kinds of files are supported, and the syntax or format of each.

      Resources are externalized from source code, and XML files are compiled into -a binary, fast loading format for efficiency reasons. Strings, likewise are compressed +a binary, fast loading format for efficiency reasons. Strings, likewise, are compressed into a more efficient storage form. It is for these reasons that we have these different resource types in the Android platform.

      @@ -88,12 +88,12 @@ of any XML files.

      You will create and store your resource files under the appropriate subdirectory under the res/ directory in your project. Android has a resource compiler (aapt) that compiles resources according to which -subfolder they are in, and the format of the file. Here is a list of the file +subfolder they are in, and the format of the file. Table 1 shows a list of the file types for each resource. See the Available Resources for descriptions of each type of object, the syntax, and the format or syntax of the containing file.

      - +

      Table 1

      @@ -410,7 +410,7 @@ public class MyActivity extends Activity

      Alternate Resources (for alternate languages and configurations)

      -

      You can supply different resources for your product according to the UI +

      You can supply different resources for your application to use depending on the UI language or hardware configuration on the device. Note that although you can include different string, layout, and other resources, the SDK does not expose methods to let you specify which alternate resource set to load. Android @@ -436,7 +436,7 @@ MyApp/ Append these to the end of the resource folder name, separated by dashes. You can add multiple qualifiers to each folder name, but they must appear in the order they are listed here. For example, a folder containing drawable -resources for a fully specified configuration would look like:

      +resources for a fully specified configuration would look like this:

       MyApp/
      @@ -444,8 +444,7 @@ MyApp/
               drawable-en-rUS-port-160dpi-finger-keysexposed-qwerty-dpad-480x320/
       
      -

      More typically, you will only specify a few specific configuration options -that a resource is defined for. You may drop any of the values from the +

      More typically, you will only specify a few specific configuration options. You may drop any of the values from the complete list, as long as the remaining values are still in the same order:

      @@ -457,41 +456,46 @@ MyApp/ drawable-port-160dpi/ drawable-qwerty/ - +

      Table 2 lists the valid folder-name qualifiers, in order of precedence. Qualifiers that are listed higher in the table take precedence over those listed lower, as described in How Android finds the best matching directory.

      +

      Table 2

      Directory
      - - - + + + - - - + + + - - + + - - + + @@ -506,6 +510,14 @@ MyApp/ + + + + + + + +
      Qualifier Values
      LanguageThe two letter ISO - 639-1 language code in lowercase. For example: - en, fr, es
      MCC and MNCThe mobile country code and mobile network code from the SIM in the device. For example mcc310-mnc004 (U.S., Verizon brand); mcc208-mnc00 (France, Orange brand); mcc234-mnc00 (U.K., BT brand).
      +
      + If the device uses a radio connection (GSM phone), the MCC will come from the SIM, and the MNC will come from the network to which the device is attached. You might sometimes use the MCC alone, for example to include country-specific legal resources in your application. If your application specifies resources for a MCC/MNC combination, those resources can only be used if both the MCC and the MNC match.
      RegionThe two letter - ISO - 3166-1-alpha-2 language code in uppercase preceded by a lowercase - "r". For example: rUS, rFR, rES
      Language and regionThe two letter ISO + 639-1 language code and two letter + ISO + 3166-1-alpha-2 region code (preceded by lowercase "r"). For example + en-rUS, fr-rFR, es-rES.
      +
      + The codes are case-sensitive: The language code is lowercase, and the country code is uppercase. You cannot specify a region alone, but you can specify a language alone, for example en, fr, es.
      Screen orientation port, land, square
      Screen pixel density92dpi, 108dpi, etc.
      92dpi, 108dpi, etc. When Android selects which resource files to use, it handles screen density differently than the other qualifiers. In step 1 of How Android finds the best matching directory (below), screen density is always considered to be a match. In step 4, if the qualifier being considered is screen density, Android will select the best final match at that point, without any need to move on to step 5.
      Touchscreen type notouch, stylus, finger
      Whether the keyboard is available to the userkeysexposed, keyshidden
      keysexposed, keyshidden, keyssoft
      + If your application has specific resources that should only be used with a soft keyboard, use the keyssoft value. If no keyssoft resources are available (only keysexposed and keyshidden) and the device shows a soft keyboard, the system will use keysexposed resources.
      Primary text input method nokeys, qwerty, 12key 320x240, 640x480, etc. The larger dimension must be specified first.
      SDK versionThe SDK version supported by the device, for example v3. The Android 1.0 SDK is v1, the 1.1 SDK is v2, and the 1.5 SDK is v3.
      (Minor version)(You cannot currently specify minor version. It is always set to 0.)

      This list does not include device-specific parameters such as carrier, @@ -513,92 +525,84 @@ branding, device/hardware, or manufacturer. Everything that an application needs to know about the device that it is running on is encoded via the resource qualifiers in the table above.

      -

      Here are some general guidelines on qualified resource directory names:

      +

      All resource directories, qualified and unqualified, live under the res/ folder. Here are some guidelines on qualified resource directory names:

        -
      • Values are separated by a dash (as well as a dash after the base directory - name)
      • -
      • Values are case-sensitive (even though they must be unique across all folder - names in a case-insensitive way)
        For example,
      • -
          -
        • A portrait-specific drawable directory must be named - drawable-port, not drawable-PORT.
        • -
        • You may not have two directories named drawable-port - and drawable-PORT, even if you had intended "port" and - "PORT" to refer to different parameter values.
        • -
        -
      • Only one value for each qualifier type is supported (that is, you cannot - specify drawable-rEN-rFR/)
      • -
      • You can specify multiple parameters to define specific configurations, - but they must always be in the order listed above. - For example, drawable-en-rUS-land will apply to landscape view, - US-English devices.
      • -
      • Android will try to find the most specific matching directory for the current - configuration, as described below
      • -
      • The order of parameters listed in this table is used to break a tie in case - of multiple qualified directories (see the example given below)
      • -
      • All directories, both qualified and unqualified, live under the res/ folder. - Qualified directories cannot be nested (you cannot have res/drawable/drawable-en)
      • -
      • All resources will be referenced in code or resource reference syntax by - their simple, undecorated name. So if a resource is named this:
        -       MyApp/res/drawable-port-92dp/myimage.png
        - It would be referenced as this:
        -       R.drawable.myimage (code)
        -       @drawable/myimage (XML)
      • +
      • You can specify multiple qualifiers, separated by dashes. For example, drawable-en-rUS-land will apply to US-English + devices in landscape orientation.
      • +
      • The qualifiers must be in the order listed in Table 2 above. For example: +
          +
        • Correct: values-mcc460-nokeys/
        • +
        • Incorrect: values-nokeys-mcc460/
        • +
        +
      • +
      • Values are case-sensitive. For example, a portrait-specific drawable directory must be named + drawable-port, not drawable-PORT or drawable-Port.
      • +
      • Only one value for each qualifier type is supported. For example, if you want to use exactly the same drawable files for Spain and France, you will need two resource directories, such as drawable-rES/ and drawable-rFR/, containing identical files. You cannot + have a directory named drawable-rES-rFR/.
      • +
      • Qualified directories cannot be nested. For example, you cannot have res/drawable/drawable-en.
      -

      How Android finds the best matching directory

      +

      How resources are referenced in code

      +

      All resources will be referenced in code or resource reference syntax by + their simple, undecorated names. So if a resource were named this:
      +      MyApp/res/drawable-port-92dpi/myimage.png
      + It would be referenced as this:
      +      R.drawable.myimage (code)
      +      @drawable/myimage (XML)

      +

      If several drawable directories are available, Android will select one of them (as described below) and load myimage.png from it.

      +

      How Android finds the best matching directory

      Android will pick which of the various underlying resource files should be -used at runtime, depending on the current configuration. The selection process -is as follows:

      - +used at runtime, depending on the current configuration of the device. The example used here assumes the following device configuration:

      +
      +

      Locale = en-GB
      + Screen orientation = port
      + Screen pixel density = 108dpi
      + Touchscreen type = notouch
      + Primary text input method = 12key
      +

      +
      +

      Here is how Android makes the selection:

      1. - Eliminate any resources whose configuration does not match the current - device configuration. For example, if the screen pixel density is 108dpi, - this would eliminate only MyApp/res/drawable-port-92dpi/. -
        -
        -MyApp/res/drawable/myimage.png
        -MyApp/res/drawable-en/myimage.png
        -MyApp/res/drawable-port/myimage.png
        -MyApp/res/drawable-port-92dpi/myimage.png
        -
        -
        -
      2. -
      3. - Pick the resources with the highest number of matching configurations. - For example, if our locale is en-GB and orientation is port, then we - have two candidates with one matching configuration each: - MyApp/res/drawable-en/ and MyApp/res/drawable-port/. - The directory MyApp/res/drawable/ is eliminated because - it has zero matching configurations, while the others have one matching - configuration. -
        -
        -MyApp/res/drawable/myimage.png
        -MyApp/res/drawable-en/myimage.png
        -MyApp/res/drawable-port/myimage.png
        -
        -
        -
      4. -
      5. - Pick the final matching file based on configuration precedence, which - is the order of parameters listed in the table above. That is, it is - more important to match the language than the orientation, so we break - the tie by picking the language-specific file, MyApp/res/drawable-en/. -
        -
        MyApp/res/drawable-en/myimage.png
        -MyApp/res/drawable-port/myimage.png
        -
        -
        -
      6. + Eliminate resource files that contradict the + device configuration. For example, assume that the following resource directories are available for drawables. The drawable-fr-rCA/ directory will be eliminated, because it contradicts the locale of the device.
        +
        MyApp/res/drawable/
        +MyApp/res/drawable-en/
        +MyApp/res/drawable-fr-rCA/
        +MyApp/res/drawable-en-port/
        +MyApp/res/drawable-en-notouch-12key/
        +MyApp/res/drawable-port-92dpi/
        +MyApp/res/drawable-port-notouch-12key
        + Exception: Screen pixel density is the one qualifier that is not used to eliminate files. Even though the screen density of the device is 108 dpi, drawable-port-92dpi/ is not eliminated from the list, because every screen density is considered to be a + match at this point. +
      7. From Table 2, pick the highest-precedence qualifier that remains in the list. (Start with MCC, then move down through the list.)
      8. +
      9. Do any of the available resource directories include this qualifier?
      10. +
          +
        • If No, return to step 2 and look at the next qualifier listed in Table 2. In our example, the answer is "no" until we reach Language.
        • +
        • If Yes, move on to step 4.
        • +
        +
      11. Eliminate resource directories that do not include this qualifier. In our example, we eliminate all the directories that do not include a language qualifier.
      12. +
        MyApp/res/drawable/
        +MyApp/res/drawable-en/
        +MyApp/res/drawable-en-port/
        +MyApp/res/drawable-en-notouch-12key/
        +MyApp/res/drawable-port-92dpi/
        +MyApp/res/drawable-port-notouch-12key
        + Exception: If the qualifier in question is screen pixel density, Android will select the option that most closely matches the device, and the selection process will be complete. In general, Android will prefer scaling down a larger original image to scaling up a smaller original image.

        + +
      13. Go back and repeat steps 2, 3, and 4 until only one choice remains. In the example, screen orientation is the next qualifier in the table for which we have any matches. + Eliminate resources that do not specify a screen orientation.

        +
        MyApp/res/drawable-en/
        +MyApp/res/drawable-en-port/
        +MyApp/res/drawable-en-notouch-12key/
        + Only one choice remains, so that's it. When drawables are called for in this example application, the Android system will load resources from the MyApp/res/drawable-en-port/ directory.
      - - -

      Terminology

      - +

      Tip: The precedence of the qualifiers is more important than the number of qualifiers that exactly match the device. For example, in step 4 above, the last choice on the list includes three qualifiers that exactly match the device (orientation, touchscreen type, and input method), while drawable-en has only one parameter that matches (language). However, language has a higher precedence, so drawable-port-notouch-12key is out.

      +

      This flowchart summarizes how Android selects resource directories to load.

      +

      resource-selection

      +

      Terminology

      The resource system brings a number of different pieces together to form the final complete resource functionality. To help understand the overall system, here are some brief definitions of the core concepts and @@ -671,7 +675,7 @@ information is applied as approriate) and load them into its instance.

      Configuration: For any particular resource identifier, there may be multiple different available values depending on the current configuration. The configuration includes the locale (language and country), screen -orientation, screen density, etc. The current configuration is used to +orientation, etc. The current configuration is used to select which resource values are in effect when the resource table is loaded.

      @@ -710,4 +714,3 @@ SDK matures, this section will contain information on the Internationalization and Localization features of the Android platform. In the meantime, it is a good idea to start by externalizing all strings, and practicing good structure in creating and using resources.

      - diff --git a/docs/html/guide/tutorials/hello-world.jd b/docs/html/guide/tutorials/hello-world.jd index 4d1e9cdf5b67..79b723d162d6 100644 --- a/docs/html/guide/tutorials/hello-world.jd +++ b/docs/html/guide/tutorials/hello-world.jd @@ -29,7 +29,7 @@ You can then return to this tutorial and ignore anything about Eclipse.

      Before you start, you should already have the very latest SDK installed, and if you're using Eclipse, you should have installed the ADT plugin as well. If you have not installed these, see -Installing the Android SDK and return +Installing the Android SDK and return here when you've completed the installation.

      Create an AVD

      @@ -80,7 +80,7 @@ Android project in Eclipse.

      "Android XML File" will also be available.)

      -
    9. Selected "Android Project" and click Next. +
    10. Select "Android Project" and click Next.
    11. @@ -147,7 +147,7 @@ Android project in Eclipse.

      built against the 1.1 platform library will run normally on the 1.5 platform. The reverse is not true.

      - +

      Your Android project is now ready. It should be visible in the Package Explorer on the left. diff --git a/docs/html/images/activity_task_design/ActivityChooser.png b/docs/html/images/activity_task_design/ActivityChooser.png new file mode 100644 index 0000000000000000000000000000000000000000..6c20afbbd21cb0b24b626ea786d5c5a3e6c38071 GIT binary patch literal 82669 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%0AX4tOYTjzsj9vHH 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/activity_task_design/HomeTaskBasics1a.png b/docs/html/images/activity_task_design/HomeTaskBasics1a.png new file mode 100644 index 0000000000000000000000000000000000000000..eca480705b12acb70f279b98ab3e1f79c91a71ea GIT binary patch literal 25905 zcmV*^Kr6qAP)4Tx0C)kdSZ7pJ%d+lC#32XC3^`}Xl7kW?Cjm(_L}9=o2q>ZiQG!Gf1<4>v zR6r3FNg{d_L{I?(A_xXV1QjIB?EyV!-S^g6@6YSC_Vm|ZS5^1!+Pi9M1Hi)P9Tpah z1OS8(BS?084RJ09TyfOn00Gc|4PXJAH$FVfz{bWBiu_Ca`5a2aHX=u{^)EvIMl+J& zf&d_7p#Z!84%Vk&pB?N#!ABy(BA`qF1>*y}2@oHHSeE2qX9RH##EkwsxQ&8+cJKfN zN8$Y`x?=!Pu@VV^L;$GgA=V}MhU4KhWnBUx93KL4763@ykdRPlpZN*oCGlY-sLQ+x zu_)zSU=N!Yyj1(39qE6#&};yjp*^mpe>e$a063Q+Px}wIY`1+@2+pB!KNV$)HGsex z0)Tl#CNGOan>he%W|PV59sOwP<7SfkjsIASd1m-H_|*hl1!Hgp zLT$q1B4jaPaZ`yP$tG!hCaz^qbg(}6D%1kO|yOUM>)PaVHW}?|a! z`bP~)4euGvn$Vfb@3q}`*eu8VhQ*lWx)qYV@xh%$OsI9(rNay1MiJ*C7mw&i`@{stl8(k4 zON={pJS{%;MEc2;gt)}$q=00{Q-�rx{MqpShn}mKK?Ap23qbceXk6M3z&wTn;+t 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ˈ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

      a2wsZ`D!RvVj0ZMFU0v!0Cej-TQ9Q|tY1G1 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

      e$5m-nsT?0~c z10DI4k?1ddi!MM!wMI2si8K>C&S|$H5wZY%Nguf#i4?r0zp51oDSRlv_6@hUXkW4t zf%}Ta`9SXRJYWnO*kO-HmVXcjhTPvCN7$?ppo~O+>6oX#NMR$Cd1xM`#%dG?w3FD5 zq!A>t5<#^KX^K(>!XqCFaQlYF(RnnmkBA@z&=5i31J*?Hu*^dv>@P)6iEY?N+D875 zY)(od_R*x^7!(<{ySePa@(kXxac%~-6hk+bYTQ&dj<+-ejj+FL21IBEZbY@sY#wC8 zTlP^kXWxW_RwF2N5*}#^e%X#x&88@720ygZ*{)Z5L<87YX3!W@MUgTL#g1hj_L2Km zZ3`ZZOtr6RqEgQ(JtB|Lk)2SF|0}k))JE7u{s2upr@%Ib?jT)xhL<={MOx@cRhsBM zMc2O6I|2g0zD9vAii5sJCZW9o1^NO7n5`)x2ow+~AW#4l`2REyc$422>+S#m002ov JPDHLkV1nD(^Y{P& literal 0 HcmV?d00001 diff --git a/docs/html/images/activity_task_design/HomeTaskBasics1c.png b/docs/html/images/activity_task_design/HomeTaskBasics1c.png new file mode 100644 index 0000000000000000000000000000000000000000..95f48c1084b40a40ca203e1e6f5fb0961ec88971 GIT binary patch literal 25576 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

    12. N|Q9$AO#Vs1?U%r5u>(+10!jI zX`um9Q<~!!^22s}L_lr)(nP#vb1F1YwK_lnycMLV`>dg|K?MW9 zkQoG4glGi6NThYqoZNcVsRQIg0hC7szt9MX;4=jlvNJt_i(G1UGY)D~g0m5j9dYoF zDrN55Zq{Xh;=q>HLPdx+3c`a#GzXGH<6Mnk0IYg<6_n;6IHfrxhmxHYA*3UP{wkBA zea}z%9oyB>`SF&j0IC#doEAYg<+4Ib7brk^iGq}clxVe!1j1%uGnznPzNk-Y&x4FM7lr$R)lC-`V~Q(RRQWnNP{|{K*1_R=x=8!G+p@Z zJ_RVl07oIhK6bx~9)Tc8ks-;h-0hJ<6V;%>OC5Apo~s}_%Oj+BfdU%Y)&-bGTSSl| zeXyo$BGfH)ppRw4Tx0C)kdSZ7pJ%d+lC#32XC3^`}Xl7kW?Cjm(_L}9=o2q>ZiQG!Gf1<4>v zR6r3FNg{d_L{I?(A_xXV1QjIB?EyV!-S^g6@6YSC_Vm|ZS5^1!+Pi9M1Hi)P9Tpah z1OS8(BS?084RJ09TyfOn00Gc|4PXJAH$FVfz{bWBiu_Ca`5a2aHX=u{^)EvIMl+J& zf&d_7p#Z!84%Vk&pB?N#!ABy(BA`qF1>*y}2@oHHSeE2qX9RH##EkwsxQ&8+cJKfN zN8$Y`x?=!Pu@VV^L;$GgA=V}MhU4KhWnBUx93KL4763@ykdRPlpZN*oCGlY-sLQ+x zu_)zSU=N!Yyj1(39qE6#&};yjp*^mpe>e$a063Q+Px}wIY`1+@2+pB!KNV$)HGsex z0)Tl#CNGOan>he%W|PV59sOwP<7SfkjsIASd1m-H_|*hl1!Hgp zLT$q1B4jaPaZ`yP$tG!hCaz^qbg(}6D%1kO|yOUM>)PaVHW}?|a! z`bP~)4euGvn$Vfb@3q}`*eu8VhQ*lWx)qYV@xh%$OsI9(rNay1MiJ*C7mw&i`@{stl8(k4 zON={pJS{%;MEc2;gt)}$q=00{Q-�rx{MqpShn}mKK?Ap23qbceXk6M3z&wTn;+t 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 B6J`Ja literal 0 HcmV?d00001 diff --git a/docs/html/images/activity_task_design/HomeTaskBasics1e.png b/docs/html/images/activity_task_design/HomeTaskBasics1e.png new file mode 100644 index 0000000000000000000000000000000000000000..09dd491cf3357bd23d47712d79057146c364abcf GIT binary patch literal 23046 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�rx{MqpShn}mKK?Ap23qbceXk6M3z&wTn;+t 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�rx{MqpShn}mKK?Ap23qbceXk6M3z&wTn;+t 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�rx{MqpShn}mKK?Ap23qbceXk6M3z&wTn;+t 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 QfdBvi07*qoM6N<$f`_};+yDRo literal 0 HcmV?d00001 diff --git a/docs/html/images/activity_task_design/HomeTaskSwitching2.png b/docs/html/images/activity_task_design/HomeTaskSwitching2.png new file mode 100644 index 0000000000000000000000000000000000000000..dee58a397a94e6ef72a03a3ccdef05ea63157dab GIT binary patch literal 41605 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

      nHgS=2!^vm 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⩔?k-6rhN%uaaEag@D}=D+gW%zT2U9 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 Df&c=S literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/dialog_light.png b/docs/html/images/icon_design/dialog_light.png new file mode 100644 index 0000000000000000000000000000000000000000..85056a9ff7a3761500ee496d99ac627c5f36bc35 GIT binary patch literal 16440 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 _l6=V`<+m=@ot3wfkBwgQj&qCU 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 Ef|qh+GXMYp literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_calculator.png b/docs/html/images/icon_design/ic_launcher_calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..298c267ace33f269b2e706970204dbba17f30d1c GIT binary patch literal 3291 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 Z0|0P|%F}@rCW8O~002ovPDHLkV1o7OLgxSg literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_calendar.png b/docs/html/images/icon_design/ic_launcher_calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..92410907d70b0075d0974e8fd1c76be0fb4777c1 GIT binary patch literal 3288 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%0Ald@Xt&gGT_HX`U5q< zVJeX;k=LeVD%C4d0wd6GS8*-i4SVp34u=JiSsR5}H%JXcKW*RE^lALQ@kjpF)-kzH z@24iGY;P0?`Z4~V0p1Fft9r>N?}pG~s#Fk+@B5z&RM(oqGFmIzla`vez{lWqm8GBb z8m|qal<5b*yZ=6p4kU&V|GR-9oP6h0_7qobwxK>8LkYZ zn#iSI7<70qRNks_ZRtGk0j+A|rESITEod<)7otICj~-eu--78l_0!WMdXpFSq9n(# zn@MZGO#@2Wv^SB{ku>Cg(N$@KKU`JzklU1%-5NUxLvqUEUswKg<*y8YjkkB3LH};L z9k)t+$(*1PMhqFZv4zpd}Fkv!R}LPKpxUyMP(T~L2r5HR4ui_6Q?yTI zym;i5Bi}Ca9=)Yr&I#!MeV}Y|<=ef`2b{1!o0rm*=!aSDS5?}c!4^#B{&D1$L%(L| zPf+^n(Dz%hE)Dp=QHHnoS8URD;~i`e3`X6Xtu6K(XxqHsfAHx2cCqEt{@-o>E5HEQ W;HnQSmpKUl0000-F1? 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 b{|YbwdU=3R!k=TO00000NkvXXu0mjfe*^wO literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_contacts.png b/docs/html/images/icon_design/ic_launcher_contacts.png new file mode 100644 index 0000000000000000000000000000000000000000..826656ffb528ec69a68580673a5bb9351829e2f9 GIT binary patch literal 2995 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_email.png b/docs/html/images/icon_design/ic_launcher_email.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb263787ee25144b99c90db8ba14b7bfd26f070 GIT binary patch literal 2882 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_email_generic.png b/docs/html/images/icon_design/ic_launcher_email_generic.png new file mode 100644 index 0000000000000000000000000000000000000000..590ed705d3d3dffe21d7234f38a82aebaee692df GIT binary patch literal 3458 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 i{?{r)@R)D^6<`3N>-<6i4H`oL0000cUR| literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_generic_application.png b/docs/html/images/icon_design/ic_launcher_generic_application.png new file mode 100644 index 0000000000000000000000000000000000000000..75024841d327c4fbaefef7c8e9c8d0e892895f93 GIT binary patch literal 3180 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 Z0|4|9J(g5%u!sNv002ovPDHLkV1iQ5a{B-P literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_maps.png b/docs/html/images/icon_design/ic_launcher_maps.png new file mode 100644 index 0000000000000000000000000000000000000000..f436b56d0a615c1fed1fe8d6888a069aaf0a17c9 GIT binary patch literal 3618 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_settings.png b/docs/html/images/icon_design/ic_launcher_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..16db056f788ea81a1c52a89dab5c92fd836b6e1c GIT binary patch literal 3285 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 TiSFS!00000NkvXXu0mjfDB?y{ literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_sms_mms.png b/docs/html/images/icon_design/ic_launcher_sms_mms.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ac7843aebaf59cb9e03a2ba8deb1a9b82e83d4 GIT binary patch literal 3983 zcmV;A4{-2_P)F-b&0RCwCdS_yC)=XL%T*WxBYfHy$^ zyueEmb=Z=c%T63M&7`i!Gik?8+jN?=@ia3%?9@%i&5WHUZKrLbPMbuDo5o7&sb^YS z?bwmiu_ViO(paJ_S*9gQlz5*2i2DWsEc*U`cR`R6W!kCT@oIkV0(<=Ld+&Sieg8s2 zrBcEBdDGy1zUfM(5~ikSF~6{Y{kQGg)=f5>byp~~`sszGrQc1Z(#EyI+F^?1HzY~Q z&dtps6bRtdi5GC+Z~Zo!nwwEBmqF+FV8@#Wvwn(<`0Ym^o=9x#CNg@z z$z*z@x4XM_&&V!^&+GZBUay~_Q(vNC{(qy;%=&aXacdHSgV&G_~htuh( z^Y``svET3iqtI&jIik&9()F*sXGt81MiGzSl1gMPIn}&}v-uoK z5+D%}v)P29p#fq4ZF}!-YHU0w2*OKr&t30X6`Htq9ocMdt9uwVG{H={`bCJ2|NT-5 zkDZR-__Yk8xiVOJHW85F;Q@U3L%;Nq?rz@+%9D$9`2#d8?`$H`) z&C_(-lQcf?f0D$Tw?HTadz~G`+Gw%$t`ke`b1mW|SVo68^_;2Y^s47ORbng_}zY#ak72 zK<4cp*$IoeTHdcn74(1Uze6a}0Slpl8O=Q}8?RRY=m>y@4T_AQRseEYk3)m*IstYA z_X|A7Np;=k_E(_ua_Gv25eFY3s64nk7}z@i`!N~%PBLiT)#RV#XKn-$pM1R6y7 zd-hMDi>IchaPHjsTr?W}0Ri}1vT=SZ0JRiiGni;(H;0KHgkw)XjZ0%=o!@! z#aCZF`}uG<{6o6+A6WEn$N{ZZ+h#E6f5&Pu|3N-qXs4Niq-`eY980k4Y_znrUfX;7 z?UPzT*fmYwnMmnTh)U3!h*pw`_6BHm2A&57Eff%PK4=vhsT5+~D^mm*fTBhsaFlB~ z33D?NoMHui^?=t7Xe(79BI&E&AA4i$_r|YWc~&XIfm#ZEmY#W(KO8b2nViUEvY-TG zx(CT*5{X2TdP6o-mdci;_!{QpMPx~Jl(ZrY1`$S+31*8K7K?@N&GcC`8tI&#z-bi_ z0wflNvK)aTb-p!1vsRQ)pyNE-7v<8slOi(GM8!d1pe0VhbLYh@8+$;WN-G1F$z%vzhQOsbuwW#PbiRl@6{b=}14*lcpf^HK5fV8N z6AZLBh(>7jA~ZTZDuR|us|HMxtd%IwR1j-2kSqZyQ?l%767Z1@j)FV#$dT_dnmHM> z)f@;gr5i;zcR4U`lYvUN`^T1JWy8*=dw(*+^QGt{`r;5wvBr)ftNxGmVE0|9>sAvq7 zhzJIQSX`RI@@g28Mn|AT2nNa_s}owAi>xt0Z*SzEHB^n%V`iw@}eQiOOLt#y~}|5?H~RSI;0gU4hj%0%X##wNWHY4n7x~#V#rU zR##cHf2t~lR5HOSG(lfx{XHG#C%*jOL^&@}Z5FBfYSBQ{Gi%8~ItN-Tjqurhbe{(!BfIg{ z#~wo=6(NHNU?E4rsISJ^WfH0Ys1N*ferATM*35=JFiRi?@A}{{*iiYMNEdK@K7#9u z5nQAFe1cdmj+GQeE1$(; zb{Q8|-+;EPh0p21Zrd;~nagCj)=Gpdm$)ofo!4p>cqO8|D!q2*%xEr~t<_%~-3%E# z`0!UAr*HHa9_oR=w*v#+t=K!z#z$>+Do}RKEXUxgHzQKcAx|W0lPP5p#55bz^N9@+c;nJEKJ~e8!r}Iz%iGFn;`cal z=UyK=Tk7C$w&N2Ad!fn>H786|DsyTg*OXY7=)^)k0H?A3##J9BB@;rKVva}9%;Y-J zr&KPWSfH++Oe31P3Y+#ItqfZz2cnf^A{kQnZ(~JKQRi|Fus=Hny?FRf?!&pO0bHIA z;mjp@MfRx=`ti??++F1ci&SmLHj`w?)h4n6!a|)klntR?Z@c+ogs#u5Wn~Hx08K?% zAWEpJ0(X5Y0!u4Mr;;Hmp@o_WSOm%{fK?V%>YnC5yl;JV7ft3cF&m~t)m0~4zn|@7 z5KO#n1R!7IFx6o)JBNFGhw!1+1DH+C;f?53EN6n4rsINCkh?8aEQ`fT0F+X!j1Dqh zq;9>k5}QB?Dj-l4=87L2sjv?}Nb*;<4D0Lau^RLYbgj z+Z=(LZr}Qsqqg;uYG|}z+PnKv+ER6L9`m0IQSNW zOLl6Vob;^nu>KG(MA4wH+Hm;G_oB-!hr7$$f}x=uULFe2eFEAu(U^K3nwQHyOYfW=z@ zIC*9gkN)Fx>pybXtyBiJNT&00FJLsv7Zd~E83@)-^cuZVfx7u~gTX*PnTRhbUSF>9 z{td5HZW)1N-+vIP%=)|1#c&!L3c1xRR;x(9Aa~@-jUysTjXf>wOO3(wlEq0d)8Dgh`XQZU#V0A+EO>oP!*8{Ho7`cF&?^Y*spW^{OITt|4ECMm|}44 z3$_SrT$=%GcsuQLcQUS}Xo(oV`1yS1&=*WTXV z+1}A%XP{`$hblK}Wyfaiv{fY74ebr6WwT_Yod1A~LzzAj(C*XQeMYir}6w$e^pfnXF8Gy*epipB+{u;kU6 z|F(Z0Sa0e)>x)YFtAb)b3oI=y8EL%o{PE)!HCmk>Py4Q2y9S4M?C^VhUcbZP@HIC# zTUf)hT5Vf`;LFN#S?#neY11_};GF>2E~uDd2kR@k`MEif#>wZNeO8T@xr4UezP?@> z#K0bJQ&UrCQ%kek>2#X74q~p(}^Znyvd002ovPDHLkV1mn*q{RRL literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_video_camera.png b/docs/html/images/icon_design/ic_launcher_video_camera.png new file mode 100644 index 0000000000000000000000000000000000000000..e80255a5d6f9b09e34740f431fa2d7c7bd282c56 GIT binary patch literal 3428 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_launcher_voicesearch.png b/docs/html/images/icon_design/ic_launcher_voicesearch.png new file mode 100644 index 0000000000000000000000000000000000000000..09d51995a15c45a37151b37a6604c95a0c2954fa GIT binary patch literal 2594 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_add.png b/docs/html/images/icon_design/ic_menu_add.png new file mode 100644 index 0000000000000000000000000000000000000000..6752bfd1007293ca6340f91501f86c71b76684ce GIT binary patch literal 2017 zcmV<72Oju|P)Z$cJY zL5o&eTOU`^3aw5ECKlX z05l;^5{DxCkya!{k`eON07yj(ND77Ef0qFWsd$nkK{6{Op?vqn07z>?;Ubdan>TM( zhr{9ev9Yn>%*;$pGMV)0A9A@|BW}0*X?b~hI2a7}G&VN&)9p!;X#pm+kR8bvfJ0H- zd*Q-`9giM83X#$QQjn2?Y{iNd%;WK}f`Wp%hX@dxoSbAIK73#_mw%@3BYwZXu-u3I(vyze$ zZh0s#6^Ce=mh}>>1rQR*`1m+`{`@(co}P}aTet39dwcs8nl>(WBehrnROOp!!S+?F zRSh6F>q$amw_t5=LboH~8_^q={F$OXV5lrNLYS5{WCwQJY1 z;^Ja%^?VgK12Q~3%!Y=B*qSwKB#4g!M0%kBG{O0jlP6C$4-5>Pk;=pJa8e_lFLVIJ z$jAsA92{g-RaI?7r$6ZSgz$-sm4z*-)7{#bY2{9^Z=3)ullor;4858k200~H1!1w+A{fJPJOP4PFOt;=!QOOJdvS|s$`G#mT+KFfb z$A!aM(FOoWA_oo}I3zecBWPIG+1Yu8Xc7Qbat(ynXV0Fo+S=M*LZQ&#f=Wp-jDd znCgI;|0X7t?dG4!`7=-m@08EL(x{8f92)_Hb}lF=?Z^j!i!4@y1=VmV2mArwQJ9Qi z5jp6Y4AnUgh4ZEbo$zOdGWSD-V#*8&r~eOE(6!*9Z26VlQ`d0qyH=V0FHBS(%L7ZJ&&1PX6gSJ$rube~ahfN{ugd=^cT zApj--a7)WnuMSv@wmmK)%}3#=k}h){m*Nky-k(yO5nGpf{rYtrG&0IBFdp=4G4>TmiO%F1xP|U~&W(9{d zrHjk*0iuux$qnIJzm@_hoeu!sWD_SxXxn{87Ql;9+cY&b)gnR3h3T3hzj=85`t{?& ziPN$u+`oVS?_}*ddUhVs>0ST@oY8K>C(uhERRTsBGD*V;GWPUnJ<6@)gob{$&XSo{lLPA9H?33!dQ@e zLz6TS7UiEQZ)j-v^|cUo)2z57$kbHuWfB*cJdDw|DK@)lb%m$XsAj^YDfAA`iQ+UcEYZ z;FV*3*1N?CM`YW!ZT$j3CLaJW{UkLp9SE0Z-Irca8jOvN;T>KPp~}V8Dxaa=;`#*%k;lF5}7a(#Cs$$u@cklRBMkmk#^*xHYTwR^$xnoWWrxMq$U27(4oPmYyfPmtllUgRDOpqscR>~u~RaREE?cKZA)~ST;bDu8XGN#&_$ zIJIZbo<%*G%L38e-F=80vNax$dr1r%5xWB+8V*azDn|ZsZujoppXF>c>va0Tg9rX6 zPoA7700B6wSx051xIFwK01--7CxXG?XFZ)Z{C%Lew|56oDntMRi1FAF6n6ll)-|$R zfP=!~h(rV+LX_#)zJ2=_`+dOl7n*1^T0J~GT#p8vB2Wz}?=z@iM<@b4B@kgM1ba4b z-uzX5q4_R;Bl~WCrTlJwCtd=u1mIg9{|YbwlNC;ORuKsD00000NkvXXu0mjfM>(|P literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_archive.png b/docs/html/images/icon_design/ic_menu_archive.png new file mode 100644 index 0000000000000000000000000000000000000000..a4599e37a063394c74fd83c3d255918431941641 GIT binary patch literal 1354 zcmV-Q1-1H#P)`6pHRCwC#S>EU5HO5hL&7%XpV*!5}StB>BVvHg(m$M3MHE!3Wc0{XfHkWl8|29Lklsu zhb;-L3<-GYww0WfSA8>j($2~neb~u{P>npy+mUAUe(!r^EeHa5m0Jy7@m2w-08{`f z057-cig}H|=``j6<;i4>-KTNe&pD1W z-~Fch-rAM5pU9ko63mau^n5bO@ks#8u?7R%w1JOk9^f(;EWFU9z|f7*Z2WMZH_NwR zP#?hF-rk$tuex&xaD-hj!SM2gLew;}eR$)u8$ToU4}l*Q5kOWH3MGuq#Y->?A@c$R z2c=KuIn5Y@-s9e8uh#?Db7Sp@5%THv57+yhw>xVapKjbIEgT*fKxo@|F_?ge9hMma zTm+EOWu3F2eXb4O-=S1FP;&5ieHtB&gQtUe=ZW(<-nvMZZ~_4Skth@T0!rCznA`Ys zJIR1BG5*^$rT`ai3&2hA0I5^N!JHJ)QX^ZY2E-N-kcMEs-+rUL)p@J4OZKTf=cpLv zlP2Y%L-K_KResS6$0`J3+qPi-))%){G2*=QqGG#nY%l)#SF6>!d-Kbichj_xX+mNn zKX&FHmd`KmZf$ODI!~R|$PZ#?l*f}aKlCa7$3ry_2E9Lf7x?=nE#w1`na2dh?fO@` zb;&+!gY}vf-jf_XqSNMz(rImf$n&D`i&{A!pe)NTlbL;bS<|*`;mjfuNeo9!#B)BI zfGk1-OBI3$Afdl$#mi~gfytb(KAIOVWNZq$EXk=ky(FD7^7}{+Rb@u4kV7GW%kN*_ z#sp=HGJ+%*-HS#UEZ1DLJ_4qsNy}+#$**=PA_e6V8E$0aHSh-$=KP6@W#*Hh#4~<& z`7lK*)=D{PTuKA+2B9N!3BbcY9xe)dl{ZgnE1|jMUa9k0Yq?+=Y+F^}WUL;>AhgjKmpR4&ut#!8bsJstIo1+Sa2Cz(C#Gq8%5A>90l4k@zd%Zhy zVddSGN2(KAEieA>yZhXfhEaWQ>gH6boLM&e1?c<$FqEW!j6^o@VCVOp#p|D3|A^N_ zLV8qAap{P&z{rh%3qT{H<#`nyJrC3K@j0Y!D3e$*6T&C3`V`Dt4QnF#1oIInV}x^c zHy-2XR5XDQ&%^XQ)WiK$(l3^YO_QI%Qj=GjDajIzHI+qY?8TpBO?47enNT1W=rC2{ z%4gtGQAb5*`GPc$nvXtN21Nnz1#g6i zK2_=p{O-zym1}7G-{HxtIrC4>6L8?5F7Kz${xpQupX1 z*MaI2i>CNDYc274U4z-TvGj3E8HKd!|HKu53P1&*0`R{E@Sgw!0E4eF`dICuasU7T M07*qoM6N<$g28)?i~s-t literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_attachment.png b/docs/html/images/icon_design/ic_menu_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..89d626f6cd6844fa176a844b47d0c73b169d9473 GIT binary patch literal 2247 zcmV;&2srnNP)_VMx)H#3KLCX3JoaU`eH85mb7~jXYCjcHYDj@tlgliSJi907isJlUEMXQm5yeS zH!`~eL-KAj8zhA`QNdXRZm2R^A~6Eiuv48|CEEA*d!9Q>uB`fxT)JU}LuW}ReZIfv z`}^};n#$#}_+NfBZ3x&9upwYw1vKHfOC5B62ghyoT>i2PAmB|nG#t7T@hOgvam?c= zeVGM#@S*g(>8}pII{e3CskmJa>hFx48u>n6{|}B&Dn2XJs;qcr)EI6;Sg zaWmdG#@`xmz3{gSKg8cGz%2S~CgV7z)f8niL%MsBi0kz>Bz=sul(4B6N zwfDaA>MK9X-^_Pfh9%4vlRcmXHBp!=h-@}XMw&i+=Cu82km_^jv2HjYyb zze~awZWcNXTfVM^G+qIEAjyS0=Zehx8R5DviRg-cE1La05o;AtS#6x-FUy2w&ja2x zIKqD93xz_bZ3EoUgdO7NS);|6aA({dNbpE;Zjp!{UWpHsol3PttVKXgcx#)*(e>eX zEx>c+CAcs{rm!8mC$=N@k9degW|3aoxWy%eoeQDB4AWbxmh$Ic*L-N5;m-4yi_1lQqyV z+W;PRU_c}#+h**ov3UN&e5W0@J!qkabgD}I9glR3R@D7lPOEc$XKd$>a6V0WVQ3Ic zb`#njymq(h8EY0$4L>9!Pfdy{3fTrfJ`IrG;bL8a6&sCBJQ*Wf=xm-@*b8IE8M57cZ zZ+R^%P#+$?C(l##&WxUkBLNxSv`twmE8qu?4V-XGZUmMQY`c)L7vI&4<11)zKfau~ zoX|AQANBA(lgegyR=WaK@JEM^rVtk&o}~gl|~@z~2l%I5cpZv(15}s`H=)+mZ(3n%0iHZR zRc#wS58ENJwfhxeAAd^>i2 z?7^#PL_Tc#;0$5d{T-bh6DXC(i*9w~3EsKS=^Z~?0k4KSdLPG%;Fl8Md4CJM`4m?X zbXck=0JwqZb))qcGEf4>vqrcev_l`u7T_BMQ-3n{;Eb>9d-H!e7%*vfjVcdl-tIUCwOmVWOtrz z`+A#%PfOcyE;P&Wg5f(?2VYkJHXaXo%|z{*Ce=twKN3JrT*B*Hsblhv$}Mz4r0{Zr znjFM0MBam^_nPHk$F^Amd_4j5I!Bi+0x+Z1ct`DwsI50)MjwQqpa66PDoLTY#tXOYl|*&CD_z0$(qQNyJvN2JcskMS%ppQgK_5R^k>a(%-Y! zvJYc;JAeW0J4);gY$;zqcm5ogS=|7%q51%3e89he?@BfTzFr?_V&CH*-SSYAVR_NP z6CynR0gjh&{#(`jw)DN&w-063_dJzS-spt13BaFf6#VB;qd^&KH|W-Sw_LFr0d?Gs z@!%Vow1N*A{_KOlC%T^KdJ3N@Gzz|+0Dtzzc9HMdsD0@@i*rRaz0IgJ_VCH!gSmWe zKUFWk5~;{5_?e|P=ZzG=H(9CcQkf(R(Om+}>yID(_0d1mXzd9YcyVB7_QUKqi*v>8 z`I~vJNEMT)?B0Oy{z2tl-SBI8-a{6m8%|+J`Esw6g_n>hCvtn(Oc#JM|HKc=Z^;nSBO;GcB6L`B;hIZBQE@1&IoXsW0% znp%;~73H#AQATg8Qd)VeJNR-p^?{0V8K`j^=FTD^UkLQZf3t1~*bwl4B;daS3;=ze VC&PXuL$m+@002ovPDHLkV1lBfm~{0TE9YSf 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 FV1isNv5f!# literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_camera_video_view.png b/docs/html/images/icon_design/ic_menu_camera_video_view.png new file mode 100644 index 0000000000000000000000000000000000000000..f7e52c25bb60db01d48f85333daf4bffe6f539cf GIT binary patch literal 1474 zcmV;z1wHzSP)@Pjf;fnx(TNs1DcniH%hh7VLhV2VrA~!{qy7WaX$yi5M0^u`CnhGj z>)UsousumUx#y&VTe4x3BgtNCe`~MxeQO_Wi9|wt&BK-lkOzgwuydc0p)Scq8J{nFA>*1j0Tt5NtyRGhI`%-_(^03*U~|9rAHH#Z^_ z3c=9|Zy;>(1WIUn4SapzQxMq#fCY!w>lM}2)uN=NBx$s~yj&a{9N^K*C-rO*Krzzi z`T1FNbabTny1z%@Wm?(41b|F07%DC<7EY&A*lf1s7x;U2b~XUx(P-2iNeCd6kkT;O#m?DcDn^q$>nm1r>7?o4u{3# za_ zA08e`W};*My}!SIjh)50&@@%Gvk=7%)LPoz+uQRK2;a%cNs6zwwl-@g04AE6nhHET zJjiH)E$;5_#Kgn|Hjm?Z)Q+6#u7s&E!NQ}>bU?7ijX==wrSoM}V}<})TU#Xv7zN{i zEl|W9c|1JK&(9~8mzQD7PKr83Y4;{^I6gl9j(VAQ zwY9asQQNVK4uMZErZNodV8d_uG6eufIWjVmq_*|-^;guU6CIld2m*+{24K$5&r4~3 zKRP=4Zf9rbTW&vM>e_64nF64vwzIP{DLNSdNG=Bmqys1rzeP&5x3@!-8Wpw@dH_bg zOw|C4sML0Jbo8qKfn#MO2>?JO(VSsDPN1r)3I+NH74$b8{kR@LHoi>h08(Lmd|Xl+ zHm7eN)XifFIh0>w<0wRGL;mdS?EIytr{^DLt*~}6(E~8@Wh#Z5nwsP>f;tfmz49tK zDsNE4Lf24eiu&Ia^`H9s`u0J!yz!{22l`qv@@47-U>K3XrqJ$!){q{W;%;ng*eGfm z9fs+K_A`C{$|fSp#$$RR!&=RbfiLp_poU-*e4;bN@j~J`Pu+Of+}u=K384s9Jk3Qt zMTubxQBUWK*voo1N)b*{+sev{%u!NbKdCR;36EBkCWb87$;nCdLTP;&-3<%@u#hCF z4Gk9}M3M0g4GsBnaiKw~kkARV6MA2kyHPfpq&8Ak(bd%@c^&eP9JTs#40(^7Pv;AT zZ5n_U9a6^tWF6E7dIYth(ZU5BOpyx!U>`(V@5_=BV{v_by#xWHDz#~hk;@xdV`HQA zq4#B}1~3sFmD-@J5Gm9`E(RC}6YqiazN{#5LRCvO(l}n9&)3T@n{x7AXmN2dkj@ta zNPH;(BwiFzz*KV_d5;?zx5YOsRF>b&1%pA^I;g@0Ut9yxOjMl-08}&7-QB%LM*V6o zvNo*o=I_VG#w_vZ*4CB`G2MOFsA&EAPM3X!GQC9p-@cvx>i<8G{})ppKpsFIKpsF= cbx15-a&*|BBPnrdIo-5`{#nF^w9d5Gx=e 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 BhI9Y` literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_delete.png b/docs/html/images/icon_design/ic_menu_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..7d954943d5daf3ebb8e19e1f4adb79e1c533658b GIT binary patch literal 1747 zcmV;^1}yoBP)?OP5Qg%ry zyR_7<)Q3ALdPR}eKMxgOA|fb?3JUF$P^c6x^-ubw_F*ag(&lNzS2O$qZR{5BlDG)$@2-)ZN>wBp{mJ5Gq z>a(dgs&}ey6H1KDI;e{3ShjV2^5e-L;cY{@x*yo4P3(eA4Ba5As^UyDfmsW<`U+S~ z9Tf0gQoU6ri_YRlQ1cCBZ#NYP0Xe|UMFuEdhbzBVj;VR|5yLWwrfRpxUmAZ0o>vou z!qpnM@!gGY?W6W%fR@pPn+wMZPZoSWRzt!`2=;a9xhFT8<>1UiM%x~X!*e&N!EpP^{Alc!R;*gw{r)^UqihQ*#x2=OuwPP}KJg?dvp ziJsS6LX&8FHlo^G5mkqrSB0{1C7|wbm$=d$#9$s-6pncowK=#-)t2D=g<>=i2HUaK zA-XW1xPYRqB8?@Di+#1cmfcMFZVH5+U`@+utR3LmRj)$UXv1ddQsQuUT%vbmM@l{C_PoW$NAAZ7o7HL zLZKOjgM?sefH^Vm!LT6-l_XrJ6mN@x4c4{6g&%Ox}bpxMSP{RmlniJ!%j6VxB z`%mF@Af0~t^jpy99HSeQY>N}8-xG)QnEP#@(gZMZ-#ltMi%X0PF{Ns5jT8&TIarDR zp!_eS3z%w4HDaHz?*pCq7x-1^I@_qnt|<^9X&l~QB6t`0j^7dnE{^XYAU(!+R(PGq zds4E_%H!khx(RXfkY5I(G0??l60jo5(d(euc{!#*1N#W!DR-rPTLFoDVVsQcp`cmr z1s;(F6lNE+uq2mjfz}@o%YK~As62DD6_nzxvW;FVP32HgF-~7hi2HY(u@K09!j2@) ze^?tTDMDKt&941-)P#5(5Hm)j0Za%2DlGE;97YL&wO4(#ql6mmIBJwyPZO8cLg?JCYLSU+RzMkX4BkO zf*hXLJPHvzJp+SEzK(Q@`YxrAN0~F(BQ`? psXzQ>4*qIzpum9w`#b$FzyPUyP8F)_VO#(J002ovPDHLkV1mm@He~<+ literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_directions.png b/docs/html/images/icon_design/ic_menu_directions.png new file mode 100644 index 0000000000000000000000000000000000000000..67d3ff21fceb9cf3ad45c3853ccc77229c3e5b83 GIT binary patch literal 1675 zcmV;626Xv}P)=%2Zfi_`!FgIW}_B#Ote-vgK=74y;2J;!rRq?v9Uqi?T{{qZc z%H!p)E*3BTf-7E&_m7JE_8oyR_?OEcls~hV?Si2j%(m?UUgP__L832#IuHdvUY-Qd zd3{)C+K|SW%b01JOwFj(o40OGz&%f3{+(1f^-3THzP4P;XGgNk7&4fgk?AIT#b)M` ziPzQ2txBRKQi+2f7T{$LUXc`LWDJ&lJw)dT8v?wKVMn!DGT=%*&D-+^jGT++j{|tqz7r zjQ36=)iwBQ9K11NaPT7Lspg7F9%ylmo-ncoCU?)CXg3EU;7iv^llA3#-WWE5m=9Y% zR_i4mMvml=toj3UV(H-$No?iQ?s6j4jpZZYr6zb+pxe4?lD4Xk=yx?)<2fQei{wO? z;gsss@|ds$eu#rd>$;vBgbBU|N__SB3injcymjVl0Q)hJSVa>4J-Vtl!>J1rsgA?jcKaJlniM9purSXVQBT5UCY89zny&Z&2gw-^R*+?&oofq9Cw__6E`M4soV7vl=$KOJf2IK6X19fwSlJe`N|O^;l+MGQ+l`bk@>rMg=AKif0~({8N(0ne1GTk%-qc9uzwmW zIC)f%p#8)3RpG>$aMF|`;UNscoYq0(b zOLpqZsnZKTE?ft21fCK;gdhOVguSntkg!X)P^}VZQZBVPC;?Ra(v`q+W zzn=#o5#aS#RAI}qP#&)@++Vms;B^6BX0i5z_Lf}o0EAMtc&S(xXKJrq0vkd_tm1{@ z1n7E|4kq&UTI{<&Jn$OB17%m&^)wJ6F(Aup9K76WQ+P|2RRVwR{5e!1OW@gPmq0_f z45jM{ZUP0Vs!D3$Zdd$-b6{&Y(H+7o%7DV_2NW!PO*lO{E(VeSuLj_EtOMIs;s}Z2 zdGG{;Q&4?9x!E>&5i1@OY9ogO(wAOM(VF=qHCqkZgV&Od!0*&b#5_UaBuIoU?Klpr z*HQM_ahNZ`9I8L9r$Ngj`LV6n1b9f;j=;CuPDd*9?A+`m=yx8$`HAeTJIs1)F;!RZ z!ZlT4^Rf93RPQvM(tN%1SoF2Ty@NT{4fw9l0}&D~b(`b?>}BdJbzY31sl(G3)e*+x zB)GhCwE@qfV03dH=;TlzCGjmMfsagr=53uHSOPr~8gr{#@SPqh zqlrDn6Pr3yDJp}MjCgoCBDx^PS4aF1c(r%%-5lzpBrZfrptW(*@WF3c;dI6=ul5c; zvFAbjQ3K8cv$jmPV;oS6P*njW!ZjqodM(w0w} zz*Z7E99$|upa2Bsp~99$SD7gIqzUZFcVvCL@J;>y`YmPO;lCOj5;!Dqu*bgw3;+No VUuY4cjJ*H=002ovPDHLkV1j{rCz1dF literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_edit.png b/docs/html/images/icon_design/ic_menu_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..41a9c2e20b247b22a443e8f3ddcc2ea07aaff793 GIT binary patch literal 1661 zcmV-@27>vCP)=xo zZW|;l6#HLvENuBv91| zw;~p5tHh~O$vw0<2O`{>iUkbxz1bOiZLj}Lpb}#}&Hl{pe&3t--n=(%+TY(N|L4|p zOyHQn(I?OZa)JpS;|F({>>qUkE|6vr2}A@DK++&4$R@}R$lg&UfZ$s|fce zVl%zjDG5@{FpN(F9|e}+UJ7Kp9ufydfP;T&c6xSjZgFl#5+zyFG?H9P64Nw^an2YC zj0f(+n1AXaaS#MD;Dgh_!G*8JZjp$BNTN@oB$-U6hK!-H(ecr`NHm&2 zf#xar4i8a8g?a&)5CKyn@h5TebnR&h%xSEinP?<|(wY~=4ETH!^~^-02o!2wRAs$G zCyHC4;CbWVd5cGZM6&joXas>=&EH#?krYYpYU?7RV%an(abPs4=Q7CvC`O7sV@x&ql(W$DLsE0tI=G_vt`5d$1OINv`)JCFK0=eMl zEwka^5fs&amCa0>)Uh$dR!X840$K34tY||u-^Rd;S@0(OzzZtw3rHBo2e4w>N$l54 zAP0QtUZ@~cB6tKrXCV#8f>~KlY|jvjL}D$G>Non|zjFD?_wdbsv&L2%fn3eoY@UPX zjcc`<=JX7bfV3lW_mlkCsUfI0$Y!_VaSR{TX}H+aQ{?Dm~2A zo1B0NRe+c6W}}_a2rO1vXH6G^;O8a#646OlbbSA6soJ3u0$7Mh!JEN>&|-+LuoS$k z=9o>*E$!UXcMBxt>-K%ZYKPrgqEHhnMoy3TM;?N?$ewl&1y899&h~3RFLlppEC&xJ zngahCGy04lSQK(Beq5E9&*WE=@2IV+1zu9Kz#(E#)4`~d&OI-6uhdwod697N_gT?X zv~sJ6Ks*ue$J78~eGHr`V>w|9JTP@Ess> zjh)x;!~)5f4T7&!^A!_-(D@d8Kt}BhogaDt*Pabu7@h*3m|!2yXx1rA<{#&ep^6a1 zl()k>UM=`?1kikhcs%|lYDto$2-^s%1%NmN`}G6MQVZa{`_ZGP9`~d^rNb%7c~DP!7I=CNz49mU?O1 zM{-CY7}P3FEo`QgF9;mRA!+{w{}evY-m_b4VN&e65SkASuqY9+Y2MxnXTn{4Cb;G) z_>1*}FGrvykx2AynzR^?w`-kmX}*j8i-Mj*3*fdltoN{joNU`|t$ zHzx<+`YDhXSdxdm%&whc$0rlX#43c}7zNL=R+yQFgD;j!Q2W3B<@Ixzx1i=Q4seY}>R(T;cR|QK3(z|8t)ACBM1NVQ&#Q`h6~KSfXz;}d zQ1bx|8n%LoC}%7Zcjxa;g;&D20dS|8Goke5lGIWx~|W4 z_jX5FO}o`d@TF#;8O=wcR+7!zwRVjt8;T5m@iC^>RKtpxg3uWQyI+P(^+!m9e}#L` z*qX7;KyR}^+EDPNvQc!%PE4IuRn2ZxS-Za&cCU8vPn80&r{|PVvc#D1zQ6jq*00000NkvXX Hu0mjf{`wS^ literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_favorite.png b/docs/html/images/icon_design/ic_menu_favorite.png new file mode 100644 index 0000000000000000000000000000000000000000..527d74ac670a64e216f5c1993e3b62ca77dcea55 GIT binary patch literal 1608 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_home.png b/docs/html/images/icon_design/ic_menu_home.png new file mode 100644 index 0000000000000000000000000000000000000000..34943f6607f5a96f827af51bbf9591a3c5b8cc33 GIT binary patch literal 2048 zcmV+b2>_qvdnB{ zrBF^AA~9DBDi~3Q&>BP_O(>nH)UrDxh}9qEx|l&l24VKCTel8N;^4u9o=rB&jm#jO5(o>~vSrIx zc)scI;ln5J`!%eOB;>UwDPg0Gj6<5;lSqvw0fY2-(32-mqW13HTm0tDn`K6$Q3M4A z{k&_}uCJ#~o!W`>{qouXn7_QoAtTf;&E_tN(IQ}!o)5l#`}PM%j~+cWI5?O(ZQ3;9 z>+36?J$oh$2E*@pd3o7$=g#fmyg4~Jg}CNp^#OLf-Iv}ybH?Z3%LImW6A8KoCP zu3Whi2f0)bd~9s2h>D65(b3Uj&YU>{kw^uxitE>}$K%>?v)TM9&L>QmFhR8sO(xSv z@>zzlN@9ZdgPG5tKc95&+_}^E9y@E+ED;$QDF9Lcln4k25D5th;@-V`i6>8Pmo(jf;yDlO|14 z2;j2?pDlrbfeIN$0-v!J6&0npt`T0}9}*HGA|fILukrKqGkD{{e*-=YviPjNzP=1z zj#51z9v)7~G(pq(iHV8%$g?I!0m&@lNaDuQnPnXmvPLPJ9dz6Me`a16s@ zv82!r9XfP^$8cW_s}j9U!V@P>^uKoP+JQTF?nFXv*^uC$?p7a9%jjF+(M<~;J$h6C z03s$PhCme0!h@%#Oqo(wSy_1uWibZdDJAjv@nd1L+1fKQGIBdQI?}9GYc@=PoInIb zdwV;dQ?zH#p5u6aH>}s)Uf>P^ZFh~x&CT7@-QE4=C&ZRm|OvmPo)F1#?wJGTY+5vW zoy!Il;Bdx48B&gj#=5eyvb9*`Wx-LcEC_0^fVASzo;_QI2%BADb-5OTz743=0c`aI zMgn;7&D7M?ZKqG4-uC?Y^QCI-*MoO=@P0-M5?WPWULKK^m6dFUyxN&jQdsgm@{Fj^tFyP>LgYUT?gI4&bsIa#;ef zrnI!QY#jTQl@1Z_UAS;zCgkaIdF?6!ytog5uOf-lpvx4HsX=%h&~6N?3(KSyJdNKO z4Q)iU$;%ZdO&=vnhNG{qZxD`YhvqXH8yi0d@TLU|7BmmHKNyYxv%VKq;08YbkZY6x z0I;*B6RfsOa*z~ zKER-zOj}XZ!Ho&L%&)ItFC}@Q?t57}St2PveW_J*LiZYG^mk*fm1|8U@Zp?LM(T?kFyqAkVeW%7Uf=NE;>7LkA0ya$EjYVE1HZH#0q-Y1q zq#c!~NxtXQ6Bxw$hObwC!ZS?zK7jsVMHlZLYRNpB??z4XOg_s2?n? zuA}K(Svofw$ArXDm#|jv+FX-8&ztA2muoJ6s#E8@k(pa8k;M=&B)$Zi0IjCyyPhTh zy-Q1JFC?dvn>i&oM32Z+I7JBZ*in zh68CJe!lC2uA`DHO_D|oZ9Fgn26!(>e0}$s?#}>3t0F5*tP`0eNF1Ob%me4<15(Cu z!-RN`CdKGKAd*NWazq##?R>5C?ck2!FQkpKNR&gsMNaBH{mtnuy?wo3003EOP?%5$ zCgaJ0=Ro1a13_9zaKMHSScq}Wpf;vK8^6XFIDP_5>dnqKIZoD1iqxn1|8 z0SuEhi9|v^{NCYnAiYh>vjE;J2VV+a;=(7K z{g?Y+N!&^t=LBqyZT3VW8ja%Exs#usJP1Q6icZ-|O$engbbsEx8Nj#u>;25<%Z0~0 z@N9l^>|q^XKCkab_=OSWHnmBJQX}x51^4ImEEfp;iXX@Jc7N5qnS@wXsSmg)>MR=? z9y$bo+$ec`xfQ$_->tpIswmiXK7?gvC_} z0UTf2bEc;SoNl{RE13%u_6Pz`K^F@4w)`m9bQn`JU%A+L{s{P1WmA(#mR71a7r(RU1%$)d4afy;j*9xZ12E#3toZG zIWj)dPI*>AGx8K80ARNA7tzXUOlrTjrVC&ytp8$vMLEykFaOF0C zqbA54t-UoWq43nS+6Wo$O3Gqg_GsipplW1zqzNSNMiaux7et;y2TY3bKd>>717w6o zx;9e{rzm9WN%QVVB+>)~ZdO9T4artLPKe+oT{1~Hsol87yh!wlGeBg*Ds3>wwO~@! zrkxjfw$Qb>M8wcsPyXsE*MwX!=?Wv}=Q*0q0geC7F`b*rJCM^1P$*?Q6}dXpmW(97 zHvFI*@ccT5aD{D)T6!VlCgZU!G8PB4+rKden;J~5e}~JzXfd1Q*E%Gglc_vG6blUI zdp$x?^DU%-+{RmAe+yIdrcy`)g&Y|r43TJ-(g;HXRXB#58K2+B!(_P!_aDIGR1k1G z5Xkr?|E&e7LaE6L5L*C7XB8c&0muYyIc+zc2+RfA0^=}Yrcm18bd8#Vuvaotl}aUS z8qGkeJ?^yecOsxe*t!GkC(KDLDS-XjY^8u(!fIYB;n34YX`;EQ`Hs_G*~y8K?X0+5 z94N=ptoH9{a^!7h?q8+`AS@5i&TOudTnKO00-FM7`2tjG5!1`?7304&%U{`@7BRX9 zq<@z70~HZK+n){X42^;02CVzng3V(C;3@9pd1-^4q%kh=HUOLaG15S$5&~JO3fv7e z1x~=k8OOBGCV6AgD^MrR2VCqrH&-Um7&t-uiS%N2WZaBGyF=H&4$m8T47cI5L(fRr zBF`R|Sy~N9v)by&7_F?&TB8@{Q!wB8;LhN+V&+qdK$cWDwXb8}hai>f_+n!dUa$uc znDa-5A{*ejT4<}Ft;XxY%Y&`B-88EdRD!W@?lA+!x%iwgcd61!sj7rgR`EthqwB&~ z!WTgvtCCtWr&Qa4AmWp8#S%DKnwBi|GAne~bL(EXIa|BApr0t^5E7P%V;HDYW40000X1h~&HVTAWC60VrW-4b+whDmcGR{=P~r5F=1BwFYCpP5e(;|9hJj2K3L zt^#naPiTCt@t|(%3+|eKfPG1nPVU*eX9+PsCIKW_mKUfVl_`=k^2$4S8HT|k*CX@r zC}Q-DB?h<)38E-6ZHi{C5(UxHh#?qEG{xiwckr3dvMDpsBieixjYWWDAlr<47*j-r zae;_n%ET!Ox9QpFGm@G&B1|$RW|#&WE&j4P2FNkRRQTLex1{bRyt+vNmCNNKcNAz8 z)BAo0syK%mqh$Zr`;S2=kIwY09OmTN2xPEtX#y14RT5wzgApgw_7I3EDR?~iaA&Zy z8j2`sTHAC8@nwWAghX$Jx6c8UoL+JG?=Zvn$zPlK2r%@=1JP*I-SJ(=gY~QHFVTuy zv~j{AfW>&=Xkb$4V(5`zFt|fE^e6D{0ieq7&F?kOg{wRT#Y|CT<%nfy6TcUj(YmX3 zCwCtn2mCfH6wN0SlMv*K6R`Q#0|yVB1;n<1!E$m7R|d_J#&wPBI@&u{Rn4j5!d=I_ z+dI|ER9SrtarFW;{E$|zxk0}+(if@2SO(u;YSGdi$}?|+3pupl!sg3;Gki=@6eD;d z_-gkr-FutfY`T;ofLkqBOG7=Ol`T74HeeSO8h>7!rddG1mBEA60tu6}Y$jpT$rWEG zGBH0F;>0@f)zr$#5jx z14ahmE?sb!-bhbG=|126uBK@g9NXHp+*25N|GZtuam9QyeeIa95##X;1hU)*7Vrj6 z1-2@JGTGu0Oq|BecY|x)4NN$&%(WWFCBWwnn0p}@ifL1|FPb+uf3B+P6$)m)dE7t4--msl)f5fZ;#6@U<`2ehWmKJ^$JHoW>;1yn;KM_H#>QRKVH9 zz|?Hbqj>;>o^Vh2?WXljOKYlYHUdhIQ{8?GK_0-|$rBgip|<-%_pTHyB6xu=ryABa zeCn_sBj%I+2l@VR=rpDnNCl9Ch+Hnmxi14wnUxPbN=4v@K-d7mm7joTYk%yevSPw>7~T zGDD$|%3pJTmON5>!XT` zK}^U@7I2Y|J}#Dtyvg|n0lR@C4*B%JFpYT(R{J&D8(oQ7Cru^3QdedgAg+^lDdA5_tU?)KuFX6bq{iE%R(d=wxR`bff zw3C=aX?b>J4()TffIzQMJ!EEK-pTN=XHUykEZd2kvWf!&%84E;*9c-Nkn=AkC=N&~ z+!k&mtv~2l$OeU@TqV(-sN$>et+4w9>nJi!XMoQ0SW>X1SklQ&-I@G0|08rRmP-4(7ylx002ov JPDHLkV1kV^nZQ}IcR1jYnLQjA$EKmyOlSb!m8ID}HS zL-=uwm>A=8r2tudLF1;z-^YyD%G(+fu)Vfe3v}%5=nH{s#9gLM2xAjO4edZLg8OhuorsY{5BLhTeZBZ4OiD^3ZHxx;1e>QU9t4!{3xY_ z;`gP(?vqg<&3TWB_&=-xawWSz|C`^5pQzeH~pLUATWm)P;%ZVP!8At7khX z_Q|$@<#yjUeElR#>-N^CBGJei)B&cub$c`#eG&@o#k0?gA}USy#Q%m1r7X`-S30X7 ztUgA!0y_gg3|$Uw&`LC>l|lhs=ffB^)}esD7`_lL6>Pv>hyqD&H%uzaGE-a%Q(Y=k zoGCao#Lf$mWzTla;S+HW;Sbe3QuA9%*v?;dJ{mk5Y|~s2Ueg%rO-jKM7t=jD&Ac+O zEATu|n^ZpJodcYskY&^o_3t?L!Tncbk=WAcX!KE7X#prksvuz}VY3}g;eqviHLGj( zP)s9XeJ6)bJ_m!?RZUH$EYDn-7dyAp&0Jm=3tb95lr4mERe+Lb43liDU0eHx_y~FB z*vOfYLnEh0I&toSA{mySe&hv9V(-+ft=T~yef^KG-`oG^{{8Ued~SJo*R06=cZt-I zJfh3```MD%mSay`Brtg)xe=2t4oAcD>mRHCCp`?F3u=RdgNNaTyJ=o?a&DePigt)_ z`w(IC1DDHnW$^vMySjhfeH0!kL*e55DorOWzax*}o%3F=w+=PpBRu(3D3Ujfk`nU+ zPX#uPoE-^}LIcMK4tD>hdyihOe_|NMrs1LCmt%6QjE!2*N)kvev9rGAz9teL3V#m2 zJAk`oZa0K4wg}HGP%Uw^il90-iUMa$rx&>-F}*Vnqj>kzyXzqQFOX~w&8;y&USsRl zR^lxZO@N7-FzH2}gks}KFDVyc!A<(z`o9roG7@qhM7fXPk~3Rj#&n{K-$C&>ytBi* z)O$);K9O%7NDJTj%g$9OES;2WE;rCY(}}mUP&Cxk+Sb}k9`Y{pj#TIsPvHD2k7t=D z?p6IB{Rt=-B(M3~{JY?x71M<`>jMFS=`|Q?Ct$V@SJwnLn#`9<&~v%>h2F0X3=TXm zyJQCn3{#3zMTinlU#zpxg-{D{yn){LebYBwQC`smsHLR84uzUfsK|mvC{$ZfWxuPs z)y$X|)+gjK6-UDF2T~m&W86&mTomAqO#g}gZiI!Cgl9?$;!LZlr7ELv0*<#M#MTfn z_#X7V=aOBGc+C%m-lKbgrvu+d?E4Apkq2qGoWAjdmz2KR$7(wSg)pp1djrRx0fppn zIQ)fYo_*$HOzKb^N-8X@5FipR6bi9mI2f<;R&8n7(ejqyF8muPR1XiF80djV92{{J z^+xzeRc2CbsBU!~Ayt^5I~#Q7l75L+u4M>seV>G9PBsZh{RxC8s!#;x`Ew&` z)Mg`Yg?4175}yK5P60Nz<2+6=%Q1UeqhsFV)zu|4&8aa;{^|XINfYqA1N4IPD?su0 zLg7#oSg1|ZAKP3gU?p@0u=y`wq|c=bRf63>0eII%GysCf9I>qZ0C@$!f3Pw?@O2^ZpbD~n{kr;>VZpcxLa2;tZ<3nztga; zVJBy$$G}QY^mpMtrzj#aZMh1T^U547^h)0weP1Lc8rC=LAt87in_FD0^~A;MMO>_2 znD?;@xcsngZQVAU8-wo--qrg`?*V+v3D0Iw>bX{cOj!etsFp_PWT5{Z=Xq%ht;1mq&Pj6vzD zkq<_GM$I~{Y@m>3)Dj9ik;L&_6v(wFruCRb!0NZr%vAD4DdGv2Bg8_(757(s3j$uE zcR=J0qrF^VE}294w;%t}v^H4BKUEz4}C;2S)YF=OH&IP@~6$sn>Sb*nOQ4P zB$QZ~?r^6nbj-5sCxe5M$D;7ZxQ=1+R;DtlzNRB3!NCOwNS@`TP;YZlM9mTm>n3!aM&f haYupwa|Qk@zyOL?{8ULc+>-zR002ovPDHLkV1hrT#isxO literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_more.png b/docs/html/images/icon_design/ic_menu_more.png new file mode 100644 index 0000000000000000000000000000000000000000..20915277cbf3766bd5d378fda9ba27b557c59ffb GIT binary patch literal 2459 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 FV1g#S_tyXb literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_refresh.png b/docs/html/images/icon_design/ic_menu_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..77d70dd4f0534271b71ef4eb87f5a7a917d944fa GIT binary patch literal 2450 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 AR{#J2 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_share.png b/docs/html/images/icon_design/ic_menu_share.png new file mode 100644 index 0000000000000000000000000000000000000000..44db9b16e24582ac61006501eca50f5dff167797 GIT binary patch literal 2194 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_view.png b/docs/html/images/icon_design/ic_menu_view.png new file mode 100644 index 0000000000000000000000000000000000000000..69828a9ebb28fac32a9e6155f823820802185ba3 GIT binary patch literal 1929 zcmV;42X^?0P)W$M!l0z^S!BY}PFSkjD(sK0%)%xLh#L(qX8b+C~t zW4b>~BUH%jgmWlOz;204XU;Zl_WbVNORsI>><1fTx#R8i?(*LIJiqt(eY~$No6WNS z@?k3yC=w_VC=w_VC=&R;6R@G#c`M;pTb|$1KqF|w{5ry){VN1)yg7KA&D$(aqGTKi z6MP132yKvGhb)A${{#Wk+9qg`TI-jsRneYkU2-5<4TwrQlXj2qC^9j{1lB8+Nn!6| z@3+AyI_z-l<3mlgni$lnDlC2Qd_YMAPrJ48PKS#<*&l#$vZ(EEzY*pl?TTeegZs6TX|A z$XzbC>~sm3Rwt>gvII=<&ep@NOG7_|cH{p_PlbocvYZ1y z8Q>F+4DV~Xl7B>hiR!cAU+!N6NB@z}#@#|B@)5A}a5xX(mxa1QM?^t%x++`-c(S-) z=v)Ubi2A)GNOaqWNaV&$Z|~f(^K-nu z%}I>p1Do%e*!pQ}O=nl94&LJ#wY=%1I`}e?o}~~P+r3_IL;Z^S20ZT7L1qk4R=w*n z1`P!?nzd@jN; zmUC8F(nDrP&GMRt=(Xs;>90>$W47EN^lmH}8`U?R8N<3sEy-f>Sap@J>O|F&sux_6 z>kx%reMWhN(xVbiWr4!r)GT%*)_gAljsm1+0ic^=dd^WD78wX)3IlBMKjlA9A4U>e zPXl-NbkjRZR(*m;a9h7_hE+(6f#^elroi_um+OOzmoA>udbB+WmdGVPeYViov%o`s z;p8~&_e(%eBBW{AX;^1`=tHj)03YHpyA+nxlUI5uO-L)L4_RCHi_ExDjQ@vum}LGZ z{g*>$Lt_Jj#mV`z;X*kf9|3ZdyRss8!IH}fFgccaBoYZG-V!VM5Y&drx}2 zF&tME88luSxe_Vox*Wk^y*UTB%8iXWe9l~GKA*3LXZSe?(RGaT)Dt574daE8D8rEO zK}hW_K3l_+nE}oFnDQ70!k z6CDQ+S#{vM{d7n5lzL5li40^p&LN3y=AqN9j|K~6WP1T0$nZ)L#R}`kfLEaDuvyd4 zY#>grM-{q+W+AvPc!I*CsbLdz4m>j?fitzpw`d;+Q;O{V2Ku?l>LzK(ri;cz`wcC{ z2^91Jdx1Qe<(&q3I=_v${0aF2!4PFpuRIY=c1A8oD0*Zexs8w<#dzi_bLoJ|i3uD% z!@E9!UjwIAiO-fdx4Z%)1gID^9awW{eSy`1qZZ(QTVmf&HEQQ2^aCyXT8`mbOGMJ? zG{f|h)p}R1Uio_Cibeuv2dO%Qz76LoA_w`n7O_B*%!$V?Kj@%qRa`Y!YgGVc-0f|C{~ zL?YfFXNmpTUq9Boc{KB3Ij6>mV~1n56`1oxtl$Pf2VKtO{(igv?2SpX#oJ zS#Fn7j)1OT#;R%qN@F+qg()kufHQ$psX^A)Gi;d{M($|#FZ2JzqntJs@YCH^F?S}2 z$Xv*(0TOx+z^idTVOIiV!uWF)rE;t9abItqB=wJMs}x!@&*F=I>)w#vS{!l<5AwQZ z(6T2qEdVpMwK#rf&R$?wZe+R}S;f84B7q`-B7q`-B7q`-B7qq^{t{pSw|IVmtc8gR P00000NkvXXu0mjfn9q(D literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/ic_menu_zoom.png b/docs/html/images/icon_design/ic_menu_zoom.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8c4e8f99ab406208fd8b65732371c0381e7d1d GIT binary patch literal 2290 zcmVXlg02#TuFRX5M$scOKt4=WZaKPP6~=7B~;! zJb-^6Kw!w8w)BwwxC0OrBhNR20t8Jsh%qo^q{jmQPv|g41Vf^I!@CVL9oLDut}96) z$x(~cV@vK@V&Gn{Z}g1?kkJAN2;uWFWQ=IdrkVwYVccOQt!r?u4)ac@s;K+oCGn<; zM=L(V`Ck|gM!&F7`dk4B2(6R0W3{i<-qd!m?P(|FTp@>KR$N@nQZquc z5XtT8aw06gK<%10_+hY;mjvBtD18fi5v zJXwPF*)2uVIZRH;d{0&|x(#M`*i2HS`pp|RKZmC*#_w=<8WR9P5vWSls;X-9h*_au zqGyHYg2NI@R3Ya|0!#;YjTDQ(ji$pUV@C`p(9c zLZ{Mx?W?snn+bEJHVvBBG#&{gxFksgq!WN@O0Ozy#!P*lQrx6FvF*FIMXZZG31Cs2 zGsFycJF*TyywJ3(>1#06LE%QJGX)SF;d(wkT)6+>{%6&w8YImVTs5R}5D>m;PU)P5 zrB|13!}X&gFiDVJ+)G?{?R9nW+3^Jcu$RCxmT@ZzdPPwpt)I89!KI0Uk^^G_AOgm@ z75+VwG|x3og5Y0~l&$3p%c~&FFLO8RKK&*T>;W&+zhr=MwZBIGzixB{g340LUet zrJWw0QF6Y+4J;!#ql}IQA zG!IfbNA^DCWm~wANJrye}ZWIg>g&$AZ z{=xQ7xur0cEM0Onj!p;`BA3fMu=l`pt^fjzKXN-955_Nzcb-i-5&Q=W43sS_`vqi} z;K7@6Gf)Ys_bG?9^xT+}}w(h;xmDTBr|x^wX}&p)$CP$cnv9^AmzHT^fZ9mDup2u@I9 z09(B7rFE|mC1-OAF_6m!XU(3q)7Km1v>FYFGI~`0q zG#HC(oaYI#nH?t4?G9LHz32%}h+seM#(y*&8QEI_h-x$^D+vIV1li5u$tnZPW!Y@Z zt5>gM6T)*wqnfJ6Va5@Iio=6ou#1osw{Ll4%ga>3`dZC&E&%x3%EIQ4n(sHe%{34< zLQRSn7aT|bNqG-1pjZn#3{2*=pM!Wl=)FfEND)@I#ZWXdB*pD@Z`3_4TFp^|$XmO1 z?P!3~Wc?+Vm3-gZ+xt0$E=E^2-CN#D4W?K)5N6>#j7XTpYjPm z&wD&+CxZY#+wF7tv$6abi%yC%IViKPV_jFaw6t8X==MeX1q+S}!09Y(c?(+PQWL>2 zb5VKT294f;^O@dq3g>uLjC)yKAcllN zfKSU3r@Jy2@BzseK~DQ{`=Ry=QD$6#7V~=u?zNYFg6F-wpjJLs`7HvwfM$^UWj+%J zf@9Q8)Z{R=X!Ib?bZs;+WNkF)ON!pwsJA}q9TR{80>s6pgvc|9;pIWk<<=W9&$Z`W^x>n)`qcAShG@%1A%1cah)t9z?%^+;<-=koUf z|0*AW*x&~-l)*r+o+Vy{B{qr0gVbnip|RM!B9WxEmOr?BHRyGRA}QHs$iJ#bb(4On zPWfcPNG<2N1TZ`ZMcTnvJUkGhTcdMYB#4*9KN*W4&bd2*!IttBJcx@Si z8V*FhZpi~Kx*^8o(m0R9$W06twZQUzQN;{X5v M07*qoM6N<$g3>B7SO5S3 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/icon_guidelines_logo.png b/docs/html/images/icon_design/icon_guidelines_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9362c8f5263af9028a601e36704bcbbc040dfaa3 GIT binary patch literal 44163 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

      sQU1)F6vA$d64trcw*+n_oNJ|dO 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/launcher_light.png b/docs/html/images/icon_design/launcher_light.png new file mode 100644 index 0000000000000000000000000000000000000000..8a94e1dcb59d582513f104c1b099045d45850232 GIT binary patch literal 60386 zcmW(+Wl$W=7F`l7I0SbKA-KD{`{GV;cMa|u+}#)V;O-XOJ+J|Sv$(wd-c(I()%@t0 z?tAY!=brA3Qc;pdMIuB3005}6G7@S40E{8@HbwjZeZqS6H5>Z#$w@}X6#zi~{ND`& z$jZS70Face#l=-rtQ_4OU9B9Q$YsUF$(>vrEv)U#0RXS{Ty;wg^^>Iahtt7|4wPL=*svYGl|q0IV;-c#Mk5 z3lN$Kz?Qn!61bwT#Q@VmS1Pknpq-jmGDr`R(HTKYi;0wWMi!4Ao6F>bNtOuHfOjSV zTM!5O?#&bcP>_fNo$bx5*9=}LlL!E?=jK26#=zV} z7|0JFX#ZC9ze*Q;0R&peCOHEDh7#0F8WT;zqlf^2L_rW;y(rOb zKR!brJaIqVW; zz%9uB?b1vr7|T@%{#|8-zMdc?KFZSf7axIr$c}|+WKgVuhv8GQ*<=G{HA>Y8VZCPc z$Id8-*=&O+ELM6Qc)Rg1#P8OnF?}ZY7WfxPu!nAhN=#HrA)4nZ>H(M zd>q0zWn+!dmSLb;#!C3ijNuz8KEzFp6(!F0wf*M@*@hC0d8~P{;sW9h%?e?Q)OqM(N3gp5X7(h_9jBj8⪼eS(D3lQ_#1M>XuyC`UW`Hx%GaZ52 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%0D=Rr4rN{;YgzWUhqJusl5y8(a8Do4k z@%Y>d0U*?s3p1B`yAMD6=$(@jZ}?(irG9e|jrz>=#jKz}1R?8g%xzz*)r7d7#Q*+Y zdS&6x`KjP~Zd>=sdSkBXKn#fpB@C!Q1Xu(S7(7;hg2*WW30c4scJUb1iL^Fhq#|X) z!05n)o&C^FXP`V~*we~<&x=3o#j4yhYUFrmbm% zQ(@QqbrEvPDNi{Kv?xDaypTMmg!;gRhWw*?>7k-I)ni(3p8jFq#^fkdn7-EN9Dd-H zM*Fh|tCkUoSYg1eHK+dKL36%!|Mg>~@63+>=20rgidj$@VKNjbKoCJ-?0CNkcgBz; zixEt~0jLxJG+G;qif*je|8jY`6~vf&?MLkThCK2|0s!DdI|Lv#CRQXB8!)GtcXeJo zjKs^xYnDPQL@}_SBBZsHuP<#fcf*AOf}K%wAH7I`6<81glxaxID85VQ=ahZQymRf^gXSl7_8x>Ha8&rjx;K&N1l z5XtnOXFwo`3P6cCRDz&MrXUqb(4m0ag?B(7k*h)XbUg(!7wop>d)vvqEsH=v`TNQ2 zDG`tWiI9{K2^w$HWYErV5(E3;>moUt6q4%4@IfAm#!1)4>-$+o`J^MFefeXOc6)Aa z4vSE34<#fgu)qL~hTfrxE?V>x!xs)#){uYZAP6dzN*7D-@qHt&o_c#_`^F$rQ{Q!A z=8{htM4T__8xk)yJc-V0Cm$0>#zeCOyI09#FJgW<|@eOpMOaAsEnIejXd#P$h_h+$+V9Ovc{ zNfm0fYmmw(41>W%WDv^2L}#FT7x*ePykZ@WP>!ND-Wzn**VpfV`DLeVNhCcLO&A7U zipPCRi9KbVp3L0D0SXO8Hg2g@3WA_lQSb4sx6c14(3Rd1%t3MCt@A$uZyuMu^OctU ze67(=iHQL~3p#3}ASvUm<%A?j?Ul9ki+XEzK0I5Y?;NX~8jB`M(PU&w8Uu7pk`O3D z@pH>4$cRD$d~YlLyw?6V*A_orZ?p+b!azhytg!0SgJb~(;QTimIXlDaAvu5$QLy7b zgE-i-dQZ9`X0V6=3G;HxeZJNNLSP2WENFI`9CGi*{LI$TP<8)*u1sAB}}4R z%7Q{#5U}Hatvcj_5SSYYf04BAZOAW|o8wwfmZKA8JsGQsNLNBN9#F}I-qtZ?-bj;; zcI&}rdSl(*+-$Bj6UU%HKr4qxU=;!gbq^*8Nw)8`a2b;0P}f961_=o@?nd|?0)g{g zRsaDC8tvBAm96`ACd{zZon!>F|1vrtiW0{lWoVv|Ep1q79T=UfR2rj64V)L~tNzyg zK0En5c6D&~ml+LmD($KB{hzsf`Ep;`j^aqwpwQ6Q*m6%zr>_O&DevbKQKeETm&;GM zJ(Kq`|Eu4A@Ak@v*OuO&uU&52dfv!5G4aNksf!n8F6AXHdpj5=K)0RB<%QOAtA!W< z2oq@_=?oy}=Mb{b+_!$qjOpBBi=CAa}jBz72(4@0{~` zAAPrHh?4l8Qq(ZmosfvUrReI)%F@!(pg`kYs*Ew2bGh_(DD${bTz$Rmo;>34l(PnZ z@VwP+ag_bZuQSsZeO@s19SZ{xBY+^=yY=>Gn;UH*LF%pE~50Eb0s^ZA_54G zK!g#&30UizmRC^&TLtKVkqE&eFpvf$1`*+c^^^D?I~T|NY$1yxDJnuZlC(~^_1HM0 zNo!?#6cBpNT}CO(cThpF_qUQSH=2&UZ)G=n;k&b)y1+*+R%K`(b4{ZZVE~3yLAiw# z^nZJlJ29f*_P1m@@pxLS}W;8s0 z<>-SL8hoeM4^5QIWjOFl#3C95Op(RXM-LhcwZwoz$1Tvv0Vrl)>i5=7ncX~KM={ZP z1!+J8P+|c;M^zrxG9tb<8V@dh^(WLINWQYlSeuo8L$uOhGfC&}h9|Szh%P z#=~iUS=`CscLWh=IQVFB>p>ed0U!aoF59}^v)Ca_xb5SzrHPCROwb`n2Z7P1^Tv9i zzM;m#d#g)hfijYdUk(X;L&hlbl)<03^?Lp0&6{0CN3pmdq96z|)!055WLMU(r!&ph z3v0-$39a>$0T;f~8_pp%RBeIHdfP!@wNvPbEP@oBWb)6#Ae2APa~4DZNp*lWL_|Ra z09FK$u#U}^*Vw(sNmzS5<*Vl)LeJMpsp$DyD_b_!=faoGk55XY6 zMg@hZIeC=fv2vUq(NZWPU=?dca$zF=W_9a!+ol!?S(F0@LfRkyo$EX7QcETD_R#2O znGi)l95NOMp9N5SFT@L$D+J-)%%6_Gbm0Q6M5?@XDqTB~Zp2zlpaNrp(1fA4xim%( zG=mxEj9EkNwA$BYQr8%B3+o07DSr&~&iHbh?UKF}r@Xn4Ell;mLa zbkNiT0KlLztvyFG^R9%SjGdpK-`?Kt#mfs7hi5wFUPJxkLRZSrr4akH;=G~0N+C*^xaj2p&48zcS zPpE=G$Udua|9(l>F>+$%%2I8UQ8NQ!rY$L5)eWN{qa#*=f->bAM>#d#i6QKiIX;sq zV)%RR)ratjfL#IA9}gMvHT%APnx;2y+$ho?yLuUj;H!xuxUlCK)zejcJ6Ksm6h+>* z?tqsP`IV3v1hkNdQzETzROlZZ4NgJpSIhQZn>WN+)F6mJf+FAmMI@U-%#>GT2cyIe z0lAY21CyUJ1kA>e5f%AvD3Ac7fFFPm5)x(4H(@SUSB|#3dw0xeihGKI#|C%b5isy=`+BO)M)14_jaiVlUR zleHI`Ye(%ymD(jkDpaZzs&W*S%B4~qhEd)l?6q~+bNWa+@^u{$REfI1wYAn@62poC z1*LBoCC$i+14bq_Zd(&J)d7ehrFEo?F@Y|OP7La&4v|sVuT*4)I6y(|2KJ>Tncsiw z)~!aPk$a{TW01eo7>z^MaP5|-6%L+GXy}y#j^j9Yns`RAhVC;aAWld~!&GdwYs^A> zx}|GYtx8fB+Jp5+nu&0tEJho6@nY-v#XVF{fn`Q39M5AtGf3uHv?j zw%1O!mZo^qkPeN}QDEY@8kff6Qn?hzaTJC@E+sOEZ#$F=NP+?^2yEHb6aA}|?S_OJ z&?zTgI##fc+bvL{($J}t_?W9ry2Ox%kOHG)9r&>--?`k^Hh8EGMb5U)5fI6}_9RQ= zU@xI3Z;zstx^m@8F(UNF6wh=T?m*)sbr^^4lz9u^v}jSC55l1P%ou$ZLP_uh!_Y7$UjiJLq7n35Hp7*-kx-uA+gqE zv@s?y9mru9&teEeY19tI-jPl^?w$g<&1c3C$z-Vn2W2S!{>{zJ)z#HO?<7;-)?M$v zi_Va*Q>RXikB@(F{oPkjzWw@%*MISgUmTE)@I(uW;y?W`Rh~N?{LW=p;pgREV+tg& zHVUFNW(IOp=S>R5q-kU~jwhSe;tCzDBW|d$Zo(#+6cw>zLWd}TjNmP)cQqbBGQLoz z{v;ykn4ICXlC&q%?PKi+V@azjsi8Imfzs93P#8sVsT{{qr5s09Yikj5BDr>1-Q|) zzg}FoU^KKX60i^;6M;al=M5tpr&9&TldUSG5SFzGLlb#ULtu7g4TBn%kGMmzS0g54 zL_j_OQr!8T)Nu9cRsVguq9gXsBcUrB8lv@f{P^*SiHZOFSMLG9YbSrOwzl@PXwgqU zH2A}ylq!`<#mM?>#fUs>2qdCFgAgJrMOsr}bi3Vdx7)3N($uuuZAiuHrc0AC*I?I7 z6KNwPLTxlHGzlt8I#r5+EGmb}2^wMT9Dy~G2Al>iHR2T5fRjL+CQwR|t^`^ug@Msw z7(|hYqEfkB_Ili5DUM>FFBqkCUx~pXV9+jv5`bA0D$D8ZZT@@<6gx*+2>^iu=O-ee zkJ6-ar~+6!o^GH)LrRCC2_tQEpcN@ir1Gmp(FPgz=|k7&J@4PxE>9VBEaJzBpgIyi&j6rNgd&^4GmJU0*okIc#3~Pupuw z^(-b1Uf9QbK>8HX7^962k}yn?pc%B2BuGNjvT3T)G;!8CE7~~)?Z~DqDYGy$IK%{< zpab%)O%x_!pV}%A#Y7}TfJ%TAY9l%bl?t>rS_grS<0uTHIF3uDQXI!&82X>Zt^|xm z4eoo;7>UI-Ik~#FS!>&zeAUrDEC{O?7Nd|;Jkze1psk6F*2btH&|zSV){6SHEg$x3 z-@oNKiilG`Jfg#`Mg(RlN`4d3*4Ea>#ztST!{07e6N3m&{+>#u^5TmxesKL?0l;e~ z-`?2RNRnjG7xLsm`X`Mw_-`tTqTK)Q*$oXIF=1w{wR6sU4Fpk`rm3~I-EOC8nj}fm zOxj5+Ns`p2sdX-KVA(oropa)>v&<~QEWp0g&MZJ6l#3-1DnTKI3Q;SqmDW1Y*$hI| z2?RkDh5m~zj!f*ys~biK$mS1_kx&*}=|}5n!&0Eda$#nyClBe&REY*izR{?~m{Krq zf*>*`>`ZiMA04Q>oZiuk8GfUP#q=GWhKEv`?ubrw5J~Z79=SlF*81a*KQ7kBJKg0h z>+#_jc8^;2PE07J&YU^3)mpr^_``X=Stu!^pFrqcHSfV;CBrDR^;|E>865TBAGM4amflkU`Y#Et%hLqbLU{;IP9d z0D?*Y%dTB@O(LUo?4d`cNh!?X$G)0$1)+yw_Xza$^?pdo!>+fVLBamB`-tuH#Lqwf ze3v?d|4O~>s7P0DVmPDW<(FUn_58o|C_}5&T3=s(iX+%hIW+9h0fL|l!hLoV2Y<%+ zNXN|DX*SHvHVkcNB}r=2B=x3s)~2Zio21N+opaVXYg1q+A}q|FFb(9pY}ip|QV3cr zREm`Dh@gbV7^9UAjPdU5K5g-Drq^VA$Q1VQeAN*Gru8QMYQ9-(rwHg!lyqp@evbkc zyMdiMN!)a@QNo4_f>3J{=pZyf*y)&b4SM6vG%K4c~bNA-Ida~eM&YnrEA-~M_n*Tkc zp`ovBtUq;fCrj&0kUAG-hL+ZL{@+>0&RWaPv2zR}+;Ok!WV7Puoe>F%P%EWKE2Xv4 zfi^1eN%@ZGL2*#0FXeFv9iY#~pw5sb3WM-c6R)o|1Oh+-1?WUF6I~HO(FE+2Lou3} zJKMK8m2N0`r>mCHzA&%~Aw~r(Ym;FT&ah+p8QxAzOq@D(DhL7qSX^A(+S)pI z?p)VNSg+S_+_*75K0Z4;>szWfZrpe#I}}A|_nF2TdN0LYXI}35t(-ENy^kd`TWd38 zOPAk}Y%z0}A51TQ&TF*iP(oh2_SGQXuaSJ-jq?{~KLgrM&5c^}z&XNzAazUt0f-O? z0DCB(04#c0X%Ga(7)xU^ty7?t2~?0z%8yHkce`OXj5=0rr{&O!78 zZ=0K&b8~aKUPJN0`9FIFV4)wWVRCYEVq)UofAl^8ym|VEtE;QdxvoTSYHI5A>C?`+ zwY9Y*Ng9oYbFN;m7juLl2z)r0ot?dL^b~8}V5zG&k&lOTMfUUO&#%;P%+)S?OQaj0{Y`H*aq85mBuTDayXH5)U&V~z zl~-N?faT?7ACmI>AJw*c(&JVBY)F#CIrqGVhOQJn$E*EMpEPxagB&KzQ>v~&Q*<#Z zo^#Nn5i(@6!3YD3y-!T6yS>qzYqH`{L0ixnA_j{{AjpE^YY$KWhCote5{$Tcq`etp z8mJ)9I#LuC3ZFftYxmsVosy-)VcgN18=}Yp{RVlu0>tj`gqUsTj7`&}rKL1YeWx~e z5QHKLQc;(gU*Ccv48s>+e9?O*zIyWQTCL_MwTjW9TCFOjmY0{~IIdQ!?RI-@ZLRpq zl}g1U3qFsyfB*iubLV^zxqtuuvj;=whoRMKS!;a}^}Hqyz2!#U8}~>=o=4=r>P;D- z$J7K0Z2UoW%|l>&y#>Y2Opz1YZiX7P0wx2FSxia_0f+>JHLwT>DDe_;VhpsawpMX< z)GAOa=!{yL+@)&J8}1Dg!>;!Eyh$dn*TpX1vwRrT)W|B|orATxxw*2kvNMu}C|+NG zhsB3Vd5s?G#TtrDrot^dfRIAmyckkv8ICkt< zo-zQy#>PgyUJrtx*=#se<#?Q5qEZxa+_N8jrk3>Mn%d(S8X*Te70 z-%m*J8^_CIvAVUi_2p)>){qBjyY8?7kRURtEPW7%O-%|Rh+K0zc~Ipxl*%R~6Ngb) z3W9JD+oE?2VZQ;Q6CL*R3VVVMJDxrwi;IgZD=WJqwNl0IwN^@NojCzvudG|KH*sa| z|Hylm%gf8XL$Q9vaeV96EdV%s_Uz>3wREB-F@N{?2(6FyR+FLAixpMb;amhQ9*+>V#II6!D;OTK( z)%1Y2?yPOCHDx_@n@DvPHB{KvVVgiPAe05MlD5XvBt&I&pp6cKPzOPAl%qF94!UR5 zIwHmRDwHGvY@o~s@Eho-LJ1*B1X2 z0M5@`TAW+zEe7)&8yg!QP^{PMc?FTD3>zC8MHu3duP0bg5Q^hW)fd|Bq|s>P=Heq3 zhtGEbG9)rSlJB9nh1u(^0*Ju*wHN_WNJLUVw#Xzd1ba-iL$z_F(MS?$iE5&0s?w$o zTG}+tSR z=Vl_2BI+91>>C}>$w>fMSXg+hr{xnY zD0a(rT5H#8HAJdZ%3AN(cpL;C*i(-YPrjeh9UWjt%K!lxNPv)((k2MPIE-zQs)$2M zVrwgDg6&P$a!x`((+;FWNf`qbRf8}L{aE-=?)HeL)ek!pF%tOF_rYEyc41-BGo5;0 zK_dxBj;(gZg|6Pj)YR0mW5<5}(f{ZH$fczv561Tjx76$PX0sW`@!7LyA>%UncriIS zsg$bM>yMD#^wc{P0MsGS5g{Pj)YUdNQ|rd6l_(1PlHtFeG2(ILBf~G$yB>)J)d)aD zBt@i^Hrbd+6k8Th%3ABvG)SG}qy-k8GL9n!N>_~v!#IfJIEo?@8fA2G|2)FY-@j+E ztANVN*`WzqZ=#Bb!eA}mym>QcK=v*4^zLraAfVypmtWp$E&872bmiRNeEv6mInn<1 z-Me=^Nx^sYJm`>D6Sk+U<#ni8zjw+Er>E#)Zd}j|^$% z_g*|b8PhW~D$qT` z0I}1v$mCiwhuqGM9ihFUrEA9QKmcfLHx?Ea23@5vgB7~E61|eJQ52mzb?U=g{}TY5 znYsuAy3YA(Hk&tY-0+?6BBt=^r=LEVbLPnsrM;vPqBmp8x)rXrvDs|3D&^AHST%~G zys>vcvhGK|R_ZqrTL*w@G+T{k4q95VYm*2lL{Ezx;BMdEIwCR-o|!VGV>G14t0g z+CuE{qgJccYPD*$jdHnkH6!-LccOZ+x&dKkv zix-YxIx+FaQ%NF*DXfbKApvPb0z?3%C9Od(%T@Cy}{RkMyLE85{*yT%uh#gnYFlsr<$ODY5`#$Pt z$%Z3+so|MPFo2!CGX#iwWo2b?ad8NW*=u> z_s>jSJah8m#>Pg@M>tUD?NhR-8H|Ckh)t4ql5B2mX{{|?cOaF2)W5dOD?;`vL{`Y& zBO@ea?-4?FTq`>}nb|Hs#5J?BN0B{p&FsDRcJKS`ec$JA<9WX0oX`23&p8LQfk{p}DWqVg{9P>H?M0$fy=YL?HMy5einiI?`zPHUPj=UA{f}Blt9{?cfON*a?pCR9 zquXuXyH!QvbP8v&3!gO+c1{r(k$hIG+KO;b|f)HaC0w+bno zF_=72dvmej9N@Zhz9-(_Pg+Mi*i5l|O!4F^4w0xLiLG((v&fvlQ;mhy<$KtXvcaEQ zSQOKb{FRwmh~#-iHy&&@<7Z7~^wFlU2KV_3RYaJ3^676>AJjmD#O@O=MyS3Dg52Xv z%^S|KM40I7AI?c-U6$QUM`0s?BqJ3#3bjkb^bmUAUeVz^*81iis#Ic_ zvkD}l43az)@Gj}Ay^CyB8~*M+60aH!H}!JIYu2{EvjZV5;jQ890`kAw&v)xQQrYQ) zY8NuLifbTb6ZLf`DN9TWa1qk6`v0_4{cmO$fJK`(y?PH;w7Z)Y{M$XRo56AE=9c3; z^ufUH&xn2+huRtVBW3BqV9Op(>-QK2blM81MY$EkirDuZzr+sC{Q55vTULuFb%of?;j^3#^)XreUqj*MX<%9TwS3d>-yp$nP26h zG6}>G;Z-wgxz#J?h*%L}V5BXLOYZsA^L;E)H1&*_^6!=61ug1ZVYi-R)j@@Z#{ceB zg!Bbi4nITxLD`R<3EMuYq?=&060`hx*S!}Z41AUmmTZ5ExGR}+eAjDf zm7lgf=Db8Xg=qS+z?0hF`ldy@ZS+EQ1h&DkGe{M9i72Vh5vRT%ny%8!v-KW*%tPk> zd)C3g5})ZU!oA!EVPayEQG~MqrDtT!$;>R%D+LS)HFC+7$b#>b( zCnr)YrwElBJ!s31V+9W|UhbbnV(YlEF}7byDJFqzKnFg(6fY`@x^@p1@^F%{4Iet+ z-#w3eyc`hc`-WkM^xm_YprEozVLc=g%10EUTB1{~vn&GWFRKX$3gyRNj&{TjP3o1? z{b~NVQd8^#p{1LnZIi4zrODg3E@{0h!P?v7n$j;5-FemTLY7J_U1LQoO#Xzx!sX>BN4MX- zW5Z6W7*Xvta`dtOJ)IJl{^HY%nh9qiBT_v*3gF9fFfDC4Z>tZ3J!X!K|&%(K#i!RgJqAj0OJ}T@LW_Q3ilv*tHFS`zNRApPc zeg+RWH`}MPISz&74CECa3k$Q>$1On)*F(E?FpV0tJxIN9g=I;RGU*2PZ9#s15bp+9TjpzXW-vv< zIld4Dc4x%_MZ<64LsGp1k3)YG#?ysUYp8r^=szRh(K>BW4n4U6xjK-sYbpM|F}kW< zm8C|8$>MQkNcqSw`a1O|->7%gs(CrPiPo;=bJtNp9PjTf7iK$N4^zBcU7`wANwhEL z@t!?v!Xwp7O=XOHK^?xbvXZP?Xw37b&$Un+99zY8^c#bJdXgV*&LD6H@_Q^3jG&Uf z#=z5=ct(;ivCAbaC38us{kSeEhIstx-!&k5`SHW>`}bM@u+-aX{@#r`Z_g?Q5&@Ni zEh-9A`>Yojs#54#-X8}?+9nZ=JBB(jG$s=V&M6d_GKmGiIH#llm8WTP?}c(agQOTg z|0^CvhJNn8N1jWm0u8lf+YaG;gVq;1*{hq~D?64%s+SS)Pw-+s$wZQ$2{o>hS}As7 zqNrn(|Hiwe8J>sdEw5i&Q&I1Zo$(+EO~T|C^!7i#q&t0mJ3FwOxrhDkAV835x$EuA z1ry7n>VqPRVYvgAkjPl28ok-e8rJ@9FN7dPtQ@CwTu^QLaU@7>R5gz{GnGuYFz=j2Do@Xp$k*abFKd3=m%s1H++ka zaKyfT{`qoVSBQeY*V15=ixj4>MRZH)rxc%cphhxN|9XHsvX{SNQrMB!sQzGX+%UC& z?bFe>9PAUJ7j!*Wk^jUUAzvxr+|pxczeO_EU>y1Ts8`C0cym~+k<%M!V}0Xy!Ws0e z%L6I}?w>lFe=fqxh~_qWAyPsgcAy=4sw1* z^7*##Sq?8V2Nn6BasN2CtC_yutr?E&73I-tJ~kM1-Y(cSVAsg}uva_TO!>tufWy}J zmJUKE>V^#gUZu0Mb7e(D`UFRjfgXzSnZy>lC%*h@@!VW#4Oc<^b-n4VeuY!>VJ9I_ zbeN>W4wh^SO(oCH$CE$!e8;dH@z_1g#yK4sJ|7@C-_0O$y*u?TFDpYj2$AtU=E$E+ zZ^E{t3*6j${mb>XsqLm|KE(~7slGWFs4h}e+65RMsF2OXuR=b3N(T@w(rs^2+p?=v-rA`kOM=#pYcO@ky2;}lV z;ia0ILCJ!C$wC7t`2c#wfP+GBTRXebiEUs`vh$P16V6WQEuld&GMSY&UM(fIu8U&i zThnCmbOAGG2$JjhO-Fn2RqH+t$Dw7Tc{(z(M*o}rjSagh6!e6I;;Y(E z@qe>WV5WdZw3|c`xzeGR7*R_gTmz*int^9Mu(1h%MbYDCcSovsN`=~@{@14+1F58G zK1ulaA$&m1OqtQdBd-6>ec#8^*Kpy6H{gh>cIFo-?SMNz*M&diU8}CuU6`AzMm`vc zl{#5Z`_y6Od~g)AN+Exaj=YH3T&}gF?i*Eb@^FIJ0h{uta~N%_TwR!h7Gh~VLmIt) z{kr~*)a`Vy%Ces0sH1yKeEjeLUH9@U#>xv;oLxM>lPUL-Hd3x6dNFt;o>TdRkHG?G`O9%f8`OY26)VEK-ad$O-?85+(x3(g?Cz8czEoDY@yq%wH<*^pQpQ%eeM8a16|Gt0M^ zND>lENj@cj?6F<-w_TUc{KADmJ!70;PxQifLkCRS&_~iJka0onXa;_tZXI& zmH%pX;%!}endtuf?I*8iI4qw(Vr1=Cz)3hb|=rP0v<9=9I%)oalCvlht>PV(UW(9SGq z2n^gmUgL_jt+|xsvr3%u5-*8<_YRrLSoW{h$CxKxmut;UGzxTTSmq#skG!1_dg9C1 z)t&7$L}jf{){7lq@xF~sYAA&%o!uA7wvNWh^mlk!)7 zcQ>uA;Q?v8iZKYNOnm(N__*(`(I=)}t=w{&+>_qT#-kU|x*cJD zyb!yyQ+swsRfTMjR62;{fnI!i*qel+hsHMzc{ z`*i=i7y`1|$P-L06OZtc5>D#e!7A;xBVbCZHiUHG>EMg-Ty@tS+i-&%YJI6`7&<%~ z)VRCR;|By*3fKmrSv5n2_Fq8;YRJ%N6KCJ}VU+V|$h+M&^N;8|@#KL_HkGEoxIw-x zt<}}}kujsMDD(g_tp&x^g~mgIxgjJ-af-5sxn3tzZL#y!o1Y7)f5MWqhrDcy>+0*D z3p0}gE_6=C>?27grRAqX#6)2MNU)AdciD;>5h zH4X^vfR<6Uu&T;|I=nG$FqhbXqfr(+lHtg8?%Ac3p&=UtKiZBbvUg_YYkhIBN#}GD zyCX~R)Nh(7F%1S)I@FN7$Jy+i_T3RQ(e0d zsKFQMLFjS4BzH9V`d{3m`lW&HvZ{)=$K!qRN(TNF67!0`%AmYYxXWcc4e*5*-UZ1ukj9LidM=CSxIvlzoW ztRy0mGu|~kpY?C>P~*+Tfs2##1AlMdUxIhh7wI)+6At6#ShctRJiVVW^-%b+_ZG^l;P z>TpSSk!|@Jc2Cm0GY38)Pztwhm z`{G^88~tV%-j&WHHArPul`D9+4@5aIR|#67$dKM*;S?) zc0yI-#XHHQ`Zkw$p?D+;lE>WI^~pd{Y$9dNQ871Z;>e`0U)~ z+@8L<(VNEi1ZMClH#gn)6EvUTE~~n^@Ewt4?tj_^I*V)DcPLF@;E;wH1;St%y*hUV zHmzJnzhXTg^iAleSMF?Wp{2Cw>9s^)1=-fr*46Eok|I2zp~^Ltp*0i?Hhe_>+o8NZqwfS9Fe*gZDD^=IbgzenMpNsqX zfT$BtsbFd_i6Ly6PmpMVG>O!L={`#(pSf$hMd}+j23Cj+cCz*>3QPzgUrh~9t?)mB z^82jH{1Fs%E}d_6FKp}{8IOtyYncfndw=ffdCbakT1{hMF(E6K3b4D41g2|ZNF4LBc%*iQvF;ZP*%HFXJ=&K=rr??sGoCo zDtVbCM`k#Y%x9p=ZN#i6+dIw7lR2I+fwNX#xTTW_S%)!WbhdXk6OR0fAKd;-hzp42 zqdHX^LHY4>#@!I9)s)_J3)%UU-40H-tPk(%XWdVtbNr4CN+%xY82a?~lt7Owg=z4jjS#g*H-gVFT{YM*J}TZxpalxlH$gOv6cM_C3AQEViL5uOPmI zul($tmOZD7vdNWpYYS@+CtXWyZTDlk#5TSTBE{bM8Y8LUNd%aCFh)R^H5$j|Gqw3r znH5EAFJ-DFdH|wfKJ}u)q^Yj4F*){!d-)17OoWN$bD!;bOxvrn$H$P*(sw|PH$FZN z;_BW;qAMIY$M9#i-@r4IGPS;^rfD6ETDhESbXP68npu->LOH*BDPiVhbkR}@kkx`1 z8V*;E2arg@b6_If_jM4ryO0I6L3?1}q5tem%zx>l^)Scn5Rx^LhZjT3^qvos)>%&i z%9GMFUe3%rmm?5(zp!PY;j$$<#{*neF{F$?QE_MzVAf`?uh-W>B%=4#kmZ<8D@Wus zZooPZBbu4%qLJsvq~~uHM0q**{g>+MmjX4#$k*J@NKr>(z!DBo`58}rx!eB#q=A!W zfiy@A$I?DOF7Sl*Zsb+W!9|I%))VWmRJ9$)1z$RC`=k#Ez~p6o^zyq7L-QSHgo@NC z+E~brGXE&Sw`4=p_H&n<0TJ+D`P>NI(R-8%3_+&`@?;_0 zN)h>0Hm%^slhA~10bDoldA>V6x+0e?`+uD`K!P2R`lqac;$cB}!;z3~ewfa{F#7t7 z5hp~8#X3eQMlm5Bk;7MCQp=;FEq%R|>=;hCMn#^2CD$|H9gr=w>b23brd?kB8Qo`y zx9F9Jn~oxW#RFqa7<@@-R&>B^Zo7~;5QT?TUZuEVTd2iJj;qAhM;66qrEP8aVK?(l#a0*V3<8@!p`oRw zKbwM0G!kRNJFWUa!G6R4MzCO9emQ_52$isSh7GDs@m$iy$293(B&v&EM zbfB>D>dyIg1mH`Xbe`-z7u-$PIvt?!$Rm(TN+m6(!1?%@qmSaK8=j`JtmyT6L+nzq z!{t=epz%n@teTUB8s63ZR#DZy&|5zq72fvuxlB6>=LT3Kz`=7*I1>e`=W_j{Vq4F5 zWXZbm;#dl=k4$I@;~Kk^Xj{0$kWYw0L{jJ z;S4-1i8Xl-$T+tj39MS43~MekG2wH7)}Aga7CT_;-=-9`n)()oXziCaT{Vz=s3TP3 zRZn8UVT!`!yC2qiYQFx*Amf^n6UI-=$en8zFM}kmZIGH>*Do`cllX`k7f^?6!Te+jNn z&mq_pz6R=K<~=}y=f48)YCC396i!+lj3)CEI8~>$t1Q2B7MOCS4vlLW>~fHiUVjT(-q87!GW5EK^7Mb&5OJLHe2;+*E_-jOX@#bS z#`y#Z@HID@ras=SUOqNA>**y2z||s=@5=v;%tYo&egg}ZZY_~t$SG16NpJlj# zH;k~^@UvY~5EHgr^+Dxq={%-dYP z5Q-#OcD$!RW-h~5;PE!!t0~!1mBfJT2?mTB8}~5@AT!64{r{b-W8{_eJ~qDTBo2*T9c=5AxkRzF|%+MdW5#A?`7m;|}S4onfJNAA~vg`7s5B<1Dwau&yK-y-6vr%M^_x zVeW5xSt%lnkQDcQB*F*;aOX1}Fp`&Gi}wHvJ0edM|DN(Dorfdp;;KC;JweJ!_)#1L zGcH|B1qXT$93};Tq21FyO}nQkuj<<}nDLDVj7=|wm{UgGCfE#BZmL3Cd0g|z<9;&| z+fKf9!Rq|5Rh<1atNBrmb1g%GZtPp#e3HEIrGCQD94UWa-`hFHmh%+=lN{9!h9`Ka zB5Fad66EMnGrt*i;1B=FQg3JEh~)V@oyS!N6m7)N{k5!K9y=%V$^n+811Zi4bn+kn z%PMub$O-xocSaR%e1J~`F|xqvh~j2iIyx?s5)HuB+CG;xO4KK!`xW-tJpwqN>FH_E z*ys|20FqW=!b5-u`(SBdvE&%dE0OPqB@_OMclRDPk?X~D#m2-*+Mqq|W2nsgDSg#e zYh+P;bFp2iog8^Ndo=MIuF*1?<%w#N$?Sf$kYBD6AYE3X6U=nTpKn?rzEKDIvH)BY z(#guLgloSY_#m~tYXl+_!zu82kw&7p$Wiy(z^|gy(aouW%aW$j9NzlIGzZjwvcHv(aPz&z3_?}Awjj2d zBKAIYd5&Opyh$|_V>^HF1-DCSM7TJh!pBH!SUtdCNO^r=eq`da``O z(tF8qfLb)gvJckMAPA>U6-{;CFiN=6pD}*w=`?l_T(=R^ze8&F7+ZMH` zZ<8WJh8f(s;CpoNa%A*DdfWJQWCsfblb;WZQO_n~=e?wK^fPbQibh%dIBnH^VVANW zgl5n3%k-=aR@$J@Lf8HSMHHGl?#eXfG#c*2ENZb-u|!DWcs%Mr6~@S;-D9>p(Oua zJP~()MC~(9*k_|Zm)3W@lY6&nR(9wi!Ud{|`5+l00vzluef#z0tw8-JFX!CaTHE}; z{Js}N?h!Gr_wUVl)q;MiDYNnkur9a++=jJ?QVtsX9Z8E*(kmxu$jSz*6D?v!nn|8z zxWu6~=(ls8mvcA5NDR1{2(S{MpCFZxU^>h%|Nao+8rE*H6%-Sb9P>q#1{Rma+*@uF zr`ri(M1bA0_q<5J=Oo-s4>qCTi~CBD7~Qjjz#YcFv#8_fnVy*Q*}`aErH#l}NkPOo z-*Z{5trxp=mfzEt+vWN}2H24p(9eylo;7sO4{9q+5a_d11Z*R|*>!6|`blY25Cndp z!s6bSi!DnC$t6!O4LoWyy~=5ux?N2|t=GdBB#lsB_gIv36Fz6*W8y%{#U(uP2t~0u z|1DpifxNO5>8EDO6b`C-=9g#Jh(S&1zo<1y<4fDyvA~<_z`!41*o&5y*!Z>#z9I7y znU4y5%t5b{p9Nly1^TOInP?vPeZRA-zp8mGD8wS-Rv=5eD<6CxGJm&VVJu=Cu~WiI z2qJKnID@Gur`M8&drd}@Y1EvGyGCmv(|QYV~0Ad*SwRwZ^NmmN6?$6TkMb1!Nyrh$)q)B??+IV=kIwo zj@}tZ->oCp1maqtfjdnrZQ?I`w7x$o*e{T|4q*ZtOJ80@K_xbun4UmghE?C#a>h7z zK}BmO*m$=5nQ$TSs?Be$cgK7L-=|3$0vW)rD2N}f$_?TZTP|GBA}vSlRyYRgR#a$W zliT$#NKv&)De^WzD55CIC?S>*Y&IDvhFrZ>Jq&!zlCQ+a_I??=KS~g5g^$=;p)I(2 z8T>l=nNv8h125mbb>u`ix9-3ymvZ2Vv?MxYW$E6bh{D3;0Tm53lPo`GR9Hr{tIvK# zpz8%F*J+?DHrLLQF!^zqFD6dLNZ6=a%>5`Rn20Tu0gA&FG$rom+S@1v_J{1LQtw;= zKAD1o%%|@{1W}ZFkVH#=PLpOAm%lS84^|UQhn#N#H;C~CbgWgNI6)r?Hwyo-m_e3MvPNULQX2t0Z=$ImD;WAh2sAGZlHzqVxG1$3_wd6<|A{FEAj! z`J)!*|Bl5g1U<9*G1^)IQ&zUBmsZXlkU%v^V|D6G<4f-s5#fH<>*}1*#2Rh0kKIS@JLvnx%Eatwb2G zCuC9uAI3(y6;pbG#kGnhzJiAEiBrBQI(Xs($wa; zP8x^(nxOZyJjCV!lgQd1$j6j`JlXq@r>(3}Ozmu;+(9fH8Xr7id)wO!++c>!{130d zJLf))DGZUkxVzXlcR#yOYrv$%SL9A5M-V~;FbNa!F_fXh>RCSax1H)+f3B=5hEp{1 zAtHFHShkkLK};dFUNCvA5GL0AjmHU>DnzoUye!-hNM`llw-b~!X7kg{tqqcGNWV%w zGl!|cq}g4u-@lfQ#K8*kKc$eBmf_4z8tc=k5;I88Dx;IuOBa28wSIIN_UVImX;4B? o9_xx+Xuu>Z1T&-ttoh~0k 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 O0XiCn>eW!2@c#k$O&L@G literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/launcher_palette_dark.png b/docs/html/images/icon_design/launcher_palette_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..37355427e872b088c73c89d18f928369c8fbd26d GIT binary patch literal 3320 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/launcher_palette_gradient_medium.png b/docs/html/images/icon_design/launcher_palette_gradient_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..1442b17b73938acd69f64c14625ba55efa7128cb GIT binary patch literal 3325 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 Hu0mjfI&?KH literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/launcher_palette_light.png b/docs/html/images/icon_design/launcher_palette_light.png new file mode 100644 index 0000000000000000000000000000000000000000..f1121ebf87b8e4be2b58332961c6aa093386a09f GIT binary patch literal 3317 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/launcher_palette_medium.png b/docs/html/images/icon_design/launcher_palette_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..1442b17b73938acd69f64c14625ba55efa7128cb GIT binary patch literal 3325 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 Hu0mjfI&?KH literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/launcher_palette_white.png b/docs/html/images/icon_design/launcher_palette_white.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7ac41e5efc110a65d7ba0c6ec1c1987813a907 GIT binary patch literal 3166 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ƻ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

      BWsrC%w4VUZ@%pI#oHULG{9$**mYUKYV) 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 ZKz$t^?430DK!%38R21IJSHHCg|38DWkUanZ literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/listview_icon_details.png b/docs/html/images/icon_design/listview_icon_details.png new file mode 100644 index 0000000000000000000000000000000000000000..5a684162f7bf0cf22969c6283d8c46c4e4b34ee8 GIT binary patch literal 22337 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

      f9#PEDRca+gT9(ML>ma|I# jDKFmcx&Yz4nMCiu&W|=ddVvAC5)yXS&Q?Vh-ZB3M$w2$L literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/menu_light.png b/docs/html/images/icon_design/menu_light.png new file mode 100644 index 0000000000000000000000000000000000000000..93ed38bf6785a9f9013cc2ed5fb75523093a7eac GIT binary patch literal 28415 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/menu_palette_black.png b/docs/html/images/icon_design/menu_palette_black.png new file mode 100644 index 0000000000000000000000000000000000000000..fba096f301f9b55744bcca8247b41d6d7ac98380 GIT binary patch literal 3291 zcma);_ahbl_s3tdw``#|+4I`6x!2y8D_4^38rjNttoh~0k z^m?EBRj(CIf zT~fsR*!ZD~)!_GTGp(mvqt^|y%G;Gk`Ss((og@?)+LCZ-G(|b|{@w2p1HJvL8=|UV zWZYhWhNRws)Ax!C51fT6DhfU5ByIjy3ILJW zfL`;^T=BP1HO;o*ty9@`icQ>d8ex_sBHqO2=A!rc$8?y4=w)p0*ygB;b_Zs&NQ6mI ze?J-lpfHu;cG{z>fHA7-u`!t>ES0s$ZU@oL13SC*>&wLl-ws&hp;IPHB z>l;4_KH52Ab=?2vm&%n^ArC-1>Ady^;Hf&dC}OByWqWz#;@QO`xsphjvZKy8yR->t6Sz6P#L~kb=%q?)i<`tFILx%! z50!lG$i+O-Y)(}e1QOww(XCqIZ^G)}O5Z3NU`=JR_aZglk$-jY6VFLzEX@7t^XZ;a zqD;~DSBx|DLb5V!K&dHIFLsTjEaa$7}rw zXu~u*No5H9p&YjN)wGfNNW(epG7dIwsk;lLvZVNt@NT{bX=Qq!c$@G3?Pa!;5RXA> z3vs$WdI>2E54VtolTwXX@(TU3ch4W9U@ED zP3KK#6@(zlD@rPsE6B}`%!U!k# zgvy6di>o*yiyr+RBiILcVXgIgYd;6MJxhInFsB@5jO z73D>8FiBlW^Lmq`H%=sj7sd47hZ+x(@ON1^e{^uGkw1XxR?^qa&TpSV?IWM&{S z+88)SYp+eFdcQQkq)ns6;v$SnZ9tdr37-}!d5kcB+jQP^sg$gg(LhQ5q*}DXt(di_ zMcu!{qx2xFp#3SjK;N@;Ik0W}oGk=$g}8D*FFnzsKoZqca1-Gu#+ViRq`f^A*&zeC z-*A{!k1DL#Hr+OJH8QnnLh=2y=D(WMi7x$5*16Z+``!EB^AhoL^6DAv8XV-97&Mg# zlql#c=nssJjJ_M4$(GJl5}%dW&fU(P&0T4@wmj|0Nd&j^;piL z7-{y{s$R1yzlvw3rK+X$ZfTQYnjxlO2GvvZ8~X)Y-pEq3IY)%6#=2ueY*BVhsK&nP zo`bZuw2gFppfG<<8zYhSh`_> zUYC5++$k*-6ROEK;wUyDPA_~|G*ekLm$iRsux&%v@5I|`HE8lAKes-&d%q0#@j&Ll z*G`u0)jxm7zv3qcBv%HW$Pml4@QxThmzVUvX;t zi%I#9vd`Of<#k2bWr<}A>k-+`#=*v6qaM!!>!=mjE3O-do1mKsP>SZkL*d7TsfAhI zxi|}Y$=Q*lB9C+YQ#Ze_mRQ)N#-NrQUKPICRmJH%_%o%7^K?6FEOpFFhWc_YO58~9qlm7wpmK$%tKx!e zvsAN6zo?VN$TTt^sq;*aO-@v>TE^p9`^x41QOsKY8u@xKQx;^<$}6yFtot~sl(Aft zR#-kmRX^77;hXN`$V|k}!JY`-H$2o9GzfbAGqqJZ zkh@Q^Sa`E3lCM0aRi9FSDObLLG3Nz`yM&T_n|Q?Q)D&-M1*bt87PX7oa(Xdb=@?aa z-RF_e2)Un5{Kc(4rIOG>gbWKU`GI)MKPyOFhjKJ`>KKh1lFPsp2#xNK)DPiOWb=N# zz1gSjrd@rFEsoYR7hy+kwN<*x)hT)h;>gw+2!)~_5mhRFj>ihRPa9$O%`>Y*+jxTv z+`^uA4TX0#;JNLQn~`lsh3qZP?pqllAr>nQw&&6LtjY{=@zwM=rc8!cbNq_|o2)UO zLmkiJfw>p-785>nlL3}_QBhC>r2a`(;wzFp*69=rpt$(C`PU9?FPp_1}wByY1%nYWT zrX4SIF6vKJs^cnl&N43Ct*Q*&z4r(3C-JX{xu~$SP2Z;3CzTK;$umNGT2ur7v|s1{ z@)x0$p)~t9uYZlpOFeL7=ah8i^ggBh!i&V<%2nd2e_pVo*deaaoWmT=T+^HjOFPSE zqY>qancd}}OD)_#)Ok{h7J<4)h%YV+JKfl;Wp{aKbz-#l(%-@_1jgvPMb0sXvu5Iscw4W)^rfm z))4G;y2Dx^JGOM(7WkX-W@frTPHCy_D9H1)@APDaaVgY??`mwgW!|6fpsLlV)%sX< zUu_=2dA&IIYw?w9r+?wm#G=+IQB=hEb?QknHH8&4BP8@}dT(}YB5R^3^Dr~5!~JFP)o$k=%ST*)cmMtNF9DL` zPmdp6?05Mu`m_Ifzd~)a@si^e|BdtC+7r{Sr59-|X=yhE_*qAn_L3sF+kcb8UfaX~ zfFK?K&=COqy}9KM0MEq$*tG#bJ_`UQ&)3#{ngHA((ot7K1T6eqPE{*_wCDL?$etpPSVO(v)lAJwnM1aSiTk-QCrs*IA_Sl; zUI4?v79TU`{qEs63N>4MY@gD4?!oDD3oh=gof@F`SA=Vwjkc<+{ zdfFg~jo&e!r;Je$FTglbH}?R;af5Y1d$<|R*Q9_QQ6Zfb;M%X#}5&zj=$`w+Wekm7`^5K(meVu8@=T`%#S8#W9YX%1=7fPe$wk*I<@|F86{1MGy;^iM>wL27+&JEf;F z((EzI9Tqk0PlKD~ImS;h0CJ4$=jvA;7I?;a6=KumdbC2@!`XVWV=<2Bljn&k>t=9M z4Ux5r_KAr`s)MEi`){}yT=R5Y#HH_61_S2+%5><;EtyvQ!1M2g#rp5E#)B-S(k1Gx zncE7WqO5AvliQB1fByvjC&_;$`=n&rONkE+;?m8$u@BAQ8tyO8g27$CM$){b%#GXY O0XiCn>eW!2@c#k$O&L@G literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/menu_palette_fill.png b/docs/html/images/icon_design/menu_palette_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..7079bda6f7785dafe49f1732cf6edba2f1764d23 GIT binary patch literal 3331 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 N002ovPDHLkV1g|0H-Z2F literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/menu_palette_gradient_medium.png b/docs/html/images/icon_design/menu_palette_gradient_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..a806adb09dbb454937bc8e8be847cb6abd0ff104 GIT binary patch literal 3334 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 QIRF3v07*qoM6N<$f>j|d#Q*>R literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/menu_palette_white.png b/docs/html/images/icon_design/menu_palette_white.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7ac41e5efc110a65d7ba0c6ec1c1987813a907 GIT binary patch literal 3166 zcma);_dnH-7suZsdnJ2)>~X`jWnS*Ju05_?A=@PhAuF;+d`PmcuBgn*C31D`P2>uh z*T@dxlM!Wo^&foCxSu@2zf;7xV$%4f*Y?hrj^z! zpV3ZJtqQ(Lk9(W^Z18j`;;qkQ%klc~MZ=WVM%4kPeuS!nnm)%+!BQ!jz5>dB<6B&R zPv6q2jCKsIh(EwgUGFX!crHu^oJ478+!E@bY6HkZ$LXkn4%31TS>B{erY&f`16g!D zSw~RjZDZyt%e^2DrxA_~BH$jx;Hu#g6v#h}{MxcYpOjid`(*v@W$qAAG zMFikHAS@gT#ODL7`unyTKX2ifH$YdU^6NARBC2{Z_SDh=RJOJ<{1QYs$1PT6muoI) zZJDmHd@lJIMW$~Dp8=pKlkIBTgY!@#BaTQ^PRBDkNpH1NUJALou3W5*VEwNSw-gjL zdLad_=Z;pVjP|{FBf3lBb&swn_&C+Gj!C-#DB7I0J@Eg_Mz8oeVPaP2Wsy! zXd8Kf>T>F^J%8{!O5^PK=v&*eNQ}H=i~+^Tx315JCMCQhFKFUj=hia}&Kl`1&-liL zdf=`EB#3pzk|iKr7oBz>Um}zOeIeN^I(F&4yeM@_uC=HH)ZW)3i^!BNcXT8FWh~B& z4C+`u27vu$zs|1`)a21#aZ4j1mwS+NgCbEN+7tdF008dkipU@a>mmKr0H9kG1FF^G zIqc+=>Y(K9ygt`Scjl}d4;AU@f-*yC-J^LQIZIZ>LM0N1YxzLV;IG(w88!Wx{5{I1%hLq+m%E5%`qMYAIx# zsbnZ;^$a0kW5~C!`RJNzl7oIzruqONAA6SAVj%Z2rp{9HD}4iuP_Duqum6Vbi+hk9 zI)lBa;LD>A+?r|1#T#F+UQDwYTCjfEj_;gQ3Ox^GW%|0I?{7=dWVsE!7pkJi_HozV zsUmMqIdU6$A40(rqt`*BOc4SVaN*Z6M4BMYrVYylctsR%%+jdPkjGngi3??w8-EaM zy79Y*(^XzB327)LJjs%A6U-cu4C_%5VM&3>ixZw-gTH@=7-JdJAA4veyeU;tplHY~ zob_qe-KUO9^`(@+t$~D9%xd?l!Ya?I;J!UA##KAu-HG+Ggw^1EBd#^(HN`bbk34xD zo407I`SN1K4W*2`(CT8mRgGm*`Ax-OwCZpiJKVUW`c3vYw-<-kv3Je)pr#x1+5Bd? zUu?&QHVwY#ekVT+p=U^Bi|bEDNpKZ#QgNcVLO5&kOiH=NQ@Q#PvMO@hc^mmm`F=J? z5FYe|Epw1I+bCNsn+F6&R8*E$E>zOl9M}vYGAiy_N8MzFl;+*%up+YJ+vnT&R*X_iP|VnL z%XAlQWlAWOELAsAH|Zb#Jp5*OGGD1cQ*KIrqhO<8s$j9v`EKZ4DSSEpqX)ch^=_%% zF23bq!d+Fn5~R&t$9ny0Ott7_b9HmsjWU8+mKnBi64hP%6aNWc(a2T1Hcd&w;eGLu zE+|(HRAVo$dpD~!E3zr_-*ZhWhNKxrEZ<$esK5`8Sk>;REue|7b|I0yhdG;I6mo=l zWLjYbe{)E(#~Wi^Fm8b2KoJ7t4w6$-jAMsna3lCT33yNjshH)!pDv<1@#48 zJLROBUFBWx-K4qKpA}zA7TPHUe(4^7eY0E}h0wjumi1YziZX|p$DkTEgu!m$OxxGAeOBpc9B3Re@AfNnN?3$F6~1)848I%&%A!Td zP~<5wIx+UwPEW$02)3s~)JPt`>SlIy(uxQ=Y&sdS)v;@x)q-9FKb}_$9&h9kGl|}e z2^LY`C%;g+th=OkN70KXBqi7;Lel+{k=&zlxk@3UbFjcg-9NfHx(fv;Idjz-X(J_& zR;A2+jaii@#U@CfjHlh_2_yyye_+h3Dg(kPKYY-(c(!wpw2WD%TZ!Pv0}nX*hZPgM z4in1QD`Z%t)N-^i7G@UlAi?0hM1Rhl$O`e81fcVY!4MC>i zFMedUD20jiDwIgA5#q%wp0}7Vn9LWb6|$or3;4=ws&BCL$Q0tzL zhpIdh>MnX8rZ$54v#CD$)IYDfZYNEPhn9Xv+?ALDQPrV5Y(3kDQwCLYu!XmVcRtq- zlAf!)+IxMu!_vjF^a5X!XlyIZhg@&1y02QN5fDbAU17U^EAb9xmBz&t-hbFf;psVe!s~ouglRByjGq z1gSX=4!AESk z5f|?>`Rz3^2Q7{1U8ZiRx2O{x_CE&g*OAt4+J3Y}*Qh!9ZUt>=Tx5-#_cy<4M&k$$ zK7`%y)`ker<4vAI72^D1YuHcr%gKpCRn7U>+j*y~*(K&--%7nO)i_D`8CfN0i{EVSQhQ#f{+ghrs z%aBLsn`dRP5%&?XLXL|!7ehD>c5u|m#P$?%G;g#xcRx3)-ScR6y~8`FJDnkOA$)sp7n#ggp9nmaxb*t{{>b`E*=ZJ6R@Nm2dEUX9n}Rgy>faP_ zGqf@VfN)U&h>in*-`*e0I=l@0BU&vz~T48saGEW$Wq|CI*8EOAG57KUD}-e zKl?2>GU+}2En=DDO>Q{QZlSA|cLfg3B|cz%=p5&o2~lW~h?oE;P!8m(4{6n;$n;a9JYSbpA3(vmM}ApvIAiO6 zg`PTqa#8}dX3`7-eFB0$3P`6Dy&jq>yAgjg(6#P(_$pDhHo;@RVhj2QLKv0lG`)i# zr<5=9zOe8huOZ@Cb=z>9VQt5dJD{B4UTPsHS|P}5KVr>h_8sQmEHwOA=>FgOF9WEo zdcSSfGddGoHi&*V$W7NO@^3F%3+~1qURed7N5ggN&k<7E%KnX>Moq3CuzVZNU~`~3Lk|xq|oLx2imnmy|dk_kT_NV^@?(T#T2$%P}bN|FQ zd(LF$B$J%8&$FMs*4itP-;`yrG2Uaq!NFn6$$nOagM+{O??6L%JM+0-cKz)I-C0)0 z4Gs>I;J*VNF8wd*+euV+Ii)YCE69W-gw*OaL#1$VAK>IZe^U1}JnOKjwpjYH2|N@~ z5u4(LGokH6dJE!CGcZY`HT>HQ5&AOVxGt6;n}Wr6Kl(>7)5Pq9a9R$FST*wH=17 zx0sH=9}YT=9tdLUNiyZ<_BxNaHiTQGmhAqc z^Sz{qS_0}L%!XSfGBq$&a#QYu*1uw1>2d#-(lkZkY9fu=1$AKq7K37bHDi!tF@^#f7}&R@Ma@8-H`GUq^a^Kh?NMnk`=<9Hcc`>#Uur63EYhC z_ii8e2##svIt8vcKNJBO3ILg&Uu z>QTzYyTrFBo|1B0R)ruyUu$$$ZxiTANt>gRi1*hNZ)*We>Mi(_>$r8ITRoqPd%2uy|V$X<=pfy(oW+{v9uzta-0o!LkYO`tx`P`D+DhS-9 zeY(4|_t?5Q2Re;s<~$DpUkzJCeO#XI)56$xL)scuL_MrvJ25K+1vd!7B1GSLSf9_s zZbb&Etu9)`p(X{otD>%+Lytqm@=Z>Ye(C_ucScGD4~k+xT%IOOy)1pLFDoONW{*K< zy~)vYPV7mAKox&i+s6;(6`B!O_x~lR92dP@4v!`I(25w4%%(7hX*IR(i#&!k+SY(t z`~)kwL;%qt>IJx*7=f}RaG$0~oc?xRt2sZfW|~1jXv4}+1+$rnS^->5?hdBboCV2j z(U=2z3Il5&Ztk8}fPiP68c|HiL!J<6h#VZak8QI{^yT4b>p@MxQ1r+7m%@142L0g} zLRYisfwdvPON2tx<_=TXrcS#cPqjmR^?AeGtE)GRLPf>EXM5*d;AgwA+nvnitJ8wI z4RhCVfAS%xQWtNN=Xr<1CSi|+2t;OF;Pju97vR4t)%=cNhYw=o6B$3-SvZE=)L>APalZBdQ|l?%MD~;g3LIF8E&_gkyVvrgySjaC zPTeJzI*gF5(x)hEqwCl$smo_ajV_EsI*g?h1>`jf3dD$;?6ljFD~v*IdRct99+E+6 z9A`ItyT5YntV1GmcVkqyzJ@eh%^K;)(*HJ+#R#Oud>xdTkjtEtkTrjTY2WR>fT%)I z^<{IV-*Sf*D{x_9(7rI1EPN^!`-(J|U`%PDqkxBlDP=?G_WTu%BJGmpW|!xw5?87a zA~or}M^hS!0#H7AK+laDdv9%6#tg%wC4?s7cSU~6wpVk@YU2FDlyHtT5l_`-+*+q>!nbG|SL z!w}c}cW2L=ibxP*);hioHpK;C8Env&fi>DF{PrJ2=AlQGo1en04rJF=^okYz4|t`e z!zQ2tVwemwMRp%iUT1oq`` zhFPt!MEh1QG2lVZc~{sRJ?5XaA!hj_6v4ediIH?>_aU>5QrMU_Z zRTsdfma@()O?ul(0`GIrcjLIC^|K*?DEE$EGV!Z8tzP7E%*?8W^5CU=aP)CYNJz15 zoIf1DtxN6g&tz85xQ9jBeMu#Lr^|ij2@vw#@x_^lAR1a*{%frCgHB^|+be>9Lg10y zj%8o8cuZ?cA;J(`0(4k(zj2{Tk!O;nM#_Tvm(e7Zno?xEqE3h1xN3g|;_=V5rH8eM zdP7tgSp~D*VtO^*oYvJ0K~&N86DNPxu7n$s>4U<=U`(m$|g8V^g zvGy-~{#hLmx4lNcvl-kf@hL)2*g;u2)4%&f5+>%otL}%YU)UEINZNM$9RG0f7^yz_ zIYT&gyl7gLYW+MogYH>__>MXL4Z@+$INQlz_<7)>NF4(uZ}ukyQk3EUCR^Ce;EnRZ|f)ZMHRFtE2s60p%r20 zJw#r^9K97xzDYbcP}tWI4Vc_`B(oz`>x;k?@=eLoXU}z~PQ7xP$m}Ud=Hj+T+z@^0 z?o`UQ7zn0Bgz^VCx;qc)9m3p8KK|=(AS2PXg6y3|mQ6X42bA+yJdM2}oezcxb{cMR zhlRvG#J(+?PhS_41W8WOS zR#I{~^eL%V>zwASoB_fAYeLs&4@J%yB zIQ@!niU%@_1M3Q4FE;(Eem`yq|BE-Q`~eF!DHh9KS%Zz*0LragTrM%Dq0VkxQ)2RR zgPcQ9+LBGIlVza*F9B5Y4X&eR$Noyb_#M*5?Q>&A{bCff&mmx{;`bkN>rU<#Mgnej zm(jvIr_fP=)=}cWi^#j>>9bsr1_aYlOFG-Lut%Wq|Ghcu#b3i|Y@Rpu?7>hOl>xp0 zc;TbEDmd!G-%-%2i%?Z+9?%91xO(S$X8gF+Fj>($VVIu6zuMZEs;E1#={t-4grdb@ z{4@xX8|Ui_t61KDLo@uv6OL7HYotZ7w!?00IE3kNsw)7}#ty7QG=5DncH**O#t6`S zNT~VMQ;F>HVV60~Y969jcE6 z>MbpuhI$^!5Ysxcbde0Fm6oV|Bs!7G7``t5cBfq&2kXd^WGOem0ecV!1VP6BK`pl)?*AqDgHi<;21(O{jYOB3mU&q8W|#F{_ggs zGS2*+z*%I2UOm^CK3Z_?RB|xeNAzHed}8~hl}%;&mVTh&`1g`*c-z_u-siwGLBEtw zU|Vs$_gMY~(Z}v-T7N!H<{T?FAe7(2Z}?EX*o7*nSQ`EJkc(OX|uSfyS2RE^5&mjU%DnD)kz^M&t!e4{qKfsD}!i9G1*}(nIgkGB=yhM zpD5$Qb7A6eD+dkwH~yi~-?_ntU5+Q|S@;LwBKtB9njnwXaw2gWPp;%lA&DZ|5=(UP z;Hr>zvDV4uuS1s6&Uf=fjX4-%L~T^Wb|9Z{>J|IgcTHBpUL8wpWWtJubqTw{Kl<~= zWq^uFojE@EXye!mX*)5A0vloyZqGL$h^iM$_C$zF4~cS$*1M&;Zd<5RYBJckCrKdX z1X3`s-=a!3rgT9eRt-GMrQC(exDuqP2Za#N2F(nHK)o;UI}Rs8d@e0I#qF>Nr@Ch+ zC6Whbcc21>KHx#jrNb(fgC@!>Py3~#pz9tEy0DR;GiTzt&s$t|Sv87LZMwo-o$67( z^e+#ycMT9s5=#kTz84tk(#EQ2@=3C4p&%)lfIV?Z5M>M&Hr?|e|PQc1J?dmfg4S_gLZk_!wvZq zy7P-9$E-HDoBsQzxXs4_T$SgQyN5KDvu6Y!7rX9Q7}cX}<#wO$%bz21bWi8Yj6&_P zP^7Ko%34`(hYQfyVJGyWAyvHbrKJeyZ!tBTpzoLyu5qfPVpMbNS%Kc4Sh~kkGSa(u zG*18>j1{ei)Mx=jpM<+NJ1Mg(KX zM#rO+Y0v$z>j;_f*L#JcPB$z6Cnt$JBV5ghG8@g@>o}}VxHC@9AP@Sj&DYh0tf@Bk zAbY+J?W`9_!Qs?Imj6XJwRqbtFubns*!N8VK%olii5-u@K0n(XMd1|qV`#gk#-`JG zF#xCn9ch7|x7~cYJa!&3s`Q^vS57`w$Cl+A>D^10`Jvwx9Z>yoP8BFwYV|sgux~x} zrKx-&K6gN0j$k{=8yKC1F8O<%3}#SoUZ3%bbbai0H5QIOPeU@Y#?>*&s2rUWD$-!I)h9Bp1ufD> z5-%EFX`IM<1_*qpf6UbxN9d2>%aLGf`u@pZu+EvPZUV;Tu~6B^Y&sWLGI46E$8bv~)JE|(FwiBz_k0Jp zibKDIvg!cp`3fWz=HoyXM*jk>9C0nMy?(r3x*&AAk7MT+uv}>&X(m<=ccaT*g^{mC zJYaFrs`}<92`oyT4=fs$u>@@)W3)L7XDC=jmlV|T4v|Fh#+|*KSA?|Ll@-B|%Vri! z&W)5*V(q=mp+y1y7d|9T*&BS%lEiJkSB<-e{a*)`q3(QcQq`y4D}&QM7@DQrP1?Gi zu)8iXpbsQtfUV$i;5NPL<9aJkIyv;Yv+H)CFThDuL@0^8JCOY7qC`rG`tETfy0KVG z#(77hboi^9VUeW*aB?aOB;I*B-ES7=PIGh<^t}gBO>CQE2y@Y*w)f?=r$mLS?RqtA z1vgvK&xBs0CP7R_3r~Mjbgle(w9VX=jrOh$~zBc>$H(1|JMK za1YvtSJ@2#$LVdUG2t;1EDnFoj-8pGG>=@8sMu~{j)#ACoI$mJq@%q%iwP@Ue z=fkbJkIj@^NQSZ)cDdL8t&ll8Pz{4i7nnS8{Kn%quVhPG_z1bD#Ylw=UCBU+VjhDN+#Zu@bn+*>?W!RoiAx`EyuI7R5Z>-Np zBEHlg)h7VN?9go{H_L~;6i{PH5J&s#JEHRU08Z|E_}mxy;HR3k3>}?yes^Oo34fc5 zaVakoc9Hq2dY@KXe6&F3tLp)7_P{cj$WmQZIrpNCE&m@$Zzb_zm>}f_--H zph;!)L91g#vWBJX6XQnI6r||NaVBI$*o;TF{_h=g4Q4|i2|?^z{?RIvjq#gSI>_kr zc%2ee!~)zzV{UIaF_je)vE_QE=ltRL31&X4wt$RYtY-DtI%{gfKV>+k2&;7CFDvoq zuC__wpWW0uz9e0twfV8^K1o>4VL^}01{G|6sg$h;x$5Aor}OszeBj%1rsnab`Eg3i2w zJ!J71m@Y29@l=oNA$lt?P?oQQxBI?OWWhULW=(Y7oHU6xb+d8o7WwWof}bd|fEdmv zD>%PS&)tV!$T5VMsS;*wnJ~xYt`W^3POk~#h1~UUOlhblle39v)r#6JZOphl~60e@DfGgiXY+t9|RL80~|Ce*j0QgaG z>Eyomw3#Jw)og)}epOXv0K@dq*O9`W%=@g!?G7ISzk?TrO)@kf`fp*3sOt zsuyfLCfomw;x)xdbUK`EpVm<;<4|{p_f1{riZvZ5gPlaYMs(H_ifa#T*gz{%<=6%P zcsStHwrv#)*zTaK|1Ys zC&vL|eC-0Ml=|!wNYuOXRya<6j+=#6-hJ4+P2mR_D;+&vL%+>!S?grsX{?Z$+jP^!>f`ZrSolv?_r0STDGaq4^!u*bVorIUsQU@%S)~Ojxgi} z9JGFtnk@Qhhr01^{wD-JuW(JeSaju}w_hYXSs~y+ZrSBurBW z3ll<)F7;%nKU?8acGYC9&fm@!BRvtV#> zAmwxmVdcM^&PuX5YnEi8aGg%?#jnn`Ut=d+?4uL4mvQ{u9_FK&U@BW#yskBYA?=x~ z2op0!5>HzJLjngSF9E~HMQ>@q=6ZR)BY#sgo*N=yTEBSh@@zyC3{nFH#@r41JA)Sz zC7ULA2Fc3O|7u%Fe0oTgcnTOq1^Qm+zIwSkugxfIW@cUfflcn5lf*u>T0zD#N~? z=ghH&!{jX@Gu23cdK+IDbv)eh3DChirPzGc6|YF`9>s6whR!H3y^;k&?}7q&xSM?x za_X!EOWgPWUbB?`^>g>x&O7ZB=Wl+&lz|OFb|$j@?l|A%O!5bS19^bCU>8d#9Q7%~ zv=#mpKUmx@o=;X8cbtc&M8D$}Hl^~yEr0h`2NVFsZECNFgECU5tAZA;7t6DEBzPs9 zh>M+C)Ue5!`<1wj&Z`L^r!OWRuucW*-20$A;0vTn6#5#2W4|eIUk`RL3K6T%pa);$ zXy9I~+dpEfdt7cPS55j}jnxGp%!_xP0w>pf@81f!%ja5;#Hp*pXJ_}U#uNISJq6f+ z4hA;B1x|udxaR8Usqz2-qp60hAYdy_4Z z3lA0MmTeL6stD`SdU;BGN6G!f5KFC=;fczpgsE%H64hJUuZAb9euw^3teT+MnmCoa2J&~3ff7iIp>IU4D$?@Aj@HLMWkuB0+SXG7GfR>60}m4c zVQpUsL~fj=nRRFX<^U2f6q!$<3*O7xG#Ui2Y8jR->b$;in%HFB-6wOgdOY&pwz9% z2>3CkzW;eaK@G4UymGaJfqY21+{{l&I*=JP55#Y>ki6}a?7!ame`+AJfz-R;AJynE z$|LASF@}4X$+qwTElr)Ra;mk|_Ko*HE`vU*wcggbZ9)!EU+sN8!2z!&0m7Pp9uH;$ zU{Cwh6M*%~l<0limQZqRg$f|2IK{(cSeIb){z`|Mic73gz3|)I%vl9tLvIj_!WrbK zkfX|?gmq3v2?{bmMij}88BvGOZk_`H9ap_+5}N|vdq66flSi!BUD%7!nz;KT(_!b! z!9B_0C?z+fy1?TMsVMe%f@KM+`n1Z1G4i!~pWdgHDn z7xaxUbK&$}Fgtw(3a&XZ9^J%?IZU%xL)c)SD}?iV@K5P3&9G1uY~XA}eZruhNG0BA zz1dNje1={poOgK~QB#rn(D!LfkjzR)3{t<$c2;2@ga`N@kY9p4y>jcdl{lU3Ot%T? z;!auTrhbF#D>{+dbu91Ky49)^=&RMU0-&QRhN57SjBsGUaX0lDmG~dI?SY@viiPQN z`)(mJh2pT5jsUi7GSBNffz8f`MB|9WuD20P>VIG3*Kla-JcnzU2A82jjII9Q+M?^V z4+?mmNpm`*61zH;fo)fAORu!K2xha zkF6)-iUA)l9jFC8?{DrEQUQi-9u6KJjy5(d851}-IF76BUeLvJktRwn$M%^)=>K^E zUN4^?|2g?WA0=MzLju5&98(svo(;Ux)dk7DPo7(qAFyAS6+Z00i37nN4AZ#$zG<3a4ZFY(mU;e@m?Pm|6 z+26_J4Y=RvN_!7_Xz+XOi`1IzdLC^$JaFvs5)$h+;n6QX?@5bK9;IcfBT2370`7N! zW5r>^iAH`;T`!P3fv)=v>euxlCR}AvZIQp-xG{i-w0kvo>aKMNRl9%d3d$jp!led;Yw-%v+Mzsj_ZU<= zZYfuazAjZ_39*&jl5hfE_6qD-efEYEa&u`Ow^hPWoiBs@JHT7SkkcPSPQi**Edn&` z*&j6#%4R!0>CsdnlqY2g|2Qdv#FT6r>vJYHNF* z)eMD4oc|r(k23WFCm165vAqeWerq4?!mBm7$NnhC{Bd^neSHBN`Q0yIk^ll{TJ&@3 z%o5?Ze~>h1Ja9OZ)RK1+7>74|-?Q=}A&W!y61RM+iy9uHy4Tq*?FwZcet&!0SPJU> z49GttUd2I}FU-JJ1h}+i zsB+A|pNW*To5%kcI|#s}ITOu1^@?g8`1xP4G zTgTe(aXUijqxL|nnv~QR*i38k8-y)iE4=^pLkZ!7Na{4fM_dO<q%Zl4DzLW#=r+_Z^V|>R{!NVtz&MYT zM-U^h{+{~fNXB0B%g^v*OLLO`jLAw#wVlOsN#c{){+u(_H6j(#7s}{YOwRUhimQ1w zm3PwK_I!>hg(vrsOK9_KWkmr+YkbCu?jt#5n9hH@$U?aw$lg12_dfQJiV*B#r}k?Uw&F7_SBFzT zKjxyeaNCD9I01MsFLm6_?OAo#S=j_24V8I>D3#xdTJ~Efsv|q4+d1||;>Ercn3m2t zP3F^wugzP~PU~)A&P9I@s4^n(u2bx4{8dz@hHni%pO+;50Jq|_(GGc7a|$_=Y`=4# zTfsgGJ43)B5oZUX6*4QK?YxU3Qs{UNrN40G!4E95&+nDL9p{}oTWwHyq)OKnX4teA zDn-+l(WI#06%$j^zWtU&xy!7pJjPwqplwr+BmN~ZF>$TQ>2SZ09I0N>i;1^!?OH@m zp_sj@1^B(0JpX9Y!|B7@-BNIL^D~U|^t#8-e=vlX_MjsBiMgtHmYZEO@lJ~QC0}yC zfLM={XjBa?F6mcW3X<&Yu}XmVRF+r@V`F8kOkOGCsnz6Pli+t6dF{JI4VoW%d$I=a zd>^k&M5wzO@_Z|a-zG5~$hi=9uw0IsC0Wm0GMkp6*FKTr`Roev&g`PWE*3L!?ch(w z9)Jl==Zk*LgcOTI@3$|xXP;|3<>{~Fw?c5mjj0eeaVdq764(|O5|Hq)+;=ir%!?FP z5CVK`pW8l@xzc_IO^OB!ccWE`93Eq0jh#KWzi&aypFy^NQnHp1U zWG9&sns2>(Mnq2uK#5&OQ2#GrU9S7k~T|M1f?>m>BIy?_V3jA`$WiQ#` z3*lil9(Jr&hP#UT;!)O#n)8)Nb=x3j`GnyEVW0ZV^X*jM{BE2?rN(C^DucXuQwFln zGX<==j%GA%{j;t#;$~z24SQ>kd)UfitB0zcZ}#NMxsT2Q3*!yowXB%J*+TOd z;nv~!f*RHaO9uvkrscLa7lJas;R*$V!=VH!qTJlvx$Klovzfe#f|OMSnT9xF%x4JT zPTF$H!d|bJU|Vfk7G_@i1CCnqCK3z0zNVL97?8^%&C(Xu7GC@?JB^i-QMiOlAv7>u^MA%}5 z-r4%0sS!ip#xw})f*8>({PH^^wn`a z;d1dY{)%`H>!Y0Ls}7*KN68>Jo26~HeTM@bO1whe#LlL;V@3>k?>j5h zGHbOn8kPo~^r?+*P^tbmRtP}YTL2Xz&a65a zYY`G(oY{R6`P^EIF;bCf>bEh-ur=3tA>QQ9D#{lh%cSY&D2&WEqpaRG{ZbaA4+kkb3n#p88}Cc|O~wDhN+fkygt z$2AfB%5_YQlU`f+J#+0)uW+v|8PuEc2rq10W2W@`vPs&##&g)CJhk1J?|w*?U_x{F z%nXH6|1#1)(dW0}SLoxSnd+O%phg24!X!#r!`bz8Ql?d9h-??gl@rr8@3CT@Ka4qd zO5@q_2-~_5XVq85-ZZ!%MA>W@K=*xJFnU>t$MhZZ4MQr(rrOahY^+GR~fj zd)e;8mGIpTBbinW+p6tAn=9zbU}1y@E#cLcG3W=Qw=q7ZPaI?cktY*;6GM@VU^l5X zQ}t6eN-wylul=6Bmvf(HEo$E;_B!3wF+JJq@dkp9tHSV-5waw|@|Fp` zPeys7ObwFV38}T{C9yE3e?-_N|I5bvg%JnEyPgt8MUMW2aG|!V zZ1V?grF^XR*2#BYV0u&Tm>JAgZ7PTUhhC>~VTycTf9`t=GN;60n~G{&u;N z4IvYOzCm||*sBGI4vpHcD=~8`f$CHGPhy;7U)(eBvu}W2QKVH9~{oVE5%)&7(4X=|^_bPV(L1Pv!7O`9f|_cewsnedKMEI8I~3Tuy(e z*a&J>l$CFOI+=%D5)#o$wuqK`G`)r{3AXC#sTKG*JIU*dyR;**?(;B#U3s9VRb7BD zv)vsDMC#H7+Jw>?~Xp{n7V@L&9Y#mQnB*IaOaAIzPC1ml_;7?IlJALf2=e|QeV)~gVg34#r#`~ zxO00}^FPm%8@okP0iXE5uJj&1NB`Kl_k%ooR{_8UUjaX~PMNP?8y(iZj%W|k8>XTx zTv*bycV^@m&bf8$57IyY8BnEmg%H*uFTonJa_fa!Si18JRwXIV!@RGFPNh$K2s|I4PBzgOI!t zg?)|Oc^U@i8)v~g+IcAFcS-O~TXOQ7k!c7)*dA+mU98y;DA`Xy?&O`DFCjXx{n=JQ&~Yl z@Y}WcOMTYLv}-kH5qH3r9X!Sw+oa-(zx*wBqCR4_x5c|8Z;j#F;^%OS^p?$4b@GW9mx6i9o;LD`b*fs zBE!hAJVE|vHT1G8m9<9UYf`>B@v7HJ zRDGuFlW-L{<@ogAx}T37{u81u%^0xxVq#({fNFgs8Pt51J7DeHZzcu4IUH=BC1)bsg zFh{U5rT1@TH3Bbr7U#YuNz$jPKkj)rX75`=)|q*AqvIlz-`K3#zz*FmL$~(8H|OJ> z0bZ*q0E&+lPm5w>JhdV=Aqom=Y4XW>oey^>>QHHDHGAW9W$Y_6LhDEOhLh!9>4bP7 zNqHJW-HNYA&bQ%1JOdnPo4%bphA0{Ma#KQBm{m!FRSuu@A~B(l5fT|qKZh78ErTah z2mN!;^q&u`N=c+UA^KA=)_^f{_v!Uni`xgEuw6>teP2F_tQ8(!XC|#-t>^`cugGxX z(K}@J{qJ@{(d1D;DJ8f>r?8L2p}z(*XFtOW5YF+)ISyJI5KBvL8h^?0b#oRJ`#p8Q zyTIOt${sV$zHGIeY^xvYnJ*l@{bDm$sPvrQVcqa;R2!wDGWO~eQ|HHj)pgH!WP~8~ zGtg!08FG6Tfz?eLqC2_f&#E_}vgZLBF_<8XDzSyv5YJ#SuT?0qZC|}eS<#qW_xhs! zb>UvJLf{c_6;pvphZT_g?CX^yn6id3Y{lA>@Y|fG12FGQALkcNXFWZkm6UY{yfFWp znHlCM_dyelE#-iqUm+*XfW}Om1#c=OZrvE4i;$Su8TQs;pQs*H*Fr*FV>1OqVujMy zbtaM&Lh6ov`I83>|BmLTXehIN?!|mL%lT}kfRjrqQ6n={h(+4^S`At@r=(v-$}81L zF>BOk2UVJnDW`S|g44H_i%#&TU?9@qTG zkcSYA6c*4$rdJ@G4#6{ zw)`cKpG=1eLNLD?dJn?gXU*F^M;i00<3zpyQZANEfO&W$&Y98Z6epI!)V|A8aWF*Z zuYl_E-dLJ#7~djcVfsTQ5=U|{_98lI9t-~H%wo3Z4*Es+QwoP3mCspChYwi(okygq zH(RNgx7M)1+Am!Z;@ZEJ`3lMQ7M73lrSYqVo;mRV^=ik3ah_IN1YE$sc#iV_Nbw8e zOC}Epo#msJ4vn_uA1wFjKMH?mBbpg`2zzh&V118k5D}L;7AiX z5n&MzIP4!^p<+qsfsEDTcxeh29*1C~vGX=fK>_i44l$8GY(-Ge4hlEHX z?!wMrJ`I`X^e4IW_Pdz`nIPkv3osFAcPm|uFlC#sG2Ie}Gn(G1N_oq=e^TP6%z?sa ziwgq6s9`9=EWzu4?8R`eblgrPR=KbV(V6b`MX6iQmglhB4_f4=z|2E%!2p3dna zkV|OI`}LEP^1Gy=?jla?VNtqBkP=Z=e9i_P-{+1Z@y;^*VgHv?BcoDw&F@uDXHwT= z`Og0ap}}Oubi>nD6b}SKfV@v6bkt>l<%oky8I)5DJh|>^`fN(75fy!A%C^i-QJue7 zclX_?g})XUw`%7)*gjVvu?*MAAZd$>x$X_WQOwv@Rx~wvs+w(rpG?ullj*^v@M%{w z4tds!de}dGgUOgP%Tg4i-3}u*N!hW)gdPeaKf|$mRZ@tB!z;p9upS$PSme){8h|~ZQKYJ7tE2kVt06rKLYj8 z^T=|M_=pKaZM4<92j-9k(dpCK-p|p>kYQ;h7bK+J(mAp37fSFy=|y0u^YGw{B1H& zUDzC=iBMihO)6Lm@H5TQJAAUOR1ExpLHxV5Y0t7KtUKEGj@N(iRyVSe#(gLBejK-V2jGK+<(5`{EtiWI{bSG_QeKA zeu9Hs!}~YZ-vAUOqipT?am^A39ynAK6Uv!n!rqp!j#EUY$`n@Vf@>)+Q4Lo0C_(4C zAwEGRo|5ACk>Ay8*&Afw^V!mxhb`Pf)_|MuDSdCBkdKGuGz6!Z3q`*H9J{>DF6e|v zPG}mO-@n%^NFVC)gEORahR~kTn&FidxdPD(N9+L^9ET)UJWElK7W-VTgq7AJXLE3O z?)DiYVy0+MmGJ`{>bN4khPaPp5*b8iNl zp0gt0Ar6SusKc<`v(DY3(DV9XXJMr`)6^C{Swv4Ot+K|CgaSKWY6RKicl<2czRDEV zUhJVhg}r`M;BIfXRIscqjvuHWlCzc)W7Z#D`wnW=eP zT04$OT5@HSB&}e73)?D4hnmeYq%iot56d6#$3U8`lKVw^l?jOq#PQJbEtgdP@EBXD zLi+l~NY{Wu#R{q+=%!_rdPnI#c?ToiZ zAI+m>uK$rR0sn<^kj3iDR;5D0tz`el-?K%>;cuu5C|zooqxh9GgxY*)|NAakp7d%f zbWS@e3|*{345KidbuCgg`hzYX9~{CV?~1Q&xurTz($4!6m*}DX_%r-cO!*QT&hGxh z{j2yH6%)n4{l>N&jd8Z)6}YriB<%2z?0oo_oAk<+Q0%uYo}^819slbsP#K;S}P%a*GD6-stC*0g9NJB=f{Li$WlnAZX?Q@VN!a+C+L_WSW%AxCT zDC_e-^S7E(NttT(W}TmF6Lq?He0Ay1!3iN!<@(TrX%Kq8Q)1E+g^ymp{^8x4dQh$E z1aBeA{+N6t(T4^8!uI7>{b9{uUBw*NlleXI7d`ER`|Tf8@fo#PI*07vLsRW)1n^C+dMaEHA%^otXc3 z9yi$S`)xo1OKD+lM!I42u8Eoy#;9hDt>Do|s0erAq_ohJ2;et+jcrJA#(`c`~4S2cev>u`AY9}AKr$BEMikr z-nMH5J{l4J2)x?16*(I+6Y5g}qdUu64r8Wqp1r6FlJ7aUwPTSZ-T5*QM?rN1_UrX% z!WC0BATV5$)F3McGky3=qzfhOcxa$(8c&+wy>7f>K>5+{y2ql9H<%9cp*!p>4*On# z3pmXn=c$%gAt~qmX3#*H=Og4!UXBTnq^5XWmX0g(a0S4pX_8!_^^OPgqDw8m*)v&7 zZ+9yP{6OP#CZH-`-Fg#nQhHPPhbJn%+PH*f~W;+LF3U@Ah{&$Ad=c|640 ze@g$f(tmup4*p{;^gjUHKqJ2}8+`Zm>{-?cd5TF2<(){34x3F_6=PP{7R4qw~_^eRwo4L#tyj*w*IQaxE2*90(3Y5Ht%Vrz%~HJn#Q zwZ3G)gL_{#ODBk8JiB8UBMbnCsU174fj9w$b*EZ4OBA7!L7`2mLl`akLy;gmh=bZ5 zwVQ`(S9WxEK$)Gl9B*mtfN?qr{lI|(^05ik6%rkjA2lK(U=FLjWEB;T2&fm|rf@8K za``lnwUNS53%-*JQP}tSH~<-@tSC2&OD8WbFitX?*pxCPpA}h4rg_EeK0#{|@ZjE> z-1|jX2$c}qVJ!_2kRbsNE zq+@_OckUb$TZk|4U7GB{g9mkNq;iqW0+xlM1asV(6?7O&YcSWocqNvEa*&v`bpj-F zb$RA>@SQu~Dq#z&-q?&~abzV+n6OMrrc%Vko1YSkhEVzhlKi7pk$?yHRS|pFE4ASV znq!VYbv0x+KsQ(y3Xny^HFnU(Ms}PHt3~t+*{Ow}LUvTnSW1LM$|V2-!Z5$^vI4{t zAIe2~P!FUd0KRLBrYcfVQPv=aX@ENu29u={7=_XF-HS0c-71Vh=oeKmsFsyL=n0@X zk=nvaB-SnU0WlsT*lHn{#LmPf_bO6G8IPr^dqU`!lH)x9`hq$S?tRe=-5`QN&ZX}u zv{4q$PxJ6m{2CVuPTJ0)PI-?wiclO_8DNKDFlj6@%WQnvHccnQ^_c+qe8 zOC+2U$)!l<`;#Y60{7UsOn(p2qe65ijn2+Qq%dwJM|ls?(+-b5Z<`YEu8?gCuurpV zBx5T5@WT(a(~=Qx7^krPQ~*w*pc#$n8N*a9E`VLk2qEP<3M=A*ESSYXF4NfoCLZZ> z!-}CC(!clKd%W4mpFIJdAc+eb1;%>7juOb8kiG}9iZ+mlw7bN@UA!xvFc?kWz-9%+ z*W*ISZd@?A(h%Hxz?ZM0eF=DQZ(oM}SOUY6wNrfoRTy*^-K#_R$1#2 z(+!z4Sf)vdKrH);WZ{8V5MFWgev@1{S&#!;SYg~I+GrNl7>!@IG2u72K4R3HW%{Tw z+9XA2$elrpH5u(Sx&hUOx&|S4RcZmFAr#X+{Zti<jn?L(z`08^nH1N%UA=(i4OA z2~`vwT&0OwyNhKWxp_4QXjVYk=MgpPFcu|~KvW=M6ASZ=j$M@Fyd`i2=$6oC<0fQx zg%GOUScXB#fds}fVP00?nmdqfhw~60Wyg4ziHxbyK0j+R={@fWV)2hWxUZi+z!+mp zqJ^>W1;&Bw{FK_RL9XFVOlUMl2d9R2XGIfRi(8Qa3ITbi2xse&p#lYDXpKW5u~g4JtLPG<^b>=QZau?`4tNysUF$MPwVAsAs+6m zE|*h^64t9sC`Wk*-*rTRI!r=!6eWBoB^Ez2lDKC~B@pHxg(Tp?eO+}4fQcn9E_tnK zpbFiDbQMfcuIDX88M90-X7yV^H|FNcm65Mstss7D|>S|l1MSfiL&ST}&Px+s${ zNXJE(T*!@ikwVza33kU;sz}iA-jN zS-fI&*j6kV%1CJt47KR*;G@~Wtcob*E&tKiG9rKO2BLGt1JJG)efv^ArY`+;AzC#nxSG0;8bhu=!BvjTqxsq;fa)n5{=Zx8nWTGToBw1};~S!5tS708R^u$b%s#a5Q9(0-OeUZ-m!iUHVJ}K6aw2 z9w6FN0EnHUcxnqZ#I;Rq?hGfHM41&~q@)BFdI*DY+mT!~@9HWGFHAa=fn(*BSQ-G($L;Sn%zRSigZCr{aUPM}Hnv!{O(L@{K zkz`z5<;xcym4NqikIH1t#4rwV5dq-zHqH1EsJQ_RDjQwB9A=Hz#Wtmo_jD8s1Tn%^ z9fF1zzo93LyH`{Kv5hJUbys%Hh?bpPEY&i1%IzAnZ~3clp$ScNQatOBeP5Go?N&HgHDj0 zZA#qT^!4%r86Z0go~Z38@5VLhLoBQOdgU0)36<&*HL}b|rKsc>jzE9qjV)P`q{New zj6kGeTx|L-Nj_9;z1c-1Nl;`leiepzRx*$(FIAfJqSR8dn;rRZkrDg5RjL4M&Xf}^ zVNJ*I>Dywt$VbitiS-{R-sawaZPEZm;F^0zxo}Ox%yduvw6WJfsU1$DQC$zzcnaCP z&f^<{`<+{NLKfgg9zo1)O6Fp^@g5AehV1}uN=h?IM4>Fv`q&L(jLT3%n0UgZVM=4M8m`?Qh6r>LeFbQ25Ti4m-;A_`=S6KjS<;{S*HV~E;Nb^Mg)4*`s3@pE&U5mgBfj3qR|z~NBgoG3 zDXRm+mK03)#sh9aYth7t(fOp>J61=1mZ!fbI8`X{rXj{-uK@ZBxYZKEhX zU22g~MIzqiUGh|8K?CUt^Rmby2ls;q51M0W0)-U9w9P9HA|hi#$~FJUyF#w{ChP+S z0CW}-u?*Ndz5q_pW?>tsA+&O#r1#u_5rRt=8!@t*<(hctG$=8`gh65fYs~xazt5YB z3L%Z@?Bbndx_A`Jb(CL{#o}owyReu@DC9C~@t@%*_^tyI>Q$;*pca;4T=)nvD#s=%c)m@MuL!NQSYVWcY@znAj)ixCCg<@=S5M zTnSG9>8q=fPUWh(!Q5aWH`teJ(Y=!vgN>yvPI=TeB`S774b;%cG$g7w@an~PgOgBQ zf(b@D+8ovx0lm_=IBt|Ek~bCJ>+#9cn+oY|CevhQjH{>w21AcxkzKXx5qI|zxC`Hz zTtz=q6kD8P53QuAXcfGF*s(uRnMcz{({v;zp(0~h{PGiK6-f-W^OL<=Y;nTZQ!g$F zBq<{aI3EH<-Zn8LWLZ;>s^w~FZgIAh20W|j9_>hLLPFjZvI$|WN>WA$rd~_|QhyBH zT%;4m=?;;x80SVthj(n2cKB6+RuKW|aUi=oKlclG%4T zRmvzy7DGU=g^7k)C-D9o7|_fbD#tB^FvfQ@eP%3q3aXrBvRiI~geIn5m#|P3dSq!V zr3K&`RRfk+TnV?Lu;jpdR75Rv*C!bRS4jR#c~{6jX^?&;gVCtLV8fE1s7q{9!W4sh zjK&*xL7R*6HWU+(B0Ab#NhCk5Co>!Hu>j#R0uW$iN9i*jEw2S60pTW~39>V#fg>T7 z#jKD*qDbJ{2y2Q#s<7rz2~=by$acXUHI{Y(saa{X4>Ku!EO!*5&s>lTpHAt*D-yP1 zf_kkJif^hMlYoRzQKD9SvG^g?o(2WAjoBzAdX$hLn#IR-N&<1*a~oQgk<@^{AKQs=>NMw!V`GmXS*^p*sSOmO~cwL0qcM zE1WdOud%P9ls#HV$D1xx1!M@|bQe{C9oDlGCr%JRlU15fMq?ZbNr0V7o1vOIEY~fh z7SP)S*0Q2=L0kV0Sf5wkAigx$#4O1l>sBAB13-cn$> z>nZeu?@Y}2|KY+EON_|@UeMgp^hpN3hqgGy=IwE0h-C5MfY=*MwL zj$1vZ(^pqd0`Xn2UTPoT5ec{eM_2=1V~NqiP?w7cbqUd2P$Nc>Mu|%32w^K0Vgo)F z)bRjSM6?ImEe{muYc|I!3-6!ch?oil7+ZfF+n?A$L4hjR_k!rlqSU24h$j> z9y}<=f5M?|*~?xU%SE>$S9bUBR?RDx>%o0R5p_O+MvDuD8VsmE_&eg(%_HF&DTQ>Q zpCOtAG4=i*B_k|1dtuWrOqhV5E5j#=w?F;f?@|uY-CrcuTv2HU6C1DVV=rum$w#HTqKry zt=~jr_@pgKz=L~BV(UaEVF%+xE+YD3r!buXW?*MAHGBvxe6hp66BIR6MznU31hV7I zZr`>RcX|}f!c&kPAOqR)s56+T$9O%;q9xZ$*+M*p#{yHRQh}XV5Wm7c9kvDVfpprt z6ib6EC>b;;iuV|ccXM@>U#m#9ga|Nc5HFTVZ@eopcX-DgfW~FjfoXpINYDmU^c|@`3?VKdyI|b~K4C|!+}a=Zv1k$+@Uc}BiDMtgE@e$=VgbUkqu3g< ziz#t!yh{#tkF7Vva{Cf+Ymqb(xUff}Sqi(Gi+I{pTUc3XtcUL*vT++_#ezn+!_Y&# zCy?Z(Y+oAD{$OPa-v#CBpZ2OjB$v)-hMwqaTx?VN$Zkl$Ywq2UYEqeWeFg~^5h#SXHr@?Hq9q#vdX$hdnzyqt zRBbINbW{0+ts>NLd4ltPQ;$@OCxDGh?ndnA3US(5;@c_B2o}VPPVQoy0Pd~&h z1=8UZL;@@oYV_E;j9<1m$?1qKyA29~0(&5bSYpIG1n3>q$dKbdKk)_PwMH!SGq#Xe zf%wRlCE(9=SOY(!R-FJI{S-wv_7A^W42z zrbk^xLrxyh*d=6crfx&JdKlM-0EaU>hsLn(r#(loCL-&R%E)KknAHWW6E1LTK0^or zoI96ddektTtHx!Yut1ICB_E+Y?T#FX0qjEfZelcwR05)=H0(3_YHsJ~?MzAHRILZW zTrT|reWoa0*GR*Ao(>v{GTRwydS8n7mg&9B`=my7V)b|iHZCIUZNaOZj&86X(qy4r zLq&nrVnl;BT04M_VFBB*9rQ}dXflgoVC&#wG*BX?xCz#E7qfO>U9J-tNq!`8*V*WA0(6Wq~7myB4{UPqKv?8yo8MHfXy-=-oo2 z1I!(J7Us1YWM{klibr@Wi>wOFXXxx=jf%Jo-0de%jo+?v+P%WnQg#c0<=2XJxh4{n=Pt*8?zq6~ zaDOpw<#dE9Ux-P-gL~IIg9bCpV!W9O+101H3*+o30a2p?qfXD=;=4y{!T{ruXaLz+ z;sa&uaHwQ@Kz3Faut8yyAtlU;)2IQ8r%@hz!+0_a4L+6hEV1zd%dYk+{awijBODfB z^gYs83AnXWl(w)^7x@c2&z{ta8Sr zx7JlAZQU$xtg;+K)mty8H{&LO%cFF5^>|@=2-)2dqQhoY*b^5JLxA%gan92bSMC_D zM;Hnk%YgXC2-%gz*jIqNE($T01p$2`fqL9E9&c@Jyj#12ahR%bn$kvx70aXq3>p~g z?Q4Z@7M`wHLT?hNO~ob?IhQL0rhM=n$01(kkifcW=-$Y-saia^Hzlqn5^J#W>W!-} zFo%wI7s|pLQ0e;iC^|%=F-;KBa8eNvN-mt`5y*~%N8`H<8Nf_tOlkOfYV^AE8MU}9 z^E0+~mzdrNpgFJHkQRSLR%x%wUEZD zHr@${S?($ju5kqh-{D#on^h#Z1s>N*7H^j6OiR&U>7cq(q5>d0J(#y|{d9-Ag;l+N zMoH;Srx)ea&hRrvj2Ko>bvlX-PCYVaLu3<=kzEJCimwo&@l!?B3K#bCV7t=;>%cc9@kfUP&Hck-@H-$g^A zbE~^6z}*7szSjGrgQNq*HC99v8kA4ll;pk^TawE)32^6NsZbkGDbwZD7?(6uW4!@f zFFuxreu%7xq!v#=m(Wf4PK*Mu!0Qo~XpoL24dUHi!Oy5b@VY_s)hS&(RYjIeKYJsY zdUY)`eD@z?+<4~+%pN{`7_M;&f?DGumgU~C({L>{KljDiQri2uH!QO?myi)ff3v6fPpTGziP+ z)&_G1?yFv{el2wQ}iB2G^u!)+K26H?@8E1ARB~}-GZ@QlFt(jQjCJkLqTUgz$*h?A3GA;s) zeF89UR6(kE*Jo-7b3_5JFJfV}80n?Zx?PtC_YO!{J)7ehz!8kxxz z3k#CdH2zeSMAN%Nh_EURIkVTJ#0D+H66+K5nY%s~!gmtuiqa5@5lQtbT`~JACV;_4 z$hNjHq$8Ko2y0B)jp^Q7zD!RYe*P~>58X>h)!gPrztiGYw zJF4I(T+@H>uma!prWob7Q^a(*oPP09iebxxdyG(;iqh~S3mp_>$Df@sCLq(@g*lC9 zb=*GbzV0B0B%N2qmPpw^;VYI-10528>^R2Av(07MgkZB;gN*kQcbaPJJNI?p>UpZp(3y)f&iz`fbaF1K*A&$uUWJg$-s9kW7b~D^d$4rsi#JyQ3cCV*u}e8 zCPrL??|g+7e6PoKrwH2!<#=%KKr7Qh^_@H&@Du_#gEj@M*OJS6d@|Na11!V-lZbG)?eb?1*>nFl&q}vUvj6VGfDfm91eM+#*8(y=~?M-`Trl zeI_aq6-6O9N78D{3hb+J+epQ_HAV~RO^ne1weEbTu<)Jv35_1ES?^Jgigvu-P`eIl z@!;NKBdX7-zY5uL5n)UU$aELLxfrKW+Ov_CT#?HHgkkPvQA@{E#b&ff8*l7}M`s63 z#Fud@#z`;ak~Ea2MRBkFYzV;wF4!`j1a=ay0UsELce(2C4@SXS&+1(?u#ghB@;4r_5sl_%W z8-0-rYYf|zKz80Mi8MgBfS^r%RN>aEY$<2L@X#ZM5Jnixoe4X_Nhy9s0%4S_6DLmS zs1u&XBD?XvDvY-zt!`x!iragXOaK5N07*naRH<|mOQ^Sm#6`Q{P>VAOFGfa|n#?WD zeWWd{nhe}{<#KtmnCPQ!iJ(?)0`GbXvhzA9H{#VIva1s4S>fK#y+u)LbYWgUdh{qG zke_r!0bCT;)koE>Tdc47Y%300OCUthS$(P}npX^pYnex}#_-BQdhsjvU5GcXHE5gX zV4deMfF{5NlyfQI#vn$(8cmihPU=F@)^R08Ue;sTA*`>k@{{!3lcl+0g5>N?Jr#Fk zF=oZPv9CvPjs2bFVqQl`N!MzsmhLC+cR%-jlUMg!q(e2(+gQ9pb=66>lxhRd4Onf8 z)K7Kpt`4W<@$ZtMFEVo%E{l<sC}F#6)Xc-!akFM@ps~ zn8b)7rB1`=Wz>gAVh;PsBz&kt{CpT6ykUW*MNTi zcA-A@mhs@;O82I>Vb%oMfjOxg?#MKlvu>)cX~VCTDm$0Q9am`Upnz<()F5bxR%Mif z>{w%TXp9a^i4IP(D>8&TDu301CdyqeV+3=q5EQnqVlZd3rrHaP!}^zS#F#a!}4f@%xWlmhyuU3)r{;%4DdqZucE~sI~7~^eGIu!AC z(J8t3sorVv^(t_?b-gt0#D~gv2R0Of>}-RSLvd^^mRTzGWd=zV%sm&Emwu3`zq~YZy68nD|ZhU=0JAd6S0BP`N&D9H0y*RyLu{j z>#}Ygv5_ki(PWBxwZIDm;}gv~Rq|F5ckq}OKdwQP986+&r!oB$vu>qP0-`ZZ^0ZEp zOAapH#YzSVD~$_wq~w?fX|i}X*(+B)(NKbpprJHvjEbhT+Fg>O$=Zo=84T4D;vG7v zD1`6Cz%|A|@SOunm8KnfHb`C%?khJm{g2+ph2JqcJIGE<6x|e~&dNR1YgJ8b-z3Py*FYul76&p#A=%E^F)t7bWN(A~`m)Nwzjh zaucK43$_J_+_{M4Eecm9nuB*Qb|=)6xy5VOF~wp?)VIL;N|X@hc0zS6u`CIQaeW#A z6`q3`;K=u=6&ulm`-&o3PQXGUI=da;p^-xmGngZ6!?GWGo`#2waK?$gZLLFPjcrR7 z6$Fo1H)cL#R@3lv`3*5{yhqFNF^x+AF-p{icgR^7$KA@&yA+ldG+7-{phs?AwTNPL z1Pz+LzOr5Gs>{|A%hEWJ9ZzXoQ?kM~v59N-QXQ;D8o1W1W>V@nNsSiR$KEm?++!M1 zJ;@%>y%-Ygs?foEQBb2h5~=hWHZg_PqCzFtOV(gKb=6C$iYx&?8Q3W7sO_OIpejx5 zAmLpYk05k*D^1+RN}wJkitjAr$#t!dr!L+J-xZ@UJklFk+$O+geOHsEySjO;59kOQ ze(GDkHenE>EcN8p%eE8cP+~oeuuC5E8QKPKEpV-aGu3rtJ8(UYHb}hR#1!Aq^cD4K zUSrvPs<&X08m2F)huO zQvPEdU6ypmi>I&f@(Z%tp)oF+N6{?=a~-G0EpWwttOUCA0?SC?;6P}mka~GFLbx-Z zVTWNpLvvSRTQugUAYSDd%k|3asu0#|;U-LL5tFl85WItTd#b~>4jw$HBgX29g+jlNOqcoAvDh;hL;RlvBy1aN*QjQw4^GQ2 zFK7A+stvEbdWWTx8K@D^PxU29ez;OAw!Z<(;L2%j6+QAXdn_N^o?E$-Q}0C z(A;PvpfD=D4pw7UV=wNCjzisI!Mj3sOS0W5m)@goO6ol}TGZ9-u6XX{UrXTf~{w z*y6Nm_}(mgy-M#j_j{721F2UD+3EKhNE%Drbs4~^=Y?8Ig>#^Ws4KbBpeZ} zBgP~s^M){TU5++DDX%Ge+;`lz!p(Tdz50g>2Y(An(^ZLtFek`&L~eN!Rc<|ui!#Lsn4y{KAs|w%@&0V~+ z(N(Yib+5G&N`@+RXkN)dc06Ph6FXECsRV3OVmrIOZEa94nHc*amTjaNJyv@Hh5k`f z5{MP4ByVl%;=53f7cZXT=7fcf>V$LzV!HvQX?nn69G#b+;JZ$kXo}R%CJyzk5X<&c zl&fl)r?iDtF7V#|j%2)_d(b`T5Lnnjc5OhV197?dUJvF%-8$4SJKO11TD>Y5y(la! zE9qzfOD4pR<{}<7hnWn0hxZlnt7Nf^8#;uFik93Bt~YF%YQ8A@is#M+v~gL0#QLeP zYq8jl>7x@LN~&s z=gvjtpCJ5?MP(3PG$6~V~bO`6Z`fQu5sjL zeu8U#uB0PWt;Iq%s9DAaOsreCi)(ZmUD5Gi?Om@sw$LFAf@AZlTZbOezlH4R>~`Qa zXiHSRm4xiTih=cMt zhU&Ax8?&QsP;jSX(M7aP3GGJCf5dP_0nR#8z3v$8h4oUlA8&PuDhkv$ckpi3>RCb+ z%3^OS+JGvq#kj&kc9mnbBoxb|UP>UDl6CV`l5bG3O6=mh;EX%SE_}yD62Dl|)GL!h zcm%SunHhC~cUi2IO6=Z~C0wuY%75%>;g3x+T0k0X=V+fmD{`fDMS+el|jh4-ug6;s*N38Mmb}EZA$u1 z9+8^KqVt)UwOk2|Q(bJ0-Iu{SuVF>Oy4})kO3>MDP)*e!9WQD)!n?|NNP^aml*Tkb zzha}4nm(Ze^tc(KeNuAJUCi2DU+J?mO?yo0s#muWHFr8O$jljUXm)ijb?#_s%xAo&@P-~jc2~%WXgyNZ)Ru$T)0JncRY1p^{f`R&rljg$&5n+?dc;xntBR^ zWv`c@L3SEUCQ4MP4FOec5>UKOu4ZDx@jrClb%S-S(PSGA+}W^$&W@vqdg?teyXzk! ze7BzJ_V}*0v1XcjRp_Y^1Ez!Q=vHnQx4iB!Qy64tKEumR=W-C~PGk0yfaR@6iI4A3 z38>)&%7$(hsU{{KO&0qM0d3|qUP9fE^a4s&bl5h*Pgj3e`SrSrdZ^bbyJhKK+tllG z#G{3AXHd~KSvzG*p>05orH7Po!9{@i3}nahs4?lXOoGs4rqX)GaxC#avMC8zW2uYs z)6h);?&>`H3BDgYc8qBr)J|B0SN|a+TUc=$C#9AsRlZxPQ5zfC6fX@Xj;%;+Qi7gZ z8UkE6M>4DN+A7C?$*RHX)@ZT~0q%5DIsbuiAUiEB_!i6=x~Vto9@}3nWA_?cJyPUZ zEy8FXF~IO-KxfxCXhO+cs?^cR01#@)x1D=p(|A{3j}{n9PxsjOB{wbsHBG(r z)|3Ktk}04&7)P&QP_SyM&HB-%SIO!p>vilfbnRV4YbVUT?7?11MmzjWA#7(}Ah&lIIT& zYgdA8EhVEu_m-UYSA$t7QTxmy6uT}RNc zMF=a0`d%oDRn%2Uh{t*ah+v+IUn5B<&z<>+xs9*%Y1OK$q^@G&>r->LMx`IqkY~@H zWkp5PI1O(|X8{^O-9`6RX^+^d)lIblReF=rWfY2?IFu{dB|avwrac6IYg|8SPrMtSwsh|c+v>VlfT1s>LmIc9OzG0 z+TcGdBi8H9mm@F`K#HdhEN_?Y;&;>}^`Rjzc8T9rKfM@~rq>2}8X@=Da`8xA`BNVOmpa4-D4%IEH#AykM^+|eV!AvAidLaDrJm&3T5>>d3td?l$E3NEgaNbg(o|lhdUVotSko}FuRrpFmHQ=vi#j+qLW?wfDEfw-gQ zK#On;`qT?_bOOIewTGVbu)^-RA!;bAgD625{k91uyuzvl$AW7Pf!)PBuETcra}TG% zT0B10vTkK7eCs2l@*N)`%b&+V96diAB`Tl`k;CF*JMag-Q_LOJfIv!i9P9HB!{7c_1-`jugx`5tUk($>aVjl|4z(bSN33+BFwEl-4fECZ zIvaY0${a{vsV|wCcK`b8ubF~hyhTCjLLYBhIu_wpD{s?oo4_Q>B=jtX4Nn4IAi*7POt8TFmH?{27nI>dnlIu?p$ z-JBG`ah6Z8JO`Xg9W*^YOvXhW%k%Im{kFAUQ<7>kUUlmht(k*j$)lKE+DU6Eu5U>Y z%4RxTB&#bmfdKvxo)Er4jNnx9CzI)T7kn3)?4;^ZpE-J-Nzw^7k*sKtL&~=&8=hGx zeIpj6y8=Y{JKvlY0zA0lKu^3VtT$w;pO(Rmw5(gNVq!4aETwq)UwENx9Bwx#Khx)8 zEC`)<|6T1O+)jSz9d(@RYEA&Ty}m{0>4gp5wJ?FJntm){uK&Wz z>n3+NPRqLSB>5$9%U^@w208mxbT$~5Kg095?SzNMH zh#h$0!yyXyT8pi^4iSzB{FN|bOAiqoxhm&$w-V)`W?9--0>~e zuwwu+i(q!pm(Aj!5Skmi1@g-ROzn}g6AyFq?6g(vsS|C22D7uZfE-Rs)>7Tm>)Ckd zjh^CW?IIv2!EMHK6r6(DnMub9Swi#KXP*H>%ItwkcpCi9qa*$#@#2|K>b>VfsPLH_ zHw5NjQg_yO5?ox>D&2ynN^-|t$k|B^;5cm>BlGY*KA5zt3d6dYI!~U;4?)h(4X=K0 zJ~NOyA@KMRFs${AIZdgYDlTT9>n$(OTq~D1fPhRNS;asjoehpth{>1mI#LQfDP^-Q zGFd85@_Y12Lnbs}dFD4XUpgK)FVBvEOWMf}Lu;vnrmD;VC44jG%UuYG7ol2R>{Lna z*oiwnaM#v!O3#6w569`BVbOtM&au-$=*=d^Hn2?)sdQV$8*)v0h=d`Xn213l)!3BUX9J2Kgay3mShFe6Wf^z%5A zO$PEz)_J~AN=egDaPTLiATxx{LDc6@u4<%TT0HZ-Bxm;U;MK=7MOi+Umb5c3fq7sz zOp<;uOxRC-=Kowi?%J9WHiL$gb9>7=Gi|`Mq+4!{S-PN{UFz_S*0j|@d}n%_lPA-} zry4_G>;w03xqakI@h9HJaT-}vV1d^6-+#}1g-9?D4r8%7lKfo0I<7yKXI$s#l2BRt z4!*S$pSGwvT9SSHuQGGzCXstR;2t}oO2SPi!P?!Q6d0MY(h7Jv52kn!&jtfDkudol zc&Nax#jN6&UJ-RtR)3~F+@L_~kh>~}b~-@oRPlU=C;OI% zs|x|SVtj|E4I+y_nH2rymtQmsKk4deA^pJYyuzwgG=WKYekKIY0WgiJpcEY_pvWdk zu+9-?$5C<@-W`Y8w=1sy%sWrATk4=1bkh0um1pdo;}S+>28nqXyqr0iw8CU%r3~@g z)~Fo%a$rv1*Mja%2;f>cUO1%wB#o8JMLtVq_??`CFw`ro0pO%FbC$H1?UMLr2|SO= zVmJ;?h|uNsRg|edQ6}+F98FVX{_T)eZ>6q=tdiVCd~l_FPWF%`=6q|pbywA#8%|LX zXAzhuOFWig+vtUl-SH>pH+dMvl6EnBBv1op*C=z6tWw97jX<~)PAl4#<7sk6g&cDL zzw;c31MWm)GZr-&dm|-yJ~KJ=#tLTmT``gYT%D-HOtrmEh0I7OH8r#pPbZZ28u93U zsw8*JfB}Fzlz zka{?dNB?+cpe-p5lQVRyEebf0duJG25tQk6_frF{GqUYI^u8Td zIpA)WN(2UdsvmvpilrME79T2AQsZ-I*|$9dxV{|QF=O1 zu!>|8;Z$ehDl>Qd1J95%rDnJUeffmM&~bcoK&sA7Yxl#(41LE z{CwcU(R?mUGW|buYAl9y=bM;CuW^NEhC88cm6L>)+**2mKPNzTsgD(lSjQr{p&qWK)NYeaQ;EfgoXtcN%VfpBBFQ#uN#^uYte z3FVOdDevXoX%WrD#;zL zUR-iPpK)^8zZq3$ss3sA{Q0^EjTzQ@kO<`h7hso(!kS-a>%<*^_&J}z$}C(myauiT1|2{FMP0Go+V_e16(110wg2P(by{b z7=>Vr?OG=WEp@33qE<=n;Er416X`aJVT=g_98;7!VmbolTzHs`(SD(G4k~xox0s!+ z1xVhd2;YO?iE_ojxZ82bF?ze#mJt|xksL2{4nIr}f}MHa=jWe)))Fr@nWXjTjU_aL zdCP%&kL5WU{ZwC$$s_ro;L+pm-hY*I?x3K@?oc6bLW>Z0hh}+);eYrs*Lm(VSs0Ud z2%5<0xoPG72ySWF-cmndBi~ZAh~LBAHPHF)z8nhIYyg39&Quo_rmn7RosyV%;eZdB zJKrSlF(D}j9v~B=kO{HefWRS^C*Sg)l;( zOsVtblZEHqV$R!eQ0^yqS>xdhT}a5QwmeqiA!_WVAX;aLI6z<}4yos5w9qYWrh-oy zfei@A{p4LKv+I}+b&6nQ2`|UQCd`=LUJnM1m}L%=sG%QHeo~xq{LV$(1}*YUG_*9; zi?y0HsxhW&C3h@@0l1=)Ba^x7r&E`Bz}Ro{#@0ZCI_f0#11jK}!R+GVOwSTkzl6YR z+%X%IVfIXKI+d!nLCuH#yMhr21X7|G@rmL&)&YwGc!ib6W4ySe6=G^Kz%UA7QmzEl z#2rmoH%zWZI79SmqCV%Eb9P6?qc?_w*|{d^wnMt?IM8WbRY~q)Y}uZNtGp9| zJ?5Ms&|GV$jQ8jiS9m(dxw**mTu56BWLl+mr5XZ957H%#laN*i3%fndbv#g?2&CQ^ z$B~Z6jrO0Hl>h)1*-1n}ROPGs)|BZI?^Rn~VbxD^6CL_!lu5LgbUO&T$$ltI*@J|g zX(GKTsZ$TRWv<%`%c~^!)S`gSpXAG|JIud85h$;9h_QL12M);D`OOWOU2}^AFB!Lu z5=nkf)Bpa+xfLf=dtT1W=sslxc0m9ym80q)Se^s*zsijj0`NQGOsb?F^2EBl|0Ol4 z!{jP=5Am~?iqqM)C%r$r#a30$xeM;pbz~As*cz9em$x91w3#*Js9y*jS|@FX;+JPA zbQAu{So$a`bWDYajnSAcFal*E5b?r+9Gh>21A?kB>SRPuYw9s3FTU!xf-|i&1mF2< zK)wf^CFoeb%ymWc>?)Mx>U@b7O9ncpPW7347!|{?`Y@i(=S?mS)pr0Lg_F=nPh&M*(kcRJ_=Gd3UQJxYp9?`q`{6+vnUj99 zRn5~8#~qHx8b~#6GALmYGmA3G*l0L7l^^0!&pr1Y7z6epH*U)Q@I6l2TjbT+dyW@NZu*Y z%JF^egs;fAV0L_NuLZDa=05g}aL|lvj$66J2po+-o;uTfWwRu70>6{AF;BuPPQmYU z9a4WF)m%-=70VpZN-xcjx$CBxQ*rm4>7npbjgWiT3Ao|yUH3nm@4qI3)YjUg)M|?& zcBxTYDXO)r_8t*2Yi~8HT6H{AY^RR*X5T`q!oLV7sQdxbWbPFx;xvT zm7Eqn+*X}w#pL-o>TkJAhg!a`NWt;5j5hk4tL;~Ob!vrqs?sua!gR#SD+_JHkDcy) zFsl_bb3V*Esy5gqK~)GiXH%xfSy)N3lZ@N{nVh|_o`-CusrG(*SB76}hrX00i%gs- z7iAn7)K1Cc+THR)Z-tN_;v->eO^m+9lLa15>#sLqGq4As z8m{NQW3+Kgo5Q|_za$Fs*`m}Lbx?s@bG7kw&St$CPd@iOuhdX_+%Q&@AIVKqc_NI< z`QbhLE9KQubVH$A?qpJnoFHzeyZgKH`j%hmm%k(O?5rd;ePzts=}~%aZqu0;dF*lq zg%Z72p-=lEuVW(lvTYs13s&7d@An*0B(na~Dd0YN#SCP9(|osW`po^VYMg-AE5(h0 zB(A2GxJ{`Q93{%}BEg`ft)^mG4jvrwvrU!LN`QZi1_b8y8}bw3_`KtpjgqJ$BZVq9 zR=O7dc7Dk&GQQQSk8y;C|LHPH&DvrM~$(LY;lmmFP*`g*G5-m7@hp%%| z3uf!L#>d7=90mtz&Fy(qRo?a;QT1}h$E-^Y4dnT4)##mHbzF}kHy5q$rMJ(1!SB2r z`q|u`ZW;>uycG=!zgcy|H9AjsS`dN%e&R;{-Xr}}+as?`OuuXovw2^l|IEF@Y6ZcS z822FhWraf=b(I6Dke)OKcbk=il>eo6WXaSD*y!G;pFJW5a8lkD3a{Ix9Q$`MiTzoQ z#}}-HP6fth>H+uhl6MD-bb6Xa!qH+ITjdSpX*ou*4KQIJcH0MOanN^X+K!va1z+E! zL^6KkD~WV+j<if~52O;VqL&Wp zTUYn(EEd`HHax-IljV|C6I*)voDY|sHTisOeORht)AX+O`M@v946p|5ku zAGlCt%Qcp-$mV&+%j7+J#}ct=Vc>!nw47%$dTVm@(rxa8S9-=T?Lde;Li`KxyGzy^ z!**(-@7m&i&|O1>^nVnF^^e>kXrXgYv5DRrjn5S3-r+x`z6M`Chja`Dc}_{y_toqLOktJ<<~R0HAOKqu2?>@w~dcJH*Y`nRY!*m{-j@F z;2k-ZE}l_(B5`z_OIEY{ht!5JwBoz|W&1}=&Cd48-8Z@@4T4({XWVr1X#u#? zvNE^pg!3s$5$C(HsZs~}?=0>y5xtT~R!80pwfi7${-jAqgz`D>HZ+E5QsmUUuQ8HY zAWPGYn=~_IlSRx}MQG-5-+VUgy$*ZewGH6EK+ewz^E1Ql?bm;0Fq%h34up~FH29K$ z#uNrZ&c6R3<$paccxtW`iZe>8%PPA8?q+Ja;b2<+zzor1ecS2{XPao<0Lp2Tr8fUt zLuTmI(6c%oJg@m@&V*n~XUfygzn0ftG3kmU*T;ySYKk?Pgb20w?dn(79wbB(F<9 zdXobGI8f@;|9arhZ=PJH8~wO&l+*L%W9&g+PiN=j7l|8VW7F?-`Jx8SB@rpb^&hxt z!meU+WHKS@>;zZD`(z5C(|H$ z#nQj(H~d%Qco!7kd(i$yIW_b}*dGWT|AMDkdWMTZBFxwdmSzUa#zVpl@eTB4d z3sp`-D}>QQVaeQ;ElElthsza`NE`3yaB?3U!Q<3fn()oIzZs;sj|fPR**7kQ zgd)yZg$Q@LPIam^pFb!ikwDj8_2b{iBZWwn^xs+6qx<`rK9zSpn3cZ}fljhOcLIgT zKc#%qtn8f2!ECk_m&<{)&=7sV@#5INI2YapjUAfTN?%JMOreeTzABS{@E8aiDZdXb zNQmI!L#P6bFFUXVl7|Y`u#a@9LCPw-fRnUsecQZRnu1I=SjKSA+RsH%mr$|2N}72p zASxz(xyNK`K6rrx}*qK>voH1Xjk9I z7zN^3S3|p~UeC7MHDa0HD=A7LcV4WBg~{j#r|nwb>n&u95(Ma!UE*h481Hs20H(e! zlrk6dCS$VDsSFj8(-Xxzq^8kU&8nq+Mbdu(?{TUVL;%xZ@#SGq>kUYr3k+8TR9y z!6_ifwlL8`VvyH>)I4lLW)R8Y36R5Su78~Uk{q%(06c)_u&HMUZZHk%?NO09DjEG` z`&>+8Yt7yB2M0<=P{_gZkMf3?-ZmkE16Sz%#w5~8U+NNHW?;JMCAVm2(r8bJe(9nvK<0I6okKwJpTDuzCW%8wXw zjKHPR$E5%#i|QlV@Z8TvN8&ps_wrDIc1ulwCK94WCp<}*V)vZhz6-pQeFZ*+KEl0! zIg;w&J6ejkK(>{=-Ji)Z`eY{}S2ug?xr;YBY~+0;f!x zlnhW*0`vh0w((aq^WctWgZ+|)-;IUTo~i{X;1iW2U}BL4@ib0IJzAemz&B5C9MilX3KJ zVg(gNVySfr2zC%weoJyqsfk!Ty~`d33%J=dJ%_%^7PSJ9&&JbO>a>qycUPFAt64_v|B~ea#7o7LHrpVq%j?bHf$YEL+PML4kA*cu z%z$2`&Jm?+{CIgzpgz$NhZ`7pl98Cn1X%|WNs6RNM2=F zD_Bu5`}giVe3Kc-yjkQ22NS2p!v5gm+h=Lda19OGfUH@=V)z8dq%||%a^HHgT7X5K zP%30~h4TRV&Kja&R+`o_ZZ=Wuex`}P1=}sdy>&|Fr-RkT33+1d9^)1NB#%_ghYYNQXI*MT+7EA;iJaBHhlhtT^w_RAzWDvm z@AGf<`$^x95Ly`hUFYC8e8?eRa+*nzx}qQtf4Hw`FEqX@#17tJT~#mfKJdW4g(`&jd-z8$#Dv~u)RLk7`@pm zYDFsGrjqsc`EY7cuEFnD`IW+NnN!{F2s`*kyQ}PG|Ks+S74>RK=C#z(ex3-?`X9j+ z9}TxJVH~Jq<_AGWoUB)ha4^}J+(2pQ>%`uJ>kiLu+AbO@A3KWQF{Z-Sj;^_AQ&os` z#?2tfem2kjGV$(E&pdVdYNA!PGZ@?Pd?CI^*~Cj+WMUP6C1e8xm)d)0{r31Dkj?g| z9W4Bch`-FcfpdF;xj!ttxsH-%zUicNHcbKl(*&DiNaq)e4~_~8NQul=OM}8+5ZQlO z;ve~AQ~;1|!C!&e_UCl;Uc%Z)382cxLsxR5P&oi*4*E~+iGmWZTCL~w5{vsd6x-l* zd8LX9ppwZ-OB0csPL~bpH_nncr~%}}%t?&;zt1G`KqlA?{_iBFIJ8$ts~VuoYP1f` z#2rU@ZG9ssl-dCXqajR5KpQpcF&Dk0A6g37p!oi%7m;ys0OQ0bC0GV8o!+GZoOT&Q zSP^Mj3fNK0r1VJwA^-w+!_CRHS`vv~#WVPFy4>on56Y zJfVjax(3^4>EQo$#G{X%cX55(v&J7h3YPt#0c>6nNdgv3Q?RSM zqyAb4-|kj7*S8y9yN}=Aj>B<>6Z(loqyjk>!eEVr+k`oqp25LErBv~?#{$Ut6(@WZ z3Uz+G$^&b(6?!WUkxvF{t2zzA=x!!F!#?-qb`08|SP|5HU^kj}_=i=Yd zX_d~S8zL~kwi<#7IyadKx!)?*`apmX#SIhKNx#e|8d7&3O)orMvfN3`-h)dB*xyPf z%D8z900COd1|lA+zyNLp<6Clwb}~T1|1$|VY5pe>{|`iP000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#tw}^dRCwCVR$EBZVH7``^L{4>3up6! zS7bCVcn^afB8Gd2Ffgcxiey3Hn?3bpF9it>qKBwJNTN6KDM%6(32k^souCdBH0NEs z&3?Z>&ZgU%K~W!k{Mq-N-}#+$zH^!C@bFOn_EP;bl8TCob1N$=xA*q;GGb$6zxMa{ zzX_zEu(0sX`ucitXlSS-AtB*ycX#*qpd@8wWmk4~b{<7WMw$VVu&}V5sHmt1t*xy- zM0Is_ceb{+UheMhhQlb?-rjBx4-aqd?d|>KEvNDRQC(eKrBbP$r=_JCb8>PdB_)Nx zcOxSsc7I;L5PMNk(K~$a&CSip`1rVaet!M}^gQhB?CkPOg3vsRiHT7Nv|8=w)z#I< z0|NtV)6>&eGcz-v?CU$_rO-xKQ!uq>-nEQG9&7@Elf~TrQVw zcz9Tg_i02ToTr{&K74I$t#)Z?={f+mxVShq;w|(J2_Z(KQDCh&olY4X927jTz-oFf z@X8I3tw~8qAKTj67QJ<$D76 z;zNRrlluDl<1^HeBFA$N{wyR;)Pn&aOWNDp zl`Kn4Ok~XW@hH5zk5v};Ns$5bH-{BBjMW9w6_A7-metHyw@FG%OKti2 z`AYLcJGV78HGMcO)6mdx15?z>N=K`={eS;f{`C4GzyR>b_};w&BxV2r002ovPDHLk FV1irC@bLfu literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_notify_calendar.png b/docs/html/images/icon_design/stat_notify_calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..4433a16ae5b5c8e83ea9d3751b28b59718e30233 GIT binary patch literal 533 zcmV+w0_y#VP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzw@E}nRCwBA{Qv(y1FZoQ104VhjA3JA zWB>Z~>#l$Q{+UtiaweuzqN1W@M~)mhh+>I=fWQi%goL1=AOkBaE7=zO{{5Tb{rmT3 zKzap`D~VzWA0M9t2L}hp6%2p>{-wkh3?PU8`0+ymBe*~b02owYObvjXpjeQ-333Is z0LZ+7vxJe6k)f%ni9t_Kk8Hy)UAn|jS67GM5?mI1{`?v2fKQ)3f%zI58VrSng&68U z`ax#lv;;lEVBq}u^9;+DEdyHw12=BmV8B&c{QC6^yConAT$*OioJmrU;j{!K2(kp5 zMYt@-=aWBw{$N`2^XE@+Cd8(3`t<2wIx{nqC`&+QVYLM06HrFPS1O~+;qwV{seuwF z%*@PG$s;%|0r>=1a1rY>WJ{2XCyX3V4NG7_k2SamSwc#jAX@@2tU##&Ic;MDT3T9I z+1Px7Gj*}Evoq}3vxmXi*%_FSvLD`343UVG5N|P`!s9s#TawP@BCquqT1Q1{V XedjQU&JL1KIqEP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!$Vo&&RCwCVR?ll1Q4pTZt}(x0qXrbJ z5HAr8A%cMhDI^D>IrQHC1(J(B-+SN8d{3s?Y{F9;^G`smR_of$&CM3R+VJ;mh*&@H zcRD>ieGrewPx^wauC8w5V{dM54%BKjD3wYW8ykBxdZW>R+uK_xl}d1Vc}Y_{kw|1; z2I6oy)) zf_5M-WN-5{0JHf=a7wG8A%gX}?O(YT`#nN~^L8NwfcQ@3|>3gY< zG+w)e?RI-pp-}v_E+>#sD8%%niyDi}@At#X%1Vc0G#Uk$%k?M#<+dMPzp%#nTCLWX zE}Emxe$22>C|*Sdf)bL%#TVsrSu8=P(>a;CUYA=jXv-FaT1%b9i{T-&g9f z*4OYfTj_NA`T6;|_U!Dey*4{L3udz!78VwOl)B3VjP(u0@c?_QL+ZKiFT>&R2`ceP zu~_6UE-uQg0-%Z^`JbAa`iQxEv$3(!_Mwf|>vgDBt8`t+Pue{Zi^W6-bbL)oWLZ|E z!)P>8LMsUDq3)(}FB=GiN)&s=hyd?s_jP000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!>`6pHRCwCdR!>V}Q4~L#T9IXq1)37+ z#;g{ZAO(dj`UHJ|a1p|M5FuvO+ReCZ<-$$TCKMM*R4yV7K`68)ilQK>{5SV^;63ik zmo^MD&<_spzH{$A|Ic~P&}y~lU&BcM0VZX!w6qkyy}kX>Y&JuGY^l*$7#kb=p3P>{ z9hD3Z4{wWuj**cOGMmkxR#30k>EYqQU#r!&#jCTUlA)m?M_*qbtfEGv!92IyO-`qi zMn^|!U|@irpP%XO?vAdnuc=b0@EL=_00Zge<;Br8Tqpn$DkdoN`~5UEHN`>{3=R%5 zO-@cyu~?)+p#b5$cYlB1J@LX_m3%%QE0Gn*0Dop?hFmU}dIv_%&(F7n0WFWmlM4oe z;Wkfj5TSyV)6>&kb78Sqs8lNPJ-}wOF(F5fkB=b{@}ywf+mygUSSNd6GMT8ix0fx& z83@4|d3$<#QqQfet?@INOp?`VrMI`YZ@Qj9xWl2%A1dwW=!gyu4rp#}j!C`)fVaNB z&g=8@bIRxQY>aMBgm!jW2KbpwhC~lhE|=5n;XLR)z*7v+C{Zqmns4g^SlZv;Pk}(- z(@JE%CR~X1#l;2L?RL$jP$xS#~^_A)D?2LQmqw&!=-@k~eS>*xTDu#a~CK3r%iEg-{L@raji+S{66)A{DqZEt9)c1Hiu2Eu?`vKk@9v-rABp1^d z-7XJLJ$esi{OI-xX4KBk4kvbHWrgsKShZ;{`SW~gzDGn>FGwBCtv=T=(hj^0H=4q U!W+HOxBvhE07*qoM6N<$f-@nMNB{r; literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_notify_email.png b/docs/html/images/icon_design/stat_notify_email.png new file mode 100644 index 0000000000000000000000000000000000000000..d84a2471c172a3b6a90ec9586dce5acbbe3cefe9 GIT binary patch literal 1185 zcmV;S1YY}zP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$LrFwIRCwCdR!K;sSrD$oecz4yig7{o zAjSioT#d*qKAhEy12NYgM$M)KR?gA zySr2Jl7cmcRmQ4k)vU0un^$%(A2tmygqIpF5zCgAe&GW+c8><>Q3=iA%cE}2X=YAzDVk2%TB%_aV@ zTq2REe0+T59v&XVj^2fWqr`qXIyzcoTk5&FInB>RQqD$Oy}Z1FJ5; z>+2~ZB7$aSW~i^P4|#eMby`{)Ra8`ngY56`)BOBA+1c628NyOt9yN(1Gcz-fPw<7| zkn%>#&(Eilk`kJlnj*DYO`KH9$jG3?#6;l?mAA04K&UE}N+sqhD=X>#{vOd9*zSkP z$w}>-NTgD!lJVzChik4?&<0Io^*&#rxW|RPsG^4!Qr)&7!xOaDj61y3c-_mMZ9zU z3j@Y^2#jM6`GTONjeB6vgu5OeAN7o-NE|Bb-{?fyLXwk{MXs=(l$0dq9336S7;BKl z#YHiO9oRDmmyW#$7{i4CCOAO}qg;D?dx@z;G$o!W4uwKNfq{XdS3pNb*kI2j5}y3V z-f;pN8XEdeG5Daiww4A41}G>fh|r{sjg4XsBnk%|9Uaux)+V4b+JHTiK1oeY&0}i# z!n7g<7qzssP+?&qEiElkQBjdF_%i~o<4QEJqYtyQvs!bs@;CQN@z&OsAjSUveo9D4 z5DowpFvmOQLPA2&z*JXPN8EJcd*m!EEDUh>a9Nj_r4??(E{-O})6-MFx3@MnEMw%^CAb4k&)>3HLgx|cXzkO;-!TOii(QD z9g@vtS;{xw$KBmsDJvZw9*W3ta&$fRvKqKwJ~JtHt*)+)j*X33z8Qfnu3C^?Y-}uy z4P)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#d`Uz>RCwC#R@*D2VHkffMB^BWX3OEm zsUaFeQnM+ET=54?4mFC|WKfEdl-js(iYd$mYF%)(T*)bi(k^Oi??mk6l#s?b-@d=6 z`96oCU2E6XKK1m?_a2_#`~05Y^M2zdNfP~QbEh}3Hvv(-WU-Hr&;3`O@OH37)^`8l2@@%lk{JjS!KvUq-DV}o7Tci|mktrdG1Br`M9aBy(& z@%Hvs|0^Je!$Bt}C*<$%PtDEER8ms%V19LVmCDP@X>D!IA!1v^kd^5Q2nhHT9UUF! z;o(7^o}SMF93CFh!omUrOiWBrR8$mIR8-LD=qMc@A9F?)i-i^!7bznnLoEQ2?N=_m zR;vwbZ*QmY@Nl}hxp~&NwzfD6WB`D;xHvjGI->6GZW!8PCD}$WPN>| z1_uYJrly91gM;bn>gq|~+uP&dps2OAm7l}I!wiI4APda*_xDqBax(vhFc<^@=I7_h zX0uUUT^)slgggl%Qvw?s8)Fch8kFH3hBeOO%OF|?xxT*UAaiqb)YsQX4Gj$x8XD>X z0t*ZbRFs4usK;+LTWb7f_PPnwsPM?pbBOq)E0nmuYtqYGWKM@B|cQBe_} zth2L|<&8c99hH@p92ot8jO4C|wDArAcXtlmf$K$~3wFJ^3 z;$qV2ble}=+1XT9Rz}s;)ruHU15k#B_Ve>2yWM_wtwcmbNH`^TPkcN}xwf{JW@l#= z;N09?YHVy&iVW#qTwJi~5Cft>3>?_o+nY1l-`{srE=WOzgu#S_1R5F|;$lN(j}7yv z$?55-%bZ@XC#%&;CX+qMgs!_OzYCp z67D(%;Z$Q{VkB{8NTO(xxcpw_IXO8TD=8^SLTor^qS0u6q@<*1Py_VGYYas<7z~iK zsJs20@?}gP000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#4M{{nRCwCdR^Ln8P!#@dOl<8!tXpMm zbrbYu8`7sC3XZ}+`y@!6Ac~?;_9yINe}E7B6GW*fO2ILF-5v&GK8-yUabsY?q3ys9 z*Ai=MVzYa%BqmK;VY0zKI3)Mi`R;e_IX5AOVc>5=z(0U!z6=i!M~{z>UsbEsfgA5! z5I%KwcD~rz+4gsAkNAvUZuD)!tr2EsW?XZ}#>O~- zNmlDaw39HY&9Jbr;M&0C)|QLJq2&Dh+_HLz#bSJnB?f!O<8e-6B9%&E zV`GDlHB>?fX{uyuYKkYt=H@1*r>A+_1ar>%?f&YL*rBQ_WLd_@$OvXRVo3<{PL7UDvI5VmgjQB8Di6P0u9UCUMK2Y22EDk)+dU;!Q2% zoECuGci>mP@s|AodPCg@ZnfjhVF8PKITUq+lkD&ByOpqk#cm0sB6Ys^4JfI6?DeS! z@5&O2RYFaGB2=jv81-s+hWzCwd@|yQ-TC=u>ubxw3YX94Gdvy-Vr?2CK1x_5T1* zWP+YnpvOayE*W@xCZSTPpj0Xm2T3>_J`4l`U71X#=~aIn*yY*V+lzcYf0WH;yB*;g z92`va_xC4hK?ZO7ji;givAesQaE0r?|0Vh@zyQdky5{hAuaf`(002ovPDHLkV1mX` Bp(X$T literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_notify_musicplayer.png b/docs/html/images/icon_design/stat_notify_musicplayer.png new file mode 100644 index 0000000000000000000000000000000000000000..fd92c1888ec4496b58e3ef938d0dc9b074fe885f GIT binary patch literal 771 zcmV+e1N{7nP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!rAb6VRCwCdR=;Z-F%*6-H=MzP3@)5# zmxC61&?!Tp2cbjglK&uN&EL=|qsb5mg_5aYI&{e%xC|u@rEr0^BtyW?P`C~WHrQ}C z6iyIAmFme z$Ai|6`we&S+mo*+UyMuKwtE=hz-yy6S9&mNLJ6c9TzVAg8$<6K*?qga;CUW|tq^?Qhv+zh_%s#04?6Sp*^e{m?sg%aqyOEntmWyFv1Oe4>Z1-)m_XZoYbs8LPVLW?LXTF;uAR#FGZ zvC@-jN?MkviZ=MBHC@;RqsHbhBXV!plldh1l@u+e08SDT6002ovPDHLkV1i$C BW&r>I literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_notify_sms.png b/docs/html/images/icon_design/stat_notify_sms.png new file mode 100644 index 0000000000000000000000000000000000000000..b437d5b7720642a57e35a2da8f5cf363ebc61921 GIT binary patch literal 526 zcmV+p0`dKcP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzut`KgRCwC#mcMGkP!z^bk_s*o0tzX0 za#E66G6;PKeFf)$OCV1my7&lPUGfH53QnCP`T|11!9~SCiT0kr35hpt(rQa7{Xo5* zYtAp{yXW30oX=3Z7#NL4FrUx4qG1-UFk0OpM#`~4nh=bNVa;llnu&vCsamb(-X{bRX)~f+*Uh|mI-O?zhVmp@m>rM{b}T=% z+wExL8sSM^tJQ!#J{A$gFpRFIX-{lYz18!C-Rvu?x{G7s|BuA4gS-ha0Ct}F&#N&B Qu>b%707*qoM6N<$f;rafA^-pY literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_notify_sync_anim0.png b/docs/html/images/icon_design/stat_notify_sync_anim0.png new file mode 100644 index 0000000000000000000000000000000000000000..0edf69200c680ca7dbe892e9c7bcd0cdcd31f496 GIT binary patch literal 1076 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 M07*qoM6N<$f;_A!RR910 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_notify_voicemail.png b/docs/html/images/icon_design/stat_notify_voicemail.png new file mode 100644 index 0000000000000000000000000000000000000000..658fa0520cae598a61005f6c3f33b11e4e2e1d7f GIT binary patch literal 655 zcmV;A0&x9_P)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!F-b&0RCwCdRy&I#K@hGPPc&0R#dQrt z(Le(+Swz7@#XtmqfQiZehW!!uCl0d>4Sd8a_*x7UQ9;nilf_r;+wE%TVRUBqh8_3d z3W}bY`ntZV?)GcB^Z5+lZ9Mz~`@tTf(df_leE#cnIz6baoabMyR_jx>T79`7F&d4} z7K_DZGMPZD)qa^^zu&`py?!9$GkLwcATbyWHoabtRlxChRMQ1up_|RdCRr}BOoHFS z#CZgg!{I<%y_I1;2?-Klt7tx-55nOv1Ofpto6UbsxLhuw+wDTVUWdV8Amo!J;W!Tb zem`WhS#Z1E7m3E>G34`k==b{+lgs4<3>K0|B*5u(3YbqxB9RE4T&vZfR4UO}I-RE9 z(L0@vB8)7_ZnvXjFc_p`p-_NcuO}3MlQD)kB^Z`Z(g_-q8QeGqWSfXF{H6r+VJ8S^ zwOWwLWT-PBKBHj_aY`^BlHl1cm&@Sscpw&wQD-(B4ry$=-73P!9$`k(Xf$XQsZ@%t zF&b`grBZ=*yG`GfV8kRGTVJo&d)8<)H~TT7G>t|hPSVM(Nn}r#8evqVU1C`go84}Q zP$&fCevrh-{R7Qr6K1p7rzHHfKwf)19;dP)R%zx)oJ=NV=ZQC-zm}D2Fv+Z002ovPDHLkV1lSOChq_M literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_notify_wifi_in_range.png b/docs/html/images/icon_design/stat_notify_wifi_in_range.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c74b481b05dc0f21ae4af960137fa4dd42a7e9 GIT binary patch literal 1075 zcmV-31kC%1P)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#)k#D_RCwCdR_iOIVH7{_GVZsrMnZ(# zrARB*P-;^?EG12rPnPf(*i!P%H|+=7P0Qw1TT+v#ZOaFS(uS;ihwPE^N#17^E#f2Ok9O&xmiq6l^ z>Ez^u4i687pPrr~*!!88nJ&9QGBPqgTwh;T`uqD+Qc@Dd#Kcf&Xeb2+29mF@uLy?2 z4F&^kZEex|`Z_HvEYRfSByDeRBZ+36PFGnEOg=t7w7^^r>ALoc^L^1!$1)c5hCNPtSrjT&bCORu&_|jy{)ay zwoYKBrKO)(CvTwv;BL*ly}ck)9du~bb==)CQ?vP5N&R5($v%xH8nMnUauE^w;wPheR+9lf2?o?N|cTAlarHg z_d#8FLqmgrR5p;KprAmk`}_L^`|Jkc#_Cw%YSxd?%i!Rk=nu~{(F=?g=mQ1KVZdb}sF%*@OHrt(i@w70kS;5&1%)TxW%hu1xKCiHNY=-b*d?1rqnThjCoL{6(!s%jPP000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!gh@m}RCwC#RY7PIK@|N-mO29lcOl{~ z^xz(PFi2_EA|>_Yy{F=-cZGWHr3dMyUV8H;SUkmxR0MBAPL`aiCou{_3I&5u*b##B zH7oJY&g?WxR!t9jP$${Eoj?2M&wualPiZt7!S5br_ygnb3F6qhlKMedU0JR4`u(dY z#5MvfGk_UFVCm{laYPt12c8Bsf2+OUIRYbh$qHYh05{f3;#e%mp*#q@pzPJW^cajj zNS|M!LobYVjH zXd${xvbES*4lXk%R7@*$@MNw$5=_M|v=2?7q^P(`GUTittvp8t!H05FKCTwn9`GQm!PX|CY!2OYwdl9^DDFqY6Y9 zR~w-gRL@z8VC>x3r41l*K`dPl9=2Xbi_r?*e#kP(hBOtFQ6LkuXzVhhW-J?-$b#yk z(Ld~cBRQq#az0k?)ATKkiKdBOMv#N}V__E#W`nPROWL?D>~6aHEk^Us7<$0W$L-l% zQ02Dn`au3)yjsvH%!J0La4y`S{&nD0y>e^w4LOP_`#FPv8fvp~iP{T0-&$@5BTYHc93R?aDzu$i<$aet-0L)f( ULnS}@MgRZ+07*qoM6N<$f(t-W>;M1& literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_battery_empty.png b/docs/html/images/icon_design/stat_sys_battery_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..4a5e99e75cc6ceb68dbb258e424e3cf5ba7aa9df GIT binary patch literal 1034 zcmV+l1oiugP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#tVu*cRCwClR!wXZM-+ZDyED6MJI0A! z2a*5OvT3u-8(lJi3plsJhK zK^iIoi8pm3uf0FRyv?q0Od{1%;n0yjX=c3deeZuvgb?t)7ljY7h}fC97Nh}vsLqw} z0{H6H9SE3&7JxPAEfSP#fM=oB6Ice_Gn!)G%&6p|L*ZDXp=tKSt)30<%E4FmqCA$6 zs5V?k7@hoBJHHlHZg+43?VN(vfFJ9wfJIAySrJc8&z1UAR}|#66_Q}wwU=$YbFD?a z8Bs}Bo52GAD3G>;Kn`~T95@1m>$@jpDGy?L4CZq=fQq(ip^{c76AE-i zZiem zkF~PX(+0ijI06tG`8iNWCh~NAet=}YGCz+StPr8sAEwnaf#(h?4U!w8jItm}gjY=i z341}e4drr*k^?RB-jU)Z+yBVozfX=T)6e_KXT9c$rU+ZtmBHUqYM=ZqhQ`&GILd~o zZ#)(U@kt6JEG@C^Ey#sboBD&%tcpY@dd*B!dc^7A{g!u#{H6_M1NrS^g~_%d+yEO% z5UvP2*e8mNjAmKxS-;ZLYkn$;))*Q5HKBf6PlR$c@>LRyp3R%nInsUzTtx%N_Q18h zkfch~^l&Vz%|7dAUq~WDXRj3)8g5cTBEOPQ4&}Wq`E4XtB$B)Y@#F&R-Cysn2n|7^ z_@nWxKKHzzpFCq8*LAi+Vd$p_trG1PE}Sow)Z>W}{wRB)QYh9Y4r|{Cpa-SyB_5AI zjZQBN=%>DxLu>M*GPm98fElW^wvjoJ#|-S1)%pSHheJ&yR~4O2LM+xL%pzRl zWa{r--ZT{4D~D2t3}P$sTZ3DK{1B5HlHLcL8xyek0z>S*Ga#2T-RDdDJ8oB&m!X`W z2e(-K*8`HJ)1V*i1ZEgd4&58>Q*3+NfP6dZqtQKuFHfCyGntE^Y2A&Cd3?&r%E~Qc z_?Iim+1VXO{d;?~c6xqEFwg$8=a>9%{;hlvk~abj05QY8_fUvY1poj507*qoM6N<$ Eg8l^EQ~&?~ literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_data_bluetooth.png b/docs/html/images/icon_design/stat_sys_data_bluetooth.png new file mode 100644 index 0000000000000000000000000000000000000000..7a8b78f6e8db33e65477570c895510f4fc8c61d0 GIT binary patch literal 818 zcmV-21I_%2P)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!)Ja4^RCwCdR?kafQ4~I})S}c(6yG?r z5K(FoLK_PaCU>@yAcR^c`3Hy;ZrnuBA|f{h!E8cW)uKhN#DP|WZo)-S7{QE;7$j?PC`Sl^zik8X4@@ET(d~ABEf$Mgtyaq^`?doE zKa56W`276*yR0BOo$iQk;K#?uL8(-J7@%IS!~OlelRl5=>nB-3v|24cJUooIgJ!cS ze)o7hz;PTTlgV}zfETLOYP{@pp%`eYn7=l?UJvv0^DsF%3A?+ylKW&6kMO1Z<>iIV zPft%nBocwa!NGTH`U+w&7{sxF?CR^&dv@jEiJKk0ZBX_ zheRR)CX)#^H#cEwYKqNu3Zm!~1PRV$GT?H#U}0eahK7caSdr*bsl>*kqobf!tGgoM zq{y0^n6PV1+_~p{P_U5RFFR;^IQQTq>2~WTi_;4LTmUwzdW* zCnum%sn|RQxW2xIKp+6=bo$Nuo;eZx>FEhhPfr;VG!($`@iE-q-o9Da6Y+T1Yi~3f z;PrZ0ssv7aJ|9zF``W&cXfztw-rfek-!G;kpU=a@!~`539)iQ+_z(%J(ss96t;BA( zljY@QlFQ`?8kH?MI5=SAU@%Bxu^6FgBlKVr4u{!#+$VKjS0pntGhne;V1Iuf*4Nje zTCK8qe2$Hcv2nRvX5#1>3D5JyY&J8eZC@PIe#MZ``e7(;Zf*#bwm6Ubq|Q@xk}#5s zc6oUzeiu42_AV?`>n+a literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_data_bluetooth_connected.png b/docs/html/images/icon_design/stat_sys_data_bluetooth_connected.png new file mode 100644 index 0000000000000000000000000000000000000000..f09b83bfad670b4b6ce3b610033e520ba5aadbff GIT binary patch literal 967 zcmV;&133JNP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#X-PyuRCwCdR!wLVK@@(K6gJR90u?ss zp#={vD6~Bk8Wb_$!Q7fqp~*?x9?F8CjlC!yWKV7MAPIt21R2n7*xu+n;v z#zSEXRyJTE0Si0Og>~MW-Pvpt3Q`mt7-n|g-|YLo_hx%s*M+}5PQgDI5r31soV?Q5 zZ!CZVqbGH$M3hgl{@8r&W9>sINIV{2Nt{lo@mL%bMFAd6NdItUj6t*29Ayq$;cpV5 zAhEuf8daiFQ5rhI2~(F-w64Ej?u}RSmR!6+Gxv}lo5R1hiH<<(d zwvJ9Z9c=RDD|&0DGglwhY#Hi)6;)W3I0S>2aVtCL*VSVC(Z1=(AG-A8wGoo)(?J z8|m>Jb_tT}vpVSquEM?~Cfa$;)h=k1Q^WxGI1ww}g9HYLHmy8`9wtpUcQYq+xxJ5_ z|LpsgK{)SSjZaj>Jx*TTu4M{`mF0@N^n8i-oM~?9X-Se{?%sWA({A4hJkgG)VInPi zQgSQ_>VOL67iE~6e;`wU6^%uRqjkV*Yu}VMzP(@lp$3Vd+a73kM6?C0=*pW4uW++n z6AE_=L=1D+ge)&uYtIUG;&x_*f*`nxqXg^#@oauGMY|&zlgvY)>C^|}t>OgCI@%y3 zq26`m@(I5oSAxF0rQ~nqLtn={xzuWFkUjn#AB{#`q^PKu?iZ3iqmyp=S^3zD3)>Ik z$7`r36eN*I>?QgWXX?B4;4Om^|RqSek?i7`TZ)}n^jMG p$Mbq>)W6oJJJR*v{}TNcU;w3fjS@ybmDB(L002ovPDHLkV1hLBwrKzW literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_data_connected_3g.png b/docs/html/images/icon_design/stat_sys_data_connected_3g.png new file mode 100644 index 0000000000000000000000000000000000000000..a1092807a9cf60ca5b73bad605c1b1f684a6b073 GIT binary patch literal 832 zcmV-G1Hb%P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!;z>k7RCwCFRzYjjP!OJ$E#$!#5~%Qk z77WxwNhz7SqA^Jcy`GvBSGcLY(> zDrX9Vr58()Mdi0;Sbx6`*&A7yzC9h$7w#88xPm98tG}0=29DzZdKqCP6h5XGX70{3 zq+UZ?d|8xw+-YcZd=1Ugz8i>K7!(r?N^eSS3tOE?{p%xr{!U(Quxq-gfZ>k3n3Z0_ zbMw7!*Lwg#=L8hoxm!8N-OMFM644>hs5$EEy6)@4`d56ON=(=0ht2ryw4`J0-C9J) z1{r9B8XyRWe_{fCg_I5>5kkbL3CHsDWw3=U=U9Ar3}HBSUO z=^()BcD1i9T^R0fRaMW|f7KJ|XqqNimem`I7enF9Sf*fHGFDK+3CQ|swK>dO&QM`x z-K?E($E+-B!jde4YodRHRK3@XCK&}4Gb?yBu{h)p>PFWl`j>j zY*%3R!EC6Se>{I=-As$)I5I+!in27-i5-fk95vfv1JpTi5}h&O{@lYkYUG9-*OMLD z2fh-2B=Xbw>*HhNE0_*`(r(A2W#9U4-7A$#8)yHwa+>4600RJ19kgA-)x^jE0000< KMNUMnLSTZvZg~^{ literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_data_connected_e.png b/docs/html/images/icon_design/stat_sys_data_connected_e.png new file mode 100644 index 0000000000000000000000000000000000000000..c55264447967c596b6ce6816b6de47090a244c88 GIT binary patch literal 833 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 Ef{yq(ga7~l literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_phone_call.png b/docs/html/images/icon_design/stat_sys_phone_call.png new file mode 100644 index 0000000000000000000000000000000000000000..ad5369399221da11993a047a12ba4f1e17fe1683 GIT binary patch literal 772 zcmV+f1N;1mP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!rb$FWRCwCFmRm>^VHC&zv+G_|vT&wqX*{Ll3$8P*6cd4^bePzD5WkL_JjVQUoEr)T3<>J=BX>5Ga*PLDAJqF0sfq zE|?hF&I-HE?#|5D>@3bW%&0qw9{4je-{t(~%y-V&r3fL|Y@@amG8qk#dk?N+Jp5_H zPFwdLLhq%!@HMtmI>_}W)r2Q=*tr{UmHa;-odRa305?^I+a13ZNYV0San&3=G+>uU zh*X%va;H~TJr*<5vRGxz=>}?=fh0Glu2Uftm6s&0@4Tk09S5pco${B3mk?cSMYrFEK+GL3L=^m zxE(YuABig0oDEKNV{9f^aJ{4!fjj3UeVvFxUdwjW*QWwTA`HGw2Q3xl zN?%%b30ihFc>HLqy{O!CDHdpcP5Uq^FP$%1py@t1PJ82wl>RGdv%w%#VM4>Mvewl_pJjUp9 z-^!WTbiGT=L0AlZ*B|tc=>dc$?pupQS|__+eZHl@F8Ci|Np2HQ-*&Cp*9y)qr9Hy| zQOYXMAAbfBnHf>;lf1RevfCW8zpN2byTc~~GWfg5s-OjqwOk)L!1huvJY`N}TZ#So zLdK(m$cjrF{*8Coi_zM63U!qSsjdIFvYGZzfB^t7M3_(gmzq!j0000P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!T`~qVMfi>M{f2%y)!5SDXu)&Q&w}-LY~mGhCc>~N5b$qzSPH~ksk6|CIc~9Z5Fn` zBu0VXp~+@q>2oF!k(VaVfKpp6A}axlqFm4sQ>O!;1%cIT(YoJAl%uvN6P|Uvob)0R z=eK`I{7`@CAUrQnRg>x>78mPEVPf^N^;&a2&cuuGV%#fRPxZA0A_zRmg3kzW{!j_p zstQ#DXecj0|9lXxl^9a}DOy;{Bwa7nnYRG^;W)a--1zDb%Ru_(g806^p*X877vUnE zk1NN@&{)Ay``uy)y`=Wx_$GYe4cut9QoH+;8)NQOMRuvaR5@w3a%lPmV0VVl_3_)* z-e>PR?hh?sF%+XfnIvN-n>XTYVD@rJ z5wz^zZdDQR*2x3-;0ocvkOLhe1=RkI%sGEsF1OM7=S`@Cy0Bys>^ z2tWyG{Z)orQh?Zs_q3NA^PV#rjV0Gi5`y4%{fM?p@0$PSFVRl{1^}ZTwC61)plAR9 N002ovPDHLkV1ngBiw6Jz literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_phone_call_on_hold.png b/docs/html/images/icon_design/stat_sys_phone_call_on_hold.png new file mode 100644 index 0000000000000000000000000000000000000000..921644765daf815f3d2620d7e71709c6b935340a GIT binary patch literal 754 zcmVP000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!lu1NERCwCNR!wLVK@|RWo4DI1t&t+# z2Grm|{Hx|v1;s=VFCMgd_0T|%f)&Jz2le2^OLOp^cn}JT_9R$}O$}ZGLPXGmP@<(J zT0>K7n`}3`j&MCAvG|IgwtJL2k{`_c7@_kV@|F1bqaDe0kT=P-s9`>7!rDV zuMB*Hafs(q;CmxZ{J<3uxs1x&gafz7;w?~Z@4~4G^jw-{2&@tv8U+`MGW)hn(j7}d z7#cU%E{893C|TeNN+d_Lfl^rCdPhYTTHw z%_JbtPchl4ZX~Vj-A6|u9x(|jpVIg>-K@F%ErXTk=bMsM^uk=#Wn`i|7lhceqWbc6# zWt7*dpjJ%vx+kmepD-Jjo{s!=Ca#yUQODJfQ&@V|RMXFy2iRE1Gj+D_al`DmuT@>t zR&r@t;DnH296q)s!@YI1RX k{@vLB`M0u@_D6sL0G3U&H4S0DX#fBK07*qoM6N<$fP000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!cu7P-RCwClR?lk_K@@%sD@>t>4JfRC zLZO%TP)tF@6a_aZG~lTqNPCgs)l>1{!Gq*45JEvoEeP9#v=^ZuLLy$3_8$=HLCD@_ zz=id_*PU^8W>Sl&2VXLo-EZG~-}|wX-I=m1;cr_5{((jGvwC&)+R3+*XHdYh0tEs; zWWRkJ!N>Sw{Al!k^v;Ngrr4doG@mr%CI}%w73dtHbAbyZJT7?Q`EWd*6qie_5g;jhNs!0 z4~^c#9_(lP(0kA`n45{6oyo)o$*FVmRA}S=26XRsjSr3X^)_E?-)MVlLzQ6>DP=un zJe?F1+N4H^F!phKtZ}DY%vo!E1+KJK>W)yybmMCph4e&-%PUu|a#LG(Y(3tB(RjqO z?u%Fd00s&IjkjuUkMvf`E;LW8|F5uyt=xawhoetN(0|hRq6tN)_gDz?M06(f-^Ed{ zrHoPYLmTounb^Y7)aEIvZ;P|B&{_wZy5rqwLYp>Jnh<7gVdXLgFpumk%*&*TE_$U$7h zN!&EJT)3+@mll?`;Q}Oo;>AIJmtT)RA8+dOng8aM=!XCU0QEx-0E?~<761SM07*qo IM6N<$g5Dul2mk;8 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_ringer_silent_old.png b/docs/html/images/icon_design/stat_sys_ringer_silent_old.png new file mode 100644 index 0000000000000000000000000000000000000000..d125ce5bef362cfcdedfa7effb532ad822694d92 GIT binary patch literal 906 zcmV;519kj~P)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#EJ;K`RCwClR!vJAQ51bK@tedL9i5nn z7>c4s2&BXy1Qem5BI3%WC<)mH7ZDc`!IikmQV^;uOMXBXVxXmhP;4ty3yRpZ#G-^m z#4r3vp63otNOeXgi+0fqmzjC*zIW!HbMKqcaL(D^wj%ZqOeZ%uGBV;mIXMX@lSx-5 zlTr7!MMWP4K?rVaY`j+mVz=9WwY9a0TCJ9)QYm(SfB!7N-Q68KJw0{d`Ua0?RdmhG z&Hb#atLuRu!I?&*Vd-=_=izXeEiNvyfq?<(8CkIE>S|^%7(~^Y3=R%D1A)MIyjhRY zXgmT9(l}*AURG8nJr55LQ>-*bv?>*mEC{q%bGclO$;ruso12>)5N$%#Jkn1BrSZpe z&w^A|R+>OV)ai6Og2CXy?d@$J0TFd_g)llgS~y5aNeR>I^(N4;=73F4Pw)K(IZEtVy zoSmJOGJU2SFQ*!Wg7eFfG(uLw#l=O`X0!ES*{KAR`HYVhhrQHqLh%%K|MeEq&?k?zW@z zzhe9qN;_q-SPIvK&MmTrh6Xk?G{ky)ds#YDGs_`(3**f38&BJOUmsh3nGdlM+TB#UtcSN zKzLqNRTW2*Hq*NP{(h(2eu{L_$*N?u@bdCfy2lA^ffgUoxE_@Gr-C{@+mMk+ed{a4g~wna|A3@XgIlesy)l*VorM_?PDL9eu>nxIg6f z)5v`TphX;fTd13r$}-=Ii;J1nYNb!aQ6iDBsw!c(+wH|C_%-@MRQt04ijQ}8cD!

      P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$iAh93RCwC7mTO3xXB5XDV~p2m6m{w@ zinj=&73mOUI4vsTZA?+?y0*5$EM=c;$CyZA^TQapmWhlhvzzO>S)__HlY-Q?VIMZ? zK1`jrL{_KHDX8%puW`R8EG5GvNLdd&K2P5FJm-JT|6E?(4i68-^A?5ekdu=W&eFlT9#LX5-et!PvWd;WaN3N}{y}ZA_ zZ`|A46Dun#Vs&+Ol;7WaczE0z8ylNFHb`-Cv3E#Fi0RBnVA`}v9Y1Yp|3nWJ@1T;j+&i;DCHkKtK8b! zQUTZoP$dAWfPjED`HpARUS3{;2ycgmhTe&YhJRRlXz-=ZH$| z?Cktv4hlk&XQV|su^{YLA6{M@H>j{dlnoOpi_4W0uB>Hc7 z{vk6n(-W|>L?XeyamII5RnawHi47sqLN&E|3swMp2 z)N1uGm#?zFDBm$W{Q#+uBZs|RKI2|BeYOi|hr=l>g&}zogO6pGvs<6l)YJ$%TQFus zV`HN-~3nO1h;;7waDF>YjX{I1n%Z;*T=kvus>bO#i5L#WYz>t zIZcip63uyXGY#NFq|#w^J*)7c(_&|h@5sD7Q#5Pja{hk>Ire`m&r|*pU;yW*kEZn% R2&Di3002ovPDHLkV1oL3PsjiO literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_signal_4.png b/docs/html/images/icon_design/stat_sys_signal_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a3320cbb4fd216a1215364d7a59856dee0e1fd32 GIT binary patch literal 532 zcmV+v0_**WP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzwn;=mRCwCFRy~WtKoFh81gu0sA*WYa zTZ@QrSlaj_g01Z}Dedkz2-jMPz14vzTy1T2CkG0)YW%o;3mev$Xk4QUlOd1Eyq%Ao zjdna9>CsDj8cD5Ids{3PABV%C9EVd~*S~YQ-1}%W`og<`M>?JEG0@6nGGvmaFCIxMm9mn_Bz8di{a(qrZQE3>R%tvQQ@7it^?Gf2k>P=qu~gA+w^No% zrNSLT!Ez&6p2Ry z_NY>?*ZIfL0=pE6A;4QszFcHKK`03T)$tNWg0?4=Ei7p#?D$Av&lhdRfiV~k4}+y?eBeI7Zt<& zI%{G7SPAQzsMr|^+6`j`V;)h!K6g7l|Bu_u;Q4)Ed77%D72pcxAN%qFTem% Wt1S+j0li270000P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!)Ja4^RCwCFR?SOdQ4~LlMny>F2Tn6Z zL_tX{GAI|qm>+G-{~~fHNHn+zg51r8p7 zy*xi&NnZ!9_ucc(J->T?=bdv^H5v{2Y*Bp~h}~}gStt~K*X#Agk8rA1tN$5|#$TtW zr+=~5;Ae1f@IX?UhlYkotJS^>pjxd`sZ?5&<^yT@O@QchI&*JtFHS(UTCHi*_VzaE z^?KUb*`Z>wsOWrha*`${Cg|qohLXu7Jw85~MP&E^WfE2N{QTTDMn^}fzrUY3>GYnD zv9U4c19q6@xz_Ly5yeZA&*zz)lE5ig7#J8}c5>UULEzve5S*TaDT1g}s&*eSJ+=S65AuU{;Jo zE-Nc56buI2P77c-Nu^Tk6bgmJ%e%WfdU$vc&s;zifRN-?5JcKBlBcI98Xq60t*tGljKyNKv9Up3 zua`2J4AbrH?a})BIvpJyu{EfgnwnyJG2}JFb!|DpfTR8WeadFD!eDrKSX6X08l|(d zGfJn^w6L&%sur~HPQfFQcMg%0%gakTK0anN%+1Y_)XQjhcb7~i6Ej?0U8VW?d1hNK zm+9o>gl=zd1zkLfS95|-6Gm`$cz8%lOG|Wrf6q?d)6>HubvPUyliaFPta#oUKoK~H z`2Bu1BcgCP+@#|*(MlI|ylw;tka-8@U~;aZ<6L*ElY^*vA#uu(3sA#9hPUc?aW>@y zZ3W54R}_!O#pbu@;7gtpcKwcwjART3!*^UbFLl~(1UD-#FX@8I=5o0oA}2PRZEbdT w_K!xRF@MAzFHx0GBob?1|8M29<-Y&}0Ff_|=)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!d`Uz>RCwClRy}KCK@`1yr4mt5$YvKo zQBhGe2*E4Z4S?$V#fz*EQI|DP!GfySi z>=t|BI?nOlduGm^H&5N+aG<|!din=u#78oj{JLB&zwP(?yAN5pUO#X;oz=(3$M1r~ zYPGf%@Y-gxk;!EGBZAFlLoY8ccgomSrk{jd7K?=uRI61=r_;3C?Sx}qsZ>;$mb=|< zN~Kcd_xlO8P*Wurny*Mjfk1#czV~`P%4V~a%jH<$cDp^h1DDIi^1NOz&1N%_50sH_ zQPGiFtriuFMat*%ECC}7IAYEjieg7*vzf)p@hXyTx66u`N+l{33M`=6Y*N49zt{`p zak66)JttYO*Gzv9z#5GP8!-ot-_JSZgkv|DYm&h4@9!B{tJSE}>97$7oX5a@J|AT= z88&hZJK=s(F4%B5q|sHvkFzGD`A<(zA_=bCZ=&FFleI9JMD?76LLv6! z?d`2N|NL&^E0i%_PzyWx#Pd^Qx7$UKEW=wcS$-iGND#=$WUYZ6>wgK8N%UM#E}8OP zp{uJa@zlN-lTVlEiB6}Z@p#OxYBZfEzXwAtxhFbEb8~a^!{Kmzp3mnOuk=fXH!H54 z=jZ32i^bxL=t&}xcnF8X4dtG?{)l(HBGs?ybo!v$$$#;e=(hj^0M>W5Fvi##4gdfE M07*qoM6N<$g3X{*&;S4c literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_speakerphone.png b/docs/html/images/icon_design/stat_sys_speakerphone.png new file mode 100644 index 0000000000000000000000000000000000000000..642dfd4891539131dc8023b169aaa075e6c4ddaf GIT binary patch literal 978 zcmV;@11P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#bV)=(RCwCdR@*CVQ5gU2G46MvJ&j8) ziIgY}4>(bH!HXA9O39`0=6K*Aa3n8EN+u#CFT5g0qK?D^-Y7IVxh9v~=dACmy<2nR^aXJ?YD|@ zb90fHn27cDbzELvdU^pe^zrdgHHAxrNguwXyu2JWH8ltc3E|&mWo78=>%;N!vFWa? zM+bR*ePvg@Nm5c0nwpw;mW9ANJ3Gi@t zq^72#p`n4-hlhvg?(Sx#BvVsUNJ&Y-$jAtT`(l|12LwkEWLPJAwaBzUG zt}fi&-Rb9JV`CDK~C2_4W0rtESGPEKNce4Im7RaM1dTUc1oNg{iqXpffNZg2VAJx+1WhEgNca= z?#MScH+o~FSrn=fM6_qOXIqgaAt3?F%gf9>YAsZx8yg##pPwg-xu?mUm-LFz89_uS z+(b(`ma@fPJPN-%cq3W_(rI+ zEG%pkF?Nbe>Sy10VdT%fy}d>gyZ-yXM85P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!ElET{RCwCVR=bKKQ4p>6{Q_GQ6r)xU z1VLsZACY5Xs^ACACkTGPbZpXJAd{II8g6Q~n;Yx~1_q)cg81yMbJ-S^R;HbvWeSS2 z@2$r@r*3sC>AFr|Ee`q*^8Jbwi^Wzpo7GFDQp-x5^wFNwYBfcYq@QlLTi);Y3tmbM z27`sINRG#&=J9ysXf#Srr&Hc;x0YyX7YYT1&F^qHOn$$g`u)B@ z!~LN~qe1KSnwHBYn*Tf;4*xua1T=vfC^uRZ5J7B>XGSA4h1x@O<@5Ra;c%$9TrS#d zHbTz@&nSd_K1`kcE0&7nayiU`1_Yo6$)M+AtbuO$F`9QvML4*{!HPl4y&_N)fqy2G zQ9o29l}bG^iZ|w3BrvElqsvgEKZxUa{8rto4g&(ZhKH?CcNF?f}a}tZiWXuGkkb&e;;UZAX%=2_QU0fhx3f}n2 z%ICM~THEb5jmKkQZ~1TzsDgYKNJ60y?)VSf5@X=ZWImsten%padv9z}3}{xX)i05e z7c^r7O}(X^PDdnxz2}EK|MF=kB*|n_$9G~h8rk;AO{dc|o6Tr4nMkL`tE#HsqspoP l3Fnk7eSW|Fzm>lN3;+?=xV(guKZO7Q002ovPDHLkV1kv~Eqnj~ literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_wifi_signal_4.png b/docs/html/images/icon_design/stat_sys_wifi_signal_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2062aada3e3ea4aae859a5f5bd117df10c0e50ec GIT binary patch literal 826 zcmV-A1I7G_P)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!+(|@1RCwCdR!vK4Q50Rbw1Oxst$Zqo zMM+{p4I(12NzS4{I7l4!8{Vj2@CN;W2;QVY(+CF{NJ2P}pwPY`iXyGocd11m+IeRm z@S<|X(}VZmZ8+S!FXx=S*I8@ta}~xI{YwL!1f*9`FS@qvejhhhF)=I%GCAg!&f=BB15ba!{7x3?E| zyB!vb1?}zaXl`!C^Yb(A@9%MOae=e5GaMZq;pF55udlCW%`Axc$}uxD!`9Z;*vrcc zlQEhXi9}c+5MWySX(D-le@8Bt17D1-tu2u$Wqf^ojchiHmX;QDc6JJcgw*A7p-?E` z?d?qyh@vIosi`SuG#X(tnQ(e~T9Xrp!-1!#CtO}$Vr6ATk>Z4iq%)^6I5-Hm+buG- z*=!^VJU%`ml}ZVOySuyC-riQ%Nh6t{6$Kdq?E^qYo^k86MKp@@Q+YXUS7IGs-Ldit{>|Mg>3p{r&KIy*NKV7hDvrG_jhT za8g-)eZA__yVeH8TPfKzhl@j=lgdp=MZsVYKA#Waa9E%#)<@Aw(Mtv4t-I_S?@O4T zo)+))qz&WoxKt3$&|v(Qg3;0GK`9hrpdp{r~^~07*qoM6N<$ Ef~i@TLjV8( literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/stat_sys_wifi_unavailable.png b/docs/html/images/icon_design/stat_sys_wifi_unavailable.png new file mode 100644 index 0000000000000000000000000000000000000000..53dd45b31c55fa8cd66fb23310a34e658e43b59c GIT binary patch literal 706 zcmV;z0zLhSP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!WJyFpRCwCVR=dhtK@cAG*ocUVw`c@W z5Cy^RM?^?%BO-QUA^b03lZVJVh=m9iHtG`u#3Ge~XyFCHs6j;=ExexWENpW0--E}W zgk)gY%bA^TW_G^is6vc#Z5|B(L>9_Ow{4i5NE`5xSNx58xOeO=VREh%O z$oA2e$?qWdpwVc&Imc}ZIS`DBDb^nWP>RJO9dV8OQoE-? zq?*g+=zgJ4fNHf$M-<$@w|%NyQfar_(CKubQmN22j)EXSI2^vY2RRTf8KcptsDvN9 z;99MgN^vGqaJSnHPNx$HK|!zA!)~_&@*==|K8NXa`pZtPow*=~!-0~FiP!4|m&*la zvze9&OJuj(sSbz3_kmz0jEE?`UJv&BJ$1NPEWqJ#fZy+j&1Q3RC(^(k-igoW6Ezym zZzGiocy?$bb&T`TXr%m3?xV8VY!D0v!Q=73WHNz%zYojh^2SD*{nLy`!Sav{S*A3I z*=(i=giA&#i=UIL;wH) literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/statusbar_light.png b/docs/html/images/icon_design/statusbar_light.png new file mode 100644 index 0000000000000000000000000000000000000000..ddebc2dcb1fa8a31e65f41b65c6cb63306f22226 GIT binary patch literal 10981 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/statusbar_palette_black.png b/docs/html/images/icon_design/statusbar_palette_black.png new file mode 100644 index 0000000000000000000000000000000000000000..fba096f301f9b55744bcca8247b41d6d7ac98380 GIT binary patch literal 3291 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 O0XiCn>eW!2@c#k$O&L@G literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/statusbar_palette_fill.png b/docs/html/images/icon_design/statusbar_palette_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf652c5af522ddcc8d54aa0dfe91e8adb690df0 GIT binary patch literal 3342 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 Y0LjB4iuc=C761SM07*qoM6N<$g4E734FCWD literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/statusbar_palette_grey.png b/docs/html/images/icon_design/statusbar_palette_grey.png new file mode 100644 index 0000000000000000000000000000000000000000..0abb7f4b454a5e1f0b4fff8de4f92495319b26d5 GIT binary patch literal 3276 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 A=Kufz literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/statusbar_palette_white.png b/docs/html/images/icon_design/statusbar_palette_white.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7ac41e5efc110a65d7ba0c6ec1c1987813a907 GIT binary patch literal 3166 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/tab_icon_selected.png b/docs/html/images/icon_design/tab_icon_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..66a8475073528637fe9a26429cb90706a03d2feb GIT binary patch literal 17113 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 N002ovPDHLkV1g|0H-Z2F literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/tab_selected_light.png b/docs/html/images/icon_design/tab_selected_light.png new file mode 100644 index 0000000000000000000000000000000000000000..3a87c5b1ed630ef9ce7ba693e5c13443b566e884 GIT binary patch literal 17477 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 BJ)i&p literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/tab_unselected_light.png b/docs/html/images/icon_design/tab_unselected_light.png new file mode 100644 index 0000000000000000000000000000000000000000..f888161875c3b19c4891041b2541a055eae97e2f GIT binary patch literal 15605 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

      -
      -

      Developer Announcements

      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      - -
      -
      - +
      +
      +

      Developer Announcements

      +
      +
      + + Google I/O Developer Conference 2009 +
      +

      Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco. The agenda includes a number of great sessions on Android topics by team engineers and other developers.

      +

      Learn more »

      +
      +
      +
      + +
      + +
      +
      + +
      +
      + +
      +
      +
       
      @@ -116,10 +120,10 @@ home=true 'sdk': { 'layout':"imgLeft", 'icon':"sdk-small.png", - 'name':"SDK 1.5 r1", + 'name':"SDK 1.5 r2", 'img':"sdk-large.png", - 'title':"Android 1.5 SDK r1", - 'desc': "

      The final version of the Android 1.5 SDK is now available. It includes new APIs for Android 1.5, updated developer tools, multiple platform versions, and a Google APIs add-on.

      Download Android 1.5 SDK

      " + 'title':"Android 1.5 SDK", + 'desc': "

      Android 1.5 SDK is now available. It includes new APIs for Android 1.5, updated developer tools, multiple platform versions, and a Google APIs add-on.

      Download Android 1.5 SDK

      " }, 'mapskey': { diff --git a/docs/html/robots.txt b/docs/html/robots.txt index 085b79dc1b68..7046373e9570 100644 --- a/docs/html/robots.txt +++ b/docs/html/robots.txt @@ -1,7 +1,8 @@ -User-Agent: * -Allow: / -Disallow: /gae_shell/ -Disallow: /assets/ -Disallow: /images/ -Disallow: /sdk/preview/ -Sitemap: http://developer.android.com/sitemap.txt +User-Agent: * +Allow: / +Disallow: /gae_shell/ +Disallow: /assets/ +Disallow: /images/ +Disallow: /sdk/preview/ +Disallow: /shareables/ +Sitemap: http://developer.android.com/sitemap.txt diff --git a/docs/html/sdk/1.5_r1/index.jd b/docs/html/sdk/1.5_r1/index.jd index 438ee4bb80ce..405f56ce960a 100644 --- a/docs/html/sdk/1.5_r1/index.jd +++ b/docs/html/sdk/1.5_r1/index.jd @@ -1,6 +1,7 @@ sdk.version=1.5 sdk.rel.id=1 sdk.date=April 2009 +sdk.not_latest_version=true sdk.win_download=android-sdk-windows-1.5_r1.zip sdk.win_bytes=176263368 diff --git a/docs/html/sdk/1.5_r2/index.jd b/docs/html/sdk/1.5_r2/index.jd new file mode 100644 index 000000000000..15342a433992 --- /dev/null +++ b/docs/html/sdk/1.5_r2/index.jd @@ -0,0 +1,87 @@ +sdk.version=1.5 +sdk.rel.id=2 +sdk.date=May 2009 + +sdk.win_download=android-sdk-windows-1.5_r2.zip +sdk.win_bytes=178346828 +sdk.win_checksum=ba54ac6bda45921d442b74b6de6ff6a9 + +sdk.mac_download=android-sdk-mac_x86-1.5_r2.zip +sdk.mac_bytes=169945128 +sdk.mac_checksum=f4e06a5194410243f213d0177713d6c9 + +sdk.linux_download=android-sdk-linux_x86-1.5_r2.zip +sdk.linux_bytes=165035130 +sdk.linux_checksum=1d3c3d099e95a31c43a7b3e6ae307ed3 + +page.title=Android 1.5 SDK, Release 2 +@jd:body + +

      For more information on this SDK release, read the +Release Notes.

      + +

      SDK Contents

      + +

      Development tools

      + +

      The SDK includes a full set of tools for developing and debugging application code and designing an application UI. You can read about the tools in the +Dev Guide and access them in the <sdk>/tools/ directory. + +

      The tools package in this SDK includes updates from those provided in the previous SDK. The tools also require a different project structure. To use the new tools, you need to migrate your applications to the new development environment. For more information about how to migrate, see Upgrading the SDK. + +

      For more information about the new tools features, see the SDK Release Notes. + +

      Android Platforms

      + +

      This SDK includes multiple Android platform versions that you use to develop applications. For each version, both a fully compliant Android library and system image are provided. The table below lists the platform versions included in this SDK. For more information about a platform version — features, applications included, localizations, API changes, and so on — see its Version Notes.

      + + + + + + + + + + + + + + + + + + +
      PlatformAPI LevelNotesDescription
      Android 1.53Version NotesIncludes a standard Android 1.5 library and system image with a set of development applications. Does not include any external libraries (such as the Maps external library).
      Android 1.12Version NotesIncludes a compliant Android 1.1 library and system image with a set of development applications. Also includes the Maps external library (due to legacy build system issues).
      + +

      SDK Add-Ons

      + +

      An SDK add-on provides a development environment for an Android external library or a customized (but fully compliant) Android system image. This SDK includes the SDK add-on listed below. The Android system API Level required by the add-on is noted.

      + + + + + + + + + + + +
      Add-OnAPI LevelNotesDescription
      Google APIs3 Includes the com.google.android.maps external library, a compliant +system image, a {@link android.location.Geocoder Geocoder} +backend service implementation, documentation, and sample code.
      + +

      Sample Code and Applications

      + +

      You can look at a variety of tutorials and samples in the Dev Guide and access the sample code itself +in the <sdk>/platforms/android-1.5/samples/ directory of the SDK package. Note the new location — the SDK now includes multiple platform versions that you can develop against and each has its own sample code directory.

      + +

      Documentation

      + +

      The SDK package includes a full set of local documentation. To view it, open the <sdk>/documentation.html file in a web browser. If you are developing in an IDE such as Eclipse, you can also view the reference documentation directly in the IDE.

      + +

      The most current documentation is always available on the Android Developers site:

      + +

      http://developer.android.com/

      + diff --git a/docs/html/sdk/1.5_r2/installing.jd b/docs/html/sdk/1.5_r2/installing.jd new file mode 100644 index 000000000000..69b2c1bef533 --- /dev/null +++ b/docs/html/sdk/1.5_r2/installing.jd @@ -0,0 +1,332 @@ +sdk.version=1.5 +sdk.rel.id=2 +sdk.date=April 2009 + +page.title=Installing the Android SDK +@jd:body + + +

      This page describes how to install the Android SDK and set up your +development environment. If you haven't downloaded the SDK, you can +do so from the +Download page. Once you've downloaded +the SDK, return here.

      + +

      If you encounter any problems during installation, see the +Installation Notes at the bottom of +this page.

      + +

      Upgrading?

      +

      If you have already developed applications using an earlier version +of the SDK, please read +Upgrading the +SDK, instead. +

      + + +

      Preparing for Installation

      + +

      Before you begin, take a moment to confirm that your development machine meets the +System Requirements. +

      + +

      If you will be developing on Eclipse with the Android Development +Tools (ADT) Plugin — the recommended path if you are new to +Android — make sure that you have a suitable version of Eclipse +installed on your computer (3.3 or newer). If you need to install Eclipse, you can +download it from this location:

      + +

      http://www.eclipse.org/downloads/

      + +

      A Java or RCP version of Eclipse is recommended.

      + +

      Installing the SDK

      + +

      After downloading the SDK, unpack the .zip archive to a suitable location on your machine. +By default, the SDK files are unpacked into a directory named +android_sdk_<platform>_<release>. +The directory contains a local copy of the documentation (accessible by opening +documentation.html in your browser) and the subdirectories +tools/, add-ons/, platforms/, and others. Inside +each subdirectory of platforms/ you'll find samples/, which includes +code samples that are specific to each version of the platform.

      + +

      Make a note of the name and location of the unpacked SDK directory on your system — you +will need to refer to the SDK directory later, when setting up the Android plugin or when +using the SDK tools.

      + +

      Optionally, you may want to add the location of the SDK's primary tools directory +to your system PATH. The primary tools/ directory is located at the root of the +SDK folder. Adding tools to your path lets you run Android Debug Bridge (adb) and +the other command line tools without +needing to supply the full path to the tools directory.

      +
        +
      • On Linux, edit your ~/.bash_profile or ~/.bashrc file. Look + for a line that sets the PATH environment variable and add the + full path to the tools/ directory to it. If you don't + see a line setting the path, you can add one:
      • + +
          export PATH=${PATH}:<your_sdk_dir>/tools
        + +
      • On a Mac, look in your home directory for .bash_profile and + proceed as for Linux. You can create the .bash_profile if + you haven't already set one up on your machine.
      • + +
      • On Windows, right-click on My Computer, and select Properties. + Under the Advanced tab, hit the Environment Variables button, and in the + dialog that comes up, double-click on Path (under System Variables). Add the full path to the + tools/ directory to the path.
      • +
      + +

      Note that, if you update your SDK in the future, you +should remember to update your PATH settings to point to the new location, if different.

      + +

      If you will be using the Eclipse IDE as your development environment, +the next section describes how to install the Android Development Tools plugin and set up Eclipse. +If you choose not to use Eclipse, you can +develop Android applications in an IDE of your choice and then compile, debug and deploy using +the tools included in the SDK (skip to Next Steps).

      + + +

      Installing the ADT Plugin for Eclipse

      + +

      Android offers a custom plugin for the Eclipse IDE, called Android +Development Tools (ADT), that is designed to give you a powerful, +integrated environment in which to build Android applications. It +extends the capabilites of Eclipse to let you quickly set up new Android +projects, create an application UI, add components based on the Android +Framework API, debug your applications using the Android SDK tools, and even export +signed (or unsigned) APKs in order to distribute your application.

      + +

      In general, using Eclipse with ADT is a highly recommended +approach to Android development and is the fastest way to get started. +(If you prefer to work in an IDE other than Eclipse, +you do not need to install Eclipse or ADT, instead, you can directly +use the SDK tools to build and debug your application.)

      + +

      Once you have Eclipse installed, as described in Preparing for +Installation, follow the steps below to +download the ADT plugin and install it in your respective Eclipse +environment.

      + + + + + + + +
      Eclipse 3.3 (Europa)Eclipse 3.4 (Ganymede)
      + +
        +
      1. Start Eclipse, then select Help > Software Updates +> Find and Install....
      2. +
      3. In the dialog that appears, select Search for new features to install +and click Next.
      4. +
      5. Click New Remote Site.
      6. +
      7. In the resulting dialog box, enter a name for the remote site (e.g. "Android Plugin") and + enter the URL: +
        https://dl-ssl.google.com/android/eclipse/
        +

        If you have trouble aqcuiring the plugin, try using "http" in the URL, + instead of "https" (https is preferred for security reasons).

        +

        Click OK.

      8. +
      9. You should now see the new site added to the search list (and checked). + Click Finish.
      10. +
      11. In the subsequent Search Results dialog box, select the checkbox for the + "Android Plugin". + This will select the nested tools: "Android DDMS" and "Android Development Tools". + Click Next.
      12. +
      13. Read and accept the license agreement, then click Next.
      14. +
      15. On the following Installation window, click Finish.
      16. +
      17. The ADT plugin is not digitally signed. Accept the installation anyway + by clicking Install All.
      18. +
      19. Restart Eclipse.
      20. +
      + +
      + + +
        +
      1. Start Eclipse, then select Help > Software Updates....
      2. +
      3. In the dialog that appears, click the Available Software tab.
      4. +
      5. Click Add Site...
      6. +
      7. Enter the Location: +
        https://dl-ssl.google.com/android/eclipse/
        +

        If you have trouble aqcuiring the plugin, try using "http" in the Location URL, + instead of "https" (https is preferred for security reasons).

        +

        Click OK.

      8. +
      9. Back in the Available Software view, you should see the plugin listed by the URL, + with "Developer Tools" nested within it. Select the checkbox next to + Developer Tools and click Install...
      10. +
      11. On the subsequent Install window, "Android DDMS" and "Android Development Tools" + should both be checked. Click Next.
      12. +
      13. Read and accept the license agreement, then click Finish.
      14. +
      15. Restart Eclipse.
      16. +
      + +
      + +

      Now modify your Eclipse preferences to point to the Android SDK directory:

      +
        +
      1. Select Window > Preferences... to open the Preferences + panel (Mac: Eclipse > Preferences).
      2. +
      3. Select Android from the left panel.
      4. +
      5. For the SDK Location in the main panel, click Browse... and +locate your downloaded SDK directory.
      6. +
      7. Click Apply, then OK.
      8. +
      + +

      Done! If you haven't encountered any problems, then you're ready to +begin developing Android applications. See the +Next Steps section for suggestions on how to start.

      + + +

      Troubleshooting ADT Installation

      +

      +If you are having trouble downloading the ADT plugin after following the steps above, here are +some suggestions:

      + +
        +
      • If Eclipse can not find the remote update site containing the ADT plugin, try changing + the remote site URL to use http, rather than https. That is, set the Location for the remote site to: +
        http://dl-ssl.google.com/android/eclipse/
      • +
      • If you are behind a firewall (such as a corporate firewall), make + sure that you have properly configured your proxy settings in Eclipse. + In Eclipse 3.3/3.4, you can configure proxy information from the main + Eclipse menu in Window (on Mac, Eclipse) > + Preferences > General > + Network Connections.
      • +
      +

      +If you are still unable to use Eclipse to download the ADT plugin as a remote update site, you +can download the ADT zip file to your local machine and manually install the it: +

      +
        +
      1. Download the ADT zip file (do not unpack it).
      2. +
      3. Follow steps 1 and 2 in the default install instructions (above).
      4. +
      5. In Eclipse 3.3, click New Archive Site....
        + In Eclipse 3.4, click Add Site..., then Archive...
      6. +
      7. Browse and select the downloaded zip file.
      8. +
      9. Follow the remaining procedures, above, starting from steps 5.
      10. +
      +

      To update your plugin once you've installed using the zip file, you will have to +follow these steps again instead of the default update instructions.

      + +

      Other install errors

      + +

      Note that there are features of ADT that require some optional +Eclipse components (for example, WST). If you encounter an error when +installing ADT, your Eclipse installion might not include these components. +For information about how to quickly add the necessary components to your +Eclipse installation, see the troubleshooting topic +ADT +Installation Error: "requires plug-in org.eclipse.wst.sse.ui".

      + +

      For Linux users

      +

      If you encounter this error when installing the ADT Plugin for Eclipse: +

      +An error occurred during provisioning.
      +Cannot connect to keystore.
      +JKS
      +

      +...then your development machine lacks a suitable Java VM. Installing Sun +Java 6 will resolve this issue and you can then reinstall the ADT +Plugin.

      + + +

      Next Steps

      +

      Once you have completed installation, you are ready to +begin developing applications. Here are a few ways you can get started:

      + +

      Learn about Android

      +
        +
      • Take a look at the Dev + Guide and the types of information it provides
      • +
      • Read an introduction to Android as a platform in What is + Android?
      • +
      • Learn about the Android framework and how applications run on it in + Application + Fundamentals
      • +
      • Take a look at the Android framework API specification in the Reference tab
      • +
      + +

      Explore the SDK

      + + +

      Explore some code

      +
        +
      • Set up a Hello + World application (highly recommended, especially for Eclipse users)
      • +
      • Follow the + Notepad Tutorial to build a full Android application
      • +
      • Create a new project for one of the other sample applications + included in <sdk>/platforms/<platfrom>/samples, + then compile and run it in your development environment
      • +
      + +

      Visit the Android developer groups

      +
        +
      • Take a look at the Community tab to see a list of + Android developers groups. In particular, you might want to look at the + Android + Developers group to get a sense for what the Android developer + community is like.
      • +
      + + +

      Installation Notes

      + +

      Ubuntu Linux Notes

      + +
        +
      • If you need help installing and configuring Java on your + development machine, you might find these resources helpful: + +
      • +
      • Here are the steps to install Java and Eclipse, prior to installing + the Android SDK and ADT Plugin. +
          +
        1. If you are running a 64-bit distribution on your development + machine, you need to install the ia32-libs package using + apt-get:: +
          apt-get install ia32-libs
          +
        2. +
        3. Next, install Java:
          apt-get install sun-java6-bin
        4. +
        5. The Ubuntu package manager does not currently offer an Eclipse 3.3 + version for download, so we recommend that you download Eclipse from + eclipse.org (http://www.eclipse.org/ + downloads/). A Java or RCP version of Eclipse is recommended.
        6. +
        7. Follow the steps given in previous sections to install the SDK + and the ADT plugin.
        8. +
        +
      • +
      + +

      Other Linux Notes

      + +
        +
      • If JDK is already installed on your development computer, please + take a moment to make sure that it meets the version requirements listed + in the System Requirements. + In particular, note that some Linux distributions may include JDK 1.4 or Gnu + Compiler for Java, both of which are not supported for Android development.
      • +
      + + + diff --git a/docs/html/sdk/1.5_r2/requirements.jd b/docs/html/sdk/1.5_r2/requirements.jd new file mode 100644 index 000000000000..4ed38a741261 --- /dev/null +++ b/docs/html/sdk/1.5_r2/requirements.jd @@ -0,0 +1,39 @@ +page.title=System Requirements +@jd:body + +

      The sections below describe the system and software requirements for developing Android applications using the Android SDK tools included in Android SDK, Release .

      + +

      Supported Operating Systems

      +
        +
      • Windows XP (32-bit) or Vista (32- or 64-bit)
      • +
      • Mac OS X 10.4.8 or later (x86 only)
      • +
      • Linux (tested on Linux Ubuntu Dapper Drake)
      • +
      + +

      Supported Development Environments

      +
        +
      • Eclipse IDE +
          +
        • Eclipse 3.3 (Europa), 3.4 (Ganymede) +
            +
          • Recommended Eclipse IDE packages: Eclipse IDE for Java EE Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in Developers
          • +
          • Eclipse JDT plugin (included in most Eclipse IDE packages)
          • +
          • Eclipse Classic IDE package is not supported.
          • +
          +
        • +
        • JDK 5 or JDK 6 (JRE alone is not sufficient)
        • +
        • Android Development Tools plugin (optional)
        • +
        • Not compatible with Gnu Compiler for Java (gcj)
        • +
        +
      • +
      • Other development environments or IDEs +
          +
        • JDK 5 or JDK 6 (JRE alone is not sufficient)
        • +
        • Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows
        • +
        • Not compatible with Gnu Compiler for Java (gcj)
        • +
        +
      • +
      + +

      Note: If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In +particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development.

      \ No newline at end of file diff --git a/docs/html/sdk/1.5_r2/upgrading.jd b/docs/html/sdk/1.5_r2/upgrading.jd new file mode 100644 index 000000000000..bb5fc60e67f8 --- /dev/null +++ b/docs/html/sdk/1.5_r2/upgrading.jd @@ -0,0 +1,395 @@ +page.title=Upgrading the SDK +sdk.version=1.5_r2 +@jd:body + + +
      +
      + +

      Upgrading the SDK

      +
        +
      • The Android 1.5 SDK uses a new project structure and a new ADT plugin (ADT 0.9).
      • +
      • To move existing projects into the SDK, you must make some minor changes in your + development environment.
      • +
      • The new ADT plugin (ADT 0.9) is not compatible with projects created in previous SDKs.
      • +
      • You need to uninstall your existing ADT plugin, before installing ADT 0.9.
      • +
      + +

      In this document

      +
        +
      1. Install the SDK
      2. +
      3. Update Your Eclipse ADT Plugin
      4. +
      5. Update Your Projects +
          +
        1. Eclipse Users
        2. +
        3. Ant Users
        4. +
        +
      6. +
      7. Migrate Your Applications +
        1. Future-proof your apps
        +
      8. +
      + +

      Migrating references

      +
        +
      1. Android 1.5 API Differences
      2. +
      3. Future-Proofing +Your Apps »
      4. +
      5. UI +framework changes in Android 1.5 »
      6. +
      + +
      +
      + +

      This document describes how to move your development environment and existing +Android applications from an Android 1.0 or 1.1 SDK to the Android 1.5 SDK. +If you are migrating applications from an SDK older than 1.0, please also read the upgrading +document available in the Android 1.0 SDK package.

      + +

      There are several compelling reasons to upgrade, such as new SDK tools +that make developing more efficient and new APIs that allow you to expand the feature-set +of your applications. However, even if you or your applications don't require these enhancements, +it's important that you upgrade to ensure that your applications run properly on the +Android 1.5 platform.

      + +

      The Android 1.5 platform will soon be deployable to devices around the world. +If you have already released Android applications to the public, you should +test the forward-compatibility of your applications on the latest version of the platform +as soon as possible. It's unlikely that you'll encounter breakage in your applications, but +in the interest of maintaining the best user experience, you should take no risks. +So, please install the new Android SDK and test your applications on Android 1.5.

      + +

      For more information on new SDK features and system changes, +see the Android 1.5 Version Notes.

      + + +

      Install the SDK

      + +

      If you haven't yet downloaded the SDK, download from here +and unpack it into a safe location.

      + +

      Before you begin: +If you had previously setup your PATH variable to point to the SDK tools directory, +then you need to update it to point to the new SDK. For example, for a +.bashrc or .bash_profile file:

      +
      export PATH=$PATH:<your_sdk_dir>/tools
      + +

      If you don't use Eclipse for development, +skip to Update Your Projects.

      + + +

      Update Your Eclipse ADT Plugin

      + +

      If you installed ADT-0.9_pre with the early look 1.5 SDK, there have been +additional changes, so please continue with this guide and update to the final ADT 0.9.

      + +

      A new ADT plugin (version 0.9) is required for the Android 1.5 SDK. +Because the component structure has been changed since Android 1.1, +the Android 1.5 SDK does not work with ADT 0.8 (or older) and previously installed SDKs will not +work with ADT 0.9. However, the Android 1.5 SDK includes an Android 1.1 SDK image that you +can build against while using ADT 0.9.

      + +

      For information about using different system images (such as Android 1.1) +while running this SDK, see Developing +In Eclipse, with ADT or In +Other IDEs, as appropriate for your development environment.

      + +

      In order to upgrade your Eclipse IDE to use the new 0.9 ADT, follow the steps below +for your respective version of Eclipse.

      + +

      Uninstall your previous ADT plugin

      + +

      You must uninstall your existing ADT plugin (0.8 or older). If you do not uninstall it, +you will get a conflict with the Android Editors when installing the new ADT. +(If you have already installed ADT-0.9_pre with the early look 1.5 SDK, you can skip this +uninstall procedure and continue to Install the 0.9 ADT plugin).

      + + + + + + + +
      Eclipse 3.3 (Europa)Eclipse 3.4 (Ganymede)
      + +
        +
      1. Select Help > Software Updates > + Manage Configuration.
      2. +
      3. Expand the list in the left panel to reveal the installed tools.
      4. +
      5. Right-click "Android Editors" and click Uninstall. Click OK + to confirm.
      6. +
      7. Restart Eclipse. +

        (Do not uninstall "Android Development Tools".)

      8. +
      +
      + +
        +
      1. Select Help > Software Updates.
      2. +
      3. Select the Installed Software tab.
      4. +
      5. Select "Android Editors". Click Uninstall.
      6. +
      7. In the next window, be sure "Android Editors" is checked, then click Finish + to uninstall.
      8. +
      9. Restart Eclipse. +

        (Do not uninstall "Android Development Tools".)

      10. +
      +
      + + +

      Install the 0.9 ADT plugin

      + +

      Only install the new plugin once you've completed the procedure to +Uninstall your previous ADT plugin.

      + + + + + + + +
      Eclipse 3.3 (Europa)Eclipse 3.4 (Ganymede)
      + +
        +
      1. Select Help > Software Updates > + Find and Install.
      2. +
      3. Select Search for new features to install.
      4. +
      5. Select the Android plugin entry by checking the box next to it, + then click Finish. +

        (Your original entry for the plugin should still be here. If not, see the guide + to Installing the ADT Plugin.) +

      6. +
      7. In the results, expand the entry for the Android plugin and + be sure that "Developer Tools" is checked, then click Next. + (This will install "Android DDMS" and "Android Development Tools".)
      8. +
      9. Read and accept the license agreement, then click Next. +
      10. In the next window, click Finish to start installation.
      11. +
      12. The ADT plugin is not digitally signed. Accept the installation anyway by clicking + Install All.
      13. +
      14. Restart Eclipse.
      15. +
      +
      + +
        +
      1. Select Help > Software Updates.
      2. +
      3. Select the Available Software tab.
      4. +
      5. Expand the entry for the Andriod plugin (may be listed as the location URL) + and select "Developer Tools" by checking the box next to it, then click + Install.
      6. +
      7. On the next window, "Android DDMS" and "Android Development Tools" + should both be checked. Click Finish.
      8. +
      9. Restart Eclipse.
      10. +
      +
      + +

      If you encounter problems, ensure your ADT is fully uninstalled and then +follow the guide to +Installing the ADT Plugin +for Eclipse.

      + +

      Update your Eclipse SDK Preferences

      + +

      The last step is to update your Eclipse preferences to point to the new SDK directory:

      +
        +
      1. Select Window > Preferences to open the Preferences + panel (Mac: Eclipse > Preferences).
      2. +
      3. Select Android from the left panel.
      4. +
      5. For the SDK Location in the main panel, click Browse + and locate your SDK directory.
      6. +
      7. Click Apply, then OK.
      8. +
      + + +

      Update Your Projects

      + +

      You will now need to update any and all Android projects that you have +developed using a previous version of the Android SDK.

      + + +

      Eclipse users

      + +

      If you use Eclipse to develop applications, use the following procedure to +update each project:

      + +
        +
      1. Right-click on the individual project (in the Package Explorer) + and select Properties.
      2. +
      3. In the properties, open the Android panel and select a "build target" to compile + against. This SDK offers the Android 1.1 and Android 1.5 platforms to choose from. When + you are initially updating your projects to the new SDK, we recommend that you select a build + target with the Android 1.1 platform. Click Apply, then + OK.
      4. +
      + +

      The new plugin creates a gen/ folder in your project, in which it puts the +R.java file +and all automatically generated AIDL java files. If you get an error such as +The type R is already defined, +then you probably need to delete your old R.java or your old auto-generated +AIDL Java files in the src/ folder. +(This does not apply to your own hand-crafted parcelable AIDL java files.)

      + +

      Note that, with the Android 1.5 SDK, there is a new process for running +applications in the Android Emulator. +Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance +of the Emulator. Before attempting to run your applications with the new SDK, +please continue with the section below to +Migrate Your Applications.

      + + +

      Ant users

      + +

      If you build your projects using the Ant tool (rather than with Eclipse), note the +following changes with the new SDK tools.

      + +

      build.xml has changed

      + +

      You must re-create your build.xml file.

      + +

      If you had customized your build.xml, first make a copy of it:

      + +
      +$ cd my-project
      +$ cp build.xml build.xml.old
      +
      + +

      Now use the new android tool (located in your_sdk/tools/) +to create a new build.xml that references +a specific platform target:

      + +
      $ android update project --path /path/to/my-project --target 1
      + +

      The "target" corresponds to an Android platform library (including any add-ons, such as +Google APIs) that you would like to build your project against. You can view a list of available +targets (and their corresponding integer ID) with the command, android list targets. +When you are initially updating your projects to the new SDK, we recommend that you select the +first target ("1"), which uses the Android 1.1 platform library.

      + +

      A gen/ folder will be created the first time you build and your R.java and +your AIDL Java files will be generated in here. You must remove +the old R.java and old auto-generated AIDL java files from the +src/ folder. (This +does not apply to your own hand-crafted parcelabe AIDL java files.)

      + +

      Note: The "activitycreator" tool has been replaced +by the new "android" tool. For information on creating new projects with the android tool, +see the documentation about Developing +In Other IDEs.

      + +

      Note that, with the Android 1.5 SDK, there is a new process for running +applications in the Android Emulator. +Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance +of the Emulator. Before attempting to run your applications with the new SDK, +please continue with the section below to +Migrate Your Applications.

      + + +

      Migrate Your Applications

      + +

      After you have completed the process above to Update Your +Projects, you are strongly encouraged to run each of your applications in an instance +of the emulator running the Android 1.5 system image. It's possible (however, unlikely) +that you'll encounter some breakage in your application when you run your applications on +the Android 1.5 system image. Whether you believe your application will be affected by +platform changes or not, it's very important that you test the application's +forward-compatibility on Android 1.5.

      + +

      To test forward-compatibility, simply run your existing application (as-is) on an Android +Emulator that's running the Android 1.5 system image. The following procedure will guide +you through the process to running your existing applications on an emulator. Please read +the following guide completely before you begin.

      + +

      To test your application on an emulator running Android 1.5:

      +
        +
      1. Update Your Project (you should have done this + already, in the section above).
      2. +
      3. Run your existing project, as-is, on an emulator running the Android 1.5 system image. +

        As mentioned in the guide to Update Your Projects, + you should have selected a "build + target" of "1", which compiles your application against the Android 1.1 system image, so there + should be no new errors in your code.

        +

        Eclipse users: follow the + Eclipse guide to + Running Your Application.

        +

        Ant users: follow the + Ant guide to + Running Your Application +

        During the procedure to Running Your Application, select a "deployment target" + for the AVD that includes the Android 1.5 platform. + If your application utilizes the Google Maps APIs (i.e., + MapView), be certain to select a target that includes the Google APIs.

        +

        Once you complete the procedures to run your application in your respective environment, + linked above, return here.

        +
      4. +
      5. With your application running in the emulator, perform all regular testing on the application + to ensure that it functions normally (in both landscape and portrait orientations).
      6. +
      + +

      Chances are, your application runs just fine on the Android 1.5 platform — +new devices will be able to safely install and run your application and +current users who update their devices will be able to continue using your application as usual. +However, if something doesn't work the way you expect, then you might need to revisit +your project and make any necessary changes to your code.

      + +

      You can check for code breakages caused by API changes by opening your project +in Eclipse, changing the "build target" to one using the Android 1.5 platform, +and see where the ADT identifies errors in your code.

      + + +

      Future-proof your apps

      + +

      There have been several API additions made for this release, but there have been +very few actual API changes. Only a couple (relatively unused) elements +have been removed and a few have been deprecated, so your applications written with the +Android 1.1 system library should work just fine. However, +your application is more likely to encounter problems on Android 1.5 +if it performs any of the following:

      + +
        +
      • Uses internal APIs. That is, APIs that are not officially supported + and not available in the reference documentation. Any un-official APIs are always subject + to change (which is why they're un-official) and some have indeed changed. +
      • +
      • Directly manipulates system settings. There are some settings (such as + GPS, data roaming, bluetooth and others) that used to be writable by + applications but have been changed so that they can only be explicitly modified by the user + through the system settings. Refer to {@link android.provider.Settings.Secure} + to see which settings are now secured and cannot be directly changed by your application. +
      • +
      • Uses View hierarchies that are unreasonably deep (more than 10 or so levels) or + broad (more than 30 total). View hierarchies this big have always been troublesome, but + Android 1.5 is much more efficient at exposing this and your application may crash. +
      • +
      • Makes assumptions about the available hardware. With new support for soft keyboards, + not all devices will have full QWERTY keyboards on the hardware. So if your application + listens for special keypress events that only occur on a keypad, then your application + should degrade gracefully when there is no keyboard available. +
      • +
      • Performs its own layout orientation changes based on the acceletometer (or via other + sensors). Some devices running Android 1.5 will automatically rotate the orientation + (and all devices have the option to turn on auto-rotation), so if your application also + attempts to rotate the orientation, it can result in strange behavior. In addition, if your + application uses the accelerometer to detect shaking and you do not want to rotate the + orientation, then you should lock the current orientation with + android:screenOrientation. +
      • +
      + +

      Please read our blog post on Future-Proofing +Your Apps for more information on the issues mentioned above.

      + +

      For information +about other changes made to Android 1.5, refer to the following documents:

      + + +

      If you have additional trouble updating your code, visit the +Android Developers Group +to seek help from other Android developers.

      diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd index c44cef3a55fb..f3a1951f71fb 100644 --- a/docs/html/sdk/RELEASENOTES.jd +++ b/docs/html/sdk/RELEASENOTES.jd @@ -3,8 +3,16 @@ page.title=SDK Release Notes

      This document provides version-specific information about Android SDK releases. For the latest known issues, please ensure that you're viewing this -page at: -http://developer.android.com/sdk/RELEASENOTES.html.

      +page at http://developer.android.com/sdk/RELEASENOTES.html.

      + + +

      Android 1.5 SDK, Release 2

      + +

      This SDK release provides the same developer tools as the Android 1.5 SDK, +Release 1, but provides an updated Android 1.5 system image that includes a +security patch for the issue described in the oCert advisory below:

      + +

      http://www.ocert.org/advisories/ocert-2009-006.html

      Android 1.5 SDK, Release 1

      diff --git a/docs/html/sdk/android-1.5-highlights.jd b/docs/html/sdk/android-1.5-highlights.jd index e6c4f88e4d32..ff64e8c28cf9 100644 --- a/docs/html/sdk/android-1.5-highlights.jd +++ b/docs/html/sdk/android-1.5-highlights.jd @@ -1,5 +1,4 @@ page.title=Android 1.5 Platform Highlights -sdk.version=1.5_r1 @jd:body

      diff --git a/docs/html/sdk/older_releases.jd b/docs/html/sdk/older_releases.jd index ff57a36ec392..3c2bbd403129 100644 --- a/docs/html/sdk/older_releases.jd +++ b/docs/html/sdk/older_releases.jd @@ -1,37 +1,67 @@ -page.title=Older Releases +page.title=Other SDK Releases @jd:body -

      - NOTICE: -

      The SDKs listed on this page are "early-look" versions that were released in +

      This page provides a full list of older, obsolete SDK releases, including +non-current versions of active releases and "early look" versions that were +released before Android 1.0. The list is provided for informational purposes +only.

      + +

      If you are just getting started developing on Android, make sure that you +are using the most current SDK available, +to ensure that your applications will be compatible with the latest +Android-powered devices.

      + +

      Obsolete Releases

      + +

      The table below lists Android SDK releases that have been superceded by an +active release and that are now obsolete. If you are using one of these +releases, please upgrade to the current SDK +release.

      + + + + + + + + + + + + + + + + + +
      Release + Platform(s)Date + Description +
      Android 1.5 SDK, Release 1Android 1.5
      Android 1.1
      April 2009Replaced by Android 1.5 SDK, Release 2. Release notes
      Android 1.0 SDK, Release 1Android 1.0September 2008Replaced by Android 1.0 SDK, Release 2. Release notes
      + +

      Non-Compatible Releases

      + + +

      The SDKs listed below are "early-look" versions that were released in the year preceding the full release of Android 1.0 in September 2008. Because these early-look SDKs were released before the Android 1.0 API specification was finalized, they do not provide a compliant Android execution environment. Consequently, applications that you develop in these SDKs will not be able to run on any Android-powered devices.

      -

      If you have an older application that you built in one of the early-look SDKs, - you must migrate it to the Android - 1.0 SDK (or later release) before you will be able to deploy it to - an Android-powered device. To help with this migration, each SDK package below - provides information about API changes from the previous version. You can find - the migration information in the documentation included in each SDK package.

      - -

      If you are just getting started developing on Android, do not use one of these early-look - SDKs. Instead, develop using the most current - SDK release available, to ensure that your applications will be compatible - with Android-powered devices.

      -
      - +

      If you have an older application that you built in one of the early-look +SDKs, you must migrate it to the Android 1.0 SDK (or later release) before you +will be able to deploy it to an Android-powered device. To help with this +migration, each SDK package below provides information about API changes from +the previous version. You can find the migration information in the +documentation included in each SDK package.

      + - - -

      Android 0.9 SDK beta

      -

      August 18, 2008 - Release Notes

      +

      Android SDK m5-rc15

      +

      August 18, 2008 - Release Notes

      - - + @@ -58,15 +88,11 @@ page.title=Older Releases
      PlatformPackagePackage Size MD5 Checksum
      - - - -

      Version m5-rc15

      +

      Version m5-rc15

      March 3, 2008 - Release Notes

      - - + @@ -93,15 +119,11 @@ page.title=Older Releases
      PlatformPackagePackage Size MD5 Checksum
      - - - -

      Version m5-rc14

      +

      Version m5-rc14

      February 12, 2008 - Release Notes

      - - + @@ -131,12 +153,11 @@ page.title=Older Releases -

      Version m3-rc37a

      +

      Version m3-rc37a

      December 14, 2007 - Release Notes

      PlatformPackagePackage Size MD5 Checksum
      - - + @@ -166,12 +187,11 @@ page.title=Older Releases -

      Version m3-rc22a

      +

      Version m3-rc22a

      November 16, 2007 - Release Notes

      PlatformPackagePackage Size MD5 Checksum
      - - + @@ -201,12 +221,11 @@ page.title=Older Releases -

      Version m3-rc20a

      +

      Version m3-rc20a

      November 12, 2007 - Release Notes

      PlatformPackagePackage Size MD5 Checksum
      - - + diff --git a/docs/html/sdk/preview/features.html b/docs/html/sdk/preview/features.html index 392c0895ec25..a2f085cdce34 100644 --- a/docs/html/sdk/preview/features.html +++ b/docs/html/sdk/preview/features.html @@ -133,10 +133,10 @@
    13. Current SDK Release

      @@ -185,16 +184,6 @@ - - - diff --git a/docs/html/sdk/sdk_toc.cs b/docs/html/sdk/sdk_toc.cs index 4b55b56177ce..2079dd8a62f3 100644 --- a/docs/html/sdk/sdk_toc.cs +++ b/docs/html/sdk/sdk_toc.cs @@ -26,19 +26,12 @@
    14. Android 1.1 Version Notes
    15. -
    16. -

      Native Development Tools

      - -
    17. Previous SDK Releases

    18. diff --git a/docs/html/search.jd b/docs/html/search.jd index 0a802a6bfcbe..defba3087af3 100644 --- a/docs/html/search.jd +++ b/docs/html/search.jd @@ -2,7 +2,7 @@ page.title=Search Results @jd:body - +
      PlatformPackagePackage Size MD5 Checksum

      7!C1<`{?%d-d^->$Dm*nELS}x02 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�rx{MqpShn}mKK?Ap23qbceXk6M3z&wTn;+t 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 literal 0 HcmV?d00001 diff --git a/docs/html/images/activity_task_design/HomeTaskSwitching3b.png b/docs/html/images/activity_task_design/HomeTaskSwitching3b.png new file mode 100644 index 0000000000000000000000000000000000000000..4a16e69ddb460fe791ff3725658288ce3bb55f29 GIT binary patch literal 21663 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 Mkx&$`5j6_>Kig(|#sB~S literal 0 HcmV?d00001 diff --git a/docs/html/images/activity_task_design/IntentsDiagram.png b/docs/html/images/activity_task_design/IntentsDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed366ff721d90519229797ec0494262e33c1b36 GIT binary patch literal 37600 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�rx{MqpShn}mKK?Ap23qbceXk6M3z&wTn;+t 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 WN@`%O6?h4lFESE};x(d%LH`S!P!^m3 literal 0 HcmV?d00001 diff --git a/docs/html/images/activity_task_design/ReusingAnActivity2.png b/docs/html/images/activity_task_design/ReusingAnActivity2.png new file mode 100644 index 0000000000000000000000000000000000000000..288d2da757d0c06a03cca6134c3d7bb50191af66 GIT binary patch literal 27762 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 P00000NkvXXu0mjfM%VVg literal 0 HcmV?d00001 diff --git a/docs/html/images/icon_design/dialog_icon.png b/docs/html/images/icon_design/dialog_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9f924223db05398e45a7b651f9e68025312f7c20 GIT binary patch literal 64323 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