diff options
257 files changed, 5459 insertions, 2845 deletions
diff --git a/api/current.txt b/api/current.txt index 92969f6..ffa46ec 100644 --- a/api/current.txt +++ b/api/current.txt @@ -6782,6 +6782,13 @@ package android.database { method public abstract boolean onMove(int, int); } + public class CrossProcessCursorWrapper extends android.database.CursorWrapper implements android.database.CrossProcessCursor { + ctor public CrossProcessCursorWrapper(android.database.Cursor); + method public void fillWindow(int, android.database.CursorWindow); + method public android.database.CursorWindow getWindow(); + method public boolean onMove(int, int); + } + public abstract interface Cursor { method public abstract void close(); method public abstract void copyStringToBuffer(int, android.database.CharArrayBuffer); @@ -6851,7 +6858,8 @@ package android.database { } public class CursorWindow extends android.database.sqlite.SQLiteClosable implements android.os.Parcelable { - ctor public CursorWindow(boolean); + ctor public CursorWindow(java.lang.String); + ctor public deprecated CursorWindow(boolean); method public boolean allocRow(); method public void clear(); method public void close(); @@ -24082,6 +24090,8 @@ package android.view.accessibility { method public int getCurrentItemIndex(); method public int getFromIndex(); method public int getItemCount(); + method public int getMaxScrollX(); + method public int getMaxScrollY(); method public android.os.Parcelable getParcelableData(); method public int getRemovedCount(); method public int getScrollX(); @@ -24108,6 +24118,8 @@ package android.view.accessibility { method public void setFromIndex(int); method public void setFullScreen(boolean); method public void setItemCount(int); + method public void setMaxScrollX(int); + method public void setMaxScrollY(int); method public void setParcelableData(android.os.Parcelable); method public void setPassword(boolean); method public void setRemovedCount(int); diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp index 528d197..7cb8f62 100644 --- a/cmds/stagefright/stagefright.cpp +++ b/cmds/stagefright/stagefright.cpp @@ -30,7 +30,6 @@ #include <binder/ProcessState.h> #include <media/IMediaPlayerService.h> #include <media/stagefright/foundation/ALooper.h> -#include "include/ARTSPController.h" #include "include/LiveSession.h" #include "include/NuCachedSource2.h" #include <media/stagefright/AudioPlayer.h> @@ -636,7 +635,6 @@ int main(int argc, char **argv) { gDisplayHistogram = false; sp<ALooper> looper; - sp<ARTSPController> rtspController; sp<LiveSession> liveSession; int res; @@ -948,7 +946,6 @@ int main(int argc, char **argv) { sp<DataSource> dataSource = DataSource::CreateFromURI(filename); if (strncasecmp(filename, "sine:", 5) - && strncasecmp(filename, "rtsp://", 7) && strncasecmp(filename, "httplive://", 11) && dataSource == NULL) { fprintf(stderr, "Unable to create data source.\n"); @@ -984,23 +981,7 @@ int main(int argc, char **argv) { } else { sp<MediaExtractor> extractor; - if (!strncasecmp("rtsp://", filename, 7)) { - if (looper == NULL) { - looper = new ALooper; - looper->start(); - } - - rtspController = new ARTSPController(looper); - status_t err = rtspController->connect(filename); - if (err != OK) { - fprintf(stderr, "could not connect to rtsp server.\n"); - return -1; - } - - extractor = rtspController.get(); - - syncInfoPresent = false; - } else if (!strncasecmp("httplive://", filename, 11)) { + if (!strncasecmp("httplive://", filename, 11)) { String8 uri("http://"); uri.append(filename + 11); @@ -1021,6 +1002,7 @@ int main(int argc, char **argv) { syncInfoPresent = false; } else { extractor = MediaExtractor::Create(dataSource); + if (extractor == NULL) { fprintf(stderr, "could not create extractor.\n"); return -1; @@ -1116,13 +1098,6 @@ int main(int argc, char **argv) { } else { playSource(&client, mediaSource); } - - if (rtspController != NULL) { - rtspController->disconnect(); - rtspController.clear(); - - sleep(3); - } } if ((useSurfaceAlloc || useSurfaceTexAlloc) && !audioOnly) { diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java index 3290b9d..3aa159e 100644 --- a/core/java/android/app/SearchManager.java +++ b/core/java/android/app/SearchManager.java @@ -24,6 +24,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ResolveInfo; import android.database.Cursor; +import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -498,8 +499,24 @@ public class SearchManager ComponentName launchActivity, Bundle appSearchData, boolean globalSearch) { + startSearch(initialQuery, selectInitialQuery, launchActivity, + appSearchData, globalSearch, null); + } + + /** + * As {@link #startSearch(String, boolean, ComponentName, Bundle, boolean)} but including + * source bounds for the global search intent. + * + * @hide + */ + public void startSearch(String initialQuery, + boolean selectInitialQuery, + ComponentName launchActivity, + Bundle appSearchData, + boolean globalSearch, + Rect sourceBounds) { if (globalSearch) { - startGlobalSearch(initialQuery, selectInitialQuery, appSearchData); + startGlobalSearch(initialQuery, selectInitialQuery, appSearchData, sourceBounds); return; } @@ -520,7 +537,7 @@ public class SearchManager * Starts the global search activity. */ /* package */ void startGlobalSearch(String initialQuery, boolean selectInitialQuery, - Bundle appSearchData) { + Bundle appSearchData, Rect sourceBounds) { ComponentName globalSearchActivity = getGlobalSearchActivity(); if (globalSearchActivity == null) { Log.w(TAG, "No global search activity found."); @@ -546,6 +563,7 @@ public class SearchManager if (selectInitialQuery) { intent.putExtra(EXTRA_SELECT_QUERY, selectInitialQuery); } + intent.setSourceBounds(sourceBounds); try { if (DBG) Log.d(TAG, "Starting global search: " + intent.toUri(0)); mContext.startActivity(intent); diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index e923349..cc3219b 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -26,6 +26,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.AssetFileDescriptor; import android.content.res.Resources; import android.database.ContentObserver; +import android.database.CrossProcessCursorWrapper; import android.database.Cursor; import android.database.CursorWrapper; import android.database.IContentObserver; @@ -1568,7 +1569,7 @@ public abstract class ContentResolver { samplePercent); } - private final class CursorWrapperInner extends CursorWrapper { + private final class CursorWrapperInner extends CrossProcessCursorWrapper { private final IContentProvider mContentProvider; public static final String TAG="CursorWrapperInner"; diff --git a/core/java/android/database/AbstractCursor.java b/core/java/android/database/AbstractCursor.java index ee6aec6..74fef29 100644 --- a/core/java/android/database/AbstractCursor.java +++ b/core/java/android/database/AbstractCursor.java @@ -53,7 +53,10 @@ public abstract class AbstractCursor implements CrossProcessCursor { abstract public boolean isNull(int column); public int getType(int column) { - throw new UnsupportedOperationException(); + // Reflects the assumption that all commonly used field types (meaning everything + // but blobs) are convertible to strings so it should be safe to call + // getString to retrieve them. + return FIELD_TYPE_STRING; } // TODO implement getBlob in all cursor types @@ -185,46 +188,9 @@ public abstract class AbstractCursor implements CrossProcessCursor { return result; } - /** - * Copy data from cursor to CursorWindow - * @param position start position of data - * @param window - */ + @Override public void fillWindow(int position, CursorWindow window) { - if (position < 0 || position >= getCount()) { - return; - } - window.acquireReference(); - try { - int oldpos = mPos; - mPos = position - 1; - window.clear(); - window.setStartPosition(position); - int columnNum = getColumnCount(); - window.setNumColumns(columnNum); - while (moveToNext() && window.allocRow()) { - for (int i = 0; i < columnNum; i++) { - String field = getString(i); - if (field != null) { - if (!window.putString(field, mPos, i)) { - window.freeLastRow(); - break; - } - } else { - if (!window.putNull(mPos, i)) { - window.freeLastRow(); - break; - } - } - } - } - - mPos = oldpos; - } catch (IllegalStateException e){ - // simply ignore it - } finally { - window.releaseReference(); - } + DatabaseUtils.cursorFillWindow(this, position, window); } public final boolean move(int offset) { diff --git a/core/java/android/database/AbstractWindowedCursor.java b/core/java/android/database/AbstractWindowedCursor.java index d0aedd2..083485f 100644 --- a/core/java/android/database/AbstractWindowedCursor.java +++ b/core/java/android/database/AbstractWindowedCursor.java @@ -188,15 +188,14 @@ public abstract class AbstractWindowedCursor extends AbstractCursor { /** * If there is a window, clear it. - * Otherwise, creates a local window. + * Otherwise, creates a new window. * * @param name The window name. * @hide */ - protected void clearOrCreateLocalWindow(String name) { + protected void clearOrCreateWindow(String name) { if (mWindow == null) { - // If there isn't a window set already it will only be accessed locally - mWindow = new CursorWindow(name, true /* the window is local only */); + mWindow = new CursorWindow(name); } else { mWindow.clear(); } diff --git a/core/java/android/database/CrossProcessCursor.java b/core/java/android/database/CrossProcessCursor.java index 8e6a5aa..26379cc 100644 --- a/core/java/android/database/CrossProcessCursor.java +++ b/core/java/android/database/CrossProcessCursor.java @@ -16,27 +16,63 @@ package android.database; +/** + * A cross process cursor is an extension of a {@link Cursor} that also supports + * usage from remote processes. + * <p> + * The contents of a cross process cursor are marshalled to the remote process by + * filling {@link CursorWindow} objects using {@link #fillWindow}. As an optimization, + * the cursor can provide a pre-filled window to use via {@link #getWindow} thereby + * obviating the need to copy the data to yet another cursor window. + */ public interface CrossProcessCursor extends Cursor { /** - * returns a pre-filled window, return NULL if no such window + * Returns a pre-filled window that contains the data within this cursor. + * <p> + * In particular, the window contains the row indicated by {@link Cursor#getPosition}. + * The window's contents are automatically scrolled whenever the current + * row moved outside the range covered by the window. + * </p> + * + * @return The pre-filled window, or null if none. */ CursorWindow getWindow(); /** - * copies cursor data into the window start at pos + * Copies cursor data into the window. + * <p> + * Clears the window and fills it with data beginning at the requested + * row position until all of the data in the cursor is exhausted + * or the window runs out of space. + * </p><p> + * The filled window uses the same row indices as the original cursor. + * For example, if you fill a window starting from row 5 from the cursor, + * you can query the contents of row 5 from the window just by asking it + * for row 5 because there is a direct correspondence between the row indices + * used by the cursor and the window. + * </p><p> + * The current position of the cursor, as returned by {@link #getPosition}, + * is not changed by this method. + * </p> + * + * @param position The zero-based index of the first row to copy into the window. + * @param window The window to fill. */ - void fillWindow(int pos, CursorWindow winow); + void fillWindow(int position, CursorWindow window); /** * This function is called every time the cursor is successfully scrolled * to a new position, giving the subclass a chance to update any state it - * may have. If it returns false the move function will also do so and the + * may have. If it returns false the move function will also do so and the * cursor will scroll to the beforeFirst position. + * <p> + * This function should be called by methods such as {@link #moveToPosition(int)}, + * so it will typically not be called from outside of the cursor class itself. + * </p> * - * @param oldPosition the position that we're moving from - * @param newPosition the position that we're moving to - * @return true if the move is successful, false otherwise + * @param oldPosition The position that we're moving from. + * @param newPosition The position that we're moving to. + * @return True if the move is successful, false otherwise. */ boolean onMove(int oldPosition, int newPosition); - } diff --git a/core/java/android/database/CrossProcessCursorWrapper.java b/core/java/android/database/CrossProcessCursorWrapper.java new file mode 100644 index 0000000..8c250b8 --- /dev/null +++ b/core/java/android/database/CrossProcessCursorWrapper.java @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2011 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.database; + +import android.database.CrossProcessCursor; +import android.database.Cursor; +import android.database.CursorWindow; +import android.database.CursorWrapper; + +/** + * Cursor wrapper that implements {@link CrossProcessCursor}. + * <p> + * If the wrapper cursor implemented {@link CrossProcessCursor}, then delegates + * {@link #fillWindow}, {@link #getWindow()} and {@link #onMove} to it. Otherwise, + * provides default implementations of these methods that traverse the contents + * of the cursor similar to {@link AbstractCursor#fillWindow}. + * </p><p> + * This wrapper can be used to adapt an ordinary {@link Cursor} into a + * {@link CrossProcessCursor}. + * </p> + */ +public class CrossProcessCursorWrapper extends CursorWrapper implements CrossProcessCursor { + /** + * Creates a cross process cursor wrapper. + * @param cursor The underlying cursor to wrap. + */ + public CrossProcessCursorWrapper(Cursor cursor) { + super(cursor); + } + + @Override + public void fillWindow(int position, CursorWindow window) { + if (mCursor instanceof CrossProcessCursor) { + final CrossProcessCursor crossProcessCursor = (CrossProcessCursor)mCursor; + crossProcessCursor.fillWindow(position, window); + return; + } + + DatabaseUtils.cursorFillWindow(mCursor, position, window); + } + + @Override + public CursorWindow getWindow() { + if (mCursor instanceof CrossProcessCursor) { + final CrossProcessCursor crossProcessCursor = (CrossProcessCursor)mCursor; + return crossProcessCursor.getWindow(); + } + + return null; + } + + @Override + public boolean onMove(int oldPosition, int newPosition) { + if (mCursor instanceof CrossProcessCursor) { + final CrossProcessCursor crossProcessCursor = (CrossProcessCursor)mCursor; + return crossProcessCursor.onMove(oldPosition, newPosition); + } + + return true; + } +} diff --git a/core/java/android/database/CursorToBulkCursorAdaptor.java b/core/java/android/database/CursorToBulkCursorAdaptor.java index dd2c9b7..215035d 100644 --- a/core/java/android/database/CursorToBulkCursorAdaptor.java +++ b/core/java/android/database/CursorToBulkCursorAdaptor.java @@ -25,9 +25,9 @@ import android.util.Log; /** * Wraps a BulkCursor around an existing Cursor making it remotable. * <p> - * If the wrapped cursor is a {@link AbstractWindowedCursor} then it owns - * the cursor window. Otherwise, the adaptor takes ownership of the - * cursor itself and ensures it gets closed as needed during deactivation + * If the wrapped cursor returns non-null from {@link CrossProcessCursor#getWindow} + * then it is assumed to own the window. Otherwise, the adaptor provides a + * window to be filled and ensures it gets closed as needed during deactivation * and requeries. * </p> * @@ -48,12 +48,11 @@ public final class CursorToBulkCursorAdaptor extends BulkCursorNative private CrossProcessCursor mCursor; /** - * The cursor window used by the cross process cursor. - * This field is always null for abstract windowed cursors since they are responsible - * for managing the lifetime of their window. + * The cursor window that was filled by the cross process cursor in the + * case where the cursor does not support getWindow. + * This field is only ever non-null when the window has actually be filled. */ - private CursorWindow mWindowForNonWindowedCursor; - private boolean mWindowForNonWindowedCursorWasFilled; + private CursorWindow mFilledWindow; private static final class ContentObserverProxy extends ContentObserver { protected IContentObserver mRemote; @@ -90,11 +89,10 @@ public final class CursorToBulkCursorAdaptor extends BulkCursorNative public CursorToBulkCursorAdaptor(Cursor cursor, IContentObserver observer, String providerName) { - try { - mCursor = (CrossProcessCursor) cursor; - } catch (ClassCastException e) { - throw new UnsupportedOperationException( - "Only CrossProcessCursor cursors are supported across process for now", e); + if (cursor instanceof CrossProcessCursor) { + mCursor = (CrossProcessCursor)cursor; + } else { + mCursor = new CrossProcessCursorWrapper(cursor); } mProviderName = providerName; @@ -103,11 +101,10 @@ public final class CursorToBulkCursorAdaptor extends BulkCursorNative } } - private void closeWindowForNonWindowedCursorLocked() { - if (mWindowForNonWindowedCursor != null) { - mWindowForNonWindowedCursor.close(); - mWindowForNonWindowedCursor = null; - mWindowForNonWindowedCursorWasFilled = false; + private void closeFilledWindowLocked() { + if (mFilledWindow != null) { + mFilledWindow.close(); + mFilledWindow = null; } } @@ -118,7 +115,7 @@ public final class CursorToBulkCursorAdaptor extends BulkCursorNative mCursor = null; } - closeWindowForNonWindowedCursorLocked(); + closeFilledWindowLocked(); } private void throwIfCursorIsClosed() { @@ -139,30 +136,24 @@ public final class CursorToBulkCursorAdaptor extends BulkCursorNative synchronized (mLock) { throwIfCursorIsClosed(); - CursorWindow window; - if (mCursor instanceof AbstractWindowedCursor) { - AbstractWindowedCursor windowedCursor = (AbstractWindowedCursor)mCursor; - window = windowedCursor.getWindow(); - if (window == null) { - window = new CursorWindow(mProviderName, false /*localOnly*/); - windowedCursor.setWindow(window); - } + if (!mCursor.moveToPosition(startPos)) { + closeFilledWindowLocked(); + return null; + } - mCursor.moveToPosition(startPos); + CursorWindow window = mCursor.getWindow(); + if (window != null) { + closeFilledWindowLocked(); } else { - window = mWindowForNonWindowedCursor; + window = mFilledWindow; if (window == null) { - window = new CursorWindow(mProviderName, false /*localOnly*/); - mWindowForNonWindowedCursor = window; - } - - mCursor.moveToPosition(startPos); - - if (!mWindowForNonWindowedCursorWasFilled - || startPos < window.getStartPosition() + mFilledWindow = new CursorWindow(mProviderName); + window = mFilledWindow; + mCursor.fillWindow(startPos, window); + } else if (startPos < window.getStartPosition() || startPos >= window.getStartPosition() + window.getNumRows()) { + window.clear(); mCursor.fillWindow(startPos, window); - mWindowForNonWindowedCursorWasFilled = true; } } @@ -211,7 +202,7 @@ public final class CursorToBulkCursorAdaptor extends BulkCursorNative mCursor.deactivate(); } - closeWindowForNonWindowedCursorLocked(); + closeFilledWindowLocked(); } } @@ -227,7 +218,7 @@ public final class CursorToBulkCursorAdaptor extends BulkCursorNative synchronized (mLock) { throwIfCursorIsClosed(); - closeWindowForNonWindowedCursorLocked(); + closeFilledWindowLocked(); try { if (!mCursor.requery()) { diff --git a/core/java/android/database/CursorWindow.java b/core/java/android/database/CursorWindow.java index a18a721..9c93324 100644 --- a/core/java/android/database/CursorWindow.java +++ b/core/java/android/database/CursorWindow.java @@ -31,8 +31,8 @@ import android.util.SparseIntArray; /** * A buffer containing multiple cursor rows. * <p> - * A {@link CursorWindow} is read-write when created and used locally. When sent - * to a remote process (by writing it to a {@link Parcel}), the remote process + * A {@link CursorWindow} is read-write when initially created and used locally. + * When sent to a remote process (by writing it to a {@link Parcel}), the remote process * receives a read-only view of the cursor window. Typically the cursor window * will be allocated by the producer, filled with data, and then sent to the * consumer for reading. @@ -58,8 +58,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { private final CloseGuard mCloseGuard = CloseGuard.get(); - private static native int nativeCreate(String name, - int cursorWindowSize, boolean localOnly); + private static native int nativeCreate(String name, int cursorWindowSize); private static native int nativeCreateFromParcel(Parcel parcel); private static native void nativeDispose(int windowPtr); private static native void nativeWriteToParcel(int windowPtr, Parcel parcel); @@ -93,14 +92,10 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * </p> * * @param name The name of the cursor window, or null if none. - * @param localWindow True if this window will be used in this process only, - * false if it might be sent to another processes. - * - * @hide */ - public CursorWindow(String name, boolean localWindow) { + public CursorWindow(String name) { mStartPos = 0; - mWindowPtr = nativeCreate(name, sCursorWindowSize, localWindow); + mWindowPtr = nativeCreate(name, sCursorWindowSize); if (mWindowPtr == 0) { throw new CursorWindowAllocationException("Cursor window allocation of " + (sCursorWindowSize / 1024) + " kb failed. " + printStats()); @@ -117,10 +112,14 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * </p> * * @param localWindow True if this window will be used in this process only, - * false if it might be sent to another processes. + * false if it might be sent to another processes. This argument is ignored. + * + * @deprecated There is no longer a distinction between local and remote + * cursor windows. Use the {@link #CursorWindow(String)} constructor instead. */ + @Deprecated public CursorWindow(boolean localWindow) { - this(null, localWindow); + this((String)null); } private CursorWindow(Parcel source) { @@ -272,8 +271,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * Returns true if the field at the specified row and column index * has type {@link Cursor#FIELD_TYPE_NULL}. * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return True if the field has type {@link Cursor#FIELD_TYPE_NULL}. * @deprecated Use {@link #getType(int, int)} instead. @@ -287,8 +285,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * Returns true if the field at the specified row and column index * has type {@link Cursor#FIELD_TYPE_BLOB} or {@link Cursor#FIELD_TYPE_NULL}. * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return True if the field has type {@link Cursor#FIELD_TYPE_BLOB} or * {@link Cursor#FIELD_TYPE_NULL}. @@ -304,8 +301,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * Returns true if the field at the specified row and column index * has type {@link Cursor#FIELD_TYPE_INTEGER}. * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return True if the field has type {@link Cursor#FIELD_TYPE_INTEGER}. * @deprecated Use {@link #getType(int, int)} instead. @@ -319,8 +315,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * Returns true if the field at the specified row and column index * has type {@link Cursor#FIELD_TYPE_FLOAT}. * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return True if the field has type {@link Cursor#FIELD_TYPE_FLOAT}. * @deprecated Use {@link #getType(int, int)} instead. @@ -334,8 +329,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * Returns true if the field at the specified row and column index * has type {@link Cursor#FIELD_TYPE_STRING} or {@link Cursor#FIELD_TYPE_NULL}. * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return True if the field has type {@link Cursor#FIELD_TYPE_STRING} * or {@link Cursor#FIELD_TYPE_NULL}. @@ -360,8 +354,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * </ul> * </p> * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return The field type. */ @@ -391,8 +384,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * </ul> * </p> * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return The value of the field as a byte array. */ @@ -427,8 +419,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * </ul> * </p> * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return The value of the field as a string. */ @@ -466,8 +457,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * </ul> * </p> * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @param buffer The {@link CharArrayBuffer} to hold the string. It is automatically * resized if the requested string is larger than the buffer's current capacity. @@ -502,8 +492,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * </ul> * </p> * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return The value of the field as a <code>long</code>. */ @@ -535,8 +524,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * </ul> * </p> * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return The value of the field as a <code>double</code>. */ @@ -557,8 +545,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * result to <code>short</code>. * </p> * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return The value of the field as a <code>short</code>. */ @@ -574,8 +561,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * result to <code>int</code>. * </p> * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return The value of the field as an <code>int</code>. */ @@ -591,8 +577,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * result to <code>float</code>. * </p> * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return The value of the field as an <code>float</code>. */ @@ -604,8 +589,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * Copies a byte array into the field at the specified row and column index. * * @param value The value to store. - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return True if successful. */ @@ -622,8 +606,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * Copies a string into the field at the specified row and column index. * * @param value The value to store. - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return True if successful. */ @@ -640,8 +623,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * Puts a long integer into the field at the specified row and column index. * * @param value The value to store. - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return True if successful. */ @@ -659,8 +641,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { * specified row and column index. * * @param value The value to store. - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return True if successful. */ @@ -676,8 +657,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { /** * Puts a null value into the field at the specified row and column index. * - * @param row The zero-based row index, relative to the cursor window's - * start position ({@link #getStartPosition()}). + * @param row The zero-based row index. * @param column The zero-based column index. * @return True if successful. */ diff --git a/core/java/android/database/CursorWrapper.java b/core/java/android/database/CursorWrapper.java index 320733e..7baeb8c 100644 --- a/core/java/android/database/CursorWrapper.java +++ b/core/java/android/database/CursorWrapper.java @@ -25,9 +25,13 @@ import android.os.Bundle; * use for this class is to extend a cursor while overriding only a subset of its methods. */ public class CursorWrapper implements Cursor { + /** @hide */ + protected final Cursor mCursor; - private final Cursor mCursor; - + /** + * Creates a cursor wrapper. + * @param cursor The underlying cursor to wrap. + */ public CursorWrapper(Cursor cursor) { mCursor = cursor; } diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java index 8e6f699..a10ca15 100644 --- a/core/java/android/database/DatabaseUtils.java +++ b/core/java/android/database/DatabaseUtils.java @@ -237,7 +237,8 @@ public class DatabaseUtils { return Cursor.FIELD_TYPE_BLOB; } else if (obj instanceof Float || obj instanceof Double) { return Cursor.FIELD_TYPE_FLOAT; - } else if (obj instanceof Long || obj instanceof Integer) { + } else if (obj instanceof Long || obj instanceof Integer + || obj instanceof Short || obj instanceof Byte) { return Cursor.FIELD_TYPE_INTEGER; } else { return Cursor.FIELD_TYPE_STRING; @@ -245,6 +246,82 @@ public class DatabaseUtils { } /** + * Fills the specified cursor window by iterating over the contents of the cursor. + * The window is filled until the cursor is exhausted or the window runs out + * of space. + * + * The original position of the cursor is left unchanged by this operation. + * + * @param cursor The cursor that contains the data to put in the window. + * @param position The start position for filling the window. + * @param window The window to fill. + * @hide + */ + public static void cursorFillWindow(final Cursor cursor, + int position, final CursorWindow window) { + if (position < 0 || position >= cursor.getCount()) { + return; + } + window.acquireReference(); + try { + final int oldPos = cursor.getPosition(); + final int numColumns = cursor.getColumnCount(); + window.clear(); + window.setStartPosition(position); + window.setNumColumns(numColumns); + if (cursor.moveToPosition(position)) { + do { + if (!window.allocRow()) { + break; + } + for (int i = 0; i < numColumns; i++) { + final int type = cursor.getType(i); + final boolean success; + switch (type) { + case Cursor.FIELD_TYPE_NULL: + success = window.putNull(position, i); + break; + + case Cursor.FIELD_TYPE_INTEGER: + success = window.putLong(cursor.getLong(i), position, i); + break; + + case Cursor.FIELD_TYPE_FLOAT: + success = window.putDouble(cursor.getDouble(i), position, i); + break; + + case Cursor.FIELD_TYPE_BLOB: { + final byte[] value = cursor.getBlob(i); + success = value != null ? window.putBlob(value, position, i) + : window.putNull(position, i); + break; + } + + default: // assume value is convertible to String + case Cursor.FIELD_TYPE_STRING: { + final String value = cursor.getString(i); + success = value != null ? window.putString(value, position, i) + : window.putNull(position, i); + break; + } + } + if (!success) { + window.freeLastRow(); + break; + } + } + position += 1; + } while (cursor.moveToNext()); + } + cursor.moveToPosition(oldPos); + } catch (IllegalStateException e){ + // simply ignore it + } finally { + window.releaseReference(); + } + } + + /** * Appends an SQL string to the given StringBuilder, including the opening * and closing single quotes. Any single quotes internal to sqlString will * be escaped. diff --git a/core/java/android/database/sqlite/SQLiteCursor.java b/core/java/android/database/sqlite/SQLiteCursor.java index a1c36e2..9574300 100644 --- a/core/java/android/database/sqlite/SQLiteCursor.java +++ b/core/java/android/database/sqlite/SQLiteCursor.java @@ -155,7 +155,7 @@ public class SQLiteCursor extends AbstractWindowedCursor { } private void fillWindow(int startPos) { - clearOrCreateLocalWindow(getDatabase().getPath()); + clearOrCreateWindow(getDatabase().getPath()); mWindow.setStartPosition(startPos); int count = getQuery().fillWindow(mWindow); if (startPos == 0) { // fillWindow returns count(*) only for startPos = 0 diff --git a/core/java/android/nfc/NfcAdapter.java b/core/java/android/nfc/NfcAdapter.java index fe0106d..33310df 100644 --- a/core/java/android/nfc/NfcAdapter.java +++ b/core/java/android/nfc/NfcAdapter.java @@ -768,61 +768,6 @@ public final class NfcAdapter { } /** - * TODO: Remove this once pre-built apk's (Maps, Youtube etc) are updated - * @deprecated use {@link CreateNdefMessageCallback} or {@link OnNdefPushCompleteCallback} - * @hide - */ - @Deprecated - public interface NdefPushCallback { - /** - * @deprecated use {@link CreateNdefMessageCallback} instead - */ - @Deprecated - NdefMessage createMessage(); - /** - * @deprecated use{@link OnNdefPushCompleteCallback} instead - */ - @Deprecated - void onMessagePushed(); - } - - /** - * TODO: Remove this - * Converts new callbacks to old callbacks. - */ - static final class LegacyCallbackWrapper implements CreateNdefMessageCallback, - OnNdefPushCompleteCallback { - final NdefPushCallback mLegacyCallback; - LegacyCallbackWrapper(NdefPushCallback legacyCallback) { - mLegacyCallback = legacyCallback; - } - @Override - public void onNdefPushComplete(NfcEvent event) { - mLegacyCallback.onMessagePushed(); - } - @Override - public NdefMessage createNdefMessage(NfcEvent event) { - return mLegacyCallback.createMessage(); - } - } - - /** - * TODO: Remove this once pre-built apk's (Maps, Youtube etc) are updated - * @deprecated use {@link #setNdefPushMessageCallback} instead - * @hide - */ - @Deprecated - public void enableForegroundNdefPush(Activity activity, final NdefPushCallback callback) { - if (activity == null || callback == null) { - throw new NullPointerException(); - } - enforceResumed(activity); - LegacyCallbackWrapper callbackWrapper = new LegacyCallbackWrapper(callback); - mNfcActivityManager.setNdefPushMessageCallback(activity, callbackWrapper); - mNfcActivityManager.setOnNdefPushCompleteCallback(activity, callbackWrapper); - } - - /** * Enable NDEF Push feature. * <p>This API is for the Settings application. * @hide diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java index 4d7a9bb..cc2fa85 100644 --- a/core/java/android/os/StrictMode.java +++ b/core/java/android/os/StrictMode.java @@ -35,7 +35,6 @@ import dalvik.system.VMDebug; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; @@ -902,15 +901,13 @@ public final class StrictMode { return false; } + // Thread policy controls BlockGuard. int threadPolicyMask = StrictMode.DETECT_DISK_WRITE | StrictMode.DETECT_DISK_READ | StrictMode.DETECT_NETWORK; if (!IS_USER_BUILD) { threadPolicyMask |= StrictMode.PENALTY_DROPBOX; - if (IS_ENG_BUILD) { - threadPolicyMask |= StrictMode.PENALTY_LOG; - } } if (doFlashes) { threadPolicyMask |= StrictMode.PENALTY_FLASH; @@ -918,6 +915,8 @@ public final class StrictMode { StrictMode.setThreadPolicyMask(threadPolicyMask); + // VM Policy controls CloseGuard, detection of Activity leaks, + // and instance counting. if (IS_USER_BUILD) { setCloseGuardEnabled(false); } else { diff --git a/core/java/android/provider/CalendarContract.java b/core/java/android/provider/CalendarContract.java index 4b4d308..44f259a 100644 --- a/core/java/android/provider/CalendarContract.java +++ b/core/java/android/provider/CalendarContract.java @@ -300,8 +300,25 @@ public final class CalendarContract { public static final String CALENDAR_COLOR = "calendar_color"; /** + * An index for looking up a color from the {@link Colors} table. NULL + * or an empty string are reserved for indicating that the calendar does + * not use an index for looking up the color. The provider will update + * {@link #CALENDAR_COLOR} automatically when a valid index is written + * to this column. @see Colors + * <P> + * Type: TEXT + * </P> + * TODO UNHIDE + * + * @hide + */ + public static final String CALENDAR_COLOR_INDEX = "calendar_color_index"; + + /** * The display name of the calendar. Column name. - * <P>Type: TEXT</P> + * <P> + * Type: TEXT + * </P> */ public static final String CALENDAR_DISPLAY_NAME = "calendar_displayName"; @@ -392,6 +409,34 @@ public final class CalendarContract { * <P>Type: TEXT</P> */ public static final String ALLOWED_REMINDERS = "allowedReminders"; + + /** + * A comma separated list of availability types supported for this + * calendar in the format "#,#,#". Valid types are + * {@link Events#AVAILABILITY_BUSY}, {@link Events#AVAILABILITY_FREE}, + * {@link Events#AVAILABILITY_TENTATIVE}. Setting this field to only + * {@link Events#AVAILABILITY_BUSY} should be used to indicate that + * changing the availability is not supported. + * + * TODO UNHIDE, Update Calendars doc + * + * @hide + */ + public static final String ALLOWED_AVAILABILITY = "allowedAvailability"; + + /** + * A comma separated list of attendee types supported for this calendar + * in the format "#,#,#". Valid types are {@link Attendees#TYPE_NONE}, + * {@link Attendees#TYPE_OPTIONAL}, {@link Attendees#TYPE_REQUIRED}, + * {@link Attendees#TYPE_RESOURCE}. Setting this field to only + * {@link Attendees#TYPE_NONE} should be used to indicate that changing + * the attendee type is not supported. + * + * TODO UNHIDE, Update Calendars doc + * + * @hide + */ + public static final String ALLOWED_ATTENDEE_TYPES = "allowedAttendeeTypes"; } /** @@ -688,13 +733,22 @@ public final class CalendarContract { /** * The type of attendee. Column name. - * <P>Type: Integer (one of {@link #TYPE_REQUIRED}, {@link #TYPE_OPTIONAL})</P> + * <P> + * Type: Integer (one of {@link #TYPE_REQUIRED}, {@link #TYPE_OPTIONAL} + * </P> */ public static final String ATTENDEE_TYPE = "attendeeType"; public static final int TYPE_NONE = 0; public static final int TYPE_REQUIRED = 1; public static final int TYPE_OPTIONAL = 2; + /** + * This specifies that an attendee is a resource, such as a room, and + * not an actual person. TODO UNHIDE and add to ATTENDEE_TYPE comment + * + * @hide + */ + public static final int TYPE_RESOURCE = 3; /** * The attendance status of the attendee. Column name. @@ -787,13 +841,26 @@ public final class CalendarContract { public static final String EVENT_LOCATION = "eventLocation"; /** - * A secondary color for the individual event. Reserved for future use. - * Column name. + * A secondary color for the individual event. This should only be + * updated by the sync adapter for a given account. * <P>Type: INTEGER</P> */ public static final String EVENT_COLOR = "eventColor"; /** + * A secondary color index for the individual event. NULL or an empty + * string are reserved for indicating that the event does not use an + * index for looking up the color. The provider will update + * {@link #EVENT_COLOR} automatically when a valid index is written to + * this column. @see Colors + * <P>Type: TEXT</P> + * TODO UNHIDE + * + * @hide + */ + public static final String EVENT_COLOR_INDEX = "eventColor_index"; + + /** * The event status. Column name. * <P>Type: INTEGER (one of {@link #STATUS_TENTATIVE}...)</P> */ @@ -964,6 +1031,15 @@ public final class CalendarContract { * other events. */ public static final int AVAILABILITY_FREE = 1; + /** + * Indicates that the owner's availability may change, but should be + * considered busy time that will conflict. + * + * TODO UNHIDE + * + * @hide + */ + public static final int AVAILABILITY_TENTATIVE = 2; /** * Whether the event has an alarm or not. Column name. @@ -1335,7 +1411,9 @@ public final class CalendarContract { * <dd>When inserting a new event the following fields must be included: * <ul> * <li>dtstart</li> - * <li>dtend -or- a (rrule or rdate) and a duration</li> + * <li>dtend if the event is non-recurring</li> + * <li>duration if the event is recurring</li> + * <li>rrule or rdate if the event is recurring</li> * <li>a calendar_id</li> * </ul> * There are also further requirements when inserting or updating an event. @@ -2224,6 +2302,81 @@ public final class CalendarContract { } } + /** + * @hide + * TODO UNHIDE + */ + protected interface ColorsColumns extends SyncStateContract.Columns { + + /** + * The type of color, which describes how it should be used. Valid types + * are {@link #TYPE_CALENDAR} and {@link #TYPE_EVENT}. Column name. + * <P> + * Type: INTEGER (NOT NULL) + * </P> + */ + public static final String COLOR_TYPE = "color_type"; + + /** + * This indicateds a color that can be used for calendars. + */ + public static final int TYPE_CALENDAR = 0; + /** + * This indicates a color that can be used for events. + */ + public static final int TYPE_EVENT = 1; + + /** + * The index used to reference this color. This can be any non-empty + * string, but must be unique for a given {@link #ACCOUNT_TYPE} and + * {@link #ACCOUNT_NAME} . Column name. + * <P> + * Type: TEXT + * </P> + */ + public static final String COLOR_INDEX = "color_index"; + + /** + * The color as an 8-bit ARGB integer value. Colors should specify alpha + * as fully opaque (eg 0xFF993322) as the alpha may be ignored or + * modified for display. It is reccomended that colors be usable with + * light (near white) text. Apps should not depend on that assumption, + * however. Column name. + * <P> + * Type: INTEGER (NOT NULL) + * </P> + */ + public static final String COLOR = "color"; + + } + + /** + * Fields for accessing colors available for a given account. Colors are + * referenced by {@link #COLOR_INDEX} which must be unique for a given + * account name/type. These values should only be updated by the sync + * adapter. + * TODO UNHIDE + * + * @hide + */ + public static final class Colors implements ColorsColumns { + /** + * @hide + */ + public static final String TABLE_NAME = "Colors"; + /** + * The Uri for querying color information + */ + @SuppressWarnings("hiding") + public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/colors"); + + /** + * This utility class cannot be instantiated + */ + private Colors() { + } + } + protected interface ExtendedPropertiesColumns { /** * The event the extended property belongs to. Column name. diff --git a/core/java/android/text/method/ArrowKeyMovementMethod.java b/core/java/android/text/method/ArrowKeyMovementMethod.java index e93039b..4ec4bc4 100644 --- a/core/java/android/text/method/ArrowKeyMovementMethod.java +++ b/core/java/android/text/method/ArrowKeyMovementMethod.java @@ -197,16 +197,18 @@ public class ArrowKeyMovementMethod extends BaseMovementMethod implements Moveme @Override protected boolean leftWord(TextView widget, Spannable buffer) { final int selectionEnd = widget.getSelectionEnd(); - mWordIterator.setCharSequence(buffer, selectionEnd, selectionEnd); - return Selection.moveToPreceding(buffer, mWordIterator, isSelecting(buffer)); + final WordIterator wordIterator = widget.getWordIterator(); + wordIterator.setCharSequence(buffer, selectionEnd, selectionEnd); + return Selection.moveToPreceding(buffer, wordIterator, isSelecting(buffer)); } /** {@hide} */ @Override protected boolean rightWord(TextView widget, Spannable buffer) { final int selectionEnd = widget.getSelectionEnd(); - mWordIterator.setCharSequence(buffer, selectionEnd, selectionEnd); - return Selection.moveToFollowing(buffer, mWordIterator, isSelecting(buffer)); + final WordIterator wordIterator = widget.getWordIterator(); + wordIterator.setCharSequence(buffer, selectionEnd, selectionEnd); + return Selection.moveToFollowing(buffer, wordIterator, isSelecting(buffer)); } @Override @@ -322,8 +324,6 @@ public class ArrowKeyMovementMethod extends BaseMovementMethod implements Moveme return sInstance; } - private WordIterator mWordIterator = new WordIterator(); - private static final Object LAST_TAP_DOWN = new Object(); private static ArrowKeyMovementMethod sInstance; } diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 61b13d5..a2f9b36 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -10114,8 +10114,20 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal mLocalDirtyRect.setEmpty(); } + // The layer is not valid if the underlying GPU resources cannot be allocated + if (!mHardwareLayer.isValid()) { + return null; + } + HardwareCanvas currentCanvas = mAttachInfo.mHardwareCanvas; final HardwareCanvas canvas = mHardwareLayer.start(currentCanvas); + + // Make sure all the GPU resources have been properly allocated + if (canvas == null) { + mHardwareLayer.end(currentCanvas); + return null; + } + mAttachInfo.mHardwareCanvas = canvas; try { canvas.setViewport(width, height); diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 081e267..abb5bc8 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -431,20 +431,17 @@ public final class ViewRootImpl extends Handler implements ViewParent, } } - // If the application owns the surface, don't enable hardware acceleration - if (mSurfaceHolder == null) { - enableHardwareAcceleration(attrs); - } - CompatibilityInfo compatibilityInfo = mCompatibilityInfo.get(); mTranslator = compatibilityInfo.getTranslator(); - if (mTranslator != null) { - mSurface.setCompatibilityTranslator(mTranslator); + // If the application owns the surface, don't enable hardware acceleration + if (mSurfaceHolder == null) { + enableHardwareAcceleration(attrs); } boolean restore = false; if (mTranslator != null) { + mSurface.setCompatibilityTranslator(mTranslator); restore = true; attrs.backup(); mTranslator.translateWindowLayout(attrs); @@ -596,6 +593,9 @@ public final class ViewRootImpl extends Handler implements ViewParent, mAttachInfo.mHardwareAccelerated = false; mAttachInfo.mHardwareAccelerationRequested = false; + // Don't enable hardware acceleration when the application is in compatibility mode + if (mTranslator != null) return; + // Try to enable hardware acceleration if requested final boolean hardwareAccelerated = (attrs.flags & WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED) != 0; diff --git a/core/java/android/view/accessibility/AccessibilityRecord.java b/core/java/android/view/accessibility/AccessibilityRecord.java index fe06d98..a4e0688 100644 --- a/core/java/android/view/accessibility/AccessibilityRecord.java +++ b/core/java/android/view/accessibility/AccessibilityRecord.java @@ -391,8 +391,6 @@ public class AccessibilityRecord { * Gets the max scroll offset of the source left edge in pixels. * * @return The max scroll. - * - * @hide */ public int getMaxScrollX() { return mMaxScrollX; @@ -401,8 +399,6 @@ public class AccessibilityRecord { * Sets the max scroll offset of the source left edge in pixels. * * @param maxScrollX The max scroll. - * - * @hide */ public void setMaxScrollX(int maxScrollX) { enforceNotSealed(); @@ -413,8 +409,6 @@ public class AccessibilityRecord { * Gets the max scroll offset of the source top edge in pixels. * * @return The max scroll. - * - * @hide */ public int getMaxScrollY() { return mMaxScrollY; @@ -424,8 +418,6 @@ public class AccessibilityRecord { * Sets the max scroll offset of the source top edge in pixels. * * @param maxScrollY The max scroll. - * - * @hide */ public void setMaxScrollY(int maxScrollY) { enforceNotSealed(); diff --git a/core/java/android/webkit/WebChromeClient.java b/core/java/android/webkit/WebChromeClient.java index ae40ded..3d129f7 100644 --- a/core/java/android/webkit/WebChromeClient.java +++ b/core/java/android/webkit/WebChromeClient.java @@ -95,27 +95,33 @@ public class WebChromeClient { public void onHideCustomView() {} /** - * Request the host application to create a new Webview. The host - * application should handle placement of the new WebView in the view - * system. The default behavior returns null. - * @param view The WebView that initiated the callback. - * @param dialog True if the new window is meant to be a small dialog - * window. - * @param userGesture True if the request was initiated by a user gesture - * such as clicking a link. - * @param resultMsg The message to send when done creating a new WebView. - * Set the new WebView through resultMsg.obj which is - * WebView.WebViewTransport() and then call - * resultMsg.sendToTarget(); - * @return Similar to javscript dialogs, this method should return true if - * the client is going to handle creating a new WebView. Note that - * the WebView will halt processing if this method returns true so - * make sure to call resultMsg.sendToTarget(). It is undefined - * behavior to call resultMsg.sendToTarget() after returning false - * from this method. + * Request the host application to create a new window. If the host + * application chooses to honor this request, it should return true from + * this method, create a new WebView to host the window, insert it into the + * View system and send the supplied resultMsg message to its target with + * the new WebView as an argument. If the host application chooses not to + * honor the request, it should return false from this method. The default + * implementation of this method does nothing and hence returns false. + * @param view The WebView from which the request for a new window + * originated. + * @param isDialog True if the new window should be a dialog, rather than + * a full-size window. + * @param isUserGesture True if the request was initiated by a user gesture, + * such as the user clicking a link. + * @param resultMsg The message to send when once a new WebView has been + * created. resultMsg.obj is a + * {@link WebView.WebViewTransport} object. This should be + * used to transport the new WebView, by calling + * {@link WebView.WebViewTransport#setWebView(WebView) + * WebView.WebViewTransport.setWebView(WebView)}. + * @return This method should return true if the host application will + * create a new window, in which case resultMsg should be sent to + * its target. Otherwise, this method should return false. Returning + * false from this method but also sending resultMsg will result in + * undefined behavior. */ - public boolean onCreateWindow(WebView view, boolean dialog, - boolean userGesture, Message resultMsg) { + public boolean onCreateWindow(WebView view, boolean isDialog, + boolean isUserGesture, Message resultMsg) { return false; } diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 6e81530..71ba7eb 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -2004,15 +2004,18 @@ public class WebView extends AbsoluteLayout } /** - * Load the given url with the extra headers. - * @param url The url of the resource to load. - * @param extraHeaders The extra headers sent with this url. This should not - * include the common headers like "user-agent". If it does, it - * will be replaced by the intrinsic value of the WebView. - */ - public void loadUrl(String url, Map<String, String> extraHeaders) { + * Load the given URL with the specified additional HTTP headers. + * @param url The URL of the resource to load. + * @param additionalHttpHeaders The additional headers to be used in the + * HTTP request for this URL, specified as a map from name to + * value. Note that if this map contains any of the headers + * that are set by default by the WebView, such as those + * controlling caching, accept types or the User-Agent, their + * values may be overriden by the WebView's defaults. + */ + public void loadUrl(String url, Map<String, String> additionalHttpHeaders) { checkThread(); - loadUrlImpl(url, extraHeaders); + loadUrlImpl(url, additionalHttpHeaders); } private void loadUrlImpl(String url, Map<String, String> extraHeaders) { @@ -2025,8 +2028,8 @@ public class WebView extends AbsoluteLayout } /** - * Load the given url. - * @param url The url of the resource to load. + * Load the given URL. + * @param url The URL of the resource to load. */ public void loadUrl(String url) { checkThread(); @@ -4504,6 +4507,9 @@ public class WebView extends AbsoluteLayout if (mHeldMotionless == MOTIONLESS_FALSE) { mPrivateHandler.sendMessageDelayed(mPrivateHandler .obtainMessage(DRAG_HELD_MOTIONLESS), MOTIONLESS_TIME); + mPrivateHandler.sendMessageDelayed(mPrivateHandler + .obtainMessage(AWAKEN_SCROLL_BARS), + ViewConfiguration.getScrollDefaultDelay()); mHeldMotionless = MOTIONLESS_PENDING; } } @@ -6001,6 +6007,7 @@ public class WebView extends AbsoluteLayout mTouchMode = TOUCH_DRAG_START_MODE; mConfirmMove = true; mPrivateHandler.removeMessages(RESUME_WEBCORE_PRIORITY); + nativeSetIsScrolling(false); } else if (mPrivateHandler.hasMessages(RELEASE_SINGLE_TAP)) { mPrivateHandler.removeMessages(RELEASE_SINGLE_TAP); if (USE_WEBKIT_RINGS || getSettings().supportTouchOnly()) { @@ -6283,9 +6290,16 @@ public class WebView extends AbsoluteLayout } mLastTouchX = x; mLastTouchY = y; - if ((deltaX | deltaY) != 0) { + + if (deltaX * deltaX + deltaY * deltaY > mTouchSlopSquare) { mHeldMotionless = MOTIONLESS_FALSE; + nativeSetIsScrolling(true); + } else { + mHeldMotionless = MOTIONLESS_TRUE; + nativeSetIsScrolling(false); + keepScrollBarsVisible = true; } + mLastTouchTime = eventTime; } @@ -6301,9 +6315,15 @@ public class WebView extends AbsoluteLayout // keep the scrollbar on the screen even there is no scroll awakenScrollBars(ViewConfiguration.getScrollDefaultDelay(), false); + // Post a message so that we'll keep them alive while we're not scrolling. + mPrivateHandler.sendMessageDelayed(mPrivateHandler + .obtainMessage(AWAKEN_SCROLL_BARS), + ViewConfiguration.getScrollDefaultDelay()); // return false to indicate that we can't pan out of the // view space return !done; + } else { + mPrivateHandler.removeMessages(AWAKEN_SCROLL_BARS); } break; } diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java index 510e2d4..5fbbe4d 100644 --- a/core/java/android/widget/SpellChecker.java +++ b/core/java/android/widget/SpellChecker.java @@ -32,6 +32,7 @@ import android.view.textservice.TextServicesManager; import com.android.internal.util.ArrayUtils; import java.text.BreakIterator; +import java.util.Locale; /** @@ -45,7 +46,7 @@ public class SpellChecker implements SpellCheckerSessionListener { private final TextView mTextView; - final SpellCheckerSession mSpellCheckerSession; + SpellCheckerSession mSpellCheckerSession; final int mCookie; // Paired arrays for the (id, spellCheckSpan) pair. A negative id means the associated @@ -61,23 +62,54 @@ public class SpellChecker implements SpellCheckerSessionListener { private int mSpanSequenceCounter = 0; + private Locale mCurrentLocale; + + // Shared by all SpellParsers. Cannot be shared with TextView since it may be used + // concurrently due to the asynchronous nature of onGetSuggestions. + private WordIterator mWordIterator; + public SpellChecker(TextView textView) { mTextView = textView; - final TextServicesManager textServicesManager = (TextServicesManager) textView.getContext(). - getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE); - mSpellCheckerSession = textServicesManager.newSpellCheckerSession( - null /* not currently used by the textServicesManager */, - null /* null locale means use the languages defined in Settings - if referToSpellCheckerLanguageSettings is true */, - this, true /* means use the languages defined in Settings */); - mCookie = hashCode(); - - // Arbitrary: 4 simultaneous spell check spans. Will automatically double size on demand + // Arbitrary: these arrays will automatically double their sizes on demand final int size = ArrayUtils.idealObjectArraySize(1); mIds = new int[size]; mSpellCheckSpans = new SpellCheckSpan[size]; + + setLocale(mTextView.getLocale()); + + mCookie = hashCode(); + } + + private void setLocale(Locale locale) { + final TextServicesManager textServicesManager = (TextServicesManager) + mTextView.getContext().getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE); + mSpellCheckerSession = textServicesManager.newSpellCheckerSession( + null /* Bundle not currently used by the textServicesManager */, + locale, this, false /* means any available languages from current spell checker */); + mCurrentLocale = locale; + + // Restore SpellCheckSpans in pool + for (int i = 0; i < mLength; i++) { + mSpellCheckSpans[i].setSpellCheckInProgress(false); + mIds[i] = -1; + } mLength = 0; + + // Change SpellParsers' wordIterator locale + mWordIterator = new WordIterator(locale); + + // Stop all SpellParsers + final int length = mSpellParsers.length; + for (int i = 0; i < length; i++) { + mSpellParsers[i].finish(); + } + + // Remove existing misspelled SuggestionSpans + mTextView.removeMisspelledSpans((Editable) mTextView.getText()); + + // This class is the listener for locale change: warn other locale-aware objects + mTextView.onLocaleChanged(); } /** @@ -95,7 +127,7 @@ public class SpellChecker implements SpellCheckerSessionListener { final int length = mSpellParsers.length; for (int i = 0; i < length; i++) { - mSpellParsers[i].close(); + mSpellParsers[i].finish(); } } @@ -140,12 +172,20 @@ public class SpellChecker implements SpellCheckerSessionListener { } public void spellCheck(int start, int end) { + final Locale locale = mTextView.getLocale(); + if (mCurrentLocale == null || (!(mCurrentLocale.equals(locale)))) { + setLocale(locale); + // Re-check the entire text + start = 0; + end = mTextView.getText().length(); + } + if (!isSessionActive()) return; final int length = mSpellParsers.length; for (int i = 0; i < length; i++) { final SpellParser spellParser = mSpellParsers[i]; - if (spellParser.isDone()) { + if (spellParser.isFinished()) { spellParser.init(start, end); spellParser.parse(); return; @@ -229,7 +269,7 @@ public class SpellChecker implements SpellCheckerSessionListener { final int length = mSpellParsers.length; for (int i = 0; i < length; i++) { final SpellParser spellParser = mSpellParsers[i]; - if (!spellParser.isDone()) { + if (!spellParser.isFinished()) { spellParser.parse(); } } @@ -239,6 +279,7 @@ public class SpellChecker implements SpellCheckerSessionListener { SuggestionsInfo suggestionsInfo, SpellCheckSpan spellCheckSpan) { final int start = editable.getSpanStart(spellCheckSpan); final int end = editable.getSpanEnd(spellCheckSpan); + if (start < 0 || end < 0) return; // span was removed in the meantime // Other suggestion spans may exist on that region, with identical suggestions, filter // them out to avoid duplicates. First, filter suggestion spans on that exact region. @@ -249,7 +290,6 @@ public class SpellChecker implements SpellCheckerSessionListener { final int spanEnd = editable.getSpanEnd(suggestionSpans[i]); if (spanStart != start || spanEnd != end) { suggestionSpans[i] = null; - break; } } @@ -301,7 +341,6 @@ public class SpellChecker implements SpellCheckerSessionListener { } private class SpellParser { - private WordIterator mWordIterator = new WordIterator(/*TODO Locale*/); private Object mRange = new Object(); public void init(int start, int end) { @@ -309,11 +348,11 @@ public class SpellChecker implements SpellCheckerSessionListener { Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } - public void close() { + public void finish() { ((Editable) mTextView.getText()).removeSpan(mRange); } - public boolean isDone() { + public boolean isFinished() { return ((Editable) mTextView.getText()).getSpanStart(mRange) < 0; } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index a21a087..55e49ea 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -132,6 +132,7 @@ import android.view.inputmethod.ExtractedText; import android.view.inputmethod.ExtractedTextRequest; import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; +import android.view.inputmethod.InputMethodSubtype; import android.widget.AdapterView.OnItemClickListener; import android.widget.RemoteViews.RemoteView; @@ -147,6 +148,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; +import java.util.Locale; /** * Displays text to the user and optionally allows them to edit it. A TextView @@ -357,6 +359,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private SpellChecker mSpellChecker; + private boolean mShowSoftInputOnFocus = true; + // The alignment to pass to Layout, or null if not resolved. private Layout.Alignment mLayoutAlignment; @@ -605,6 +609,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mLinksClickable = a.getBoolean(attr, true); break; +// TODO uncomment when this attribute is made public in the next release +// also add TextView_showSoftInputOnFocus to the list of attributes above +// case com.android.internal.R.styleable.TextView_showSoftInputOnFocus: +// setShowSoftInputOnFocus(a.getBoolean(attr, true)); +// break; + case com.android.internal.R.styleable.TextView_drawableLeft: drawableLeft = a.getDrawable(attr); break; @@ -2368,6 +2378,29 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * Sets whether the soft input method will be made visible when this + * TextView gets focused. The default is true. + * + * @attr ref android.R.styleable#TextView_showSoftInputOnFocus + * @hide + */ + @android.view.RemotableViewMethod + public final void setShowSoftInputOnFocus(boolean show) { + mShowSoftInputOnFocus = show; + } + + /** + * Returns whether the soft input method will be made visible when this + * TextView gets focused. The default is true. + * + * @attr ref android.R.styleable#TextView_showSoftInputOnFocus + * @hide + */ + public final boolean getShowSoftInputOnFocus() { + return mShowSoftInputOnFocus; + } + + /** * Returns the list of URLSpans attached to the text * (by {@link Linkify} or otherwise) if any. You can call * {@link URLSpan#getURL} on them to find where they link to @@ -2942,15 +2975,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener sp.removeSpan(cw); } - SuggestionSpan[] suggestionSpans = sp.getSpans(0, sp.length(), SuggestionSpan.class); - for (int i = 0; i < suggestionSpans.length; i++) { - int flags = suggestionSpans[i].getFlags(); - if ((flags & SuggestionSpan.FLAG_EASY_CORRECT) != 0 - && (flags & SuggestionSpan.FLAG_MISSPELLED) != 0) { - sp.removeSpan(suggestionSpans[i]); - } - } - + removeMisspelledSpans(sp); sp.removeSpan(mSuggestionRangeSpan); ss.text = sp; @@ -2970,6 +2995,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return superState; } + void removeMisspelledSpans(Spannable spannable) { + SuggestionSpan[] suggestionSpans = spannable.getSpans(0, spannable.length(), + SuggestionSpan.class); + for (int i = 0; i < suggestionSpans.length; i++) { + int flags = suggestionSpans[i].getFlags(); + if ((flags & SuggestionSpan.FLAG_EASY_CORRECT) != 0 + && (flags & SuggestionSpan.FLAG_MISSPELLED) != 0) { + spannable.removeSpan(suggestionSpans[i]); + } + } + } + @Override public void onRestoreInstanceState(Parcelable state) { if (!(state instanceof SavedState)) { @@ -5465,7 +5502,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener && mLayout != null && onCheckIsTextEditor()) { InputMethodManager imm = InputMethodManager.peekInstance(); viewClicked(imm); - if (imm != null) { + if (imm != null && mShowSoftInputOnFocus) { imm.showSoftInput(this, 0); } } @@ -8207,6 +8244,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } hideControllers(); + if (mSuggestionsPopupWindow != null) { + mSuggestionsPopupWindow.onParentLostFocus(); + } } startStopMarquee(hasWindowFocus); @@ -8304,7 +8344,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // Show the IME, except when selecting in read-only text. final InputMethodManager imm = InputMethodManager.peekInstance(); viewClicked(imm); - if (!mTextIsSelectable) { + if (!mTextIsSelectable && mShowSoftInputOnFocus) { handled |= imm != null && imm.showSoftInput(this, 0); } @@ -8840,15 +8880,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener selectionStart = ((Spanned) mText).getSpanStart(urlSpan); selectionEnd = ((Spanned) mText).getSpanEnd(urlSpan); } else { - if (mWordIterator == null) { - mWordIterator = new WordIterator(); - } - mWordIterator.setCharSequence(mText, minOffset, maxOffset); + final WordIterator wordIterator = getWordIterator(); + wordIterator.setCharSequence(mText, minOffset, maxOffset); - selectionStart = mWordIterator.getBeginning(minOffset); + selectionStart = wordIterator.getBeginning(minOffset); if (selectionStart == BreakIterator.DONE) return false; - selectionEnd = mWordIterator.getEnd(maxOffset); + selectionEnd = wordIterator.getEnd(maxOffset); if (selectionEnd == BreakIterator.DONE) return false; if (selectionStart == selectionEnd) { @@ -8863,6 +8901,43 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return selectionEnd > selectionStart; } + /** + * This is a temporary method. Future versions may support multi-locale text. + * + * @return The current locale used in this TextView, based on the current IME's locale, + * or the system default locale if this is not defined. + * @hide + */ + public Locale getLocale() { + Locale locale = Locale.getDefault(); + final InputMethodManager imm = InputMethodManager.peekInstance(); + if (imm != null) { + final InputMethodSubtype currentInputMethodSubtype = imm.getCurrentInputMethodSubtype(); + if (currentInputMethodSubtype != null) { + String localeString = currentInputMethodSubtype.getLocale(); + if (!TextUtils.isEmpty(localeString)) { + locale = new Locale(localeString); + } + } + } + return locale; + } + + void onLocaleChanged() { + // Will be re-created on demand in getWordIterator with the proper new locale + mWordIterator = null; + } + + /** + * @hide + */ + public WordIterator getWordIterator() { + if (mWordIterator == null) { + mWordIterator = new WordIterator(getLocale()); + } + return mWordIterator; + } + private long getCharRange(int offset) { final int textLength = mText.length(); if (offset + 1 < textLength) { @@ -9547,6 +9622,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private SuggestionInfo[] mSuggestionInfos; private int mNumberOfSuggestions; private boolean mCursorWasVisibleBeforeSuggestions; + private boolean mIsShowingUp = false; private SuggestionAdapter mSuggestionsAdapter; private final Comparator<SuggestionSpan> mSuggestionSpanComparator; private final HashMap<SuggestionSpan, Integer> mSpansLengths; @@ -9602,6 +9678,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } + public boolean isShowingUp() { + return mIsShowingUp; + } + + public void onParentLostFocus() { + mIsShowingUp = false; + } + private class SuggestionInfo { int suggestionStart, suggestionEnd; // range of actual suggestion within text SuggestionSpan suggestionSpan; // the SuggestionSpan that this TextView represents @@ -9609,15 +9693,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener SpannableStringBuilder text = new SpannableStringBuilder(); TextAppearanceSpan highlightSpan = new TextAppearanceSpan(mContext, android.R.style.TextAppearance_SuggestionHighlight); - - void removeMisspelledFlag() { - int suggestionSpanFlags = suggestionSpan.getFlags(); - if ((suggestionSpanFlags & SuggestionSpan.FLAG_MISSPELLED) > 0) { - suggestionSpanFlags &= ~SuggestionSpan.FLAG_MISSPELLED; - suggestionSpanFlags &= ~SuggestionSpan.FLAG_EASY_CORRECT; - suggestionSpan.setFlags(suggestionSpanFlags); - } - } } private class SuggestionAdapter extends BaseAdapter { @@ -9714,6 +9789,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener updateSuggestions(); mCursorWasVisibleBeforeSuggestions = mCursorVisible; setCursorVisible(false); + mIsShowingUp = true; super.show(); } @@ -9891,14 +9967,16 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (suggestionInfo.suggestionIndex == DELETE_TEXT) { final int spanUnionStart = editable.getSpanStart(mSuggestionRangeSpan); int spanUnionEnd = editable.getSpanEnd(mSuggestionRangeSpan); - // Do not leave two adjacent spaces after deletion, or one at beginning of text - if (spanUnionEnd < editable.length() && - Character.isSpaceChar(editable.charAt(spanUnionEnd)) && - (spanUnionStart == 0 || - Character.isSpaceChar(editable.charAt(spanUnionStart - 1)))) { + if (spanUnionStart >= 0 && spanUnionEnd > spanUnionStart) { + // Do not leave two adjacent spaces after deletion, or one at beginning of text + if (spanUnionEnd < editable.length() && + Character.isSpaceChar(editable.charAt(spanUnionEnd)) && + (spanUnionStart == 0 || + Character.isSpaceChar(editable.charAt(spanUnionStart - 1)))) { spanUnionEnd = spanUnionEnd + 1; + } + editable.replace(spanUnionStart, spanUnionEnd, ""); } - editable.replace(spanUnionStart, spanUnionEnd, ""); hide(); return; } @@ -9933,6 +10011,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener suggestionSpansStarts[i] = editable.getSpanStart(suggestionSpan); suggestionSpansEnds[i] = editable.getSpanEnd(suggestionSpan); suggestionSpansFlags[i] = editable.getSpanFlags(suggestionSpan); + + // Remove potential misspelled flags + int suggestionSpanFlags = suggestionSpan.getFlags(); + if ((suggestionSpanFlags & SuggestionSpan.FLAG_MISSPELLED) > 0) { + suggestionSpanFlags &= ~SuggestionSpan.FLAG_MISSPELLED; + suggestionSpanFlags &= ~SuggestionSpan.FLAG_EASY_CORRECT; + suggestionSpan.setFlags(suggestionSpanFlags); + } } final int suggestionStart = suggestionInfo.suggestionStart; @@ -9941,8 +10027,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener suggestionStart, suggestionEnd).toString(); editable.replace(spanStart, spanEnd, suggestion); - suggestionInfo.removeMisspelledFlag(); - // Notify source IME of the suggestion pick. Do this before swaping texts. if (!TextUtils.isEmpty( suggestionInfo.suggestionSpan.getNotificationTargetClassName())) { @@ -10118,7 +10202,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener final boolean selectionStarted = mSelectionActionMode != null || extractedTextModeWillBeStartedFullScreen; - if (selectionStarted && !mTextIsSelectable && imm != null) { + if (selectionStarted && !mTextIsSelectable && imm != null && mShowSoftInputOnFocus) { // Show the IME to be able to replace text, except when selecting non editable text. imm.showSoftInput(this, 0, null); } @@ -11118,6 +11202,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } private void hideCursorControllers() { + if (mSuggestionsPopupWindow != null && !mSuggestionsPopupWindow.isShowingUp()) { + // Should be done before hide insertion point controller since it triggers a show of it + mSuggestionsPopupWindow.hide(); + } hideInsertionPointCursorController(); stopSelectionActionMode(); } diff --git a/core/java/com/android/internal/view/menu/ExpandedMenuView.java b/core/java/com/android/internal/view/menu/ExpandedMenuView.java index 723ece4..47058ad 100644 --- a/core/java/com/android/internal/view/menu/ExpandedMenuView.java +++ b/core/java/com/android/internal/view/menu/ExpandedMenuView.java @@ -63,11 +63,6 @@ public final class ExpandedMenuView extends ListView implements ItemInvoker, Men setChildrenDrawingCacheEnabled(false); } - @Override - protected boolean recycleOnMeasure() { - return false; - } - public boolean invokeItem(MenuItemImpl item) { return mMenu.performItemAction(item, 0); } diff --git a/core/java/com/android/internal/view/menu/ListMenuItemView.java b/core/java/com/android/internal/view/menu/ListMenuItemView.java index a1e16d4..df579c6 100644 --- a/core/java/com/android/internal/view/menu/ListMenuItemView.java +++ b/core/java/com/android/internal/view/menu/ListMenuItemView.java @@ -34,6 +34,7 @@ import android.widget.TextView; * The item view for each item in the ListView-based MenuViews. */ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView { + private static final String TAG = "ListMenuItemView"; private MenuItemImpl mItemData; private ImageView mIconView; @@ -121,27 +122,25 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView } public void setCheckable(boolean checkable) { - if (!checkable && mRadioButton == null && mCheckBox == null) { return; } - if (mRadioButton == null) { - insertRadioButton(); - } - if (mCheckBox == null) { - insertCheckBox(); - } - // Depending on whether its exclusive check or not, the checkbox or // radio button will be the one in use (and the other will be otherCompoundButton) final CompoundButton compoundButton; final CompoundButton otherCompoundButton; if (mItemData.isExclusiveCheckable()) { + if (mRadioButton == null) { + insertRadioButton(); + } compoundButton = mRadioButton; otherCompoundButton = mCheckBox; } else { + if (mCheckBox == null) { + insertCheckBox(); + } compoundButton = mCheckBox; otherCompoundButton = mRadioButton; } @@ -155,12 +154,12 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView } // Make sure the other compound button isn't visible - if (otherCompoundButton.getVisibility() != GONE) { + if (otherCompoundButton != null && otherCompoundButton.getVisibility() != GONE) { otherCompoundButton.setVisibility(GONE); } } else { - mCheckBox.setVisibility(GONE); - mRadioButton.setVisibility(GONE); + if (mCheckBox != null) mCheckBox.setVisibility(GONE); + if (mRadioButton != null) mRadioButton.setVisibility(GONE); } } diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp index da055fc..d1d3b78 100644 --- a/core/jni/android/graphics/Bitmap.cpp +++ b/core/jni/android/graphics/Bitmap.cpp @@ -579,6 +579,7 @@ static void Bitmap_copyPixelsFromBuffer(JNIEnv* env, jobject, android::AutoBufferPointer abp(env, jbuffer, JNI_FALSE);
// the java side has already checked that buffer is large enough
memcpy(dst, abp.pointer(), bitmap->getSize());
+ bitmap->notifyPixelsChanged();
}
}
diff --git a/core/jni/android_database_CursorWindow.cpp b/core/jni/android_database_CursorWindow.cpp index 722aeea..4a9fcf2 100644 --- a/core/jni/android_database_CursorWindow.cpp +++ b/core/jni/android_database_CursorWindow.cpp @@ -57,8 +57,7 @@ static void throwUnknownTypeException(JNIEnv * env, jint type) { jniThrowException(env, "java/lang/IllegalStateException", msg.string()); } -static jint nativeCreate(JNIEnv* env, jclass clazz, - jstring nameObj, jint cursorWindowSize, jboolean localOnly) { +static jint nativeCreate(JNIEnv* env, jclass clazz, jstring nameObj, jint cursorWindowSize) { String8 name; if (nameObj) { const char* nameStr = env->GetStringUTFChars(nameObj, NULL); @@ -70,7 +69,7 @@ static jint nativeCreate(JNIEnv* env, jclass clazz, } CursorWindow* window; - status_t status = CursorWindow::create(name, cursorWindowSize, localOnly, &window); + status_t status = CursorWindow::create(name, cursorWindowSize, &window); if (status || !window) { LOGE("Could not allocate CursorWindow '%s' of size %d due to error %d.", name.string(), cursorWindowSize, status); @@ -477,7 +476,7 @@ static jboolean nativePutNull(JNIEnv* env, jclass clazz, jint windowPtr, static JNINativeMethod sMethods[] = { /* name, signature, funcPtr */ - { "nativeCreate", "(Ljava/lang/String;IZ)I", + { "nativeCreate", "(Ljava/lang/String;I)I", (void*)nativeCreate }, { "nativeCreateFromParcel", "(Landroid/os/Parcel;)I", (void*)nativeCreateFromParcel }, diff --git a/core/res/res/drawable-hdpi/textfield_activated_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_activated_holo_dark.9.png Binary files differindex a32dc0d..56481ce 100644 --- a/core/res/res/drawable-hdpi/textfield_activated_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_activated_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_activated_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_activated_holo_light.9.png Binary files differindex a32dc0d..56481ce 100644 --- a/core/res/res/drawable-hdpi/textfield_activated_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_activated_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_default_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_default_holo_dark.9.png Binary files differindex 1f71467..d15f9a6 100644 --- a/core/res/res/drawable-hdpi/textfield_default_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_default_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_default_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_default_holo_light.9.png Binary files differindex 00fe8c7..073f91e 100644 --- a/core/res/res/drawable-hdpi/textfield_default_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_default_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_disabled_focused_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_disabled_focused_holo_dark.9.png Binary files differindex b988435..fe75315 100644 --- a/core/res/res/drawable-hdpi/textfield_disabled_focused_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_disabled_focused_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_disabled_focused_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_disabled_focused_holo_light.9.png Binary files differindex 0419273..d7f78ab 100644 --- a/core/res/res/drawable-hdpi/textfield_disabled_focused_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_disabled_focused_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_disabled_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_disabled_holo_dark.9.png Binary files differindex b26accb..769bc0a 100644 --- a/core/res/res/drawable-hdpi/textfield_disabled_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_disabled_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_disabled_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_disabled_holo_light.9.png Binary files differindex 1eb5e3a..312a0f4 100644 --- a/core/res/res/drawable-hdpi/textfield_disabled_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_disabled_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_multiline_activated_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_multiline_activated_holo_dark.9.png Binary files differindex a32dc0d..56481ce 100644 --- a/core/res/res/drawable-hdpi/textfield_multiline_activated_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_multiline_activated_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_multiline_activated_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_multiline_activated_holo_light.9.png Binary files differindex a32dc0d..56481ce 100644 --- a/core/res/res/drawable-hdpi/textfield_multiline_activated_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_multiline_activated_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_multiline_default_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_multiline_default_holo_dark.9.png Binary files differindex 1f71467..e27b409 100644 --- a/core/res/res/drawable-hdpi/textfield_multiline_default_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_multiline_default_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_multiline_default_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_multiline_default_holo_light.9.png Binary files differindex 00fe8c7..073f91e 100644 --- a/core/res/res/drawable-hdpi/textfield_multiline_default_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_multiline_default_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_multiline_disabled_focused_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_multiline_disabled_focused_holo_dark.9.png Binary files differindex b988435..f33763b 100644 --- a/core/res/res/drawable-hdpi/textfield_multiline_disabled_focused_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_multiline_disabled_focused_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_multiline_disabled_focused_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_multiline_disabled_focused_holo_light.9.png Binary files differindex 0419273..d7f78ab 100644 --- a/core/res/res/drawable-hdpi/textfield_multiline_disabled_focused_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_multiline_disabled_focused_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_multiline_disabled_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_multiline_disabled_holo_dark.9.png Binary files differindex b26accb..2e50f72 100644 --- a/core/res/res/drawable-hdpi/textfield_multiline_disabled_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_multiline_disabled_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_multiline_disabled_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_multiline_disabled_holo_light.9.png Binary files differindex 1eb5e3a..312a0f4 100644 --- a/core/res/res/drawable-hdpi/textfield_multiline_disabled_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_multiline_disabled_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_multiline_focused_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_multiline_focused_holo_dark.9.png Binary files differindex 03a81d9..6784032 100644 --- a/core/res/res/drawable-hdpi/textfield_multiline_focused_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_multiline_focused_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_multiline_focused_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_multiline_focused_holo_light.9.png Binary files differindex 03a81d9..74746cb 100644 --- a/core/res/res/drawable-hdpi/textfield_multiline_focused_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_multiline_focused_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_search_default_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_search_default_holo_dark.9.png Binary files differindex 3cbafb9..70c0e73 100644 --- a/core/res/res/drawable-hdpi/textfield_search_default_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_search_default_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_search_default_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_search_default_holo_light.9.png Binary files differindex 7b01984..36e71d8 100644 --- a/core/res/res/drawable-hdpi/textfield_search_default_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_search_default_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_search_right_default_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_search_right_default_holo_dark.9.png Binary files differindex 2b6340ac..4be4af5 100644 --- a/core/res/res/drawable-hdpi/textfield_search_right_default_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_search_right_default_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_search_right_default_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_search_right_default_holo_light.9.png Binary files differindex 49c8c05..e72193f 100644 --- a/core/res/res/drawable-hdpi/textfield_search_right_default_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_search_right_default_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_search_right_selected_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_search_right_selected_holo_dark.9.png Binary files differindex df1db0e..8f20b9d 100644 --- a/core/res/res/drawable-hdpi/textfield_search_right_selected_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_search_right_selected_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_search_right_selected_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_search_right_selected_holo_light.9.png Binary files differindex fbc46d0..04f657e 100644 --- a/core/res/res/drawable-hdpi/textfield_search_right_selected_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_search_right_selected_holo_light.9.png diff --git a/core/res/res/drawable-hdpi/textfield_search_selected_holo_dark.9.png b/core/res/res/drawable-hdpi/textfield_search_selected_holo_dark.9.png Binary files differindex 87e31e1..99309ef 100644 --- a/core/res/res/drawable-hdpi/textfield_search_selected_holo_dark.9.png +++ b/core/res/res/drawable-hdpi/textfield_search_selected_holo_dark.9.png diff --git a/core/res/res/drawable-hdpi/textfield_search_selected_holo_light.9.png b/core/res/res/drawable-hdpi/textfield_search_selected_holo_light.9.png Binary files differindex 080fc78..9bde7fb 100644 --- a/core/res/res/drawable-hdpi/textfield_search_selected_holo_light.9.png +++ b/core/res/res/drawable-hdpi/textfield_search_selected_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_activated_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_activated_holo_dark.9.png Binary files differindex c97cff4..b69c3f0 100644 --- a/core/res/res/drawable-mdpi/textfield_activated_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_activated_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_activated_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_activated_holo_light.9.png Binary files differindex c97cff4..b69c3f0 100644 --- a/core/res/res/drawable-mdpi/textfield_activated_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_activated_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_default_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_default_holo_dark.9.png Binary files differindex bf7df17..6b4bba0 100644 --- a/core/res/res/drawable-mdpi/textfield_default_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_default_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_default_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_default_holo_light.9.png Binary files differindex 6aa64c6..3d8898e 100644 --- a/core/res/res/drawable-mdpi/textfield_default_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_default_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_disabled_focused_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_disabled_focused_holo_dark.9.png Binary files differindex c5f098c..e922f71 100644 --- a/core/res/res/drawable-mdpi/textfield_disabled_focused_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_disabled_focused_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_disabled_focused_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_disabled_focused_holo_light.9.png Binary files differindex 8a63152..3b92894 100644 --- a/core/res/res/drawable-mdpi/textfield_disabled_focused_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_disabled_focused_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_disabled_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_disabled_holo_dark.9.png Binary files differindex 7f15e1e..7e44919 100644 --- a/core/res/res/drawable-mdpi/textfield_disabled_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_disabled_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_disabled_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_disabled_holo_light.9.png Binary files differindex 8bdbb2e..09b5616 100644 --- a/core/res/res/drawable-mdpi/textfield_disabled_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_disabled_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_multiline_activated_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_multiline_activated_holo_dark.9.png Binary files differindex c97cff4..b69c3f0 100644 --- a/core/res/res/drawable-mdpi/textfield_multiline_activated_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_multiline_activated_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_multiline_activated_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_multiline_activated_holo_light.9.png Binary files differindex c97cff4..b69c3f0 100644 --- a/core/res/res/drawable-mdpi/textfield_multiline_activated_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_multiline_activated_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_multiline_default_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_multiline_default_holo_dark.9.png Binary files differindex bf7df17..6b4bba0 100644 --- a/core/res/res/drawable-mdpi/textfield_multiline_default_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_multiline_default_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_multiline_default_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_multiline_default_holo_light.9.png Binary files differindex 6aa64c6..3d8898e 100644 --- a/core/res/res/drawable-mdpi/textfield_multiline_default_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_multiline_default_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_multiline_disabled_focused_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_multiline_disabled_focused_holo_dark.9.png Binary files differindex c5f098c..e922f71 100644 --- a/core/res/res/drawable-mdpi/textfield_multiline_disabled_focused_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_multiline_disabled_focused_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_multiline_disabled_focused_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_multiline_disabled_focused_holo_light.9.png Binary files differindex 8a63152..3b92894 100644 --- a/core/res/res/drawable-mdpi/textfield_multiline_disabled_focused_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_multiline_disabled_focused_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_multiline_disabled_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_multiline_disabled_holo_dark.9.png Binary files differindex 7f15e1e..7e44919 100644 --- a/core/res/res/drawable-mdpi/textfield_multiline_disabled_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_multiline_disabled_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_multiline_disabled_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_multiline_disabled_holo_light.9.png Binary files differindex 8bdbb2e..09b5616 100644 --- a/core/res/res/drawable-mdpi/textfield_multiline_disabled_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_multiline_disabled_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_multiline_focused_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_multiline_focused_holo_dark.9.png Binary files differindex efbaef8..2a78e8c 100644 --- a/core/res/res/drawable-mdpi/textfield_multiline_focused_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_multiline_focused_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_multiline_focused_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_multiline_focused_holo_light.9.png Binary files differindex efbaef8..632d9fc 100644 --- a/core/res/res/drawable-mdpi/textfield_multiline_focused_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_multiline_focused_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_search_default_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_search_default_holo_dark.9.png Binary files differindex 039af2f..081657e 100644 --- a/core/res/res/drawable-mdpi/textfield_search_default_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_search_default_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_search_default_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_search_default_holo_light.9.png Binary files differindex eb70db6..3f312b4 100644 --- a/core/res/res/drawable-mdpi/textfield_search_default_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_search_default_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_search_right_default_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_search_right_default_holo_dark.9.png Binary files differindex 9b45bb7..b086fae 100644 --- a/core/res/res/drawable-mdpi/textfield_search_right_default_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_search_right_default_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_search_right_default_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_search_right_default_holo_light.9.png Binary files differindex 67b96e2..73c336a 100644 --- a/core/res/res/drawable-mdpi/textfield_search_right_default_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_search_right_default_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_search_right_selected_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_search_right_selected_holo_dark.9.png Binary files differindex b09f9dc..726e0ff 100644 --- a/core/res/res/drawable-mdpi/textfield_search_right_selected_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_search_right_selected_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_search_right_selected_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_search_right_selected_holo_light.9.png Binary files differindex 821ad91..726e0ff 100644 --- a/core/res/res/drawable-mdpi/textfield_search_right_selected_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_search_right_selected_holo_light.9.png diff --git a/core/res/res/drawable-mdpi/textfield_search_selected_holo_dark.9.png b/core/res/res/drawable-mdpi/textfield_search_selected_holo_dark.9.png Binary files differindex c3a7a2e..1767c16 100644 --- a/core/res/res/drawable-mdpi/textfield_search_selected_holo_dark.9.png +++ b/core/res/res/drawable-mdpi/textfield_search_selected_holo_dark.9.png diff --git a/core/res/res/drawable-mdpi/textfield_search_selected_holo_light.9.png b/core/res/res/drawable-mdpi/textfield_search_selected_holo_light.9.png Binary files differindex e769cb5..1767c16 100644 --- a/core/res/res/drawable-mdpi/textfield_search_selected_holo_light.9.png +++ b/core/res/res/drawable-mdpi/textfield_search_selected_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_activated_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_activated_holo_dark.9.png Binary files differindex 4c4e02c..b3f8cd6 100644 --- a/core/res/res/drawable-xhdpi/textfield_activated_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_activated_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_activated_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_activated_holo_light.9.png Binary files differindex 4c4e02c..b3f8cd6 100644 --- a/core/res/res/drawable-xhdpi/textfield_activated_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_activated_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_default_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_default_holo_dark.9.png Binary files differindex 86221f0..b5c5907 100644 --- a/core/res/res/drawable-xhdpi/textfield_default_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_default_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_default_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_default_holo_light.9.png Binary files differindex a604537..30052e9 100644 --- a/core/res/res/drawable-xhdpi/textfield_default_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_default_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_disabled_focused_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_disabled_focused_holo_dark.9.png Binary files differindex cf1b79f..16be839 100644 --- a/core/res/res/drawable-xhdpi/textfield_disabled_focused_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_disabled_focused_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_disabled_focused_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_disabled_focused_holo_light.9.png Binary files differindex d1ecc73..ddd0559 100644 --- a/core/res/res/drawable-xhdpi/textfield_disabled_focused_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_disabled_focused_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_disabled_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_disabled_holo_dark.9.png Binary files differindex e97c5d7..3d143b9 100644 --- a/core/res/res/drawable-xhdpi/textfield_disabled_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_disabled_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_disabled_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_disabled_holo_light.9.png Binary files differindex 5c52dd5..dfb2185 100644 --- a/core/res/res/drawable-xhdpi/textfield_disabled_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_disabled_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_multiline_activated_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_multiline_activated_holo_dark.9.png Binary files differindex 4c4e02c..b3f8cd6 100644 --- a/core/res/res/drawable-xhdpi/textfield_multiline_activated_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_multiline_activated_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_multiline_activated_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_multiline_activated_holo_light.9.png Binary files differindex 4c4e02c..b3f8cd6 100644 --- a/core/res/res/drawable-xhdpi/textfield_multiline_activated_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_multiline_activated_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_multiline_default_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_multiline_default_holo_dark.9.png Binary files differindex 86221f0..b5c5907 100644 --- a/core/res/res/drawable-xhdpi/textfield_multiline_default_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_multiline_default_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_multiline_default_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_multiline_default_holo_light.9.png Binary files differindex a604537..30052e9 100644 --- a/core/res/res/drawable-xhdpi/textfield_multiline_default_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_multiline_default_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_multiline_disabled_focused_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_multiline_disabled_focused_holo_dark.9.png Binary files differindex cf1b79f..16be839 100644 --- a/core/res/res/drawable-xhdpi/textfield_multiline_disabled_focused_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_multiline_disabled_focused_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_multiline_disabled_focused_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_multiline_disabled_focused_holo_light.9.png Binary files differindex d1ecc73..ddd0559 100644 --- a/core/res/res/drawable-xhdpi/textfield_multiline_disabled_focused_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_multiline_disabled_focused_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_multiline_disabled_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_multiline_disabled_holo_dark.9.png Binary files differindex e97c5d7..3d143b9 100644 --- a/core/res/res/drawable-xhdpi/textfield_multiline_disabled_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_multiline_disabled_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_multiline_disabled_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_multiline_disabled_holo_light.9.png Binary files differindex 5c52dd5..dfb2185 100644 --- a/core/res/res/drawable-xhdpi/textfield_multiline_disabled_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_multiline_disabled_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_multiline_focused_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_multiline_focused_holo_dark.9.png Binary files differindex 3ed03f3..7f0dc65 100644 --- a/core/res/res/drawable-xhdpi/textfield_multiline_focused_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_multiline_focused_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_multiline_focused_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_multiline_focused_holo_light.9.png Binary files differindex 3ed03f3..7f0dc65 100644 --- a/core/res/res/drawable-xhdpi/textfield_multiline_focused_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_multiline_focused_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_search_default_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_search_default_holo_dark.9.png Binary files differindex 59a9a1b..8fdbbf3 100644 --- a/core/res/res/drawable-xhdpi/textfield_search_default_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_search_default_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_search_default_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_search_default_holo_light.9.png Binary files differindex 5d472c8..4e9ae43 100644 --- a/core/res/res/drawable-xhdpi/textfield_search_default_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_search_default_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_search_right_default_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_search_right_default_holo_dark.9.png Binary files differindex 3dbef60..98f4871 100644 --- a/core/res/res/drawable-xhdpi/textfield_search_right_default_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_search_right_default_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_search_right_default_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_search_right_default_holo_light.9.png Binary files differindex 197c2bc..733373e 100644 --- a/core/res/res/drawable-xhdpi/textfield_search_right_default_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_search_right_default_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_search_right_selected_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_search_right_selected_holo_dark.9.png Binary files differindex a765e5b..0c6bb03 100644 --- a/core/res/res/drawable-xhdpi/textfield_search_right_selected_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_search_right_selected_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_search_right_selected_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_search_right_selected_holo_light.9.png Binary files differindex 30a3237..0c6bb03 100644 --- a/core/res/res/drawable-xhdpi/textfield_search_right_selected_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_search_right_selected_holo_light.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_search_selected_holo_dark.9.png b/core/res/res/drawable-xhdpi/textfield_search_selected_holo_dark.9.png Binary files differindex 3c8ed1e..e5bfd8a 100644 --- a/core/res/res/drawable-xhdpi/textfield_search_selected_holo_dark.9.png +++ b/core/res/res/drawable-xhdpi/textfield_search_selected_holo_dark.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_search_selected_holo_light.9.png b/core/res/res/drawable-xhdpi/textfield_search_selected_holo_light.9.png Binary files differindex f69ebc5..1743da6 100644 --- a/core/res/res/drawable-xhdpi/textfield_search_selected_holo_light.9.png +++ b/core/res/res/drawable-xhdpi/textfield_search_selected_holo_light.9.png diff --git a/core/res/res/drawable/edit_text_holo_dark.xml b/core/res/res/drawable/edit_text_holo_dark.xml index d00747f..2bfe333 100644 --- a/core/res/res/drawable/edit_text_holo_dark.xml +++ b/core/res/res/drawable/edit_text_holo_dark.xml @@ -27,7 +27,7 @@ <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/textfield_default_holo_dark" /> <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/textfield_disabled_holo_dark" /> <item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/textfield_activated_holo_dark" /> - <iten android:state_enabled="true" android:state_activated="true" android:drawable="@drawable/textfield_focused_holo_dark" /> + <item android:state_enabled="true" android:state_activated="true" android:drawable="@drawable/textfield_focused_holo_dark" /> <item android:state_enabled="true" android:drawable="@drawable/textfield_default_holo_dark" /> <item android:state_focused="true" android:drawable="@drawable/textfield_disabled_focused_holo_dark" /> <item android:drawable="@drawable/textfield_disabled_holo_dark" /> diff --git a/core/tests/coretests/src/android/database/CursorWindowTest.java b/core/tests/coretests/src/android/database/CursorWindowTest.java index 07e75cb..8c8081c 100644 --- a/core/tests/coretests/src/android/database/CursorWindowTest.java +++ b/core/tests/coretests/src/android/database/CursorWindowTest.java @@ -16,17 +16,11 @@ package android.database; -import android.database.AbstractCursor; import android.test.suitebuilder.annotation.SmallTest; -import com.android.common.ArrayListCursor; import android.database.CursorWindow; import android.test.PerformanceTestCase; -import com.google.android.collect.Lists; - -import java.util.ArrayList; import java.util.Arrays; -import java.util.Random; import junit.framework.TestCase; @@ -41,48 +35,6 @@ public class CursorWindowTest extends TestCase implements PerformanceTestCase { } @SmallTest - public void testWriteCursorToWindow() throws Exception { - // create cursor - String[] colNames = new String[]{"name", "number", "profit"}; - int colsize = colNames.length; - ArrayList<ArrayList> list = createTestList(10, colsize); - AbstractCursor cursor = new ArrayListCursor(colNames, (ArrayList<ArrayList>) list); - - // fill window - CursorWindow window = new CursorWindow(false); - cursor.fillWindow(0, window); - - // read from cursor window - for (int i = 0; i < list.size(); i++) { - ArrayList<Integer> col = list.get(i); - for (int j = 0; j < colsize; j++) { - String s = window.getString(i, j); - int r2 = col.get(j); - int r1 = Integer.parseInt(s); - assertEquals(r2, r1); - } - } - - // test cursor window handle startpos != 0 - window.clear(); - cursor.fillWindow(1, window); - // read from cursor from window - for (int i = 1; i < list.size(); i++) { - ArrayList<Integer> col = list.get(i); - for (int j = 0; j < colsize; j++) { - String s = window.getString(i, j); - int r2 = col.get(j); - int r1 = Integer.parseInt(s); - assertEquals(r2, r1); - } - } - - // Clear the window and make sure it's empty - window.clear(); - assertEquals(0, window.getNumRows()); - } - - @SmallTest public void testValuesLocalWindow() { doTestValues(new CursorWindow(true)); } @@ -124,50 +76,4 @@ public class CursorWindowTest extends TestCase implements PerformanceTestCase { assertTrue(window.putBlob(blob, 0, 6)); assertTrue(Arrays.equals(blob, window.getBlob(0, 6))); } - - @SmallTest - public void testNull() { - CursorWindow window = getOneByOneWindow(); - - // Put in a null value and read it back as various types - assertTrue(window.putNull(0, 0)); - assertNull(window.getString(0, 0)); - assertEquals(0, window.getLong(0, 0)); - assertEquals(0.0, window.getDouble(0, 0)); - assertNull(window.getBlob(0, 0)); - } - - @SmallTest - public void testEmptyString() { - CursorWindow window = getOneByOneWindow(); - - // put size 0 string and read it back as various types - assertTrue(window.putString("", 0, 0)); - assertEquals("", window.getString(0, 0)); - assertEquals(0, window.getLong(0, 0)); - assertEquals(0.0, window.getDouble(0, 0)); - } - - private CursorWindow getOneByOneWindow() { - CursorWindow window = new CursorWindow(false); - assertTrue(window.setNumColumns(1)); - assertTrue(window.allocRow()); - return window; - } - - private static ArrayList<ArrayList> createTestList(int rows, int cols) { - ArrayList<ArrayList> list = Lists.newArrayList(); - Random generator = new Random(); - - for (int i = 0; i < rows; i++) { - ArrayList<Integer> col = Lists.newArrayList(); - list.add(col); - for (int j = 0; j < cols; j++) { - // generate random number - Integer r = generator.nextInt(); - col.add(r); - } - } - return list; - } } diff --git a/core/tests/coretests/src/android/webkit/AccessibilityInjectorTest.java b/core/tests/coretests/src/android/webkit/AccessibilityInjectorTest.java index 2ed7c52..417a85f 100644 --- a/core/tests/coretests/src/android/webkit/AccessibilityInjectorTest.java +++ b/core/tests/coretests/src/android/webkit/AccessibilityInjectorTest.java @@ -1677,7 +1677,7 @@ public class AccessibilityInjectorTest } }); } - mWebView.loadData(html, "text/html", "utf-8"); + mWebView.loadData(html, "text/html", null); } }); synchronized (sTestLock) { diff --git a/core/tests/coretests/src/android/widget/SimpleCursorAdapterTest.java b/core/tests/coretests/src/android/widget/SimpleCursorAdapterTest.java index 7726f02..62466f1 100644 --- a/core/tests/coretests/src/android/widget/SimpleCursorAdapterTest.java +++ b/core/tests/coretests/src/android/widget/SimpleCursorAdapterTest.java @@ -16,11 +16,11 @@ package android.widget; -import com.android.common.ArrayListCursor; import com.google.android.collect.Lists; import android.content.Context; import android.database.Cursor; +import android.database.MatrixCursor; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; @@ -52,14 +52,14 @@ public class SimpleCursorAdapterTest extends AndroidTestCase { super.setUp(); // all the pieces needed for the various tests - mFrom = new String[]{"Column1", "Column2"}; + mFrom = new String[]{"Column1", "Column2", "_id"}; mTo = new int[]{com.android.internal.R.id.text1, com.android.internal.R.id.text2}; mLayout = com.android.internal.R.layout.simple_list_item_2; mContext = getContext(); // raw data for building a basic test cursor mData2x2 = createTestList(2, 2); - mCursor2x2 = new ArrayListCursor(mFrom, mData2x2); + mCursor2x2 = createCursor(mFrom, mData2x2); } /** @@ -77,6 +77,7 @@ public class SimpleCursorAdapterTest extends AndroidTestCase { Integer r = generator.nextInt(); col.add(r); } + col.add(i); } return list; } @@ -115,7 +116,7 @@ public class SimpleCursorAdapterTest extends AndroidTestCase { // now put in a different cursor (5 rows) ArrayList<ArrayList> data2 = createTestList(5, 2); - Cursor c2 = new ArrayListCursor(mFrom, data2); + Cursor c2 = createCursor(mFrom, data2); ca.changeCursor(c2); // Now see if we can pull 5 rows from the adapter @@ -155,8 +156,8 @@ public class SimpleCursorAdapterTest extends AndroidTestCase { assertEquals(columns[1], 1); // Now make a new cursor with similar data but rearrange the columns - String[] swappedFrom = new String[]{"Column2", "Column1"}; - Cursor c2 = new ArrayListCursor(swappedFrom, mData2x2); + String[] swappedFrom = new String[]{"Column2", "Column1", "_id"}; + Cursor c2 = createCursor(swappedFrom, mData2x2); ca.changeCursor(c2); assertEquals(2, ca.getCount()); @@ -235,7 +236,15 @@ public class SimpleCursorAdapterTest extends AndroidTestCase { assertEquals(1, viewIds.length); assertEquals(com.android.internal.R.id.text2, viewIds[0]); } - + + private static MatrixCursor createCursor(String[] columns, ArrayList<ArrayList> list) { + MatrixCursor cursor = new MatrixCursor(columns, list.size()); + for (ArrayList row : list) { + cursor.addRow(row); + } + return cursor; + } + /** * This is simply a way to sneak a look at the protected mFrom() array. A more API- * friendly way to do this would be to mock out a View and a ViewBinder and exercise diff --git a/core/tests/coretests/src/android/widget/focus/ListWithMailMessages.java b/core/tests/coretests/src/android/widget/focus/ListWithMailMessages.java index 5de4ad5..5c891f9 100644 --- a/core/tests/coretests/src/android/widget/focus/ListWithMailMessages.java +++ b/core/tests/coretests/src/android/widget/focus/ListWithMailMessages.java @@ -120,7 +120,6 @@ public class ListWithMailMessages extends ListActivity { } final String mimeType = "text/html"; - final String encoding = "utf-8"; @Override @@ -137,7 +136,7 @@ public class ListWithMailMessages extends ListActivity { subject.setText(message.getSubject()); WebView body = (WebView) messageUi.findViewById(R.id.body); - body.loadData(message.getBody(), mimeType, encoding); + body.loadData(message.getBody(), mimeType, null); // body.setText(message.getBody()); body.setFocusable(message.isFocusable()); diff --git a/data/keyboards/keyboards.mk b/data/keyboards/keyboards.mk index 564f41c..c964961 100644 --- a/data/keyboards/keyboards.mk +++ b/data/keyboards/keyboards.mk @@ -24,6 +24,3 @@ PRODUCT_COPY_FILES += $(foreach file,$(keycharmaps),\ PRODUCT_COPY_FILES += $(foreach file,$(keyconfigs),\ frameworks/base/data/keyboards/$(file):system/usr/idc/$(file)) - -PRODUCT_PACKAGES := $(keylayouts) $(keycharmaps) $(keyconfigs) - diff --git a/docs/html/guide/topics/fundamentals/fragments.jd b/docs/html/guide/topics/fundamentals/fragments.jd index 8f61945..d34a798 100644 --- a/docs/html/guide/topics/fundamentals/fragments.jd +++ b/docs/html/guide/topics/fundamentals/fragments.jd @@ -117,7 +117,7 @@ launch separate activities that use different fragments.</p> two fragments in <em>Activity A</em>, when running on an extra large screen (a tablet, for example). However, on a normal-sized screen (a phone, for example), -there's not be enough room for both fragments, so <em>Activity A</em> includes only the fragment for +there would not be enough room for both fragments, so <em>Activity A</em> includes only the fragment for the list of articles, and when the user selects an article, it starts <em>Activity B</em>, which includes the fragment to read the article. Thus, the application supports both design patterns suggested in figure 1.</p> diff --git a/include/binder/CursorWindow.h b/include/binder/CursorWindow.h index 5d490ed..f0284de 100644 --- a/include/binder/CursorWindow.h +++ b/include/binder/CursorWindow.h @@ -80,8 +80,7 @@ public: ~CursorWindow(); - static status_t create(const String8& name, size_t size, bool localOnly, - CursorWindow** outCursorWindow); + static status_t create(const String8& name, size_t size, CursorWindow** outCursorWindow); static status_t createFromParcel(Parcel* parcel, CursorWindow** outCursorWindow); status_t writeToParcel(Parcel* parcel); diff --git a/include/media/stagefright/MediaDefs.h b/include/media/stagefright/MediaDefs.h index 3e48459..2eb259e 100644 --- a/include/media/stagefright/MediaDefs.h +++ b/include/media/stagefright/MediaDefs.h @@ -31,7 +31,9 @@ extern const char *MEDIA_MIMETYPE_VIDEO_RAW; extern const char *MEDIA_MIMETYPE_AUDIO_AMR_NB; extern const char *MEDIA_MIMETYPE_AUDIO_AMR_WB; -extern const char *MEDIA_MIMETYPE_AUDIO_MPEG; +extern const char *MEDIA_MIMETYPE_AUDIO_MPEG; // layer III +extern const char *MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_I; +extern const char *MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II; extern const char *MEDIA_MIMETYPE_AUDIO_AAC; extern const char *MEDIA_MIMETYPE_AUDIO_QCELP; extern const char *MEDIA_MIMETYPE_AUDIO_VORBIS; @@ -47,6 +49,7 @@ extern const char *MEDIA_MIMETYPE_CONTAINER_OGG; extern const char *MEDIA_MIMETYPE_CONTAINER_MATROSKA; extern const char *MEDIA_MIMETYPE_CONTAINER_MPEG2TS; extern const char *MEDIA_MIMETYPE_CONTAINER_AVI; +extern const char *MEDIA_MIMETYPE_CONTAINER_MPEG2PS; extern const char *MEDIA_MIMETYPE_CONTAINER_WVM; diff --git a/include/surfaceflinger/ISurfaceComposer.h b/include/surfaceflinger/ISurfaceComposer.h index e7a33f1..5eb09c7 100644 --- a/include/surfaceflinger/ISurfaceComposer.h +++ b/include/surfaceflinger/ISurfaceComposer.h @@ -84,7 +84,11 @@ public: eOrientationUnchanged = 4, eOrientationSwapMask = 0x01 }; - + + enum { + eSynchronous = 0x01, + }; + enum { eElectronBeamAnimationOn = 0x01, eElectronBeamAnimationOff = 0x10 @@ -104,7 +108,7 @@ public: /* open/close transactions. requires ACCESS_SURFACE_FLINGER permission */ virtual void setTransactionState(const Vector<ComposerState>& state, - int orientation) = 0; + int orientation, uint32_t flags) = 0; /* signal that we're done booting. * Requires ACCESS_SURFACE_FLINGER permission @@ -143,8 +147,6 @@ public: GET_CBLK, SET_TRANSACTION_STATE, SET_ORIENTATION, - FREEZE_DISPLAY, - UNFREEZE_DISPLAY, CAPTURE_SCREEN, TURN_ELECTRON_BEAM_OFF, TURN_ELECTRON_BEAM_ON, diff --git a/include/surfaceflinger/SurfaceComposerClient.h b/include/surfaceflinger/SurfaceComposerClient.h index 14e5b23..8226abe 100644 --- a/include/surfaceflinger/SurfaceComposerClient.h +++ b/include/surfaceflinger/SurfaceComposerClient.h @@ -112,7 +112,7 @@ public: static void openGlobalTransaction(); //! Close a composer transaction on all active SurfaceComposerClients. - static void closeGlobalTransaction(); + static void closeGlobalTransaction(bool synchronous = false); //! Freeze the specified display but not transactions. static status_t freezeDisplay(DisplayID dpy, uint32_t flags = 0); diff --git a/include/utils/Singleton.h b/include/utils/Singleton.h index e1ee8eb..a42ce21 100644 --- a/include/utils/Singleton.h +++ b/include/utils/Singleton.h @@ -20,12 +20,13 @@ #include <stdint.h> #include <sys/types.h> #include <utils/threads.h> +#include <cutils/compiler.h> namespace android { // --------------------------------------------------------------------------- template <typename TYPE> -class Singleton +class ANDROID_API Singleton { public: static TYPE& getInstance() { diff --git a/libs/binder/CursorWindow.cpp b/libs/binder/CursorWindow.cpp index 1b85a71..bf8d7a6 100644 --- a/libs/binder/CursorWindow.cpp +++ b/libs/binder/CursorWindow.cpp @@ -40,11 +40,9 @@ CursorWindow::~CursorWindow() { ::close(mAshmemFd); } -status_t CursorWindow::create(const String8& name, size_t size, bool localOnly, - CursorWindow** outCursorWindow) { +status_t CursorWindow::create(const String8& name, size_t size, CursorWindow** outCursorWindow) { String8 ashmemName("CursorWindow: "); ashmemName.append(name); - ashmemName.append(localOnly ? " (local)" : " (remote)"); status_t result; int ashmemFd = ashmem_create_region(ashmemName.string(), size); diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp index eb90147..86bc62a 100644 --- a/libs/gui/ISurfaceComposer.cpp +++ b/libs/gui/ISurfaceComposer.cpp @@ -79,7 +79,7 @@ public: } virtual void setTransactionState(const Vector<ComposerState>& state, - int orientation) + int orientation, uint32_t flags) { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); @@ -90,6 +90,7 @@ public: b->write(data); } data.writeInt32(orientation); + data.writeInt32(flags); remote()->transact(BnSurfaceComposer::SET_TRANSACTION_STATE, data, &reply); } @@ -204,7 +205,8 @@ status_t BnSurfaceComposer::onTransact( state.add(s); } int orientation = data.readInt32(); - setTransactionState(state, orientation); + uint32_t flags = data.readInt32(); + setTransactionState(state, orientation, flags); } break; case BOOT_FINISHED: { CHECK_INTERFACE(ISurfaceComposer, data, reply); diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index 5f3d608..4ad6c22 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -92,11 +92,14 @@ class Composer : public Singleton<Composer> mutable Mutex mLock; SortedVector<ComposerState> mStates; int mOrientation; + uint32_t mForceSynchronous; Composer() : Singleton<Composer>(), - mOrientation(ISurfaceComposer::eOrientationUnchanged) { } + mOrientation(ISurfaceComposer::eOrientationUnchanged), + mForceSynchronous(0) + { } - void closeGlobalTransactionImpl(); + void closeGlobalTransactionImpl(bool synchronous); layer_state_t* getLayerStateLocked( const sp<SurfaceComposerClient>& client, SurfaceID id); @@ -123,8 +126,8 @@ public: uint32_t tint); status_t setOrientation(int orientation); - static void closeGlobalTransaction() { - Composer::getInstance().closeGlobalTransactionImpl(); + static void closeGlobalTransaction(bool synchronous) { + Composer::getInstance().closeGlobalTransactionImpl(synchronous); } }; @@ -132,11 +135,12 @@ ANDROID_SINGLETON_STATIC_INSTANCE(Composer); // --------------------------------------------------------------------------- -void Composer::closeGlobalTransactionImpl() { +void Composer::closeGlobalTransactionImpl(bool synchronous) { sp<ISurfaceComposer> sm(getComposerService()); Vector<ComposerState> transaction; int orientation; + uint32_t flags = 0; { // scope for the lock Mutex::Autolock _l(mLock); @@ -145,9 +149,14 @@ void Composer::closeGlobalTransactionImpl() { orientation = mOrientation; mOrientation = ISurfaceComposer::eOrientationUnchanged; + + if (synchronous || mForceSynchronous) { + flags |= ISurfaceComposer::eSynchronous; + } + mForceSynchronous = false; } - sm->setTransactionState(transaction, orientation); + sm->setTransactionState(transaction, orientation, flags); } layer_state_t* Composer::getLayerStateLocked( @@ -188,6 +197,10 @@ status_t Composer::setSize(const sp<SurfaceComposerClient>& client, s->what |= ISurfaceComposer::eSizeChanged; s->w = w; s->h = h; + + // Resizing a surface makes the transaction synchronous. + mForceSynchronous = true; + return NO_ERROR; } @@ -270,6 +283,10 @@ status_t Composer::setFreezeTint(const sp<SurfaceComposerClient>& client, status_t Composer::setOrientation(int orientation) { Mutex::Autolock _l(mLock); mOrientation = orientation; + + // Changing the orientation makes the transaction synchronous. + mForceSynchronous = true; + return NO_ERROR; } @@ -375,8 +392,8 @@ void SurfaceComposerClient::openGlobalTransaction() { // Currently a no-op } -void SurfaceComposerClient::closeGlobalTransaction() { - Composer::closeGlobalTransaction(); +void SurfaceComposerClient::closeGlobalTransaction(bool synchronous) { + Composer::closeGlobalTransaction(synchronous); } // ---------------------------------------------------------------------------- diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk index a98e4cd..9bfc94c 100644 --- a/libs/hwui/Android.mk +++ b/libs/hwui/Android.mk @@ -39,6 +39,7 @@ ifeq ($(USE_OPENGL_RENDERER),true) external/skia/include/utils LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER + LOCAL_CFLAGS += -fvisibility=hidden LOCAL_MODULE_CLASS := SHARED_LIBRARIES LOCAL_SHARED_LIBRARIES := libcutils libutils libGLESv2 libskia libui LOCAL_MODULE := libhwui diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h index cdcbf21..9b0d7c6 100644 --- a/libs/hwui/Caches.h +++ b/libs/hwui/Caches.h @@ -23,6 +23,8 @@ #include <utils/Singleton.h> +#include <cutils/compiler.h> + #include "Extensions.h" #include "FontRenderer.h" #include "GammaFontRenderer.h" @@ -82,7 +84,7 @@ struct CacheLogger { // Caches /////////////////////////////////////////////////////////////////////////////// -class Caches: public Singleton<Caches> { +class ANDROID_API Caches: public Singleton<Caches> { Caches(); ~Caches(); diff --git a/libs/hwui/DisplayListLogBuffer.h b/libs/hwui/DisplayListLogBuffer.h index bf16f29..5d689bb 100644 --- a/libs/hwui/DisplayListLogBuffer.h +++ b/libs/hwui/DisplayListLogBuffer.h @@ -18,6 +18,7 @@ #define ANDROID_HWUI_DISPLAY_LIST_LOG_BUFFER_H #include <utils/Singleton.h> + #include <stdio.h> namespace android { diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp index cedf456..3372d1c 100644 --- a/libs/hwui/DisplayListRenderer.cpp +++ b/libs/hwui/DisplayListRenderer.cpp @@ -382,12 +382,13 @@ void DisplayList::output(OpenGLRenderer& renderer, uint32_t level) { xDivs = getInts(xDivsCount); yDivs = getInts(yDivsCount); colors = getUInts(numColors); - DISPLAY_LIST_LOGD("%s%s", (char*) indent, OP_NAMES[op]); - getFloat(); - getFloat(); - getFloat(); - getFloat(); - getPaint(); + float left = getFloat(); + float top = getFloat(); + float right = getFloat(); + float bottom = getFloat(); + SkPaint* paint = getPaint(); + LOGD("%s%s %.2f, %.2f, %.2f, %.2f", (char*) indent, OP_NAMES[op], + left, top, right, bottom); } break; case DrawColor: { diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h index 8cd7fea..ab475bf 100644 --- a/libs/hwui/DisplayListRenderer.h +++ b/libs/hwui/DisplayListRenderer.h @@ -26,6 +26,8 @@ #include <SkTDArray.h> #include <SkTSearch.h> +#include <cutils/compiler.h> + #include "DisplayListLogBuffer.h" #include "OpenGLRenderer.h" #include "utils/Functor.h" @@ -58,7 +60,7 @@ class DisplayListRenderer; class DisplayList { public: DisplayList(const DisplayListRenderer& recorder); - ~DisplayList(); + ANDROID_API ~DisplayList(); // IMPORTANT: Update the intialization of OP_NAMES in the .cpp file // when modifying this file @@ -107,13 +109,13 @@ public: void initFromDisplayListRenderer(const DisplayListRenderer& recorder, bool reusing = false); - size_t getSize(); + ANDROID_API size_t getSize(); bool replay(OpenGLRenderer& renderer, Rect& dirty, uint32_t level = 0); void output(OpenGLRenderer& renderer, uint32_t level = 0); - static void outputLogBuffer(int fd); + ANDROID_API static void outputLogBuffer(int fd); void setRenderable(bool renderable) { mIsRenderable = renderable; @@ -230,75 +232,76 @@ private: */ class DisplayListRenderer: public OpenGLRenderer { public: - DisplayListRenderer(); - ~DisplayListRenderer(); + ANDROID_API DisplayListRenderer(); + virtual ~DisplayListRenderer(); - DisplayList* getDisplayList(DisplayList* displayList); + ANDROID_API DisplayList* getDisplayList(DisplayList* displayList); - void setViewport(int width, int height); - void prepareDirty(float left, float top, float right, float bottom, bool opaque); - void finish(); + virtual void setViewport(int width, int height); + virtual void prepareDirty(float left, float top, float right, float bottom, bool opaque); + virtual void finish(); - bool callDrawGLFunction(Functor *functor, Rect& dirty); + virtual bool callDrawGLFunction(Functor *functor, Rect& dirty); - void interrupt(); - void resume(); + virtual void interrupt(); + virtual void resume(); - int save(int flags); - void restore(); - void restoreToCount(int saveCount); + virtual int save(int flags); + virtual void restore(); + virtual void restoreToCount(int saveCount); - int saveLayer(float left, float top, float right, float bottom, + virtual int saveLayer(float left, float top, float right, float bottom, SkPaint* p, int flags); - int saveLayerAlpha(float left, float top, float right, float bottom, + virtual int saveLayerAlpha(float left, float top, float right, float bottom, int alpha, int flags); - void translate(float dx, float dy); - void rotate(float degrees); - void scale(float sx, float sy); - void skew(float sx, float sy); + virtual void translate(float dx, float dy); + virtual void rotate(float degrees); + virtual void scale(float sx, float sy); + virtual void skew(float sx, float sy); - void setMatrix(SkMatrix* matrix); - void concatMatrix(SkMatrix* matrix); + virtual void setMatrix(SkMatrix* matrix); + virtual void concatMatrix(SkMatrix* matrix); - bool clipRect(float left, float top, float right, float bottom, SkRegion::Op op); + virtual bool clipRect(float left, float top, float right, float bottom, SkRegion::Op op); - bool drawDisplayList(DisplayList* displayList, uint32_t width, uint32_t height, + virtual bool drawDisplayList(DisplayList* displayList, uint32_t width, uint32_t height, Rect& dirty, uint32_t level = 0); - void drawLayer(Layer* layer, float x, float y, SkPaint* paint); - void drawBitmap(SkBitmap* bitmap, float left, float top, SkPaint* paint); - void drawBitmap(SkBitmap* bitmap, SkMatrix* matrix, SkPaint* paint); - void drawBitmap(SkBitmap* bitmap, float srcLeft, float srcTop, + virtual void drawLayer(Layer* layer, float x, float y, SkPaint* paint); + virtual void drawBitmap(SkBitmap* bitmap, float left, float top, SkPaint* paint); + virtual void drawBitmap(SkBitmap* bitmap, SkMatrix* matrix, SkPaint* paint); + virtual void drawBitmap(SkBitmap* bitmap, float srcLeft, float srcTop, float srcRight, float srcBottom, float dstLeft, float dstTop, float dstRight, float dstBottom, SkPaint* paint); - void drawBitmapMesh(SkBitmap* bitmap, int meshWidth, int meshHeight, + virtual void drawBitmapMesh(SkBitmap* bitmap, int meshWidth, int meshHeight, float* vertices, int* colors, SkPaint* paint); - void drawPatch(SkBitmap* bitmap, const int32_t* xDivs, const int32_t* yDivs, + virtual void drawPatch(SkBitmap* bitmap, const int32_t* xDivs, const int32_t* yDivs, const uint32_t* colors, uint32_t width, uint32_t height, int8_t numColors, float left, float top, float right, float bottom, SkPaint* paint); - void drawColor(int color, SkXfermode::Mode mode); - void drawRect(float left, float top, float right, float bottom, SkPaint* paint); - void drawRoundRect(float left, float top, float right, float bottom, + virtual void drawColor(int color, SkXfermode::Mode mode); + virtual void drawRect(float left, float top, float right, float bottom, SkPaint* paint); + virtual void drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, SkPaint* paint); - void drawCircle(float x, float y, float radius, SkPaint* paint); - void drawOval(float left, float top, float right, float bottom, SkPaint* paint); - void drawArc(float left, float top, float right, float bottom, + virtual void drawCircle(float x, float y, float radius, SkPaint* paint); + virtual void drawOval(float left, float top, float right, float bottom, SkPaint* paint); + virtual void drawArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle, bool useCenter, SkPaint* paint); - void drawPath(SkPath* path, SkPaint* paint); - void drawLines(float* points, int count, SkPaint* paint); - void drawPoints(float* points, int count, SkPaint* paint); - void drawText(const char* text, int bytesCount, int count, float x, float y, SkPaint* paint); + virtual void drawPath(SkPath* path, SkPaint* paint); + virtual void drawLines(float* points, int count, SkPaint* paint); + virtual void drawPoints(float* points, int count, SkPaint* paint); + virtual void drawText(const char* text, int bytesCount, int count, float x, float y, + SkPaint* paint); - void resetShader(); - void setupShader(SkiaShader* shader); + virtual void resetShader(); + virtual void setupShader(SkiaShader* shader); - void resetColorFilter(); - void setupColorFilter(SkiaColorFilter* filter); + virtual void resetColorFilter(); + virtual void setupColorFilter(SkiaColorFilter* filter); - void resetShadow(); - void setupShadow(float radius, float dx, float dy, int color); + virtual void resetShadow(); + virtual void setupShadow(float radius, float dx, float dy, int color); - void reset(); + ANDROID_API void reset(); const SkWriter32& writeStream() const { return mWriter; diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp index 349b9e3..e38b479 100644 --- a/libs/hwui/LayerRenderer.cpp +++ b/libs/hwui/LayerRenderer.cpp @@ -31,6 +31,12 @@ namespace uirenderer { // Rendering /////////////////////////////////////////////////////////////////////////////// +LayerRenderer::LayerRenderer(Layer* layer): mLayer(layer) { +} + +LayerRenderer::~LayerRenderer() { +} + void LayerRenderer::prepareDirty(float left, float top, float right, float bottom, bool opaque) { LAYER_RENDERER_LOGD("Rendering into layer, fbo = %d", mLayer->getFbo()); @@ -210,7 +216,8 @@ Layer* LayerRenderer::createLayer(uint32_t width, uint32_t height, bool isOpaque layer->allocateTexture(GL_RGBA, GL_UNSIGNED_BYTE); if (glGetError() != GL_NO_ERROR) { - LOGD("Could not allocate texture"); + LOGD("Could not allocate texture for layer (fbo=%d %dx%d)", + fbo, width, height); glBindFramebuffer(GL_FRAMEBUFFER, previousFbo); Caches::getInstance().fboCache.put(fbo); @@ -264,7 +271,7 @@ Layer* LayerRenderer::createTextureLayer(bool isOpaque) { layer->setFbo(0); layer->setAlpha(255, SkXfermode::kSrcOver_Mode); layer->layer.set(0.0f, 0.0f, 0.0f, 0.0f); - layer->texCoords.set(0.0f, 1.0f, 0.0f, 1.0f); + layer->texCoords.set(0.0f, 1.0f, 1.0f, 0.0f); layer->region.clear(); layer->setRenderTarget(GL_NONE); // see ::updateTextureLayer() @@ -400,6 +407,18 @@ bool LayerRenderer::copyLayer(Layer* layer, SkBitmap* bitmap) { renderer.setViewport(bitmap->width(), bitmap->height()); renderer.OpenGLRenderer::prepareDirty(0.0f, 0.0f, bitmap->width(), bitmap->height(), !layer->isBlend()); + + glDisable(GL_SCISSOR_TEST); + renderer.translate(0.0f, bitmap->height()); + renderer.scale(1.0f, -1.0f); + + mat4 texTransform(layer->getTexTransform()); + + mat4 invert; + invert.translate(0.0f, 1.0f, 0.0f); + invert.scale(1.0f, -1.0f, 1.0f); + layer->getTexTransform().multiply(invert); + if ((error = glGetError()) != GL_NO_ERROR) goto error; { @@ -413,6 +432,7 @@ bool LayerRenderer::copyLayer(Layer* layer, SkBitmap* bitmap) { if ((error = glGetError()) != GL_NO_ERROR) goto error; } + layer->getTexTransform().load(texTransform); status = true; } diff --git a/libs/hwui/LayerRenderer.h b/libs/hwui/LayerRenderer.h index 2246573..6104301 100644 --- a/libs/hwui/LayerRenderer.h +++ b/libs/hwui/LayerRenderer.h @@ -17,6 +17,8 @@ #ifndef ANDROID_HWUI_LAYER_RENDERER_H #define ANDROID_HWUI_LAYER_RENDERER_H +#include <cutils/compiler.h> + #include "OpenGLRenderer.h" #include "Layer.h" @@ -42,27 +44,24 @@ namespace uirenderer { class LayerRenderer: public OpenGLRenderer { public: - LayerRenderer(Layer* layer): mLayer(layer) { - } - - ~LayerRenderer() { - } + ANDROID_API LayerRenderer(Layer* layer); + virtual ~LayerRenderer(); - void prepareDirty(float left, float top, float right, float bottom, bool opaque); - void finish(); + virtual void prepareDirty(float left, float top, float right, float bottom, bool opaque); + virtual void finish(); - bool hasLayer(); - Region* getRegion(); - GLint getTargetFbo(); + virtual bool hasLayer(); + virtual Region* getRegion(); + virtual GLint getTargetFbo(); - static Layer* createTextureLayer(bool isOpaque); - static Layer* createLayer(uint32_t width, uint32_t height, bool isOpaque = false); - static bool resizeLayer(Layer* layer, uint32_t width, uint32_t height); - static void updateTextureLayer(Layer* layer, uint32_t width, uint32_t height, + ANDROID_API static Layer* createTextureLayer(bool isOpaque); + ANDROID_API static Layer* createLayer(uint32_t width, uint32_t height, bool isOpaque = false); + ANDROID_API static bool resizeLayer(Layer* layer, uint32_t width, uint32_t height); + ANDROID_API static void updateTextureLayer(Layer* layer, uint32_t width, uint32_t height, bool isOpaque, GLenum renderTarget, float* transform); - static void destroyLayer(Layer* layer); - static void destroyLayerDeferred(Layer* layer); - static bool copyLayer(Layer* layer, SkBitmap* bitmap); + ANDROID_API static void destroyLayer(Layer* layer); + ANDROID_API static void destroyLayerDeferred(Layer* layer); + ANDROID_API static bool copyLayer(Layer* layer, SkBitmap* bitmap); private: void generateMesh(); diff --git a/libs/hwui/Matrix.h b/libs/hwui/Matrix.h index 56fd37d..22220a9 100644 --- a/libs/hwui/Matrix.h +++ b/libs/hwui/Matrix.h @@ -19,6 +19,8 @@ #include <SkMatrix.h> +#include <cutils/compiler.h> + #include "Rect.h" namespace android { @@ -28,7 +30,7 @@ namespace uirenderer { // Classes /////////////////////////////////////////////////////////////////////////////// -class Matrix4 { +class ANDROID_API Matrix4 { public: float data[16]; diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h index 14b22b3..2fc88e1 100644 --- a/libs/hwui/OpenGLRenderer.h +++ b/libs/hwui/OpenGLRenderer.h @@ -31,6 +31,8 @@ #include <utils/RefBase.h> #include <utils/Vector.h> +#include <cutils/compiler.h> + #include "Debug.h" #include "Extensions.h" #include "Matrix.h" @@ -57,12 +59,12 @@ class DisplayList; */ class OpenGLRenderer { public: - OpenGLRenderer(); + ANDROID_API OpenGLRenderer(); virtual ~OpenGLRenderer(); virtual void setViewport(int width, int height); - void prepare(bool opaque); + ANDROID_API void prepare(bool opaque); virtual void prepareDirty(float left, float top, float right, float bottom, bool opaque); virtual void finish(); @@ -72,7 +74,7 @@ public: virtual bool callDrawGLFunction(Functor *functor, Rect& dirty); - int getSaveCount() const; + ANDROID_API int getSaveCount() const; virtual int save(int flags); virtual void restore(); virtual void restoreToCount(int saveCount); @@ -87,12 +89,12 @@ public: virtual void scale(float sx, float sy); virtual void skew(float sx, float sy); - void getMatrix(SkMatrix* matrix); + ANDROID_API void getMatrix(SkMatrix* matrix); virtual void setMatrix(SkMatrix* matrix); virtual void concatMatrix(SkMatrix* matrix); - const Rect& getClipBounds(); - bool quickReject(float left, float top, float right, float bottom); + ANDROID_API const Rect& getClipBounds(); + ANDROID_API bool quickReject(float left, float top, float right, float bottom); virtual bool clipRect(float left, float top, float right, float bottom, SkRegion::Op op); virtual bool drawDisplayList(DisplayList* displayList, uint32_t width, uint32_t height, diff --git a/libs/hwui/ResourceCache.h b/libs/hwui/ResourceCache.h index 2a38910..8cf466b 100644 --- a/libs/hwui/ResourceCache.h +++ b/libs/hwui/ResourceCache.h @@ -17,6 +17,8 @@ #ifndef ANDROID_HWUI_RESOURCE_CACHE_H #define ANDROID_HWUI_RESOURCE_CACHE_H +#include <cutils/compiler.h> + #include <SkBitmap.h> #include <SkiaColorFilter.h> #include <SkiaShader.h> @@ -49,7 +51,7 @@ public: ResourceType resourceType; }; -class ResourceCache { +class ANDROID_API ResourceCache { KeyedVector<void *, ResourceReference *>* mCache; public: ResourceCache(); diff --git a/libs/hwui/SkiaColorFilter.h b/libs/hwui/SkiaColorFilter.h index 1bf475c..2feb834 100644 --- a/libs/hwui/SkiaColorFilter.h +++ b/libs/hwui/SkiaColorFilter.h @@ -20,6 +20,8 @@ #include <GLES2/gl2.h> #include <SkColorFilter.h> +#include <cutils/compiler.h> + #include "ProgramCache.h" #include "Extensions.h" @@ -45,7 +47,7 @@ struct SkiaColorFilter { kBlend, }; - SkiaColorFilter(SkColorFilter *skFilter, Type type, bool blend); + ANDROID_API SkiaColorFilter(SkColorFilter *skFilter, Type type, bool blend); virtual ~SkiaColorFilter(); virtual void describe(ProgramDescription& description, const Extensions& extensions) = 0; @@ -79,7 +81,7 @@ private: * A color filter that multiplies the source color with a matrix and adds a vector. */ struct SkiaColorMatrixFilter: public SkiaColorFilter { - SkiaColorMatrixFilter(SkColorFilter *skFilter, float* matrix, float* vector); + ANDROID_API SkiaColorMatrixFilter(SkColorFilter *skFilter, float* matrix, float* vector); ~SkiaColorMatrixFilter(); void describe(ProgramDescription& description, const Extensions& extensions); @@ -95,7 +97,7 @@ private: * another fixed value. Ignores the alpha channel of both arguments. */ struct SkiaLightingFilter: public SkiaColorFilter { - SkiaLightingFilter(SkColorFilter *skFilter, int multiply, int add); + ANDROID_API SkiaLightingFilter(SkColorFilter *skFilter, int multiply, int add); void describe(ProgramDescription& description, const Extensions& extensions); void setupProgram(Program* program); @@ -110,7 +112,7 @@ private: * and PorterDuff blending mode. */ struct SkiaBlendFilter: public SkiaColorFilter { - SkiaBlendFilter(SkColorFilter *skFilter, int color, SkXfermode::Mode mode); + ANDROID_API SkiaBlendFilter(SkColorFilter *skFilter, int color, SkXfermode::Mode mode); void describe(ProgramDescription& description, const Extensions& extensions); void setupProgram(Program* program); diff --git a/libs/hwui/SkiaShader.h b/libs/hwui/SkiaShader.h index 89dd131..2de9a93 100644 --- a/libs/hwui/SkiaShader.h +++ b/libs/hwui/SkiaShader.h @@ -22,6 +22,8 @@ #include <GLES2/gl2.h> +#include <cutils/compiler.h> + #include "Extensions.h" #include "ProgramCache.h" #include "TextureCache.h" @@ -52,8 +54,8 @@ struct SkiaShader { kCompose }; - SkiaShader(Type type, SkShader* key, SkShader::TileMode tileX, SkShader::TileMode tileY, - SkMatrix* matrix, bool blend); + ANDROID_API SkiaShader(Type type, SkShader* key, SkShader::TileMode tileX, + SkShader::TileMode tileY, SkMatrix* matrix, bool blend); virtual ~SkiaShader(); virtual SkiaShader* copy() = 0; @@ -139,7 +141,7 @@ private: * A shader that draws a bitmap. */ struct SkiaBitmapShader: public SkiaShader { - SkiaBitmapShader(SkBitmap* bitmap, SkShader* key, SkShader::TileMode tileX, + ANDROID_API SkiaBitmapShader(SkBitmap* bitmap, SkShader* key, SkShader::TileMode tileX, SkShader::TileMode tileY, SkMatrix* matrix, bool blend); SkiaShader* copy(); @@ -169,8 +171,8 @@ private: * A shader that draws a linear gradient. */ struct SkiaLinearGradientShader: public SkiaShader { - SkiaLinearGradientShader(float* bounds, uint32_t* colors, float* positions, int count, - SkShader* key, SkShader::TileMode tileMode, SkMatrix* matrix, bool blend); + ANDROID_API SkiaLinearGradientShader(float* bounds, uint32_t* colors, float* positions, + int count, SkShader* key, SkShader::TileMode tileMode, SkMatrix* matrix, bool blend); ~SkiaLinearGradientShader(); SkiaShader* copy(); @@ -193,8 +195,8 @@ private: * A shader that draws a sweep gradient. */ struct SkiaSweepGradientShader: public SkiaShader { - SkiaSweepGradientShader(float x, float y, uint32_t* colors, float* positions, int count, - SkShader* key, SkMatrix* matrix, bool blend); + ANDROID_API SkiaSweepGradientShader(float x, float y, uint32_t* colors, float* positions, + int count, SkShader* key, SkMatrix* matrix, bool blend); ~SkiaSweepGradientShader(); SkiaShader* copy(); @@ -218,8 +220,9 @@ protected: * A shader that draws a circular gradient. */ struct SkiaCircularGradientShader: public SkiaSweepGradientShader { - SkiaCircularGradientShader(float x, float y, float radius, uint32_t* colors, float* positions, - int count, SkShader* key,SkShader::TileMode tileMode, SkMatrix* matrix, bool blend); + ANDROID_API SkiaCircularGradientShader(float x, float y, float radius, uint32_t* colors, + float* positions, int count, SkShader* key,SkShader::TileMode tileMode, + SkMatrix* matrix, bool blend); SkiaShader* copy(); void describe(ProgramDescription& description, const Extensions& extensions); @@ -233,7 +236,8 @@ private: * A shader that draws two shaders, composited with an xfermode. */ struct SkiaComposeShader: public SkiaShader { - SkiaComposeShader(SkiaShader* first, SkiaShader* second, SkXfermode::Mode mode, SkShader* key); + ANDROID_API SkiaComposeShader(SkiaShader* first, SkiaShader* second, SkXfermode::Mode mode, + SkShader* key); ~SkiaComposeShader(); SkiaShader* copy(); diff --git a/libs/rs/driver/rsdBcc.cpp b/libs/rs/driver/rsdBcc.cpp index 5fd5c35..4ecf8e8 100644 --- a/libs/rs/driver/rsdBcc.cpp +++ b/libs/rs/driver/rsdBcc.cpp @@ -226,6 +226,7 @@ static void wc_xy(void *usr, uint32_t idx) { RsdHal * dc = (RsdHal *)mtls->rsc->mHal.drv; uint32_t sig = mtls->sig; + outer_foreach_t fn = dc->mForEachLaunch[sig]; while (1) { uint32_t slice = (uint32_t)android_atomic_inc(&mtls->mSliceNum); uint32_t yStart = mtls->yStart + slice * mtls->mSliceSize; @@ -239,16 +240,10 @@ static void wc_xy(void *usr, uint32_t idx) { //LOGE("usr ptr in %p, out %p", mtls->ptrIn, mtls->ptrOut); for (p.y = yStart; p.y < yEnd; p.y++) { uint32_t offset = mtls->dimX * p.y; - uint8_t *xPtrOut = mtls->ptrOut + (mtls->eStrideOut * offset); - const uint8_t *xPtrIn = mtls->ptrIn + (mtls->eStrideIn * offset); - - for (p.x = mtls->xStart; p.x < mtls->xEnd; p.x++) { - p.in = xPtrIn; - p.out = xPtrOut; - dc->mForEachLaunch[sig](&mtls->script->mHal.info.root, &p); - xPtrIn += mtls->eStrideIn; - xPtrOut += mtls->eStrideOut; - } + p.out = mtls->ptrOut + (mtls->eStrideOut * offset); + p.in = mtls->ptrIn + (mtls->eStrideIn * offset); + fn(&mtls->script->mHal.info.root, &p, mtls->xStart, mtls->xEnd, + mtls->eStrideIn, mtls->eStrideOut); } } } @@ -262,6 +257,7 @@ static void wc_x(void *usr, uint32_t idx) { RsdHal * dc = (RsdHal *)mtls->rsc->mHal.drv; uint32_t sig = mtls->sig; + outer_foreach_t fn = dc->mForEachLaunch[sig]; while (1) { uint32_t slice = (uint32_t)android_atomic_inc(&mtls->mSliceNum); uint32_t xStart = mtls->xStart + slice * mtls->mSliceSize; @@ -271,17 +267,12 @@ static void wc_x(void *usr, uint32_t idx) { return; } - //LOGE("usr idx %i, x %i,%i y %i,%i", idx, mtls->xStart, mtls->xEnd, yStart, yEnd); + //LOGE("usr slice %i idx %i, x %i,%i", slice, idx, xStart, xEnd); //LOGE("usr ptr in %p, out %p", mtls->ptrIn, mtls->ptrOut); - uint8_t *xPtrOut = mtls->ptrOut + (mtls->eStrideOut * xStart); - const uint8_t *xPtrIn = mtls->ptrIn + (mtls->eStrideIn * xStart); - for (p.x = xStart; p.x < xEnd; p.x++) { - p.in = xPtrIn; - p.out = xPtrOut; - dc->mForEachLaunch[sig](&mtls->script->mHal.info.root, &p); - xPtrIn += mtls->eStrideIn; - xPtrOut += mtls->eStrideOut; - } + + p.out = mtls->ptrOut + (mtls->eStrideOut * xStart); + p.in = mtls->ptrIn + (mtls->eStrideIn * xStart); + fn(&mtls->script->mHal.info.root, &p, xStart, xEnd, mtls->eStrideIn, mtls->eStrideOut); } } @@ -392,22 +383,17 @@ void rsdScriptInvokeForEach(const Context *rsc, uint32_t sig = mtls.sig; //LOGE("launch 3"); + outer_foreach_t fn = dc->mForEachLaunch[sig]; for (p.ar[0] = mtls.arrayStart; p.ar[0] < mtls.arrayEnd; p.ar[0]++) { for (p.z = mtls.zStart; p.z < mtls.zEnd; p.z++) { for (p.y = mtls.yStart; p.y < mtls.yEnd; p.y++) { uint32_t offset = mtls.dimX * mtls.dimY * mtls.dimZ * p.ar[0] + mtls.dimX * mtls.dimY * p.z + mtls.dimX * p.y; - uint8_t *xPtrOut = mtls.ptrOut + (mtls.eStrideOut * offset); - const uint8_t *xPtrIn = mtls.ptrIn + (mtls.eStrideIn * offset); - - for (p.x = mtls.xStart; p.x < mtls.xEnd; p.x++) { - p.in = xPtrIn; - p.out = xPtrOut; - dc->mForEachLaunch[sig](&s->mHal.info.root, &p); - xPtrIn += mtls.eStrideIn; - xPtrOut += mtls.eStrideOut; - } + p.out = mtls.ptrOut + (mtls.eStrideOut * offset); + p.in = mtls.ptrIn + (mtls.eStrideIn * offset); + fn(&mtls.script->mHal.info.root, &p, mtls.xStart, mtls.xEnd, + mtls.eStrideIn, mtls.eStrideOut); } } } diff --git a/libs/rs/driver/rsdCore.cpp b/libs/rs/driver/rsdCore.cpp index f8107d9..247f4dc 100644 --- a/libs/rs/driver/rsdCore.cpp +++ b/libs/rs/driver/rsdCore.cpp @@ -292,75 +292,136 @@ void Shutdown(Context *rsc) { } static void rsdForEach17(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(const void *, uint32_t); (*(fe*)vRoot)(p->in, p->y); } static void rsdForEach18(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(void *, uint32_t); (*(fe*)vRoot)(p->out, p->y); } static void rsdForEach19(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(const void *, void *, uint32_t); (*(fe*)vRoot)(p->in, p->out, p->y); } static void rsdForEach21(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(const void *, const void *, uint32_t); (*(fe*)vRoot)(p->in, p->usr, p->y); } static void rsdForEach22(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(void *, const void *, uint32_t); (*(fe*)vRoot)(p->out, p->usr, p->y); } static void rsdForEach23(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(const void *, void *, const void *, uint32_t); (*(fe*)vRoot)(p->in, p->out, p->usr, p->y); } static void rsdForEach25(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(const void *, uint32_t, uint32_t); - (*(fe*)vRoot)(p->in, p->x, p->y); + const uint8_t *pin = (const uint8_t *)p->in; + uint32_t y = p->y; + for (uint32_t x = x1; x < x2; x++) { + (*(fe*)vRoot)(pin, x, y); + pin += instep; + } } static void rsdForEach26(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(void *, uint32_t, uint32_t); - (*(fe*)vRoot)(p->out, p->x, p->y); + uint8_t *pout = (uint8_t *)p->out; + uint32_t y = p->y; + for (uint32_t x = x1; x < x2; x++) { + (*(fe*)vRoot)(pout, x, y); + pout += outstep; + } } static void rsdForEach27(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(const void *, void *, uint32_t, uint32_t); - (*(fe*)vRoot)(p->in, p->out, p->x, p->y); + uint8_t *pout = (uint8_t *)p->out; + const uint8_t *pin = (const uint8_t *)p->in; + uint32_t y = p->y; + for (uint32_t x = x1; x < x2; x++) { + (*(fe*)vRoot)(pin, pout, x, y); + pin += instep; + pout += outstep; + } } static void rsdForEach29(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(const void *, const void *, uint32_t, uint32_t); - (*(fe*)vRoot)(p->in, p->usr, p->x, p->y); + const uint8_t *pin = (const uint8_t *)p->in; + const void *usr = p->usr; + const uint32_t y = p->y; + for (uint32_t x = x1; x < x2; x++) { + (*(fe*)vRoot)(pin, usr, x, y); + pin += instep; + } } static void rsdForEach30(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(void *, const void *, uint32_t, uint32_t); - (*(fe*)vRoot)(p->out, p->usr, p->x, p->y); + uint8_t *pout = (uint8_t *)p->out; + const void *usr = p->usr; + const uint32_t y = p->y; + for (uint32_t x = x1; x < x2; x++) { + (*(fe*)vRoot)(pout, usr, x, y); + pout += outstep; + } } static void rsdForEach31(const void *vRoot, - const android::renderscript::RsForEachStubParamStruct *p) { + const android::renderscript::RsForEachStubParamStruct *p, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep) { typedef void (*fe)(const void *, void *, const void *, uint32_t, uint32_t); - (*(fe*)vRoot)(p->in, p->out, p->usr, p->x, p->y); + uint8_t *pout = (uint8_t *)p->out; + const uint8_t *pin = (const uint8_t *)p->in; + const void *usr = p->usr; + const uint32_t y = p->y; + for (uint32_t x = x1; x < x2; x++) { + (*(fe*)vRoot)(pin, pout, usr, x, y); + pin += instep; + pout += outstep; + } } diff --git a/libs/rs/driver/rsdCore.h b/libs/rs/driver/rsdCore.h index 159b72a..ce86d11 100644 --- a/libs/rs/driver/rsdCore.h +++ b/libs/rs/driver/rsdCore.h @@ -28,7 +28,9 @@ typedef void (* InvokeFunc_t)(void); typedef void (*WorkerCallback_t)(void *usr, uint32_t idx); typedef void (*outer_foreach_t)(const void *, - const android::renderscript::RsForEachStubParamStruct *); + const android::renderscript::RsForEachStubParamStruct *, + uint32_t x1, uint32_t x2, + uint32_t instep, uint32_t outstep); typedef struct RsdSymbolTableRec { const char * mName; diff --git a/libs/rs/rsProgramRaster.h b/libs/rs/rsProgramRaster.h index 20af30a..c552ea3 100644 --- a/libs/rs/rsProgramRaster.h +++ b/libs/rs/rsProgramRaster.h @@ -24,17 +24,16 @@ namespace android { namespace renderscript { class ProgramRasterState; - +/***************************************************************************** + * CAUTION + * + * Any layout changes for this class may require a corresponding change to be + * made to frameworks/compile/libbcc/lib/ScriptCRT/rs_core.c, which contains + * a partial copy of the information below. + * + *****************************************************************************/ class ProgramRaster : public ProgramBase { public: - virtual void setup(const Context *, ProgramRasterState *); - virtual void serialize(OStream *stream) const; - virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_RASTER; } - static ProgramRaster *createFromStream(Context *rsc, IStream *stream); - - static ObjectBaseRef<ProgramRaster> getProgramRaster(Context *rsc, - bool pointSprite, - RsCullMode cull); struct Hal { mutable void *drv; @@ -46,6 +45,14 @@ public: }; Hal mHal; + virtual void setup(const Context *, ProgramRasterState *); + virtual void serialize(OStream *stream) const; + virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_RASTER; } + static ProgramRaster *createFromStream(Context *rsc, IStream *stream); + + static ObjectBaseRef<ProgramRaster> getProgramRaster(Context *rsc, + bool pointSprite, + RsCullMode cull); protected: virtual void preDestroy() const; virtual ~ProgramRaster(); diff --git a/libs/rs/rsProgramStore.h b/libs/rs/rsProgramStore.h index e21f039..9bb2795 100644 --- a/libs/rs/rsProgramStore.h +++ b/libs/rs/rsProgramStore.h @@ -25,23 +25,16 @@ namespace android { namespace renderscript { class ProgramStoreState; - +/***************************************************************************** + * CAUTION + * + * Any layout changes for this class may require a corresponding change to be + * made to frameworks/compile/libbcc/lib/ScriptCRT/rs_core.c, which contains + * a partial copy of the information below. + * + *****************************************************************************/ class ProgramStore : public ProgramBase { public: - virtual void setup(const Context *, ProgramStoreState *); - - virtual void serialize(OStream *stream) const; - virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_STORE; } - static ProgramStore *createFromStream(Context *rsc, IStream *stream); - static ObjectBaseRef<ProgramStore> getProgramStore(Context *, - bool colorMaskR, bool colorMaskG, - bool colorMaskB, bool colorMaskA, - bool depthMask, bool ditherEnable, - RsBlendSrcFunc srcFunc, RsBlendDstFunc destFunc, - RsDepthFunc depthFunc); - - void init(); - struct Hal { mutable void *drv; @@ -64,6 +57,18 @@ public: }; Hal mHal; + virtual void setup(const Context *, ProgramStoreState *); + + virtual void serialize(OStream *stream) const; + virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_PROGRAM_STORE; } + static ProgramStore *createFromStream(Context *rsc, IStream *stream); + static ObjectBaseRef<ProgramStore> getProgramStore(Context *, + bool colorMaskR, bool colorMaskG, + bool colorMaskB, bool colorMaskA, + bool depthMask, bool ditherEnable, + RsBlendSrcFunc srcFunc, RsBlendDstFunc destFunc, + RsDepthFunc depthFunc); + void init(); protected: virtual void preDestroy() const; virtual ~ProgramStore(); diff --git a/libs/rs/rsSampler.h b/libs/rs/rsSampler.h index e698132..654cd9c 100644 --- a/libs/rs/rsSampler.h +++ b/libs/rs/rsSampler.h @@ -27,23 +27,16 @@ namespace renderscript { const static uint32_t RS_MAX_SAMPLER_SLOT = 16; class SamplerState; - +/***************************************************************************** + * CAUTION + * + * Any layout changes for this class may require a corresponding change to be + * made to frameworks/compile/libbcc/lib/ScriptCRT/rs_core.c, which contains + * a partial copy of the information below. + * + *****************************************************************************/ class Sampler : public ObjectBase { public: - static ObjectBaseRef<Sampler> getSampler(Context *, - RsSamplerValue magFilter, - RsSamplerValue minFilter, - RsSamplerValue wrapS, - RsSamplerValue wrapT, - RsSamplerValue wrapR, - float aniso = 1.0f); - void bindToContext(SamplerState *, uint32_t slot); - void unbindFromContext(SamplerState *); - - virtual void serialize(OStream *stream) const; - virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_SAMPLER; } - static Sampler *createFromStream(Context *rsc, IStream *stream); - struct Hal { mutable void *drv; @@ -59,6 +52,20 @@ public: }; Hal mHal; + static ObjectBaseRef<Sampler> getSampler(Context *, + RsSamplerValue magFilter, + RsSamplerValue minFilter, + RsSamplerValue wrapS, + RsSamplerValue wrapT, + RsSamplerValue wrapR, + float aniso = 1.0f); + void bindToContext(SamplerState *, uint32_t slot); + void unbindFromContext(SamplerState *); + + virtual void serialize(OStream *stream) const; + virtual RsA3DClassID getClassId() const { return RS_A3D_CLASS_ID_SAMPLER; } + static Sampler *createFromStream(Context *rsc, IStream *stream); + protected: int32_t mBoundSlot; diff --git a/libs/rs/scriptc/rs_graphics.rsh b/libs/rs/scriptc/rs_graphics.rsh index 3e9339e..80267c7 100644 --- a/libs/rs/scriptc/rs_graphics.rsh +++ b/libs/rs/scriptc/rs_graphics.rsh @@ -23,6 +23,55 @@ #ifndef __RS_GRAPHICS_RSH__ #define __RS_GRAPHICS_RSH__ +// These are API 15 once it get official +typedef enum { + RS_DEPTH_FUNC_ALWAYS, + RS_DEPTH_FUNC_LESS, + RS_DEPTH_FUNC_LEQUAL, + RS_DEPTH_FUNC_GREATER, + RS_DEPTH_FUNC_GEQUAL, + RS_DEPTH_FUNC_EQUAL, + RS_DEPTH_FUNC_NOTEQUAL +} rs_depth_func; + +typedef enum { + RS_BLEND_SRC_ZERO, // 0 + RS_BLEND_SRC_ONE, // 1 + RS_BLEND_SRC_DST_COLOR, // 2 + RS_BLEND_SRC_ONE_MINUS_DST_COLOR, // 3 + RS_BLEND_SRC_SRC_ALPHA, // 4 + RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA, // 5 + RS_BLEND_SRC_DST_ALPHA, // 6 + RS_BLEND_SRC_ONE_MINUS_DST_ALPHA, // 7 + RS_BLEND_SRC_SRC_ALPHA_SATURATE // 8 +} rs_blend_src_func; + +typedef enum { + RS_BLEND_DST_ZERO, // 0 + RS_BLEND_DST_ONE, // 1 + RS_BLEND_DST_SRC_COLOR, // 2 + RS_BLEND_DST_ONE_MINUS_SRC_COLOR, // 3 + RS_BLEND_DST_SRC_ALPHA, // 4 + RS_BLEND_DST_ONE_MINUS_SRC_ALPHA, // 5 + RS_BLEND_DST_DST_ALPHA, // 6 + RS_BLEND_DST_ONE_MINUS_DST_ALPHA // 7 +} rs_blend_dst_func; + +typedef enum { + RS_CULL_BACK, + RS_CULL_FRONT, + RS_CULL_NONE +} rs_cull_mode; + +typedef enum { + RS_SAMPLER_NEAREST, + RS_SAMPLER_LINEAR, + RS_SAMPLER_LINEAR_MIP_LINEAR, + RS_SAMPLER_WRAP, + RS_SAMPLER_CLAMP, + RS_SAMPLER_LINEAR_MIP_NEAREST, +} rs_sampler_value; + #if (defined(RS_VERSION) && (RS_VERSION >= 14)) /** * Set the color target used for all subsequent rendering calls @@ -83,6 +132,88 @@ extern void __attribute__((overloadable)) extern void __attribute__((overloadable)) rsgBindProgramStore(rs_program_store ps); + +/** + * @hide + * Get program store depth function + * + * @param ps + */ +extern rs_depth_func __attribute__((overloadable)) + rsgProgramStoreGetDepthFunc(rs_program_store ps); + +/** + * @hide + * Get program store depth mask + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetDepthMask(rs_program_store ps); +/** + * @hide + * Get program store red component color mask + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetColorMaskR(rs_program_store ps); + +/** + * @hide + * Get program store green component color mask + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetColorMaskG(rs_program_store ps); + +/** + * @hide + * Get program store blur component color mask + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetColorMaskB(rs_program_store ps); + +/** + * @hide + * Get program store alpha component color mask + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetColorMaskA(rs_program_store ps); + +/** + * @hide + * Get program store blend source function + * + * @param ps + */ +extern rs_blend_src_func __attribute__((overloadable)) + rsgProgramStoreGetBlendSrcFunc(rs_program_store ps); + +/** + * @hide + * Get program store blend destination function + * + * @param ps + */ +extern rs_blend_dst_func __attribute__((overloadable)) + rsgProgramStoreGetBlendDstFunc(rs_program_store ps); + +/** + * @hide + * Get program store dither state + * + * @param ps + */ +extern bool __attribute__((overloadable)) + rsgProgramStoreGetDitherEnabled(rs_program_store ps); + + /** * Bind a new ProgramVertex to the rendering context. * @@ -100,6 +231,24 @@ extern void __attribute__((overloadable)) rsgBindProgramRaster(rs_program_raster pr); /** + * @hide + * Get program raster point sprite state + * + * @param pr + */ +extern bool __attribute__((overloadable)) + rsgProgramRasterGetPointSpriteEnabled(rs_program_raster pr); + +/** + * @hide + * Get program raster cull mode + * + * @param pr + */ +extern rs_cull_mode __attribute__((overloadable)) + rsgProgramRasterGetCullMode(rs_program_raster pr); + +/** * Bind a new Sampler object to a ProgramFragment. The sampler will * operate on the texture bound at the matching slot. * @@ -109,6 +258,51 @@ extern void __attribute__((overloadable)) rsgBindSampler(rs_program_fragment, uint slot, rs_sampler); /** + * @hide + * Get sampler minification value + * + * @param pr + */ +extern rs_sampler_value __attribute__((overloadable)) + rsgSamplerGetMinification(rs_sampler s); + +/** + * @hide + * Get sampler magnification value + * + * @param pr + */ +extern rs_sampler_value __attribute__((overloadable)) + rsgSamplerGetMagnification(rs_sampler s); + +/** + * @hide + * Get sampler wrap S value + * + * @param pr + */ +extern rs_sampler_value __attribute__((overloadable)) + rsgSamplerGetWrapS(rs_sampler s); + +/** + * @hide + * Get sampler wrap T value + * + * @param pr + */ +extern rs_sampler_value __attribute__((overloadable)) + rsgSamplerGetWrapT(rs_sampler s); + +/** + * @hide + * Get sampler anisotropy + * + * @param pr + */ +extern float __attribute__((overloadable)) + rsgSamplerGetAnisotropy(rs_sampler s); + +/** * Bind a new Allocation object to a ProgramFragment. The * Allocation must be a valid texture for the Program. The sampling * of the texture will be controled by the Sampler bound at the diff --git a/media/java/android/media/MediaFile.java b/media/java/android/media/MediaFile.java index 8793841..e275aa6 100644 --- a/media/java/android/media/MediaFile.java +++ b/media/java/android/media/MediaFile.java @@ -71,6 +71,11 @@ public class MediaFile { private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_MP4; private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_WEBM; + // More video file types + public static final int FILE_TYPE_MP2PS = 200; + private static final int FIRST_VIDEO_FILE_TYPE2 = FILE_TYPE_MP2PS; + private static final int LAST_VIDEO_FILE_TYPE2 = FILE_TYPE_MP2PS; + // Image file types public static final int FILE_TYPE_JPEG = 31; public static final int FILE_TYPE_GIF = 32; @@ -235,6 +240,8 @@ public class MediaFile { addFileType("PPT", FILE_TYPE_MS_POWERPOINT, "application/mspowerpoint", MtpConstants.FORMAT_MS_POWERPOINT_PRESENTATION); addFileType("FLAC", FILE_TYPE_FLAC, "audio/flac", MtpConstants.FORMAT_FLAC); addFileType("ZIP", FILE_TYPE_ZIP, "application/zip"); + addFileType("MPG", FILE_TYPE_MP2PS, "video/mp2p"); + addFileType("MPEG", FILE_TYPE_MP2PS, "video/mp2p"); } public static boolean isAudioFileType(int fileType) { @@ -246,7 +253,9 @@ public class MediaFile { public static boolean isVideoFileType(int fileType) { return (fileType >= FIRST_VIDEO_FILE_TYPE && - fileType <= LAST_VIDEO_FILE_TYPE); + fileType <= LAST_VIDEO_FILE_TYPE) + || (fileType >= FIRST_VIDEO_FILE_TYPE2 && + fileType <= LAST_VIDEO_FILE_TYPE2); } public static boolean isImageFileType(int fileType) { diff --git a/media/java/android/media/MediaInserter.java b/media/java/android/media/MediaInserter.java new file mode 100644 index 0000000..a998407 --- /dev/null +++ b/media/java/android/media/MediaInserter.java @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2011 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.media; + +import android.content.ContentValues; +import android.content.IContentProvider; +import android.net.Uri; +import android.os.RemoteException; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * A MediaScanner helper class which enables us to do lazy insertion on the + * given provider. This class manages buffers internally and flushes when they + * are full. Note that you should call flushAll() after using this class. + * {@hide} + */ +public class MediaInserter { + private HashMap<Uri, List<ContentValues>> mRowMap = + new HashMap<Uri, List<ContentValues>>(); + + private IContentProvider mProvider; + private int mBufferSizePerUri; + + public MediaInserter(IContentProvider provider, int bufferSizePerUri) { + mProvider = provider; + mBufferSizePerUri = bufferSizePerUri; + } + + public void insert(Uri tableUri, ContentValues values) throws RemoteException { + List<ContentValues> list = mRowMap.get(tableUri); + if (list == null) { + list = new ArrayList<ContentValues>(); + mRowMap.put(tableUri, list); + } + list.add(new ContentValues(values)); + if (list.size() >= mBufferSizePerUri) { + flush(tableUri); + } + } + + public void flushAll() throws RemoteException { + for (Uri tableUri : mRowMap.keySet()){ + flush(tableUri); + } + mRowMap.clear(); + } + + private void flush(Uri tableUri) throws RemoteException { + List<ContentValues> list = mRowMap.get(tableUri); + if (!list.isEmpty()) { + ContentValues[] valuesArray = new ContentValues[list.size()]; + valuesArray = list.toArray(valuesArray); + mProvider.bulkInsert(tableUri, valuesArray); + list.clear(); + } + } +} diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java index 2d927ad..386986e 100644 --- a/media/java/android/media/MediaScanner.java +++ b/media/java/android/media/MediaScanner.java @@ -377,43 +377,7 @@ public class MediaScanner } } - private class FileInserter { - - private final Uri mUri; - private final ContentValues[] mValues; - private int mIndex; - - public FileInserter(Uri uri, int count) { - mUri = uri; - mValues = new ContentValues[count]; - } - - public Uri insert(ContentValues values) { - if (mIndex == mValues.length) { - flush(); - } - mValues[mIndex++] = values; - // URI not needed when doing bulk inserts - return null; - } - - public void flush() { - while (mIndex < mValues.length) { - mValues[mIndex++] = null; - } - try { - mMediaProvider.bulkInsert(mUri, mValues); - } catch (RemoteException e) { - Log.e(TAG, "RemoteException in FileInserter.flush()", e); - } - mIndex = 0; - } - } - - private FileInserter mAudioInserter; - private FileInserter mVideoInserter; - private FileInserter mImageInserter; - private FileInserter mFileInserter; + private MediaInserter mMediaInserter; // hashes file path to FileCacheEntry. // path should be lower case if mCaseInsensitivePaths is true @@ -880,17 +844,14 @@ public class MediaScanner } Uri tableUri = mFilesUri; - FileInserter inserter = mFileInserter; + MediaInserter inserter = mMediaInserter; if (!mNoMedia) { if (MediaFile.isVideoFileType(mFileType)) { tableUri = mVideoUri; - inserter = mVideoInserter; } else if (MediaFile.isImageFileType(mFileType)) { tableUri = mImagesUri; - inserter = mImageInserter; } else if (MediaFile.isAudioFileType(mFileType)) { tableUri = mAudioUri; - inserter = mAudioInserter; } } Uri result = null; @@ -913,7 +874,7 @@ public class MediaScanner if (inserter == null || entry.mFormat == MtpConstants.FORMAT_ASSOCIATION) { result = mMediaProvider.insert(tableUri, values); } else { - result = inserter.insert(values); + inserter.insert(tableUri, values); } if (result != null) { @@ -1212,11 +1173,8 @@ public class MediaScanner long prescan = System.currentTimeMillis(); if (ENABLE_BULK_INSERTS) { - // create FileInserters for bulk inserts - mAudioInserter = new FileInserter(mAudioUri, 500); - mVideoInserter = new FileInserter(mVideoUri, 500); - mImageInserter = new FileInserter(mImagesUri, 500); - mFileInserter = new FileInserter(mFilesUri, 500); + // create MediaInserter for bulk inserts + mMediaInserter = new MediaInserter(mMediaProvider, 500); } for (int i = 0; i < directories.length; i++) { @@ -1225,14 +1183,8 @@ public class MediaScanner if (ENABLE_BULK_INSERTS) { // flush remaining inserts - mAudioInserter.flush(); - mVideoInserter.flush(); - mImageInserter.flush(); - mFileInserter.flush(); - mAudioInserter = null; - mVideoInserter = null; - mImageInserter = null; - mFileInserter = null; + mMediaInserter.flushAll(); + mMediaInserter = null; } long scan = System.currentTimeMillis(); diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk index ec7d8a0..a3e2517 100644 --- a/media/libmediaplayerservice/Android.mk +++ b/media/libmediaplayerservice/Android.mk @@ -32,8 +32,8 @@ LOCAL_SHARED_LIBRARIES := \ libdl LOCAL_STATIC_LIBRARIES := \ - libstagefright_rtsp \ libstagefright_nuplayer \ + libstagefright_rtsp \ LOCAL_C_INCLUDES := \ $(JNI_H_INCLUDE) \ diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 3ebe989..2ea2af9 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -586,6 +586,10 @@ player_type getPlayerType(const char* url) } } + if (!strncasecmp("rtsp://", url, 7)) { + return NU_PLAYER; + } + // use MidiFile for MIDI extensions int lenURL = strlen(url); for (int i = 0; i < NELEM(FILE_EXTS); ++i) { diff --git a/media/libmediaplayerservice/nuplayer/Android.mk b/media/libmediaplayerservice/nuplayer/Android.mk index e761509..33e2f93 100644 --- a/media/libmediaplayerservice/nuplayer/Android.mk +++ b/media/libmediaplayerservice/nuplayer/Android.mk @@ -8,6 +8,7 @@ LOCAL_SRC_FILES:= \ NuPlayerDriver.cpp \ NuPlayerRenderer.cpp \ NuPlayerStreamListener.cpp \ + RTSPSource.cpp \ StreamingSource.cpp \ LOCAL_C_INCLUDES := \ @@ -15,6 +16,7 @@ LOCAL_C_INCLUDES := \ $(TOP)/frameworks/base/media/libstagefright/include \ $(TOP)/frameworks/base/media/libstagefright/mpeg2ts \ $(TOP)/frameworks/base/media/libstagefright/httplive \ + $(TOP)/frameworks/base/media/libstagefright/rtsp \ LOCAL_MODULE:= libstagefright_nuplayer diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index 6b40528..4c710b4 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -25,6 +25,7 @@ #include "NuPlayerDriver.h" #include "NuPlayerRenderer.h" #include "NuPlayerSource.h" +#include "RTSPSource.h" #include "StreamingSource.h" #include "ATSParser.h" @@ -87,7 +88,14 @@ void NuPlayer::setDataSource( const char *url, const KeyedVector<String8, String8> *headers) { sp<AMessage> msg = new AMessage(kWhatSetDataSource, id()); - msg->setObject("source", new HTTPLiveSource(url, headers, mUIDValid, mUID)); + if (!strncasecmp(url, "rtsp://", 7)) { + msg->setObject( + "source", new RTSPSource(url, headers, mUIDValid, mUID)); + } else { + msg->setObject( + "source", new HTTPLiveSource(url, headers, mUIDValid, mUID)); + } + msg->post(); } @@ -568,8 +576,15 @@ void NuPlayer::finishReset() { CHECK(mAudioDecoder == NULL); CHECK(mVideoDecoder == NULL); + ++mScanSourcesGeneration; + mScanSourcesPending = false; + mRenderer.clear(); - mSource.clear(); + + if (mSource != NULL) { + mSource->stop(); + mSource.clear(); + } if (mDriver != NULL) { sp<NuPlayerDriver> driver = mDriver.promote(); diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.h b/media/libmediaplayerservice/nuplayer/NuPlayer.h index a5382b4..f90759d 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.h @@ -68,6 +68,7 @@ private: struct Renderer; struct Source; struct StreamingSource; + struct RTSPSource; enum { kWhatSetDataSource = '=DaS', diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp index 07e347e..bf19040 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp @@ -219,7 +219,9 @@ void NuPlayer::Renderer::signalAudioSinkChanged() { bool NuPlayer::Renderer::onDrainAudioQueue() { uint32_t numFramesPlayed; - CHECK_EQ(mAudioSink->getPosition(&numFramesPlayed), (status_t)OK); + if (mAudioSink->getPosition(&numFramesPlayed) != OK) { + return false; + } ssize_t numFramesAvailableToWrite = mAudioSink->frameCount() - (mNumFramesWritten - numFramesPlayed); diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerSource.h b/media/libmediaplayerservice/nuplayer/NuPlayerSource.h index 8a7eece..531b29f 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerSource.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayerSource.h @@ -28,6 +28,7 @@ struct NuPlayer::Source : public RefBase { Source() {} virtual void start() = 0; + virtual void stop() {} // Returns OK iff more data was available, // an error or ERROR_END_OF_STREAM if not. diff --git a/media/libmediaplayerservice/nuplayer/RTSPSource.cpp b/media/libmediaplayerservice/nuplayer/RTSPSource.cpp new file mode 100644 index 0000000..e72adc4 --- /dev/null +++ b/media/libmediaplayerservice/nuplayer/RTSPSource.cpp @@ -0,0 +1,354 @@ +/* + * Copyright (C) 2010 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_NDEBUG 0 +#define LOG_TAG "RTSPSource" +#include <utils/Log.h> + +#include "RTSPSource.h" + +#include "AnotherPacketSource.h" +#include "MyHandler.h" + +#include <media/stagefright/MetaData.h> + +namespace android { + +NuPlayer::RTSPSource::RTSPSource( + const char *url, + const KeyedVector<String8, String8> *headers, + bool uidValid, + uid_t uid) + : mURL(url), + mUIDValid(uidValid), + mUID(uid), + mFlags(0), + mState(DISCONNECTED), + mFinalResult(OK), + mDisconnectReplyID(0) { + if (headers) { + mExtraHeaders = *headers; + + ssize_t index = + mExtraHeaders.indexOfKey(String8("x-hide-urls-from-log")); + + if (index >= 0) { + mFlags |= kFlagIncognito; + + mExtraHeaders.removeItemsAt(index); + } + } +} + +NuPlayer::RTSPSource::~RTSPSource() { + if (mLooper != NULL) { + mLooper->stop(); + } +} + +void NuPlayer::RTSPSource::start() { + if (mLooper == NULL) { + mLooper = new ALooper; + mLooper->setName("rtsp"); + mLooper->start(); + + mReflector = new AHandlerReflector<RTSPSource>(this); + mLooper->registerHandler(mReflector); + } + + CHECK(mHandler == NULL); + + sp<AMessage> notify = new AMessage(kWhatNotify, mReflector->id()); + + mHandler = new MyHandler(mURL.c_str(), notify, mUIDValid, mUID); + mLooper->registerHandler(mHandler); + + CHECK_EQ(mState, (int)DISCONNECTED); + mState = CONNECTING; + + mHandler->connect(); +} + +void NuPlayer::RTSPSource::stop() { + sp<AMessage> msg = new AMessage(kWhatDisconnect, mReflector->id()); + + sp<AMessage> dummy; + msg->postAndAwaitResponse(&dummy); +} + +status_t NuPlayer::RTSPSource::feedMoreTSData() { + return mFinalResult; +} + +sp<MetaData> NuPlayer::RTSPSource::getFormat(bool audio) { + sp<AnotherPacketSource> source = getSource(audio); + + if (source == NULL) { + return NULL; + } + + return source->getFormat(); +} + +status_t NuPlayer::RTSPSource::dequeueAccessUnit( + bool audio, sp<ABuffer> *accessUnit) { + sp<AnotherPacketSource> source = getSource(audio); + + if (source == NULL) { + return -EWOULDBLOCK; + } + + status_t finalResult; + if (!source->hasBufferAvailable(&finalResult)) { + return finalResult == OK ? -EWOULDBLOCK : finalResult; + } + + return source->dequeueAccessUnit(accessUnit); +} + +sp<AnotherPacketSource> NuPlayer::RTSPSource::getSource(bool audio) { + return audio ? mAudioTrack : mVideoTrack; +} + +status_t NuPlayer::RTSPSource::getDuration(int64_t *durationUs) { + *durationUs = 0ll; + + int64_t audioDurationUs; + if (mAudioTrack != NULL + && mAudioTrack->getFormat()->findInt64( + kKeyDuration, &audioDurationUs) + && audioDurationUs > *durationUs) { + *durationUs = audioDurationUs; + } + + int64_t videoDurationUs; + if (mVideoTrack != NULL + && mVideoTrack->getFormat()->findInt64( + kKeyDuration, &videoDurationUs) + && videoDurationUs > *durationUs) { + *durationUs = videoDurationUs; + } + + return OK; +} + +status_t NuPlayer::RTSPSource::seekTo(int64_t seekTimeUs) { + if (mState != CONNECTED) { + return UNKNOWN_ERROR; + } + + mState = SEEKING; + mHandler->seek(seekTimeUs); + + return OK; +} + +bool NuPlayer::RTSPSource::isSeekable() { + return true; +} + +void NuPlayer::RTSPSource::onMessageReceived(const sp<AMessage> &msg) { + if (msg->what() == kWhatDisconnect) { + uint32_t replyID; + CHECK(msg->senderAwaitsResponse(&replyID)); + + mDisconnectReplyID = replyID; + finishDisconnectIfPossible(); + return; + } + + CHECK_EQ(msg->what(), (int)kWhatNotify); + + int32_t what; + CHECK(msg->findInt32("what", &what)); + + switch (what) { + case MyHandler::kWhatConnected: + onConnected(); + break; + + case MyHandler::kWhatDisconnected: + onDisconnected(msg); + break; + + case MyHandler::kWhatSeekDone: + { + mState = CONNECTED; + break; + } + + case MyHandler::kWhatAccessUnit: + { + size_t trackIndex; + CHECK(msg->findSize("trackIndex", &trackIndex)); + CHECK_LT(trackIndex, mTracks.size()); + + sp<RefBase> obj; + CHECK(msg->findObject("accessUnit", &obj)); + + sp<ABuffer> accessUnit = static_cast<ABuffer *>(obj.get()); + + int32_t damaged; + if (accessUnit->meta()->findInt32("damaged", &damaged) + && damaged) { + LOGI("dropping damaged access unit."); + break; + } + + const TrackInfo &info = mTracks.editItemAt(trackIndex); + sp<AnotherPacketSource> source = info.mSource; + if (source != NULL) { +#if 1 + uint32_t rtpTime; + CHECK(accessUnit->meta()->findInt32("rtp-time", (int32_t *)&rtpTime)); + + int64_t nptUs = + ((double)rtpTime - (double)info.mRTPTime) + / info.mTimeScale + * 1000000ll + + info.mNormalPlaytimeUs; + + accessUnit->meta()->setInt64("timeUs", nptUs); +#endif + + source->queueAccessUnit(accessUnit); + } + break; + } + + case MyHandler::kWhatEOS: + { + size_t trackIndex; + CHECK(msg->findSize("trackIndex", &trackIndex)); + CHECK_LT(trackIndex, mTracks.size()); + + int32_t finalResult; + CHECK(msg->findInt32("finalResult", &finalResult)); + CHECK_NE(finalResult, (status_t)OK); + + TrackInfo *info = &mTracks.editItemAt(trackIndex); + sp<AnotherPacketSource> source = info->mSource; + if (source != NULL) { + source->signalEOS(finalResult); + } + + break; + } + + case MyHandler::kWhatSeekDiscontinuity: + { + size_t trackIndex; + CHECK(msg->findSize("trackIndex", &trackIndex)); + CHECK_LT(trackIndex, mTracks.size()); + + TrackInfo *info = &mTracks.editItemAt(trackIndex); + sp<AnotherPacketSource> source = info->mSource; + if (source != NULL) { + source->queueDiscontinuity(ATSParser::DISCONTINUITY_SEEK, NULL); + } + + break; + } + + case MyHandler::kWhatNormalPlayTimeMapping: + { + size_t trackIndex; + CHECK(msg->findSize("trackIndex", &trackIndex)); + CHECK_LT(trackIndex, mTracks.size()); + + uint32_t rtpTime; + CHECK(msg->findInt32("rtpTime", (int32_t *)&rtpTime)); + + int64_t nptUs; + CHECK(msg->findInt64("nptUs", &nptUs)); + + TrackInfo *info = &mTracks.editItemAt(trackIndex); + info->mRTPTime = rtpTime; + info->mNormalPlaytimeUs = nptUs; + break; + } + + default: + TRESPASS(); + } +} + +void NuPlayer::RTSPSource::onConnected() { + CHECK(mAudioTrack == NULL); + CHECK(mVideoTrack == NULL); + + size_t numTracks = mHandler->countTracks(); + for (size_t i = 0; i < numTracks; ++i) { + int32_t timeScale; + sp<MetaData> format = mHandler->getTrackFormat(i, &timeScale); + + const char *mime; + CHECK(format->findCString(kKeyMIMEType, &mime)); + + bool isAudio = !strncasecmp(mime, "audio/", 6); + bool isVideo = !strncasecmp(mime, "video/", 6); + + TrackInfo info; + info.mTimeScale = timeScale; + info.mRTPTime = 0; + info.mNormalPlaytimeUs = 0ll; + + if ((isAudio && mAudioTrack == NULL) + || (isVideo && mVideoTrack == NULL)) { + sp<AnotherPacketSource> source = new AnotherPacketSource(format); + + if (isAudio) { + mAudioTrack = source; + } else { + mVideoTrack = source; + } + + info.mSource = source; + } + + mTracks.push(info); + } + + mState = CONNECTED; +} + +void NuPlayer::RTSPSource::onDisconnected(const sp<AMessage> &msg) { + status_t err; + CHECK(msg->findInt32("result", &err)); + CHECK_NE(err, (status_t)OK); + + mLooper->unregisterHandler(mHandler->id()); + mHandler.clear(); + + mState = DISCONNECTED; + mFinalResult = err; + + if (mDisconnectReplyID != 0) { + finishDisconnectIfPossible(); + } +} + +void NuPlayer::RTSPSource::finishDisconnectIfPossible() { + if (mState != DISCONNECTED) { + mHandler->disconnect(); + return; + } + + (new AMessage)->postReply(mDisconnectReplyID); + mDisconnectReplyID = 0; +} + +} // namespace android diff --git a/media/libmediaplayerservice/nuplayer/RTSPSource.h b/media/libmediaplayerservice/nuplayer/RTSPSource.h new file mode 100644 index 0000000..66eab72 --- /dev/null +++ b/media/libmediaplayerservice/nuplayer/RTSPSource.h @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2010 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. + */ + +#ifndef RTSP_SOURCE_H_ + +#define RTSP_SOURCE_H_ + +#include "NuPlayerSource.h" + +#include <media/stagefright/foundation/AHandlerReflector.h> + +namespace android { + +struct ALooper; +struct AnotherPacketSource; +struct MyHandler; + +struct NuPlayer::RTSPSource : public NuPlayer::Source { + RTSPSource( + const char *url, + const KeyedVector<String8, String8> *headers, + bool uidValid = false, + uid_t uid = 0); + + virtual void start(); + virtual void stop(); + + virtual status_t feedMoreTSData(); + + virtual sp<MetaData> getFormat(bool audio); + virtual status_t dequeueAccessUnit(bool audio, sp<ABuffer> *accessUnit); + + virtual status_t getDuration(int64_t *durationUs); + virtual status_t seekTo(int64_t seekTimeUs); + virtual bool isSeekable(); + + void onMessageReceived(const sp<AMessage> &msg); + +protected: + virtual ~RTSPSource(); + +private: + enum { + kWhatNotify = 'noti', + kWhatDisconnect = 'disc', + }; + + enum State { + DISCONNECTED, + CONNECTING, + CONNECTED, + SEEKING, + }; + + enum Flags { + // Don't log any URLs. + kFlagIncognito = 1, + }; + + struct TrackInfo { + sp<AnotherPacketSource> mSource; + + int32_t mTimeScale; + uint32_t mRTPTime; + int64_t mNormalPlaytimeUs; + }; + + AString mURL; + KeyedVector<String8, String8> mExtraHeaders; + bool mUIDValid; + uid_t mUID; + uint32_t mFlags; + State mState; + status_t mFinalResult; + uint32_t mDisconnectReplyID; + + sp<ALooper> mLooper; + sp<AHandlerReflector<RTSPSource> > mReflector; + sp<MyHandler> mHandler; + + Vector<TrackInfo> mTracks; + sp<AnotherPacketSource> mAudioTrack; + sp<AnotherPacketSource> mVideoTrack; + + sp<AnotherPacketSource> getSource(bool audio); + + void onConnected(); + void onDisconnected(const sp<AMessage> &msg); + void finishDisconnectIfPossible(); + + DISALLOW_EVIL_CONSTRUCTORS(RTSPSource); +}; + +} // namespace android + +#endif // RTSP_SOURCE_H_ diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index 9cb18de..d947760 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -681,6 +681,10 @@ void ACodec::setComponentRole( static const MimeToRole kMimeToRole[] = { { MEDIA_MIMETYPE_AUDIO_MPEG, "audio_decoder.mp3", "audio_encoder.mp3" }, + { MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_I, + "audio_decoder.mp1", "audio_encoder.mp1" }, + { MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II, + "audio_decoder.mp2", "audio_encoder.mp2" }, { MEDIA_MIMETYPE_AUDIO_AMR_NB, "audio_decoder.amrnb", "audio_encoder.amrnb" }, { MEDIA_MIMETYPE_AUDIO_AMR_WB, diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk index 0b1a2af..0aeb515 100644 --- a/media/libstagefright/Android.mk +++ b/media/libstagefright/Android.mk @@ -58,7 +58,6 @@ LOCAL_C_INCLUDES:= \ $(TOP)/frameworks/base/include/media/stagefright/openmax \ $(TOP)/external/flac/include \ $(TOP)/external/tremolo \ - $(TOP)/frameworks/base/media/libstagefright/rtsp \ $(TOP)/external/openssl/include \ LOCAL_SHARED_LIBRARIES := \ @@ -88,7 +87,6 @@ LOCAL_STATIC_LIBRARIES := \ libvpx \ libstagefright_mpeg2ts \ libstagefright_httplive \ - libstagefright_rtsp \ libstagefright_id3 \ libFLAC \ diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 1165af5..1c7e58d 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -22,7 +22,6 @@ #include <dlfcn.h> -#include "include/ARTSPController.h" #include "include/AwesomePlayer.h" #include "include/DRMExtractor.h" #include "include/SoftwareRenderer.h" @@ -53,7 +52,6 @@ #include <gui/SurfaceTextureClient.h> #include <surfaceflinger/ISurfaceComposer.h> -#include <media/stagefright/foundation/ALooper.h> #include <media/stagefright/foundation/AMessage.h> #include <cutils/properties.h> @@ -65,7 +63,6 @@ namespace android { static int64_t kLowWaterMarkUs = 2000000ll; // 2secs static int64_t kHighWaterMarkUs = 5000000ll; // 5secs -static int64_t kHighWaterMarkRTSPUs = 4000000ll; // 4secs static const size_t kLowWaterMarkBytes = 40000; static const size_t kHighWaterMarkBytes = 200000; @@ -485,9 +482,6 @@ void AwesomePlayer::reset_l() { if (mConnectingDataSource != NULL) { LOGI("interrupting the connection process"); mConnectingDataSource->disconnect(); - } else if (mConnectingRTSPController != NULL) { - LOGI("interrupting the connection process"); - mConnectingRTSPController->disconnect(); } if (mFlags & PREPARING_CONNECTED) { @@ -534,11 +528,6 @@ void AwesomePlayer::reset_l() { mVideoRenderer.clear(); - if (mRTSPController != NULL) { - mRTSPController->disconnect(); - mRTSPController.clear(); - } - if (mVideoSource != NULL) { shutdownVideoDecoder_l(); } @@ -612,10 +601,7 @@ bool AwesomePlayer::getBitrate(int64_t *bitrate) { bool AwesomePlayer::getCachedDuration_l(int64_t *durationUs, bool *eos) { int64_t bitrate; - if (mRTSPController != NULL) { - *durationUs = mRTSPController->getQueueDurationUs(eos); - return true; - } else if (mCachedSource != NULL && getBitrate(&bitrate)) { + if (mCachedSource != NULL && getBitrate(&bitrate)) { status_t finalStatus; size_t cachedDataRemaining = mCachedSource->approxDataRemaining(&finalStatus); *durationUs = cachedDataRemaining * 8000000ll / bitrate; @@ -751,9 +737,6 @@ void AwesomePlayer::onBufferingUpdate() { LOGV("cachedDurationUs = %.2f secs, eos=%d", cachedDurationUs / 1E6, eos); - int64_t highWaterMarkUs = - (mRTSPController != NULL) ? kHighWaterMarkRTSPUs : kHighWaterMarkUs; - if ((mFlags & PLAYING) && !eos && (cachedDurationUs < kLowWaterMarkUs)) { LOGI("cache is running low (%.2f secs) , pausing.", @@ -763,7 +746,7 @@ void AwesomePlayer::onBufferingUpdate() { ensureCacheIsFetching_l(); sendCacheStats(); notifyListener_l(MEDIA_INFO, MEDIA_INFO_BUFFERING_START); - } else if (eos || cachedDurationUs > highWaterMarkUs) { + } else if (eos || cachedDurationUs > kHighWaterMarkUs) { if (mFlags & CACHE_UNDERRUN) { LOGI("cache has filled up (%.2f secs), resuming.", cachedDurationUs / 1E6); @@ -1081,7 +1064,8 @@ void AwesomePlayer::initRenderer_l() { if (USE_SURFACE_ALLOC && !strncmp(component, "OMX.", 4) - && strncmp(component, "OMX.google.", 11)) { + && strncmp(component, "OMX.google.", 11) + && strcmp(component, "OMX.Nvidia.mpeg2v.decode")) { // Hardware decoders avoid the CPU color conversion by decoding // directly to ANativeBuffers, so we must use a renderer that // just pushes those buffers to the ANativeWindow. @@ -1263,10 +1247,7 @@ status_t AwesomePlayer::getDuration(int64_t *durationUs) { } status_t AwesomePlayer::getPosition(int64_t *positionUs) { - if (mRTSPController != NULL) { - *positionUs = mRTSPController->getNormalPlayTimeUs(); - } - else if (mSeeking != NO_SEEK) { + if (mSeeking != NO_SEEK) { *positionUs = mSeekTimeUs; } else if (mVideoSource != NULL && (mAudioPlayer == NULL || !(mFlags & VIDEO_AT_EOS))) { @@ -1316,25 +1297,7 @@ status_t AwesomePlayer::setTimedTextTrackIndex(int32_t index) { } } -// static -void AwesomePlayer::OnRTSPSeekDoneWrapper(void *cookie) { - static_cast<AwesomePlayer *>(cookie)->onRTSPSeekDone(); -} - -void AwesomePlayer::onRTSPSeekDone() { - if (!mSeekNotificationSent) { - notifyListener_l(MEDIA_SEEK_COMPLETE); - mSeekNotificationSent = true; - } -} - status_t AwesomePlayer::seekTo_l(int64_t timeUs) { - if (mRTSPController != NULL) { - mSeekNotificationSent = false; - mRTSPController->seekAsync(timeUs, OnRTSPSeekDoneWrapper, this); - return OK; - } - if (mFlags & CACHE_UNDERRUN) { modifyFlags(CACHE_UNDERRUN, CLEAR); play_l(); @@ -1770,7 +1733,6 @@ void AwesomePlayer::onVideoEvent() { int64_t latenessUs = nowUs - timeUs; if (latenessUs > 500000ll - && mRTSPController == NULL && mAudioPlayer != NULL && mAudioPlayer->getMediaTimeMapping( &realTimeUs, &mediaTimeUs)) { @@ -2085,34 +2047,6 @@ status_t AwesomePlayer::finishSetDataSource_l() { return UNKNOWN_ERROR; } } - } else if (!strncasecmp("rtsp://", mUri.string(), 7)) { - if (mLooper == NULL) { - mLooper = new ALooper; - mLooper->setName("rtsp"); - mLooper->start(); - } - mRTSPController = new ARTSPController(mLooper); - mConnectingRTSPController = mRTSPController; - - if (mUIDValid) { - mConnectingRTSPController->setUID(mUID); - } - - mLock.unlock(); - status_t err = mRTSPController->connect(mUri.string()); - mLock.lock(); - - mConnectingRTSPController.clear(); - - LOGI("ARTSPController::connect returned %d", err); - - if (err != OK) { - mRTSPController.clear(); - return err; - } - - sp<MediaExtractor> extractor = mRTSPController.get(); - return setDataSource_l(extractor); } else { dataSource = DataSource::CreateFromURI(mUri.string(), &mUriHeaders); } @@ -2224,7 +2158,7 @@ void AwesomePlayer::onPrepareAsyncEvent() { modifyFlags(PREPARING_CONNECTED, SET); - if (isStreamingHTTP() || mRTSPController != NULL) { + if (isStreamingHTTP()) { postBufferingEvent_l(); } else { finishAsyncPrepare_l(); diff --git a/media/libstagefright/DataSource.cpp b/media/libstagefright/DataSource.cpp index c16b3b5..70523c1 100644 --- a/media/libstagefright/DataSource.cpp +++ b/media/libstagefright/DataSource.cpp @@ -20,6 +20,7 @@ #include "include/MPEG4Extractor.h" #include "include/WAVExtractor.h" #include "include/OggExtractor.h" +#include "include/MPEG2PSExtractor.h" #include "include/MPEG2TSExtractor.h" #include "include/NuCachedSource2.h" #include "include/HTTPBase.h" @@ -113,6 +114,7 @@ void DataSource::RegisterDefaultSniffers() { RegisterSniffer(SniffMP3); RegisterSniffer(SniffAAC); RegisterSniffer(SniffAVI); + RegisterSniffer(SniffMPEG2PS); char value[PROPERTY_VALUE_MAX]; if (property_get("drm.service.enabled", value, NULL) diff --git a/media/libstagefright/MP3Extractor.cpp b/media/libstagefright/MP3Extractor.cpp index 92e84c2..34e9cd7 100644 --- a/media/libstagefright/MP3Extractor.cpp +++ b/media/libstagefright/MP3Extractor.cpp @@ -25,11 +25,11 @@ #include "include/VBRISeeker.h" #include "include/XINGSeeker.h" +#include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/DataSource.h> #include <media/stagefright/MediaBuffer.h> #include <media/stagefright/MediaBufferGroup.h> -#include <media/stagefright/MediaDebug.h> #include <media/stagefright/MediaDefs.h> #include <media/stagefright/MediaErrors.h> #include <media/stagefright/MediaSource.h> @@ -289,9 +289,24 @@ MP3Extractor::MP3Extractor( GetMPEGAudioFrameSize( header, &frame_size, &sample_rate, &num_channels, &bitrate); + unsigned layer = 4 - ((header >> 17) & 3); + mMeta = new MetaData; - mMeta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG); + switch (layer) { + case 1: + mMeta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_I); + break; + case 2: + mMeta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II); + break; + case 3: + mMeta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG); + break; + default: + TRESPASS(); + } + mMeta->setInt32(kKeySampleRate, sample_rate); mMeta->setInt32(kKeyBitRate, bitrate * 1000); mMeta->setInt32(kKeyChannelCount, num_channels); diff --git a/media/libstagefright/MediaDefs.cpp b/media/libstagefright/MediaDefs.cpp index 01f1fba..444e823 100644 --- a/media/libstagefright/MediaDefs.cpp +++ b/media/libstagefright/MediaDefs.cpp @@ -30,6 +30,8 @@ const char *MEDIA_MIMETYPE_VIDEO_RAW = "video/raw"; const char *MEDIA_MIMETYPE_AUDIO_AMR_NB = "audio/3gpp"; const char *MEDIA_MIMETYPE_AUDIO_AMR_WB = "audio/amr-wb"; const char *MEDIA_MIMETYPE_AUDIO_MPEG = "audio/mpeg"; +const char *MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_I = "audio/mpeg-L1"; +const char *MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II = "audio/mpeg-L2"; const char *MEDIA_MIMETYPE_AUDIO_AAC = "audio/mp4a-latm"; const char *MEDIA_MIMETYPE_AUDIO_QCELP = "audio/qcelp"; const char *MEDIA_MIMETYPE_AUDIO_VORBIS = "audio/vorbis"; @@ -45,6 +47,7 @@ const char *MEDIA_MIMETYPE_CONTAINER_OGG = "application/ogg"; const char *MEDIA_MIMETYPE_CONTAINER_MATROSKA = "video/x-matroska"; const char *MEDIA_MIMETYPE_CONTAINER_MPEG2TS = "video/mp2ts"; const char *MEDIA_MIMETYPE_CONTAINER_AVI = "video/avi"; +const char *MEDIA_MIMETYPE_CONTAINER_MPEG2PS = "video/mp2p"; const char *MEDIA_MIMETYPE_CONTAINER_WVM = "video/wvm"; diff --git a/media/libstagefright/MediaExtractor.cpp b/media/libstagefright/MediaExtractor.cpp index a8023df..2221268 100644 --- a/media/libstagefright/MediaExtractor.cpp +++ b/media/libstagefright/MediaExtractor.cpp @@ -24,6 +24,7 @@ #include "include/MPEG4Extractor.h" #include "include/WAVExtractor.h" #include "include/OggExtractor.h" +#include "include/MPEG2PSExtractor.h" #include "include/MPEG2TSExtractor.h" #include "include/DRMExtractor.h" #include "include/WVMExtractor.h" @@ -115,6 +116,8 @@ sp<MediaExtractor> MediaExtractor::Create( ret = new WVMExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AAC_ADTS)) { ret = new AACExtractor(source); + } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG2PS)) { + ret = new MPEG2PSExtractor(source); } if (ret != NULL) { diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp index 00d414c..7e55790 100755 --- a/media/libstagefright/OMXCodec.cpp +++ b/media/libstagefright/OMXCodec.cpp @@ -109,6 +109,7 @@ static const CodecInfo kDecoderInfo[] = { { MEDIA_MIMETYPE_IMAGE_JPEG, "OMX.TI.JPEG.decode" }, // { MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.TI.MP3.decode" }, { MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.google.mp3.decoder" }, + { MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II, "OMX.Nvidia.mp2.decoder" }, // { MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.TI.AMR.decode" }, // { MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.Nvidia.amr.decoder" }, { MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.google.amrnb.decoder" }, @@ -1471,7 +1472,9 @@ OMXCodec::OMXCodec( mOutputPortSettingsChangedPending(false), mLeftOverBuffer(NULL), mPaused(false), - mNativeWindow(!strncmp(componentName, "OMX.google.", 11) + mNativeWindow( + (!strncmp(componentName, "OMX.google.", 11) + || !strcmp(componentName, "OMX.Nvidia.mpeg2v.decode")) ? NULL : nativeWindow) { mPortStatus[kPortIndexInput] = ENABLED; mPortStatus[kPortIndexOutput] = ENABLED; @@ -1492,6 +1495,12 @@ void OMXCodec::setComponentRole( static const MimeToRole kMimeToRole[] = { { MEDIA_MIMETYPE_AUDIO_MPEG, "audio_decoder.mp3", "audio_encoder.mp3" }, + { MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_I, + "audio_decoder.mp1", "audio_encoder.mp1" }, + { MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II, + "audio_decoder.mp2", "audio_encoder.mp2" }, + { MEDIA_MIMETYPE_AUDIO_MPEG, + "audio_decoder.mp3", "audio_encoder.mp3" }, { MEDIA_MIMETYPE_AUDIO_AMR_NB, "audio_decoder.amrnb", "audio_encoder.amrnb" }, { MEDIA_MIMETYPE_AUDIO_AMR_WB, diff --git a/media/libstagefright/StagefrightMediaScanner.cpp b/media/libstagefright/StagefrightMediaScanner.cpp index 571e8be..bb6e4cd 100644 --- a/media/libstagefright/StagefrightMediaScanner.cpp +++ b/media/libstagefright/StagefrightMediaScanner.cpp @@ -38,7 +38,7 @@ static bool FileHasAcceptableExtension(const char *extension) { ".mpeg", ".ogg", ".mid", ".smf", ".imy", ".wma", ".aac", ".wav", ".amr", ".midi", ".xmf", ".rtttl", ".rtx", ".ota", ".mkv", ".mka", ".webm", ".ts", ".fl", ".flac", ".mxmf", - ".avi", + ".avi", ".mpeg", ".mpg" }; static const size_t kNumValidExtensions = sizeof(kValidExtensions) / sizeof(kValidExtensions[0]); diff --git a/media/libstagefright/include/ARTSPController.h b/media/libstagefright/include/ARTSPController.h deleted file mode 100644 index 2bd5be6..0000000 --- a/media/libstagefright/include/ARTSPController.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (C) 2010 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. - */ - -#ifndef A_RTSP_CONTROLLER_H_ - -#define A_RTSP_CONTROLLER_H_ - -#include <media/stagefright/foundation/ABase.h> -#include <media/stagefright/foundation/AHandlerReflector.h> -#include <media/stagefright/MediaExtractor.h> - -namespace android { - -struct ALooper; -struct MyHandler; - -struct ARTSPController : public MediaExtractor { - ARTSPController(const sp<ALooper> &looper); - - void setUID(uid_t uid); - - status_t connect(const char *url); - void disconnect(); - - void seekAsync(int64_t timeUs, void (*seekDoneCb)(void *), void *cookie); - - virtual size_t countTracks(); - virtual sp<MediaSource> getTrack(size_t index); - - virtual sp<MetaData> getTrackMetaData( - size_t index, uint32_t flags); - - int64_t getNormalPlayTimeUs(); - int64_t getQueueDurationUs(bool *eos); - - void onMessageReceived(const sp<AMessage> &msg); - - virtual uint32_t flags() const { - // Seeking 10secs forward or backward is a very expensive operation - // for rtsp, so let's not enable that. - // The user can always use the seek bar. - - return CAN_PAUSE | CAN_SEEK; - } - -protected: - virtual ~ARTSPController(); - -private: - enum { - kWhatConnectDone = 'cdon', - kWhatDisconnectDone = 'ddon', - kWhatSeekDone = 'sdon', - }; - - enum State { - DISCONNECTED, - CONNECTED, - CONNECTING, - }; - - Mutex mLock; - Condition mCondition; - - State mState; - status_t mConnectionResult; - - sp<ALooper> mLooper; - sp<MyHandler> mHandler; - sp<AHandlerReflector<ARTSPController> > mReflector; - - bool mUIDValid; - uid_t mUID; - - void (*mSeekDoneCb)(void *); - void *mSeekDoneCookie; - int64_t mLastSeekCompletedTimeUs; - - DISALLOW_EVIL_CONSTRUCTORS(ARTSPController); -}; - -} // namespace android - -#endif // A_RTSP_CONTROLLER_H_ diff --git a/media/libstagefright/include/AwesomePlayer.h b/media/libstagefright/include/AwesomePlayer.h index 8e73121..7d6bcad 100644 --- a/media/libstagefright/include/AwesomePlayer.h +++ b/media/libstagefright/include/AwesomePlayer.h @@ -38,9 +38,6 @@ struct MediaSource; struct NuCachedSource2; struct ISurfaceTexture; -struct ALooper; -struct ARTSPController; - class DrmManagerClinet; class DecryptHandle; @@ -233,10 +230,6 @@ private: sp<HTTPBase> mConnectingDataSource; sp<NuCachedSource2> mCachedSource; - sp<ALooper> mLooper; - sp<ARTSPController> mRTSPController; - sp<ARTSPController> mConnectingRTSPController; - DrmManagerClient *mDrmManagerClient; sp<DecryptHandle> mDecryptHandle; @@ -287,9 +280,6 @@ private: static bool ContinuePreparation(void *cookie); - static void OnRTSPSeekDoneWrapper(void *cookie); - void onRTSPSeekDone(); - bool getBitrate(int64_t *bitrate); void finishSeekIfNecessary(int64_t videoTimeUs); diff --git a/media/libstagefright/include/MPEG2PSExtractor.h b/media/libstagefright/include/MPEG2PSExtractor.h new file mode 100644 index 0000000..fb76564 --- /dev/null +++ b/media/libstagefright/include/MPEG2PSExtractor.h @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2011 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. + */ + +#ifndef MPEG2_PS_EXTRACTOR_H_ + +#define MPEG2_PS_EXTRACTOR_H_ + +#include <media/stagefright/foundation/ABase.h> +#include <media/stagefright/MediaExtractor.h> +#include <utils/threads.h> +#include <utils/KeyedVector.h> + +namespace android { + +struct ABuffer; +struct AMessage; +struct Track; +struct String8; + +struct MPEG2PSExtractor : public MediaExtractor { + MPEG2PSExtractor(const sp<DataSource> &source); + + virtual size_t countTracks(); + virtual sp<MediaSource> getTrack(size_t index); + virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags); + + virtual sp<MetaData> getMetaData(); + + virtual uint32_t flags() const; + +protected: + virtual ~MPEG2PSExtractor(); + +private: + struct Track; + struct WrappedTrack; + + mutable Mutex mLock; + sp<DataSource> mDataSource; + + off64_t mOffset; + status_t mFinalResult; + sp<ABuffer> mBuffer; + KeyedVector<unsigned, sp<Track> > mTracks; + bool mScanning; + + bool mProgramStreamMapValid; + KeyedVector<unsigned, unsigned> mStreamTypeByESID; + + status_t feedMore(); + + status_t dequeueChunk(); + ssize_t dequeuePack(); + ssize_t dequeueSystemHeader(); + ssize_t dequeuePES(); + + DISALLOW_EVIL_CONSTRUCTORS(MPEG2PSExtractor); +}; + +bool SniffMPEG2PS( + const sp<DataSource> &source, String8 *mimeType, float *confidence, + sp<AMessage> *); + +} // namespace android + +#endif // MPEG2_PS_EXTRACTOR_H_ + diff --git a/media/libstagefright/mpeg2ts/ATSParser.h b/media/libstagefright/mpeg2ts/ATSParser.h index 388cb54..878e534 100644 --- a/media/libstagefright/mpeg2ts/ATSParser.h +++ b/media/libstagefright/mpeg2ts/ATSParser.h @@ -64,12 +64,9 @@ struct ATSParser : public RefBase { bool PTSTimeDeltaEstablished(); -protected: - virtual ~ATSParser(); - -private: enum { // From ISO/IEC 13818-1: 2000 (E), Table 2-29 + STREAMTYPE_RESERVED = 0x00, STREAMTYPE_MPEG1_VIDEO = 0x01, STREAMTYPE_MPEG2_VIDEO = 0x02, STREAMTYPE_MPEG1_AUDIO = 0x03, @@ -79,6 +76,10 @@ private: STREAMTYPE_H264 = 0x1b, }; +protected: + virtual ~ATSParser(); + +private: struct Program; struct Stream; diff --git a/media/libstagefright/mpeg2ts/Android.mk b/media/libstagefright/mpeg2ts/Android.mk index 4a30416..578c669 100644 --- a/media/libstagefright/mpeg2ts/Android.mk +++ b/media/libstagefright/mpeg2ts/Android.mk @@ -6,6 +6,7 @@ LOCAL_SRC_FILES:= \ AnotherPacketSource.cpp \ ATSParser.cpp \ ESQueue.cpp \ + MPEG2PSExtractor.cpp \ MPEG2TSExtractor.cpp \ LOCAL_C_INCLUDES:= \ diff --git a/media/libstagefright/mpeg2ts/ESQueue.cpp b/media/libstagefright/mpeg2ts/ESQueue.cpp index a56da36..b9a4826 100644 --- a/media/libstagefright/mpeg2ts/ESQueue.cpp +++ b/media/libstagefright/mpeg2ts/ESQueue.cpp @@ -585,6 +585,8 @@ sp<ABuffer> ElementaryStreamQueue::dequeueAccessUnitMPEGAudio() { return NULL; } + unsigned layer = 4 - ((header >> 17) & 3); + sp<ABuffer> accessUnit = new ABuffer(frameSize); memcpy(accessUnit->data(), data, frameSize); @@ -601,7 +603,24 @@ sp<ABuffer> ElementaryStreamQueue::dequeueAccessUnitMPEGAudio() { if (mFormat == NULL) { mFormat = new MetaData; - mFormat->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG); + + switch (layer) { + case 1: + mFormat->setCString( + kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_I); + break; + case 2: + mFormat->setCString( + kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG_LAYER_II); + break; + case 3: + mFormat->setCString( + kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_MPEG); + break; + default: + TRESPASS(); + } + mFormat->setInt32(kKeySampleRate, samplingRate); mFormat->setInt32(kKeyChannelCount, numChannels); } diff --git a/media/libstagefright/mpeg2ts/MPEG2PSExtractor.cpp b/media/libstagefright/mpeg2ts/MPEG2PSExtractor.cpp new file mode 100644 index 0000000..f55be6e --- /dev/null +++ b/media/libstagefright/mpeg2ts/MPEG2PSExtractor.cpp @@ -0,0 +1,715 @@ +/* + * Copyright (C) 2011 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_NDEBUG 0 +#define LOG_TAG "MPEG2PSExtractor" +#include <utils/Log.h> + +#include "include/MPEG2PSExtractor.h" + +#include "AnotherPacketSource.h" +#include "ESQueue.h" + +#include <media/stagefright/foundation/ABitReader.h> +#include <media/stagefright/foundation/ABuffer.h> +#include <media/stagefright/foundation/ADebug.h> +#include <media/stagefright/foundation/AMessage.h> +#include <media/stagefright/foundation/hexdump.h> +#include <media/stagefright/DataSource.h> +#include <media/stagefright/MediaDefs.h> +#include <media/stagefright/MediaErrors.h> +#include <media/stagefright/MediaSource.h> +#include <media/stagefright/MetaData.h> +#include <media/stagefright/Utils.h> +#include <utils/String8.h> + +namespace android { + +struct MPEG2PSExtractor::Track : public MediaSource { + Track(MPEG2PSExtractor *extractor, + unsigned stream_id, unsigned stream_type); + + virtual status_t start(MetaData *params); + virtual status_t stop(); + virtual sp<MetaData> getFormat(); + + virtual status_t read( + MediaBuffer **buffer, const ReadOptions *options); + +protected: + virtual ~Track(); + +private: + friend struct MPEG2PSExtractor; + + MPEG2PSExtractor *mExtractor; + + unsigned mStreamID; + unsigned mStreamType; + ElementaryStreamQueue *mQueue; + sp<AnotherPacketSource> mSource; + + status_t appendPESData( + unsigned PTS_DTS_flags, + uint64_t PTS, uint64_t DTS, + const uint8_t *data, size_t size); + + DISALLOW_EVIL_CONSTRUCTORS(Track); +}; + +struct MPEG2PSExtractor::WrappedTrack : public MediaSource { + WrappedTrack(const sp<MPEG2PSExtractor> &extractor, const sp<Track> &track); + + virtual status_t start(MetaData *params); + virtual status_t stop(); + virtual sp<MetaData> getFormat(); + + virtual status_t read( + MediaBuffer **buffer, const ReadOptions *options); + +protected: + virtual ~WrappedTrack(); + +private: + sp<MPEG2PSExtractor> mExtractor; + sp<MPEG2PSExtractor::Track> mTrack; + + DISALLOW_EVIL_CONSTRUCTORS(WrappedTrack); +}; + +//////////////////////////////////////////////////////////////////////////////// + +MPEG2PSExtractor::MPEG2PSExtractor(const sp<DataSource> &source) + : mDataSource(source), + mOffset(0), + mFinalResult(OK), + mBuffer(new ABuffer(0)), + mScanning(true), + mProgramStreamMapValid(false) { + for (size_t i = 0; i < 500; ++i) { + if (feedMore() != OK) { + break; + } + } + + // Remove all tracks that were unable to determine their format. + for (size_t i = mTracks.size(); i-- > 0;) { + if (mTracks.valueAt(i)->getFormat() == NULL) { + mTracks.removeItemsAt(i); + } + } + + mScanning = false; +} + +MPEG2PSExtractor::~MPEG2PSExtractor() { +} + +size_t MPEG2PSExtractor::countTracks() { + return mTracks.size(); +} + +sp<MediaSource> MPEG2PSExtractor::getTrack(size_t index) { + if (index >= mTracks.size()) { + return NULL; + } + + return new WrappedTrack(this, mTracks.valueAt(index)); +} + +sp<MetaData> MPEG2PSExtractor::getTrackMetaData(size_t index, uint32_t flags) { + if (index >= mTracks.size()) { + return NULL; + } + + return mTracks.valueAt(index)->getFormat(); +} + +sp<MetaData> MPEG2PSExtractor::getMetaData() { + sp<MetaData> meta = new MetaData; + meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_CONTAINER_MPEG2PS); + + return meta; +} + +uint32_t MPEG2PSExtractor::flags() const { + return CAN_PAUSE; +} + +status_t MPEG2PSExtractor::feedMore() { + Mutex::Autolock autoLock(mLock); + + // How much data we're reading at a time + static const size_t kChunkSize = 8192; + + for (;;) { + status_t err = dequeueChunk(); + + if (err == -EAGAIN && mFinalResult == OK) { + memmove(mBuffer->base(), mBuffer->data(), mBuffer->size()); + mBuffer->setRange(0, mBuffer->size()); + + if (mBuffer->size() + kChunkSize > mBuffer->capacity()) { + size_t newCapacity = mBuffer->capacity() + kChunkSize; + sp<ABuffer> newBuffer = new ABuffer(newCapacity); + memcpy(newBuffer->data(), mBuffer->data(), mBuffer->size()); + newBuffer->setRange(0, mBuffer->size()); + mBuffer = newBuffer; + } + + ssize_t n = mDataSource->readAt( + mOffset, mBuffer->data() + mBuffer->size(), kChunkSize); + + if (n < (ssize_t)kChunkSize) { + mFinalResult = (n < 0) ? (status_t)n : ERROR_END_OF_STREAM; + return mFinalResult; + } + + mBuffer->setRange(mBuffer->offset(), mBuffer->size() + n); + mOffset += n; + } else if (err != OK) { + mFinalResult = err; + return err; + } else { + return OK; + } + } +} + +status_t MPEG2PSExtractor::dequeueChunk() { + if (mBuffer->size() < 4) { + return -EAGAIN; + } + + if (memcmp("\x00\x00\x01", mBuffer->data(), 3)) { + return ERROR_MALFORMED; + } + + unsigned chunkType = mBuffer->data()[3]; + + ssize_t res; + + switch (chunkType) { + case 0xba: + { + res = dequeuePack(); + break; + } + + case 0xbb: + { + res = dequeueSystemHeader(); + break; + } + + default: + { + res = dequeuePES(); + break; + } + } + + if (res > 0) { + if (mBuffer->size() < (size_t)res) { + return -EAGAIN; + } + + mBuffer->setRange(mBuffer->offset() + res, mBuffer->size() - res); + res = OK; + } + + return res; +} + +ssize_t MPEG2PSExtractor::dequeuePack() { + // 32 + 2 + 3 + 1 + 15 + 1 + 15+ 1 + 9 + 1 + 22 + 1 + 1 | +5 + + if (mBuffer->size() < 14) { + return -EAGAIN; + } + + unsigned pack_stuffing_length = mBuffer->data()[13] & 7; + + return pack_stuffing_length + 14; +} + +ssize_t MPEG2PSExtractor::dequeueSystemHeader() { + if (mBuffer->size() < 6) { + return -EAGAIN; + } + + unsigned header_length = U16_AT(mBuffer->data() + 4); + + return header_length + 6; +} + +ssize_t MPEG2PSExtractor::dequeuePES() { + if (mBuffer->size() < 6) { + return -EAGAIN; + } + + unsigned PES_packet_length = U16_AT(mBuffer->data() + 4); + CHECK_NE(PES_packet_length, 0u); + + size_t n = PES_packet_length + 6; + + if (mBuffer->size() < n) { + return -EAGAIN; + } + + ABitReader br(mBuffer->data(), n); + + unsigned packet_startcode_prefix = br.getBits(24); + + LOGV("packet_startcode_prefix = 0x%08x", packet_startcode_prefix); + + if (packet_startcode_prefix != 1) { + LOGV("Supposedly payload_unit_start=1 unit does not start " + "with startcode."); + + return ERROR_MALFORMED; + } + + CHECK_EQ(packet_startcode_prefix, 0x000001u); + + unsigned stream_id = br.getBits(8); + LOGV("stream_id = 0x%02x", stream_id); + + /* unsigned PES_packet_length = */br.getBits(16); + + if (stream_id == 0xbc) { + // program_stream_map + + if (!mScanning) { + return n; + } + + mStreamTypeByESID.clear(); + + /* unsigned current_next_indicator = */br.getBits(1); + /* unsigned reserved = */br.getBits(2); + /* unsigned program_stream_map_version = */br.getBits(5); + /* unsigned reserved = */br.getBits(7); + /* unsigned marker_bit = */br.getBits(1); + unsigned program_stream_info_length = br.getBits(16); + + size_t offset = 0; + while (offset < program_stream_info_length) { + if (offset + 2 > program_stream_info_length) { + return ERROR_MALFORMED; + } + + unsigned descriptor_tag = br.getBits(8); + unsigned descriptor_length = br.getBits(8); + + LOGI("found descriptor tag 0x%02x of length %u", + descriptor_tag, descriptor_length); + + if (offset + 2 + descriptor_length > program_stream_info_length) { + return ERROR_MALFORMED; + } + + br.skipBits(8 * descriptor_length); + + offset += 2 + descriptor_length; + } + + unsigned elementary_stream_map_length = br.getBits(16); + + offset = 0; + while (offset < elementary_stream_map_length) { + if (offset + 4 > elementary_stream_map_length) { + return ERROR_MALFORMED; + } + + unsigned stream_type = br.getBits(8); + unsigned elementary_stream_id = br.getBits(8); + + LOGI("elementary stream id 0x%02x has stream type 0x%02x", + elementary_stream_id, stream_type); + + mStreamTypeByESID.add(elementary_stream_id, stream_type); + + unsigned elementary_stream_info_length = br.getBits(16); + + if (offset + 4 + elementary_stream_info_length + > elementary_stream_map_length) { + return ERROR_MALFORMED; + } + + offset += 4 + elementary_stream_info_length; + } + + /* unsigned CRC32 = */br.getBits(32); + + mProgramStreamMapValid = true; + } else if (stream_id != 0xbe // padding_stream + && stream_id != 0xbf // private_stream_2 + && stream_id != 0xf0 // ECM + && stream_id != 0xf1 // EMM + && stream_id != 0xff // program_stream_directory + && stream_id != 0xf2 // DSMCC + && stream_id != 0xf8) { // H.222.1 type E + CHECK_EQ(br.getBits(2), 2u); + + /* unsigned PES_scrambling_control = */br.getBits(2); + /* unsigned PES_priority = */br.getBits(1); + /* unsigned data_alignment_indicator = */br.getBits(1); + /* unsigned copyright = */br.getBits(1); + /* unsigned original_or_copy = */br.getBits(1); + + unsigned PTS_DTS_flags = br.getBits(2); + LOGV("PTS_DTS_flags = %u", PTS_DTS_flags); + + unsigned ESCR_flag = br.getBits(1); + LOGV("ESCR_flag = %u", ESCR_flag); + + unsigned ES_rate_flag = br.getBits(1); + LOGV("ES_rate_flag = %u", ES_rate_flag); + + unsigned DSM_trick_mode_flag = br.getBits(1); + LOGV("DSM_trick_mode_flag = %u", DSM_trick_mode_flag); + + unsigned additional_copy_info_flag = br.getBits(1); + LOGV("additional_copy_info_flag = %u", additional_copy_info_flag); + + /* unsigned PES_CRC_flag = */br.getBits(1); + /* PES_extension_flag = */br.getBits(1); + + unsigned PES_header_data_length = br.getBits(8); + LOGV("PES_header_data_length = %u", PES_header_data_length); + + unsigned optional_bytes_remaining = PES_header_data_length; + + uint64_t PTS = 0, DTS = 0; + + if (PTS_DTS_flags == 2 || PTS_DTS_flags == 3) { + CHECK_GE(optional_bytes_remaining, 5u); + + CHECK_EQ(br.getBits(4), PTS_DTS_flags); + + PTS = ((uint64_t)br.getBits(3)) << 30; + CHECK_EQ(br.getBits(1), 1u); + PTS |= ((uint64_t)br.getBits(15)) << 15; + CHECK_EQ(br.getBits(1), 1u); + PTS |= br.getBits(15); + CHECK_EQ(br.getBits(1), 1u); + + LOGV("PTS = %llu", PTS); + // LOGI("PTS = %.2f secs", PTS / 90000.0f); + + optional_bytes_remaining -= 5; + + if (PTS_DTS_flags == 3) { + CHECK_GE(optional_bytes_remaining, 5u); + + CHECK_EQ(br.getBits(4), 1u); + + DTS = ((uint64_t)br.getBits(3)) << 30; + CHECK_EQ(br.getBits(1), 1u); + DTS |= ((uint64_t)br.getBits(15)) << 15; + CHECK_EQ(br.getBits(1), 1u); + DTS |= br.getBits(15); + CHECK_EQ(br.getBits(1), 1u); + + LOGV("DTS = %llu", DTS); + + optional_bytes_remaining -= 5; + } + } + + if (ESCR_flag) { + CHECK_GE(optional_bytes_remaining, 6u); + + br.getBits(2); + + uint64_t ESCR = ((uint64_t)br.getBits(3)) << 30; + CHECK_EQ(br.getBits(1), 1u); + ESCR |= ((uint64_t)br.getBits(15)) << 15; + CHECK_EQ(br.getBits(1), 1u); + ESCR |= br.getBits(15); + CHECK_EQ(br.getBits(1), 1u); + + LOGV("ESCR = %llu", ESCR); + /* unsigned ESCR_extension = */br.getBits(9); + + CHECK_EQ(br.getBits(1), 1u); + + optional_bytes_remaining -= 6; + } + + if (ES_rate_flag) { + CHECK_GE(optional_bytes_remaining, 3u); + + CHECK_EQ(br.getBits(1), 1u); + /* unsigned ES_rate = */br.getBits(22); + CHECK_EQ(br.getBits(1), 1u); + + optional_bytes_remaining -= 3; + } + + br.skipBits(optional_bytes_remaining * 8); + + // ES data follows. + + CHECK_GE(PES_packet_length, PES_header_data_length + 3); + + unsigned dataLength = + PES_packet_length - 3 - PES_header_data_length; + + if (br.numBitsLeft() < dataLength * 8) { + LOGE("PES packet does not carry enough data to contain " + "payload. (numBitsLeft = %d, required = %d)", + br.numBitsLeft(), dataLength * 8); + + return ERROR_MALFORMED; + } + + CHECK_GE(br.numBitsLeft(), dataLength * 8); + + ssize_t index = mTracks.indexOfKey(stream_id); + if (index < 0 && mScanning) { + unsigned streamType; + + ssize_t streamTypeIndex; + if (mProgramStreamMapValid + && (streamTypeIndex = + mStreamTypeByESID.indexOfKey(stream_id)) >= 0) { + streamType = mStreamTypeByESID.valueAt(streamTypeIndex); + } else if ((stream_id & ~0x1f) == 0xc0) { + // ISO/IEC 13818-3 or ISO/IEC 11172-3 or ISO/IEC 13818-7 + // or ISO/IEC 14496-3 audio + streamType = ATSParser::STREAMTYPE_MPEG2_AUDIO; + } else if ((stream_id & ~0x0f) == 0xe0) { + // ISO/IEC 13818-2 or ISO/IEC 11172-2 or ISO/IEC 14496-2 video + streamType = ATSParser::STREAMTYPE_MPEG2_VIDEO; + } else { + streamType = ATSParser::STREAMTYPE_RESERVED; + } + + index = mTracks.add( + stream_id, new Track(this, stream_id, streamType)); + } + + status_t err = OK; + + if (index >= 0) { + err = + mTracks.editValueAt(index)->appendPESData( + PTS_DTS_flags, PTS, DTS, br.data(), dataLength); + } + + br.skipBits(dataLength * 8); + + if (err != OK) { + return err; + } + } else if (stream_id == 0xbe) { // padding_stream + CHECK_NE(PES_packet_length, 0u); + br.skipBits(PES_packet_length * 8); + } else { + CHECK_NE(PES_packet_length, 0u); + br.skipBits(PES_packet_length * 8); + } + + return n; +} + +//////////////////////////////////////////////////////////////////////////////// + +MPEG2PSExtractor::Track::Track( + MPEG2PSExtractor *extractor, unsigned stream_id, unsigned stream_type) + : mExtractor(extractor), + mStreamID(stream_id), + mStreamType(stream_type), + mQueue(NULL) { + bool supported = true; + ElementaryStreamQueue::Mode mode; + + switch (mStreamType) { + case ATSParser::STREAMTYPE_H264: + mode = ElementaryStreamQueue::H264; + break; + case ATSParser::STREAMTYPE_MPEG2_AUDIO_ATDS: + mode = ElementaryStreamQueue::AAC; + break; + case ATSParser::STREAMTYPE_MPEG1_AUDIO: + case ATSParser::STREAMTYPE_MPEG2_AUDIO: + mode = ElementaryStreamQueue::MPEG_AUDIO; + break; + + case ATSParser::STREAMTYPE_MPEG1_VIDEO: + case ATSParser::STREAMTYPE_MPEG2_VIDEO: + mode = ElementaryStreamQueue::MPEG_VIDEO; + break; + + case ATSParser::STREAMTYPE_MPEG4_VIDEO: + mode = ElementaryStreamQueue::MPEG4_VIDEO; + break; + + default: + supported = false; + break; + } + + if (supported) { + mQueue = new ElementaryStreamQueue(mode); + } else { + LOGI("unsupported stream ID 0x%02x", stream_id); + } +} + +MPEG2PSExtractor::Track::~Track() { + delete mQueue; + mQueue = NULL; +} + +status_t MPEG2PSExtractor::Track::start(MetaData *params) { + if (mSource == NULL) { + return NO_INIT; + } + + return mSource->start(params); +} + +status_t MPEG2PSExtractor::Track::stop() { + if (mSource == NULL) { + return NO_INIT; + } + + return mSource->stop(); +} + +sp<MetaData> MPEG2PSExtractor::Track::getFormat() { + if (mSource == NULL) { + return NULL; + } + + return mSource->getFormat(); +} + +status_t MPEG2PSExtractor::Track::read( + MediaBuffer **buffer, const ReadOptions *options) { + if (mSource == NULL) { + return NO_INIT; + } + + status_t finalResult; + while (!mSource->hasBufferAvailable(&finalResult)) { + if (finalResult != OK) { + return ERROR_END_OF_STREAM; + } + + status_t err = mExtractor->feedMore(); + + if (err != OK) { + mSource->signalEOS(err); + } + } + + return mSource->read(buffer, options); +} + +status_t MPEG2PSExtractor::Track::appendPESData( + unsigned PTS_DTS_flags, + uint64_t PTS, uint64_t DTS, + const uint8_t *data, size_t size) { + if (mQueue == NULL) { + return OK; + } + + int64_t timeUs; + if (PTS_DTS_flags == 2 || PTS_DTS_flags == 3) { + timeUs = (PTS * 100) / 9; + } else { + timeUs = 0; + } + + status_t err = mQueue->appendData(data, size, timeUs); + + if (err != OK) { + return err; + } + + sp<ABuffer> accessUnit; + while ((accessUnit = mQueue->dequeueAccessUnit()) != NULL) { + if (mSource == NULL) { + sp<MetaData> meta = mQueue->getFormat(); + + if (meta != NULL) { + LOGV("Stream ID 0x%02x now has data.", mStreamID); + + mSource = new AnotherPacketSource(meta); + mSource->queueAccessUnit(accessUnit); + } + } else if (mQueue->getFormat() != NULL) { + mSource->queueAccessUnit(accessUnit); + } + } + + return OK; +} + +//////////////////////////////////////////////////////////////////////////////// + +MPEG2PSExtractor::WrappedTrack::WrappedTrack( + const sp<MPEG2PSExtractor> &extractor, const sp<Track> &track) + : mExtractor(extractor), + mTrack(track) { +} + +MPEG2PSExtractor::WrappedTrack::~WrappedTrack() { +} + +status_t MPEG2PSExtractor::WrappedTrack::start(MetaData *params) { + return mTrack->start(params); +} + +status_t MPEG2PSExtractor::WrappedTrack::stop() { + return mTrack->stop(); +} + +sp<MetaData> MPEG2PSExtractor::WrappedTrack::getFormat() { + return mTrack->getFormat(); +} + +status_t MPEG2PSExtractor::WrappedTrack::read( + MediaBuffer **buffer, const ReadOptions *options) { + return mTrack->read(buffer, options); +} + +//////////////////////////////////////////////////////////////////////////////// + +bool SniffMPEG2PS( + const sp<DataSource> &source, String8 *mimeType, float *confidence, + sp<AMessage> *) { + uint8_t header[5]; + if (source->readAt(0, header, sizeof(header)) < (ssize_t)sizeof(header)) { + return false; + } + + if (memcmp("\x00\x00\x01\xba", header, 4) || (header[4] >> 6) != 1) { + return false; + } + + *confidence = 0.25f; // Slightly larger than .mp3 extractor's confidence + + mimeType->setTo(MEDIA_MIMETYPE_CONTAINER_MPEG2PS); + + return true; +} + +} // namespace android diff --git a/media/libstagefright/rtsp/APacketSource.cpp b/media/libstagefright/rtsp/APacketSource.cpp index 4ecb92f..3f4cdb5 100644 --- a/media/libstagefright/rtsp/APacketSource.cpp +++ b/media/libstagefright/rtsp/APacketSource.cpp @@ -34,8 +34,8 @@ #include <media/stagefright/foundation/AString.h> #include <media/stagefright/foundation/base64.h> #include <media/stagefright/foundation/hexdump.h> -#include <media/stagefright/MediaBuffer.h> #include <media/stagefright/MediaDefs.h> +#include <media/stagefright/MediaErrors.h> #include <media/stagefright/MetaData.h> #include <utils/Vector.h> @@ -402,43 +402,15 @@ static sp<ABuffer> MakeMPEG4VideoCodecSpecificData( return csd; } -static bool GetClockRate(const AString &desc, uint32_t *clockRate) { - ssize_t slashPos = desc.find("/"); - if (slashPos < 0) { - return false; - } - - const char *s = desc.c_str() + slashPos + 1; - - char *end; - unsigned long x = strtoul(s, &end, 10); - - if (end == s || (*end != '\0' && *end != '/')) { - return false; - } - - *clockRate = x; - - return true; -} - APacketSource::APacketSource( const sp<ASessionDescription> &sessionDesc, size_t index) : mInitCheck(NO_INIT), - mFormat(new MetaData), - mEOSResult(OK), - mIsAVC(false), - mScanForIDR(true), - mRTPTimeBase(0), - mNormalPlayTimeBaseUs(0), - mLastNormalPlayTimeUs(0) { + mFormat(new MetaData) { unsigned long PT; AString desc; AString params; sessionDesc->getFormatType(index, &PT, &desc, ¶ms); - CHECK(GetClockRate(desc, &mClockRate)); - int64_t durationUs; if (sessionDesc->getDurationUs(&durationUs)) { mFormat->setInt64(kKeyDuration, durationUs); @@ -448,8 +420,6 @@ APacketSource::APacketSource( mInitCheck = OK; if (!strncmp(desc.c_str(), "H264/", 5)) { - mIsAVC = true; - mFormat->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_AVC); int32_t width, height; @@ -602,137 +572,8 @@ status_t APacketSource::initCheck() const { return mInitCheck; } -status_t APacketSource::start(MetaData *params) { - return OK; -} - -status_t APacketSource::stop() { - return OK; -} - sp<MetaData> APacketSource::getFormat() { return mFormat; } -status_t APacketSource::read( - MediaBuffer **out, const ReadOptions *) { - *out = NULL; - - Mutex::Autolock autoLock(mLock); - while (mEOSResult == OK && mBuffers.empty()) { - mCondition.wait(mLock); - } - - if (!mBuffers.empty()) { - const sp<ABuffer> buffer = *mBuffers.begin(); - - updateNormalPlayTime_l(buffer); - - int64_t timeUs; - CHECK(buffer->meta()->findInt64("timeUs", &timeUs)); - - MediaBuffer *mediaBuffer = new MediaBuffer(buffer); - mediaBuffer->meta_data()->setInt64(kKeyTime, timeUs); - - *out = mediaBuffer; - - mBuffers.erase(mBuffers.begin()); - return OK; - } - - return mEOSResult; -} - -void APacketSource::updateNormalPlayTime_l(const sp<ABuffer> &buffer) { - uint32_t rtpTime; - CHECK(buffer->meta()->findInt32("rtp-time", (int32_t *)&rtpTime)); - - mLastNormalPlayTimeUs = - (((double)rtpTime - (double)mRTPTimeBase) / mClockRate) - * 1000000ll - + mNormalPlayTimeBaseUs; -} - -void APacketSource::queueAccessUnit(const sp<ABuffer> &buffer) { - int32_t damaged; - if (buffer->meta()->findInt32("damaged", &damaged) && damaged) { - LOGV("discarding damaged AU"); - return; - } - - if (mScanForIDR && mIsAVC) { - // This pretty piece of code ensures that the first access unit - // fed to the decoder after stream-start or seek is guaranteed to - // be an IDR frame. This is to workaround limitations of a certain - // hardware h.264 decoder that requires this to be the case. - - if (!IsIDR(buffer)) { - LOGV("skipping AU while scanning for next IDR frame."); - return; - } - - mScanForIDR = false; - } - - Mutex::Autolock autoLock(mLock); - mBuffers.push_back(buffer); - mCondition.signal(); -} - -void APacketSource::signalEOS(status_t result) { - CHECK(result != OK); - - Mutex::Autolock autoLock(mLock); - mEOSResult = result; - mCondition.signal(); -} - -void APacketSource::flushQueue() { - Mutex::Autolock autoLock(mLock); - mBuffers.clear(); - - mScanForIDR = true; -} - -int64_t APacketSource::getNormalPlayTimeUs() { - Mutex::Autolock autoLock(mLock); - return mLastNormalPlayTimeUs; -} - -void APacketSource::setNormalPlayTimeMapping( - uint32_t rtpTime, int64_t normalPlayTimeUs) { - Mutex::Autolock autoLock(mLock); - - mRTPTimeBase = rtpTime; - mNormalPlayTimeBaseUs = normalPlayTimeUs; -} - -int64_t APacketSource::getQueueDurationUs(bool *eos) { - Mutex::Autolock autoLock(mLock); - - *eos = (mEOSResult != OK); - - if (mBuffers.size() < 2) { - return 0; - } - - const sp<ABuffer> first = *mBuffers.begin(); - const sp<ABuffer> last = *--mBuffers.end(); - - int64_t firstTimeUs; - CHECK(first->meta()->findInt64("timeUs", &firstTimeUs)); - - int64_t lastTimeUs; - CHECK(last->meta()->findInt64("timeUs", &lastTimeUs)); - - if (lastTimeUs < firstTimeUs) { - LOGE("Huh? Time moving backwards? %lld > %lld", - firstTimeUs, lastTimeUs); - - return 0; - } - - return lastTimeUs - firstTimeUs; -} - } // namespace android diff --git a/media/libstagefright/rtsp/APacketSource.h b/media/libstagefright/rtsp/APacketSource.h index 7a77fc6..530e537 100644 --- a/media/libstagefright/rtsp/APacketSource.h +++ b/media/libstagefright/rtsp/APacketSource.h @@ -19,63 +19,27 @@ #define A_PACKET_SOURCE_H_ #include <media/stagefright/foundation/ABase.h> -#include <media/stagefright/MediaSource.h> -#include <utils/threads.h> -#include <utils/List.h> +#include <media/stagefright/MetaData.h> +#include <utils/RefBase.h> namespace android { -struct ABuffer; struct ASessionDescription; -struct APacketSource : public MediaSource { +struct APacketSource : public RefBase { APacketSource(const sp<ASessionDescription> &sessionDesc, size_t index); status_t initCheck() const; - virtual status_t start(MetaData *params = NULL); - virtual status_t stop(); virtual sp<MetaData> getFormat(); - virtual status_t read( - MediaBuffer **buffer, const ReadOptions *options = NULL); - - void queueAccessUnit(const sp<ABuffer> &buffer); - void signalEOS(status_t result); - - void flushQueue(); - - int64_t getNormalPlayTimeUs(); - - void setNormalPlayTimeMapping( - uint32_t rtpTime, int64_t normalPlayTimeUs); - - int64_t getQueueDurationUs(bool *eos); - protected: virtual ~APacketSource(); private: status_t mInitCheck; - Mutex mLock; - Condition mCondition; - sp<MetaData> mFormat; - List<sp<ABuffer> > mBuffers; - status_t mEOSResult; - - bool mIsAVC; - bool mScanForIDR; - - uint32_t mClockRate; - - uint32_t mRTPTimeBase; - int64_t mNormalPlayTimeBaseUs; - - int64_t mLastNormalPlayTimeUs; - - void updateNormalPlayTime_l(const sp<ABuffer> &buffer); DISALLOW_EVIL_CONSTRUCTORS(APacketSource); }; diff --git a/media/libstagefright/rtsp/ARTSPController.cpp b/media/libstagefright/rtsp/ARTSPController.cpp deleted file mode 100644 index 2ebae7e..0000000 --- a/media/libstagefright/rtsp/ARTSPController.cpp +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (C) 2010 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. - */ - -#include "ARTSPController.h" - -#include "MyHandler.h" - -#include <media/stagefright/foundation/ADebug.h> -#include <media/stagefright/MediaErrors.h> -#include <media/stagefright/MediaSource.h> -#include <media/stagefright/MetaData.h> - -namespace android { - -ARTSPController::ARTSPController(const sp<ALooper> &looper) - : mState(DISCONNECTED), - mLooper(looper), - mUIDValid(false), - mSeekDoneCb(NULL), - mSeekDoneCookie(NULL), - mLastSeekCompletedTimeUs(-1) { - mReflector = new AHandlerReflector<ARTSPController>(this); - looper->registerHandler(mReflector); -} - -ARTSPController::~ARTSPController() { - CHECK_EQ((int)mState, (int)DISCONNECTED); - mLooper->unregisterHandler(mReflector->id()); -} - -void ARTSPController::setUID(uid_t uid) { - mUIDValid = true; - mUID = uid; -} - -status_t ARTSPController::connect(const char *url) { - Mutex::Autolock autoLock(mLock); - - if (mState != DISCONNECTED) { - return ERROR_ALREADY_CONNECTED; - } - - sp<AMessage> msg = new AMessage(kWhatConnectDone, mReflector->id()); - - mHandler = new MyHandler(url, mLooper, mUIDValid, mUID); - - mState = CONNECTING; - - mHandler->connect(msg); - - while (mState == CONNECTING) { - mCondition.wait(mLock); - } - - if (mState != CONNECTED) { - mHandler.clear(); - } - - return mConnectionResult; -} - -void ARTSPController::disconnect() { - Mutex::Autolock autoLock(mLock); - - if (mState == CONNECTING) { - mState = DISCONNECTED; - mConnectionResult = ERROR_IO; - mCondition.broadcast(); - - mHandler.clear(); - return; - } else if (mState != CONNECTED) { - return; - } - - sp<AMessage> msg = new AMessage(kWhatDisconnectDone, mReflector->id()); - mHandler->disconnect(msg); - - while (mState == CONNECTED) { - mCondition.wait(mLock); - } - - mHandler.clear(); -} - -void ARTSPController::seekAsync( - int64_t timeUs, - void (*seekDoneCb)(void *), void *cookie) { - Mutex::Autolock autoLock(mLock); - - CHECK(seekDoneCb != NULL); - CHECK(mSeekDoneCb == NULL); - - // Ignore seek requests that are too soon after the previous one has - // completed, we don't want to swamp the server. - - bool tooEarly = - mLastSeekCompletedTimeUs >= 0 - && ALooper::GetNowUs() < mLastSeekCompletedTimeUs + 500000ll; - - if (mState != CONNECTED || tooEarly) { - (*seekDoneCb)(cookie); - return; - } - - mSeekDoneCb = seekDoneCb; - mSeekDoneCookie = cookie; - - sp<AMessage> msg = new AMessage(kWhatSeekDone, mReflector->id()); - mHandler->seek(timeUs, msg); -} - -size_t ARTSPController::countTracks() { - if (mHandler == NULL) { - return 0; - } - - return mHandler->countTracks(); -} - -sp<MediaSource> ARTSPController::getTrack(size_t index) { - CHECK(mHandler != NULL); - - return mHandler->getPacketSource(index); -} - -sp<MetaData> ARTSPController::getTrackMetaData( - size_t index, uint32_t flags) { - CHECK(mHandler != NULL); - - return mHandler->getPacketSource(index)->getFormat(); -} - -void ARTSPController::onMessageReceived(const sp<AMessage> &msg) { - switch (msg->what()) { - case kWhatConnectDone: - { - Mutex::Autolock autoLock(mLock); - - CHECK(msg->findInt32("result", &mConnectionResult)); - mState = (mConnectionResult == OK) ? CONNECTED : DISCONNECTED; - - mCondition.signal(); - break; - } - - case kWhatDisconnectDone: - { - Mutex::Autolock autoLock(mLock); - mState = DISCONNECTED; - mCondition.signal(); - break; - } - - case kWhatSeekDone: - { - LOGI("seek done"); - - mLastSeekCompletedTimeUs = ALooper::GetNowUs(); - - void (*seekDoneCb)(void *) = mSeekDoneCb; - mSeekDoneCb = NULL; - - (*seekDoneCb)(mSeekDoneCookie); - break; - } - - default: - TRESPASS(); - break; - } -} - -int64_t ARTSPController::getNormalPlayTimeUs() { - CHECK(mHandler != NULL); - return mHandler->getNormalPlayTimeUs(); -} - -int64_t ARTSPController::getQueueDurationUs(bool *eos) { - *eos = true; - - int64_t minQueuedDurationUs = 0; - for (size_t i = 0; i < mHandler->countTracks(); ++i) { - sp<APacketSource> source = mHandler->getPacketSource(i); - - bool newEOS; - int64_t queuedDurationUs = source->getQueueDurationUs(&newEOS); - - if (!newEOS) { - *eos = false; - } - - if (i == 0 || queuedDurationUs < minQueuedDurationUs) { - minQueuedDurationUs = queuedDurationUs; - } - } - - return minQueuedDurationUs; -} - -} // namespace android diff --git a/media/libstagefright/rtsp/Android.mk b/media/libstagefright/rtsp/Android.mk index 8530ff3..8230347 100644 --- a/media/libstagefright/rtsp/Android.mk +++ b/media/libstagefright/rtsp/Android.mk @@ -15,7 +15,6 @@ LOCAL_SRC_FILES:= \ ARTPSource.cpp \ ARTPWriter.cpp \ ARTSPConnection.cpp \ - ARTSPController.cpp \ ASessionDescription.cpp \ LOCAL_C_INCLUDES:= \ diff --git a/media/libstagefright/rtsp/MyHandler.h b/media/libstagefright/rtsp/MyHandler.h index 8128813..af7dd23 100644 --- a/media/libstagefright/rtsp/MyHandler.h +++ b/media/libstagefright/rtsp/MyHandler.h @@ -94,12 +94,24 @@ static bool GetAttribute(const char *s, const char *key, AString *value) { } struct MyHandler : public AHandler { + enum { + kWhatConnected = 'conn', + kWhatDisconnected = 'disc', + kWhatSeekDone = 'sdon', + + kWhatAccessUnit = 'accU', + kWhatEOS = 'eos!', + kWhatSeekDiscontinuity = 'seeD', + kWhatNormalPlayTimeMapping = 'nptM', + }; + MyHandler( - const char *url, const sp<ALooper> &looper, + const char *url, + const sp<AMessage> ¬ify, bool uidValid = false, uid_t uid = 0) - : mUIDValid(uidValid), + : mNotify(notify), + mUIDValid(uidValid), mUID(uid), - mLooper(looper), mNetLooper(new ALooper), mConn(new ARTSPConnection(mUIDValid, mUID)), mRTPConn(new ARTPConnection), @@ -145,12 +157,9 @@ struct MyHandler : public AHandler { mSessionHost = host; } - void connect(const sp<AMessage> &doneMsg) { - mDoneMsg = doneMsg; - - mLooper->registerHandler(this); - mLooper->registerHandler(mConn); - (1 ? mNetLooper : mLooper)->registerHandler(mRTPConn); + void connect() { + looper()->registerHandler(mConn); + (1 ? mNetLooper : looper())->registerHandler(mRTPConn); sp<AMessage> notify = new AMessage('biny', id()); mConn->observeBinaryData(notify); @@ -159,33 +168,16 @@ struct MyHandler : public AHandler { mConn->connect(mOriginalSessionURL.c_str(), reply); } - void disconnect(const sp<AMessage> &doneMsg) { - mDoneMsg = doneMsg; - + void disconnect() { (new AMessage('abor', id()))->post(); } - void seek(int64_t timeUs, const sp<AMessage> &doneMsg) { + void seek(int64_t timeUs) { sp<AMessage> msg = new AMessage('seek', id()); msg->setInt64("time", timeUs); - msg->setMessage("doneMsg", doneMsg); msg->post(); } - int64_t getNormalPlayTimeUs() { - int64_t maxTimeUs = 0; - for (size_t i = 0; i < mTracks.size(); ++i) { - int64_t timeUs = mTracks.editItemAt(i).mPacketSource - ->getNormalPlayTimeUs(); - - if (i == 0 || timeUs > maxTimeUs) { - maxTimeUs = timeUs; - } - } - - return maxTimeUs; - } - static void addRR(const sp<ABuffer> &buf) { uint8_t *ptr = buf->data() + buf->size(); ptr[0] = 0x80 | 0; @@ -619,7 +611,9 @@ struct MyHandler : public AHandler { for (size_t i = 0; i < mTracks.size(); ++i) { TrackInfo *info = &mTracks.editItemAt(i); - info->mPacketSource->signalEOS(ERROR_END_OF_STREAM); + if (!mFirstAccessUnit) { + postQueueEOS(i, ERROR_END_OF_STREAM); + } if (!info->mUsingInterleavedTCP) { mRTPConn->removeStream(info->mRTPSocket, info->mRTCPSocket); @@ -690,11 +684,10 @@ struct MyHandler : public AHandler { case 'quit': { - if (mDoneMsg != NULL) { - mDoneMsg->setInt32("result", UNKNOWN_ERROR); - mDoneMsg->post(); - mDoneMsg = NULL; - } + sp<AMessage> msg = mNotify->dup(); + msg->setInt32("what", kWhatDisconnected); + msg->setInt32("result", UNKNOWN_ERROR); + msg->post(); break; } @@ -795,17 +788,12 @@ struct MyHandler : public AHandler { case 'seek': { - sp<AMessage> doneMsg; - CHECK(msg->findMessage("doneMsg", &doneMsg)); - - if (mSeekPending) { - doneMsg->post(); - break; - } - if (!mSeekable) { LOGW("This is a live stream, ignoring seek request."); - doneMsg->post(); + + sp<AMessage> msg = mNotify->dup(); + msg->setInt32("what", kWhatSeekDone); + msg->post(); break; } @@ -831,7 +819,6 @@ struct MyHandler : public AHandler { sp<AMessage> reply = new AMessage('see1', id()); reply->setInt64("time", timeUs); - reply->setMessage("doneMsg", doneMsg); mConn->sendRequest(request.c_str(), reply); break; } @@ -842,7 +829,8 @@ struct MyHandler : public AHandler { for (size_t i = 0; i < mTracks.size(); ++i) { TrackInfo *info = &mTracks.editItemAt(i); - info->mPacketSource->flushQueue(); + postQueueSeekDiscontinuity(i); + info->mRTPAnchor = 0; info->mNTPAnchorUs = -1; } @@ -866,11 +854,7 @@ struct MyHandler : public AHandler { request.append("\r\n"); - sp<AMessage> doneMsg; - CHECK(msg->findMessage("doneMsg", &doneMsg)); - sp<AMessage> reply = new AMessage('see2', id()); - reply->setMessage("doneMsg", doneMsg); mConn->sendRequest(request.c_str(), reply); break; } @@ -915,10 +899,9 @@ struct MyHandler : public AHandler { mSeekPending = false; - sp<AMessage> doneMsg; - CHECK(msg->findMessage("doneMsg", &doneMsg)); - - doneMsg->post(); + sp<AMessage> msg = mNotify->dup(); + msg->setInt32("what", kWhatSeekDone); + msg->post(); break; } @@ -1056,8 +1039,14 @@ struct MyHandler : public AHandler { LOGV("track #%d: rtpTime=%u <=> npt=%.2f", n, rtpTime, npt1); - info->mPacketSource->setNormalPlayTimeMapping( - rtpTime, (int64_t)(npt1 * 1E6)); + info->mNormalPlayTimeRTP = rtpTime; + info->mNormalPlayTimeUs = (int64_t)(npt1 * 1E6); + + if (!mFirstAccessUnit) { + postNormalPlayTimeMapping( + trackIndex, + info->mNormalPlayTimeRTP, info->mNormalPlayTimeUs); + } ++n; } @@ -1065,11 +1054,15 @@ struct MyHandler : public AHandler { mSeekable = true; } - sp<APacketSource> getPacketSource(size_t index) { + sp<MetaData> getTrackFormat(size_t index, int32_t *timeScale) { CHECK_GE(index, 0u); CHECK_LT(index, mTracks.size()); - return mTracks.editItemAt(index).mPacketSource; + const TrackInfo &info = mTracks.itemAt(index); + + *timeScale = info.mTimeScale; + + return info.mPacketSource->getFormat(); } size_t countTracks() const { @@ -1089,6 +1082,9 @@ private: int64_t mNTPAnchorUs; int32_t mTimeScale; + uint32_t mNormalPlayTimeRTP; + int64_t mNormalPlayTimeUs; + sp<APacketSource> mPacketSource; // Stores packets temporarily while no notion of time @@ -1096,9 +1092,9 @@ private: List<sp<ABuffer> > mPackets; }; + sp<AMessage> mNotify; bool mUIDValid; uid_t mUID; - sp<ALooper> mLooper; sp<ALooper> mNetLooper; sp<ARTSPConnection> mConn; sp<ARTPConnection> mRTPConn; @@ -1127,8 +1123,6 @@ private: Vector<TrackInfo> mTracks; - sp<AMessage> mDoneMsg; - void setupTrack(size_t index) { sp<APacketSource> source = new APacketSource(mSessionDesc, index); @@ -1158,6 +1152,8 @@ private: info->mNewSegment = true; info->mRTPAnchor = 0; info->mNTPAnchorUs = -1; + info->mNormalPlayTimeRTP = 0; + info->mNormalPlayTimeUs = 0ll; unsigned long PT; AString formatDesc; @@ -1283,9 +1279,17 @@ private: LOGV("onAccessUnitComplete track %d", trackIndex); if (mFirstAccessUnit) { - mDoneMsg->setInt32("result", OK); - mDoneMsg->post(); - mDoneMsg = NULL; + sp<AMessage> msg = mNotify->dup(); + msg->setInt32("what", kWhatConnected); + msg->post(); + + for (size_t i = 0; i < mTracks.size(); ++i) { + TrackInfo *info = &mTracks.editItemAt(i); + + postNormalPlayTimeMapping( + i, + info->mNormalPlayTimeRTP, info->mNormalPlayTimeUs); + } mFirstAccessUnit = false; } @@ -1303,12 +1307,12 @@ private: track->mPackets.erase(track->mPackets.begin()); if (addMediaTimestamp(trackIndex, track, accessUnit)) { - track->mPacketSource->queueAccessUnit(accessUnit); + postQueueAccessUnit(trackIndex, accessUnit); } } if (addMediaTimestamp(trackIndex, track, accessUnit)) { - track->mPacketSource->queueAccessUnit(accessUnit); + postQueueAccessUnit(trackIndex, accessUnit); } } @@ -1344,6 +1348,39 @@ private: return true; } + void postQueueAccessUnit( + size_t trackIndex, const sp<ABuffer> &accessUnit) { + sp<AMessage> msg = mNotify->dup(); + msg->setInt32("what", kWhatAccessUnit); + msg->setSize("trackIndex", trackIndex); + msg->setObject("accessUnit", accessUnit); + msg->post(); + } + + void postQueueEOS(size_t trackIndex, status_t finalResult) { + sp<AMessage> msg = mNotify->dup(); + msg->setInt32("what", kWhatEOS); + msg->setSize("trackIndex", trackIndex); + msg->setInt32("finalResult", finalResult); + msg->post(); + } + + void postQueueSeekDiscontinuity(size_t trackIndex) { + sp<AMessage> msg = mNotify->dup(); + msg->setInt32("what", kWhatSeekDiscontinuity); + msg->setSize("trackIndex", trackIndex); + msg->post(); + } + + void postNormalPlayTimeMapping( + size_t trackIndex, uint32_t rtpTime, int64_t nptUs) { + sp<AMessage> msg = mNotify->dup(); + msg->setInt32("what", kWhatNormalPlayTimeMapping); + msg->setSize("trackIndex", trackIndex); + msg->setInt32("rtpTime", rtpTime); + msg->setInt64("nptUs", nptUs); + msg->post(); + } DISALLOW_EVIL_CONSTRUCTORS(MyHandler); }; diff --git a/media/tests/MediaFrameworkTest/Android.mk b/media/tests/MediaFrameworkTest/Android.mk index 9c45e6e..c9afa19 100644 --- a/media/tests/MediaFrameworkTest/Android.mk +++ b/media/tests/MediaFrameworkTest/Android.mk @@ -7,6 +7,8 @@ LOCAL_SRC_FILES := $(call all-subdir-java-files) LOCAL_JAVA_LIBRARIES := android.test.runner +LOCAL_STATIC_JAVA_LIBRARIES := easymocklib + LOCAL_PACKAGE_NAME := mediaframeworktest include $(BUILD_PACKAGE) diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkUnitTestRunner.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkUnitTestRunner.java index a203adc..62af3f3 100755 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkUnitTestRunner.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkUnitTestRunner.java @@ -47,6 +47,7 @@ public class MediaFrameworkUnitTestRunner extends InstrumentationTestRunner { addMediaMetadataRetrieverStateUnitTests(suite); addMediaRecorderStateUnitTests(suite); addMediaPlayerStateUnitTests(suite); + addMediaScannerUnitTests(suite); return suite; } @@ -89,4 +90,8 @@ public class MediaFrameworkUnitTestRunner extends InstrumentationTestRunner { suite.addTestSuite(MediaPlayerSetVolumeStateUnitTest.class); suite.addTestSuite(MediaPlayerMetadataParserTest.class); } + + private void addMediaScannerUnitTests(TestSuite suite) { + suite.addTestSuite(MediaInserterTest.class); + } } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaInserterTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaInserterTest.java new file mode 100644 index 0000000..ad3c342 --- /dev/null +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaInserterTest.java @@ -0,0 +1,246 @@ +/* + * Copyright (C) 2011 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.mediaframeworktest.unit; + +import android.content.ContentValues; +import android.content.IContentProvider; +import android.media.MediaInserter; +import android.net.Uri; +import android.provider.MediaStore.Audio; +import android.provider.MediaStore.Files; +import android.provider.MediaStore.Images; +import android.provider.MediaStore.Video; +import android.test.InstrumentationTestCase; +import android.test.suitebuilder.annotation.SmallTest; + +import dalvik.annotation.TestTargetClass; + +import org.easymock.EasyMock; +import org.easymock.IArgumentMatcher; + +@TestTargetClass(MediaInserter.class) +public class MediaInserterTest extends InstrumentationTestCase { + + private MediaInserter mMediaInserter; + private static final int TEST_BUFFER_SIZE = 10; + private IContentProvider mMockProvider; + + private int mFilesCounter; + private int mAudioCounter; + private int mVideoCounter; + private int mImagesCounter; + + private static final String sVolumeName = "external"; + private static final Uri sAudioUri = Audio.Media.getContentUri(sVolumeName); + private static final Uri sVideoUri = Video.Media.getContentUri(sVolumeName); + private static final Uri sImagesUri = Images.Media.getContentUri(sVolumeName); + private static final Uri sFilesUri = Files.getContentUri(sVolumeName); + + private static class MediaUriMatcher implements IArgumentMatcher { + private Uri mUri; + + private MediaUriMatcher(Uri uri) { + mUri = uri; + } + + @Override + public boolean matches(Object argument) { + if (!(argument instanceof Uri)) { + return false; + } + + Uri actualUri = (Uri) argument; + if (actualUri == mUri) return true; + return false; + } + + @Override + public void appendTo(StringBuffer buffer) { + buffer.append("expected a TableUri '").append(mUri).append("'"); + } + + private static Uri expectMediaUri(Uri in) { + EasyMock.reportMatcher(new MediaUriMatcher(in)); + return null; + } + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + mMockProvider = EasyMock.createMock(IContentProvider.class); + mMediaInserter = new MediaInserter(mMockProvider, TEST_BUFFER_SIZE); + mFilesCounter = 0; + mAudioCounter = 0; + mVideoCounter = 0; + mImagesCounter = 0; + } + + private ContentValues createFileContent() { + ContentValues values = new ContentValues(); + values.put("_data", "/mnt/sdcard/file" + ++mFilesCounter); + return values; + } + + private ContentValues createAudioContent() { + ContentValues values = new ContentValues(); + values.put("_data", "/mnt/sdcard/audio" + ++mAudioCounter); + return values; + } + + private ContentValues createVideoContent() { + ContentValues values = new ContentValues(); + values.put("_data", "/mnt/sdcard/video" + ++mVideoCounter); + return values; + } + + private ContentValues createImageContent() { + ContentValues values = new ContentValues(); + values.put("_data", "/mnt/sdcard/image" + ++mImagesCounter); + return values; + } + + private ContentValues createContent(Uri uri) { + if (uri == sFilesUri) return createFileContent(); + else if (uri == sAudioUri) return createAudioContent(); + else if (uri == sVideoUri) return createVideoContent(); + else if (uri == sImagesUri) return createImageContent(); + else throw new IllegalArgumentException("Unknown URL: " + uri.toString()); + } + + private void fillBuffer(Uri uri, int numberOfFiles) throws Exception { + ContentValues values; + for (int i = 0; i < numberOfFiles; ++i) { + values = createContent(uri); + mMediaInserter.insert(uri, values); + } + } + + @SmallTest + public void testInsertContentsLessThanBufferSize() throws Exception { + EasyMock.replay(mMockProvider); + + fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4); + fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3); + fillBuffer(sVideoUri, TEST_BUFFER_SIZE - 2); + fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1); + + EasyMock.verify(mMockProvider); + } + + @SmallTest + public void testInsertContentsEqualToBufferSize() throws Exception { + EasyMock.expect(mMockProvider.bulkInsert( + (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1); + EasyMock.expectLastCall().times(4); + EasyMock.replay(mMockProvider); + + fillBuffer(sFilesUri, TEST_BUFFER_SIZE); + fillBuffer(sAudioUri, TEST_BUFFER_SIZE); + fillBuffer(sVideoUri, TEST_BUFFER_SIZE); + fillBuffer(sImagesUri, TEST_BUFFER_SIZE); + + EasyMock.verify(mMockProvider); + } + + @SmallTest + public void testInsertContentsMoreThanBufferSize() throws Exception { + EasyMock.expect(mMockProvider.bulkInsert( + (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1); + EasyMock.expectLastCall().times(4); + EasyMock.replay(mMockProvider); + + fillBuffer(sFilesUri, TEST_BUFFER_SIZE + 1); + fillBuffer(sAudioUri, TEST_BUFFER_SIZE + 2); + fillBuffer(sVideoUri, TEST_BUFFER_SIZE + 3); + fillBuffer(sImagesUri, TEST_BUFFER_SIZE + 4); + + EasyMock.verify(mMockProvider); + } + + @SmallTest + public void testFlushAllWithEmptyContents() throws Exception { + EasyMock.replay(mMockProvider); + + mMediaInserter.flushAll(); + + EasyMock.verify(mMockProvider); + } + + @SmallTest + public void testFlushAllWithSomeContents() throws Exception { + EasyMock.expect(mMockProvider.bulkInsert( + (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1); + EasyMock.expectLastCall().times(4); + EasyMock.replay(mMockProvider); + + fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4); + fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3); + fillBuffer(sVideoUri, TEST_BUFFER_SIZE - 2); + fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1); + mMediaInserter.flushAll(); + + EasyMock.verify(mMockProvider); + } + + @SmallTest + public void testInsertContentsAfterFlushAll() throws Exception { + EasyMock.expect(mMockProvider.bulkInsert( + (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1); + EasyMock.expectLastCall().times(8); + EasyMock.replay(mMockProvider); + + fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4); + fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3); + fillBuffer(sVideoUri, TEST_BUFFER_SIZE - 2); + fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1); + mMediaInserter.flushAll(); + + fillBuffer(sFilesUri, TEST_BUFFER_SIZE + 1); + fillBuffer(sAudioUri, TEST_BUFFER_SIZE + 2); + fillBuffer(sVideoUri, TEST_BUFFER_SIZE + 3); + fillBuffer(sImagesUri, TEST_BUFFER_SIZE + 4); + + EasyMock.verify(mMockProvider); + } + + @SmallTest + public void testInsertContentsWithDifferentSizePerContentType() throws Exception { + EasyMock.expect(mMockProvider.bulkInsert(MediaUriMatcher.expectMediaUri(sFilesUri), + (ContentValues[]) EasyMock.anyObject())).andReturn(1); + EasyMock.expectLastCall().times(1); + EasyMock.expect(mMockProvider.bulkInsert(MediaUriMatcher.expectMediaUri(sAudioUri), + (ContentValues[]) EasyMock.anyObject())).andReturn(1); + EasyMock.expectLastCall().times(2); + EasyMock.expect(mMockProvider.bulkInsert(MediaUriMatcher.expectMediaUri(sVideoUri), + (ContentValues[]) EasyMock.anyObject())).andReturn(1); + EasyMock.expectLastCall().times(3); + EasyMock.expect(mMockProvider.bulkInsert(MediaUriMatcher.expectMediaUri(sImagesUri), + (ContentValues[]) EasyMock.anyObject())).andReturn(1); + EasyMock.expectLastCall().times(4); + EasyMock.replay(mMockProvider); + + for (int i = 0; i < TEST_BUFFER_SIZE; ++i) { + fillBuffer(sFilesUri, 1); + fillBuffer(sAudioUri, 2); + fillBuffer(sVideoUri, 3); + fillBuffer(sImagesUri, 4); + } + + EasyMock.verify(mMockProvider); + } +} diff --git a/opengl/java/android/opengl/GLSurfaceView.java b/opengl/java/android/opengl/GLSurfaceView.java index 4c7f84e..0b4f403 100644 --- a/opengl/java/android/opengl/GLSurfaceView.java +++ b/opengl/java/android/opengl/GLSurfaceView.java @@ -768,6 +768,9 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback * {@link GLSurfaceView#setEGLWindowSurfaceFactory(EGLWindowSurfaceFactory)} */ public interface EGLWindowSurfaceFactory { + /** + * @return null if the surface cannot be constructed. + */ EGLSurface createWindowSurface(EGL10 egl, EGLDisplay display, EGLConfig config, Object nativeWindow); void destroySurface(EGL10 egl, EGLDisplay display, EGLSurface surface); @@ -777,7 +780,19 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback public EGLSurface createWindowSurface(EGL10 egl, EGLDisplay display, EGLConfig config, Object nativeWindow) { - return egl.eglCreateWindowSurface(display, config, nativeWindow, null); + EGLSurface result = null; + try { + result = egl.eglCreateWindowSurface(display, config, nativeWindow, null); + } catch (IllegalArgumentException e) { + // This exception indicates that the surface flinger surface + // is not valid. This can happen if the surface flinger surface has + // been torn down, but the application has not yet been + // notified via SurfaceHolder.Callback.surfaceDestroyed. + // In theory the application should be notified first, + // but in practice sometimes it is not. See b/4588890 + Log.e(TAG, "eglCreateWindowSurface", e); + } + return result; } public void destroySurface(EGL10 egl, EGLDisplay display, @@ -1041,9 +1056,8 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback int error = mEgl.eglGetError(); if (error == EGL10.EGL_BAD_NATIVE_WINDOW) { Log.e("EglHelper", "createWindowSurface returned EGL_BAD_NATIVE_WINDOW."); - return null; } - throwEglException("createWindowSurface", error); + return null; } /* diff --git a/packages/SharedStorageBackup/AndroidManifest.xml b/packages/SharedStorageBackup/AndroidManifest.xml index 39c36f1..fc21df3 100644 --- a/packages/SharedStorageBackup/AndroidManifest.xml +++ b/packages/SharedStorageBackup/AndroidManifest.xml @@ -23,7 +23,6 @@ <application android:allowClearUserData="false" android:permission="android.permission.CONFIRM_FULL_BACKUP" - android:backupAgent=".SharedStorageAgent" - android:allowBackup="false" > + android:backupAgent="SharedStorageAgent" > </application> </manifest> diff --git a/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java b/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java index 6c677b8..a6415b2 100644 --- a/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java +++ b/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java @@ -2,11 +2,8 @@ package com.android.sharedstoragebackup; import android.app.backup.FullBackupAgent; import android.app.backup.FullBackup; -import android.app.backup.BackupDataInput; -import android.app.backup.BackupDataOutput; import android.app.backup.FullBackupDataOutput; import android.content.Context; -import android.os.Environment; import android.os.ParcelFileDescriptor; import android.os.storage.StorageManager; import android.os.storage.StorageVolume; @@ -40,6 +37,7 @@ public class SharedStorageAgent extends FullBackupAgent { // hierarchy backup process on them. By convention in the Storage Manager, the // "primary" shared storage volume is first in the list. if (mVolumes != null) { + if (DEBUG) Slog.i(TAG, "Backing up " + mVolumes.length + " shared volumes"); for (int i = 0; i < mVolumes.length; i++) { StorageVolume v = mVolumes[i]; // Express the contents of volume N this way in the tar stream: @@ -58,7 +56,7 @@ public class SharedStorageAgent extends FullBackupAgent { public void onRestoreFile(ParcelFileDescriptor data, long size, int type, String domain, String relpath, long mode, long mtime) throws IOException { - Slog.d(TAG, "Shared restore: [ " + domain + " : " + relpath + "]"); + if (DEBUG) Slog.d(TAG, "Shared restore: [ " + domain + " : " + relpath + "]"); File outFile = null; diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index cde7613..58c929a 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Geen kennisgewings"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Voortdurend"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Kennisgewings"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Koppel asseblief herlaaier"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Koppel asseblief herlaaier"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Die battery raak pap."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> oor"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB-laaiery nie ondersteun nie."\n"Gebruik net die laaier wat verskaf is."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"OUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Kennisgewings"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth-verbind"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Stel invoermetodes op"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Stel invoermetodes op"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Gebruik fisiese sleutelbord"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Laat die program <xliff:g id="APPLICATION">%1$s</xliff:g> toe om die USB-toestel te gebruik?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Laat die program <xliff:g id="APPLICATION">%1$s</xliff:g> toe om die USB-toebehoorsel te gebruik?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Maak <xliff:g id="ACTIVITY">%1$s</xliff:g> oop wanneer hierdie USB-toestel gekoppel is?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Maak <xliff:g id="ACTIVITY">%1$s</xliff:g> oop wanneer hierdie USB-toebehoorsel gekoppel is?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Geen geïnstalleerde programme werk met hierdie USB-toebehoorsel nie. Kom meer te wete oor hierdie toebehoorsel by <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB-toebehoorsel"</string> <string name="label_view" msgid="6304565553218192990">"Sien"</string> <string name="always_use_device" msgid="1450287437017315906">"Gebruik by verstek vir hierdie USB-toestel"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Gebruik by verstek vir hierdie USB-toebehoorsel"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoem om skerm te vul"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Strek om skerm te vul"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Versoenbaarheid-zoem"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Versoenbaarheid-zoem"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"As \'n program vir \'n kleiner skerm ontwerp is, sal \'n zoemkontrole naby die horlosie verskyn"</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB-lêeroordrag-opsies"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Heg as \'n mediaspeler (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Heg as \'n kamera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Installeer Android-lêeroordragprogram vir Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Installeer Android-lêeroordragprogram vir Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Terug"</string> <string name="accessibility_home" msgid="8217216074895377641">"Tuis"</string> <string name="accessibility_menu" msgid="316839303324695949">"Kieslys"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data, twee stawe."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data, drie stawe."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Datasein vol."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Geen Wi-Fi nie."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi, een staaf."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi, twee stawe."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi, drie stawe."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi-sein vol."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Geen Wi-Fi nie."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi, een staaf."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi, twee stawe."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi, drie stawe."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi-sein vol."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Geen SIM nie."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-verbinding."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Vliegtuigmodus."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G data gedeaktiveer"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobieldata gedeaktiveer"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data gedeaktiveer"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Die gespesifiseerde datagebruiklimiet is bereik. "\n\n" Addisionele datagebruik kan lei tot diensverskafferkostes."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Die gespesifiseerde datagebruiklimiet is bereik. "\n\n" Addisionele datagebruik kan lei tot diensverskafferkostes."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Heraktiveer data"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Geen internetverbinding nie"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi gekoppel"</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index e7a19cc..c726f5f 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"ምንም ማሳወቂያዎች የሉም"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"በመካሄድ ላይ ያለ"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"ማሳወቂያዎች"</string> - <string name="battery_low_title" msgid="7923774589611311406">"እባክዎ ኃይልመሙያ ያያይዙ"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"እባክዎ ኃይልመሙያ ያያይዙ"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"ባትሪው እያነሰ ነው።"</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> ቀሪ"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB ኃይል መሙያ አይታገዝም።"\n" የቀረበውን ኃይል መሙያ ብቻ ተጠቀም።"</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ራስ ሰር"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"ማሳወቂያዎች"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"ብሉቱዝ አያይዝ"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"ግቤት ሜተዶችንአዋቀር"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"ግቤት ሜተዶችንአዋቀር"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"የቁልፍ ሰሌዳ ተጠቀም"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"<xliff:g id="APPLICATION">%1$s</xliff:g> ትግበራ የUSB መሣሪያለመድረስ ይፈቅዳል?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"<xliff:g id="APPLICATION">%1$s</xliff:g> ትግበራ የUSB ተቀጥላለመድረስ ይፈቅዳል?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"የዚህ USB ተቀጥላ ሲያያዝ <xliff:g id="ACTIVITY">%1$s</xliff:g>ይከፈት?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"የዚህ USB ተቀጥላ ሲያያዝ <xliff:g id="ACTIVITY">%1$s</xliff:g> ይከፈት?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"ምንም የተጫኑ ትግበራዎችከዚህ የUSB ተቀጥላ ጋር አይሰሩም። በ<xliff:g id="URL">%1$s</xliff:g> ስለዚህ ተቀጥላ የበለጠ ይረዱ።"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"የUSB ተቀጥላ"</string> <string name="label_view" msgid="6304565553218192990">"ዕይታ"</string> <string name="always_use_device" msgid="1450287437017315906">"ለዚህ USB መሣሪያ በነባሪነት ተጠቀም"</string> <string name="always_use_accessory" msgid="1210954576979621596">"ለዚህ USB ተቀጥላ በነባሪነት ተጠቀም"</string> <string name="compat_mode_on" msgid="6623839244840638213">"ማያ እንዲሞላ አጉላ"</string> <string name="compat_mode_off" msgid="4434467572461327898">"ማያ ለመሙለት ሳብ"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"የተኳኋኝነት አጉላ"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"የተኳኋኝነት አጉላ"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"ትግበራ ለትንሽ ማያ ሲነደፍ፣ የአጉላ መቆመጣጠሪያ በሰዓት በኩል ብቅ ይላል።"</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"የUSB ፋይል ሰደዳ አማራጮች"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"እንደ ማህደረ አጫዋች (MTP) ሰካ"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"እንደ ካሜራ (PTP) ሰካ"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"ለMac የAndroid ፋይል ሰደዳ ትግበራ ጫን"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"ለMac የAndroid ፋይል ሰደዳ ትግበራ ጫን"</string> <string name="accessibility_back" msgid="567011538994429120">"ተመለስ"</string> <string name="accessibility_home" msgid="8217216074895377641">"መነሻ"</string> <string name="accessibility_menu" msgid="316839303324695949">"ምናሌ"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"የውሂብ ሁለት አሞሌዎች።"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"የውሂብ ሦስት አሞሌዎች።"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"የውሂብ አመልካች ሙሉ ነው።"</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"ምንም WiFi የለም።"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"የWiFi አንድ አሞሌ።"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"የWiFi ሁለትአሞሌዎች።"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"የWiFi ሦስት አሞሌዎች።"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"የWiFi አመልካች ሙሉ ነው።"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"ምንም WiFi የለም።"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"የWiFi አንድ አሞሌ።"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"የWiFi ሁለትአሞሌዎች።"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"የWiFi ሦስት አሞሌዎች።"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"የWiFi አመልካች ሙሉ ነው።"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"ምንም SIM የለም።"</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ብሉቱዝ ማያያዝ።"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"የአውሮፕላን ሁነታ።"</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G ውሂብ ቦዝኗል"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"የተንቀሳቃሽ ውሂብ ቦዝኗል"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"ውሂብ ቦዝኗል"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"የተጠቀሰው የውሂብ አጠቃቀም ወሰን ደርሷል።"\n\n" ተጨማሪ የውሂብ አጠቃቀም የድምጸ ተያያዥ ሞደም ክፍያን ሊጨምር ይችላል።"</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"የተጠቀሰው የውሂብ አጠቃቀም ወሰን ደርሷል።"\n\n" ተጨማሪ የውሂብ አጠቃቀም የድምጸ ተያያዥ ሞደም ክፍያን ሊጨምር ይችላል።"</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"ውሂብ ድጋሚ አንቃ"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"ምንም በይነመረብ ተያያዥ የለም።"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi ተያይዟል"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 8c35ba7..73c06da 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"ليس هناك أي تنبيهات"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"مستمر"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"التنبيهات"</string> - <string name="battery_low_title" msgid="7923774589611311406">"الرجاء توصيل الشاحن"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"الرجاء توصيل الشاحن"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"انخفضت طاقة البطارية."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"المتبقي: <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"شحن USB غير معتمد."\n"استخدم الشاحن الموفر فقط."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"تلقائي"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"التنبيهات"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"تم إنشاء الاتصال بالإنترنت عن طريق البلوتوث."</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"تهيئة طرق الإدخال"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"تهيئة طرق الإدخال"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"استخدام لوحة المفاتيح الفعلية"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"هل تريد السماح للتطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> بالدخول إلى جهاز USB؟"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"هل تريد السماح للتطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> بالدخول إلى ملحق USB؟"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"هل تريد فتح <xliff:g id="ACTIVITY">%1$s</xliff:g> عند توصيل جهاز USB هذا؟"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"هل تريد فتح <xliff:g id="ACTIVITY">%1$s</xliff:g> عند توصيل ملحق USB هذا؟"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"لا يعمل أي تطبيق مثبت مع ملحق UEB هذا. تعرف على المزيد عن هذا الملحق على <xliff:g id="URL">%1$s</xliff:g>."</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"ملحق USB"</string> <string name="label_view" msgid="6304565553218192990">"عرض"</string> <string name="always_use_device" msgid="1450287437017315906">"الاستخدام بشكل افتراضي لجهاز USB هذا"</string> <string name="always_use_accessory" msgid="1210954576979621596">"الاستخدام بشكل افتراضي لملحق USB هذا"</string> <string name="compat_mode_on" msgid="6623839244840638213">"تكبير/تصغير لملء الشاشة"</string> <string name="compat_mode_off" msgid="4434467572461327898">"توسيع بملء الشاشة"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"تكبير/تصغير التوافق"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"تكبير/تصغير التوافق"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"عند تصميم تطبيق لشاشة أصغر، سيظهر عنصر تحكم في التكبير/التصغير بجوار الساعة."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"خيارات نقل الملفات عبر USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"تحميل كمشغل وسائط (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"تحميل ككاميرا (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"تثبيت تطبيق Android File Transfer لـ Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"تثبيت تطبيق Android File Transfer لـ Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"رجوع"</string> <string name="accessibility_home" msgid="8217216074895377641">"الرئيسية"</string> <string name="accessibility_menu" msgid="316839303324695949">"القائمة"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"إشارة البيانات تتكون من شريطين."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"إشارة البيانات تتكون من ثلاثة أشرطة."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"إشارة البيانات كاملة."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"ليست هناك إشارة WiFi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"إشارة WiFi تتكون من شريط واحد."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"إشارة WiFi تتكون من شريطين."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"إشارة WiFi تتكون من ثلاثة أشرطة."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"إشارة WiFi كاملة."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"ليست هناك إشارة WiFi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"إشارة WiFi تتكون من شريط واحد."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"إشارة WiFi تتكون من شريطين."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"إشارة WiFi تتكون من ثلاثة أشرطة."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"إشارة WiFi كاملة."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"شبكة الجيل الثالث"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"شبكة 3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"شبكة الجيل الرابع"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"ليست هناك بطاقة SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ربط البلوتوث."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"وضع الطائرة."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"تم تعطيل بيانات شبكة الجيل الرابع"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"تم تعطيل بيانات الجوال"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"تم تعطيل البيانات"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"تم بلوغ الحد المحدد لاستخدام البيانات."\n\n"قد يؤدي الاستخدام الإضافي للبيانات إلى تحصيل رسوم من قبل مشغل شبكة الجوال."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"تم بلوغ الحد المحدد لاستخدام البيانات."\n\n"قد يؤدي الاستخدام الإضافي للبيانات إلى تحصيل رسوم من قبل مشغل شبكة الجوال."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"إعادة تمكين البيانات"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"لا يوجد اتصال إنترنت"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi متصل"</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 1b5244e..f151572 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Няма известия"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"В момента"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Известия"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Моля, включете зарядно устройство"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Моля, включете зарядно устройство"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Батерията се изтощава."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Остава: <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Не се поддържа зареждане през USB."\n"Използвайте само доставеното зарядно устройство."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"АВТ."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Известия"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth има връзка с тетъринг"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Конфигуриране на въвеждането"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Конфигуриране на въвеждането"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Използване на физ. клав."</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Да се разреши ли на приложението <xliff:g id="APPLICATION">%1$s</xliff:g> достъп до USB устройството?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Да се разреши ли на приложението <xliff:g id="APPLICATION">%1$s</xliff:g> достъп до аксесоара за USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Да се отвори ли <xliff:g id="ACTIVITY">%1$s</xliff:g>, когато това USB устройство е свързано?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Да се отвори ли <xliff:g id="ACTIVITY">%1$s</xliff:g>, когато този аксесоар за USB е свързан?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Инсталираните приложения не работят с този аксесоар за USB. Научете повече на адрес <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Аксесоар за USB"</string> <string name="label_view" msgid="6304565553218192990">"Преглед"</string> <string name="always_use_device" msgid="1450287437017315906">"Използване по подразб. за това USB устройство"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Използване по подразб. за този аксесоар за USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Мащаб – запълва екрана"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Разпъване – запълва екрана"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Промяна на мащаба за съвместимост"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Промяна на мащаба за съвместимост"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Когато дадено приложение е създадено за по-малък екран, до часовника ще се покаже управление за промяна на мащаба."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Опции за пренос на файлове чрез USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Свързване като медиен плейър (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Свързване като камера (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Инсталиране на Android File Transfer за Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Инсталиране на Android File Transfer за Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Назад"</string> <string name="accessibility_home" msgid="8217216074895377641">"Начало"</string> <string name="accessibility_menu" msgid="316839303324695949">"Меню"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Данните са с две чертички."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Данните са с три чертички."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Сигналът за данни е пълен."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Няма WiFi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi е с една чертичка."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WiFi е с две чертички."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi е с три чертички."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Сигналът за WiFi е пълен."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Няма WiFi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi е с една чертичка."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi е с две чертички."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi е с три чертички."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Сигналът за WiFi е пълен."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Няма SIM карта."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Тетъринг през Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Самолетен режим."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G данните са деактивирани"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Мобилните данни са деактивирани"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Трафикът на данни е деактивиран"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Определеният лимит за използване на данни е достигнат."\n\n"Допълнителната употреба може да доведе до таксуване от оператора."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Определеният лимит за използване на данни е достигнат."\n\n"Допълнителната употреба може да доведе до таксуване от оператора."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Активиране на данните отново"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Няма връзка с интернет"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: Има връзка"</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index c9bda33..317ea2a 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Cap notificació"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Continu"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notificacions"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Connecteu el carregador"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Connecteu el carregador"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"La bateria comença a estar baixa."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> restant"</string> <string name="invalid_charger" msgid="4549105996740522523">"Càrrega d\'USB no admesa."\n"Utilitza només el carregador proporcionat."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificacions"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth sense fil"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configura mètodes d\'entrada"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configura mètodes d\'entrada"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utilitza un teclat físic"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Vols permetre que l\'aplicació <xliff:g id="APPLICATION">%1$s</xliff:g> accedeixi al dispositiu USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Vols permetre que l\'aplicació <xliff:g id="APPLICATION">%1$s</xliff:g> accedeixi a l\'accessori USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Vols que s\'obri <xliff:g id="ACTIVITY">%1$s</xliff:g> quan aquest dispositiu USB estigui connectat?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Vols que s\'obri <xliff:g id="ACTIVITY">%1$s</xliff:g> quan aquest accessori USB estigui connectat?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Cap de les aplicacions instal·lades no funciona amb aquest accessori USB. Més informació a <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Accessori USB"</string> <string name="label_view" msgid="6304565553218192990">"Mostra"</string> <string name="always_use_device" msgid="1450287437017315906">"Utilitza de manera predet. per al dispositiu USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Utilitza de manera predet. per a l\'accessori USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom per omplir pantalla"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Estira per omplir pant."</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Zoom de compatibilitat"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilitat"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Quan una aplicació s\'hagi dissenyat per a una pantalla més petita, apareixerà un control de zoom al costat del rellotge."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opcions transf. fitxers USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Munta com a reproductor multimèdia (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Munta com a càmera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Instal·la aplic. transf. fitxers Android per a Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Instal·la aplic. transf. fitxers Android per a Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Enrere"</string> <string name="accessibility_home" msgid="8217216074895377641">"Pàgina d\'inici"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menú"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Senyal de dades: dues barres."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Senyal de dades: tres barres."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Senyal de dades: complet."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Senyal Wi-Fi: no n\'hi ha"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Senyal Wi-Fi: una barra."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Senyal Wi-Fi: dues barres."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Senyal Wi-Fi: tres barres."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Senyal Wi-Fi: complet."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Senyal Wi-Fi: no n\'hi ha"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Senyal Wi-Fi: una barra."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Senyal Wi-Fi: dues barres."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Senyal Wi-Fi: tres barres."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Senyal Wi-Fi: complet."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Vora"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"No hi ha cap targeta SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Connexió Bluetooth mitjançant dispositiu portàtil"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode d\'avió."</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Dades 4G desactivades"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Dades mòbils desactivades"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Dades desactivades"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"S\'ha assolit el límit d\'ús de dades especificat."\n\n"Si s\'utilitzen més dades, l\'operador hi podria aplicar càrrecs."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"S\'ha assolit el límit d\'ús de dades especificat."\n\n"Si s\'utilitzen més dades, l\'operador hi podria aplicar càrrecs."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Torna a activar les dades"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"No hi ha connexió a Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: connectada"</string> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 1ae0071..a6d0986 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Žádná oznámení"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Probíhající"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Oznámení"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Prosím připojte dobíjecí zařízení"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Prosím připojte dobíjecí zařízení"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Baterie je vybitá."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Zbývá <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Nabíjení pomocí rozhraní USB není podporováno."\n"Používejte pouze nabíječku, která byla dodána se zařízením."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Oznámení"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Datové připojení Bluetooth se sdílí"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Nakonfigurovat metody vstupu"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Nakonfigurovat metody vstupu"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Použít fyz. klávesnici"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Povolit aplikaci <xliff:g id="APPLICATION">%1$s</xliff:g> přístup k zařízení USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Povolit aplikaci <xliff:g id="APPLICATION">%1$s</xliff:g> přístup k perifernímu zařízení USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Chcete při připojení tohoto zařízení USB otevřít aplikaci <xliff:g id="ACTIVITY">%1$s</xliff:g>?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Chcete při připojení tohoto periferního zařízení USB otevřít aplikaci <xliff:g id="ACTIVITY">%1$s</xliff:g>?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"S tímto periferním zařízením USB nefunguje žádná nainstalovaná aplikace. Další informace naleznete na stránkách <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Periferní zařízení USB"</string> <string name="label_view" msgid="6304565553218192990">"Zobrazit"</string> <string name="always_use_device" msgid="1450287437017315906">"Pro toto zařízení USB použít jako výchozí"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Pro toto periferní zařízení USB použít jako výchozí"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Přiblížit na celou obrazovku"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Na celou obrazovku"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Kompatibilní přiblížení"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilní přiblížení"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Pokud je aplikace navržena pro menší obrazovku, zobrazí se vedle hodin ovládací prvek přiblížení."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Možnosti přenosu souborů pomocí rozhraní USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Připojit jako přehrávač médií (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Připojit jako fotoaparát (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Instalovat aplikaci Android File Transfer pro Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Instalovat aplikaci Android File Transfer pro Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Zpět"</string> <string name="accessibility_home" msgid="8217216074895377641">"Domů"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Dvě čárky signálu datové sítě."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Tři čárky signálu datové sítě."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Plný signál datové sítě."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Síť Wi-Fi není dostupná."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Jedna čárka signálu sítě Wi-Fi."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Dvě čárky signálu sítě Wi-Fi."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Tři čárky signálu sítě Wi-Fi."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Plný signál sítě Wi-Fi."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Síť Wi-Fi není dostupná."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Jedna čárka signálu sítě Wi-Fi."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dvě čárky signálu sítě Wi-Fi."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tři čárky signálu sítě Wi-Fi."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Plný signál sítě Wi-Fi."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Žádná karta SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering přes Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim V letadle."</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Datové přenosy 4G jsou zakázány"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobilní data jsou zakázána"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Přenos dat vypnut"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Dosáhli jste zadaného limitu množství přenesených dat."\n\n"Za další datové přenosy vám operátor může účtovat poplatky."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Dosáhli jste zadaného limitu množství přenesených dat."\n\n"Za další datové přenosy vám operátor může účtovat poplatky."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Znovu povolit data"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Žádné přip. k internetu"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: připojeno"</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index f1704b1..156e557 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Ingen meddelelser"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"I gang"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Meddelelser"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Forbind oplader"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Forbind oplader"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Batteriet er ved at være fladt."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> tilbage"</string> <string name="invalid_charger" msgid="4549105996740522523">"Opladning via USB understøttes ikke."\n"Brug kun den medfølgende oplader."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Meddelelser"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth-tethering anvendt"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurer inputmetoder"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfigurer inputmetoder"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Brug fysisk tastatur"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Vil du tillade, at applikationen <xliff:g id="APPLICATION">%1$s</xliff:g> får adgang til USB-enheden?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Vil du tillade, at applikationen <xliff:g id="APPLICATION">%1$s</xliff:g> får adgang til USB-ekstraudstyret?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Vil du åbne <xliff:g id="ACTIVITY">%1$s</xliff:g>, når denne USB-enhed er tilsluttet?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Vil du åbne <xliff:g id="ACTIVITY">%1$s</xliff:g>, når dette USB-ekstraudstyr er tilsluttet?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Ingen inst. applikationer virker med USB-ekstraudstyret. Få oplysninger om ekstraudstyret på <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB-ekstraudstyr"</string> <string name="label_view" msgid="6304565553218192990">"Vis"</string> <string name="always_use_device" msgid="1450287437017315906">"Brug som standard til denne USB-enhed"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Brug som standard til dette USB-tilbehør"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom til fuld skærm"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Stræk til fuld skærm"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Kompatibilitetszoom"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilitetszoom"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Når en app er udviklet til en mindre skærm, vises der en zoomfunktion ved uret."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Muligheder for USB-filoverførsel"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Isæt som en medieafspiller (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Isæt som et kamera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Installer appen Android File Transfer Manager til Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Installer appen Android File Transfer Manager til Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Tilbage"</string> <string name="accessibility_home" msgid="8217216074895377641">"Startside"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data to bjælker."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data tre bjælker."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Datasignal fuldt."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Ingen Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi en bjælke."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi to bjælker."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi tre bjælker."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi-signal fuldt."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Ingen Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi en bjælke."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi to bjælker."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi tre bjælker."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi-signal fuldt."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Intet SIM-kort."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-netdeling."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Flytilstand."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G-data er deaktiveret"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobildata er deaktiveret"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data er deaktiveret"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Den angivne grænse for dataforbrug er nået."\n\n"Yderligere dataforbrug kan koste ekstra hos mobilselskabet."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Den angivne grænse for dataforbrug er nået."\n\n"Yderligere dataforbrug kan koste ekstra hos mobilselskabet."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Genaktiver data"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Ingen internetforb."</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi er forbundet"</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index e5d23ad..d1500ca 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Keine Benachrichtigungen"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Aktuell"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Benachrichtigungen"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Ladegerät anschließen"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Ladegerät anschließen"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Akku ist fast leer."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Noch <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB-Aufladung wird nicht unterstützt."\n"Verwenden Sie das mitgelieferte Aufladegerät."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Benachrichtigungen"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth-Tethering aktiv"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Eingabemethoden konfigurieren"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Eingabemethoden konfigurieren"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Physische Tastatur"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"App <xliff:g id="APPLICATION">%1$s</xliff:g> Zugriff auf USB-Gerät gewähren?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"App <xliff:g id="APPLICATION">%1$s</xliff:g> Zugriff auf USB-Zubehör gewähren?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"<xliff:g id="ACTIVITY">%1$s</xliff:g> öffnen, wenn dieses USB-Gerät verbunden ist?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"<xliff:g id="ACTIVITY">%1$s</xliff:g> öffnen, wenn dieses USB-Zubehör verbunden ist?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Keine installierten Anwendungen für dieses USB-Zubehör. Weitere Informationen unter <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB-Zubehör"</string> <string name="label_view" msgid="6304565553218192990">"Anzeigen"</string> <string name="always_use_device" msgid="1450287437017315906">"Standardmäßig für dieses USB-Gerät verwenden"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Standardmäßig für dieses USB-Zubehör verwenden"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom auf Bildschirmgröße"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Auf Bildschirmgröße anpassen"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Kompatibilitätszoom"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilitätszoom"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Wenn eine App für einen kleineren Bildschirm ausgelegt ist, wird ein Zoom-Steuerelement neben der Uhr angezeigt."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB-Dateiübertragungsoptionen"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Als Medienplayer (MTP) bereitstellen"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Als Kamera (PTP) bereitstellen"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"App \"Android File Transfer\" für Mac installieren"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"App \"Android File Transfer\" für Mac installieren"</string> <string name="accessibility_back" msgid="567011538994429120">"Zurück"</string> <string name="accessibility_home" msgid="8217216074895377641">"Startbildschirm"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menü"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Datensignal - zwei Balken"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Datensignal - drei Balken"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Volle Datensignalstärke"</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Kein WLAN"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WLAN - ein Balken"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WLAN - zwei Balken"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WLAN - drei Balken"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Volle WLAN-Signalstärke"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Kein WLAN"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WLAN - ein Balken"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WLAN - zwei Balken"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WLAN - drei Balken"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Volle WLAN-Signalstärke"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WLAN"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WLAN"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Keine SIM-Karte"</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-Tethering"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Flugmodus"</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G-Daten deaktiviert"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobile Daten deaktiviert"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Daten deaktiviert"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Das für die Datennutzung festgelegte Limit wurde erreicht."\n\n"Eine weitere Datennutzung kann mit zusätzlichen Kosten vonseiten des Mobilfunkanbieters verbunden sein."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Das für die Datennutzung festgelegte Limit wurde erreicht."\n\n"Eine weitere Datennutzung kann mit zusätzlichen Kosten vonseiten des Mobilfunkanbieters verbunden sein."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Daten erneut aktivieren"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Keine Internetverbindung"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"WLAN verbunden"</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index aca9004..62c0802 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Δεν υπάρχουν ειδοποιήσεις"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Εν εξελίξει"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Ειδοποιήσεις"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Συνδέστε τον φορτιστή"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Συνδέστε τον φορτιστή"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Η στάθμη της μπαταρίας είναι χαμηλή."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Απομένει <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Δεν υποστηρίζεται η φόρτιση USB."\n"Χρησιμοποιείτε μόνο τον φορτιστή που παρέχεται."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ΑΥΤΟΜ."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Ειδοποιήσεις"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Έγινε σύνδεση μέσω Bluetooth"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Διαμόρφωση μεθόδων εισαγωγής"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Διαμόρφωση μεθόδων εισαγωγής"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Χρήση κανονικού πληκτρολ."</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Να επιτρέπεται στην εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g> η πρόσβαση στη συσκευή USB;"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Να επιτρέπεται στην εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g> η πρόσβαση στο αξεσουάρ USB;"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Άνοιγμα του <xliff:g id="ACTIVITY">%1$s</xliff:g> κατά τη σύνδεση αυτής της συσκευής USB;"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Άνοιγμα του <xliff:g id="ACTIVITY">%1$s</xliff:g> κατά τη σύνδεση αυτού του αξεσουάρ USB;"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Καμία εγκατ. εφαρμ. δεν συνεργ. με το αξ. USB. Μάθετε περισ. για το αξ. στο <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Αξεσουάρ USB"</string> <string name="label_view" msgid="6304565553218192990">"Προβολή"</string> <string name="always_use_device" msgid="1450287437017315906">"Χρήση από προεπιλογή για αυτή τη συσκευή USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Χρήση από προεπιλογή για αυτό το εξάρτημα USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Ζουμ σε πλήρη οθόνη"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Προβoλή σε πλήρη οθ."</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Ζουμ για συμβατότητα"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Ζουμ για συμβατότητα"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Όταν μια εφαρμογή έχει σχεδιαστεί για προβολή σε μικρότερη οθόνη, δίπλα από το ρολόι θα εμφανιστεί ένα στοιχείο ελέγχου ζουμ."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Επιλογές μεταφοράς αρχείων μέσω USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Προσάρτηση ως μονάδας αναπαραγωγής μέσων (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Προσάρτηση ως κάμερας (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Εγκατάσταση της εφαρμογής μεταφοράς αρχείων Android για Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Εγκατάσταση της εφαρμογής μεταφοράς αρχείων Android για Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Πίσω"</string> <string name="accessibility_home" msgid="8217216074895377641">"Αρχική σελίδα"</string> <string name="accessibility_menu" msgid="316839303324695949">"Μενού"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Δύο γραμμές δεδομένων."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Τρεις γραμμές δεδομένων."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Πλήρες σήμα δεδομένων."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Δεν υπάρχει WiFi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Μία γραμμή WiFi."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Δύο γραμμές WiFi."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Τρεις γραμμές WiFi."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Πλήρες σήμα WiFi."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Δεν υπάρχει WiFi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Μία γραμμή WiFi."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Δύο γραμμές WiFi."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Τρεις γραμμές WiFi."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Πλήρες σήμα WiFi."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Δεν υπάρχει SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tethering"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Λειτουργία πτήσης."</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Τα δεδομένα 4G απενεργοποιήθηκαν"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Τα δεδομένα κινητής τηλεφωνίας απενεργοποιήθηκαν"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Απενεργοποιήθηκαν τα δεδομένα"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Το καθορισμένο όριο χρήσης δεδομένων συμπληρώθηκε."\n\n"Πρόσθετη χρήση δεδομένων ενδέχεται να επιφέρει χρεώσεις από την εταιρεία κινητής τηλεφωνίας."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Το καθορισμένο όριο χρήσης δεδομένων συμπληρώθηκε."\n\n"Πρόσθετη χρήση δεδομένων ενδέχεται να επιφέρει χρεώσεις από την εταιρεία κινητής τηλεφωνίας."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Νέα ενεργοποίηση δεδομένων"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Χωρ. σύνδ. στο Διαδ."</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi συνδεδεμένο"</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index d8b0408..e675804 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"No notifications"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Ongoing"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notifications"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Please connect charger"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Please connect charger"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"The battery is getting low."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> remaining"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB charging not supported."\n"Use only the supplied charger."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notifications"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth tethered"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configure input methods"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configure input methods"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Use physical keyboard"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Allow the application <xliff:g id="APPLICATION">%1$s</xliff:g> to access the USB device?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Allow the application <xliff:g id="APPLICATION">%1$s</xliff:g> to access the USB accessory?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Open <xliff:g id="ACTIVITY">%1$s</xliff:g> when this USB device is connected?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Open <xliff:g id="ACTIVITY">%1$s</xliff:g> when this USB accessory is connected?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"No installed applications work with this USB accessory. Learn more about this accessory at <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB accessory"</string> <string name="label_view" msgid="6304565553218192990">"View"</string> <string name="always_use_device" msgid="1450287437017315906">"Use by default for this USB device"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Use by default for this USB accessory"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom to fill screen"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Stretch to fill screen"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Compatibility Zoom"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Compatibility Zoom"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"When an app was designed for a smaller screen, a zoom control will appear by the clock."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB file transfer options"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Mount as a media player (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Mount as a camera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Install Android File Transfer application for Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Install Android File Transfer application for Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Back"</string> <string name="accessibility_home" msgid="8217216074895377641">"Home"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data two bars."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data three bars."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Data signal full."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"No Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi one bar."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi two bars."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi three bars."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi signal full."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"No Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi one bar."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi two bars."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi three bars."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi signal full."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"No SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tethering"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Airplane mode"</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G data disabled"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobile data disabled"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data disabled"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"The specified data usage limit has been reached."\n\n"Additional data use may incur operator charges."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"The specified data usage limit has been reached."\n\n"Additional data use may incur operator charges."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Reenable data"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"No Internet connection"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi connected"</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index b21a1c7..297a307 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"No hay notificaciones"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Continuo"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notificaciones"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Conecta el cargador"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Conecta el cargador"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Hay poca batería."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Quedan <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"No admite la carga USB."\n"Usa sólo el cargador provisto."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificaciones"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth anclado"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configurar métodos de entrada"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configurar métodos de entrada"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Usar teclado físico"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"¿Permitir la aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> para acceder al dispositivo USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"¿Permitir la aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> para acceder al accesorio USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"¿Abrir <xliff:g id="ACTIVITY">%1$s</xliff:g> cuando este dispositivo USB esté conectado?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"¿Abrir <xliff:g id="ACTIVITY">%1$s</xliff:g> cuando este accesorio USB esté conectado?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Las aplicaciones instaladas no funcionan con este accesorio USB. Obtener más información acerca de este accesorio en <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Accesorio USB"</string> <string name="label_view" msgid="6304565553218192990">"Ver"</string> <string name="always_use_device" msgid="1450287437017315906">"Se usa de forma predeterminada para este dispositivo USB."</string> <string name="always_use_accessory" msgid="1210954576979621596">"Se usa de forma predeterminada para este accesorio USB."</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom para ocupar la pantalla"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Estirar p/ ocupar la pantalla"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Zoom de compatibilidad"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilidad"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Cuando una aplicación fue diseñada para una pantalla más pequeña, aparece un control de zoom junto al reloj."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opciones de transferencia de archivos por USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Activar como reproductor de medios (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Activar como cámara (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Instalar la aplicación para transferir archivos de Android para Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Instalar la aplicación para transferir archivos de Android para Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Atrás"</string> <string name="accessibility_home" msgid="8217216074895377641">"Página principal"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menú"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Dos barras de datos"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Tres barras de datos"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Señal de datos completa"</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"No hay Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Una barra de Wi-Fi"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Dos barras de Wi-Fi"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Tres barras de Wi-Fi"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Señal de Wi-Fi completa"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"No hay Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Una barra de Wi-Fi"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dos barras de Wi-Fi"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tres barras de Wi-Fi"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Señal de Wi-Fi completa"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"No hay tarjeta SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Conexión mediante Bluetooth"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo de avión"</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Datos de 4G inhabilitados"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Se inhabilitaron los datos móviles"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Datos inhabilitados"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Se ha alcanzado el límite de uso de datos especificado."\n\n"El uso de datos adicionales puede conllevar cargos para el proveedor."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Se ha alcanzado el límite de uso de datos especificado."\n\n"El uso de datos adicionales puede conllevar cargos para el proveedor."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Volver a habilitar datos"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Sin conexión a Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi conectado"</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 367791a..5322212 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"No tienes notificaciones"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Entrante"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notificaciones"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Conecta el cargador"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Conecta el cargador"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Se está agotando la batería."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> restante"</string> <string name="invalid_charger" msgid="4549105996740522523">"No se admite la carga por USB."\n"Utiliza solo el cargador proporcionado."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificaciones"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth anclado"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configurar métodos de introducción"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configurar métodos de introducción"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utilizar teclado físico"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"¿Permitir que la aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> acceda al dispositivo USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"¿Permitir que la aplicación <xliff:g id="APPLICATION">%1$s</xliff:g> acceda al accesorio USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"¿Quieres abrir <xliff:g id="ACTIVITY">%1$s</xliff:g> al conectar este dispositivo USB?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"¿Quieres abrir <xliff:g id="ACTIVITY">%1$s</xliff:g> al conectar este accesorio USB?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Ninguna aplicación instalada funciona con este accesorio USB. Más información: <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Accesorio USB"</string> <string name="label_view" msgid="6304565553218192990">"Ver"</string> <string name="always_use_device" msgid="1450287437017315906">"Usar de forma predeterminada para este dispositivo USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Usar de forma predeterminada para este accesorio USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom para ajustar"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Expandir para ajustar"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Zoom de compatibilidad"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilidad"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Si la aplicación se ha diseñado para una pantalla más pequeña, aparecerá un control de zoom junto al reloj."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opciones de transferencia de archivos por USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Activar como reproductor de medios (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Activar como cámara (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Instalar Android File Transfer para Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Instalar Android File Transfer para Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Atrás"</string> <string name="accessibility_home" msgid="8217216074895377641">"Inicio"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menú"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Dos barras de datos"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Tres barras de datos"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Señal de datos al máximo"</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Sin redes Wi-Fi"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Una barra de Wi-Fi"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Dos barras de Wi-Fi"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Tres barras de Wi-Fi"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Señal de Wi-Fi al máximo"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Sin redes Wi-Fi"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Una barra de Wi-Fi"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dos barras de Wi-Fi"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tres barras de Wi-Fi"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Señal de Wi-Fi al máximo"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5 G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Tipo Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Sin tarjeta SIM"</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Anclaje de Bluetooth"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avión"</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Datos 4G inhabilitados"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Datos móviles inhabilitados"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Datos inhabilitados"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Se ha alcanzado el límite de uso de datos especificado."\n\n"Se pueden aplicar cargos adicionales si utilizas más datos."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Se ha alcanzado el límite de uso de datos especificado."\n\n"Se pueden aplicar cargos adicionales si utilizas más datos."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Volver a habilitar los datos"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Sin conexión a Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Con conexión Wi-Fi"</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index ef1bf8e..c6e0dff 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"اعلانی موجود نیست"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"در حال انجام"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"اعلان ها"</string> - <string name="battery_low_title" msgid="7923774589611311406">"لطفاً شارژر را وصل کنید"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"لطفاً شارژر را وصل کنید"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"باتری در حال کم شدن است."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> باقیمانده است"</string> <string name="invalid_charger" msgid="4549105996740522523">"شارژ USB پشتیبانی نمی شود."\n"فقط از شارژر ارائه شده استفاده کنید."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"خودکار"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"اعلان ها"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"اتصال اینترنتی با بلوتوث تلفن همراه"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"پیکربندی روش های ورودی"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"پیکربندی روش های ورودی"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"از صفحه کلید فیزیکی استفاده کنید"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"به برنامه <xliff:g id="APPLICATION">%1$s</xliff:g> اجازه می دهید به دستگاه USB وصل شود؟"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"به برنامه <xliff:g id="APPLICATION">%1$s</xliff:g> اجازه می دهید به وسیله جانبی USB وصل شود؟"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"وقتی این دستگاه USB وصل است، <xliff:g id="ACTIVITY">%1$s</xliff:g> باز شود؟"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"وقتی این وسیله جانبی USB وصل است، <xliff:g id="ACTIVITY">%1$s</xliff:g> باز شود؟"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"برنامه های نصب شده با این وسیله جانبی USB کار می کنند. در <xliff:g id="URL">%1$s</xliff:g>راجع به این لوازم جانبی بیشتر بیاموزید"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"لوازم جانبی USB"</string> <string name="label_view" msgid="6304565553218192990">"مشاهده"</string> <string name="always_use_device" msgid="1450287437017315906">"استفاده به صورت پیش فرض برای این دستگاه USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"استفاده به صورت پیش فرض برای این دستگاه USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"بزرگنمایی برای پر کردن صفحه"</string> <string name="compat_mode_off" msgid="4434467572461327898">"گسترده کردن برای پر کردن صفحه"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"بزرگنمایی سازگاری"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"بزرگنمایی سازگاری"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"اگر یک برنامه برای صفحه کوچک تری طراحی شده باشد، یک کنترل بزرگنمایی توسط ساعت نشان داده می شود."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"گزینه های انتقال فایل USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"نصب به عنوان دستگاه پخش رسانه (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"تصب به عنوان دوربین (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"نصب برنامه انتقال فایل Android برای Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"نصب برنامه انتقال فایل Android برای Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"برگشت"</string> <string name="accessibility_home" msgid="8217216074895377641">"صفحه اصلی"</string> <string name="accessibility_menu" msgid="316839303324695949">"منو"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"دو نوار برای داده."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"سه نوار برای داده."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"قدرت سیگنال داده کامل است."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Wi-Fi موجود نیست."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"یک نوار برای WiFi."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"دو نوار برای WiFi."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"سه نوار برای WiFi."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"قدرت سیگنال WiFi کامل است."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Wi-Fi موجود نیست."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"یک نوار برای WiFi."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"دو نوار برای WiFi."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"سه نوار برای WiFi."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"قدرت سیگنال WiFi کامل است."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wifi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wifi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"بدون سیم کارت."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"اتصال اینترنت با بلوتوث تلفن همراه."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"حالت هواپیما."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"داده 4G غیر فعال شد"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"دادههای تلفن همراه غیرفعال است"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"داده غیرفعال شد"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"به حداکثر محدودیت استفاده از داده رسیدهاید."\n\n"استفاده از داده بیشتر سبب افزایش هزینههای شرکت مخابراتی میشود."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"به حداکثر محدودیت استفاده از داده رسیدهاید."\n\n"استفاده از داده بیشتر سبب افزایش هزینههای شرکت مخابراتی میشود."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"فعال کردن مجدد داده"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"اتصال اینترنتی وجود ندارد"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi متصل شد"</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 5ffa449..c1c280f 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Ei ilmoituksia"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Käynnissä olevat"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Ilmoitukset"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Kytke laturi"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Kytke laturi"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Akun virta on vähissä."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> jäljellä"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB-latausta ei tueta."\n"Käytä laitteen mukana tullutta laturia."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Ilmoitukset"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth yhdistetty"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Määritä syöttötavat"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Määritä syöttötavat"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Käytä fyysistä näppäimistöä"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Annetaanko sovellukselle <xliff:g id="APPLICATION">%1$s</xliff:g> lupa käyttää USB-laitetta?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Annetaanko sovellukselle <xliff:g id="APPLICATION">%1$s</xliff:g> lupa käyttää USB-lisälaitetta?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Avataanko <xliff:g id="ACTIVITY">%1$s</xliff:g> tämän USB-laitteen ollessa kytkettynä?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Avataanko <xliff:g id="ACTIVITY">%1$s</xliff:g> tämän USB-lisälaitteen ollessa kytkettynä?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Asennetut sov. eivät toimi tämän USB-lisälaitteen kanssa. Lisätietoja lisälaitteesta os. <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB-lisälaite"</string> <string name="label_view" msgid="6304565553218192990">"Näytä"</string> <string name="always_use_device" msgid="1450287437017315906">"Käytä oletuksena tällä USB-laitteella"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Käytä oletuksena tällä USB-lisälaitteella"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoomaa koko näyttöön"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Venytä koko näyttöön"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Yhteensopivuustilan zoomaus"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Yhteensopivuustilan zoomaus"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Jos sovellus on suunniteltu pienemmälle näytölle, kellon viereen tulee näkyviin zoomaussäädin."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB-tiedostonsiirtoasetukset"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Käytä mediasoittimena (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Käytä kamerana (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Asenna Android File Transfer -sovellus Macille"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Asenna Android File Transfer -sovellus Macille"</string> <string name="accessibility_back" msgid="567011538994429120">"Takaisin"</string> <string name="accessibility_home" msgid="8217216074895377641">"Aloituspainike"</string> <string name="accessibility_menu" msgid="316839303324695949">"Valikko"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Datasignaali - kaksi palkkia."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Datasignaali - kolme palkkia"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Vahva kuuluvuus."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Ei wifi-yhteyttä."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wifi-signaali - yksi palkki."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wifi-signaali - kaksi palkkia."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wifi-signaali - kolme palkkia."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Vahva wifi-signaali."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Ei wifi-yhteyttä."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wifi-signaali - yksi palkki."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wifi-signaali - kaksi palkkia."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wifi-signaali - kolme palkkia."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Vahva wifi-signaali."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wifi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wifi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Ei SIM-korttia."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Internetyhteyden jakaminen Bluetoothin kautta."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Lentokonetila."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G-tiedonsiirto pois käytöstä"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobiilitiedonsiirto pois käytöstä"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Tiedonsiirto pois käytöstä"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Asetettu tiedonsiirtoraja on täynnä."\n\n"Operaattori voi veloittaa lisätiedonsiirrosta."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Asetettu tiedonsiirtoraja on täynnä."\n\n"Operaattori voi veloittaa lisätiedonsiirrosta."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Ota tiedonsiirto käyttöön"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Ei internetyhteyttä"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wifi yhdistetty"</string> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index 29c608e..d402ea6 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Aucune notification"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"En cours"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notifications"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Branchez le chargeur"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Branchez le chargeur"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Le niveau de la batterie est faible."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> restant(s)"</string> <string name="invalid_charger" msgid="4549105996740522523">"Chargement USB non disponible."\n"Vous devez utiliser le chargeur fourni."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notifications"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Connexion Bluetooth partagée"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configurer les modes de saisie"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configurer les modes de saisie"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utiliser clavier physique"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Autoriser l\'application <xliff:g id="APPLICATION">%1$s</xliff:g> à accéder au périphérique USB ?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Autoriser l\'application <xliff:g id="APPLICATION">%1$s</xliff:g> à accéder à l\'accessoire USB ?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Ouvrir <xliff:g id="ACTIVITY">%1$s</xliff:g> lors de la connexion de ce périphérique USB ?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Ouvrir <xliff:g id="ACTIVITY">%1$s</xliff:g> lors de la connexion de cet accessoire USB ?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Aucune application installée n\'est compatible avec cet accessoire USB. En savoir plus sur <xliff:g id="URL">%1$s</xliff:g>."</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Accessoire USB"</string> <string name="label_view" msgid="6304565553218192990">"Afficher"</string> <string name="always_use_device" msgid="1450287437017315906">"Utiliser par défaut pour ce périphérique USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Utiliser par défaut pour cet accessoire USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoomer pour remplir l\'écran"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Étirer pour remplir l\'écran"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Zoom de compatibilité"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilité"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Si une application a été conçue pour un écran plus petit, une commande de zoom s\'affiche à côté de l\'horloge."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Options transfert fichiers USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Installer en tant que lecteur multimédia (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Installer en tant qu\'appareil photo (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Installer application Android File Transfer pour Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Installer application Android File Transfer pour Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Retour"</string> <string name="accessibility_home" msgid="8217216074895377641">"Accueil"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Signal moyen"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Signal bon"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Signal excellent"</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Aucune connexion Wi-Fi"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Signal Wi-Fi faible"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Signal Wi-Fi : moyen"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Signal Wi-Fi : bon"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Signal Wi-Fi excellent"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Aucune connexion Wi-Fi"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Signal Wi-Fi faible"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Signal Wi-Fi : moyen"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Signal Wi-Fi : bon"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Signal Wi-Fi excellent"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3G+"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Aucune carte SIM"</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Partage de connexion Bluetooth"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode Avion"</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Données 4G désactivées"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Données mobiles désactivées"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Données désactivées"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Vous avez atteint la limite d\'utilisation de données spécifiée."\n\n"L\'utilisation supplémentaire de données peut entraîner la facturation de frais par votre opérateur."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Vous avez atteint la limite d\'utilisation de données spécifiée."\n\n"L\'utilisation supplémentaire de données peut entraîner la facturation de frais par votre opérateur."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Réactiver connexion données"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Aucune connexion"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Connecté au Wi-Fi"</string> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 688cc1b..2038fc6 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"कोई सूचना नहीं"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"ऑनगोइंग"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"सूचनाएं"</string> - <string name="battery_low_title" msgid="7923774589611311406">"कृपया चार्जर कनेक्ट करें"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"कृपया चार्जर कनेक्ट करें"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"बैटरी कम हो रही है."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> शेष"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB चार्जिंग समर्थित नहीं है."\n"केवल आपूर्ति किए गए चार्जर का उपयोग करें."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"स्वत:"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"सूचनाएं"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth टीदर किया गया"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"इनपुट पद्धतियां कॉन्फ़िगर करें"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"इनपुट पद्धतियां कॉन्फ़िगर करें"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"भौतिक कीबोर्ड का उपयोग करें"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"एप्लिकेशन <xliff:g id="APPLICATION">%1$s</xliff:g> को USB उपकरण में पहुंच की अनुमति दें?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"एप्लिकेशन <xliff:g id="APPLICATION">%1$s</xliff:g> को USB एसेसरी में पहुंच की अनुमति दें?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"जब यह USB उपकरण कनेक्ट किया जाए, तब <xliff:g id="ACTIVITY">%1$s</xliff:g> को खोलें?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"जब यह USB एसेसरी कनेक्ट की जाए, तब <xliff:g id="ACTIVITY">%1$s</xliff:g> को खोलें?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"इंस्टॉल की हुई एप्लिकेशन इस USB एसेसरी के साथ काम नहीं करती. <xliff:g id="URL">%1$s</xliff:g> पर इस एसेसरी के बारे में अधिक जानें"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB सहायक साधन"</string> <string name="label_view" msgid="6304565553218192990">"देखें"</string> <string name="always_use_device" msgid="1450287437017315906">"इस USB उपकरण के लिए डिफ़ॉल्ट रूप से उपयोग करें"</string> <string name="always_use_accessory" msgid="1210954576979621596">"इस USB एसेसरी के लिए डिफ़ॉल्ट रूप से उपयोग करें"</string> <string name="compat_mode_on" msgid="6623839244840638213">"स्क्रीन भरने हेतु ज़ूम करें"</string> <string name="compat_mode_off" msgid="4434467572461327898">"स्क्रीन को भरने के लिए खींचें"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"संगतता ज़ूम"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"संगतता ज़ूम"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"जब किसी छोटी स्क्रीन के लिए एप्लिकेशन को डिज़ाइन किया जाता है, तो ज़ूम नियंत्रण क्लॉक के पास दिखाई देगा."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB फ़ाइल स्थानांतरण विकल्प"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"मीडिया प्लेयर के रूप में माउंट करें (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"कैमरे के रूप में माउंट करें (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Mac के लिए Android फ़ाइल स्थानां. एप्लि. इंस्टॉल करें"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Mac के लिए Android फ़ाइल स्थानां. एप्लि. इंस्टॉल करें"</string> <string name="accessibility_back" msgid="567011538994429120">"वापस जाएं"</string> <string name="accessibility_home" msgid="8217216074895377641">"होम"</string> <string name="accessibility_menu" msgid="316839303324695949">"मेनू"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"डेटा दो बार."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"डेटा तीन बार."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"पूर्ण डेटा सिग्नल."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"कोई WiFi नहीं."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi एक बार."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WiFi दो बार."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi तीन बार."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"पूर्ण WiFi सिग्नल."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"कोई WiFi नहीं."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi एक बार."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi दो बार."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi तीन बार."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"पूर्ण WiFi सिग्नल."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"किनारा"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"कोई सिम नहीं."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth टेदरिंग."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"हवाई जहाज मोड."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G डेटा अक्षम"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"मोबाइल डेटा अक्षम"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"डेटा अक्षम"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"डेटा उपयोग की निर्दिष्ट सीमा पूरी हो गई है."\n\n"अतिरिक्त डेटा का उपयोग करने पर वाहक शुल्क लगाए जा सकते है."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"डेटा उपयोग की निर्दिष्ट सीमा पूरी हो गई है."\n\n"अतिरिक्त डेटा का उपयोग करने पर वाहक शुल्क लगाए जा सकते है."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"डेटा पुन: सक्षम करें"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"कोई इंटरनेट कनेक्शन नहीं"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi कनेक्ट किया गया"</string> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 017c72f..368ac23 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Bez obavijesti"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"U tijeku"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Obavijesti"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Priključite punjač"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Priključite punjač"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Baterija će uskoro biti potrošena."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> preostalo"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB punjenje nije podržano."\n"Upotrijebite samo priloženi punjač."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Obavijesti"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth posredno povezan"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfiguriraj načine ulaza"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfiguriraj načine ulaza"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Rabi fizičku tipkovnicu"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Dopustiti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> da pristupi ovom USB uređaju?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Dopustiti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> da pristupi ovom USB dodatku?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Otvoriti <xliff:g id="ACTIVITY">%1$s</xliff:g> kad se spoji ovaj USB uređaj?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Otvoriti <xliff:g id="ACTIVITY">%1$s</xliff:g> kad se spoji ovaj USB dodatak?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Nijedna instalirana aplikacija ne radi s ovim USB dodatkom. Saznajte više o ovom dodatku na <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB pribor"</string> <string name="label_view" msgid="6304565553218192990">"Prikaži"</string> <string name="always_use_device" msgid="1450287437017315906">"Koristi se prema zadanim postavkama za ovaj USB uređaj"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Koristi se prema zadanim postavkama za ovaj USB pribor"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zumiraj i ispuni zaslon"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Rastegni i ispuni zaslon"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Kompatibilni zum"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilni zum"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Kada je aplikacija dizajnirana za manji zaslon, kontrole zumiranja prikazuju se pored sata."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opcije USB prijenosa datoteka"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Učitaj kao media player (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Učitaj kao fotoaparat (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Instalacija aplikacije Android File Transfer za Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Instalacija aplikacije Android File Transfer za Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Natrag"</string> <string name="accessibility_home" msgid="8217216074895377641">"Početna"</string> <string name="accessibility_menu" msgid="316839303324695949">"Izbornik"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Podatkovni signal dva stupca."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Podatkovni signal tri stupca."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Podatkovni signal pun."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Nema WiFi signala."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi signal jedan stupac."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WiFi signal dva stupca ."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi tri stupca."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi signal pun."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Nema WiFi signala."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi signal jedan stupac."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi signal dva stupca ."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi tri stupca."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"WiFi signal pun."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Nema SIM kartice."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Posredno povezivanje Bluetootha."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Način rada u zrakoplovu"</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Onemogućeni su 4G podaci"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Onemogućeni su mobilni podaci"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Podaci su onemogućeni"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Dosegnuto je navedeno ograničenje upotrebe podataka."\n\n"Dodatna upotreba podataka može se naplaćivati."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Dosegnuto je navedeno ograničenje upotrebe podataka."\n\n"Dodatna upotreba podataka može se naplaćivati."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Ponovo omogući podatke"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Nema internetske veze"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi povezan"</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 73ae3dc..071ce78 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Nincs értesítés"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Folyamatban van"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Értesítések"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Kérjük, csatlakoztassa a töltőt"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Kérjük, csatlakoztassa a töltőt"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Az akkufeszültség alacsony."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> maradt"</string> <string name="invalid_charger" msgid="4549105996740522523">"Az USB-n keresztüli töltés nincs támogatva."\n"Használja a kapott töltőt."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Értesítések"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth megosztva"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Beviteli módok konfigurálása"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Beviteli módok konfigurálása"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Valódi bill. használata"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"<xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazás hozzáférhet az USB-eszközhöz?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"<xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazás hozzáférhet az USB-kiegészítőhöz?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"<xliff:g id="ACTIVITY">%1$s</xliff:g> megnyitása, ha USB-kiegészítő csatlakoztatva van?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"<xliff:g id="ACTIVITY">%1$s</xliff:g> megnyitása, ha ez az USB-kiegészítő csatlakoztatva van?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"A telepített alkalmazások nem működnek ezzel az USB-kiegészítővel. Bővebben: <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB-kellék"</string> <string name="label_view" msgid="6304565553218192990">"Megtekintés"</string> <string name="always_use_device" msgid="1450287437017315906">"Alapértelmezett használat ehhez az USB-eszközhöz"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Alapértelmezett használat ehhez az USB-kiegészítőhöz"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Nagyítás a kitöltéshez"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Nyújtás kitöltéshez"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Kompatibilitás -- nagyítás/kicsinyítés"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilitás -- nagyítás/kicsinyítés"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Ha egy alkalmazást kisebb képernyőre terveztek, akkor a nagyítás/kicsinyítés vezérlője az óra mellett jelenik meg."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB-fájlátvitel beállításai"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Csatlakoztatás médialejátszóként (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Csatlakoztatás kameraként (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Android fájlátviteli alkalmazás telepítése Machez"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Android fájlátviteli alkalmazás telepítése Machez"</string> <string name="accessibility_back" msgid="567011538994429120">"Vissza"</string> <string name="accessibility_home" msgid="8217216074895377641">"Főoldal"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menü"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Adat két sáv."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Adat három sáv."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Adatjel teljes."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Nincs Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi egy sáv."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi két sáv."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi három sáv."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi jel teljes."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Nincs Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi egy sáv."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi két sáv."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi három sáv."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi jel teljes."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Nincs SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth megosztása."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Repülőgép üzemmód."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G adatforgalom letiltva"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobil adatforgalom letiltva"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Adatok letiltva"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Elérte a megadott adathasználati korlátot."\n\n"További adathasználatért a szolgáltató díjat számolhat fel."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Elérte a megadott adathasználati korlátot."\n\n"További adathasználatért a szolgáltató díjat számolhat fel."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Adatforgalom engedélyezése"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Nincs internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi csatlakoztatva"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index 1f53b1b..7d65587 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Tidak ada pemberitahuan"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Berkelanjutan"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Pemberitahuan"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Harap hubungkan ke pengisi daya"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Harap hubungkan ke pengisi daya"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Baterai semakin lemah."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> tersisa"</string> <string name="invalid_charger" msgid="4549105996740522523">"Pengisian daya USB tidak didukung."\n"Gunakan hanya pengisi daya yang disediakan."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Pemberitahuan"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth tertambat"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurasikan metode masukan"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfigurasikan metode masukan"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Gunakan keyboard fisik"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Izinkan aplikasi <xliff:g id="APPLICATION">%1$s</xliff:g> mengakses perangkat USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Izinkan aplikasi <xliff:g id="APPLICATION">%1$s</xliff:g> mengakses aksesori USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Buka <xliff:g id="ACTIVITY">%1$s</xliff:g> ketika perangkat USB ini tersambung?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Buka <xliff:g id="ACTIVITY">%1$s</xliff:g> ketika aksesori USB ini tersambung?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Tidak ada aplikasi terpasang yang bekerja dengan aksesori USB ini. Pelajari aksesori ini lebih lanjut di <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Aksesori USB"</string> <string name="label_view" msgid="6304565553218192990">"Lihat"</string> <string name="always_use_device" msgid="1450287437017315906">"Gunakan secara bawaan untuk perangkat USB ini"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Gunakan secara bawaan untuk aksesori USB ini"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Perbesar utk mengisi layar"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Rentangkn utk mngisi layar"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Zoom Kompatibilitas"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom Kompatibilitas"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Saat apl dirancang untuk layar yang lebih kecil, kontrol zoom akan tampil di dekat jam."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opsi transfer berkas USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Pasang sebagai pemutar media (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Pasang sebagai kamera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Pasang aplikasi Transfer Berkas Android untuk Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Pasang aplikasi Transfer Berkas Android untuk Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Kembali"</string> <string name="accessibility_home" msgid="8217216074895377641">"Utama"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data dua batang."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data tiga batang."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Sinyal data penuh."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Tidak ada WiFi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi satu batang."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WiFi dua batang."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi tiga batang."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Sinyal WiFi penuh."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Tidak ada WiFi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi satu batang."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi dua batang."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi tiga batang."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Sinyal WiFi penuh."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Tidak ada SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Penambatan bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode pesawat."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Data 4G dinonaktifkan"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Data seluler dinonaktifkan"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data dinonaktifkan"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Telah mencapai batas penggunaan data yang ditetapkan."\n\n"Penggunaan data tambahan mungkin akan dikenai biaya operator."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Telah mencapai batas penggunaan data yang ditetapkan."\n\n"Penggunaan data tambahan mungkin akan dikenai biaya operator."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Aktifkan ulang data"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Tidak ada sambungan internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi tersambung"</string> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index c2cb0e7..a52b0e0 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Nessuna notifica"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"In corso"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notifiche"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Collegare il caricabatterie"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Collegare il caricabatterie"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Batteria quasi scarica."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> rimanente"</string> <string name="invalid_charger" msgid="4549105996740522523">"Ricarica tramite USB non supportata."\n"Utilizza solo il caricatore in dotazione."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notifiche"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth con tethering"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configura metodi di input"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configura metodi di input"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utilizza tastiera fisica"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Consentire all\'applicazione <xliff:g id="APPLICATION">%1$s</xliff:g> di accedere al dispositivo USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Consentire all\'applicazione <xliff:g id="APPLICATION">%1$s</xliff:g> di accedere all\'accessorio USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Aprire <xliff:g id="ACTIVITY">%1$s</xliff:g> quando questo dispositivo USB è collegato?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Aprire <xliff:g id="ACTIVITY">%1$s</xliff:g> quando questo accessorio USB è collegato?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Applicazioni installate non funzionano con accessorio USB. Altre informazioni su accessorio su <xliff:g id="URL">%1$s</xliff:g>."</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Accessorio USB"</string> <string name="label_view" msgid="6304565553218192990">"Visualizza"</string> <string name="always_use_device" msgid="1450287437017315906">"Usa per impostazione predef. per dispositivo USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Usa per impostazione predef. per accessorio USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom per riempire schermo"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Estendi per riemp. schermo"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Zoom compatibilità"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom compatibilità"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Se un\'applicazione è stata progettata per uno schermo più piccolo, accanto all\'orologio viene visualizzato un controllo dello zoom."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opzioni trasferimento file USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Monta come lettore multimediale (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Monta come videocamera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Installa l\'applicazione Android File Transfer per Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Installa l\'applicazione Android File Transfer per Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Indietro"</string> <string name="accessibility_home" msgid="8217216074895377641">"Home"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Dati: due barre."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Dati: tre barre."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Massimo segnale dati."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Nessun segnale Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi: una barra."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi: due barre."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi: tre barre."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Massimo segnale Wi-Fi."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Nessun segnale Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi: una barra."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi: due barre."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi: tre barre."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Massimo segnale Wi-Fi."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Nessuna SIM presente."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modalità aereo."</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Dati 4G disattivati"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Dati mobili disattivati"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Dati disabilati"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Il limite di utilizzo dei dati specificato è stato raggiunto."\n\n"Un ulteriore utilizzo di dati può comportare l\'applicazione di costi da parte dell\'operatore."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Il limite di utilizzo dei dati specificato è stato raggiunto."\n\n"Un ulteriore utilizzo di dati può comportare l\'applicazione di costi da parte dell\'operatore."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Riattiva dati"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Nessuna connessione"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi connesso"</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index cdd36a6..29c5c97 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"אין התראות"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"מתמשך"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"התראות"</string> - <string name="battery_low_title" msgid="7923774589611311406">"חבר מטען"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"חבר מטען"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"הסוללה נחלשת."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"נותרו <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"טעינה באמצעות USB אינה נתמכת."\n"השתמש אך ורק במטען שסופק."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"אוטומטי"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"התראות"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth קשור"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"הגדרת שיטות קלט"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"הגדרת שיטות קלט"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"השתמש במקלדת הפיזית"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"האם לאפשר ליישום <xliff:g id="APPLICATION">%1$s</xliff:g> לגשת למכשיר ה-USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"האם לאפשר ליישום <xliff:g id="APPLICATION">%1$s</xliff:g> לגשת לאביזר ה-USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"האם לפתוח את <xliff:g id="ACTIVITY">%1$s</xliff:g> כאשר מכשיר USB זה מחובר?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"האם לפתוח את <xliff:g id="ACTIVITY">%1$s</xliff:g> כאשר אביזר USB זה מחובר?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"אין יישומים מותקנים הפועלים עם אביזר ה-USB. למידע נוסף על אביזר זה בקר בכתובת <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"אביזר USB"</string> <string name="label_view" msgid="6304565553218192990">"הצג"</string> <string name="always_use_device" msgid="1450287437017315906">"השתמש כברירת מחדל עבור מכשיר USB זה"</string> <string name="always_use_accessory" msgid="1210954576979621596">"השתמש כברירת מחדל עבור אביזר USB זה"</string> <string name="compat_mode_on" msgid="6623839244840638213">"הגדל תצוגה כדי למלא את המסך"</string> <string name="compat_mode_off" msgid="4434467572461327898">"מתח כדי למלא את המסך"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"שינוי מרחק מתצוגה לתאימות"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"שינוי מרחק מתצוגה לתאימות"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"כאשר יישום מיועד למסך קטן יותר, פקד של מרחק מתצוגה יופיע ליד השעון."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"אפשרויות העברת קבצים ב-USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"טען כנגן מדיה (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"טען כמצלמה (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"התקן את יישום העברת הקבצים של Android עבור Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"התקן את יישום העברת הקבצים של Android עבור Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"הקודם"</string> <string name="accessibility_home" msgid="8217216074895377641">"בית"</string> <string name="accessibility_menu" msgid="316839303324695949">"תפריט"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"שני פסים של נתונים."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"שלושה פסים של נתונים."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"אות הנתונים מלא."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"אין WiFi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"פס אחד של WiFi."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"שני פסים של WiFi."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"שלושה פסים של WiFi."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"אות ה-WiFi מלא."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"אין WiFi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"פס אחד של WiFi."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"שני פסים של WiFi."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"שלושה פסים של WiFi."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"אות ה-WiFi מלא."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"קצה"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"אין כרטיס SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"שיתוף אינטרנט בין ניידים של Bluetooth"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"מצב טיסה"</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"נתוני 4G מושבתים"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"נתונים לנייד מושבתים"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"הנתונים מושבתים"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"הגעת למגבלת השימוש בנתונים שצוינה."\n\n"ייתכן שתחויב בתשלום לספק על שימוש נוסף בנתונים."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"הגעת למגבלת השימוש בנתונים שצוינה."\n\n"ייתכן שתחויב בתשלום לספק על שימוש נוסף בנתונים."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"הפעל מחדש את הנתונים"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"אין חיבור לאינטרנט"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi מחובר"</string> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 47292fb..49c5e3c 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"通知なし"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"実行中"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"通知"</string> - <string name="battery_low_title" msgid="7923774589611311406">"充電してください"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"充電してください"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"電池が残り少なくなっています。"</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"残り<xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB充電には対応していません。"\n"付属の充電器をお使いください。"</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"オート"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"通知"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetoothテザリング接続"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"入力方法の設定"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"入力方法の設定"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"物理キーボードを使用"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"アプリケーション<xliff:g id="APPLICATION">%1$s</xliff:g>にUSBデバイスへのアクセスを許可しますか?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"アプリケーション<xliff:g id="APPLICATION">%1$s</xliff:g>にUSBアクセサリへのアクセスを許可しますか?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"このUSBデバイスが接続されたときに<xliff:g id="ACTIVITY">%1$s</xliff:g>を開きますか?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"このUSBアクセサリが接続されたときに<xliff:g id="ACTIVITY">%1$s</xliff:g>を開きますか?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"このUSBアクセサリを扱うアプリはインストールされていません。詳細は <xliff:g id="URL">%1$s</xliff:g> をご覧ください。"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USBアクセサリ"</string> <string name="label_view" msgid="6304565553218192990">"表示"</string> <string name="always_use_device" msgid="1450287437017315906">"このUSBデバイスにデフォルトで使用する"</string> <string name="always_use_accessory" msgid="1210954576979621596">"このUSBアクセサリにデフォルトで使用する"</string> <string name="compat_mode_on" msgid="6623839244840638213">"画面サイズに合わせて拡大"</string> <string name="compat_mode_off" msgid="4434467572461327898">"画面サイズに合わせて拡大"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"互換ズーム"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"互換ズーム"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"より小型の画面向けのアプリの場合は、ズームコントロールが時計のそばに表示されます。"</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USBファイル転送オプション"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"メディアプレーヤー(MTP)としてマウント"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"カメラ(PTP)としてマウント"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Mac版Android File Transferアプリのインストール"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Mac版Android File Transferアプリのインストール"</string> <string name="accessibility_back" msgid="567011538994429120">"戻る"</string> <string name="accessibility_home" msgid="8217216074895377641">"ホーム"</string> <string name="accessibility_menu" msgid="316839303324695949">"メニュー"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"データ信号:レベル2"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"データ信号:レベル3"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"データ信号:フル"</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Wi-Fi電波:なし"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi電波:レベル1"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi電波:レベル2"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi電波:レベル3"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi電波:フル"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Wi-Fi電波:なし"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi電波:レベル1"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi電波:レベル2"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi電波:レベル3"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi電波:フル"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"SIMがありません。"</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetoothテザリング。"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"機内モード。"</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4Gデータが無効になりました"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"モバイルデータが無効になりました"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"データが無効になりました"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"指定したデータ使用上限に達しました。"\n\n"これ以上データを使用すると、携帯通信会社への料金が発生する可能性があります。"</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"指定したデータ使用上限に達しました。"\n\n"これ以上データを使用すると、携帯通信会社への料金が発生する可能性があります。"</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"データ接続を再度有効にする"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"インターネット未接続"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi接続済み"</string> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index e0a0ecf..8a7eff186 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"알림 없음"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"진행 중"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"알림"</string> - <string name="battery_low_title" msgid="7923774589611311406">"충전기를 연결하세요."</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"충전기를 연결하세요."</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"배터리가 얼마 남지 않았습니다."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g>개 남음"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB 충전이 지원되지 않습니다."\n"제공된 충전기만 사용하세요."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"자동"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"알림"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"블루투스 테더링됨"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"입력 방법 구성"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"입력 방법 구성"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"물리적 키보드 사용"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"애플리케이션 <xliff:g id="APPLICATION">%1$s</xliff:g>(이)가 USB 기기에 액세스하도록 허용하시겠습니까?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"애플리케이션 <xliff:g id="APPLICATION">%1$s</xliff:g>(이)가 USB 액세서리에 액세스하도록 허용하시겠습니까"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"USB 기기가 연결될 때 <xliff:g id="ACTIVITY">%1$s</xliff:g>(을)를 여시겠습니까?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"USB 액세서리가 연결될 때 <xliff:g id="ACTIVITY">%1$s</xliff:g>(을)를 여시겠습니까?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"이 USB와 호환되는 설치 애플리케이션이 없습니다. <xliff:g id="URL">%1$s</xliff:g>에서 세부정보를 참조하세요."</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB 액세서리"</string> <string name="label_view" msgid="6304565553218192990">"보기"</string> <string name="always_use_device" msgid="1450287437017315906">"이 USB 기기에 기본값으로 사용"</string> <string name="always_use_accessory" msgid="1210954576979621596">"이 USB 액세서리에 기본값으로 사용"</string> <string name="compat_mode_on" msgid="6623839244840638213">"전체화면 모드로 확대"</string> <string name="compat_mode_off" msgid="4434467572461327898">"전체화면 모드로 확대"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"호환성 확대/축소"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"호환성 확대/축소"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"앱이 작은 화면에 맞도록 설계된 경우 시계 옆에 확대/축소 컨트롤이 표시됩니다."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB 파일 전송 옵션"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"미디어 플레이어로 마운트(MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"카메라로 마운트(PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Mac용 Android 파일 전송 애플리케이션 설치"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Mac용 Android 파일 전송 애플리케이션 설치"</string> <string name="accessibility_back" msgid="567011538994429120">"뒤로"</string> <string name="accessibility_home" msgid="8217216074895377641">"홈"</string> <string name="accessibility_menu" msgid="316839303324695949">"메뉴"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"데이터 신호 막대가 두 개입니다."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"데이터 신호 막대가 세 개입니다."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"데이터 신호가 강합니다."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"WiFi가 없습니다."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi 신호 막대가 하나입니다."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WiFi 신호 막대가 두 개입니다."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi 신호 막대가 세 개입니다."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi 신호가 강합니다."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"WiFi가 없습니다."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi 신호 막대가 하나입니다."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi 신호 막대가 두 개입니다."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi 신호 막대가 세 개입니다."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"WiFi 신호가 강합니다."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM이 없습니다."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"블루투스 테더링입니다."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"비행기 모드입니다."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G 데이터 사용중지됨"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"모바일 데이터 사용중지됨"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"데이터 사용중지됨"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"지정된 데이터 사용 한도에 도달했습니다."\n\n"데이터를 추가로 사용하면 이동통신사에서 요금을 부과할 수 있습니다."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"지정된 데이터 사용 한도에 도달했습니다."\n\n"데이터를 추가로 사용하면 이동통신사에서 요금을 부과할 수 있습니다."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"데이터 연결 다시 사용"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"인터넷에 연결되지 않음"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi 연결됨"</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index b7f5aba..5724812 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Nėra įspėjimų"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Vykstantys"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Įspėjimai"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Prijunkite kroviklį"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Prijunkite kroviklį"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Akumuliatorius senka."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Liko <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB krovimas nepalaikomas."\n"Naudokite tik pateiktą įkroviklį."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Pranešimai"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"„Bluetooth“ susieta"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigūruoti įvesties metodus"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfigūruoti įvesties metodus"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Naudoti fizinę klaviatūrą"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Leisti programai „<xliff:g id="APPLICATION">%1$s</xliff:g>“ pasiekti USB įrenginį?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Leisti programai „<xliff:g id="APPLICATION">%1$s</xliff:g>“ pasiekti USB priedą?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Atidaryti <xliff:g id="ACTIVITY">%1$s</xliff:g>, kai prijungtas šis USB įrenginys?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Atidaryti <xliff:g id="ACTIVITY">%1$s</xliff:g>, kai prijungtas šis USB priedas?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Su šiuo USB pr. nev. jokios įdieg. pr. Suž. daugiau apie šį pr. šiuo adr.: <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB reikmuo"</string> <string name="label_view" msgid="6304565553218192990">"Žiūrėti"</string> <string name="always_use_device" msgid="1450287437017315906">"Šiam USB įreng. naudoti pagal numat. nustatymus"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Šiam USB priedui naudoti pagal numat. nustatymus"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Keisti mast., kad atit. ekr."</string> <string name="compat_mode_off" msgid="4434467572461327898">"Ištempti, kad atit. ekr."</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Suderinamumo mastelio keitimas"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Suderinamumo mastelio keitimas"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Kai programa bus pritaikyta mažesniam ekranui, mastelio keitimo valdiklis bus parodytas šalia laikrodžio."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB failo perdavimo parinktys"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Įmontuoti kaip medijos grotuvą (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Įmontuoti kaip fotoaparatą (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Įdiegti „Mac“ skirtą „Android“ failų perd. progr."</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Įdiegti „Mac“ skirtą „Android“ failų perd. progr."</string> <string name="accessibility_back" msgid="567011538994429120">"Atgal"</string> <string name="accessibility_home" msgid="8217216074895377641">"Pagrindinis"</string> <string name="accessibility_menu" msgid="316839303324695949">"Meniu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Dvi duomenų juostos."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Trys duomenų juostos."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Stiprus duomenų signalas."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Nėra „Wi-Fi“."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Viena „Wi-Fi“ juosta."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Dvi „Wi-Fi“ juostos."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Trys „Wi-Fi“ juostos."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"„Wi-Fi“ signalas stiprus."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Nėra „Wi-Fi“."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Viena „Wi-Fi“ juosta."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dvi „Wi-Fi“ juostos."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Trys „Wi-Fi“ juostos."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"„Wi-Fi“ signalas stiprus."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Kraštas"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Nėra SIM kortelės."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"„Bluetooth“ įrenginio kaip modemo naudojimas."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Lėktuvo režimas."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G duomenys neleidžiami"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobilieji duomenys neleidžiami"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Duomenys neleidžiami"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Pasiektas nurodytas duomenų naudojimo apribojimas."\n\n"Naudojant papildomų duomenų gali būti taikomi operatoriaus mokesčiai."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Pasiektas nurodytas duomenų naudojimo apribojimas."\n\n"Naudojant papildomų duomenų gali būti taikomi operatoriaus mokesčiai."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Iš naujo įgalinti duomenis"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Nėra interneto ryš."</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Prisij. prie „Wi-Fi“"</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index d6409c2..c5909bb 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Nav paziņojumu"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Notiekošs"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Paziņojumi"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Lūdzu, pievienojiet uzlādes ierīci."</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Lūdzu, pievienojiet uzlādes ierīci."</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Akumulators drīz izlādēsies."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Atlicis: <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB lādēšana netiek atbalstīta."\n"Izmantojiet tikai komplektā iekļauto lādētāju."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Paziņojumi"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth piesaiste"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurēt ievades metodes"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfigurēt ievades metodes"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Izmantot fizisku tastatūru"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Vai ļaut lietojumprogrammai <xliff:g id="APPLICATION">%1$s</xliff:g> piekļūt šai USB ierīcei?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Vai ļaut lietojumprogrammai <xliff:g id="APPLICATION">%1$s</xliff:g> piekļūt šim USB piederumam?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Vai atvērt darbību <xliff:g id="ACTIVITY">%1$s</xliff:g>, kad tiek pievienota šī USB ierīce?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Vai atvērt darbību <xliff:g id="ACTIVITY">%1$s</xliff:g>, kad tiek pievienots šis USB piederums?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Neinst. lietojumpr. darbojas ar šo USB pied. Uzz. vairāk par šo piederumu: <xliff:g id="URL">%1$s</xliff:g>."</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB piederums"</string> <string name="label_view" msgid="6304565553218192990">"Skatīt"</string> <string name="always_use_device" msgid="1450287437017315906">"Pēc noklusējuma izmantot šai USB ierīcei"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Pēc noklusējuma izmantot šim USB piederumam"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Tālumm., lai aizp. ekr."</string> <string name="compat_mode_off" msgid="4434467572461327898">"Stiepiet, lai aizp. ekr."</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Saderības tālummaiņa"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Saderības tālummaiņa"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Ja lietotne ir paredzēta mazākam ekrānam, blakus pulkstenim tiks parādīta tālummaiņas vadīkla."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB failu pārsūtīšanas opcijas"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Pievienot kā multivides atskaņotāju (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Pievienot kā kameru (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Instalēt Android failu pārsūt. liet. Mac datoram"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Instalēt Android failu pārsūt. liet. Mac datoram"</string> <string name="accessibility_back" msgid="567011538994429120">"Atpakaļ"</string> <string name="accessibility_home" msgid="8217216074895377641">"Sākums"</string> <string name="accessibility_menu" msgid="316839303324695949">"Izvēlne"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Dati: divas joslas."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Dati: trīs joslas."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Pilna piekļuve datu signālam."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Nav Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi: viena josla."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi: divas joslas."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi: trīs joslas."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Pilna piekļuve Wi-Fi signālam"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Nav Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi: viena josla."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi: divas joslas."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi: trīs joslas."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Pilna piekļuve Wi-Fi signālam"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Nav SIM kartes."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth piesaiste."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Lidmašīnas režīms."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G dati atspējoti"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobilie dati atspējoti"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Dati atspējoti"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Norādītais datu izmantošanas ierobežojums ir sasniegts."\n\n"Izmantojot papildu datus, sakaru operators var no jums iekasēt maksu."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Norādītais datu izmantošanas ierobežojums ir sasniegts."\n\n"Izmantojot papildu datus, sakaru operators var no jums iekasēt maksu."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Atkārtoti iespējot datus"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Nav interneta sav."</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Izv. sav. ar Wi-Fi"</string> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index f84af39..4288f9d 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Tiada pemberitahuan"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Sedang berlangsung"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Pemberitahuan"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Sila sambungkan pengecas"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Sila sambungkan pengecas"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Bateri semakin lemah."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Berbaki <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Pengecasan USB tidak disokong."\n"Gunakan hanya pengecas yang dibekalkan."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Pemberitahuan"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth ditambatkan"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurasikan kaedah input"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfigurasikan kaedah input"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Guna ppn kekunci fizikal"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Benarkan aplikasi <xliff:g id="APPLICATION">%1$s</xliff:g> mengakses peranti USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Benarkan aplikasi <xliff:g id="APPLICATION">%1$s</xliff:g> mengakses aksesori USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Buka <xliff:g id="ACTIVITY">%1$s</xliff:g> apabila peranti USB ini disambungkan?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Buka <xliff:g id="ACTIVITY">%1$s</xliff:g> apabila aksesori USB ini disambungkan?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Tiada apl yg dipsg boleh berfgsi dgn aksri USB ini. Ketahui ttg aksri ini di <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Aksesori USB"</string> <string name="label_view" msgid="6304565553218192990">"Lihat"</string> <string name="always_use_device" msgid="1450287437017315906">"Gunakan secara lalai untuk peranti USB ini"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Gunakan secara lalai untuk aksesori USB ini"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zum untuk memenuhi skrin"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Regang utk memenuhi skrin"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Keserasian Zum"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Keserasian Zum"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Apabila apl direka untuk skrin yang lebih kecil, kawalan zum akan muncul di tepi jam."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Pilihan pemindahan fail USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Lekapkan sebagai pemain media (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Lekapkan sebagai kamera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Pasang aplikasi Pemindahan Fail Android untuk Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Pasang aplikasi Pemindahan Fail Android untuk Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Kembali"</string> <string name="accessibility_home" msgid="8217216074895377641">"Rumah"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data dua bar."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data tiga bar."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Isyarat data penuh."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Tiada WiFi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi satu bar."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WiFi dua bar."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi tiga bar."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Isyarat WiFi penuh."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Tiada WiFi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi satu bar."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi dua bar."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi tiga bar."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Isyarat WiFi penuh."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Tiada SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Penambatan Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mod pesawat"</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Data 4G dilumpuhkan"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Data mudah alih dilumpuhkan"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data dilumpuhkan"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Had penggunaan data yang ditentukan telah dicapai."\n\n"Penggunaan data tambahan mungkin dikenakan caj oleh pembawa."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Had penggunaan data yang ditentukan telah dicapai."\n\n"Penggunaan data tambahan mungkin dikenakan caj oleh pembawa."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Dayakan semula data"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Tiada smbg Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi disambungkan"</string> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 4db2e07..b51665f 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Ingen varslinger"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Aktiviteter"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Varslinger"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Koble til en lader"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Koble til en lader"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Lavt batterinivå."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> gjenværende"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB-lading støttes ikke."\n"Bruk kun den medfølgende laderen."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Varslinger"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth tilknyttet"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurer inndatametoder"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfigurer inndatametoder"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Bruk fysisk tastatur"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Vil du tillate at applikasjonen <xliff:g id="APPLICATION">%1$s</xliff:g> får tilgang til USB-enheten?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Vil du tillate at applikasjonen <xliff:g id="APPLICATION">%1$s</xliff:g> får tilgang til USB-tilbehøret?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Vil du åpne <xliff:g id="ACTIVITY">%1$s</xliff:g> når denne USB-enheten er tilkoblet?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Vil du åpne <xliff:g id="ACTIVITY">%1$s</xliff:g> når dette USB-tilbehøret er tilkoblet?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Ingen installerte applikasjoner støtter dette USB-tilbehøret. Les mer om tilbehøret på <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB-enhet"</string> <string name="label_view" msgid="6304565553218192990">"Vis"</string> <string name="always_use_device" msgid="1450287437017315906">"Bruk som standard for denne USB-enheten"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Bruk som standard for dette USB-tilbehøret"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom for å fylle skjermen"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Strekk for å fylle skjerm"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Kompatibilitets-zooming"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilitets-zooming"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Når en app er utformet for en mindre skjerm, vises det en zoomkontroll ved klokken."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Altern. for USB-filoverføring"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Sett inn som mediespiller (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Sett inn som kamera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Installer Android File Transfer for Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Installer Android File Transfer for Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Tilbake"</string> <string name="accessibility_home" msgid="8217216074895377641">"Startside"</string> <string name="accessibility_menu" msgid="316839303324695949">"Meny"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data – to stolper."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data – tre stolper."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Datasignal er fullt."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Ingen Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi – én stolpe."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi – to stolper."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi – tre stolper."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi-signal er fullt."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Ingen Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi – én stolpe."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi – to stolper."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi – tre stolper."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi-signal er fullt."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Uten SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-deling."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Flymodus."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G-data er deaktivert"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobildata er deaktivert"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data deaktivert"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Den angitte databruksgrensen er nådd."\n\n"Ytterligere databruk kan medføre høyere kostnader hos leverandøren."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Den angitte databruksgrensen er nådd."\n\n"Ytterligere databruk kan medføre høyere kostnader hos leverandøren."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Aktiver data på nytt"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Ingen Internett-forbindelse"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi tilkoblet"</string> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 2a5cc66..038bcdd 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Geen meldingen"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Actief"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Meldingen"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Sluit de oplader aan"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Sluit de oplader aan"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"De accu raakt leeg."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> resterend"</string> <string name="invalid_charger" msgid="4549105996740522523">"Opladen via USB niet ondersteund."\n"Gebruik alleen de bijgeleverde oplader."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Meldingen"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth getetherd"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Invoermethoden configureren"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Invoermethoden configureren"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Fysiek toetsenbord gebruiken"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"De applicatie <xliff:g id="APPLICATION">%1$s</xliff:g> toegang tot het USB-apparaat geven?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"De applicatie <xliff:g id="APPLICATION">%1$s</xliff:g> toegang tot het USB-accessoire geven?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"<xliff:g id="ACTIVITY">%1$s</xliff:g> openen wanneer dit USB-apparaat wordt aangesloten?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"<xliff:g id="ACTIVITY">%1$s</xliff:g> openen wanneer dit USB-accessoire wordt aangesloten?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Er zijn geen geïnstalleerde applicaties die werken met dit USB-accessoire. Meer informatie over dit accessoire vindt u op <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB-accessoire"</string> <string name="label_view" msgid="6304565553218192990">"Weergeven"</string> <string name="always_use_device" msgid="1450287437017315906">"Standaard gebruiken voor dit USB-apparaat"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Standaard gebruiken voor dit USB-accessoire"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom om scherm te vullen"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Rek uit v. schermvulling"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Compatibiliteitszoom"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Compatibiliteitszoom"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Wanneer een app is ontworpen voor een kleiner scherm, wordt naast de klok een zoomknop weergegeven."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opties voor USB-bestandsoverdracht"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Koppelen als mediaspeler (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Koppelen als camera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Applicatie Android File Transfer voor Mac installeren"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Applicatie Android File Transfer voor Mac installeren"</string> <string name="accessibility_back" msgid="567011538994429120">"Terug"</string> <string name="accessibility_home" msgid="8217216074895377641">"Startpagina"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Gegevens: twee streepjes."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Gegevens: drie streepjes."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Gegevenssignaal is op volle sterkte."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Geen Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi: één streepje."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi: twee streepjes."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi: drie streepjes."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi-signaal is op volledige sterkte."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Geen Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi: één streepje."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi: twee streepjes."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi: drie streepjes."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi-signaal is op volledige sterkte."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Geen simkaart."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-tethering."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Vliegmodus."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G-gegevens uitgeschakeld"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobiele gegevens uitgeschakeld"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Gegevens uitgeschakeld"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"De opgegeven limiet voor gegevensgebruik is bereikt."\n\n"Aanvullend gegevensgebruik kan leiden tot providerkosten."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"De opgegeven limiet voor gegevensgebruik is bereikt."\n\n"Aanvullend gegevensgebruik kan leiden tot providerkosten."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Gegevens opnieuw inschakelen"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Geen internetverbinding"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Verbonden via Wi-Fi"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 00cbf95..e4b96ba 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Brak powiadomień"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Bieżące"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Powiadomienia"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Podłącz ładowarkę"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Podłącz ładowarkę"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Bateria wkrótce zostanie rozładowana."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Pozostało: <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Ładowanie przy użyciu złącza USB nie jest obsługiwane."\n"Należy używać tylko dołączonej ładowarki."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Powiadomienia"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth – podłączono"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfiguruj metody wprowadzania"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfiguruj metody wprowadzania"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Używaj klawiatury fizycznej"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Czy zezwolić aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na dostęp do urządzenia USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Czy zezwolić aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na dostęp do akcesorium USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Czy otworzyć <xliff:g id="ACTIVITY">%1$s</xliff:g> po podłączeniu tego urządzenia USB?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Czy otworzyć <xliff:g id="ACTIVITY">%1$s</xliff:g> po podłączeniu tego akcesorium USB?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Zainstalowane aplikacje nie działają z tym akcesorium USB. Więcej informacji: <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Akcesorium USB"</string> <string name="label_view" msgid="6304565553218192990">"Wyświetl"</string> <string name="always_use_device" msgid="1450287437017315906">"Używaj domyślnie dla tego urządzenia USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Używaj domyślnie dla tego akcesorium USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Powiększ, aby wypełnić ekran"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Rozciągnij, aby wypełnić ekran"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Powiększenie w trybie zgodności"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Powiększenie w trybie zgodności"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Jeśli aplikacja została przystosowana do mniejszego ekranu, obok zegara zostanie wyświetlony element sterujący powiększeniem."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB – opcje przesyłania plików"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Podłącz jako odtwarzacz multimedialny (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Podłącz jako aparat (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Zainstaluj aplikację Android File Transfer dla Mac OS"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Zainstaluj aplikację Android File Transfer dla Mac OS"</string> <string name="accessibility_back" msgid="567011538994429120">"Wróć"</string> <string name="accessibility_home" msgid="8217216074895377641">"Ekran główny"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Dane: dwa paski."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Dane: trzy paski."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Dane: pełna moc sygnału."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Brak sieci Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Sieć Wi-Fi: jeden pasek."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Sieć Wi-Fi: dwa paski."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Sieć Wi-Fi: trzy paski."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Sieć Wi-Fi: pełna moc sygnału."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Brak sieci Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Sieć Wi-Fi: jeden pasek."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Sieć Wi-Fi: dwa paski."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Sieć Wi-Fi: trzy paski."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Sieć Wi-Fi: pełna moc sygnału."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Brak karty SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Powiązanie Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Tryb samolotowy."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Wyłączono transmisję danych 4G"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Wyłączono komórkową transmisję danych"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Wyłączono transmisję danych"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Osiągnięto określony limit transmisji danych."\n\n"Operator może pobierać opłaty za przesyłanie dodatkowych danych."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Osiągnięto określony limit transmisji danych."\n\n"Operator może pobierać opłaty za przesyłanie dodatkowych danych."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Włącz transmisję danych"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Brak internetu"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: połączono"</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index c65ad95..193c9a8 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Sem notificações"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Em curso"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notificações"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Ligue o carregador"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Ligue o carregador"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"A bateria está a ficar fraca."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> restante"</string> <string name="invalid_charger" msgid="4549105996740522523">"Carregamento USB não suportado. "\n"Utilize apenas o carregador fornecido."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificações"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth ligado"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configurar métodos de entrada"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configurar métodos de entrada"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utilizar teclado físico"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Permitir que a aplicação <xliff:g id="APPLICATION">%1$s</xliff:g> aceda ao dispositivo USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Permitir que a aplicação <xliff:g id="APPLICATION">%1$s</xliff:g> aceda ao acessório USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Abrir <xliff:g id="ACTIVITY">%1$s</xliff:g> quando este dispositivo USB estiver ligado?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Abrir <xliff:g id="ACTIVITY">%1$s</xliff:g> quando este acessório USB estiver ligado?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Nenhuma das aplicações instaladas funciona com este acessório USB. Saiba mais sobre este acessório em <xliff:g id="URL">%1$s</xliff:g>."</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Acessório USB"</string> <string name="label_view" msgid="6304565553218192990">"Ver"</string> <string name="always_use_device" msgid="1450287437017315906">"Utilizar por predefinição para este aparelho USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Utilizar por predefinição para este acessório USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom para preencher o ecrã"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Esticar p. caber em ec. int."</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Compatibilidade de zoom"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Compatibilidade de zoom"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Sempre que uma aplicação tiver sido concebida para ecrãs mais pequenos, aparecerá um controlo de zoom junto ao relógio."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opções de transm. de fich. USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Montar como leitor de multimédia (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Montar como câmara (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Instalar a ap. Trans. de Fic. do Android para Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Instalar a ap. Trans. de Fic. do Android para Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Anterior"</string> <string name="accessibility_home" msgid="8217216074895377641">"Página inicial"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Duas barras de dados."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Três barras de dados."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Sinal de dados completo."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Sem Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Uma barra de Wi-FI."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Duas barras de Wi-Fi."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Três barras de Wi-Fi."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Sinal Wi-Fi completo."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Sem Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Uma barra de Wi-FI."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Duas barras de Wi-Fi."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Três barras de Wi-Fi."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Sinal Wi-Fi completo."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Sem SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Ligação Bluetooth via telemóvel."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo de avião"</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Os dados 4G estão desativados"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Os dados móveis estão desativados"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Dados desativados"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"O limite de utilização de dados especificado foi atingido."\n\n"A utilização de dados adicionais poderá estar sujeita a tarifas por parte do operador."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"O limite de utilização de dados especificado foi atingido."\n\n"A utilização de dados adicionais poderá estar sujeita a tarifas por parte do operador."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Reativar dados"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Sem ligação internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi ligado"</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index a37fdca..afb4729 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Sem notificações"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Em andamento"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notificações"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Conecte o carregador"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Conecte o carregador"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"A bateria está ficando baixa."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> restante"</string> <string name="invalid_charger" msgid="4549105996740522523">"O carregamento via USB não é suportado."\n"Use apenas o carregador fornecido."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificações"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth vinculado"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configurar métodos de entrada"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configurar métodos de entrada"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Usar o teclado físico"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Permitir que o aplicativo <xliff:g id="APPLICATION">%1$s</xliff:g> acesse o dispositivo USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Permitir que o aplicativo <xliff:g id="APPLICATION">%1$s</xliff:g> acesse o acessório USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Abrir <xliff:g id="ACTIVITY">%1$s</xliff:g> quando este dispositivo USB estiver conectado?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Abrir <xliff:g id="ACTIVITY">%1$s</xliff:g> quando este acessório USB estiver conectado?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Nenhum apl. instalado funciona com o acess. USB. Saiba mais sobre o acessório em <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Acessório USB"</string> <string name="label_view" msgid="6304565553218192990">"Visualizar"</string> <string name="always_use_device" msgid="1450287437017315906">"Usar por padrão para este dispositivo USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Usar por padrão para este acessório USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom p/ preencher a tela"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Ampliar p/ preencher tela"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Zoom em modo de compatibilidade"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom em modo de compatibilidade"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Quando um aplicativo é desenvolvido para uma tela menor, um controle de zoom é exibido perto do relógio."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opções transf. arq. por USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Conectar como media player (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Montar como uma câmera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Instalar aplic. Android File Transfer para Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Instalar aplic. Android File Transfer para Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Voltar"</string> <string name="accessibility_home" msgid="8217216074895377641">"Página inicial"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Duas barras de sinal de dados."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Três barras do sinal de dados."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Sinal de dados cheio."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Sem Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Uma barra de sinal Wi-Fi."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Duas barras de sinal Wi-Fi."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Três barras de sinal Wi-Fi."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Sinal do Wi-Fi cheio."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Sem Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Uma barra de sinal Wi-Fi."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Duas barras de sinal Wi-Fi."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Três barras de sinal Wi-Fi."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Sinal do Wi-Fi cheio."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Sem SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Vínculo Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo de avião."</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Dados 4G desativados"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Dados móveis desativados"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Dados desativados"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"O limite de uso de dados especificado foi alcançado."\n\n"O uso de dados adicionais poderá gerar cobranças da operadora."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"O limite de uso de dados especificado foi alcançado."\n\n"O uso de dados adicionais poderá gerar cobranças da operadora."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Reativar dados"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Sem conexão à Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi conectado"</string> diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml index 90271a3..17f62dd 100644 --- a/packages/SystemUI/res/values-rm/strings.xml +++ b/packages/SystemUI/res/values-rm/strings.xml @@ -39,7 +39,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Nagins avis"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Actual"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Avis"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Connectar il chargiabattarias"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Connectar il chargiabattarias"</string> <!-- outdated translation 7388781709819722764 --> <string name="battery_low_subtitle" msgid="1752040062087829196">"L\'accu è prest vid."</string> <!-- no translation found for battery_low_percent_format (1077244949318261761) --> <skip /> @@ -62,19 +62,19 @@ <skip /> <!-- no translation found for bluetooth_tethered (7094101612161133267) --> <skip /> - <!-- no translation found for status_bar_input_method_settings_configure_input_methods (737483394044014246) --> + <!-- no translation found for status_bar_input_method_settings_configure_input_methods (3504292471512317827) --> <skip /> <!-- no translation found for status_bar_use_physical_keyboard (3695516942412442936) --> <skip /> - <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> <skip /> <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> @@ -88,23 +88,23 @@ <skip /> <!-- no translation found for compat_mode_off (4434467572461327898) --> <skip /> - <!-- no translation found for compat_mode_help_header (7020175705401506719) --> + <!-- no translation found for compat_mode_help_header (7969493989397529910) --> <skip /> <!-- no translation found for compat_mode_help_body (4946726776359270040) --> <skip /> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <!-- no translation found for usb_preference_title (6551050377388882787) --> <skip /> @@ -112,7 +112,7 @@ <skip /> <!-- no translation found for use_ptp_button_title (7517127540301625751) --> <skip /> - <!-- no translation found for installer_cd_button_title (8485631662288445893) --> + <!-- no translation found for installer_cd_button_title (2312667578562201583) --> <skip /> <!-- no translation found for accessibility_back (567011538994429120) --> <skip /> @@ -162,15 +162,15 @@ <skip /> <!-- no translation found for accessibility_data_signal_full (2708384608124519369) --> <skip /> - <!-- no translation found for accessibility_no_wifi (4017628918351949575) --> + <!-- no translation found for accessibility_no_wifi (7455607460517331976) --> <skip /> - <!-- no translation found for accessibility_wifi_one_bar (1914343229091303434) --> + <!-- no translation found for accessibility_wifi_one_bar (6854947280074467207) --> <skip /> - <!-- no translation found for accessibility_wifi_two_bars (7869150535859760698) --> + <!-- no translation found for accessibility_wifi_two_bars (3344340012058984348) --> <skip /> - <!-- no translation found for accessibility_wifi_three_bars (2665319332961356254) --> + <!-- no translation found for accessibility_wifi_three_bars (928322805193265041) --> <skip /> - <!-- no translation found for accessibility_wifi_signal_full (1275764416228473932) --> + <!-- no translation found for accessibility_wifi_signal_full (4826278754383492058) --> <skip /> <!-- no translation found for accessibility_data_connection_gprs (1606477224486747751) --> <skip /> @@ -184,7 +184,7 @@ <skip /> <!-- no translation found for accessibility_data_connection_edge (4477457051631979278) --> <skip /> - <!-- no translation found for accessibility_data_connection_wifi (1127208787254436420) --> + <!-- no translation found for accessibility_data_connection_wifi (2324496756590645221) --> <skip /> <!-- no translation found for accessibility_no_sim (8274017118472455155) --> <skip /> @@ -220,7 +220,7 @@ <skip /> <!-- no translation found for data_usage_disabled_dialog_title (2086815304858964954) --> <skip /> - <!-- no translation found for data_usage_disabled_dialog (6524467913290900042) --> + <!-- no translation found for data_usage_disabled_dialog (3853117269051806280) --> <skip /> <!-- no translation found for data_usage_disabled_dialog_enable (7729772039208664606) --> <skip /> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 084993b..79ac357 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Nicio notificare"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"În desfăşurare"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Notificări"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Conectaţi încărcătorul"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Conectaţi încărcătorul"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Bateria este descărcată."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Rămas: <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Încărcarea USB nu este acceptată. "\n"Utilizaţi numai încărcătorul furnizat."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTOM."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificări"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Conectat prin tethering prin Bluetooth"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configuraţi metode de intrare"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Configuraţi metode de intrare"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utilizaţi tastat. fizică"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Permiteţi aplicaţiei <xliff:g id="APPLICATION">%1$s</xliff:g> să acceseze dispozitivul USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Permiteţi aplicaţiei <xliff:g id="APPLICATION">%1$s</xliff:g> să acceseze accesoriul USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Deschideţi <xliff:g id="ACTIVITY">%1$s</xliff:g> la conectarea acestui dispozitiv USB?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Deschideţi <xliff:g id="ACTIVITY">%1$s</xliff:g> la conectarea acestui accesoriu USB?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Aplic. instal. nu funcţ. cu acest acces. USB. Aflaţi despre acest acces. la <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Accesoriu USB"</string> <string name="label_view" msgid="6304565553218192990">"Afişaţi"</string> <string name="always_use_device" msgid="1450287437017315906">"Utilizaţi în mod prestabilit pt. acest dispoz. USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Utiliz. în mod prestabilit pt. acest accesoriu USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zoom pt. a umple ecranul"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Înt. pt. a umple ecranul"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Zoom de compatibilitate"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom de compatibilitate"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Atunci când o aplicaţie a fost concepută pentru un ecran mai mic, o comandă pentru mărire/micşorare va apărea alături de ceas."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opţiuni pentru transferul de fişiere prin USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Montaţi ca player media (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Montaţi drept cameră foto (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Instalaţi aplicaţia Transfer de fişiere Android pentru Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Instalaţi aplicaţia Transfer de fişiere Android pentru Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Înapoi"</string> <string name="accessibility_home" msgid="8217216074895377641">"Ecranul de pornire"</string> <string name="accessibility_menu" msgid="316839303324695949">"Meniu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Semnal pentru date: două bare."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Semnal pentru date: trei bare."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Semnal pentru date: complet."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Nu există semnal Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Semnal Wi-Fi: o bară."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Semnal Wi-Fi: două bare."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Semnal Wi-Fi: trei bare."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Semnal Wi-Fi: complet."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Nu există semnal Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Semnal Wi-Fi: o bară."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Semnal Wi-Fi: două bare."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Semnal Wi-Fi: trei bare."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Semnal Wi-Fi: complet."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Niciun card SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Conectarea ca modem prin Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mod Avion."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Datele 4G au fost dezactivate"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Datele mobile au fost dezactivate"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Utilizare date dezactivată"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"A fost atinsă limita de utilizare a datelor specificată."\n\n"Utilizarea unor date suplimentare poate atrage costuri impuse de operator."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"A fost atinsă limita de utilizare a datelor specificată."\n\n"Utilizarea unor date suplimentare poate atrage costuri impuse de operator."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Reactivaţi datele"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Fără conex. internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi conectat"</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index c23d82b..b7f9b69 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Нет уведомлений"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Текущие"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Уведомления"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Подключите зарядное устройство"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Подключите зарядное устройство"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Батарея разряжена."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Осталось: <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Зарядка через порт USB не поддерживается."\n"Используйте только зарядное устройство из комплекта поставки."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"АВТО"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Уведомления"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Общий модем доступен через Bluetooth"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Настроить способ ввода"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Настроить способ ввода"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Использовать физическую клавиатуру"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Разрешить приложению <xliff:g id="APPLICATION">%1$s</xliff:g> доступ к USB-устройству?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Разрешить приложению <xliff:g id="APPLICATION">%1$s</xliff:g> доступ к USB-аксессуару?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Запускать <xliff:g id="ACTIVITY">%1$s</xliff:g> при подключении этого USB-устройства?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Запускать <xliff:g id="ACTIVITY">%1$s</xliff:g> при подключении этого USB-аксессуара?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Установленные приложения не поддерживают этот USB-аксессуар. Подробнее о нем читайте здесь: <xliff:g id="URL">%1$s</xliff:g>."</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB-устройство"</string> <string name="label_view" msgid="6304565553218192990">"Просмотр"</string> <string name="always_use_device" msgid="1450287437017315906">"Использовать по умолчанию для этого USB-устройства"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Использовать по умолчанию для этого USB-аксессуара"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Подогнать по размерам экрана"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Растянуть на весь экран"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Масштаб и совместимость"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Масштаб и совместимость"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Если приложение рассчитано на экран меньших размеров, рядом с часами появятся средства масштабирования."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Параметры передачи через USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Подключить как мультимедийный проигрыватель (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Установить как камеру (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Установить Android File Transfer для Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Установить Android File Transfer для Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Назад"</string> <string name="accessibility_home" msgid="8217216074895377641">"Главная страница"</string> <string name="accessibility_menu" msgid="316839303324695949">"Меню"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Сигнал передачи данных: два деления."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Сигнал передачи данных: три деления."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Надежный сигнал передачи данных."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Сигнал Wi-Fi отсутствует."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi: одно деление."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi: два деления."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi: три деления."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Надежный сигнал Wi-Fi."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Сигнал Wi-Fi отсутствует."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi: одно деление."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi: два деления."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi: три деления."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Надежный сигнал Wi-Fi."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM-карта отсутствует."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Общий Bluetooth-модем."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим полета."</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Передача данных по каналу 4G отключена"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Мобильный Интернет отключен"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Передача данных отключена"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Достигнут лимит трафика."\n\n"За загрузку дополнительных данных оператор может взимать плату."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Достигнут лимит трафика."\n\n"За загрузку дополнительных данных оператор может взимать плату."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Восстановить подключение"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Нет подключения к Интернету"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi подключено"</string> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index af3ed00..7ae9240 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Žiadne upozornenia"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Prebiehajúce"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Upozornenia"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Pripojte nabíjačku"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Pripojte nabíjačku"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Batéria je skoro vybitá."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Zostáva: <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Nabíjanie pomocou rozhrania USB nie je podporované."\n"Používajte iba nabíjačku, ktorá bola dodaná spolu so zariadením."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Upozornenia"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Zdieľané dátové pripojenie cez Bluetooth"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurovať metódy vstupu"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfigurovať metódy vstupu"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Použiť fyzickú klávesnicu"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Povoliť aplikácii <xliff:g id="APPLICATION">%1$s</xliff:g> prístup k zariadeniu USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Povoliť aplikácii <xliff:g id="APPLICATION">%1$s</xliff:g> prístup k periférnemu zariadeniu USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Chcete pri pripojení tohto zariadenia USB otvoriť aplikáciu <xliff:g id="ACTIVITY">%1$s</xliff:g>?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Chcete pri pripojení tohto periférneho zariadenia USB otvoriť aplikáciu <xliff:g id="ACTIVITY">%1$s</xliff:g>?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"S týmto periférnym zariad. USB nefunguje žiadna nainštalovaná aplikácia. Viac informácií nájdete na stránkach <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Periférne zariadenie USB"</string> <string name="label_view" msgid="6304565553218192990">"Zobraziť"</string> <string name="always_use_device" msgid="1450287437017315906">"Pre toto zariadenie USB použiť ako predvolené"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Pre toto periférne zar. USB použiť ako predvolené"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Priblížiť na celú obrazovku"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Na celú obrazovku"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Kompatibilné priblíženie"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Kompatibilné priblíženie"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Ak je aplikácia navrhnutá pre menšiu obrazovku, zobrazí sa vedľa hodín ovládací prvok priblíženia."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Možnosti prenosu súborov USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Pripojiť ako prehrávač médií (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Pripojiť ako fotoaparát (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Inštalovať aplikáciu Prenos súborov Android pre systém Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Inštalovať aplikáciu Prenos súborov Android pre systém Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Späť"</string> <string name="accessibility_home" msgid="8217216074895377641">"Plocha"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Dve čiarky signálu dátovej siete."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Tri čiarky signálu dátovej siete."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Plný signál dátovej siete."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Žiadna sieť Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Jedna čiarka signálu siete Wi-Fi."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Dve čiarky signálu siete Wi-Fi."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Tri čiarky signálu siete Wi-Fi."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Plný signál siete Wi-Fi."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Žiadna sieť Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Jedna čiarka signálu siete Wi-Fi."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Dve čiarky signálu siete Wi-Fi."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tri čiarky signálu siete Wi-Fi."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Plný signál siete Wi-Fi."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Žiadna karta SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Zdieľanie dátového pripojenia cez Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim V lietadle."</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Dátové prenosy 4G sú zakázané"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobilné dátové prenosy sú zakázané"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Dáta boli zakázané"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Dosiahli ste zadané obmedzenie dátových prenosov."\n\n"Za ďalšie používanie dátových prenosov vám operátor môže účtovať poplatky."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Dosiahli ste zadané obmedzenie dátových prenosov."\n\n"Za ďalšie používanie dátových prenosov vám operátor môže účtovať poplatky."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Znova povoliť dátové prenosy"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Bez prip. na Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi: pripojené"</string> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 34c5e0b..35aca3c 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Ni obvestil"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Trenutno"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Obvestila"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Priključite napajalnik"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Priključite napajalnik"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Baterija je skoraj prazna."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> preostalo"</string> <string name="invalid_charger" msgid="4549105996740522523">"Polnjenje po povezavi USB ni podprto."\n"Uporabite priloženi polnilnik."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"SAMOD."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Obvestila"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Internetna povezava prek Bluetootha"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Nastavitev načinov vnosa"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Nastavitev načinov vnosa"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Uporabi fizično tipkovn."</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Želite programu <xliff:g id="APPLICATION">%1$s</xliff:g> omogočiti dostop do naprave USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Želite programu <xliff:g id="APPLICATION">%1$s</xliff:g> omogočiti dostop do dodatka USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Želite, da se odpre <xliff:g id="ACTIVITY">%1$s</xliff:g>, ko priključite to napravo USB?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Želite, da se odpre <xliff:g id="ACTIVITY">%1$s</xliff:g>, ko priključite ta dodatek USB?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Noben nameščen program ne deluje s tem dodatkom USB. Več o tem dodatku: <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Dodatek USB"</string> <string name="label_view" msgid="6304565553218192990">"Prikaži"</string> <string name="always_use_device" msgid="1450287437017315906">"Privzeto uporabi za to napravo USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Privzeto uporabi za ta dodatek USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Povečava čez cel zaslon"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Raztegnitev čez zaslon"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Povečava združljivosti"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Povečava združljivosti"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Če je program izdelan za manjše zaslone, se ob uri pokaže kontrolnik za povečavo."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Možnosti prenosa datotek prek USB-ja"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Vpni kot predvajalnik (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Vpni kot fotoaparat (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Namestite program Android File Transfer za Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Namestite program Android File Transfer za Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Nazaj"</string> <string name="accessibility_home" msgid="8217216074895377641">"Začetni zaslon"</string> <string name="accessibility_menu" msgid="316839303324695949">"Meni"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Podatki z dvema črticama."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Podatki s tremi črticami."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Podatkovni signal poln."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Ni povezave Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi z eno črtico."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi z dvema črticama."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi s tremi črticami."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Signal Wi-Fi poln."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Ni povezave Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi z eno črtico."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi z dvema črticama."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi s tremi črticami."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Signal Wi-Fi poln."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Ni kartice SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Internet prek Bluetootha."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Način za letalo."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Podatki 4G so onemogočeni"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobilni podatki so onemogočeni"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Podatki onemogočeni"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Dosežena je določena omejitev porabe podatkov."\n\n"Dodatno porabo podatkov vam lahko operater zaračuna."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Dosežena je določena omejitev porabe podatkov."\n\n"Dodatno porabo podatkov vam lahko operater zaračuna."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Znova omogoči podatke"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Ni internetne povez."</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi povezan"</string> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index d0f24b2..3583295 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Нема обавештења"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Текуће"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Обавештења"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Прикључите пуњач"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Прикључите пуњач"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Батерија ће се ускоро испразнити."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"преостало је <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Пуњење преко USB-а није подржано."\n"Користите само приложени пуњач."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"АУТОM."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Обавештења"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Веза преко Bluetooth-а"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Конфигуриши методе уноса"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Конфигуриши методе уноса"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Користи физичку тастатуру"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Желите ли да омогућите апликацији <xliff:g id="APPLICATION">%1$s</xliff:g> да приступи USB уређају?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Желите ли да омогућите апликацији <xliff:g id="APPLICATION">%1$s</xliff:g> да приступи USB додатку?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Желите ли да се отвори <xliff:g id="ACTIVITY">%1$s</xliff:g> када се прикључи овај USB уређај?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Желите ли да се отвори <xliff:g id="ACTIVITY">%1$s</xliff:g> када се прикључи овај USB додатак?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Ниједна инстал. апликација не функционише са овим USB додатком. Сазнајте више о додатку на <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB помоћни уређај"</string> <string name="label_view" msgid="6304565553218192990">"Прикажи"</string> <string name="always_use_device" msgid="1450287437017315906">"Користи подразумевано за овај USB уређај"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Користи подразумевано за овај USB додатак"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Зумирај на целом екрану"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Развуци на цео екран"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Компатибилно зумирање"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Компатибилно зумирање"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Када је апликација намењена мањем екрану, контрола зумирања приказује се поред сата."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Опције USB преноса датотека"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Прикључи као медија плејер (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Прикључи као камеру (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Инсталирај апликацију Android File Transfer за Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Инсталирај апликацију Android File Transfer за Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Назад"</string> <string name="accessibility_home" msgid="8217216074895377641">"Почетна"</string> <string name="accessibility_menu" msgid="316839303324695949">"Мени"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Сигнал за податке од две црте."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Сигнал за податке од три црте."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Сигнал за податке је најјачи."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Нема WiFi сигнала."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi сигнал од једне црте."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WiFi сигнал од две црте."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi сигнал од три црте."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi сигнал је најјачи."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Нема WiFi сигнала."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi сигнал од једне црте."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi сигнал од две црте."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi сигнал од три црте."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"WiFi сигнал је најјачи."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Нема SIM картице."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth привезивање."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим рада у авиону."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G подаци су онемогућени"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Подаци мобилне мреже су онемогућени"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Подаци су онемогућени"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Достигнуто је наведено ограничење потрошње података."\n\n"Мобилни оператер може додатно да наплати даљу потрошњу података."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Достигнуто је наведено ограничење потрошње података."\n\n"Мобилни оператер може додатно да наплати даљу потрошњу података."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Поново омогући податке"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Нема интернет везе"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi је повезан"</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index ab438e8..9ae1503 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Inga aviseringar"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Pågående"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Meddelanden"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Anslut laddaren"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Anslut laddaren"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Batteriet håller på att ta slut."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> återstår"</string> <string name="invalid_charger" msgid="4549105996740522523">"Det går inte att ladda via USB."\n"Använd endast den laddare som levererades med telefonen."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Aviseringar"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Internetdelning via Bluetooth"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurera inmatningsmetoder"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Konfigurera inmatningsmetoder"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Använd fysiska tangenter"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Vill du tillåta att programmet <xliff:g id="APPLICATION">%1$s</xliff:g> använder USB-enheten?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Vill du tillåta att programmet <xliff:g id="APPLICATION">%1$s</xliff:g> använder USB-tillbehöret?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Vill du öppna <xliff:g id="ACTIVITY">%1$s</xliff:g> när den här USB-enheten ansluts?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Vill du öppna <xliff:g id="ACTIVITY">%1$s</xliff:g> när det här USB-tillbehöret ansluts?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Inga program fungerar med det här USB-tillbehöret. Läs mer om det på <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB-tillbehör"</string> <string name="label_view" msgid="6304565553218192990">"Visa"</string> <string name="always_use_device" msgid="1450287437017315906">"Använd som standard för den här USB-enheten"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Använd som standard för det här USB-tillbehöret"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Zooma för att fylla skärm"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Dra för att fylla skärmen"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Zoom i kompatibilitetsläge"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom i kompatibilitetsläge"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"När en app är anpassad för en mindre skärm visas ett zoomreglage vid klockan."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Överföringsalternativ"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Montera som mediaspelare (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Montera som kamera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Installera Android-filöverföringsapp för Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Installera Android-filöverföringsapp för Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Tillbaka"</string> <string name="accessibility_home" msgid="8217216074895377641">"Startsida"</string> <string name="accessibility_menu" msgid="316839303324695949">"Meny"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data: två staplar."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data: tre staplar."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Datasignalen är full."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Ingen Wi-Fi-signal."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Wi-Fi: en stapel."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Wi-Fi: två staplar."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Wi-Fi: tre staplar."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Wi-Fi-signalen är full."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Ingen Wi-Fi-signal."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi: en stapel."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi: två staplar."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi: tre staplar."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Wi-Fi-signalen är full."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Wi-Fi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Inget SIM-kort."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Internetdelning via Bluetooth"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Flygplansläge"</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Data via 4G har inaktiverats"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobildata har inaktiverats"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data har inaktiverats"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Den angivna gränsen för dataanvändning har nåtts."\n" "\n"Ytterligare dataanvändning kan medföra operatörsavgifter."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Den angivna gränsen för dataanvändning har nåtts."\n" "\n"Ytterligare dataanvändning kan medföra operatörsavgifter."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Återaktivera data"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Ingen anslutning"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi-ansluten"</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 98e2310..9636b43 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -32,7 +32,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Hakuna arifa"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Inaendelea"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Arifa"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Tafadhali unganisha chaja"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Tafadhali unganisha chaja"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Betri inaisha."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> zimebakia"</string> <string name="invalid_charger" msgid="4549105996740522523">"Chaji ya USB haihamiliwi."\n" Tumia chaka iliyopeanwa."</string> @@ -45,39 +45,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"KIOTOMATIKI"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Arifa"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth imefungwa"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Sanidi mbinu za uingizaji"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Sanidi mbinu za uingizaji"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Tumia kibodi halisi"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Ruhusu programu <xliff:g id="APPLICATION">%1$s</xliff:g> ili kufikia kifaa cha USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Ruhusu programu <xliff:g id="APPLICATION">%1$s</xliff:g> ili kufikia kifuasi cha USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Je, ungetaka kufungua <xliff:g id="ACTIVITY">%1$s</xliff:g>wakati kifaa cha USB kimeunganishwa?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Je, ungetaka kufungua <xliff:g id="ACTIVITY">%1$s</xliff:g>wakati kifaa cha USB kimeunganishwa?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Hakuna programu zilizosakiniwa zinazofanya kazi na kifaa hiki cha USB. Jifunze zaidi kuhsu kifaa hiki kwenye <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Kifaa cha Usb"</string> <string name="label_view" msgid="6304565553218192990">"Ona"</string> <string name="always_use_device" msgid="1450287437017315906">"Kwa kifaa hiki cha USB tumia chaguo-msingi"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Tumia kama chaguo-msingi ya kifuasi hiki cha USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Kuza ili kujaza skrini"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Tanua ili kujaza skrini"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Kukuza kwa Utangamanifu"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Kukuza kwa Utangamanifu"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Wakati programu ilibuniwa kwa skrini ndogo, kidhibiti cha kukuza kitaonekana kwa saa."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Machaguo ya uhamisho wa faili la USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Angika kama kichezeshi cha midia (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Angika kama kamera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Sakinisha programu ya Kuhamisha Faili ya Android ya Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Sakinisha programu ya Kuhamisha Faili ya Android ya Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Nyuma"</string> <string name="accessibility_home" msgid="8217216074895377641">"Nyumbani"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menyu"</string> @@ -102,18 +105,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Miamba miwili ya data."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Fito tatu za habari."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Ishara ya data imejaa."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Hakuna Mtandao hewa"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Mwambaa mmoja wa Mtandao hewa"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Miambaa mbili ya Mtandao hewa"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Miambaa tatu ya Mtandao hewa"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Ishara ya Mtandao hewa imejaa"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Hakuna Mtandao hewa"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Mwambaa mmoja wa Mtandao hewa"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Miambaa mbili ya Mtandao hewa"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Miambaa tatu ya Mtandao hewa"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Ishara ya Mtandao hewa imejaa"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Ukingo"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Hakuna SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Ufungaji wa Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modi ya ndege."</string> @@ -132,7 +135,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Data ya 4G imelemazwa"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Data ya kifaa cha mkononi imelemazwa"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Data imelemazwa"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Kikomo cha utumizi wa data kilichobainishwa kimefikiwa. "\n" "\n" Utumizi wa data ya ziada huenda ukagharimu gharama za mbembaji."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Kikomo cha utumizi wa data kilichobainishwa kimefikiwa. "\n" "\n" Utumizi wa data ya ziada huenda ukagharimu gharama za mbembaji."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Wezesha upya data"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Hakuna muunganisho wa mtandao"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Mtandao-hewa umeunganishwa"</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index ee2af5d..565c283 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"ไม่มีการแจ้งเตือน"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"ดำเนินอยู่"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"การแจ้งเตือน"</string> - <string name="battery_low_title" msgid="7923774589611311406">"โปรดเสียบอุปกรณ์ชาร์จ"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"โปรดเสียบอุปกรณ์ชาร์จ"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"แบตเตอรี่เหลือน้อย"</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"เหลืออีก <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"ไม่สนับสนุนการชาร์จแบบ USB"\n"ใช้เฉพาะที่ชาร์จที่ให้มาเท่านั้น"</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"อัตโนมัติ"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"การแจ้งเตือน"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"บลูทูธที่ปล่อยสัญญาณ"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"กำหนดค่าวิธีการป้อนข้อมูล"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"กำหนดค่าวิธีการป้อนข้อมูล"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"ใช้แป้นพิมพ์จริง"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"อนุญาตให้แอปพลิเคชัน <xliff:g id="APPLICATION">%1$s</xliff:g> เข้าถึงอุปกรณ์ USB นี้หรือไม่"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"อนุญาตให้แอปพลิเคชัน <xliff:g id="APPLICATION">%1$s</xliff:g> เข้าถึงอุปกรณ์เสริม USB นี้หรือไม่"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"เปิด <xliff:g id="ACTIVITY">%1$s</xliff:g> เมื่อมีการเชื่อมต่ออุปกรณ์ USB นี้หรือไม่"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"เปิด <xliff:g id="ACTIVITY">%1$s</xliff:g> เมื่อมีการเชื่อมต่ออุปกรณ์เสริม USB นี้หรือไม่"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"แอปพลิเคชันที่ติดตั้งใช้กับอุปกรณ์ USB นี้ไม่ได้ เรียนรู้เพิ่มเติมที่ <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"อุปกรณ์เสริม USB"</string> <string name="label_view" msgid="6304565553218192990">"ดู"</string> <string name="always_use_device" msgid="1450287437017315906">"ใช้ค่าเริ่มต้นสำหรับอุปกรณ์ USB นี้"</string> <string name="always_use_accessory" msgid="1210954576979621596">"ใช้ค่าเริ่มต้นสำหรับอุปกรณ์เสริม USB นี้"</string> <string name="compat_mode_on" msgid="6623839244840638213">"ขยายจนเต็มหน้าจอ"</string> <string name="compat_mode_off" msgid="4434467572461327898">"ยืดจนเต็มหน้าจอ"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"ความเข้ากันได้ของการย่อ/ขยาย"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"ความเข้ากันได้ของการย่อ/ขยาย"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"สำหรับแอปพลิเคชันที่ออกแบบมาสำหรับหน้าจอขนาดเล็ก ตัวควบคุมการย่อ/ขยายจะปรากฏขึ้นข้างนาฬิกา"</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"ตัวเลือกการถ่ายโอนไฟล์ USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"ต่อเชื่อมเป็นโปรแกรมเล่นสื่อ (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"ต่อเชื่อมเป็นกล้องถ่ายรูป (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"ติดตั้งแอปพลิเคชัน Android File Transfer ของ Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"ติดตั้งแอปพลิเคชัน Android File Transfer ของ Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"ย้อนกลับ"</string> <string name="accessibility_home" msgid="8217216074895377641">"หน้าแรก"</string> <string name="accessibility_menu" msgid="316839303324695949">"เมนู"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"สัญญาณข้อมูลสองขีด"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"สัญญาณข้อมูลสามขีด"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"สัญญาณข้อมูลเต็ม"</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"ไม่มี WiFi"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"สัญญาณ WiFi หนึ่งขีด"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"สัญญาณ WiFi สองขีด"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"สัญญาณ WiFi สามขีด"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"สัญญาณ WiFi เต็ม"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"ไม่มี WiFi"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"สัญญาณ WiFi หนึ่งขีด"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"สัญญาณ WiFi สองขีด"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"สัญญาณ WiFi สามขีด"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"สัญญาณ WiFi เต็ม"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"ไม่มีซิมการ์ด"</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"การปล่อยสัญญาณบลูทูธ"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"โหมดใช้งานบนเครื่องบิน"</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"ปิดใช้งานข้อมูล 4G แล้ว"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"ปิดใช้งานข้อมูลมือถือแล้ว"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"ข้อมูลถูกปิดใช้งาน"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"ถึงขีดจำกัดการใช้ข้อมูลที่ระบุแล้ว"\n\n"การใช้ข้อมูลเพิ่มเติมอาจมีค่าใช้จ่ายที่เรียกเก็บโดยผู้ให้บริการ"</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"ถึงขีดจำกัดการใช้ข้อมูลที่ระบุแล้ว"\n\n"การใช้ข้อมูลเพิ่มเติมอาจมีค่าใช้จ่ายที่เรียกเก็บโดยผู้ให้บริการ"</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"เปิดใช้งานข้อมูลอีกครั้ง"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"ไม่มีอินเทอร์เน็ต"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"เชื่อมต่อ Wi-Fi แล้ว"</string> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 8cff0b3..d9ae888 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Walang mga notification"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Nagpapatuloy"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Mga Notification"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Pakikonekta ang charger"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Pakikonekta ang charger"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Humihina na ang baterya."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> natitira"</string> <string name="invalid_charger" msgid="4549105996740522523">"Hindi sinusuportahan ang pag-charge sa USB."\n"Gamitin lang ang ibinigay na charger."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Mga Notification"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Na-tether ang bluetooth"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"I-configure paraan ng input"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"I-configure paraan ng input"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Gamitin ang pisikal na keyboard"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Payagan ang application <xliff:g id="APPLICATION">%1$s</xliff:g> na i-access ang USB device?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Payagan ang application <xliff:g id="APPLICATION">%1$s</xliff:g> na i-access ang USB accessory?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Buksan ang <xliff:g id="ACTIVITY">%1$s</xliff:g> kapag nakakonekta ang USB device na ito?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Buksan ang <xliff:g id="ACTIVITY">%1$s</xliff:g> kapag nakakonekta ang accessory na USB na ito?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Walang gumaganang mga naka-install na application sa USB accessory na ito <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB accessory"</string> <string name="label_view" msgid="6304565553218192990">"Tingnan"</string> <string name="always_use_device" msgid="1450287437017315906">"Gamitin bilang default para sa USB device"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Gamitin bilang default sa USB accessory na ito"</string> <string name="compat_mode_on" msgid="6623839244840638213">"I-zoom upang punan screen"</string> <string name="compat_mode_off" msgid="4434467572461327898">"I-stretch upang mapuno screen"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Zoom sa Pagiging Tugma"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Zoom sa Pagiging Tugma"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Kapag nakadisenyo ang isang app para sa mas maliit na screen, isang kontrol ng zoom ang lalabas sa may orasan."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Opsyon paglipat ng USB file"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"I-mount bilang isang media player (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"I-mount bilang camera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"I-install Android File Transfer para sa Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"I-install Android File Transfer para sa Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Bumalik"</string> <string name="accessibility_home" msgid="8217216074895377641">"Home"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Data na dalawang bar."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Data na tatlong bar."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Puno ang signal ng data."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Walang WiFi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi na isang bar."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WiFi na dalawang bar."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi na tatlong bar."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Puno ang signal ng WiFi."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Walang WiFi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi na isang bar."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi na dalawang bar."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi na tatlong bar."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Puno ang signal ng WiFi."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Walang SIM."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Pag-tether ng Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode na eroplano."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Hindi pinapagana ang 4G na data"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Hindi pinapagana ang data ng mobile"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Hindi pinapagana ang data"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Naabot na ang tinukoy na limitasyon sa paggamit ng data."\n\n"Maaaring makaipon ng mga carrier na singilin ang karagdagang paggamit sa data."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Naabot na ang tinukoy na limitasyon sa paggamit ng data."\n\n"Maaaring makaipon ng mga carrier na singilin ang karagdagang paggamit sa data."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Muling paganahin ang data"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Walang koneksyon sa Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"nakakonekta ang Wi-Fi"</string> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 7fd5c61..313fd30 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Bildirim yok"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Sürüyor"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Bildirimler"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Lütfen şarj cihazını takın"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Lütfen şarj cihazını takın"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Pil azalıyor."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> kaldı"</string> <string name="invalid_charger" msgid="4549105996740522523">"USB üzerinden şarj desteklenmiyor."\n"Yalnızca ürünle birlikte verilen şarj cihazını kullanın."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"OTOMTK"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Bildirimler"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth paylaşımı tamam"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Giriş yöntemlerini yapılandır"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Giriş yöntemlerini yapılandır"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Fiziksel klavyeyi kullan"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"<xliff:g id="APPLICATION">%1$s</xliff:g> uygulamasının bu USB cihazına erişmesine izin verilsin mi?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"<xliff:g id="APPLICATION">%1$s</xliff:g> uygulamasının bu USB aksesuarına erişmesine izin verilsin mi?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Bu USB cihaz bağlandığında <xliff:g id="ACTIVITY">%1$s</xliff:g> açılsın mı?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Bu USB aksesuarı bağlandığında <xliff:g id="ACTIVITY">%1$s</xliff:g> açılsın mı?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Hiçbir yüklü uyg bu USB aksesuarıyla çalışmıyor. Bu aksesuar hakknd daha fazla bilgi için: <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB aksesuarı"</string> <string name="label_view" msgid="6304565553218192990">"Görüntüle"</string> <string name="always_use_device" msgid="1450287437017315906">"Bu USB cihazı için varsayılan olarak kullan"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Bu USB aksesuar için varsayılan olarak kullan"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Yakınlaştır (ekranı kaplasın)"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Genişlet (ekran kapansın)"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Uyumluluk Zum\'u"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Uyumluluk Zum\'u"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Uygulama küçük bir ekran için tasarlanmışsa saatin yanında bir yakınlaştırma denetimi görünür."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB dosya aktarım seçenekleri"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Medya oynatıcı olarak ekle (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Kamera olarak ekle (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Mac için Android Dosya Aktarımı uygulamasını yükle"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Mac için Android Dosya Aktarımı uygulamasını yükle"</string> <string name="accessibility_back" msgid="567011538994429120">"Geri"</string> <string name="accessibility_home" msgid="8217216074895377641">"Ana sayfa"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menü"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Veri sinyali iki çubuk."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Veri sinyali üç çubuk."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Veri sinyali tam."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Kablosuz sinyali yok"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Kablosuz sinyali bir çubuk."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Kablosuz sinyali iki çubuk."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Kablosuz sinyali üç çubuk."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Kablosuz sinyali tam."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Kablosuz sinyali yok"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Kablosuz sinyali bir çubuk."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Kablosuz sinyali iki çubuk."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Kablosuz sinyali üç çubuk."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Kablosuz sinyali tam."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"Kablosuz"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Kablosuz"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"SIM kart yok."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth İnternet paylaşımı"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Uçak modu."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G verileri devre dışı"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobil veriler devre dışı"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Veriler devre dışı"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Belirtilen veri kullanım sınırına ulaşıldı."\n\n"Ek veri kullanımında operatör ücretleri alınabilir."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Belirtilen veri kullanım sınırına ulaşıldı."\n\n"Ek veri kullanımında operatör ücretleri alınabilir."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Veriyi yeniden etkinleştir"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"İnternet bağlantısı yok"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Kablosuz bağlandı"</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 5b92cc0..ac1be4c 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Немає сповіщень"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Поточні"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Сповіщення"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Підключ. заряд. пристрій"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Підключ. заряд. пристрій"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Батарея виснажується."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"Залишилося <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Заряджання USB не підтримується."\n"Використовуйте лише наданий у комплекті зарядний пристрій."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"АВТОМ."</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Сповіщення"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Створено прив\'язку Bluetooth"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Налаштувати методи введення"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Налаштувати методи введення"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Викор. реальну клавіатуру"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Надати програмі <xliff:g id="APPLICATION">%1$s</xliff:g> доступ до пристрою USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Надати програмі <xliff:g id="APPLICATION">%1$s</xliff:g> доступ до аксесуара USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Відкривати \"<xliff:g id="ACTIVITY">%1$s</xliff:g>\", коли під’єднано пристрій USB?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Відкривати \"<xliff:g id="ACTIVITY">%1$s</xliff:g>\", коли під’єднано аксесуар USB?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Установлені прогр. не працюють із цим аксесуаром USB. Більше про цей аксесуар: <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Пристрій USB"</string> <string name="label_view" msgid="6304565553218192990">"Переглянути"</string> <string name="always_use_device" msgid="1450287437017315906">"Використовувати за умовчанням для пристрою USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Використовувати за умовчанням для аксесуара USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Масштабув. на весь екран"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Розтягнути на весь екран"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Елемент керування масштабом для сумісності"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Елемент керування масштабом для сумісності"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Якщо програму призначено для менших екранів, елемент керування масштабом буде відображатися біля годинника."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Парам.передав.файлів через USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Підключити як медіапрогравач (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Підключити як камеру (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Установити програму Android File Transfer для Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Установити програму Android File Transfer для Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Назад"</string> <string name="accessibility_home" msgid="8217216074895377641">"Головна"</string> <string name="accessibility_menu" msgid="316839303324695949">"Меню"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Дві смужки сигналу даних."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Три смужки сигналу даних."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Максимальний сигнал даних."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Немає сигналу Wi-Fi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Одна смужка сигналу WiFi."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Дві смужки сигналу WiFi."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Три смужки сигналу WiFi."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Максимальний сигнал Wi-Fi."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Немає сигналу Wi-Fi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Одна смужка сигналу WiFi."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Дві смужки сигналу WiFi."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Три смужки сигналу WiFi."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Максимальний сигнал Wi-Fi."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Немає SIM-карти."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Прив’язка Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим польоту."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Дані 4G вимкнено"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Мобільне передавання даних вимкнено"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Використання даних вимкнено"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Досягнуто вказаного ліміту використання даних."\n\n"Додаткове використання даних може призвести до стягування плати оператором."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Досягнуто вказаного ліміту використання даних."\n\n"Додаткове використання даних може призвести до стягування плати оператором."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Повторно ввімкнути дані"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Немає з’єднання"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi під’єднано"</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index d1158e4..c27b85a 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Không có thông báo nào"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Đang diễn ra"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Thông báo"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Vui lòng kết nối bộ sạc"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Vui lòng kết nối bộ sạc"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Pin đang yếu."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> còn lại"</string> <string name="invalid_charger" msgid="4549105996740522523">"Không hỗ trợ sạc qua USB."\n"Chỉ sử dụng bộ sạc được cung cấp."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"TỰ ĐỘNG"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Thông báo"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth được dùng làm điểm truy cập Internet"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Định cấu hình phương thức nhập liệu"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Định cấu hình phương thức nhập liệu"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Sử dụng bàn phím vật lý"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Cho phép ứng dụng <xliff:g id="APPLICATION">%1$s</xliff:g> truy cập thiết bị USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Cho phép ứng dụng <xliff:g id="APPLICATION">%1$s</xliff:g> truy cập phụ kiện USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Mở <xliff:g id="ACTIVITY">%1$s</xliff:g> khi thiết bị USB này được kết nối?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Mở <xliff:g id="ACTIVITY">%1$s</xliff:g> khi phụ kiện USB này được kết nối?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Không có ứng dụng được cài đặt nào hoạt động với phụ kiện USB này. Tìm hiểu thêm về phụ kiện này tại <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"Phụ kiện USB"</string> <string name="label_view" msgid="6304565553218192990">"Xem"</string> <string name="always_use_device" msgid="1450287437017315906">"Sử dụng theo mặc định cho thiết bị USB này"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Sử dụng theo mặc định cho phụ kiện USB này"</string> <string name="compat_mode_on" msgid="6623839244840638213">"T.phóng để lấp đầy m.hình"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Giãn ra để lấp đầy m.hình"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Thu phóng tương thích"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Thu phóng tương thích"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Khi ứng dụng được thiết kế cho một màn hình nhỏ hơn, điều khiển thu phóng sẽ xuất hiện bên cạnh đồng hồ."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Tùy chọn truyền tệp USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Gắn như một trình phát đa phương tiện (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Gắn như một máy ảnh (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Cài đặt ứng dụng Truyền tệp của Android dành cho Mac"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Cài đặt ứng dụng Truyền tệp của Android dành cho Mac"</string> <string name="accessibility_back" msgid="567011538994429120">"Quay lại"</string> <string name="accessibility_home" msgid="8217216074895377641">"Trang chủ"</string> <string name="accessibility_menu" msgid="316839303324695949">"Trình đơn"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Tín hiệu dữ liệu hai vạch."</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Tín hiệu dữ liệu ba vạch."</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Tín hiệu dữ liệu đầy đủ."</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Không có WiFi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Tín hiệu WiFi một vạch."</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"Tín hiệu WiFi hai vạch."</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"Tín hiệu WiFi ba vạch."</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Tín hiệu WiFi đầy đủ."</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Không có WiFi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Tín hiệu WiFi một vạch."</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Tín hiệu WiFi hai vạch."</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Tín hiệu WiFi ba vạch."</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Tín hiệu WiFi đầy đủ."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Cạnh"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Không có SIM nào."</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Dùng làm điểm truy cập Internet qua Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Chế độ trên máy bay."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Đã tắt dữ liệu 4G"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Dữ liệu di động bị vô hiệu hóa"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Dữ liệu đã bị vô hiệu hóa"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Đã đạt tới giới hạn sử dụng dữ liệu được chỉ định."\n\n"Nhà cung cấp có thể tính phí cho việc sử dụng thêm dữ liệu."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Đã đạt tới giới hạn sử dụng dữ liệu được chỉ định."\n\n"Nhà cung cấp có thể tính phí cho việc sử dụng thêm dữ liệu."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Bật lại dữ liệu"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Ko có k.nối Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Đã kết nối Wi-Fi"</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 2b1bfd6..66c6279 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"无通知"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"正在进行的"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"通知"</string> - <string name="battery_low_title" msgid="7923774589611311406">"请连接充电器"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"请连接充电器"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"电池电量低。"</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"还剩 <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"不支持 USB 充电功能。"\n"只能使用随附的充电器充电。"</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"自动"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"通知"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"蓝牙已绑定"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"配置输入法"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"配置输入法"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"使用物理键盘"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"允许应用程序<xliff:g id="APPLICATION">%1$s</xliff:g>访问 USB 设备吗?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"允许应用程序<xliff:g id="APPLICATION">%1$s</xliff:g>访问 USB 配件吗?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"要在连接此 USB 设备时打开<xliff:g id="ACTIVITY">%1$s</xliff:g>吗?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"要在连接此 USB 配件时打开<xliff:g id="ACTIVITY">%1$s</xliff:g>吗?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"未安装此 USB 配件适用的应用程序。要了解关于此配件的详情,请访问:<xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB 配件"</string> <string name="label_view" msgid="6304565553218192990">"查看"</string> <string name="always_use_device" msgid="1450287437017315906">"默认情况下用于该 USB 设备"</string> <string name="always_use_accessory" msgid="1210954576979621596">"默认情况下用于该 USB 配件"</string> <string name="compat_mode_on" msgid="6623839244840638213">"缩放以填满屏幕"</string> <string name="compat_mode_off" msgid="4434467572461327898">"拉伸以填满屏幕"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"兼容性缩放"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"兼容性缩放"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"如果应用程序是针对较小屏幕设计的,则时钟旁会显示缩放控件。"</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB 文件传输选项"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"作为媒体播放器 (MTP) 装载"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"作为摄像头 (PTP) 装载"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"安装适用于苹果机的“Android 文件传输”应用程序"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"安装适用于苹果机的“Android 文件传输”应用程序"</string> <string name="accessibility_back" msgid="567011538994429120">"返回"</string> <string name="accessibility_home" msgid="8217216074895377641">"主屏幕"</string> <string name="accessibility_menu" msgid="316839303324695949">"菜单"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"数据信号强度为两格。"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"数据信号强度为三格。"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"数据信号满格。"</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"没有 WiFi 信号。"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi 信号强度为一格。"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WiFi 信号强度为两格。"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi 信号强度为三格。"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi 信号满格。"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"没有 WiFi 信号。"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi 信号强度为一格。"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi 信号强度为两格。"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi 信号强度为三格。"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"WiFi 信号满格。"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"无 SIM 卡。"</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"蓝牙网络共享。"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"飞行模式。"</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G 数据网络已停用"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"移动数据已停用"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"数据已停用"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"已达到指定的数据流量上限。"\n\n"如果使用额外的数据流量,运营商可能会收取相应的费用。"</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"已达到指定的数据流量上限。"\n\n"如果使用额外的数据流量,运营商可能会收取相应的费用。"</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"重新启用数据连接"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"未连接互联网"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi 已连接"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 2ffca64..6af0159 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"沒有通知"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"進行中"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"通知"</string> - <string name="battery_low_title" msgid="7923774589611311406">"請連接充電器"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"請連接充電器"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"電池電量即將不足。"</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"還剩 <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"不支援 USB 充電。"\n"僅能使用隨附的充電器。"</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"自動"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"通知"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"已透過 Bluetooth 進行網路共用"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"設定輸入方式"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"設定輸入方式"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"使用實體鍵盤"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"允許 <xliff:g id="APPLICATION">%1$s</xliff:g> 應用程式存取 USB 裝置嗎?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"允許 <xliff:g id="APPLICATION">%1$s</xliff:g> 應用程式存取 USB 配件嗎?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"連接這個 USB 裝置時啟用 <xliff:g id="ACTIVITY">%1$s</xliff:g> 嗎?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"連接這個 USB 配件時啟用 <xliff:g id="ACTIVITY">%1$s</xliff:g> 嗎?"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"已安裝的應用程式均無法存取這類 USB 配件,如要進一步瞭解這個配件,請造訪 <xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"USB 配件"</string> <string name="label_view" msgid="6304565553218192990">"查看"</string> <string name="always_use_device" msgid="1450287437017315906">"預設用於這個 USB 裝置"</string> <string name="always_use_accessory" msgid="1210954576979621596">"預設用於這個 USB 配件"</string> <string name="compat_mode_on" msgid="6623839244840638213">"放大為全螢幕"</string> <string name="compat_mode_off" msgid="4434467572461327898">"放大為全螢幕"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"相容性縮放"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"相容性縮放"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"執行專為較小螢幕設計的應用程式時,系統會在時鐘旁顯示縮放控制項。"</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"USB 檔案傳輸選項"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"掛接為媒體播放器 (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"掛接為相機 (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"安裝適用於 Mac 的「Android 檔案傳輸」"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"安裝適用於 Mac 的「Android 檔案傳輸」"</string> <string name="accessibility_back" msgid="567011538994429120">"返回"</string> <string name="accessibility_home" msgid="8217216074895377641">"主螢幕"</string> <string name="accessibility_menu" msgid="316839303324695949">"選單"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"數據網路訊號強度兩格。"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"數據網路訊號強度三格。"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"數據網路訊號滿格。"</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"沒有 WiFi 連線。"</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"WiFi 訊號強度一格。"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"WiFi 訊號強度兩格。"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"WiFi 訊號強度三格。"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi 訊號滿格。"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"沒有 WiFi 連線。"</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi 訊號強度一格。"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi 訊號強度兩格。"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi 訊號強度三格。"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"WiFi 訊號滿格。"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"沒有 SIM 卡。"</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"藍牙數據連線"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"飛行模式。"</string> @@ -136,7 +139,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"已停用 4G 數據"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"已停用行動數據"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"數據已停用"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"已達到指定的資料用量上限。"\n\n"如果使用額外的資料用量,行動通訊業者可能會向您收費。"</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"已達到指定的資料用量上限。"\n\n"如果使用額外的資料用量,行動通訊業者可能會向您收費。"</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"重新啟用數據連線"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"沒有網際網路連線"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi 已連線"</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 5ef5152..7ef2549 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -34,7 +34,7 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Azikho izaziso"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Okuqhubekayo"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Izaziso"</string> - <string name="battery_low_title" msgid="7923774589611311406">"Sicela uxhume ishaja"</string> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Sicela uxhume ishaja"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Ibhetri iya ngokuphela."</string> <string name="battery_low_percent_format" msgid="1077244949318261761">"okusele okungu-<xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Ukushaja i-USB akusekelwe."\n"Sebenzisa kuphela ishaja enikeziwe."</string> @@ -47,39 +47,42 @@ <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"OKUZENZAKALELAYO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Izaziso"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"Ukusebenzisa i-Bluetooth njengemodemu"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Misa izindlela zokufakwayo"</string> + <!-- outdated translation 737483394044014246 --> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"Misa izindlela zokufakwayo"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Sebenzisa ikhibhodi ebangekayo"</string> - <string name="usb_device_permission_prompt" msgid="3816016361969816903">"Vumela uhlelo lokusebenza <xliff:g id="APPLICATION">%1$s</xliff:g> lufinyelele idivayisi ye-USB?"</string> - <string name="usb_accessory_permission_prompt" msgid="6888598803988889959">"Vumela uhlelo lokusebenza <xliff:g id="APPLICATION">%1$s</xliff:g> ukuze ufinyelele kwizinto eziphuma ne-USB?"</string> + <!-- no translation found for usb_device_permission_prompt (834698001271562057) --> + <skip /> + <!-- no translation found for usb_accessory_permission_prompt (5171775411178865750) --> + <skip /> <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"Vula <xliff:g id="ACTIVITY">%1$s</xliff:g> uma ledivayisi ye-USB ixhunyiwe?"</string> <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"Vula <xliff:g id="ACTIVITY">%1$s</xliff:g> uma le-accessory ye-USB ixhunyiwe"</string> - <string name="usb_accessory_uri_prompt" msgid="6332150684964235705">"Azikho izinhlelo zokusebenza zisebenze ngento ze-USB. Funda okwengeziwe ngalento<xliff:g id="URL">%1$s</xliff:g>"</string> + <!-- no translation found for usb_accessory_uri_prompt (513450621413733343) --> + <skip /> <string name="title_usb_accessory" msgid="4966265263465181372">"ama-accessory e-USB"</string> <string name="label_view" msgid="6304565553218192990">"Buka"</string> <string name="always_use_device" msgid="1450287437017315906">"Sebenzisa ngokuzenzakalelayo yale divayisi ye-USB"</string> <string name="always_use_accessory" msgid="1210954576979621596">"Sebenzisa ngokuzenzakalelayo kule-accessory ye-USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Sondeza ukugcwalisa isikrini"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Nweba ukugcwalisa isikrini"</string> - <string name="compat_mode_help_header" msgid="7020175705401506719">"Ukuhambelana Kokusondeza"</string> + <!-- outdated translation 7020175705401506719 --> <string name="compat_mode_help_header" msgid="7969493989397529910">"Ukuhambelana Kokusondeza"</string> <string name="compat_mode_help_body" msgid="4946726776359270040">"Uma uhlelo lokusebenza lwenzelwe isikrini ezincane, isilawuli sokusondeza sizovela ngakuyiwashi."</string> - <!-- no translation found for screenshot_saving_ticker (3808900131607378535) --> + <!-- no translation found for screenshot_saving_ticker (8847274279171967058) --> <skip /> - <!-- no translation found for screenshot_saving_title (7158814134399651627) --> + <!-- no translation found for screenshot_saving_title (8242282144535555697) --> <skip /> - <!-- no translation found for screenshot_saving_text (7138808001579871654) --> + <!-- no translation found for screenshot_saving_text (2419718443411738818) --> <skip /> - <!-- no translation found for screenshot_saved_title (1656379291643543172) --> + <!-- no translation found for screenshot_saved_title (6461865960961414961) --> <skip /> - <!-- no translation found for screenshot_saved_text (5040360894749163221) --> + <!-- no translation found for screenshot_saved_text (1152839647677558815) --> <skip /> - <!-- no translation found for screenshot_failed_title (1140968728869009679) --> + <!-- no translation found for screenshot_failed_title (705781116746922771) --> <skip /> - <!-- no translation found for screenshot_failed_text (9163506496592455352) --> + <!-- no translation found for screenshot_failed_text (5951190902073655147) --> <skip /> <string name="usb_preference_title" msgid="6551050377388882787">"Okukhethwa kokudluliswa kwefayela ye-USB"</string> <string name="use_mtp_button_title" msgid="4333504413563023626">"Lengisa njengesidlali semediya (MTP)"</string> <string name="use_ptp_button_title" msgid="7517127540301625751">"Lengisa ikhamera (PTP)"</string> - <string name="installer_cd_button_title" msgid="8485631662288445893">"Faka uhlelo lokusebenza Lokudluliswa Kwefayela ye-Android Ohlelweni lokhompyutha"</string> + <!-- outdated translation 8485631662288445893 --> <string name="installer_cd_button_title" msgid="2312667578562201583">"Faka uhlelo lokusebenza Lokudluliswa Kwefayela ye-Android Ohlelweni lokhompyutha"</string> <string name="accessibility_back" msgid="567011538994429120">"Emuva"</string> <string name="accessibility_home" msgid="8217216074895377641">"Ekhaya"</string> <string name="accessibility_menu" msgid="316839303324695949">"Imenyu"</string> @@ -104,18 +107,18 @@ <string name="accessibility_data_two_bars" msgid="6166018492360432091">"Amabha amabili edatha"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"Amabha amathathu edatha"</string> <string name="accessibility_data_signal_full" msgid="2708384608124519369">"Igcwele i-signal yedatha"</string> - <string name="accessibility_no_wifi" msgid="4017628918351949575">"Ayikho i-WiFi."</string> - <string name="accessibility_wifi_one_bar" msgid="1914343229091303434">"Ibha eyodwa ye-WiFi"</string> - <string name="accessibility_wifi_two_bars" msgid="7869150535859760698">"ama-bar amabili e-WiFi"</string> - <string name="accessibility_wifi_three_bars" msgid="2665319332961356254">"amabha amathathu e-WiFi"</string> - <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"i-signal ye-WiFi igcwele"</string> + <!-- outdated translation 4017628918351949575 --> <string name="accessibility_no_wifi" msgid="7455607460517331976">"Ayikho i-WiFi."</string> + <!-- outdated translation 1914343229091303434 --> <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Ibha eyodwa ye-WiFi"</string> + <!-- outdated translation 7869150535859760698 --> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"ama-bar amabili e-WiFi"</string> + <!-- outdated translation 2665319332961356254 --> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"amabha amathathu e-WiFi"</string> + <!-- outdated translation 1275764416228473932 --> <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"i-signal ye-WiFi igcwele"</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> <string name="accessibility_data_connection_4g" msgid="7741000750630089612">"4G"</string> <string name="accessibility_data_connection_cdma" msgid="6132648193978823023">"CDMA"</string> <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Ekucupheleni"</string> - <string name="accessibility_data_connection_wifi" msgid="1127208787254436420">"WiFi"</string> + <!-- outdated translation 1127208787254436420 --> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"WiFi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Ayikho i-SIM"</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Ukusebenzisa i-Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Imodi yendiza."</string> @@ -134,7 +137,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Idatha ye-4G ivimbelwe"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Idatha yefoni ivimbelwe"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Idatha ivimbelwe"</string> - <string name="data_usage_disabled_dialog" msgid="6524467913290900042">"Umkhawulo wokusebenzisa idatha ocacisiwe ufinyelelwe."\n\n"Ukusebenzisa idatha okwengeziwe kungabanga izindlezo zokuthwala."</string> + <!-- outdated translation 6524467913290900042 --> <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Umkhawulo wokusebenzisa idatha ocacisiwe ufinyelelwe."\n\n"Ukusebenzisa idatha okwengeziwe kungabanga izindlezo zokuthwala."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Vumela futhi idatha"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Alukho uxhumano lwe-Inthanethi"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"I-Wi-Fi ixhunyiwe"</string> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index b26709d..8108a90 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -70,7 +70,7 @@ <string name="status_bar_latest_events_title">Notifications</string> <!-- When the battery is low, this is displayed to the user in a dialog. The title of the low battery alert. [CHAR LIMIT=NONE]--> - <string name="battery_low_title">Please connect charger</string> + <string name="battery_low_title">Connect charger</string> <!-- When the battery is low, this is displayed to the user in a dialog. The subtitle of the low battery alert. [CHAR LIMIT=NONE] --> <string name="battery_low_subtitle">The battery is getting low.</string> @@ -122,16 +122,16 @@ <!-- Network connection string for Bluetooth Reverse Tethering --> <string name="bluetooth_tethered">Bluetooth tethered</string> <!-- Title of a button to open the settings for input methods [CHAR LIMIT=30] --> - <string name="status_bar_input_method_settings_configure_input_methods">Configure input methods</string> + <string name="status_bar_input_method_settings_configure_input_methods">Set up input methods</string> <!-- Label of a toggle switch to disable use of the physical keyboard in favor of the IME. [CHAR LIMIT=25] --> <string name="status_bar_use_physical_keyboard">Use physical keyboard</string> <!-- Prompt for the USB device permission dialog [CHAR LIMIT=80] --> - <string name="usb_device_permission_prompt">Allow the application <xliff:g id="application">%1$s</xliff:g> to access the USB device?</string> + <string name="usb_device_permission_prompt">Allow the app <xliff:g id="application">%1$s</xliff:g> to access the USB device?</string> <!-- Prompt for the USB accessory permission dialog [CHAR LIMIT=80] --> - <string name="usb_accessory_permission_prompt">Allow the application <xliff:g id="application">%1$s</xliff:g> to access the USB accessory?</string> + <string name="usb_accessory_permission_prompt">Allow the app <xliff:g id="application">%1$s</xliff:g> to access the USB accessory?</string> <!-- Prompt for the USB device confirm dialog [CHAR LIMIT=80] --> <string name="usb_device_confirm_prompt">Open <xliff:g id="activity">%1$s</xliff:g> when this USB device is connected?</string> @@ -140,7 +140,7 @@ <string name="usb_accessory_confirm_prompt">Open <xliff:g id="activity">%1$s</xliff:g> when this USB accessory is connected?</string> <!-- Prompt for the USB accessory URI dialog [CHAR LIMIT=80] --> - <string name="usb_accessory_uri_prompt">No installed applications work with this USB accessory. Learn more about this accessory at <xliff:g id="url">%1$s</xliff:g></string> + <string name="usb_accessory_uri_prompt">No installed apps work with this USB accessory. Learn more about this accessory at <xliff:g id="url">%1$s</xliff:g></string> <!-- Title for USB accessory dialog. Used when the name of the accessory cannot be determined. [CHAR LIMIT=50] --> <string name="title_usb_accessory">USB accessory</string> @@ -163,7 +163,7 @@ <string name="compat_mode_off">Stretch to fill screen</string> <!-- Compatibility mode help screen: header text. [CHAR LIMIT=50] --> - <string name="compat_mode_help_header">Compatibility Zoom</string> + <string name="compat_mode_help_header">Compatibility zoom</string> <!-- Compatibility mode help screen: body text. [CHAR LIMIT=150] --> <string name="compat_mode_help_body">When an app was designed for a smaller screen, a zoom control will appear by the clock.</string> @@ -190,7 +190,7 @@ <!-- Label for the PTP USB function in UsbPreferenceActivity. [CHAR LIMIT=50] --> <string name="use_ptp_button_title">Mount as a camera (PTP)</string> <!-- Label for the installer CD image option in UsbPreferenceActivity. [CHAR LIMIT=50] --> - <string name="installer_cd_button_title">Install Android File Transfer application for Mac</string> + <string name="installer_cd_button_title">Install Android File Transfer app for Mac</string> <!-- Content description of the back button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_back">Back</string> @@ -248,15 +248,15 @@ <string name="accessibility_data_signal_full">Data signal full.</string> <!-- Content description of the WIFI signal when no signal for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> - <string name="accessibility_no_wifi">No WiFi.</string> + <string name="accessibility_no_wifi">No Wi-Fi.</string> <!-- Content description of the WIFI signal when it is one bar for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> - <string name="accessibility_wifi_one_bar">WiFi one bar.</string> + <string name="accessibility_wifi_one_bar">Wi-Fi one bar.</string> <!-- Content description of the WIFI signal when it is two bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> - <string name="accessibility_wifi_two_bars">WiFi two bars.</string> + <string name="accessibility_wifi_two_bars">Wi-Fi two bars.</string> <!-- Content description of the WIFI signal when it is three bars for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> - <string name="accessibility_wifi_three_bars">WiFi three bars.</string> + <string name="accessibility_wifi_three_bars">Wi-Fi three bars.</string> <!-- Content description of the WIFI signal when it is full for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> - <string name="accessibility_wifi_signal_full">WiFi signal full.</string> + <string name="accessibility_wifi_signal_full">Wi-Fi signal full.</string> <!-- Content description of the data connection type GPRS for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_data_connection_gprs">GPRS</string> @@ -277,7 +277,7 @@ <string name="accessibility_data_connection_edge">Edge</string> <!-- Content description of the data connection type WiFi for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> - <string name="accessibility_data_connection_wifi">WiFi</string> + <string name="accessibility_data_connection_wifi">Wi-Fi</string> <!-- Content description of the data connection with no SIM for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_no_sim">No SIM.</string> @@ -327,7 +327,7 @@ <!-- Title of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=48] --> <string name="data_usage_disabled_dialog_title">Data disabled</string> <!-- Body of dialog shown when data usage has exceeded limit and has been disabled. [CHAR LIMIT=NONE] --> - <string name="data_usage_disabled_dialog">The specified data usage limit has been reached.\n\nAdditional data use may incur carrier charges.</string> + <string name="data_usage_disabled_dialog">You\'ve reached the specified data usage limit.\n\nIf you re-enable data, you may be charged by the operator.</string> <!-- Dialog button indicating that data connection should be re-enabled. [CHAR LIMIT=28] --> <string name="data_usage_disabled_dialog_enable">Re-enable data</string> diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java index fb13b75..4e4fe4a 100644 --- a/services/java/com/android/server/NetworkManagementService.java +++ b/services/java/com/android/server/NetworkManagementService.java @@ -240,6 +240,11 @@ public class NetworkManagementService extends INetworkManagementService.Stub * Notify our observers of an interface removal. */ private void notifyInterfaceRemoved(String iface) { + // netd already clears out quota and alerts for removed ifaces; update + // our sanity-checking state. + mActiveAlertIfaces.remove(iface); + mActiveQuotaIfaces.remove(iface); + for (INetworkManagementEventObserver obs : mObservers) { try { obs.interfaceRemoved(iface); diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index f885fc7..28552f6 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -360,18 +360,6 @@ uint32_t Layer::doTransaction(uint32_t flags) mCurrentScalingMode); if (!isFixedSize()) { - // we're being resized and there is a freeze display request, - // acquire a freeze lock, so that the screen stays put - // until we've redrawn at the new size; this is to avoid - // glitches upon orientation changes. - if (mFlinger->hasFreezeRequest()) { - // if the surface is hidden, don't try to acquire the - // freeze lock, since hidden surfaces may never redraw - if (!(front.flags & ISurfaceComposer::eLayerHidden)) { - mFreezeLock = mFlinger->getFreezeLock(); - } - } - // this will make sure LayerBase::doTransaction doesn't update // the drawing state's size Layer::State& editDraw(mDrawingState); @@ -385,14 +373,6 @@ uint32_t Layer::doTransaction(uint32_t flags) temp.requested_h); } - if (temp.sequence != front.sequence) { - if (temp.flags & ISurfaceComposer::eLayerHidden || temp.alpha == 0) { - // this surface is now hidden, so it shouldn't hold a freeze lock - // (it may never redraw, which is fine if it is hidden) - mFreezeLock.clear(); - } - } - return LayerBase::doTransaction(flags); } @@ -466,7 +446,7 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions) glTexParameterx(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameterx(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - // update the layer size and release freeze-lock + // update the layer size if needed const Layer::State& front(drawingState()); // FIXME: mPostedDirtyRegion = dirty & bounds @@ -503,9 +483,6 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions) // recompute visible region recomputeVisibleRegions = true; - - // we now have the correct size, unfreeze the screen - mFreezeLock.clear(); } LOGD_IF(DEBUG_RESIZE, @@ -538,11 +515,6 @@ void Layer::unlockPageFlip( dirtyRegion.andSelf(visibleRegionScreen); outDirtyRegion.orSelf(dirtyRegion); } - if (visibleRegionScreen.isEmpty()) { - // an invisible layer should not hold a freeze-lock - // (because it may never be updated and therefore never release it) - mFreezeLock.clear(); - } } void Layer::dump(String8& result, char* buffer, size_t SIZE) const @@ -560,9 +532,9 @@ void Layer::dump(String8& result, char* buffer, size_t SIZE) const snprintf(buffer, SIZE, " " "format=%2d, activeBuffer=[%4ux%4u:%4u,%3X]," - " freezeLock=%p, transform-hint=0x%02x, queued-frames=%d\n", + " transform-hint=0x%02x, queued-frames=%d\n", mFormat, w0, h0, s0,f0, - getFreezeLock().get(), getTransformHint(), mQueuedFrames); + getTransformHint(), mQueuedFrames); result.append(buffer); diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h index 82e3521..2b9471b 100644 --- a/services/surfaceflinger/Layer.h +++ b/services/surfaceflinger/Layer.h @@ -39,7 +39,6 @@ namespace android { // --------------------------------------------------------------------------- -class FreezeLock; class Client; class GLExtensions; @@ -80,7 +79,6 @@ public: virtual wp<IBinder> getSurfaceTextureBinder() const; // only for debugging - inline const sp<FreezeLock>& getFreezeLock() const { return mFreezeLock; } inline const sp<GraphicBuffer>& getActiveBuffer() const { return mActiveBuffer; } protected: @@ -124,9 +122,6 @@ private: bool mProtectedByApp; // application requires protected path to external sink Region mPostedDirtyRegion; - // page-flip thread and transaction thread (currently main thread) - sp<FreezeLock> mFreezeLock; - // binder thread, transaction thread mutable Mutex mLock; }; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index ad1995d..1905a68 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -80,15 +80,12 @@ const String16 sDump("android.permission.DUMP"); SurfaceFlinger::SurfaceFlinger() : BnSurfaceComposer(), Thread(false), mTransactionFlags(0), - mResizeTransationPending(false), + mTransationPending(false), mLayersRemoved(false), mBootTime(systemTime()), mVisibleRegionsDirty(false), mHwWorkListDirty(false), - mFreezeDisplay(false), mElectronBeamAnimationMode(0), - mFreezeCount(0), - mFreezeDisplayTime(0), mDebugRegion(0), mDebugBackground(0), mDebugDDMS(0), @@ -191,11 +188,6 @@ void SurfaceFlinger::binderDied(const wp<IBinder>& who) { // the window manager died on us. prepare its eulogy. - // unfreeze the screen in case it was... frozen - mFreezeDisplayTime = 0; - mFreezeCount = 0; - mFreezeDisplay = false; - // reset screen orientation setOrientation(0, eOrientationDefault, 0); @@ -323,33 +315,7 @@ void SurfaceFlinger::waitForEvent() { while (true) { nsecs_t timeout = -1; - const nsecs_t freezeDisplayTimeout = ms2ns(5000); - if (UNLIKELY(isFrozen())) { - // wait 5 seconds - const nsecs_t now = systemTime(); - if (mFreezeDisplayTime == 0) { - mFreezeDisplayTime = now; - } - nsecs_t waitTime = freezeDisplayTimeout - (now - mFreezeDisplayTime); - timeout = waitTime>0 ? waitTime : 0; - } - sp<MessageBase> msg = mEventQueue.waitMessage(timeout); - - // see if we timed out - if (isFrozen()) { - const nsecs_t now = systemTime(); - nsecs_t frozenTime = (now - mFreezeDisplayTime); - if (frozenTime >= freezeDisplayTimeout) { - // we timed out and are still frozen - LOGW("timeout expired mFreezeDisplay=%d, mFreezeCount=%d", - mFreezeDisplay, mFreezeCount); - mFreezeDisplayTime = 0; - mFreezeCount = 0; - mFreezeDisplay = false; - } - } - if (msg != 0) { switch (msg->what) { case MessageQueue::INVALIDATE: @@ -589,13 +555,6 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags) mDirtyRegion.set(hw.bounds()); } - if (mCurrentState.freezeDisplay != mDrawingState.freezeDisplay) { - // freezing or unfreezing the display -> trigger animation if needed - mFreezeDisplay = mCurrentState.freezeDisplay; - if (mFreezeDisplay) - mFreezeDisplayTime = 0; - } - if (currentLayers.size() > mDrawingState.layersSortedByZ.size()) { // layers have been added mVisibleRegionsDirty = true; @@ -621,11 +580,6 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags) commitTransaction(); } -sp<FreezeLock> SurfaceFlinger::getFreezeLock() const -{ - return new FreezeLock(const_cast<SurfaceFlinger *>(this)); -} - void SurfaceFlinger::computeVisibleRegions( const LayerVector& currentLayers, Region& dirtyRegion, Region& opaqueRegion) { @@ -755,7 +709,7 @@ void SurfaceFlinger::computeVisibleRegions( void SurfaceFlinger::commitTransaction() { mDrawingState = mCurrentState; - mResizeTransationPending = false; + mTransationPending = false; mTransactionCV.broadcast(); } @@ -1241,15 +1195,14 @@ uint32_t SurfaceFlinger::setTransactionFlags(uint32_t flags) void SurfaceFlinger::setTransactionState(const Vector<ComposerState>& state, - int orientation) { + int orientation, uint32_t flags) { Mutex::Autolock _l(mStateLock); - uint32_t flags = 0; + uint32_t transactionFlags = 0; if (mCurrentState.orientation != orientation) { if (uint32_t(orientation)<=eOrientation270 || orientation==42) { mCurrentState.orientation = orientation; - flags |= eTransactionNeeded; - mResizeTransationPending = true; + transactionFlags |= eTransactionNeeded; } else if (orientation != eOrientationUnchanged) { LOGW("setTransactionState: ignoring unrecognized orientation: %d", orientation); @@ -1260,56 +1213,29 @@ void SurfaceFlinger::setTransactionState(const Vector<ComposerState>& state, for (size_t i=0 ; i<count ; i++) { const ComposerState& s(state[i]); sp<Client> client( static_cast<Client *>(s.client.get()) ); - flags |= setClientStateLocked(client, s.state); + transactionFlags |= setClientStateLocked(client, s.state); } - if (flags) { - setTransactionFlags(flags); + if (transactionFlags) { + setTransactionFlags(transactionFlags); } - signalEvent(); - - // if there is a transaction with a resize, wait for it to - // take effect before returning. - while (mResizeTransationPending) { + // if this is a synchronous transaction, wait for it to take effect before + // returning. + if (flags & eSynchronous) { + mTransationPending = true; + } + while (mTransationPending) { status_t err = mTransactionCV.waitRelative(mStateLock, s2ns(5)); if (CC_UNLIKELY(err != NO_ERROR)) { // just in case something goes wrong in SF, return to the // called after a few seconds. LOGW_IF(err == TIMED_OUT, "closeGlobalTransaction timed out!"); - mResizeTransationPending = false; + mTransationPending = false; break; } } } -status_t SurfaceFlinger::freezeDisplay(DisplayID dpy, uint32_t flags) -{ - if (UNLIKELY(uint32_t(dpy) >= DISPLAY_COUNT)) - return BAD_VALUE; - - Mutex::Autolock _l(mStateLock); - mCurrentState.freezeDisplay = 1; - setTransactionFlags(eTransactionNeeded); - - // flags is intended to communicate some sort of animation behavior - // (for instance fading) - return NO_ERROR; -} - -status_t SurfaceFlinger::unfreezeDisplay(DisplayID dpy, uint32_t flags) -{ - if (UNLIKELY(uint32_t(dpy) >= DISPLAY_COUNT)) - return BAD_VALUE; - - Mutex::Autolock _l(mStateLock); - mCurrentState.freezeDisplay = 0; - setTransactionFlags(eTransactionNeeded); - - // flags is intended to communicate some sort of animation behavior - // (for instance fading) - return NO_ERROR; -} - int SurfaceFlinger::setOrientation(DisplayID dpy, int orientation, uint32_t flags) { @@ -1510,7 +1436,6 @@ uint32_t SurfaceFlinger::setClientStateLocked( if (what & eSizeChanged) { if (layer->setSize(s.w, s.h)) { flags |= eTraversalNeeded; - mResizeTransationPending = true; } } if (what & eAlphaChanged) { @@ -1630,8 +1555,7 @@ status_t SurfaceFlinger::dump(int fd, const Vector<String16>& args) mWormholeRegion.dump(result, "WormholeRegion"); const DisplayHardware& hw(graphicPlane(0).displayHardware()); snprintf(buffer, SIZE, - " display frozen: %s, freezeCount=%d, orientation=%d, canDraw=%d\n", - mFreezeDisplay?"yes":"no", mFreezeCount, + " orientation=%d, canDraw=%d\n", mCurrentState.orientation, hw.canDraw()); result.append(buffer); snprintf(buffer, SIZE, @@ -1684,8 +1608,6 @@ status_t SurfaceFlinger::onTransact( case CREATE_CONNECTION: case SET_TRANSACTION_STATE: case SET_ORIENTATION: - case FREEZE_DISPLAY: - case UNFREEZE_DISPLAY: case BOOT_FINISHED: case TURN_ELECTRON_BEAM_OFF: case TURN_ELECTRON_BEAM_ON: @@ -1757,10 +1679,6 @@ status_t SurfaceFlinger::onTransact( GraphicLog::getInstance().setEnabled(enabled); return NO_ERROR; } - case 1007: // set mFreezeCount - mFreezeCount = data.readInt32(); - mFreezeDisplayTime = 0; - return NO_ERROR; case 1008: // toggle use of hw composer n = data.readInt32(); mDebugDisableHWC = n ? 1 : 0; diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 3c8f4e5..1490dec 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -46,7 +46,6 @@ namespace android { class Client; class DisplayHardware; -class FreezeLock; class Layer; class LayerDim; class LayerScreenshot; @@ -169,9 +168,7 @@ public: virtual sp<IMemoryHeap> getCblk() const; virtual void bootFinished(); virtual void setTransactionState(const Vector<ComposerState>& state, - int orientation); - virtual status_t freezeDisplay(DisplayID dpy, uint32_t flags); - virtual status_t unfreezeDisplay(DisplayID dpy, uint32_t flags); + int orientation, uint32_t flags); virtual int setOrientation(DisplayID dpy, int orientation, uint32_t flags); virtual bool authenticateSurfaceTexture(const sp<ISurfaceTexture>& surface) const; @@ -269,12 +266,10 @@ private: struct State { State() { orientation = ISurfaceComposer::eOrientationDefault; - freezeDisplay = 0; } LayerVector layersSortedByZ; uint8_t orientation; uint8_t orientationFlags; - uint8_t freezeDisplay; }; virtual bool threadLoop(); @@ -333,20 +328,6 @@ private: status_t renderScreenToTextureLocked(DisplayID dpy, GLuint* textureName, GLfloat* uOut, GLfloat* vOut); - friend class FreezeLock; - sp<FreezeLock> getFreezeLock() const; - inline void incFreezeCount() { - if (mFreezeCount == 0) - mFreezeDisplayTime = 0; - mFreezeCount++; - } - inline void decFreezeCount() { if (mFreezeCount > 0) mFreezeCount--; } - inline bool hasFreezeRequest() const { return mFreezeDisplay; } - inline bool isFrozen() const { - return (mFreezeDisplay || mFreezeCount>0) && mBootFinished; - } - - void debugFlashRegions(); void debugShowFPS() const; void drawWormhole() const; @@ -360,7 +341,7 @@ private: volatile int32_t mTransactionFlags; Condition mTransactionCV; SortedVector< sp<LayerBase> > mLayerPurgatory; - bool mResizeTransationPending; + bool mTransationPending; // protected by mStateLock (but we could use another lock) GraphicPlane mGraphicPlanes[1]; @@ -383,10 +364,7 @@ private: Region mWormholeRegion; bool mVisibleRegionsDirty; bool mHwWorkListDirty; - bool mFreezeDisplay; int32_t mElectronBeamAnimationMode; - int32_t mFreezeCount; - nsecs_t mFreezeDisplayTime; Vector< sp<LayerBase> > mVisibleLayersSortedByZ; @@ -422,20 +400,6 @@ private: }; // --------------------------------------------------------------------------- - -class FreezeLock : public LightRefBase<FreezeLock> { - SurfaceFlinger* mFlinger; -public: - FreezeLock(SurfaceFlinger* flinger) - : mFlinger(flinger) { - mFlinger->incFreezeCount(); - } - ~FreezeLock() { - mFlinger->decFreezeCount(); - } -}; - -// --------------------------------------------------------------------------- }; // namespace android #endif // ANDROID_SURFACE_FLINGER_H diff --git a/services/surfaceflinger/tests/Android.mk b/services/surfaceflinger/tests/Android.mk index 5053e7d..b655648 100644 --- a/services/surfaceflinger/tests/Android.mk +++ b/services/surfaceflinger/tests/Android.mk @@ -1 +1,40 @@ -include $(call all-subdir-makefiles) +# Build the unit tests, +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE := SurfaceFlinger_test + +LOCAL_MODULE_TAGS := tests + +LOCAL_SRC_FILES := \ + Transaction_test.cpp \ + +LOCAL_SHARED_LIBRARIES := \ + libEGL \ + libGLESv2 \ + libandroid \ + libbinder \ + libcutils \ + libgui \ + libstlport \ + libui \ + libutils \ + +LOCAL_C_INCLUDES := \ + bionic \ + bionic/libstdc++/include \ + external/gtest/include \ + external/stlport/stlport \ + +# Build the binary to $(TARGET_OUT_DATA_NATIVE_TESTS)/$(LOCAL_MODULE) +# to integrate with auto-test framework. +include $(BUILD_NATIVE_TEST) + +# Include subdirectory makefiles +# ============================================================ + +# If we're building with ONE_SHOT_MAKEFILE (mm, mmm), then what the framework +# team really wants is to build the stuff defined by this makefile. +ifeq (,$(ONE_SHOT_MAKEFILE)) +include $(call first-makefiles-under,$(LOCAL_PATH)) +endif diff --git a/services/surfaceflinger/tests/Transaction_test.cpp b/services/surfaceflinger/tests/Transaction_test.cpp new file mode 100644 index 0000000..afafd8a --- /dev/null +++ b/services/surfaceflinger/tests/Transaction_test.cpp @@ -0,0 +1,236 @@ +/* + * Copyright (C) 2011 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. + */ + +#include <gtest/gtest.h> + +#include <binder/IMemory.h> +#include <surfaceflinger/ISurfaceComposer.h> +#include <surfaceflinger/Surface.h> +#include <surfaceflinger/SurfaceComposerClient.h> +#include <utils/String8.h> + +namespace android { + +// Fill an RGBA_8888 formatted surface with a single color. +static void fillSurfaceRGBA8(const sp<SurfaceControl>& sc, + uint8_t r, uint8_t g, uint8_t b) { + Surface::SurfaceInfo info; + sp<Surface> s = sc->getSurface(); + ASSERT_TRUE(s != NULL); + ASSERT_EQ(NO_ERROR, s->lock(&info)); + uint8_t* img = reinterpret_cast<uint8_t*>(info.bits); + for (uint32_t y = 0; y < info.h; y++) { + for (uint32_t x = 0; x < info.w; x++) { + uint8_t* pixel = img + (4 * (y*info.s + x)); + pixel[0] = r; + pixel[1] = g; + pixel[2] = b; + pixel[3] = 255; + } + } + ASSERT_EQ(NO_ERROR, s->unlockAndPost()); +} + +// A ScreenCapture is a screenshot from SurfaceFlinger that can be used to check +// individual pixel values for testing purposes. +class ScreenCapture : public RefBase { +public: + static void captureScreen(sp<ScreenCapture>* sc) { + sp<IMemoryHeap> heap; + uint32_t w=0, h=0; + PixelFormat fmt=0; + sp<ISurfaceComposer> sf(ComposerService::getComposerService()); + ASSERT_EQ(NO_ERROR, sf->captureScreen(0, &heap, &w, &h, &fmt, 0, 0, + 0, INT_MAX)); + ASSERT_TRUE(heap != NULL); + ASSERT_EQ(PIXEL_FORMAT_RGBA_8888, fmt); + *sc = new ScreenCapture(w, h, heap); + } + + void checkPixel(uint32_t x, uint32_t y, uint8_t r, uint8_t g, uint8_t b) { + const uint8_t* img = reinterpret_cast<const uint8_t*>(mHeap->base()); + const uint8_t* pixel = img + (4 * (y*mWidth + x)); + if (r != pixel[0] || g != pixel[1] || b != pixel[2]) { + String8 err(String8::format("pixel @ (%3d, %3d): " + "expected [%3d, %3d, %3d], got [%3d, %3d, %3d]", + x, y, r, g, b, pixel[0], pixel[1], pixel[2])); + EXPECT_EQ(String8(), err); + } + } + +private: + ScreenCapture(uint32_t w, uint32_t h, const sp<IMemoryHeap>& heap) : + mWidth(w), + mHeight(h), + mHeap(heap) + {} + + const uint32_t mWidth; + const uint32_t mHeight; + sp<IMemoryHeap> mHeap; +}; + +class LayerUpdateTest : public ::testing::Test { +protected: + virtual void SetUp() { + mComposerClient = new SurfaceComposerClient; + ASSERT_EQ(NO_ERROR, mComposerClient->initCheck()); + + ssize_t displayWidth = mComposerClient->getDisplayWidth(0); + ssize_t displayHeight = mComposerClient->getDisplayHeight(0); + + // Background surface + mBGSurfaceControl = mComposerClient->createSurface( + String8("BG Test Surface"), 0, displayWidth, displayHeight, + PIXEL_FORMAT_RGBA_8888, 0); + ASSERT_TRUE(mBGSurfaceControl != NULL); + ASSERT_TRUE(mBGSurfaceControl->isValid()); + fillSurfaceRGBA8(mBGSurfaceControl, 63, 63, 195); + + // Foreground surface + mFGSurfaceControl = mComposerClient->createSurface( + String8("FG Test Surface"), 0, 64, 64, PIXEL_FORMAT_RGBA_8888, 0); + ASSERT_TRUE(mFGSurfaceControl != NULL); + ASSERT_TRUE(mFGSurfaceControl->isValid()); + + fillSurfaceRGBA8(mFGSurfaceControl, 195, 63, 63); + + // Synchronization surface + mSyncSurfaceControl = mComposerClient->createSurface( + String8("Sync Test Surface"), 0, 1, 1, PIXEL_FORMAT_RGBA_8888, 0); + ASSERT_TRUE(mSyncSurfaceControl != NULL); + ASSERT_TRUE(mSyncSurfaceControl->isValid()); + + fillSurfaceRGBA8(mSyncSurfaceControl, 31, 31, 31); + + SurfaceComposerClient::openGlobalTransaction(); + + ASSERT_EQ(NO_ERROR, mBGSurfaceControl->setLayer(INT_MAX-2)); + ASSERT_EQ(NO_ERROR, mBGSurfaceControl->show()); + + ASSERT_EQ(NO_ERROR, mFGSurfaceControl->setLayer(INT_MAX-1)); + ASSERT_EQ(NO_ERROR, mFGSurfaceControl->setPosition(64, 64)); + ASSERT_EQ(NO_ERROR, mFGSurfaceControl->show()); + + ASSERT_EQ(NO_ERROR, mSyncSurfaceControl->setLayer(INT_MAX-1)); + ASSERT_EQ(NO_ERROR, mSyncSurfaceControl->setPosition(displayWidth-2, + displayHeight-2)); + ASSERT_EQ(NO_ERROR, mSyncSurfaceControl->show()); + + SurfaceComposerClient::closeGlobalTransaction(true); + } + + virtual void TearDown() { + mComposerClient->dispose(); + mBGSurfaceControl = 0; + mFGSurfaceControl = 0; + mSyncSurfaceControl = 0; + mComposerClient = 0; + } + + void waitForPostedBuffers() { + // Since the sync surface is in synchronous mode (i.e. double buffered) + // posting three buffers to it should ensure that at least two + // SurfaceFlinger::handlePageFlip calls have been made, which should + // guaranteed that a buffer posted to another Surface has been retired. + fillSurfaceRGBA8(mSyncSurfaceControl, 31, 31, 31); + fillSurfaceRGBA8(mSyncSurfaceControl, 31, 31, 31); + fillSurfaceRGBA8(mSyncSurfaceControl, 31, 31, 31); + } + + sp<SurfaceComposerClient> mComposerClient; + sp<SurfaceControl> mBGSurfaceControl; + sp<SurfaceControl> mFGSurfaceControl; + + // This surface is used to ensure that the buffers posted to + // mFGSurfaceControl have been picked up by SurfaceFlinger. + sp<SurfaceControl> mSyncSurfaceControl; +}; + +TEST_F(LayerUpdateTest, LayerMoveWorks) { + sp<ScreenCapture> sc; + { + SCOPED_TRACE("before move"); + ScreenCapture::captureScreen(&sc); + sc->checkPixel( 0, 12, 63, 63, 195); + sc->checkPixel( 75, 75, 195, 63, 63); + sc->checkPixel(145, 145, 63, 63, 195); + } + + SurfaceComposerClient::openGlobalTransaction(); + ASSERT_EQ(NO_ERROR, mFGSurfaceControl->setPosition(128, 128)); + SurfaceComposerClient::closeGlobalTransaction(true); + { + // This should reflect the new position, but not the new color. + SCOPED_TRACE("after move, before redraw"); + ScreenCapture::captureScreen(&sc); + sc->checkPixel( 24, 24, 63, 63, 195); + sc->checkPixel( 75, 75, 63, 63, 195); + sc->checkPixel(145, 145, 195, 63, 63); + } + + fillSurfaceRGBA8(mFGSurfaceControl, 63, 195, 63); + waitForPostedBuffers(); + { + // This should reflect the new position and the new color. + SCOPED_TRACE("after redraw"); + ScreenCapture::captureScreen(&sc); + sc->checkPixel( 24, 24, 63, 63, 195); + sc->checkPixel( 75, 75, 63, 63, 195); + sc->checkPixel(145, 145, 63, 195, 63); + } +} + +TEST_F(LayerUpdateTest, LayerResizeWorks) { + sp<ScreenCapture> sc; + { + SCOPED_TRACE("before resize"); + ScreenCapture::captureScreen(&sc); + sc->checkPixel( 0, 12, 63, 63, 195); + sc->checkPixel( 75, 75, 195, 63, 63); + sc->checkPixel(145, 145, 63, 63, 195); + } + + LOGD("resizing"); + SurfaceComposerClient::openGlobalTransaction(); + ASSERT_EQ(NO_ERROR, mFGSurfaceControl->setSize(128, 128)); + SurfaceComposerClient::closeGlobalTransaction(true); + LOGD("resized"); + { + // This should not reflect the new size or color because SurfaceFlinger + // has not yet received a buffer of the correct size. + SCOPED_TRACE("after resize, before redraw"); + ScreenCapture::captureScreen(&sc); + sc->checkPixel( 0, 12, 63, 63, 195); + sc->checkPixel( 75, 75, 195, 63, 63); + sc->checkPixel(145, 145, 63, 63, 195); + } + + LOGD("drawing"); + fillSurfaceRGBA8(mFGSurfaceControl, 63, 195, 63); + waitForPostedBuffers(); + LOGD("drawn"); + { + // This should reflect the new size and the new color. + SCOPED_TRACE("after redraw"); + ScreenCapture::captureScreen(&sc); + sc->checkPixel( 24, 24, 63, 63, 195); + sc->checkPixel( 75, 75, 63, 195, 63); + sc->checkPixel(145, 145, 63, 195, 63); + } +} + +} diff --git a/telephony/java/com/android/internal/telephony/IccProvider.java b/telephony/java/com/android/internal/telephony/IccProvider.java index 3471ec2..a66e19d 100644 --- a/telephony/java/com/android/internal/telephony/IccProvider.java +++ b/telephony/java/com/android/internal/telephony/IccProvider.java @@ -19,166 +19,20 @@ package com.android.internal.telephony; import android.content.ContentProvider; import android.content.UriMatcher; import android.content.ContentValues; -import android.database.AbstractCursor; import android.database.Cursor; -import android.database.CursorWindow; +import android.database.MatrixCursor; import android.net.Uri; -import android.os.SystemProperties; import android.os.RemoteException; import android.os.ServiceManager; import android.text.TextUtils; import android.util.Log; -import java.util.ArrayList; import java.util.List; import com.android.internal.telephony.IccConstants; import com.android.internal.telephony.AdnRecord; import com.android.internal.telephony.IIccPhoneBook; -/** - * XXX old code -- should be replaced with MatrixCursor. - * @deprecated This is has been replaced by MatrixCursor. -*/ -class ArrayListCursor extends AbstractCursor { - private String[] mColumnNames; - private ArrayList<Object>[] mRows; - - @SuppressWarnings({"unchecked"}) - public ArrayListCursor(String[] columnNames, ArrayList<ArrayList> rows) { - int colCount = columnNames.length; - boolean foundID = false; - // Add an _id column if not in columnNames - for (int i = 0; i < colCount; ++i) { - if (columnNames[i].compareToIgnoreCase("_id") == 0) { - mColumnNames = columnNames; - foundID = true; - break; - } - } - - if (!foundID) { - mColumnNames = new String[colCount + 1]; - System.arraycopy(columnNames, 0, mColumnNames, 0, columnNames.length); - mColumnNames[colCount] = "_id"; - } - - int rowCount = rows.size(); - mRows = new ArrayList[rowCount]; - - for (int i = 0; i < rowCount; ++i) { - mRows[i] = rows.get(i); - if (!foundID) { - mRows[i].add(i); - } - } - } - - @Override - public void fillWindow(int position, CursorWindow window) { - if (position < 0 || position > getCount()) { - return; - } - - window.acquireReference(); - try { - int oldpos = mPos; - mPos = position - 1; - window.clear(); - window.setStartPosition(position); - int columnNum = getColumnCount(); - window.setNumColumns(columnNum); - while (moveToNext() && window.allocRow()) { - for (int i = 0; i < columnNum; i++) { - final Object data = mRows[mPos].get(i); - if (data != null) { - if (data instanceof byte[]) { - byte[] field = (byte[]) data; - if (!window.putBlob(field, mPos, i)) { - window.freeLastRow(); - break; - } - } else { - String field = data.toString(); - if (!window.putString(field, mPos, i)) { - window.freeLastRow(); - break; - } - } - } else { - if (!window.putNull(mPos, i)) { - window.freeLastRow(); - break; - } - } - } - } - - mPos = oldpos; - } catch (IllegalStateException e){ - // simply ignore it - } finally { - window.releaseReference(); - } - } - - @Override - public int getCount() { - return mRows.length; - } - - @Override - public String[] getColumnNames() { - return mColumnNames; - } - - @Override - public byte[] getBlob(int columnIndex) { - return (byte[]) mRows[mPos].get(columnIndex); - } - - @Override - public String getString(int columnIndex) { - Object cell = mRows[mPos].get(columnIndex); - return (cell == null) ? null : cell.toString(); - } - - @Override - public short getShort(int columnIndex) { - Number num = (Number) mRows[mPos].get(columnIndex); - return num.shortValue(); - } - - @Override - public int getInt(int columnIndex) { - Number num = (Number) mRows[mPos].get(columnIndex); - return num.intValue(); - } - - @Override - public long getLong(int columnIndex) { - Number num = (Number) mRows[mPos].get(columnIndex); - return num.longValue(); - } - - @Override - public float getFloat(int columnIndex) { - Number num = (Number) mRows[mPos].get(columnIndex); - return num.floatValue(); - } - - @Override - public double getDouble(int columnIndex) { - Number num = (Number) mRows[mPos].get(columnIndex); - return num.doubleValue(); - } - - @Override - public boolean isNull(int columnIndex) { - return mRows[mPos].get(columnIndex) == null; - } -} - /** * {@hide} @@ -191,7 +45,8 @@ public class IccProvider extends ContentProvider { private static final String[] ADDRESS_BOOK_COLUMN_NAMES = new String[] { "name", "number", - "emails" + "emails", + "_id" }; private static final int ADN = 1; @@ -213,70 +68,27 @@ public class IccProvider extends ContentProvider { } - private boolean mSimulator; - @Override public boolean onCreate() { - String device = SystemProperties.get("ro.product.device"); - if (!TextUtils.isEmpty(device)) { - mSimulator = false; - } else { - // simulator - mSimulator = true; - } - return true; } @Override public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs, String sort) { - ArrayList<ArrayList> results; - - if (!mSimulator) { - switch (URL_MATCHER.match(url)) { - case ADN: - results = loadFromEf(IccConstants.EF_ADN); - break; + switch (URL_MATCHER.match(url)) { + case ADN: + return loadFromEf(IccConstants.EF_ADN); - case FDN: - results = loadFromEf(IccConstants.EF_FDN); - break; + case FDN: + return loadFromEf(IccConstants.EF_FDN); - case SDN: - results = loadFromEf(IccConstants.EF_SDN); - break; + case SDN: + return loadFromEf(IccConstants.EF_SDN); - default: - throw new IllegalArgumentException("Unknown URL " + url); - } - } else { - // Fake up some data for the simulator - results = new ArrayList<ArrayList>(4); - ArrayList<String> contact; - - contact = new ArrayList<String>(); - contact.add("Ron Stevens/H"); - contact.add("512-555-5038"); - results.add(contact); - - contact = new ArrayList<String>(); - contact.add("Ron Stevens/M"); - contact.add("512-555-8305"); - results.add(contact); - - contact = new ArrayList<String>(); - contact.add("Melissa Owens"); - contact.add("512-555-8305"); - results.add(contact); - - contact = new ArrayList<String>(); - contact.add("Directory Assistence"); - contact.add("411"); - results.add(contact); + default: + throw new IllegalArgumentException("Unknown URL " + url); } - - return new ArrayListCursor(ADDRESS_BOOK_COLUMN_NAMES, results); } @Override @@ -473,12 +285,10 @@ public class IccProvider extends ContentProvider { return 1; } - private ArrayList<ArrayList> loadFromEf(int efType) { - ArrayList<ArrayList> results = new ArrayList<ArrayList>(); - List<AdnRecord> adnRecords = null; - + private MatrixCursor loadFromEf(int efType) { if (DBG) log("loadFromEf: efType=" + efType); + List<AdnRecord> adnRecords = null; try { IIccPhoneBook iccIpb = IIccPhoneBook.Stub.asInterface( ServiceManager.getService("simphonebook")); @@ -490,21 +300,21 @@ public class IccProvider extends ContentProvider { } catch (SecurityException ex) { if (DBG) log(ex.toString()); } + if (adnRecords != null) { // Load the results - - int N = adnRecords.size(); + final int N = adnRecords.size(); + final MatrixCursor cursor = new MatrixCursor(ADDRESS_BOOK_COLUMN_NAMES, N); if (DBG) log("adnRecords.size=" + N); for (int i = 0; i < N ; i++) { - loadRecord(adnRecords.get(i), results); + loadRecord(adnRecords.get(i), cursor, i); } + return cursor; } else { // No results to load Log.w(TAG, "Cannot load ADN records"); - results.clear(); + return new MatrixCursor(ADDRESS_BOOK_COLUMN_NAMES); } - if (DBG) log("loadFromEf: return results"); - return results; } private boolean @@ -584,35 +394,33 @@ public class IccProvider extends ContentProvider { } /** - * Loads an AdnRecord into an ArrayList. Must be called with mLock held. + * Loads an AdnRecord into a MatrixCursor. Must be called with mLock held. * * @param record the ADN record to load from - * @param results the array list to put the results in + * @param cursor the cursor to receive the results */ - private void loadRecord(AdnRecord record, - ArrayList<ArrayList> results) { + private void loadRecord(AdnRecord record, MatrixCursor cursor, int id) { if (!record.isEmpty()) { - ArrayList<String> contact = new ArrayList<String>(); + Object[] contact = new Object[4]; String alphaTag = record.getAlphaTag(); String number = record.getNumber(); - String[] emails = record.getEmails(); if (DBG) log("loadRecord: " + alphaTag + ", " + number + ","); - contact.add(alphaTag); - contact.add(number); - StringBuilder emailString = new StringBuilder(); + contact[0] = alphaTag; + contact[1] = number; + String[] emails = record.getEmails(); if (emails != null) { + StringBuilder emailString = new StringBuilder(); for (String email: emails) { if (DBG) log("Adding email:" + email); emailString.append(email); emailString.append(","); } - contact.add(emailString.toString()); - } else { - contact.add(null); + contact[2] = emailString.toString(); } - results.add(contact); + contact[3] = id; + cursor.addRow(contact); } } diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java index 57aae56..3486190 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java @@ -520,16 +520,6 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { return false; } - /** - * Returns OTASP_NOT_NEEDED as its not needed for LTE - */ - @Override - int getOtasp() { - int provisioningState = OTASP_NOT_NEEDED; - if (DBG) log("getOtasp: state=" + provisioningState); - return provisioningState; - } - @Override protected void log(String s) { Log.d(LOG_TAG, "[CdmaLteSST] " + s); diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index e166401..aa475e5 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -1025,10 +1025,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { * Handles changes to the APN database. */ private void onApnChanged() { - // TODO: How to handle when multiple APNs are active? - - ApnContext defaultApnContext = mApnContexts.get(Phone.APN_TYPE_DEFAULT); - boolean defaultApnIsDisconnected = defaultApnContext.isDisconnected(); + State overallState = getOverallState(); + boolean isDisconnected = (overallState == State.IDLE || overallState == State.FAILED); if (mPhone instanceof GSMPhone) { // The "current" may no longer be valid. MMS depends on this to send properly. TBD @@ -1039,8 +1037,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { // match the current operator. if (DBG) log("onApnChanged: createAllApnList and cleanUpAllConnections"); createAllApnList(); - cleanUpAllConnections(!defaultApnIsDisconnected, Phone.REASON_APN_CHANGED); - if (defaultApnIsDisconnected) { + cleanUpAllConnections(!isDisconnected, Phone.REASON_APN_CHANGED); + if (isDisconnected) { setupDataOnReadyApns(Phone.REASON_APN_CHANGED); } } diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GLTextureViewActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/GLTextureViewActivity.java index 3232eed..414ae0d 100644 --- a/tests/HwAccelerationTest/src/com/android/test/hwui/GLTextureViewActivity.java +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/GLTextureViewActivity.java @@ -22,9 +22,11 @@ import android.app.Activity; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Matrix; import android.graphics.SurfaceTexture; import android.opengl.GLUtils; import android.os.Bundle; +import android.os.Environment; import android.util.Log; import android.view.Gravity; import android.view.TextureView; @@ -39,6 +41,7 @@ import javax.microedition.khronos.egl.EGLDisplay; import javax.microedition.khronos.egl.EGLSurface; import javax.microedition.khronos.opengles.GL; import java.io.BufferedOutputStream; +import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -65,7 +68,8 @@ public class GLTextureViewActivity extends Activity implements TextureView.Surfa Bitmap b = mTextureView.getBitmap(800, 800); BufferedOutputStream out = null; try { - out = new BufferedOutputStream(new FileOutputStream("/sdcard/out.png")); + File dump = new File(Environment.getExternalStorageDirectory(), "out.png"); + out = new BufferedOutputStream(new FileOutputStream(dump)); b.compress(Bitmap.CompressFormat.PNG, 100, out); } catch (FileNotFoundException e) { e.printStackTrace(); @@ -168,10 +172,10 @@ public class GLTextureViewActivity extends Activity implements TextureView.Surfa private static final int TRIANGLE_VERTICES_DATA_UV_OFFSET = 3; private final float[] mTriangleVerticesData = { // X, Y, Z, U, V - -1.0f, -1.0f, 0, 0.f, 0.f, - 1.0f, -1.0f, 0, 1.f, 0.f, - -1.0f, 1.0f, 0, 0.f, 1.f, - 1.0f, 1.0f, 0, 1.f, 1.f, + -1.0f, -1.0f, 0.0f, 0.0f, 0.0f, + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, }; @Override @@ -212,8 +216,6 @@ public class GLTextureViewActivity extends Activity implements TextureView.Surfa while (!mFinished) { checkCurrent(); - Log.d(LOG_TAG, "Rendering frame"); - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); checkGlError(); @@ -237,7 +239,7 @@ public class GLTextureViewActivity extends Activity implements TextureView.Surfa checkEglError(); try { - Thread.sleep(20); + Thread.sleep(2000); } catch (InterruptedException e) { // Ignore } diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java index fcb57d9..0f4c668 100644 --- a/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java @@ -17,16 +17,23 @@ package com.android.test.hwui; import android.app.Activity; +import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.SurfaceTexture; import android.hardware.Camera; import android.os.Bundle; +import android.os.Environment; import android.view.Gravity; +import android.view.Surface; import android.view.TextureView; import android.view.View; import android.widget.Button; import android.widget.FrameLayout; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; @SuppressWarnings({"UnusedDeclaration"}) @@ -44,6 +51,26 @@ public class TextureViewActivity extends Activity implements TextureView.Surface mTextureView = new TextureView(this); mTextureView.setSurfaceTextureListener(this); + mTextureView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Bitmap b = mTextureView.getBitmap(800, 800); + BufferedOutputStream out = null; + try { + File dump = new File(Environment.getExternalStorageDirectory(), "out.png"); + out = new BufferedOutputStream(new FileOutputStream(dump)); + b.compress(Bitmap.CompressFormat.PNG, 100, out); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } finally { + if (out != null) try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + }); Button button = new Button(this); button.setText("Remove/Add"); @@ -73,6 +100,8 @@ public class TextureViewActivity extends Activity implements TextureView.Surface @Override public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { mCamera = Camera.open(); + mCamera.setDisplayOrientation(getCameraOrientation()); + Camera.Size previewSize = mCamera.getParameters().getPreviewSize(); mTextureView.setLayoutParams(new FrameLayout.LayoutParams( previewSize.width, previewSize.height, Gravity.CENTER)); @@ -86,6 +115,34 @@ public class TextureViewActivity extends Activity implements TextureView.Surface mCamera.startPreview(); } + private int getCameraOrientation() { + Camera.CameraInfo info = new Camera.CameraInfo(); + for (int i = 0; i < Camera.getNumberOfCameras(); i++) { + Camera.getCameraInfo(i, info); + if (info.facing == Camera.CameraInfo.CAMERA_FACING_BACK) break; + } + + int rotation = getWindowManager().getDefaultDisplay().getRotation(); + int degrees = 0; + + switch (rotation) { + case Surface.ROTATION_0: + degrees = 0; + break; + case Surface.ROTATION_90: + degrees = 90; + break; + case Surface.ROTATION_180: + degrees = 180; + break; + case Surface.ROTATION_270: + degrees = 270; + break; + } + + return (info.orientation - degrees + 360) % 360; + } + @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { // Ignored, the Camera does all the work for us diff --git a/tests/RenderScriptTests/ComputePerf/Android.mk b/tests/RenderScriptTests/ComputePerf/Android.mk new file mode 100644 index 0000000..1d67d29 --- /dev/null +++ b/tests/RenderScriptTests/ComputePerf/Android.mk @@ -0,0 +1,27 @@ +# +# Copyright (C) 2011 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. +# + +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(call all-java-files-under, src) \ + $(call all-renderscript-files-under, src) + +LOCAL_PACKAGE_NAME := RsComputePerf + +include $(BUILD_PACKAGE) diff --git a/tests/RenderScriptTests/ComputePerf/AndroidManifest.xml b/tests/RenderScriptTests/ComputePerf/AndroidManifest.xml new file mode 100644 index 0000000..a9193b5 --- /dev/null +++ b/tests/RenderScriptTests/ComputePerf/AndroidManifest.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 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. +--> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.example.android.rs.computeperf"> + + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-sdk android:minSdkVersion="14" /> + <application android:label="Compute Perf"> + <activity android:name="ComputePerf"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> +</manifest> diff --git a/tests/RenderScriptTests/ComputePerf/res/layout/main.xml b/tests/RenderScriptTests/ComputePerf/res/layout/main.xml new file mode 100644 index 0000000..61cd24d --- /dev/null +++ b/tests/RenderScriptTests/ComputePerf/res/layout/main.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 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. +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <ImageView + android:id="@+id/displayin" + android:layout_width="320dip" + android:layout_height="266dip" /> + + <ImageView + android:id="@+id/displayout" + android:layout_width="320dip" + android:layout_height="266dip" /> + +</LinearLayout> diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java new file mode 100644 index 0000000..f7abe8b --- /dev/null +++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2011 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.example.android.rs.computeperf; + +import android.app.Activity; +import android.os.Bundle; +import android.graphics.BitmapFactory; +import android.graphics.Bitmap; +import android.renderscript.RenderScript; +import android.renderscript.Allocation; +import android.widget.ImageView; + +public class ComputePerf extends Activity { + + private LaunchTest mLT; + private Mandelbrot mMandel; + private RenderScript mRS; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + mRS = RenderScript.create(this); + mLT = new LaunchTest(mRS, getResources()); + mLT.run(); + mLT.run(); + + mMandel = new Mandelbrot(mRS, getResources()); + mMandel.run(); + + } + +} diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java new file mode 100644 index 0000000..0c29ce1 --- /dev/null +++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2011 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.example.android.rs.computeperf; + +import android.content.res.Resources; +import android.renderscript.*; + +public class LaunchTest implements Runnable { + private RenderScript mRS; + private Allocation mAllocationX; + private Allocation mAllocationXY; + private ScriptC_launchtestxlw mScript_xlw; + private ScriptC_launchtestxyw mScript_xyw; + + LaunchTest(RenderScript rs, Resources res) { + mRS = rs; + mScript_xlw = new ScriptC_launchtestxlw(mRS, res, R.raw.launchtestxlw); + mScript_xyw = new ScriptC_launchtestxyw(mRS, res, R.raw.launchtestxyw); + final int dim = mScript_xlw.get_dim(); + + mAllocationX = Allocation.createSized(rs, Element.U8(rs), dim); + Type.Builder tb = new Type.Builder(rs, Element.U8(rs)); + tb.setX(dim); + tb.setY(dim); + mAllocationXY = Allocation.createTyped(rs, tb.create()); + mScript_xlw.bind_buf(mAllocationXY); + } + + public void run() { + long t = java.lang.System.currentTimeMillis(); + mScript_xlw.forEach_root(mAllocationX); + mRS.finish(); + t = java.lang.System.currentTimeMillis() - t; + android.util.Log.v("ComputePerf", "xlw launch test ms " + t); + + t = java.lang.System.currentTimeMillis(); + mScript_xyw.forEach_root(mAllocationXY); + mRS.finish(); + t = java.lang.System.currentTimeMillis() - t; + android.util.Log.v("ComputePerf", "xyw launch test ms " + t); + } + +} diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java new file mode 100644 index 0000000..ea1cd62 --- /dev/null +++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2011 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.example.android.rs.computeperf; + +import android.content.res.Resources; +import android.renderscript.*; + +public class Mandelbrot implements Runnable { + private RenderScript mRS; + private Allocation mAllocationXY; + private ScriptC_mandelbrot mScript; + + Mandelbrot(RenderScript rs, Resources res) { + mRS = rs; + mScript = new ScriptC_mandelbrot(mRS, res, R.raw.mandelbrot); + + Type.Builder tb = new Type.Builder(rs, Element.U8_4(rs)); + tb.setX(mScript.get_gDimX()); + tb.setY(mScript.get_gDimY()); + mAllocationXY = Allocation.createTyped(rs, tb.create()); + } + + public void run() { + long t = java.lang.System.currentTimeMillis(); + mScript.forEach_root(mAllocationXY); + mRS.finish(); + t = java.lang.System.currentTimeMillis() - t; + android.util.Log.v("ComputePerf", "mandelbrot ms " + t); + } + +} diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/launchtestxlw.rs b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/launchtestxlw.rs new file mode 100644 index 0000000..7b81dfe --- /dev/null +++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/launchtestxlw.rs @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2011 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. + */ + +#pragma version(1) +#pragma rs java_package_name(com.example.android.rs.computeperf) + +const int dim = 2048; +uint8_t *buf; + +void root(uchar *v_out, uint32_t x) { + uint8_t *p = buf; + p += x * dim; + for (int i=0; i<dim; i++) { + p[i] = 1; + } +} + diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/launchtestxyw.rs b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/launchtestxyw.rs new file mode 100644 index 0000000..7f7aa95 --- /dev/null +++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/launchtestxyw.rs @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2011 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. + */ + +#pragma version(1) +#pragma rs java_package_name(com.example.android.rs.computeperf) + +void root(uchar *v_out, uint32_t x, uint32_t y) { + *v_out = 0; +} + diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs new file mode 100644 index 0000000..a7987b3 --- /dev/null +++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs @@ -0,0 +1,42 @@ +// Copyright (C) 2011 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. + +#pragma version(1) +#pragma rs java_package_name(com.example.android.rs.computeperf) + +const int gMaxIteration = 500; +const int gDimX = 1024; +const int gDimY = 1024; + +void root(uchar4 *v_out, uint32_t x, uint32_t y) { + float2 p; + p.x = -2.5f + ((float)x / gDimX) * 3.5f; + p.y = -1.f + ((float)y / gDimY) * 2.f; + + float2 t = 0; + int iteration = 0; + while((t.x*t.x + t.y*t.y < 4.f) && (iteration < gMaxIteration)) { + float2 t2 = t * t; + float xtemp = t2.x - t2.y + p.x; + t.y = 2 * t.x * t.y + p.y; + t.x = xtemp; + iteration++; + } + + if(iteration >= gMaxIteration) { + *v_out = 0; + } else { + *v_out = (uchar4){iteration & 0xff, (iteration >> 6) & 0xff, 0x8f, 0xff}; + } +} diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbosync.rs b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbosync.rs index b77ccb4..42b1cf1 100644 --- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbosync.rs +++ b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbosync.rs @@ -105,8 +105,8 @@ void updateMeshInfo() { rsgMeshComputeBoundingBox(info->mMesh, &minX, &minY, &minZ, &maxX, &maxY, &maxZ); - info->bBoxMin = (minX, minY, minZ); - info->bBoxMax = (maxX, maxY, maxZ); + info->bBoxMin = (float3){minX, minY, minZ}; + info->bBoxMax = (float3){maxX, maxY, maxZ}; gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f; } gLookAt = gLookAt / (float)size; diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbotest.rs b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbotest.rs index d44fd2b..05ef3ac 100644 --- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbotest.rs +++ b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbotest.rs @@ -104,8 +104,8 @@ void updateMeshInfo() { rsgMeshComputeBoundingBox(info->mMesh, &minX, &minY, &minZ, &maxX, &maxY, &maxZ); - info->bBoxMin = (minX, minY, minZ); - info->bBoxMax = (maxX, maxY, maxZ); + info->bBoxMin = (float3){minX, minY, minZ}; + info->bBoxMax = (float3){maxX, maxY, maxZ}; gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f; } gLookAt = gLookAt / (float)size; diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java index c038478..4466e59 100644 --- a/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java @@ -64,6 +64,9 @@ public class RSTestCore { unitTests = new ArrayList<UnitTest>(); + unitTests.add(new UT_sampler(this, mRes, mCtx)); + unitTests.add(new UT_program_store(this, mRes, mCtx)); + unitTests.add(new UT_program_raster(this, mRes, mCtx)); unitTests.add(new UT_primitives(this, mRes, mCtx)); unitTests.add(new UT_vector(this, mRes, mCtx)); unitTests.add(new UT_rsdebug(this, mRes, mCtx)); diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_program_raster.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_program_raster.java new file mode 100644 index 0000000..1fbf97a --- /dev/null +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_program_raster.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2011 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.rs.test; + +import android.content.Context; +import android.content.res.Resources; +import android.renderscript.*; +import android.renderscript.ProgramRaster; +import android.renderscript.ProgramRaster.CullMode; + +public class UT_program_raster extends UnitTest { + private Resources mRes; + + protected UT_program_raster(RSTestCore rstc, Resources res, Context ctx) { + super(rstc, "ProgramRaster", ctx); + mRes = res; + } + + private ProgramRaster.Builder getDefaultBuilder(RenderScript RS) { + ProgramRaster.Builder b = new ProgramRaster.Builder(RS); + b.setCullMode(CullMode.BACK); + b.setPointSpriteEnabled(false); + return b; + } + + private void initializeGlobals(RenderScript RS, ScriptC_program_raster s) { + ProgramRaster.Builder b = getDefaultBuilder(RS); + s.set_pointSpriteEnabled(b.setPointSpriteEnabled(true).create()); + b = getDefaultBuilder(RS); + s.set_cullMode(b.setCullMode(CullMode.FRONT).create()); + return; + } + + public void run() { + RenderScript pRS = RenderScript.create(mCtx); + ScriptC_program_raster s = new ScriptC_program_raster(pRS, mRes, R.raw.program_raster); + pRS.setMessageHandler(mRsMessage); + initializeGlobals(pRS, s); + s.invoke_program_raster_test(); + pRS.finish(); + waitForMessage(); + pRS.destroy(); + } +} diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_program_store.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_program_store.java new file mode 100644 index 0000000..e06112c --- /dev/null +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_program_store.java @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2011 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.rs.test; + +import android.content.Context; +import android.content.res.Resources; +import android.renderscript.*; +import android.renderscript.ProgramStore.BlendDstFunc; +import android.renderscript.ProgramStore.BlendSrcFunc; +import android.renderscript.ProgramStore.Builder; +import android.renderscript.ProgramStore.DepthFunc; + +public class UT_program_store extends UnitTest { + private Resources mRes; + + protected UT_program_store(RSTestCore rstc, Resources res, Context ctx) { + super(rstc, "ProgramStore", ctx); + mRes = res; + } + + private ProgramStore.Builder getDefaultBuilder(RenderScript RS) { + ProgramStore.Builder b = new ProgramStore.Builder(RS); + b.setBlendFunc(ProgramStore.BlendSrcFunc.ZERO, ProgramStore.BlendDstFunc.ZERO); + b.setColorMaskEnabled(false, false, false, false); + b.setDepthFunc(ProgramStore.DepthFunc.ALWAYS); + b.setDepthMaskEnabled(false); + b.setDitherEnabled(false); + return b; + } + + private void initializeGlobals(RenderScript RS, ScriptC_program_store s) { + ProgramStore.Builder b = getDefaultBuilder(RS); + s.set_ditherEnable(b.setDitherEnabled(true).create()); + + b = getDefaultBuilder(RS); + s.set_colorRWriteEnable(b.setColorMaskEnabled(true, false, false, false).create()); + + b = getDefaultBuilder(RS); + s.set_colorGWriteEnable(b.setColorMaskEnabled(false, true, false, false).create()); + + b = getDefaultBuilder(RS); + s.set_colorBWriteEnable(b.setColorMaskEnabled(false, false, true, false).create()); + + b = getDefaultBuilder(RS); + s.set_colorAWriteEnable(b.setColorMaskEnabled(false, false, false, true).create()); + + b = getDefaultBuilder(RS); + s.set_blendSrc(b.setBlendFunc(ProgramStore.BlendSrcFunc.DST_COLOR, + ProgramStore.BlendDstFunc.ZERO).create()); + + b = getDefaultBuilder(RS); + s.set_blendDst(b.setBlendFunc(ProgramStore.BlendSrcFunc.ZERO, + ProgramStore.BlendDstFunc.DST_ALPHA).create()); + + b = getDefaultBuilder(RS); + s.set_depthWriteEnable(b.setDepthMaskEnabled(true).create()); + + b = getDefaultBuilder(RS); + s.set_depthFunc(b.setDepthFunc(ProgramStore.DepthFunc.GREATER).create()); + return; + } + + public void run() { + RenderScript pRS = RenderScript.create(mCtx); + ScriptC_program_store s = new ScriptC_program_store(pRS, mRes, R.raw.program_store); + pRS.setMessageHandler(mRsMessage); + initializeGlobals(pRS, s); + s.invoke_program_store_test(); + pRS.finish(); + waitForMessage(); + pRS.destroy(); + } +} diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_sampler.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_sampler.java new file mode 100644 index 0000000..b0ccf9d --- /dev/null +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_sampler.java @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2011 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.rs.test; + +import android.content.Context; +import android.content.res.Resources; +import android.renderscript.*; +import android.renderscript.Sampler; +import android.renderscript.Sampler.Value; + +public class UT_sampler extends UnitTest { + private Resources mRes; + + protected UT_sampler(RSTestCore rstc, Resources res, Context ctx) { + super(rstc, "Sampler", ctx); + mRes = res; + } + + private Sampler.Builder getDefaultBuilder(RenderScript RS) { + Sampler.Builder b = new Sampler.Builder(RS); + b.setMinification(Value.NEAREST); + b.setMagnification(Value.NEAREST); + b.setWrapS(Value.CLAMP); + b.setWrapT(Value.CLAMP); + b.setAnisotropy(1.0f); + return b; + } + + private void initializeGlobals(RenderScript RS, ScriptC_sampler s) { + Sampler.Builder b = getDefaultBuilder(RS); + b.setMinification(Value.LINEAR_MIP_LINEAR); + s.set_minification(b.create()); + + b = getDefaultBuilder(RS); + b.setMagnification(Value.LINEAR); + s.set_magnification(b.create()); + + b = getDefaultBuilder(RS); + b.setWrapS(Value.WRAP); + s.set_wrapS(b.create()); + + b = getDefaultBuilder(RS); + b.setWrapT(Value.WRAP); + s.set_wrapT(b.create()); + + b = getDefaultBuilder(RS); + b.setAnisotropy(8.0f); + s.set_anisotropy(b.create()); + return; + } + + public void run() { + RenderScript pRS = RenderScript.create(mCtx); + ScriptC_sampler s = new ScriptC_sampler(pRS, mRes, R.raw.sampler); + pRS.setMessageHandler(mRsMessage); + initializeGlobals(pRS, s); + s.invoke_sampler_test(); + pRS.finish(); + waitForMessage(); + pRS.destroy(); + } +} diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/program_raster.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/program_raster.rs new file mode 100644 index 0000000..11b8c30 --- /dev/null +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/program_raster.rs @@ -0,0 +1,37 @@ +#include "shared.rsh" +#include "rs_graphics.rsh" + +rs_program_raster pointSpriteEnabled; +rs_program_raster cullMode; + +static bool test_program_raster_getters() { + bool failed = false; + + _RS_ASSERT(rsgProgramRasterGetPointSpriteEnabled(pointSpriteEnabled) == true); + _RS_ASSERT(rsgProgramRasterGetCullMode(pointSpriteEnabled) == RS_CULL_BACK); + + _RS_ASSERT(rsgProgramRasterGetPointSpriteEnabled(cullMode) == false); + _RS_ASSERT(rsgProgramRasterGetCullMode(cullMode) == RS_CULL_FRONT); + + if (failed) { + rsDebug("test_program_raster_getters FAILED", 0); + } + else { + rsDebug("test_program_raster_getters PASSED", 0); + } + + return failed; +} + +void program_raster_test() { + bool failed = false; + failed |= test_program_raster_getters(); + + if (failed) { + rsSendToClientBlocking(RS_MSG_TEST_FAILED); + } + else { + rsSendToClientBlocking(RS_MSG_TEST_PASSED); + } +} + diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/program_store.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/program_store.rs new file mode 100644 index 0000000..3cd8a20 --- /dev/null +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/program_store.rs @@ -0,0 +1,128 @@ +#include "shared.rsh" +#include "rs_graphics.rsh" + +rs_program_store ditherEnable; +rs_program_store colorRWriteEnable; +rs_program_store colorGWriteEnable; +rs_program_store colorBWriteEnable; +rs_program_store colorAWriteEnable; +rs_program_store blendSrc; +rs_program_store blendDst; +rs_program_store depthWriteEnable; +rs_program_store depthFunc; + +static bool test_program_store_getters() { + bool failed = false; + + _RS_ASSERT(rsgProgramStoreGetDepthFunc(depthFunc) == RS_DEPTH_FUNC_GREATER); + _RS_ASSERT(rsgProgramStoreGetDepthMask(depthFunc) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskR(depthFunc) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskG(depthFunc) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskB(depthFunc) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskA(depthFunc) == false); + _RS_ASSERT(rsgProgramStoreGetDitherEnabled(depthFunc) == false); + _RS_ASSERT(rsgProgramStoreGetBlendSrcFunc(depthFunc) == RS_BLEND_SRC_ZERO); + _RS_ASSERT(rsgProgramStoreGetBlendDstFunc(depthFunc) == RS_BLEND_DST_ZERO); + + _RS_ASSERT(rsgProgramStoreGetDepthFunc(depthWriteEnable) == RS_DEPTH_FUNC_ALWAYS); + _RS_ASSERT(rsgProgramStoreGetDepthMask(depthWriteEnable) == true); + _RS_ASSERT(rsgProgramStoreGetColorMaskR(depthWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskG(depthWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskB(depthWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskA(depthWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetDitherEnabled(depthWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetBlendSrcFunc(depthWriteEnable) == RS_BLEND_SRC_ZERO); + _RS_ASSERT(rsgProgramStoreGetBlendDstFunc(depthWriteEnable) == RS_BLEND_DST_ZERO); + + _RS_ASSERT(rsgProgramStoreGetDepthFunc(colorRWriteEnable) == RS_DEPTH_FUNC_ALWAYS); + _RS_ASSERT(rsgProgramStoreGetDepthMask(colorRWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskR(colorRWriteEnable) == true); + _RS_ASSERT(rsgProgramStoreGetColorMaskG(colorRWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskB(colorRWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskA(colorRWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetDitherEnabled(colorRWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetBlendSrcFunc(colorRWriteEnable) == RS_BLEND_SRC_ZERO); + _RS_ASSERT(rsgProgramStoreGetBlendDstFunc(colorRWriteEnable) == RS_BLEND_DST_ZERO); + + _RS_ASSERT(rsgProgramStoreGetDepthFunc(colorGWriteEnable) == RS_DEPTH_FUNC_ALWAYS); + _RS_ASSERT(rsgProgramStoreGetDepthMask(colorGWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskR(colorGWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskG(colorGWriteEnable) == true); + _RS_ASSERT(rsgProgramStoreGetColorMaskB(colorGWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskA(colorGWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetDitherEnabled(colorGWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetBlendSrcFunc(colorGWriteEnable) == RS_BLEND_SRC_ZERO); + _RS_ASSERT(rsgProgramStoreGetBlendDstFunc(colorGWriteEnable) == RS_BLEND_DST_ZERO); + + _RS_ASSERT(rsgProgramStoreGetDepthFunc(colorBWriteEnable) == RS_DEPTH_FUNC_ALWAYS); + _RS_ASSERT(rsgProgramStoreGetDepthMask(colorBWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskR(colorBWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskG(colorBWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskB(colorBWriteEnable) == true); + _RS_ASSERT(rsgProgramStoreGetColorMaskA(colorBWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetDitherEnabled(colorBWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetBlendSrcFunc(colorBWriteEnable) == RS_BLEND_SRC_ZERO); + _RS_ASSERT(rsgProgramStoreGetBlendDstFunc(colorBWriteEnable) == RS_BLEND_DST_ZERO); + + _RS_ASSERT(rsgProgramStoreGetDepthFunc(colorAWriteEnable) == RS_DEPTH_FUNC_ALWAYS); + _RS_ASSERT(rsgProgramStoreGetDepthMask(colorAWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskR(colorAWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskG(colorAWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskB(colorAWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskA(colorAWriteEnable) == true); + _RS_ASSERT(rsgProgramStoreGetDitherEnabled(colorAWriteEnable) == false); + _RS_ASSERT(rsgProgramStoreGetBlendSrcFunc(colorAWriteEnable) == RS_BLEND_SRC_ZERO); + _RS_ASSERT(rsgProgramStoreGetBlendDstFunc(colorAWriteEnable) == RS_BLEND_DST_ZERO); + + _RS_ASSERT(rsgProgramStoreGetDepthFunc(ditherEnable) == RS_DEPTH_FUNC_ALWAYS); + _RS_ASSERT(rsgProgramStoreGetDepthMask(ditherEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskR(ditherEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskG(ditherEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskB(ditherEnable) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskA(ditherEnable) == false); + _RS_ASSERT(rsgProgramStoreGetDitherEnabled(ditherEnable) == true); + _RS_ASSERT(rsgProgramStoreGetBlendSrcFunc(ditherEnable) == RS_BLEND_SRC_ZERO); + _RS_ASSERT(rsgProgramStoreGetBlendDstFunc(ditherEnable) == RS_BLEND_DST_ZERO); + + _RS_ASSERT(rsgProgramStoreGetDepthFunc(blendSrc) == RS_DEPTH_FUNC_ALWAYS); + _RS_ASSERT(rsgProgramStoreGetDepthMask(blendSrc) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskR(blendSrc) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskG(blendSrc) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskB(blendSrc) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskA(blendSrc) == false); + _RS_ASSERT(rsgProgramStoreGetDitherEnabled(blendSrc) == false); + _RS_ASSERT(rsgProgramStoreGetBlendSrcFunc(blendSrc) == RS_BLEND_SRC_DST_COLOR); + _RS_ASSERT(rsgProgramStoreGetBlendDstFunc(blendSrc) == RS_BLEND_DST_ZERO); + + _RS_ASSERT(rsgProgramStoreGetDepthFunc(blendDst) == RS_DEPTH_FUNC_ALWAYS); + _RS_ASSERT(rsgProgramStoreGetDepthMask(blendDst) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskR(blendDst) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskG(blendDst) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskB(blendDst) == false); + _RS_ASSERT(rsgProgramStoreGetColorMaskA(blendDst) == false); + _RS_ASSERT(rsgProgramStoreGetDitherEnabled(blendDst) == false); + _RS_ASSERT(rsgProgramStoreGetBlendSrcFunc(blendDst) == RS_BLEND_SRC_ZERO); + _RS_ASSERT(rsgProgramStoreGetBlendDstFunc(blendDst) == RS_BLEND_DST_DST_ALPHA); + + if (failed) { + rsDebug("test_program_store_getters FAILED", 0); + } + else { + rsDebug("test_program_store_getters PASSED", 0); + } + + return failed; +} + +void program_store_test() { + bool failed = false; + failed |= test_program_store_getters(); + + if (failed) { + rsSendToClientBlocking(RS_MSG_TEST_FAILED); + } + else { + rsSendToClientBlocking(RS_MSG_TEST_PASSED); + } +} + diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/sampler.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/sampler.rs new file mode 100644 index 0000000..ac9a549 --- /dev/null +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/sampler.rs @@ -0,0 +1,63 @@ +#include "shared.rsh" +#include "rs_graphics.rsh" +rs_sampler minification; +rs_sampler magnification; +rs_sampler wrapS; +rs_sampler wrapT; +rs_sampler anisotropy; + +static bool test_sampler_getters() { + bool failed = false; + + _RS_ASSERT(rsgSamplerGetMagnification(minification) == RS_SAMPLER_NEAREST); + _RS_ASSERT(rsgSamplerGetMinification(minification) == RS_SAMPLER_LINEAR_MIP_LINEAR); + _RS_ASSERT(rsgSamplerGetWrapS(minification) == RS_SAMPLER_CLAMP); + _RS_ASSERT(rsgSamplerGetWrapT(minification) == RS_SAMPLER_CLAMP); + _RS_ASSERT(rsgSamplerGetAnisotropy(minification) == 1.0f); + + _RS_ASSERT(rsgSamplerGetMagnification(magnification) == RS_SAMPLER_LINEAR); + _RS_ASSERT(rsgSamplerGetMinification(magnification) == RS_SAMPLER_NEAREST); + _RS_ASSERT(rsgSamplerGetWrapS(magnification) == RS_SAMPLER_CLAMP); + _RS_ASSERT(rsgSamplerGetWrapT(magnification) == RS_SAMPLER_CLAMP); + _RS_ASSERT(rsgSamplerGetAnisotropy(magnification) == 1.0f); + + _RS_ASSERT(rsgSamplerGetMagnification(wrapS) == RS_SAMPLER_NEAREST); + _RS_ASSERT(rsgSamplerGetMinification(wrapS) == RS_SAMPLER_NEAREST); + _RS_ASSERT(rsgSamplerGetWrapS(wrapS) == RS_SAMPLER_WRAP); + _RS_ASSERT(rsgSamplerGetWrapT(wrapS) == RS_SAMPLER_CLAMP); + _RS_ASSERT(rsgSamplerGetAnisotropy(wrapS) == 1.0f); + + _RS_ASSERT(rsgSamplerGetMagnification(wrapT) == RS_SAMPLER_NEAREST); + _RS_ASSERT(rsgSamplerGetMinification(wrapT) == RS_SAMPLER_NEAREST); + _RS_ASSERT(rsgSamplerGetWrapS(wrapT) == RS_SAMPLER_CLAMP); + _RS_ASSERT(rsgSamplerGetWrapT(wrapT) == RS_SAMPLER_WRAP); + _RS_ASSERT(rsgSamplerGetAnisotropy(wrapT) == 1.0f); + + _RS_ASSERT(rsgSamplerGetMagnification(anisotropy) == RS_SAMPLER_NEAREST); + _RS_ASSERT(rsgSamplerGetMinification(anisotropy) == RS_SAMPLER_NEAREST); + _RS_ASSERT(rsgSamplerGetWrapS(anisotropy) == RS_SAMPLER_CLAMP); + _RS_ASSERT(rsgSamplerGetWrapT(anisotropy) == RS_SAMPLER_CLAMP); + _RS_ASSERT(rsgSamplerGetAnisotropy(anisotropy) == 8.0f); + + if (failed) { + rsDebug("test_sampler_getters FAILED", 0); + } + else { + rsDebug("test_sampler_getters PASSED", 0); + } + + return failed; +} + +void sampler_test() { + bool failed = false; + failed |= test_sampler_getters(); + + if (failed) { + rsSendToClientBlocking(RS_MSG_TEST_FAILED); + } + else { + rsSendToClientBlocking(RS_MSG_TEST_PASSED); + } +} + |