Merge "Telephony: Fix NV ready state"
diff --git a/api/current.txt b/api/current.txt
index 3e177ad..180ac91 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -25773,7 +25773,8 @@
method public deprecated void emulateShiftHeld();
method public static deprecated void enablePlatformNotifications();
method public static java.lang.String findAddress(java.lang.String);
- method public int findAll(java.lang.String);
+ method public deprecated int findAll(java.lang.String);
+ method public void findAllAsync(java.lang.String);
method public void findNext(boolean);
method public void flingScroll(int, int);
method public void freeMemory();
@@ -25824,6 +25825,7 @@
method public void saveWebArchive(java.lang.String, boolean, android.webkit.ValueCallback<java.lang.String>);
method public void setCertificate(android.net.http.SslCertificate);
method public void setDownloadListener(android.webkit.DownloadListener);
+ method public void setFindListener(android.webkit.WebView.FindListener);
method public void setHorizontalScrollbarOverlay(boolean);
method public void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
method public void setInitialScale(int);
@@ -25842,6 +25844,10 @@
field public static final java.lang.String SCHEME_TEL = "tel:";
}
+ public static abstract interface WebView.FindListener {
+ method public abstract void onFindResultReceived(int, int, boolean);
+ }
+
public static class WebView.HitTestResult {
method public java.lang.String getExtra();
method public int getType();
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 3e123ba..7207e29 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -2522,7 +2522,19 @@
if (onOptionsItemSelected(item)) {
return true;
}
- return mFragments.dispatchOptionsItemSelected(item);
+ if (mFragments.dispatchOptionsItemSelected(item)) {
+ return true;
+ }
+ if (item.getItemId() == android.R.id.home && mActionBar != null &&
+ (mActionBar.getDisplayOptions() & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
+ if (mParent == null) {
+ onNavigateUp();
+ } else {
+ mParent.onNavigateUpFromChild(this);
+ }
+ return true;
+ }
+ return false;
case Window.FEATURE_CONTEXT_MENU:
EventLog.writeEvent(50000, 1, item.getTitleCondensed());
@@ -2654,15 +2666,6 @@
if (mParent != null) {
return mParent.onOptionsItemSelected(item);
}
- if (item.getItemId() == android.R.id.home && mActionBar != null &&
- (mActionBar.getDisplayOptions() & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
- if (mParent == null) {
- onNavigateUp();
- } else {
- mParent.onNavigateUpFromChild(this);
- }
- return true;
- }
return false;
}
@@ -4865,11 +4868,19 @@
* Obtain an {@link Intent} that will launch an explicit target activity specified by
* this activity's logical parent. The logical parent is named in the application's manifest
* by the {@link android.R.attr#parentActivityName parentActivityName} attribute.
+ * Activity subclasses may override this method to modify the Intent returned by
+ * super.getParentActivityIntent() or to implement a different mechanism of retrieving
+ * the parent intent entirely.
*
- * @return a new Intent targeting the defined parent of this activity
+ * @return a new Intent targeting the defined parent of this activity or null if
+ * there is no valid parent.
*/
public Intent getParentActivityIntent() {
- return new Intent().setClassName(this, mActivityInfo.parentActivityName);
+ final String parentName = mActivityInfo.parentActivityName;
+ if (TextUtils.isEmpty(parentName)) {
+ return null;
+ }
+ return new Intent().setClassName(this, parentName);
}
// ------------------ Internal API ------------------
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 736dd24..18d682d 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -2000,8 +2000,8 @@
* @hide
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
- public static final String ACTION_USB_ANLG_HEADSET_PLUG =
- "android.intent.action.USB_ANLG_HEADSET_PLUG";
+ public static final String ACTION_ANALOG_AUDIO_DOCK_PLUG =
+ "android.intent.action.ANALOG_AUDIO_DOCK_PLUG";
/**
* Broadcast Action: A digital audio speaker/headset plugged in or unplugged.
@@ -2015,8 +2015,8 @@
* @hide
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
- public static final String ACTION_USB_DGTL_HEADSET_PLUG =
- "android.intent.action.USB_DGTL_HEADSET_PLUG";
+ public static final String ACTION_DIGITAL_AUDIO_DOCK_PLUG =
+ "android.intent.action.DIGITAL_AUDIO_DOCK_PLUG";
/**
* Broadcast Action: A HMDI cable was plugged or unplugged
@@ -2034,22 +2034,6 @@
"android.intent.action.HDMI_AUDIO_PLUG";
/**
- * Broadcast Action: A USB audio device was plugged in or unplugged.
- *
- * <p>The intent will have the following extra values:
- * <ul>
- * <li><em>state</em> - 0 for unplugged, 1 for plugged. </li>
- * <li><em>card</em> - ALSA card number (integer) </li>
- * <li><em>device</em> - ALSA device number (integer) </li>
- * </ul>
- * </ul>
- * @hide
- */
- @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
- public static final String ACTION_USB_AUDIO_DEVICE_PLUG =
- "android.intent.action.USB_AUDIO_DEVICE_PLUG";
-
- /**
* Broadcast Action: A USB audio accessory was plugged in or unplugged.
*
* <p>The intent will have the following extra values:
@@ -2066,6 +2050,22 @@
"android.intent.action.USB_AUDIO_ACCESSORY_PLUG";
/**
+ * Broadcast Action: A USB audio device was plugged in or unplugged.
+ *
+ * <p>The intent will have the following extra values:
+ * <ul>
+ * <li><em>state</em> - 0 for unplugged, 1 for plugged. </li>
+ * <li><em>card</em> - ALSA card number (integer) </li>
+ * <li><em>device</em> - ALSA device number (integer) </li>
+ * </ul>
+ * </ul>
+ * @hide
+ */
+ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+ public static final String ACTION_USB_AUDIO_DEVICE_PLUG =
+ "android.intent.action.USB_AUDIO_DEVICE_PLUG";
+
+ /**
* <p>Broadcast Action: The user has switched on advanced settings in the settings app:</p>
* <ul>
* <li><em>state</em> - A boolean value indicating whether the settings is on or off.</li>
diff --git a/core/java/android/net/NetworkQuotaInfo.java b/core/java/android/net/NetworkQuotaInfo.java
index 6535256..1725ed7 100644
--- a/core/java/android/net/NetworkQuotaInfo.java
+++ b/core/java/android/net/NetworkQuotaInfo.java
@@ -57,12 +57,12 @@
return mHardLimitBytes;
}
- /** {@inheritDoc} */
+ @Override
public int describeContents() {
return 0;
}
- /** {@inheritDoc} */
+ @Override
public void writeToParcel(Parcel out, int flags) {
out.writeLong(mEstimatedBytes);
out.writeLong(mSoftLimitBytes);
@@ -70,10 +70,12 @@
}
public static final Creator<NetworkQuotaInfo> CREATOR = new Creator<NetworkQuotaInfo>() {
+ @Override
public NetworkQuotaInfo createFromParcel(Parcel in) {
return new NetworkQuotaInfo(in);
}
+ @Override
public NetworkQuotaInfo[] newArray(int size) {
return new NetworkQuotaInfo[size];
}
diff --git a/core/java/android/net/NetworkState.java b/core/java/android/net/NetworkState.java
index 704111b..2fc69ad 100644
--- a/core/java/android/net/NetworkState.java
+++ b/core/java/android/net/NetworkState.java
@@ -52,12 +52,12 @@
subscriberId = in.readString();
}
- /** {@inheritDoc} */
+ @Override
public int describeContents() {
return 0;
}
- /** {@inheritDoc} */
+ @Override
public void writeToParcel(Parcel out, int flags) {
out.writeParcelable(networkInfo, flags);
out.writeParcelable(linkProperties, flags);
@@ -66,10 +66,12 @@
}
public static final Creator<NetworkState> CREATOR = new Creator<NetworkState>() {
+ @Override
public NetworkState createFromParcel(Parcel in) {
return new NetworkState(in);
}
+ @Override
public NetworkState[] newArray(int size) {
return new NetworkState[size];
}
diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java
index 7a1ef66..844d055 100644
--- a/core/java/android/net/NetworkStats.java
+++ b/core/java/android/net/NetworkStats.java
@@ -155,7 +155,7 @@
operations = parcel.createLongArray();
}
- /** {@inheritDoc} */
+ @Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(elapsedRealtime);
dest.writeInt(size);
@@ -352,10 +352,9 @@
* on matching {@link #uid} and {@link #tag} rows. Ignores {@link #iface},
* since operation counts are at data layer.
*/
- @Deprecated
public void spliceOperationsFrom(NetworkStats stats) {
for (int i = 0; i < size; i++) {
- final int j = stats.findIndex(IFACE_ALL, uid[i], set[i], tag[i]);
+ final int j = stats.findIndex(iface[i], uid[i], set[i], tag[i]);
if (j == -1) {
operations[i] = 0;
} else {
@@ -663,16 +662,18 @@
return writer.toString();
}
- /** {@inheritDoc} */
+ @Override
public int describeContents() {
return 0;
}
public static final Creator<NetworkStats> CREATOR = new Creator<NetworkStats>() {
+ @Override
public NetworkStats createFromParcel(Parcel in) {
return new NetworkStats(in);
}
+ @Override
public NetworkStats[] newArray(int size) {
return new NetworkStats[size];
}
diff --git a/core/java/android/net/NetworkStatsHistory.java b/core/java/android/net/NetworkStatsHistory.java
index faf8a3f..0003c6e 100644
--- a/core/java/android/net/NetworkStatsHistory.java
+++ b/core/java/android/net/NetworkStatsHistory.java
@@ -130,7 +130,7 @@
totalBytes = in.readLong();
}
- /** {@inheritDoc} */
+ @Override
public void writeToParcel(Parcel out, int flags) {
out.writeLong(bucketDuration);
writeLongArray(out, bucketStart, bucketCount);
@@ -191,7 +191,7 @@
writeVarLongArray(out, operations, bucketCount);
}
- /** {@inheritDoc} */
+ @Override
public int describeContents() {
return 0;
}
@@ -586,10 +586,12 @@
}
public static final Creator<NetworkStatsHistory> CREATOR = new Creator<NetworkStatsHistory>() {
+ @Override
public NetworkStatsHistory createFromParcel(Parcel in) {
return new NetworkStatsHistory(in);
}
+ @Override
public NetworkStatsHistory[] newArray(int size) {
return new NetworkStatsHistory[size];
}
diff --git a/core/java/android/text/SpannableStringBuilder.java b/core/java/android/text/SpannableStringBuilder.java
index f7a7eb8..ae9042c 100644
--- a/core/java/android/text/SpannableStringBuilder.java
+++ b/core/java/android/text/SpannableStringBuilder.java
@@ -125,28 +125,24 @@
}
private void resizeFor(int size) {
- int newlen = ArrayUtils.idealCharArraySize(size + 1);
- char[] newtext = new char[newlen];
+ final int oldLength = mText.length;
+ final int newLength = ArrayUtils.idealCharArraySize(size + 1);
+ final int after = oldLength - (mGapStart + mGapLength);
- int after = mText.length - (mGapStart + mGapLength);
+ char[] newText = new char[newLength];
+ System.arraycopy(mText, 0, newText, 0, mGapStart);
+ System.arraycopy(mText, oldLength - after, newText, newLength - after, after);
+ mText = newText;
- System.arraycopy(mText, 0, newtext, 0, mGapStart);
- System.arraycopy(mText, mText.length - after,
- newtext, newlen - after, after);
-
- for (int i = 0; i < mSpanCount; i++) {
- if (mSpanStarts[i] > mGapStart)
- mSpanStarts[i] += newlen - mText.length;
- if (mSpanEnds[i] > mGapStart)
- mSpanEnds[i] += newlen - mText.length;
- }
-
- int oldlen = mText.length;
- mText = newtext;
- mGapLength += mText.length - oldlen;
-
+ final int delta = newLength - oldLength;
+ mGapLength += delta;
if (mGapLength < 1)
new Exception("mGapLength < 1").printStackTrace();
+
+ for (int i = 0; i < mSpanCount; i++) {
+ if (mSpanStarts[i] > mGapStart) mSpanStarts[i] += delta;
+ if (mSpanEnds[i] > mGapStart) mSpanEnds[i] += delta;
+ }
}
private void moveGapTo(int where) {
@@ -157,14 +153,10 @@
if (where < mGapStart) {
int overlap = mGapStart - where;
-
- System.arraycopy(mText, where,
- mText, mGapStart + mGapLength - overlap, overlap);
+ System.arraycopy(mText, where, mText, mGapStart + mGapLength - overlap, overlap);
} else /* where > mGapStart */ {
int overlap = where - mGapStart;
-
- System.arraycopy(mText, where + mGapLength - overlap,
- mText, mGapStart, overlap);
+ System.arraycopy(mText, where + mGapLength - overlap, mText, mGapStart, overlap);
}
// XXX be more clever
@@ -340,18 +332,17 @@
boolean atEnd = (mGapStart + mGapLength == mText.length);
for (int i = mSpanCount - 1; i >= 0; i--) {
- if (mSpanStarts[i] >= start &&
- mSpanStarts[i] < mGapStart + mGapLength) {
+ if (mSpanStarts[i] >= start && mSpanStarts[i] < mGapStart + mGapLength) {
int flag = (mSpanFlags[i] & START_MASK) >> START_SHIFT;
- if (flag == POINT || (flag == PARAGRAPH && atEnd))
- mSpanStarts[i] = mGapStart + mGapLength;
- else
- mSpanStarts[i] = start;
+ if (flag == POINT || (flag == PARAGRAPH && atEnd)) {
+ mSpanStarts[i] = mGapStart + mGapLength;
+ } else {
+ mSpanStarts[i] = start;
+ }
}
- if (mSpanEnds[i] >= start &&
- mSpanEnds[i] < mGapStart + mGapLength) {
+ if (mSpanEnds[i] >= start && mSpanEnds[i] < mGapStart + mGapLength) {
int flag = (mSpanFlags[i] & END_MASK);
if (flag == POINT || (flag == PARAGRAPH && atEnd))
@@ -360,7 +351,8 @@
mSpanEnds[i] = start;
}
- // remove 0-length SPAN_EXCLUSIVE_EXCLUSIVE
+ // remove 0-length SPAN_EXCLUSIVE_EXCLUSIVE, which are POINT_MARK and could
+ // get their boundaries swapped by the above code
if (mSpanEnds[i] < mSpanStarts[i]) {
removeSpan(i);
}
@@ -520,6 +512,11 @@
}
}
+ if (flags == Spanned.SPAN_EXCLUSIVE_EXCLUSIVE && start == end) {
+ throw new IllegalArgumentException(
+ "SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length");
+ }
+
if (start > mGapStart) {
start += mGapLength;
} else if (start == mGapStart) {
diff --git a/core/java/android/webkit/FindActionModeCallback.java b/core/java/android/webkit/FindActionModeCallback.java
index 6c331ac..6b7263c 100644
--- a/core/java/android/webkit/FindActionModeCallback.java
+++ b/core/java/android/webkit/FindActionModeCallback.java
@@ -148,8 +148,8 @@
mInput.showSoftInput(mEditText, 0);
}
- public void updateMatchCount(int matchIndex, int matchCount, boolean isNewFind) {
- if (!isNewFind) {
+ public void updateMatchCount(int matchIndex, int matchCount, boolean isEmptyFind) {
+ if (!isEmptyFind) {
mNumberOfMatches = matchCount;
mActiveMatchIndex = matchIndex;
updateMatchesString();
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 9492e38..84632c6 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -313,7 +313,6 @@
/**
* Interface to listen for find results.
- * @hide
*/
public interface FindListener {
/**
@@ -1249,8 +1248,7 @@
* Register the listener to be notified as find-on-page operations progress.
* This will replace the current listener.
*
- * @param listener An implementation of {@link WebView#FindListener}.
- * @hide
+ * @param listener An implementation of {@link FindListener}.
*/
public void setFindListener(FindListener listener) {
checkThread();
@@ -1258,11 +1256,15 @@
}
/**
- * Highlight and scroll to the next occurance of String in findAll.
- * Wraps the page infinitely, and scrolls. Must be called after
- * calling findAll.
+ * Highlight and scroll to the next match found by {@link #findAll} or
+ * {@link #findAllAsync}, wrapping around page boundaries as necessary.
+ * Notifies any registered {@link FindListener}. If neither
+ * {@link #findAll} nor {@link #findAllAsync(String)} has been called yet,
+ * or if {@link #clearMatches} has been called since the last find
+ * operation, this function does nothing.
*
* @param forward Direction to search.
+ * @see #setFindListener
*/
public void findNext(boolean forward) {
checkThread();
@@ -1271,10 +1273,13 @@
/**
* Find all instances of find on the page and highlight them.
+ * Notifies any registered {@link FindListener}.
*
* @param find String to find.
* @return int The number of occurances of the String "find"
* that were found.
+ * @deprecated {@link #findAllAsync} is preferred.
+ * @see #setFindListener
*/
public int findAll(String find) {
checkThread();
@@ -1283,10 +1288,12 @@
/**
* Find all instances of find on the page and highlight them,
- * asynchronously.
+ * asynchronously. Notifies any registered {@link FindListener}.
+ * Successive calls to this or {@link #findAll} will cancel any
+ * pending searches.
*
* @param find String to find.
- * @hide
+ * @see #setFindListener
*/
public void findAllAsync(String find) {
checkThread();
@@ -1333,8 +1340,9 @@
return getFactory().getStatics().findAddress(addr);
}
- /*
- * Clear the highlighting surrounding text matches created by findAll.
+ /**
+ * Clear the highlighting surrounding text matches created by
+ * {@link #findAll} or {@link #findAllAsync}.
*/
public void clearMatches() {
checkThread();
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 4c118ac..586fcb1 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -3588,7 +3588,9 @@
@Override
public void findNext(boolean forward) {
if (0 == mNativeClass) return; // client isn't initialized
- mWebViewCore.sendMessage(EventHub.FIND_NEXT, forward ? 1 : 0);
+ if (mFindRequest != null) {
+ mWebViewCore.sendMessage(EventHub.FIND_NEXT, forward ? 1 : 0, mFindRequest);
+ }
}
/**
@@ -3605,28 +3607,26 @@
private int findAllBody(String find, boolean isAsync) {
if (0 == mNativeClass) return 0; // client isn't initialized
- mLastFind = find;
+ mFindRequest = null;
if (find == null) return 0;
mWebViewCore.removeMessages(EventHub.FIND_ALL);
- WebViewCore.FindAllRequest request = new
- WebViewCore.FindAllRequest(find);
+ mFindRequest = new WebViewCore.FindAllRequest(find);
if (isAsync) {
- mWebViewCore.sendMessage(EventHub.FIND_ALL, request);
+ mWebViewCore.sendMessage(EventHub.FIND_ALL, mFindRequest);
return 0; // no need to wait for response
}
- synchronized(request) {
+ synchronized(mFindRequest) {
try {
- mWebViewCore.sendMessageAtFrontOfQueue(EventHub.FIND_ALL,
- request);
- while (request.mMatchCount == -1) {
- request.wait();
+ mWebViewCore.sendMessageAtFrontOfQueue(EventHub.FIND_ALL, mFindRequest);
+ while (mFindRequest.mMatchCount == -1) {
+ mFindRequest.wait();
}
}
catch (InterruptedException e) {
return 0;
}
+ return mFindRequest.mMatchCount;
}
- return request.mMatchCount;
}
/**
@@ -3657,7 +3657,7 @@
return true;
}
if (text == null) {
- text = mLastFind;
+ text = mFindRequest == null ? null : mFindRequest.mSearchText;
}
if (text != null) {
mFindCallback.setText(text);
@@ -3683,9 +3683,8 @@
// or not we draw the highlights for matches.
private boolean mFindIsUp;
- // Keep track of the last string sent, so we can search again when find is
- // reopened.
- private String mLastFind;
+ // Keep track of the last find request sent.
+ private WebViewCore.FindAllRequest mFindRequest = null;
/**
* Return the first substring consisting of the address of a physical
@@ -8476,13 +8475,27 @@
}
case UPDATE_MATCH_COUNT: {
- boolean isNewFind = mLastFind == null || !mLastFind.equals(msg.obj);
- if (mFindCallback != null)
- mFindCallback.updateMatchCount(msg.arg1, msg.arg2, isNewFind);
- if (mFindListener != null)
- mFindListener.onFindResultReceived(msg.arg1, msg.arg2, true);
+ WebViewCore.FindAllRequest request = (WebViewCore.FindAllRequest)msg.obj;
+ if (request == null) {
+ if (mFindCallback != null) {
+ mFindCallback.updateMatchCount(0, 0, true);
+ }
+ } else if (request == mFindRequest) {
+ int matchCount, matchIndex;
+ synchronized (mFindRequest) {
+ matchCount = request.mMatchCount;
+ matchIndex = request.mMatchIndex;
+ }
+ if (mFindCallback != null) {
+ mFindCallback.updateMatchCount(matchIndex, matchCount, false);
+ }
+ if (mFindListener != null) {
+ mFindListener.onFindResultReceived(matchIndex, matchCount, true);
+ }
+ }
break;
}
+
case CLEAR_CARET_HANDLE:
selectionDone();
break;
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index b4ebc09..5549d89 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -1041,9 +1041,11 @@
public FindAllRequest(String text) {
mSearchText = text;
mMatchCount = -1;
+ mMatchIndex = -1;
}
- public String mSearchText;
+ public final String mSearchText;
public int mMatchCount;
+ public int mMatchIndex;
}
/**
@@ -1777,21 +1779,32 @@
nativeSelectAll(mNativeClass);
break;
case FIND_ALL: {
- FindAllRequest request = (FindAllRequest) msg.obj;
- if (request == null) {
- nativeFindAll(mNativeClass, null);
- } else {
- request.mMatchCount = nativeFindAll(
- mNativeClass, request.mSearchText);
- synchronized(request) {
+ FindAllRequest request = (FindAllRequest)msg.obj;
+ if (request != null) {
+ int matchCount = nativeFindAll(mNativeClass, request.mSearchText);
+ int matchIndex = nativeFindNext(mNativeClass, true);
+ synchronized (request) {
+ request.mMatchCount = matchCount;
+ request.mMatchIndex = matchIndex;
request.notify();
}
+ } else {
+ nativeFindAll(mNativeClass, null);
}
+ Message.obtain(mWebViewClassic.mPrivateHandler,
+ WebViewClassic.UPDATE_MATCH_COUNT, request).sendToTarget();
break;
}
- case FIND_NEXT:
- nativeFindNext(mNativeClass, msg.arg1 != 0);
+ case FIND_NEXT: {
+ FindAllRequest request = (FindAllRequest)msg.obj;
+ int matchIndex = nativeFindNext(mNativeClass, msg.arg1 != 0);
+ synchronized (request) {
+ request.mMatchIndex = matchIndex;
+ }
+ Message.obtain(mWebViewClassic.mPrivateHandler,
+ WebViewClassic.UPDATE_MATCH_COUNT, request).sendToTarget();
break;
+ }
}
}
};
@@ -2825,17 +2838,6 @@
.sendToTarget();
}
- // called by JNI
- private void updateMatchCount(int matchIndex, int matchCount,
- String findText) {
- if (mWebViewClassic == null) {
- return;
- }
- Message.obtain(mWebViewClassic.mPrivateHandler,
- WebViewClassic.UPDATE_MATCH_COUNT, matchIndex, matchCount,
- findText).sendToTarget();
- }
-
private native void nativeRevealSelection(int nativeClass);
private native String nativeRequestLabel(int nativeClass, int framePtr,
int nodePtr);
@@ -3086,7 +3088,7 @@
private native void nativeAutoFillForm(int nativeClass, int queryId);
private native void nativeScrollLayer(int nativeClass, int layer, Rect rect);
private native int nativeFindAll(int nativeClass, String text);
- private native void nativeFindNext(int nativeClass, boolean forward);
+ private native int nativeFindNext(int nativeClass, boolean forward);
/**
* Deletes editable text between two points. Note that the selection may
diff --git a/core/java/android/widget/Chronometer.java b/core/java/android/widget/Chronometer.java
index 9c9eb4b..b7a126e 100644
--- a/core/java/android/widget/Chronometer.java
+++ b/core/java/android/widget/Chronometer.java
@@ -248,7 +248,6 @@
}
}
setText(text);
- Slog.v("Chronometer", "updateText: sec=" + seconds + " mFormat=" + mFormat + " text=" + text);
}
private void updateRunning() {
diff --git a/core/res/res/layout/notification_action.xml b/core/res/res/layout/notification_action.xml
index 54fde70..785da7c 100644
--- a/core/res/res/layout/notification_action.xml
+++ b/core/res/res/layout/notification_action.xml
@@ -19,5 +19,5 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@android:style/Widget.Holo.Button.Small"
- android:gravity="left"
+ android:gravity="left|center_vertical"
/>
\ No newline at end of file
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index e649904..f23c7e2 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Stel tyd"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Stel datum"</string>
<string name="date_time_set" msgid="5777075614321087758">"Stel"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Klaar"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Verstek"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUUT: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Geen toestemmings benodig nie"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Voeg \'n rekening by"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Watter rekening wil jy gebruik?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Voeg rekening by"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Vermeerder"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Verminder"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> raak en hou."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Gly op om te vermeeder en af om te verminder."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Vermeerder minuut"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Verminder minute"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Vermeerder uur"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Verminder uur"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Stel NM."</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Stel VM."</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Vermeerder maand"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Verminder maand"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Vermeerder dag"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Verminder dag"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Vermeerder jaar"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Verminder jaar"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"gekontroleer"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"nie gekontroleer nie"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"gekies"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Deel met"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Deel met <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Skyfievatsel. Raak en hou."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Gly op vir <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Gly af vir <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Gly links vir <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Gly regs vir <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Ontsluit"</string>
<string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Stil"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Klank aan"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Soek"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Sleep om te ontsluit."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Prop \'n kopfoon in om te hoor hoe wagwoordsleutels hardop gesê word."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punt."</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 0203d82..b0218dd 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"ጊዜ አዘጋጅ"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"ውሂብ አዘጋጅ"</string>
<string name="date_time_set" msgid="5777075614321087758">"አዘጋጅ"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"ተጠናቋል"</string>
<string name="default_permission_group" msgid="2690160991405646128">"ነባሪ"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"አዲስ፦ "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"ምንም ፍቃዶች አይጠየቁም"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"መለያ አክል"</string>
<string name="choose_account_text" msgid="6303348737197849675">"የትኛውን መለያ መጠቀም ትፈልጋለህ?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"መለያ አክል"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"ጨምር"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"ቀንስ"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> ንካ እና ያዝ።"</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"ለመጨመር ወደ ላይ አንሸራትት እና ለመቀነስ ወደ ታች አንሸራትት።"</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"ደቂቃ ጨምር"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ደቂቃ ቀንስ"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"ሰዓት ጨምር"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"ሰዓት ቀንስ"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"PM አዘጋጅ"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"AM አዘጋጅ"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"ወር ጨምር"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"ወር ቀንስ"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"ቀን ጨምር"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"ቀን ቀንስ"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"ዓመት ጨምር"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"ዓመት ቀንስ"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"ታይቷል"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"አልተፈተሸም"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"የተመረጠ"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"ተጋራ ከ"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"ከ <xliff:g id="APPLICATION_NAME">%s</xliff:g> ጋር ተጋራ"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"ባለስላይድ መያዣ፡፡ ዳስ&ያዝ፡፡"</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"ለ<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ወደ ላይ አንሸራትት።"</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"ለ<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ወደ ታች አንሸራትት።"</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"ለ<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ወደ ግራ አንሸራትት።"</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"ለ<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ወደ ቀኝ አንሸራትት።"</string>
<string name="description_target_unlock" msgid="2228524900439801453">"ክፈት"</string>
<string name="description_target_camera" msgid="969071997552486814">"ካሜራ"</string>
<string name="description_target_silent" msgid="893551287746522182">"ፀጥታ"</string>
<string name="description_target_soundon" msgid="30052466675500172">"ድምፅ አብራ"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"ፈልግ"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"ላለመቆለፍ አንሸራት፡፡"</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"የይለፍ ቃል ቁልፎች ሲነገሩ ለመስማት የጆሮ ማዳመጫ ሰካ።"</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"ነጥብ."</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index f0800c0..9c3d658 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"تعيين الوقت"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"تعيين التاريخ"</string>
<string name="date_time_set" msgid="5777075614321087758">"تعيين"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"تم"</string>
<string name="default_permission_group" msgid="2690160991405646128">"افتراضي"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"جديد: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"لا أذونات مطلوبة"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"إضافة حساب"</string>
<string name="choose_account_text" msgid="6303348737197849675">"ما الحساب الذي تريد استخدامه؟"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"إضافة حساب"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"زيادة"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"تقليل"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> المس مع الاستمرار."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"مرر لأعلى للزيادة ولأسفل للتقليل."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"زيادة الدقائق"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"تقليل الدقائق"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"زيادة الساعات"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"تقليل الساعات"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"تعيين المساء"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"تعيين الصباح"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"زيادة الشهور"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"تقليل الشهور"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"زيادة الأيام"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"تقليل الأيام"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"زيادة الأعوام"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"تقليل الأعوام"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"تم التحديد"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"لم يتم التحديد"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"محدد"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"مشاركة مع"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"مشاركة مع <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"مقبض التمرير. المس مع الاستمرار."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"تمرير لأعلى لـ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"تمرير لأسفل لـ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"تمرير لليسار لـ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"تمرير لليمين لـ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"إلغاء تأمين"</string>
<string name="description_target_camera" msgid="969071997552486814">"الكاميرا"</string>
<string name="description_target_silent" msgid="893551287746522182">"صامت"</string>
<string name="description_target_soundon" msgid="30052466675500172">"تشغيل الصوت"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"بحث"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"مرر بسرعة لإلغاء التأمين."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"يمكنك توصيل سماعة رأس لسماع مفاتيح كلمة المرور عندما يتم نطقها."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"نقطة"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index b286a25..9aab752 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Усталяваць час"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Усталяваць дату"</string>
<string name="date_time_set" msgid="5777075614321087758">"Задаць"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Гатова"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Па змаўчанні"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВАЕ: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Дазволу не патрабуецца"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Дадаць уліковы запіс"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Які ўліковы запіс вы жадаеце выкарыстоўваць?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Дадаць уліковы запіс"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Павялічыць"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Паменшыць"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Націсніце і ўтрымлівайце <xliff:g id="VALUE">%s</xliff:g>."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Правядзіце пальцам уверх, каб павялічыць, або ўніз, каб паменшыць."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Павялічыць лічбу хвілін."</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Паменшыць лічбу хвілін."</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Павялічыць лічбу гадзін."</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Паменшыць лічбу гадзін."</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Усталяваць час пасля паўдня"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Усталяваць час да паўдня"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Павялічыць лічбу месяца"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Паменшыць лічбу месяца"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Павялічыць лічбу дня"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Паменшыць лічбу дня"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Павялічыць лічбу года"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Паменшыць лічбу года"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"пастаўлены"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"не пастаўлены"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"абрана"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Апублікаваць з дапамогай"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Адправiць з дапамогай прыкладання <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Ручка для перасоўвання. Націсніце і ўтрымлівайце."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Правядзіце пальцам уверх, каб атрымаць <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Правядзіце пальцам уніз, каб атрымаць <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Правядзіце пальцам улева, каб атрымаць <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Правядзіце пальцам управа, каб атрымаць <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Разблакаваць"</string>
<string name="description_target_camera" msgid="969071997552486814">"Камера"</string>
<string name="description_target_silent" msgid="893551287746522182">"Ціхі рэжым"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Гук уключаны"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Пошук"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Прагартайце, каб разблакаваць."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Каб праслухаць паролi, падключыце гарнiтуру."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Кропка."</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 365e63a..6c6030c 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Estableix l\'hora"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Establiment de data"</string>
<string name="date_time_set" msgid="5777075614321087758">"Defineix"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Fet"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Predeterminat"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOU: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"No cal cap permís"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Addició d\'un compte"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Quin compte vols utilitzar?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Afegeix un compte"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Incrementa"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Redueix"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Mantén premut <xliff:g id="VALUE">%s</xliff:g>."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Fes lliscar el dit cap amunt per incrementar i cap avall per disminuir."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Fes augmentar el minut"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Fes disminuir el minut"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Fes augmentar l\'hora"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Fes disminuir l\'hora"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Estableix com a p. m."</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Estableix com a a. m."</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Fes augmentar el mes"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Fes disminuir el mes"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Fes augmentar el dia"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Fes disminuir el dia"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Fes augmentar l\'any"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Fes disminuir l\'any"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"marcat"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"no marcat"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"seleccionat"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Comparteix amb"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Comparteix amb <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Llisca el dit. Mantén premut."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Fes lliscar el dit cap amunt per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Fes lliscar el dit cap avall per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Fes lliscar el dit cap a l\'esquerra per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Fes lliscar el dit cap a la dreta per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Desbloqueja"</string>
<string name="description_target_camera" msgid="969071997552486814">"Càmera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Silenci"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Activa el so"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Cerca"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Llisca el dit per desbloquejar."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Connecta un auricular per escoltar les claus de la contrasenya en veu alta."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punt."</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 3560e3d..2c7f1306 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Angiv tidspunkt"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Angiv dato"</string>
<string name="date_time_set" msgid="5777075614321087758">"Angiv"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Udført"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Standard"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NYHED! "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Der kræves ingen tilladelser"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Tilføj en konto"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Hvilken konto vil du bruge?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Tilføj konto"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Højere"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Lavere"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Tryk <xliff:g id="VALUE">%s</xliff:g> gange, og hold inde."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Glid op for at øge og ned for at mindske."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Forøg minuttal"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Sænk minuttal"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Forøg timetal"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Sænk timetal"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Indstil PM"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Indstil AM"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Senere måned"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Tidligere måned"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Senere dag"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Tidligere dag"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Senere år"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Tidligere år"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"markeret"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"ikke markeret"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"udvalgt"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Del med"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Del med <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Glidende håndtag. Tryk og hold nede."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Glid op for at <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Glid ned for at <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Glid til venstre for at <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Glid til højre for at <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Lås op"</string>
<string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Lydløs"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Lyd slået til"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Søgning"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Glid hurtigt henover for at låse op."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Tilslut et headset for at høre tasterne blive læst højt ved angivelse af adgangskode."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punktum."</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 66b87c0..aa44b87 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Uhrzeit festlegen"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Datum festlegen"</string>
<string name="date_time_set" msgid="5777075614321087758">"Speichern"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Fertig"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Standard"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"Neu: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Keine Berechtigungen erforderlich"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Konto hinzufügen"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Welches Konto möchten Sie verwenden?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Konto hinzufügen"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Erhöhen"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Verringern"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> berühren und gedrückt halten"</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Zum Erhöhen nach oben und zum Verringern nach unten schieben"</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minuten verlängern"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minuten verringern"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Stunden verlängern"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Stunden verringern"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Zeit festlegen"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Zeit festlegen"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Monat verlängern"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Monat verringern"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Tag verlängern"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Tag verringern"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Jahr verlängern"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Jahr verringern"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"Aktiviert"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"Nicht aktiviert"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"Ausgewählt"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Teilen mit"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Mit <xliff:g id="APPLICATION_NAME">%s</xliff:g> teilen"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Schieberegler: Berühren und halten"</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Zum <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> nach oben schieben"</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Zum <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> nach unten schieben"</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Zum <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> nach links schieben"</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Zum <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> nach rechts schieben"</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Entsperren"</string>
<string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Lautlos"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Ton ein"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Suche"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Zum Entsperren den Finger über den Bildschirm ziehen"</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Schließen Sie ein Headset an, um das Passwort gesprochen zu hören."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punkt."</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 942a40a..d85d639 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Ρύθμιση ώρας"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Ορισμός ημερομηνίας"</string>
<string name="date_time_set" msgid="5777075614321087758">"Ορισμός"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Τέλος"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Προεπιλεγμένο"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"ΝΕΟ: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Δεν απαιτούνται άδειες"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Προσθήκη λογαριασμού"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Ποιον λογαριασμό θέλετε να χρησιμοποιήσετε;"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Προσθήκη λογαριασμού"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Αύξηση"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Μείωση"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Πατήστε παρατεταμένα το <xliff:g id="VALUE">%s</xliff:g>."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Πραγματοποιήστε κύλιση προς τα πάνω για αύξηση και προς τα κάτω για μείωση."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Αύξηση λεπτού"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Μείωση λεπτού"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Αύξηση ώρας"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Μείωση ώρας"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Ορισμός ΜΜ"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Ορισμός ΠΜ"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Αύξηση μήνα"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Μείωση μήνα"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Αύξηση ημέρας"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Μείωση ημέρας"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Αύξηση έτους"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Μείωση έτους"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"ελέγχθηκε"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"δεν επιλέχθηκε"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"επιλεγμένο"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Κοινή χρήση με"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Κοινή χρήση με <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Στοιχείο χειρισμού με δυνατότητα ολίσθησης. Αγγίξτε και πατήστε παρατεταμένα."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Κύλιση προς τα επάνω για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Κύλιση προς τα κάτω για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Κύλιση προς τα αριστερά για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Κύλιση προς τα δεξιά για <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Ξεκλείδωμα"</string>
<string name="description_target_camera" msgid="969071997552486814">"Φωτογραφική μηχανή"</string>
<string name="description_target_silent" msgid="893551287746522182">"Αθόρυβο"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Ενεργοποίηση ήχου"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Αναζήτηση"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Σύρετε για ξεκλείδωμα."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Συνδέστε ακουστικά για να ακούσετε τα πλήκτρα του κωδικού πρόσβασης να εκφωνούνται."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Τελεία."</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index e863aba..8ade0e0 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Establecer hora"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Establecer fecha"</string>
<string name="date_time_set" msgid="5777075614321087758">"Establecer"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Listo"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Predeterminado"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUEVO:"</font></string>
<string name="no_permissions" msgid="7283357728219338112">"No es necesario ningún permiso"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Añadir una cuenta"</string>
<string name="choose_account_text" msgid="6303348737197849675">"¿Qué cuenta quieres usar?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Añadir cuenta"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Aumentar"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Reducir"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Mantén pulsado <xliff:g id="VALUE">%s</xliff:g>."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Desliza el dedo hacia arriba para aumentar y hacia abajo para disminuir."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumentar minutos"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reducir minutos"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Aumentar horas"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Reducir horas"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Establecer p.m."</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Establecer a.m."</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Aumentar mes"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Reducir mes"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Aumentar días"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Reducir días"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Aumentar año"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Reducir año"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"seleccionado"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"no seleccionado"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"seleccionado"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Compartir con"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Compartir con <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Mantén pulsado el icono de desbloqueo y deslízalo."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Desliza el dedo hacia arriba para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Desliza el dedo hacia abajo para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Desliza el dedo hacia la izquierda para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Desliza el dedo hacia la derecha para <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Desbloquear"</string>
<string name="description_target_camera" msgid="969071997552486814">"Cámara"</string>
<string name="description_target_silent" msgid="893551287746522182">"Silencio"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Sonido activado"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Buscar"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Desliza el dedo para desbloquear."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Conecta un auricular para escuchar las contraseñas."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punto"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 5303a13..0a8faed 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Kellaaja määramine"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Kuupäeva määramine"</string>
<string name="date_time_set" msgid="5777075614321087758">"Määra"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Valmis"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Vaikimisi"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"UUS: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Lube pole vaja"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Konto lisamine"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Millist kontot soovite kasutada?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Lisa konto"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Suurendamine"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Vähendamine"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> puudutage ja hoidke."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Suurendamiseks lohistage üles, vähendamiseks alla."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minutite suurendamine"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minutite vähendamine"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Tundide suurendamine"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Tundide vähendamine"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"PM-i seadmine"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"AM-i seadmine"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Kuu suurendamine"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Kuu vähendamine"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Päeva suurendamine"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Päeva vähendamine"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Aasta suurendamine"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Aasta vähendamine"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"märgitud"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"pole märgitud"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"valitud"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Jaga:"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Jaga rakendusega <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Libistamispide. Puudutage ja hoidke all."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Lohistage üles: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Lohistage alla: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Lohistage vasakule: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Lohistage paremale: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Luku avamine"</string>
<string name="description_target_camera" msgid="969071997552486814">"Kaamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Hääletu"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Heli on sees"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Otsing"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Avamiseks tõmmake sõrmega."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Paroolide kuulamiseks ühendage peakomplekt."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punkt."</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 92cb595..c9329bb 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"تنظیم زمان"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"تاریخ تنظیم"</string>
<string name="date_time_set" msgid="5777075614321087758">"تنظیم"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"انجام شد"</string>
<string name="default_permission_group" msgid="2690160991405646128">"پیش فرض"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"جدید: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"مجوزی لازم نیست"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"افزودن یک حساب"</string>
<string name="choose_account_text" msgid="6303348737197849675">"کدام حساب را میخواهید استفاده کنید؟"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"افزودن حساب"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"افزایش"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"کاهش"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> لمس کرده و نگه دارید."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"برای افزایش به بالا بلغزانید و برای کاهش به پایین بلغزانید."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"افزایش دقیقه"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"کاهش دقیقه"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"افزایش ساعت"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"کاهش ساعت"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"تنظیم ب.ظ"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"تنظیم ق.ظ"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"افزایش ماه"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"کاهش ماه"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"افزایش روز"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"کاهش روز"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"افزایش سال"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"کاهش سال"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"علامت زده"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"بدون علامت"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"انتخاب شد"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"اشتراکگذاری با"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"اشتراکگذاری با <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"اهرم کنترل حرکت. لمس کرده و نگهدارید."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"لغزاندن به بالا برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"لغزاندن به پایین برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"لغزاندن به چپ برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"لغزاندن به راست برای <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"بازکردن قفل"</string>
<string name="description_target_camera" msgid="969071997552486814">"دوربین"</string>
<string name="description_target_silent" msgid="893551287746522182">"ساکت"</string>
<string name="description_target_soundon" msgid="30052466675500172">"صدا روشن"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"جستجو"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"برای بازگشایی قفل، بلغزانید."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"برای شنیدن کلیدهای گذرواژه که با صدای بلند خوانده میشوند، هدست را وصل کنید."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"نقطه."</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index e3db295..8a1079b 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Aseta aika"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Aseta päivämäärä"</string>
<string name="date_time_set" msgid="5777075614321087758">"Aseta"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Valmis"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Oletus"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"UUTTA: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Lupia ei tarvita"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Lisää tili"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Mitä tiliä haluat käyttää?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Lisää tili"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Lisää"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Vähennä"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> kosketa pitkään."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Lisää tai vähennä arvoa liu\'uttamalla ylös tai alas."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Lisää minuuttien määrää."</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Vähennä minuuttien määrää."</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Lisää tuntien määrää."</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Vähennä tuntien määrää."</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Aseta ip"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Aseta ap"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Lisää kuukausien määrää."</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Vähennä kuukausien määrää."</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Lisää päivien määrää."</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Vähennä päivien määrää."</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Lisää vuosien määrää."</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Vähennä vuosien määrää."</string>
<string name="checkbox_checked" msgid="7222044992652711167">"valittu"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"ei valittu"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"valittu"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Jaa seuraavien kanssa:"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Jaa sovelluksessa <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Liukuva valitsin. Kosketa pitkään."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Liu\'uta ylös ja <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Liu\'uta alas ja <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Liu\'uta vasemmalle ja <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Liu\'uta oikealle ja <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Poista lukitus"</string>
<string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Äänetön"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Ääni käytössä"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Haku"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Poista lukitus liu\'uttamalla."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Liitä kuulokkeet kuullaksesi, mitä näppäimiä painat kirjoittaessasi salasanaa."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Piste."</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 60eed61..f05e564c 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Définir l\'heure"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Définir la date"</string>
<string name="date_time_set" msgid="5777075614321087758">"Définir"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"OK"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Par défaut"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOUVEAU"</font>" :"</string>
<string name="no_permissions" msgid="7283357728219338112">"Aucune autorisation requise"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Ajouter un compte"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Quel compte souhaitez-vous utiliser ?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Ajouter un compte"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Augmenter"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Diminuer"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> appuyez de manière prolongée."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Faites glisser vers le haut pour augmenter et vers le bas pour diminuer."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Minute suivante"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minute précédente"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Heure suivante"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Heure précédente"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Définir la valeur PM"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Définir la valeur AM"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Mois suivant"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Mois précédent"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Jour suivant"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Jour précédent"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Année suivante"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Année précédente"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"coché"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"non coché"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"sélectionné"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Partager avec"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Partager avec <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Poignée coulissante. Appuyez de manière prolongée."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Faites glisser vers le haut pour <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Faites glisser vers le bas pour <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Faites glisser vers la gauche pour <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Faites glisser vers la droite pour <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Déverrouiller"</string>
<string name="description_target_camera" msgid="969071997552486814">"Appareil photo"</string>
<string name="description_target_silent" msgid="893551287746522182">"Mode silencieux"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Son activé"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Rechercher"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Faites glisser votre doigt pour déverrouiller l\'appareil."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Branchez des écouteurs pour entendre l\'énoncé des touches lors de la saisie du mot de passe."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Point."</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 5120648..9a742c4 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"समय सेट करें"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"दिनांक सेट करें"</string>
<string name="date_time_set" msgid="5777075614321087758">"सेट करें"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"पूर्ण"</string>
<string name="default_permission_group" msgid="2690160991405646128">"डिफ़ॉल्ट"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"नया: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"किसी अनुमति की आवश्यकता नहीं है"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"कोई खाता जोड़ें"</string>
<string name="choose_account_text" msgid="6303348737197849675">"आप कौन-सा खाता उपयोग करना चाहते हैं?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"खाता जोड़ें"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"बढ़ाएं"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"कम करें"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> को स्पर्श करके रखें."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"बढ़ाने के लिए ऊपर और कम करने के लिए नीचे स्लाइड करें."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"मिनट बढ़ाएं"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"मिनट कम करें"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"घंटे बढ़ाएं"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"घंटे कम करें"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"सायं सेट करें"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"प्रात: सेट करें"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"माह बढ़ाएं"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"माह कम करें"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"दिन बढ़ाएं"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"दिन कम करें"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"वर्ष बढ़ाएं"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"वर्ष कम करें"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"चेक किया गया"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"चेक नहीं किया गया"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"चयनित"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"इसके साथ साझा करें:"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> के साथ साझा करें"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"स्लाइडिंग हैंडल. स्पर्श करके रखें."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> के लिए ऊपर स्लाइड करें."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> के लिए नीचे स्लाइड करें."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> के लिए बाएं स्लाइड करें."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> के लिए दाएं स्लाइड करें."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"अनलॉक करें"</string>
<string name="description_target_camera" msgid="969071997552486814">"कैमरा"</string>
<string name="description_target_silent" msgid="893551287746522182">"मौन"</string>
<string name="description_target_soundon" msgid="30052466675500172">"ध्वनि चालू करें"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"खोजें"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"अनलॉक करने के लिए स्वाइप करें."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"बोली गईं पासवर्ड कुंजियां सुनने के लिए हेडसेट प्लग इन करें."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"बिंदु."</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index b00cbab..ba0fb7a 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Postavljanje vremena"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Postavi datum"</string>
<string name="date_time_set" msgid="5777075614321087758">"Postavi"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Gotovo"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Zadano"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVO: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Nije potrebno dopuštenje"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Dodajte račun"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Koji račun želite upotrijebiti?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Dodaj račun"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Povećavanje"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Smanjivanje"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> pritisnite i držite."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Kliznite prema gore za povećavanje i prema dolje za smanjivanje."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Povećanje minuta"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Smanjenje minuta"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Povećanje sati"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Smanjenje sati"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Postavi PM"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Postavi AM"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Povećanje mjeseca"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Smanjenje mjeseca"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Povećanje dana"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Smanjenje dana"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Povećanje godine"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Smanjenje godine"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"označeno"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"nije označeno"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"odabran"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Dijeljenje sa"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Dijeli s aplikacijom <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Klizna ručka. Dodirnite i držite."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Kliznite prema gore za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Kliznite prema dolje za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Kliznite lijevo za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Kliznite desno za <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Otključaj"</string>
<string name="description_target_camera" msgid="969071997552486814">"Fotoaparat"</string>
<string name="description_target_silent" msgid="893551287746522182">"Bešumno"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Zvuk je uključen"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Pretraživanje"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Prijeđite prstima da biste otključali."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Priključite slušalice kako biste čuli izgovaranje tipki zaporke."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Točka."</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 0fa59fc..944f429 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Setel waktu"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Setel tanggal"</string>
<string name="date_time_set" msgid="5777075614321087758">"Setel"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Selesai"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Default"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"BARU: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Tidak perlu izin"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Tambahkan akun"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Akun mana yang ingin Anda gunakan?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Tambahkan akun"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Menambah"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Mengurangi"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> sentuh dan tahan."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Geser ke atas untuk menambah dan ke bawah untuk mengurangi."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Menambah menit"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Mengurangi menit"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Menambah jam"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Mengurangi jam"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Menyetel PM"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Setel AM"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Menambah bulan"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Mengurangi bulan"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Menambah hari"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Mengurangi hari"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Menambah tahun"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Mengurangi tahun"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"dicentang"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"tidak diperiksa"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"dipilih"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Berbagi dengan"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Berbagi dengan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Gagang geser. Sentuh & tahan."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Geser ke atas untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Geser ke bawah untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Geser ke kiri untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Geser ke kanan untuk <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Membuka gembok"</string>
<string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Senyap"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Suara hidup"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Penelusuran"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Gesek untuk membuka kunci."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Pasang headset untuk mendengar tombol sandi yang diucapkan."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Titik."</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index fc9ab19..03cf404 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Imposta ora"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Imposta data"</string>
<string name="date_time_set" msgid="5777075614321087758">"Imposta"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Fine"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Predefinito"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUOVA: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Nessuna autorizzazione richiesta"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Aggiungi un account"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Quale account vuoi usare?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Aggiungi account"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Aumenta"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Riduci"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Tocca e tieni premuto il numero <xliff:g id="VALUE">%s</xliff:g>."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Scorri verso l\'alto per aumentare il valore e verso il basso per diminuirlo."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Aumenta minuti"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Riduci minuti"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Aumenta ore"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Riduci ore"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Imposta PM"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Imposta AM"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Aumenta mese"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Riduci mese"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Aumenta giorno"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Riduci giorno"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Aumenta anno"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Riduci anno"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"selezionata"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"non selezionato"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"selezionato"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Condividi con"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Condividi con <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Maniglia scorrevole. Tocca e tieni premuto."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Su per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Giù per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"A sinistra per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"A destra per <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Sblocca"</string>
<string name="description_target_camera" msgid="969071997552486814">"Fotocamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Silenzioso"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Audio attivato"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Ricerca"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Fai scorrere per sbloccare."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Collega gli auricolari per ascoltare la pronuncia dei tasti premuti per la password."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punto."</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index c8d1d6b..3c6e0c2 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"הגדרת שעה"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"הגדר תאריך"</string>
<string name="date_time_set" msgid="5777075614321087758">"הגדר"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"בוצע"</string>
<string name="default_permission_group" msgid="2690160991405646128">"ברירת מחדל"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"חדש: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"לא דרושים אישורים"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"הוסף חשבון"</string>
<string name="choose_account_text" msgid="6303348737197849675">"באיזה חשבון ברצונך להשתמש?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"הוסף חשבון"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"הוסף"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"הפחת"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> גע והחזק."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"הסט למעלה כדי להוסיף ולמטה כדי להפחית."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"הוסף דקה"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"הפחת דקה"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"הוסף שעה"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"הפחת שעה"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"הגדר PM"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"הגדר AM"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"הוסף חודש"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"הפחת חודש"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"הוסף יום"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"הפחת יום"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"הוסף שנה"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"הפחת שנה"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"מסומן"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"לא מסומן"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"נבחר"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"שתף עם"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"שתף עם <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"ידית להחלקה. גע והחזק."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"הסט למעלה כדי להציג <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"הסט למטה כדי להציג <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"הסט שמאלה כדי להציג <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"הסט ימינה כדי להציג <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"בטל נעילה"</string>
<string name="description_target_camera" msgid="969071997552486814">"מצלמה"</string>
<string name="description_target_silent" msgid="893551287746522182">"שקט"</string>
<string name="description_target_soundon" msgid="30052466675500172">"הקול פועל"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"חיפוש"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"החלק לביטול נעילה."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"חבר אוזניות כדי לשמוע הקראה של מפתחות סיסמה."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"נקודה."</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 5d3e1c6..9e21085 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"時刻設定"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"日付設定"</string>
<string name="date_time_set" msgid="5777075614321087758">"設定"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"完了"</string>
<string name="default_permission_group" msgid="2690160991405646128">"端末既定"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NEW: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"権限の許可は必要ありません"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"アカウントを追加"</string>
<string name="choose_account_text" msgid="6303348737197849675">"どのアカウントを使用しますか?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"アカウントを追加"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"進めます"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"戻します"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g>回タップして押し続けます。"</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"上にスライドで進み、下にスライドで戻ります。"</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"1分進めます"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"1分戻します"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"1時間進めます"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"1時間戻します"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"午後に設定"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"午前に設定"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"1か月進めます"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"1か月戻します"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"1日進めます"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"1日戻します"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"1年進めます"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"1年戻します"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"ON"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"OFF"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"ON"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"共有"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>と共有"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"スライダーハンドルです。押し続けます。"</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"上にスライドして<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>を行います。"</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"下にスライドして<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>を行います。"</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"左にスライドして<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>を行います。"</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"右にスライドして<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>を行います。"</string>
<string name="description_target_unlock" msgid="2228524900439801453">"ロックを解除"</string>
<string name="description_target_camera" msgid="969071997552486814">"カメラ"</string>
<string name="description_target_silent" msgid="893551287746522182">"マナーモード"</string>
<string name="description_target_soundon" msgid="30052466675500172">"サウンドON"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"検索します"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"ロック解除するにはスワイプします。"</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"パスワードのキーが音声出力されるのでヘッドセットを接続してください。"</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"ドット。"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 6be9465..8dc3fa6 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"시간 설정"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"날짜 설정"</string>
<string name="date_time_set" msgid="5777075614321087758">"설정"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"완료"</string>
<string name="default_permission_group" msgid="2690160991405646128">"기본값"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"신규: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"권한 필요 없음"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"계정 추가"</string>
<string name="choose_account_text" msgid="6303348737197849675">"사용할 계정을 선택하세요."</string>
<string name="add_account_button_label" msgid="3611982894853435874">"계정 추가"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"늘리기"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"줄이기"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> 길게 터치하세요."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"늘리려면 위로 슬라이드하고 줄이려면 아래로 슬라이드합니다."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"\'분\'을 늘립니다."</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"\'분\'을 줄입니다."</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"\'시간\'을 늘립니다."</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"\'시간\'을 줄입니다."</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"PM 설정"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"AM 설정"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"\'월\'을 늘립니다."</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"\'월\'을 줄입니다."</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"\'일\'을 늘립니다."</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"\'일\'을 줄입니다."</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"\'연도\'를 늘립니다."</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"\'연도\'를 줄입니다."</string>
<string name="checkbox_checked" msgid="7222044992652711167">"확인"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"선택 안함"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"선택됨"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"공유 대상:"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>와(과) 공유"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"슬라이딩 핸들을 길게 터치하세요."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>하려면 위로 슬라이드"</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>하려면 아래로 슬라이드"</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>하려면 왼쪽으로 슬라이드"</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>하려면 오른쪽으로 슬라이드"</string>
<string name="description_target_unlock" msgid="2228524900439801453">"잠금 해제"</string>
<string name="description_target_camera" msgid="969071997552486814">"카메라"</string>
<string name="description_target_silent" msgid="893551287746522182">"무음"</string>
<string name="description_target_soundon" msgid="30052466675500172">"사운드 켜기"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"검색"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"스와이프하여 잠급니다."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"비밀번호 키를 음성으로 들으려면 헤드셋을 연결하세요."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"점"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index da81e3e..fa13981 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Nustatyti laiką"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Nustatyti datą"</string>
<string name="date_time_set" msgid="5777075614321087758">"Nustatyti"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Baigta"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Numatytasis"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NAUJAS: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Nereikia leidimų"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Pridėti paskyrą"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Kurią paskyrą norite naudoti?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Pridėti paskyrą"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Padidinti"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Sumažinti"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Palieskite <xliff:g id="VALUE">%s</xliff:g> ir laikykite."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Slinkite aukštyn, kad padidintumėte, ir žemyn, kad sumažintumėte."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Padidinti minučių skaičių"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Sumažinti minučių skaičių"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Padidinti valandų skaičių"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Sumažinti valandų skaičių"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Nustatyti po pusiaudienio"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Nustatyti prieš pusiaudienį"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Padidinti mėnesių skaičių"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Sumažinti mėnesių skaičių"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Padidinti dienų skaičių"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Sumažinti dienų skaičių"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Padidinti metų skaičių"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Sumažinti metų skaičių"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"pažymėtas"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"nepatikrinta"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"pasirinkta"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Bendrinti su"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Bendrinti su „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Slydimo valdymas. Palieskite ir laikykite."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Slyskite aukštyn link <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Slyskite žemyn link <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Slyskite į kairę link <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Slyskite į dešinę link <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Atrakinti"</string>
<string name="description_target_camera" msgid="969071997552486814">"Vaizdo kamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Begarsis"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Garsas įjungtas"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Paieška"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Perbraukite pirštu, kad atrakintumėte."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Prijunkite ausines, kad išgirstumėte sakomus slaptažodžio klavišus."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Taškas."</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 5489714..1fe5316 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Laika iestatīšana"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Datuma iestatīšana"</string>
<string name="date_time_set" msgid="5777075614321087758">"Iestatīt"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Gatavs"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Noklusējums"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"JAUNA: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Atļaujas nav nepieciešamas."</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Pievienot kontu"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Kuru kontu vēlaties izmantot?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Pievienot kontu"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Palielināt"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Samazināt"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g>: pieskarieties un turiet nospiestu."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Velciet uz augšu, lai palielinātu vērtību, un uz leju, lai to samazinātu."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Norādīt vēlākas minūtes"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Norādīt agrākas minūtes"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Norādīt vēlāku stundu"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Norādīt agrāku stundu"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Iestatīt pēcpusdienas laiku"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Iestatīt priekšpusdienas laiku"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Norādīt vēlāku mēnesi"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Norādīt agrāku mēnesi"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Norādīt vēlāku dienu"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Norādīt agrāku dienu"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Norādīt vēlāku gadu"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Norādīt agrāku gadu"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"atzīmēta"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"nav atzīmēta"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"atlasīta"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Kopīgot ar:"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Kopīgot ar lietojumprogrammu <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Bīdāms turis. Pieskarieties tam un turiet to nospiestu."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Velciet uz augšu, lai veiktu šādu darbību: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Velciet uz leju, lai veiktu šādu darbību: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Velciet pa kreisi, lai veiktu šādu darbību: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Velciet pa labi, lai veiktu šādu darbību: <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Atbloķēt"</string>
<string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Klusums"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Skaņa ieslēgta"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Meklēt"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Velciet ar pirkstu, lai atbloķētu."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Pievienojiet austiņas, lai dzirdētu paroles taustiņu nosaukumus."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punkts."</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 28fc1a8..ec580ad 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Stille klokken"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Angi dato"</string>
<string name="date_time_set" msgid="5777075614321087758">"Lagre"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Ferdig"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Standard"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NYTT: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Trenger ingen rettigheter"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Legg til en konto"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Hvilken konto vil du bruke?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Legg til konto"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Øk"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Reduser"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> – trykk og hold inne."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Dra opp for å øke og ned for å redusere."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Øk minutter"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Reduser minutter"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Øk timer"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Reduser timer"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Angi p.m."</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Angi a.m."</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Øk måneder"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Reduser måneder"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Øk dager"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Reduser dager"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Øk år"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Reduser år"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"valgt"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"ikke valgt"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"valgt"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Del med"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Del med <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Glidebryter. Trykk og hold inne."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Dra opp for å <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Dra ned for å <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Dra til venstre for å <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Dra til høyre for å <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Lås opp"</string>
<string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Stille"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Lyd på"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Søk"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Sveip for å låse opp."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Koble til hodetelefoner for å høre opplesing av bokstavene i passordet."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punktum."</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 51e62e8..94d9712 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Tijd instellen"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Datum instellen"</string>
<string name="date_time_set" msgid="5777075614321087758">"Instellen"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Gereed"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Standaard"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NIEUW: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Geen machtigingen vereist"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Een account toevoegen"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Welk account wilt u gebruiken?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Account toevoegen"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Verhogen"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Verlagen"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> blijven aanraken."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Veeg omhoog om te verhogen en omlaag om te verlagen."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Hogere waarde voor minuten"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Lagere waarde voor minuten"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Hogere waarde voor uren"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Lagere waarde voor uren"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"PM instellen"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"AM instellen"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Hogere waarde voor maand"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Lagere waarde voor maand"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Hogere waarde voor dag"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Lagere waarde voor dag"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Hogere waarde voor jaar"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Lagere waarde voor jaar"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"aangevinkt"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"niet aangevinkt"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"geselecteerd"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Delen met"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Delen met <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Schuifgreep. Tikken en blijven aanraken."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Veeg omhoog voor <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Veeg omlaag voor <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Veeg naar links voor <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Veeg naar rechts voor <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Ontgrendelen"</string>
<string name="description_target_camera" msgid="969071997552486814">"Camera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Stil"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Geluid aan"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Zoeken"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Vegen om te ontgrendelen"</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Sluit een headset aan om wachtwoordtoetsen te laten voorlezen."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Stip."</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 97391bf..041133cd 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Настройка времени"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Настройка даты"</string>
<string name="date_time_set" msgid="5777075614321087758">"Установить"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Готово"</string>
<string name="default_permission_group" msgid="2690160991405646128">"По умолчанию"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВОЕ: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Не требуется разрешений"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Добавить аккаунт"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Выберите аккаунт"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Добавить аккаунт"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Увеличить"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Уменьшить"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Нажмите и удерживайте <xliff:g id="VALUE">%s</xliff:g>."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Проведите вверх, чтобы увеличить значение, и вниз, чтобы уменьшить его."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"На минуту вперед"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"На минуту назад"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"На час вперед"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"На час назад"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Установить время после полудня"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Установить время до полудня"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"На месяц вперед"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"На месяц назад"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"На день вперед"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"На день назад"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"На год вперед"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"На год назад"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"установлено"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"не установлено"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"выбрано"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Открыть доступ:"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Открыть доступ приложению \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\""</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Перетаскиваемый значок блокировки. Нажмите и удерживайте."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Проведите вверх, чтобы <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Проведите вниз, чтобы <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Проведите влево, чтобы <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Проведите вправо, чтобы <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Разблокировать"</string>
<string name="description_target_camera" msgid="969071997552486814">"Камера"</string>
<string name="description_target_silent" msgid="893551287746522182">"Без звука"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Включить звук"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Поиск"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Проведите по экрану, чтобы разблокировать устройство."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Подключите гарнитуру, чтобы услышать пароль."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Точка"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index da7a0f2..94024b8 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Подешавање времена"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Подешавање датума"</string>
<string name="date_time_set" msgid="5777075614321087758">"Подеси"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Готово"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Подразумевано"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВО: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Није потребна ниједна дозвола"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Додај налог"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Који налог желите да користите?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Додај налог"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Повећавање"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Смањивање"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> додирните и задржите."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Превуците нагоре да бисте повећали, а надоле да бисте смањили."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Повећавање минута"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Смањивање минута"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Повећавање сати"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Смањивање сати"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Подеси по подне"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Подеси пре подне"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Повећавање месеца"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Смањивање месеца"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Повећавање дана"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Смањивање дана"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Повећавање године"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Смањивање године"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"изабрано"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"није потврђено"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"изабрано"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Дели са"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Дели са апликацијом <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Клизна ручица. Додирните и задржите."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Превуците нагоре за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Превуците надоле за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Превуците улево за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Превуците удесно за <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Откључај"</string>
<string name="description_target_camera" msgid="969071997552486814">"Камера"</string>
<string name="description_target_silent" msgid="893551287746522182">"Нечујно"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Укључи звук"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Претрага"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Превуците да бисте откључали."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Прикључите слушалице да бисте чули изговорене тастере за лозинку."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Тачка."</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 1c916f9..ec77eb1 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Ange tid"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Ange datum"</string>
<string name="date_time_set" msgid="5777075614321087758">"Ställ in"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Klar"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Standardinställning"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NY: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Inga behörigheter krävs"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Lägg till ett konto"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Vilket konto vill du använda?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Lägg till konto"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Öka"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Minska"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> tryck länge."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Dra uppåt för att öka och nedåt för att minska."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Öka minuter"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Minska minuter"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Öka timmar"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Minska timmar"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Ange em"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Ange fm"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Öka månader"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Minska månader"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Öka dagar"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Minska dagar"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Öka år"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Minska år"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"markerat"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"inte markerat"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"markerade"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Dela med"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Dela med <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Skärmlåsfunktion. Tryck och dra."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Dra uppåt för <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Dra nedåt för <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Dra åt vänster för <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Dra åt höger för <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> ."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Lås upp"</string>
<string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Tyst"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Ljud på"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Sök"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Lås upp genom att dra."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Anslut mikrofonlurar om du vill att lösenordet ska läsas upp."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Punkt."</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 88fc3b6..a9313b7 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"ตั้งเวลา"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"ตั้งวันที่"</string>
<string name="date_time_set" msgid="5777075614321087758">"ตั้งค่า"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"เสร็จสิ้น"</string>
<string name="default_permission_group" msgid="2690160991405646128">"เริ่มต้น"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"ใหม่: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"ไม่ต้องการการอนุญาต"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"เพิ่มบัญชี"</string>
<string name="choose_account_text" msgid="6303348737197849675">"คุณต้องการใช้บัญชีใด"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"เพิ่มบัญชี"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"เพิ่ม"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"ลด"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"แตะ <xliff:g id="VALUE">%s</xliff:g> ค้างไว้"</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"เลื่อนขึ้นเพื่อเพิ่มและเลื่อนลงเพื่อลด"</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"เพิ่มนาที"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"ลดนาที"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"เพิ่มชั่วโมง"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"ลดชั่วโมง"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"ตั้งค่า PM"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"ตั้งค่า AM"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"เพิ่มเดือน"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"ลดเดือน"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"เพิ่มวัน"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"ลดวัน"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"เพิ่มปี"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"ลดปี"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"เลือกไว้"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"ไม่ได้ตรวจสอบ"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"เลือกแล้ว"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"แบ่งปันกับ"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"แบ่งปันด้วย <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"ที่จับสำหรับเลื่อน แตะค้างไว้"</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"เลื่อนขึ้นเพื่อ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"เลื่อนลงเพื่อ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"เลื่อนไปทางซ้ายเพื่อ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"เลื่อนไปทางขวาเพื่อ <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>"</string>
<string name="description_target_unlock" msgid="2228524900439801453">"ปลดล็อก"</string>
<string name="description_target_camera" msgid="969071997552486814">"กล้องถ่ายรูป"</string>
<string name="description_target_silent" msgid="893551287746522182">"ปิดเสียง"</string>
<string name="description_target_soundon" msgid="30052466675500172">"เปิดเสียง"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"ค้นหา"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"กวาดเพื่อปลดล็อก"</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"เสียบชุดหูฟังเพื่อฟังเสียงเมื่อพิมพ์รหัสผ่าน"</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"เครื่องหมายจุด"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 7c01fa3..29cde7d 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Saati ayarla"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Tarihi ayarla"</string>
<string name="date_time_set" msgid="5777075614321087758">"Ayarla"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Tamamlandı"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Varsayılan"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"YENİ: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"İzin gerektirmez"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Hesap ekleyin"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Hangi hesabı kullanmak istiyorsunuz?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Hesap ekle"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Artır"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Azalt"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> rakamına dokunun ve basılı tutun."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Artırmak için yukarı, azaltmak için aşağı kaydırın."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Dakikayı artır"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Dakikayı azalt"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Saati artır"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Saati azalt"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"ÖS değerini ayarla"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"ÖÖ değerini ayarla"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Ayı artır"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Ayı azalt"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Günü artır"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Günü azalt"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Yılı artır"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Yılı azalt"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"işaretli"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"işaretlenmedi"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"seçili"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Şununla paylaş:"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ile paylaş"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Kayan tutma yeri. Dokunun ve basılı tutun."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> için yukarı kaydırın."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> için aşağı kaydırın."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> için sola kaydırın."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> için sağa kaydırın."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Kilidi aç"</string>
<string name="description_target_camera" msgid="969071997552486814">"Kamera"</string>
<string name="description_target_silent" msgid="893551287746522182">"Sessiz"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Ses açık"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Ara"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Kilidi açmak için kaydırın."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Şifre tuşlarının sesli okunmasını dinlemek için mikrofonlu kulaklık takın."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Nokta."</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 4b3fb11..f2ef429 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Установити час"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Установити дату"</string>
<string name="date_time_set" msgid="5777075614321087758">"Застосувати"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Готово"</string>
<string name="default_permission_group" msgid="2690160991405646128">"За умовч."</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВИЙ: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Дозвіл не потрібний"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Додати обліковий запис"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Який обліковий запис використовувати?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Додати облік. запис"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Збільшити"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Зменшити"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> – торкніться й утримуйте."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Проведіть пальцем угору, щоб збільшити, і вниз, щоб зменшити."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Вибрати хвилину в майбутньому"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Вибрати хвилину в минулому"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Вибрати годину в майбутньому"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Вибрати годину в минулому"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Установити час \"пп\""</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Установити час \"дп\""</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Вибрати місяць у майбутньому"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Вибрати місяць у минулому"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Вибрати день у майбутньому"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Вибрати день у минулому"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Вибрати рік у майбутньому"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Вибрати рік у минулому"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"перевірено"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"не перевірено"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"вибрано"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Надіслати через"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Надіслати через <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Вказівник-повзунок. Торкніться й утримуйте."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Проведіть пальцем угору, щоб <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Проведіть пальцем униз, щоб <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Проведіть пальцем ліворуч, щоб <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Проведіть пальцем праворуч, щоб <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Розблокувати"</string>
<string name="description_target_camera" msgid="969071997552486814">"Камера"</string>
<string name="description_target_silent" msgid="893551287746522182">"Без звуку"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Увімкнути звук"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Пошук"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Гортайте, щоб розблокувати."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Підключіть гарнітуру, щоб прослухати відтворені вголос символи пароля."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Крапка."</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index faa0092..94ce574 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"Đặt giờ"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Đặt ngày"</string>
<string name="date_time_set" msgid="5777075614321087758">"Đặt"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"Xong"</string>
<string name="default_permission_group" msgid="2690160991405646128">"Mặc định"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"MỚI: "</font></string>
<string name="no_permissions" msgid="7283357728219338112">"Không yêu cầu quyền"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"Thêm tài khoản"</string>
<string name="choose_account_text" msgid="6303348737197849675">"Bạn muốn sử dụng tài khoản nào?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"Thêm tài khoản"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"Tăng"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"Giảm"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"Chạm và giữ <xliff:g id="VALUE">%s</xliff:g>."</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"Trượt lên để tăng và trượt xuống để giảm."</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"Tăng phút"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"Giảm phút"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"Tăng giờ"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"Giảm giờ"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"Đặt CH"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"Đặt SA"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"Tăng tháng"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"Giảm tháng"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"Tăng ngày"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"Giảm ngày"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"Tăng năm"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"Giảm năm"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"đã kiểm tra"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"chưa chọn"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"đã chọn"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"Chia sẻ với"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"Chia sẻ với <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"Tay trượt. Chạm & giữ."</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"Trượt lên để <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"Trượt xuống để <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"Trượt sang trái để <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"Trượt sang phải để <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
<string name="description_target_unlock" msgid="2228524900439801453">"Mở khóa"</string>
<string name="description_target_camera" msgid="969071997552486814">"Máy ảnh"</string>
<string name="description_target_silent" msgid="893551287746522182">"Im lặng"</string>
<string name="description_target_soundon" msgid="30052466675500172">"Bật âm thanh"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"Tìm kiếm"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"Trượt để mở khóa."</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"Cắm tai nghe để nghe các khóa mật khẩu được đọc."</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"Dấu chấm."</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 9418e38..fd69a3e 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"设置时间"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"设置日期"</string>
<string name="date_time_set" msgid="5777075614321087758">"设置"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"完成"</string>
<string name="default_permission_group" msgid="2690160991405646128">"默认"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"新增:"</font></string>
<string name="no_permissions" msgid="7283357728219338112">"不需要任何权限"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"添加帐户"</string>
<string name="choose_account_text" msgid="6303348737197849675">"您要使用哪个帐户?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"添加帐户"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"增大"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"减小"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"触摸 <xliff:g id="VALUE">%s</xliff:g> 次并按住。"</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"向上滑动可增大值,向下滑动可减小值。"</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"增大分钟值"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"减小分钟值"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"增大小时值"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"减小小时值"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"设置下午时间"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"设置上午时间"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"增大月份值"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"减小月份值"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"增大日的值"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"减小日的值"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"增大年份值"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"减小年份值"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"已选中"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"未选中"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"已选择"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"共享对象"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"与“<xliff:g id="APPLICATION_NAME">%s</xliff:g>”共享"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"滑动手柄。触摸并按住。"</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"向上滑动以<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"向下滑动以<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"向左滑动以<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"向右滑动以<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
<string name="description_target_unlock" msgid="2228524900439801453">"解锁"</string>
<string name="description_target_camera" msgid="969071997552486814">"相机"</string>
<string name="description_target_silent" msgid="893551287746522182">"静音"</string>
<string name="description_target_soundon" msgid="30052466675500172">"打开声音"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"搜索"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"滑动解锁。"</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"需要插入耳机才能听到密码的按键声。"</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"点。"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 57d3f7e..9283fa9 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -1019,8 +1019,7 @@
<string name="time_picker_dialog_title" msgid="8349362623068819295">"設定時間"</string>
<string name="date_picker_dialog_title" msgid="5879450659453782278">"日期設定"</string>
<string name="date_time_set" msgid="5777075614321087758">"設定"</string>
- <!-- no translation found for date_time_done (2507683751759308828) -->
- <skip />
+ <string name="date_time_done" msgid="2507683751759308828">"完成"</string>
<string name="default_permission_group" msgid="2690160991405646128">"預設值"</string>
<string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"新增:"</font></string>
<string name="no_permissions" msgid="7283357728219338112">"無須許可"</string>
@@ -1170,35 +1169,22 @@
<string name="add_account_label" msgid="2935267344849993553">"新增帳戶"</string>
<string name="choose_account_text" msgid="6303348737197849675">"您要使用哪個帳戶?"</string>
<string name="add_account_button_label" msgid="3611982894853435874">"新增帳戶"</string>
- <!-- no translation found for number_picker_increment_button (2412072272832284313) -->
- <skip />
- <!-- no translation found for number_picker_decrement_button (476050778386779067) -->
- <skip />
+ <string name="number_picker_increment_button" msgid="2412072272832284313">"增加"</string>
+ <string name="number_picker_decrement_button" msgid="476050778386779067">"減少"</string>
<string name="number_picker_increment_scroll_mode" msgid="3073101067441638428">"<xliff:g id="VALUE">%s</xliff:g> 輕觸並按住。"</string>
- <!-- no translation found for number_picker_increment_scroll_action (9101473045891835490) -->
- <skip />
- <!-- no translation found for time_picker_increment_minute_button (8865885114028614321) -->
- <skip />
- <!-- no translation found for time_picker_decrement_minute_button (6246834937080684791) -->
- <skip />
- <!-- no translation found for time_picker_increment_hour_button (3652056055810223139) -->
- <skip />
- <!-- no translation found for time_picker_decrement_hour_button (1377479863429214792) -->
- <skip />
+ <string name="number_picker_increment_scroll_action" msgid="9101473045891835490">"向上滑動即可增加,向下滑動即可減少。"</string>
+ <string name="time_picker_increment_minute_button" msgid="8865885114028614321">"增加分鐘數"</string>
+ <string name="time_picker_decrement_minute_button" msgid="6246834937080684791">"減少分鐘數"</string>
+ <string name="time_picker_increment_hour_button" msgid="3652056055810223139">"增加小時數"</string>
+ <string name="time_picker_decrement_hour_button" msgid="1377479863429214792">"減少小時數"</string>
<string name="time_picker_increment_set_pm_button" msgid="4147590696151230863">"設定 PM 值"</string>
<string name="time_picker_decrement_set_am_button" msgid="8302140353539486752">"設定 AM 值"</string>
- <!-- no translation found for date_picker_increment_month_button (5369998479067934110) -->
- <skip />
- <!-- no translation found for date_picker_decrement_month_button (1832698995541726019) -->
- <skip />
- <!-- no translation found for date_picker_increment_day_button (7130465412308173903) -->
- <skip />
- <!-- no translation found for date_picker_decrement_day_button (4131881521818750031) -->
- <skip />
- <!-- no translation found for date_picker_increment_year_button (6318697384310808899) -->
- <skip />
- <!-- no translation found for date_picker_decrement_year_button (4482021813491121717) -->
- <skip />
+ <string name="date_picker_increment_month_button" msgid="5369998479067934110">"增加月數"</string>
+ <string name="date_picker_decrement_month_button" msgid="1832698995541726019">"減少月數"</string>
+ <string name="date_picker_increment_day_button" msgid="7130465412308173903">"增加日數"</string>
+ <string name="date_picker_decrement_day_button" msgid="4131881521818750031">"減少日數"</string>
+ <string name="date_picker_increment_year_button" msgid="6318697384310808899">"增加年數"</string>
+ <string name="date_picker_decrement_year_button" msgid="4482021813491121717">"減少年數"</string>
<string name="checkbox_checked" msgid="7222044992652711167">"已勾選"</string>
<string name="checkbox_not_checked" msgid="5174639551134444056">"尚未勾選"</string>
<string name="radiobutton_selected" msgid="8603599808486581511">"已選取"</string>
@@ -1218,20 +1204,15 @@
<string name="shareactionprovider_share_with" msgid="806688056141131819">"分享對象:"</string>
<string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"與「<xliff:g id="APPLICATION_NAME">%s</xliff:g>」分享"</string>
<string name="content_description_sliding_handle" msgid="415975056159262248">"滑動控制。持續輕觸。"</string>
- <!-- no translation found for description_direction_up (7169032478259485180) -->
- <skip />
- <!-- no translation found for description_direction_down (5087739728639014595) -->
- <skip />
- <!-- no translation found for description_direction_left (7207478719805562165) -->
- <skip />
- <!-- no translation found for description_direction_right (8034433242579600980) -->
- <skip />
+ <string name="description_direction_up" msgid="7169032478259485180">"向上滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
+ <string name="description_direction_down" msgid="5087739728639014595">"向下滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
+ <string name="description_direction_left" msgid="7207478719805562165">"向左滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
+ <string name="description_direction_right" msgid="8034433242579600980">"向右滑動即可<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>。"</string>
<string name="description_target_unlock" msgid="2228524900439801453">"解除鎖定"</string>
<string name="description_target_camera" msgid="969071997552486814">"相機"</string>
<string name="description_target_silent" msgid="893551287746522182">"靜音"</string>
<string name="description_target_soundon" msgid="30052466675500172">"開啟音效"</string>
- <!-- no translation found for description_target_search (3091587249776033139) -->
- <skip />
+ <string name="description_target_search" msgid="3091587249776033139">"搜尋"</string>
<string name="description_target_unlock_tablet" msgid="3833195335629795055">"滑動即可解鎖。"</string>
<string name="keyboard_headset_required_to_hear_password" msgid="7011927352267668657">"連接耳機即可聽取系統朗讀密碼按鍵。"</string>
<string name="keyboard_password_character_no_headset" msgid="2859873770886153678">"點。"</string>
diff --git a/docs/html/guide/topics/ui/declaring-layout.jd b/docs/html/guide/topics/ui/declaring-layout.jd
index 4dc915f..8af4a1c 100644
--- a/docs/html/guide/topics/ui/declaring-layout.jd
+++ b/docs/html/guide/topics/ui/declaring-layout.jd
@@ -194,7 +194,7 @@
appropriate for the view group. As you can see in figure 1, the parent
view group defines layout parameters for each child view (including the child view group).</p>
-<img src="{@docRoot}images/layoutparams.png" alt="" height="300" align="center"/>
+<img src="{@docRoot}images/layoutparams.png" alt="" />
<p class="img-caption"><strong>Figure 1.</strong> Visualization of a view hierarchy with layout
parameters associated with each view.</p>
diff --git a/docs/html/guide/topics/ui/index.jd b/docs/html/guide/topics/ui/index.jd
index 83c8150..45c9ac9 100644
--- a/docs/html/guide/topics/ui/index.jd
+++ b/docs/html/guide/topics/ui/index.jd
@@ -51,7 +51,7 @@
can build it up using Android's set of predefined widgets and layouts, or with custom Views that you
create yourself.</p>
-<img src="{@docRoot}images/viewgroup.png" alt="" width="312" height="211" align="center"/>
+<img src="{@docRoot}images/viewgroup.png" alt="" />
<p>
In order to attach the view hierarchy tree to the screen for rendering, your Activity must call the
diff --git a/docs/html/images/layoutparams.png b/docs/html/images/layoutparams.png
index 7473dcc..d99625e 100644
--- a/docs/html/images/layoutparams.png
+++ b/docs/html/images/layoutparams.png
Binary files differ
diff --git a/docs/html/images/training/firstapp/adt-firstapp-setup.png b/docs/html/images/training/firstapp/adt-firstapp-setup.png
new file mode 100644
index 0000000..c092562
--- /dev/null
+++ b/docs/html/images/training/firstapp/adt-firstapp-setup.png
Binary files differ
diff --git a/docs/html/images/training/firstapp/edittext_gravity.png b/docs/html/images/training/firstapp/edittext_gravity.png
new file mode 100644
index 0000000..f78e676
--- /dev/null
+++ b/docs/html/images/training/firstapp/edittext_gravity.png
Binary files differ
diff --git a/docs/html/images/training/firstapp/edittext_wrap.png b/docs/html/images/training/firstapp/edittext_wrap.png
new file mode 100644
index 0000000..156776d
--- /dev/null
+++ b/docs/html/images/training/firstapp/edittext_wrap.png
Binary files differ
diff --git a/docs/html/images/training/firstapp/firstapp.png b/docs/html/images/training/firstapp/firstapp.png
new file mode 100644
index 0000000..d69cd20
--- /dev/null
+++ b/docs/html/images/training/firstapp/firstapp.png
Binary files differ
diff --git a/docs/html/images/viewgroup.png b/docs/html/images/viewgroup.png
index a4c2518..2c86ddb 100644
--- a/docs/html/images/viewgroup.png
+++ b/docs/html/images/viewgroup.png
Binary files differ
diff --git a/docs/html/training/basics/firstapp/building-ui.jd b/docs/html/training/basics/firstapp/building-ui.jd
new file mode 100644
index 0000000..847163a
--- /dev/null
+++ b/docs/html/training/basics/firstapp/building-ui.jd
@@ -0,0 +1,363 @@
+page.title=Building a Simple User Interface
+parent.title=Building Your First App
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=Running Your App
+previous.link=running-app.html
+next.title=Starting Another Activity
+next.link=starting-activity.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+
+<ol>
+ <li><a href="#LinearLayout">Use a Linear Layout</a></li>
+ <li><a href="#TextInput">Add a Text Input Box</a></li>
+ <li><a href="#Strings">Add String Resources</a></li>
+ <li><a href="#Button">Add a Button</a></li>
+ <li><a href="#Weight">Make the Input Box Fill in the Screen Width</a></li>
+</ol>
+
+
+<h2>You should also read</h2>
+<ul>
+ <li><a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layouts</a></li>
+</ul>
+
+
+</div>
+</div>
+
+
+
+<p>The graphical user interface for an Android app is built using a hierarchy of {@link
+android.view.View} and {@link android.view.ViewGroup} objects. {@link android.view.View} objects are
+usually UI widgets such as a button or text field and {@link android.view.ViewGroup} objects are
+invisible view containers that define how the child views are laid out, such as in a
+grid or a vertical list.</p>
+
+<p>Android provides an XML vocabulary that corresponds to the subclasses of {@link
+android.view.View} and {@link android.view.ViewGroup} so you can define your UI in XML with a
+hierarchy of view elements.</p>
+
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+ <h2>Alternative Layouts</h2>
+ <p>Separating the UI layout into XML files is important for several reasons,
+but it's especially important on Android because it allows you to define alternative layouts for
+different screen sizes. For example, you can create two versions of a layout and tell
+the system to use one on "small" screens and the other on "large" screens. For more information,
+see the class about <a
+href="{@docRoot}training/supporting-hardware/index.html">Supporting Various Hardware</a>.</p>
+</div>
+</div>
+
+<img src="{@docRoot}images/viewgroup.png" alt="" />
+<p class="img-caption"><strong>Figure 1.</strong> Illustration of how {@link
+android.view.ViewGroup} objects form branches in the layout and contain {@link
+android.view.View} objects.</p>
+
+<p>In this lesson, you'll create a layout in XML that includes a text input field and a
+button. In the following lesson, you'll respond when the button is pressed by sending the
+content of the text field to another activity.</p>
+
+
+
+<h2 id="LinearLayout">Use a Linear Layout</h2>
+
+<p>Open the <code>main.xml</code> file from the <code>res/layout/</code>
+directory (every new Android project includes this file by default).</p>
+
+<p class="note"><strong>Note:</strong> In Eclipse, when you open a layout file, you’re first shown
+the ADT Layout Editor. This is an editor that helps you build layouts using WYSIWYG tools. For this
+lesson, you’re going to work directly with the XML, so click the <em>main.xml</em> tab at
+the bottom of the screen to open the XML editor.</p>
+
+<p>By default, the <code>main.xml</code> file includes a layout with a {@link
+android.widget.LinearLayout} root view group and a {@link android.widget.TextView} child view.
+You’re going to re-use the {@link android.widget.LinearLayout} in this lesson, but change its
+contents and layout orientation.</p>
+
+<p>First, delete the {@link android.widget.TextView} element and change the value
+<a href="{@docRoot}reference/android/widget/LinearLayout.html#attr_android:orientation">{@code
+android:orientation}</a> to be <code>"horizontal"</code>. The result looks like this:</p>
+
+<pre>
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="horizontal" >
+</LinearLayout>
+</pre>
+
+<p>{@link android.widget.LinearLayout} is a view group (a subclass of {@link
+android.view.ViewGroup}) that lays out child views in either a vertical or horizontal orientation,
+as specified by the <a
+href="{@docRoot}reference/android/widget/LinearLayout.html#attr_android:orientation">{@code
+android:orientation}</a> attribute. Each child of a {@link android.widget.LinearLayout} appears on
+the screen in the order in which it appears in the XML.</p>
+
+<p>The other two attributes, <a
+href="{@docRoot}reference/android/view/View.html#attr_android:layout_width">{@code
+android:layout_width}</a> and <a
+href="{@docRoot}reference/android/view/View.html#attr_android:layout_height">{@code
+android:layout_height}</a>, are required for all views in order to specify their size.</p>
+
+<p>Because the {@link android.widget.LinearLayout} is the root view in the layout, it should fill
+the entire screen area that's
+available to the app by setting the width and height to
+<code>"fill_parent"</code>.</p>
+
+<p class="note"><strong>Note:</strong> Beginning with Android 2.2 (API level 8),
+<code>"fill_parent"</code> has been renamed <code>"match_parent"</code> to better reflect the
+behavior. The reason is that if you set a view to <code>"fill_parent"</code> it does not expand to
+fill the remaining space after sibling views are considered, but instead expands to
+<em>match</em> the size of the parent view no matter what—it will overlap any sibling
+views.</p>
+
+<p>For more information about layout properties, see the <a
+href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layout</a> guide.</p>
+
+
+
+<h2 id="TextInput">Add a Text Input Box</h2>
+
+<p>To create a user-editable text box, add an {@link android.widget.EditText
+<EditText>} element inside the {@link android.widget.LinearLayout <LinearLayout>}. The {@link
+android.widget.EditText} class is a subclass of {@link android.view.View} that displays an editable
+text box.</p>
+
+<p>Like every {@link android.view.View} object, you must define certain XML attributes to specify
+the {@link android.widget.EditText} object's properties. Here’s how you should declare it
+inside the {@link android.widget.LinearLayout <LinearLayout>} element:</p>
+
+<pre>
+ <EditText android:id="@+id/edit_message"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:hint="@string/edit_message" />
+</pre>
+
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+ <h3>About resource objects</h3>
+ <p>A resource object is simply a unique integer name that's associated with an app resource,
+such as a bitmap, layout file, or string.</p>
+ <p>Every resource has a
+corresponding resource object defined in your project's {@code gen/R.java} file. You can use the
+object names in the {@code R} class to refer to your resources, such as when you need to specify a
+string value for the <a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:hint">{@code android:hint}</a>
+attribute. You can also create arbitrary resource IDs that you associate with a view using the <a
+href="{@docRoot}reference/android/view/View.html#attr_android:id">{@code android:id}</a> attribute,
+which allows you to reference that view from other code.</p>
+ <p>The SDK tools generate the {@code R.java} each time you compile your app. You should never
+modify this file by hand.</p>
+</div>
+</div>
+
+<p>About these attributes:</p>
+
+<dl>
+<dt><a href="{@docRoot}reference/android/view/View.html#attr_android:id">{@code android:id}</a></dt>
+<dd>This provides a unique identifier for the view, which you can use to reference the object
+from your app code, such as to read and manipulate the object (you'll see this in the next
+lesson).
+
+<p>The at-symbol (<code>@</code>) is required when you want to refer to a resource object from
+XML, followed by the resource type ({@code id} in this case), then the resource name ({@code
+edit_message}). (Other resources can use the same name as long as they are not the same
+resource type—for example, the string resource uses the same name.)</p>
+
+<p>The plus-symbol (<code>+</code>) is needed only when you're defining a resource ID for the
+first time. It tells the SDK tools that the resource ID needs to be created. Thus, when the app is
+compiled, the SDK tools use the ID value, <code>edit_message</code>, to create a new identifier in
+your project's {@code gen/R.java} file that is now assiciated with the {@link
+android.widget.EditText} element. Once the resource ID is created, other references to the ID do not
+need the plus symbol. See the sidebox for more information about resource objects.</p></dd>
+
+<dt><a
+href="{@docRoot}reference/android/view/View.html#attr_android:layout_width">{@code
+android:layout_width}</a> and <a
+href="{@docRoot}reference/android/view/View.html#attr_android:layout_height">{@code
+android:layout_height}</a></dt>
+<dd>Instead of using specific sizes for the width and height, the <code>"wrap_content"</code> value
+specifies that the view should be only as big as needed to fit the contents of the view. If you
+were to instead use <code>"fill_parent"</code>, then the {@link android.widget.EditText}
+element would fill the screen, because it'd match the size of the parent {@link
+android.widget.LinearLayout}. For more information, see the <a
+href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layouts</a> guide.</dd>
+
+<dt><a
+href="{@docRoot}reference/android/widget/TextView.html#attr_android:hint">{@code
+android:hint}</a></dt>
+<dd>This is a default string to display when the text box is empty. Instead of using a hard-coded
+string as the value, the value given in this example refers to a string resource. When you add the
+{@code
+"@string/edit_message"} value, you’ll see a compiler error because there’s no matching string
+resource by that name. You'll fix this in the next section by defining the string
+resource.</dd>
+</dl>
+
+
+
+<h2 id="Strings">Add String Resources</h2>
+
+<p>When you need to add text in the user interface, you should always specify each string of text in
+a resource file. String resources allow you to maintain a single location for all string
+values, which makes it easier to find and update text. Externalizing the strings also allows you to
+localize your app to different languages by providing alternative definitions for each
+string.</p>
+
+<p>By default, your Android project includes a string resource file at
+<code>res/values/strings.xml</code>. Open this file, delete the existing <code>"hello"</code>
+string, and add one for the
+<code>"edit_message"</code> string used by the {@link android.widget.EditText <EditText>}
+element.</p>
+
+<p>While you’re in this file, also add a string for the button you’ll soon add, called
+<code>"button_send"</code>.</p>
+
+<p>The result for <code>strings.xml</code> looks like this:</p>
+
+<pre>
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">My First App</string>
+ <string name="edit_message">Enter a message</string>
+ <string name="button_send">Send</string>
+</resources>
+</pre>
+
+<p>For more information about using string resources to localize your app for several languages,
+see the <a
+href="{@docRoot}training/basics/supporting-devices/index.html">Supporting Various Devices</a>
+class.</p>
+
+
+
+
+<h2 id="Button">Add a Button</h2>
+
+<p>Now add a {@link android.widget.Button <Button>} to the layout, immediately following the
+{@link android.widget.EditText <EditText>} element:</p>
+
+<pre>
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/button_send" />
+</pre>
+
+<p>The height and width are set to <code>"wrap_content"</code> so the button is only as big as
+necessary to fit the button's text.</p>
+
+
+
+<h2 id="Weight">Make the Input Box Fill in the Screen Width</h2>
+
+<p>The layout is currently designed so that both the {@link android.widget.EditText} and {@link
+android.widget.Button} widgets are only as big as necessary to fit their content, as shown in
+figure 2.</p>
+
+<img src="{@docRoot}images/training/firstapp/edittext_wrap.png" />
+<p class="img-caption"><strong>Figure 2.</strong> The {@link android.widget.EditText} and {@link
+android.widget.Button} widgets have their widths set to
+<code>"wrap_content"</code>.</p>
+
+<p>This works fine for the button, but not as well for the text box, because the user might type
+something longer and there's extra space left on the screen. So, it'd be nice to fill that width
+using the text box.
+{@link android.widget.LinearLayout} enables such a design with the <em>weight</em> property, which
+you can specify using the <a
+href="{@docRoot}reference/android/widget/LinearLayout.LayoutParams.html#weight">{@code
+android:layout_weight}</a> attribute.</p>
+
+<p>The weight value allows you to specify the amount of remaining space each view should consume,
+relative to the amount consumed by sibling views, just like the ingredients in a drink recipe: "2
+parts vodka, 1 part coffee liquer" means two-thirds of the drink is vodka. For example, if you give
+one view a weight of 2 and another one a weight of 1, the sum is 3, so the first view gets 2/3 of
+the remaining space and the second view gets the rest. If you give a third view a weight of 1,
+then the first view now gets 1/2 the remaining space, while the remaining two each get 1/4.</p>
+
+<p>The default weight for all views is 0, so if you specify any weight value
+greater than 0 to only one view, then that view fills whatever space remains after each view is
+given the space it requires. So, to fill the remaining space with the {@link
+android.widget.EditText} element, give it a weight of 1 and leave the button with no weight.</p>
+
+<pre>
+ <EditText
+ android:layout_weight="1"
+ ... />
+</pre>
+
+<p>In order to improve the layout efficiency when you specify the weight, you should change the
+width of the {@link android.widget.EditText} to be
+zero (0dp). Setting the width to zero improves layout performance because using
+<code>"wrap_content"</code> as the width requires the system to calculate a width that is
+ultimately irrelevant because the weight value requires another width calculation to fill the
+remaining space.</p>
+<pre>
+ <EditText
+ android:layout_weight="1"
+ android:layout_width="0dp"
+ ... />
+</pre>
+
+<p>Figure 3
+shows the result when you assign all weight to the {@link android.widget.EditText} element.</p>
+
+<img src="{@docRoot}images/training/firstapp/edittext_gravity.png" />
+<p class="img-caption"><strong>Figure 3.</strong> The {@link android.widget.EditText} widget is
+given all the layout weight, so fills the remaining space in the {@link
+android.widget.LinearLayout}.</p>
+
+<p>Here’s how your complete layout file should now look:</p>
+
+<pre>
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="horizontal">
+ <EditText android:id="@+id/edit_message"
+ android:layout_weight="1"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:hint="@string/edit_message" />
+ <Button android:id="@+id/button_send"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/button_send" />
+</LinearLayout>
+</pre>
+
+<p>This layout is applied by the default {@link android.app.Activity} class
+that the SDK tools generated when you created the project, so you can now run the app to see the
+results:</p>
+
+<ul>
+ <li>In Eclipse, click <strong>Run</strong> from the toolbar.</li>
+ <li>Or from a command line, change directories to the root of your Android project and
+execute:
+<pre>
+ant debug
+adb install bin/MyFirstApp-debug.apk
+</pre></li>
+</ul>
+
+<p>Continue to the next lesson to learn how you can respond to button presses, read content
+from the text field, start another activity, and more.</p>
+
+
+
diff --git a/docs/html/training/basics/firstapp/creating-project.jd b/docs/html/training/basics/firstapp/creating-project.jd
new file mode 100644
index 0000000..5a89f2e
--- /dev/null
+++ b/docs/html/training/basics/firstapp/creating-project.jd
@@ -0,0 +1,142 @@
+page.title=Creating an Android Project
+parent.title=Building Your First App
+parent.link=index.html
+
+trainingnavtop=true
+next.title=Running Your App
+next.link=running-app.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+
+<ol>
+ <li><a href="#Eclipse">Create a Project with Eclipse</a></li>
+ <li><a href="#CommandLine">Create a Project with Command Line Tools</a></li>
+</ol>
+
+<h2>You should also read</h2>
+
+<ul>
+ <li><a href="{@docRoot}sdk/installing.html">Installing the
+SDK</a></li>
+ <li><a href="{@docRoot}guide/developing/projects/index.html">Managing Projects</a></li>
+</ul>
+
+
+</div>
+</div>
+
+<p>An Android project contains all the files that comprise the source code for your Android
+app. The Android SDK tools make it easy to start a new Android project with a set of
+default project directories and files.</p>
+
+<p>This lesson
+shows how to create a new project either using Eclipse (with the ADT plugin) or using the
+SDK tools from a command line.</p>
+
+<p class="note"><strong>Note:</strong> You should already have the Android SDK installed, and if
+you're using Eclipse, you should have installed the <a
+href="{@docRoot}sdk/eclipse-adt.html">ADT plugin</a> as well. If you have not installed
+these, see <a href="{@docRoot}sdk/installing.html">Installing the Android SDK</a> and return here
+when you've completed the installation.</p>
+
+
+<h2 id="Eclipse">Create a Project with Eclipse</h2>
+
+<div class="figure" style="width:416px">
+<img src="{@docRoot}images/training/firstapp/adt-firstapp-setup.png" alt="" />
+<p class="img-caption"><strong>Figure 1.</strong> The new project wizard in Eclipse.</p>
+</div>
+
+<ol>
+ <li>In Eclipse, select <strong>File > New > Project</strong>.
+The resulting dialog should have a folder labeled <em>Android</em>. (If you don’t see the
+<em>Android</em> folder,
+then you have not installed the ADT plugin—see <a
+href="{@docRoot}sdk/eclipse-adt.html#installing">Installing the ADT Plugin</a>).</li>
+ <li>Open the <em>Android</em> folder, select <em>Android Project</em> and click
+<strong>Next</strong>.</li>
+ <li>Enter a project name (such as "MyFirstApp") and click <strong>Next</strong>.</li>
+ <li>Select a build target. This is the platform version against which you will compile your app.
+<p>We recommend that you select the latest version possible. You can still build your app to
+support older versions, but setting the build target to the latest version allows you to
+easily optimize your app for a great user experience on the latest Android-powered devices.</p>
+<p>If you don't see any built targets listed, you need to install some using the Android SDK
+Manager tool. See <a href="{@docRoot}sdk/installing.html#AddingComponents">step 4 in the
+installing guide</a>.</p>
+<p>Click <strong>Next</strong>.</p></li>
+ <li>Specify other app details, such as the:
+ <ul>
+ <li><em>Application Name</em>: The app name that appears to the user. Enter "My First
+App".</li>
+ <li><em>Package Name</em>: The package namespace for your app (following the same
+rules as packages in the Java programming language). Your package name
+must be unique across all packages installed on the Android system. For this reason, it's important
+that you use a standard domain-style package name that’s appropriate to your company or
+publisher entity. For
+your first app, you can use something like "com.example.myapp." However, you cannot publish your
+app using the "com.example" namespace.</li>
+ <li><em>Create Activity</em>: This is the class name for the primary user activity in your
+app (an activity represents a single screen in your app). Enter "MyFirstActivity".</li>
+ <li><em>Minimum SDK</em>: Select <em>4 (Android 1.6)</em>.
+ <p>Because this version is lower than the build target selected for the app, a warning
+appears, but that's alright. You simply need to be sure that you don't use any APIs that require an
+<a href="{@docRoot}guide/appendix/api-levels.html">API level</a> greater than the minimum SDK
+version without first using some code to verify the device's system version (you'll see this in some
+other classes).</p>
+ </li>
+ </ul>
+ <p>Click <strong>Finish</strong>.</p>
+ </li>
+</ol>
+
+<p>Your Android project is now set up with some default files and you’re ready to begin
+building the app. Continue to the <a href="running-app.html">next lesson</a>.</p>
+
+
+
+<h2 id="CommandLine">Create a Project with Command Line Tools</h2>
+
+<p>If you're not using the Eclipse IDE with the ADT plugin, you can instead create your project
+using the SDK tools in a command line:</p>
+
+<ol>
+ <li>Change directories into the Android SDK’s <code>tools/</code> path.</li>
+ <li>Execute:
+<pre class="no-pretty-print">android list targets</pre>
+<p>This prints a list of the available Android platforms that you’ve downloaded for your SDK. Find
+the platform against which you want to compile your app. Make a note of the target id. We
+recommend that you select the highest version possible. You can still build your app to
+support older versions, but setting the build target to the latest version allows you to optimize
+your app for the latest devices.</p>
+<p>If you don't see any targets listed, you need to
+install some using the Android SDK
+Manager tool. See <a href="{@docRoot}sdk/installing.html#AddingComponents">step 4 in the
+installing guide</a>.</p></li>
+ <li>Execute:
+<pre class="no-pretty-print">
+android create project --target <target-id> --name MyFirstApp \
+--path <path-to-workspace>/MyFirstApp --activity MyFirstActivity \
+--package com.example.myapp
+</pre>
+<p>Replace <code><target-id></code> with an id from the list of targets (from the previous step)
+and replace
+<code><path-to-workspace></code> with the location in which you want to save your Android
+projects.</p></li>
+</ol>
+
+<p>Your Android project is now set up with several default configurations and you’re ready to begin
+building the app. Continue to the <a href="running-app.html">next lesson</a>.</p>
+
+<p class="note"><strong>Tip:</strong> Add the <code>platform-tools/</code> as well as the
+<code>tools/</code> directory to your <code>PATH</code> environment variable.</p>
+
+
+
+
diff --git a/docs/html/training/basics/firstapp/index.jd b/docs/html/training/basics/firstapp/index.jd
new file mode 100644
index 0000000..a95ed8e
--- /dev/null
+++ b/docs/html/training/basics/firstapp/index.jd
@@ -0,0 +1,64 @@
+page.title=Building Your First App
+
+trainingnavtop=true
+startpage=true
+next.title=Creating an Android Project
+next.link=creating-project.html
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Dependencies and prerequisites</h2>
+
+<ul>
+ <li>Android 1.6 or higher</li>
+ <li><a href="http://developer.android.com/sdk/index.html">Android SDK</a></li>
+</ul>
+
+</div>
+</div>
+
+<p>Welcome to Android application development!</p>
+
+<p>This class teaches you how to build your first Android app. You’ll learn how to create an Android
+project and run a debuggable version of the app. You'll also learn some fundamentals of Android app
+design, including how to build a simple user interface and handle user input.</p>
+
+<p>Before you start this class, be sure that you have your development environment set up. You need
+to:</p>
+<ol>
+ <li>Download the Android SDK Starter Package.</li>
+ <li>Install the ADT plugin for Eclipse (if you’ll use the Eclipse IDE).</li>
+ <li>Download the latest SDK tools and platforms using the SDK Manager.</li>
+</ol>
+
+<p>If you haven't already done this setup, read <a href="{@docRoot}sdk/installing.html">Installing
+the SDK</a>. Once you've finished the setup, you're ready to begin this class.</p>
+
+<p>This class uses a tutorial format that incrementally builds a small Android app in order to teach
+you some fundamental concepts about Android development, so it's important that you follow each
+step.</p>
+
+<p><strong><a href="creating-project.html">Start the first lesson ›</a></strong></p>
+
+
+<h2>Lessons</h2>
+
+<dl>
+ <dt><b><a href="creating-project.html">Creating an Android Project</a></b></dt>
+ <dd>Shows how to create a project for an Android app, which includes a set of default
+app files.</dd>
+
+ <dt><b><a href="running-app.html">Running Your Application</a></b></dt>
+ <dd>Shows how to run your app on an Android-powered device or the Android
+emulator.</dd>
+
+ <dt><b><a href="building-ui.html">Building a Simple User Interface</a></b></dt>
+ <dd>Shows how to create a new user interface using an XML file.</dd>
+
+ <dt><b><a href="starting-activity.html">Starting Another Activity</a></b></dt>
+ <dd>Shows how to respond to a button press, start another activity, send it some
+data, then receive the data in the subsequent activity.</dd>
+</dl>
diff --git a/docs/html/training/basics/firstapp/running-app.jd b/docs/html/training/basics/firstapp/running-app.jd
new file mode 100644
index 0000000..2398fa0
--- /dev/null
+++ b/docs/html/training/basics/firstapp/running-app.jd
@@ -0,0 +1,178 @@
+page.title=Running Your App
+parent.title=Building Your First App
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=Creating a Project
+previous.link=creating-project.html
+next.title=Building a Simple User Interface
+next.link=building-ui.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+
+<ol>
+ <li><a href="#RealDevice">Run on a Real Device</a></li>
+ <li><a href="#Emulator">Run on the Emulator</a></li>
+</ol>
+
+<h2>You should also read</h2>
+
+<ul>
+ <li><a href="{@docRoot}guide/developing/device.html">Using Hardware Devices</a></li>
+ <li><a href="{@docRoot}guide/developing/devices/index.html">Managing Virtual Devices</a></li>
+ <li><a href="{@docRoot}guide/developing/projects/index.html">Managing Projects</a></li>
+</ul>
+
+
+</div>
+</div>
+
+
+<p>If you followed the <a href="{@docRoot}creating-project.html">previous lesson</a> to create an
+Android project, it includes a default set of "Hello World" source files that allow you to
+run the app right away.</p>
+
+<p>How you run your app depends on two things: whether you have a real Android-powered device and
+whether you’re using Eclipse. This lesson shows you how to install and run your app on a
+real device and on the Android emulator, and in both cases with either Eclipse or the command line
+tools.</p>
+
+<p>Before you run your app, you should be aware of a few directories and files in the Android
+project:</p>
+
+<dl>
+ <dt><code>AndroidManifest.xml</code></dt>
+ <dd>This manifest file describes the fundamental characteristics of the app and defines each of
+its components. You'll learn about various declarations in this file as you read more training
+classes.</dd>
+ <dt><code>src/</code></dt>
+ <dd>Directory for your app's main source files. By default, it includes an {@link
+android.app.Activity} class that runs when your app is launched using the app icon.</dd>
+ <dt><code>res/</code></dt>
+ <dd>Contains several sub-directories for app resources. Here are just a few:
+ <dl style="margin-top:1em">
+ <dt><code>drawable-hdpi/</code></dt>
+ <dd>Directory for drawable objects (such as bitmaps) that are designed for high-density
+(hdpi) screens. Other drawable directories contain assets designed for other screen densities.</dd>
+ <dt><code>layout/</code></dt>
+ <dd>Directory for files that define your app's user interface.</dd>
+ <dt><code>values/</code></dt>
+ <dd>Directory for other various XML files that contain a collection of resources, such as
+string and color definitions.</dd>
+ </dl>
+ </dd>
+</dl>
+
+<p>When you build and run the default Android project, the default {@link android.app.Activity}
+class in the <code>src/</code> directory starts and loads a layout file from the
+<code>layout/</code> directory, which includes a "Hello World" message. Not real exciting, but it's
+important that you understand how to build and run your app before adding real functionality to
+the app.</p>
+
+
+
+<h2 id="RealDevice">Run on a Real Device</h2>
+
+<p>Whether you’re using Eclipse or the command line, you need to:</p>
+
+<ol>
+ <li>Plug in your Android-powered device to your machine with a USB cable.
+If you’re developing on Windows, you might need to install the appropriate USB driver for your
+device. For help installing drivers, see the <a href=”{@docRoot}sdk/oem-usb.html”>OEM USB
+Drivers</a> document.</li>
+ <li>Ensure that <strong>USB debugging</strong> is enabled in the device Settings (open Settings
+and navitage to <strong>Applications > Development</strong> on most devices, or select
+<strong>Developer options</strong> on Android 4.0 and higher).</li>
+</ol>
+
+<p>To run the app from Eclipse, open one of your project's files and click
+<strong>Run</strong> from the toolbar. Eclipse installs the app on your connected device and starts
+it.</p>
+
+
+<p>Or to run your app from a command line:</p>
+
+<ol>
+ <li>Change directories to the root of your Android project and execute:
+<pre class="no-pretty-print">ant debug</pre></li>
+ <li>Make sure the Android SDK <code>platform-tools/</code> directory is included in your
+<code>PATH</code> environment variable, then execute:
+<pre class="no-pretty-print">adb install bin/MyFirstApp-debug.apk</pre></li>
+ <li>On your device, locate <em>MyFirstActivity</em> and open it.</li>
+</ol>
+
+<p>To start adding stuff to the app, continue to the <a href="building-ui.html">next
+lesson</a>.</p>
+
+
+
+<h2 id="Emulator">Run on the Emulator</h2>
+
+<p>Whether you’re using Eclipse or the command line, you need to first create an <a
+href="{@docRoot}guide/developing/devices/index.html">Android Virtual
+Device</a> (AVD). An AVD is a
+device configuration for the Android emulator that allows you to model
+different device configurations.</p>
+
+<div class="figure" style="width:457px">
+ <img src="{@docRoot}images/screens_support/avds-config.png" alt="" />
+ <p class="img-caption"><strong>Figure 1.</strong> The AVD Manager showing a few virtual
+devices.</p>
+</div>
+
+<p>To create an AVD:</p>
+<ol>
+ <li>Launch the Android Virtual Device Manager:
+ <ol type="a">
+ <li>In Eclipse, select <strong>Window > AVD Manager</strong>, or click the <em>AVD
+Manager</em> icon in the Eclipse toolbar.</li>
+ <li>From the command line, change directories to <code><sdk>/tools/</code> and execute:
+<pre class="no-pretty-print">./android avd</pre></li>
+ </ol>
+ </li>
+ <li>In the <em>Android Virtual Device Device Manager</em> panel, click <strong>New</strong>.</li>
+ <li>Fill in the details for the AVD.
+Give it a name, a platform target, an SD card size, and a skin (HVGA is default).</li>
+ <li>Click <strong>Create AVD</strong>.</li>
+ <li>Select the new AVD from the <em>Android Virtual Device Manager</em> and click
+<strong>Start</strong>.</li>
+ <li>After the emulator boots up, unlock the emulator screen.</li>
+</ol>
+
+<p>To run the app from Eclipse, open one of your project's files and click
+<strong>Run</strong> from the toolbar. Eclipse installs the app on your AVD and starts it.</p>
+
+
+<p>Or to run your app from the command line:</p>
+
+<ol>
+ <li>Change directories to the root of your Android project and execute:
+<pre class="no-pretty-print">ant debug</pre></li>
+ <li>Make sure the Android SDK <code>platform-tools/</code> directory is included in your
+<code>PATH</code> environment
+variable, then execute:
+<pre class="no-pretty-print">adb install bin/MyFirstApp-debug.apk</pre></li>
+ <li>On the emulator, locate <em>MyFirstActivity</em> and open it.</li>
+</ol>
+
+
+<p>To start adding stuff to the app, continue to the <a href="building-ui.html">next
+lesson</a>.</p>
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/training/basics/firstapp/starting-activity.jd b/docs/html/training/basics/firstapp/starting-activity.jd
new file mode 100644
index 0000000..16a6fd8
--- /dev/null
+++ b/docs/html/training/basics/firstapp/starting-activity.jd
@@ -0,0 +1,308 @@
+page.title=Starting Another Activity
+parent.title=Building Your First App
+parent.link=index.html
+
+trainingnavtop=true
+previous.title=Building a Simpler User Interface
+previous.link=building-ui.html
+
+@jd:body
+
+
+<!-- This is the training bar -->
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+
+<ol>
+ <li><a href="#RespondToButton">Respond to the Send Button</a></li>
+ <li><a href="#BuildIntent">Build an Intent</a></li>
+ <li><a href="#StartActivity">Start the Second Activity</a></li>
+ <li><a href="#CreateActivity">Create the Second Activity</a>
+ <ol>
+ <li><a href="#AddToManifest">Add it to the manifest</a></li>
+ </ol>
+ </li>
+ <li><a href="#ReceiveIntent">Receive the Intent</a></li>
+ <li><a href="#DisplayMessage">Display the Message</a></li>
+</ol>
+
+<h2>You should also read</h2>
+
+<ul>
+ <li><a href="{@docRoot}sdk/installing.html">Installing the
+SDK</a></li>
+</ul>
+
+
+</div>
+</div>
+
+
+
+<p>After completing the <a href="building-ui.html">previous lesson</a>, you have an app that
+shows an activity (a single screen) with a text box and a button. In this lesson, you’ll add some
+code to <code>MyFirstActivity</code> that
+starts a new activity when the user selects the Send button.</p>
+
+
+<h2 id="RespondToButton">Respond to the Send Button</h2>
+
+<p>To respond to the button's on-click event, open the <code>main.xml</code> layout file and add the
+<a
+href="{@docRoot}reference/android/view/View.html#attr_android:onClick">{@code android:onClick}</a>
+attribute to the {@link android.widget.Button <Button>} element:</p>
+
+<pre>
+<Button android:id="@+id/button_send"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/button_send"
+ android:onClick="sendMessage" />
+</pre>
+
+<p>The <a
+href="{@docRoot}reference/android/view/View.html#attr_android:onClick">{@code
+android:onClick}</a> attribute’s value, <code>sendMessage</code>, is the name of a method in your
+activity that you want to call when the user selects the button.</p>
+
+<p>Add the corresponding method inside the <code>MyFirstActivity</code> class:</p>
+
+<pre>
+/** Called when the user selects the Send button */
+public void sendMessage(View view) {
+ // Do something in response to button
+}
+</pre>
+
+<p class="note"><strong>Tip:</strong> In Eclipse, press Ctrl + Shift + O to import missing classes
+(Cmd + Shift + O on Mac).</p>
+
+<p>Note that, in order for the system to match this method to the method name given to <a
+href="{@docRoot}reference/android/view/View.html#attr_android:onClick">{@code android:onClick}</a>,
+the signature must be exactly as shown. Specifically, the method must:</p>
+
+<ul>
+<li>Be public</li>
+<li>Have a void return value</li>
+<li>Have a {@link android.view.View} as the only parameter (this will be the {@link
+android.view.View} that was clicked)</li>
+</ul>
+
+<p>Next, you’ll fill in this method to read the contents of the text box and deliver that text to
+another activity.</p>
+
+
+
+<h2 id="BuildIntent">Build an Intent</h2>
+
+<p>An {@link android.content.Intent} is an object that provides runtime binding between separate
+components (such as two activities). The {@link android.content.Intent} represents an
+app’s "intent to do something." You can use an {@link android.content.Intent} for a wide
+variety of tasks, but most often they’re used to start another activity.</p>
+
+<p>Inside the {@code sendMessage()} method, create an {@link android.content.Intent} to start
+an activity called {@code DisplayMessageActvity}:</p>
+
+<pre>
+Intent intent = new Intent(this, DisplayMessageActivity.class);
+</pre>
+
+<p>The constructor used here takes two parameters:</p>
+<ul>
+ <li>A {@link
+android.content.Context} as its first parameter ({@code this} is used because the {@link
+android.app.Activity} class is a subclass of {@link android.content.Context})
+ <li>The {@link java.lang.Class} of the app component to which the system should deliver
+the {@link android.content.Intent} (in this case, the activity that should be started)
+</ul>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+ <h3>Sending an intent to other apps</h3>
+ <p>The intent created in this lesson is what's considered an <em>explicit intent</em>, because the
+{@link android.content.Intent}
+specifies the exact app component to which the intent should be given. However, intents
+can also be <em>implicit</em>, in which case the {@link android.content.Intent} does not specify
+the desired component, but allows any app installed on the device to respond to the intent
+as long as it satisfies the meta-data specifications for the action that's specified in various
+{@link android.content.Intent} parameters. For more informations, see the class about <a
+href="{@docRoot}training/intents/index.html">Interacting with Other Apps</a>.</p>
+</div>
+</div>
+
+<p class="note"><strong>Note:</strong> The reference to {@code DisplayMessageActivity}
+will raise an error if you’re using an IDE such as Eclipse because the class doesn’t exist yet.
+Ignore the error for now; you’ll create the class soon.</p>
+
+<p>An intent not only allows you to start another activity, but can carry a bundle of data to the
+activity as well. So, use {@link android.app.Activity#findViewById findViewById()} to get the
+{@link android.widget.EditText} element and add its message to the intent:</p>
+
+<pre>
+Intent intent = new Intent(this, DisplayMessageActivity.class);
+EditText editText = (EditText) findViewById(R.id.edit_message);
+String message = editText.getText().toString();
+intent.putExtra(EXTRA_MESSAGE, message);
+</pre>
+
+<p>An {@link android.content.Intent} can carry a collection of various data types as key-value
+pairs called <em>extras</em>. The {@link android.content.Intent#putExtra putExtra()} method takes a
+string as the key and the value in the second parameter.</p>
+
+<p>In order for the next activity to query the extra data, you should define your keys using a
+public constant. So add the {@code EXTRA_MESSAGE} definition to the top of the {@code
+MyFirstActivity} class:</p>
+
+<pre>
+public class MyFirstActivity extends Activity {
+ public final static String EXTRA_MESSAGE = "com.example.myapp.MESSAGE";
+ ...
+}
+</pre>
+
+<p>It's generally a good practice to define keys for extras with your app's package name as a prefix
+to ensure it's unique, in case your app interacts with other apps.</p>
+
+
+<h2 id="StartActivity">Start the Second Activity</h2>
+
+<p>To start an activity, you simply need to call {@link android.app.Activity#startActivity
+startActivity()} and pass it your {@link android.content.Intent}.</p>
+
+<p>The system receives this call and starts an instance of the {@link android.app.Activity}
+specified by the {@link android.content.Intent}.</p>
+
+<p>With this method included, the complete {@code sendMessage()} method that's invoked by the Send
+button now looks like this:</p>
+
+<pre>
+/** Called when the user selects the Send button */
+public void sendMessage(View view) {
+ Intent intent = new Intent(this, DisplayMessageActivity.class);
+ EditText editText = (EditText) findViewById(R.id.edit_message);
+ String message = editText.getText().toString();
+ intent.putExtra(EXTRA_MESSAGE, message);
+ startActivity(intent);
+}
+</pre>
+
+<p>Now you need to create the {@code DisplayMessageActivity} class in order for this to
+work.</p>
+
+
+
+<h2 id="CreateActivity">Create the Second Activity</h2>
+
+<p>In your project, create a new class file under the <code>src/<package-name>/</code>
+directory called <code>DisplayMessageActivity.java</code>.</p>
+
+<p class="note"><strong>Tip:</strong> In Eclipse, right-click the package name under the
+<code>src/</code> directory and select <strong>New > Class</strong>.
+Enter "DisplayMessageActivity" for the name and {@code android.app.Activity} for the superclass.</p>
+
+<p>Inside the class, add the {@link android.app.Activity#onCreate onCreate()} callback method:</p>
+
+<pre>
+public class DisplayMessageActivity extends Activity {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+}
+</pre>
+
+<p>All subclasses of {@link android.app.Activity} must implement the {@link
+android.app.Activity#onCreate onCreate()} method. The system calls this when creating a new
+instance of the activity. It is where you must define the activity layout and where you should
+initialize essential activity components.</p>
+
+
+
+<h3 id="AddToManifest">Add it to the manifest</h3>
+
+<p>You must declare all activities in your manifest file, <code>AndroidManifest.xml</code>, using an
+<a
+href="{@docRoot}guide/topics/manifest/activity-element.html">{@code <activity>}</a> element.</p>
+
+<p>Because {@code DisplayMessageActivity} is invoked using an explicit intent, it does not require
+any intent filters (such as those you can see in the manifest for <code>MyFirstActivity</code>). So
+the declaration for <code>DisplayMessageActivity</code> can be simply one line of code inside the <a
+href="{@docRoot}guide/topics/manifest/application-element.html">{@code <application>}</a>
+element:</p>
+
+<pre>
+<application ... >
+ <activity android:name="com.example.myapp.DisplayMessageActivity" />
+ ...
+</application>
+</pre>
+
+<p>The app is now runnable because the {@link android.content.Intent} in the
+first activity now resolves to the {@code DisplayMessageActivity} class. If you run the app now,
+pressing the Send button starts the
+second activity, but it doesn't show anything yet.</p>
+
+
+<h2 id="ReceiveIntent">Receive the Intent</h2>
+
+<p>Every {@link android.app.Activity} is invoked by an {@link android.content.Intent}, regardless of
+how the user navigated there. You can get the {@link android.content.Intent} that started your
+activity by calling {@link android.app.Activity#getIntent()} and the retrieve data contained
+within it.</p>
+
+<p>In the {@code DisplayMessageActivity} class’s {@link android.app.Activity#onCreate onCreate()}
+method, get the intent and extract the message delivered by {@code MyFirstActivity}:</p>
+
+<pre>
+Intent intent = getIntent();
+String message = intent.getStringExtra(MyFirstActivity.EXTRA_MESSAGE);
+</pre>
+
+
+
+<h2 id="DisplayMessage">Display the Message</h2>
+
+<p>To show the message on the screen, create a {@link android.widget.TextView} widget and set the
+text using {@link android.widget.TextView#setText setText()}. Then add the {@link
+android.widget.TextView} as the root view of the activity’s layout by passing it to {@link
+android.app.Activity#setContentView setContentView()}.</p>
+
+<p>The complete {@link android.app.Activity#onCreate onCreate()} method for {@code
+DisplayMessageActivity} now looks like this:</p>
+
+<pre>
+@Override
+public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Get the message from the intent
+ Intent intent = getIntent();
+ String message = intent.getStringExtra(MyFirstActivity.EXTRA_MESSAGE);
+
+ // Create the text view
+ TextView textView = new TextView(this);
+ textView.setTextSize(40);
+ textView.setText(message);
+
+ setContentView(textView);
+}
+</pre>
+
+<p>You can now run the app, type a message in the text box, press Send, and view the message on the
+second activity.</p>
+
+<img src="{@docRoot}images/training/firstapp/firstapp.png" />
+<p class="img-caption"><strong>Figure 1.</strong> Both activities in the final app, running
+on Android 4.0.
+
+<p>That's it, you've built your first Android app!</p>
+
+<p>To learn more about building Android apps, continue to follow the
+basic training classes. The next class is <a
+href="{@docRoot}training/activity-lifecycle/index.html">Managing the Activity Lifecycle</a>.</p>
+
+
+
+
diff --git a/docs/html/training/tv/optimizing-layouts-tv.jd b/docs/html/training/tv/optimizing-layouts-tv.jd
index 6eac6d3..e4a8e69 100644
--- a/docs/html/training/tv/optimizing-layouts-tv.jd
+++ b/docs/html/training/tv/optimizing-layouts-tv.jd
@@ -16,7 +16,7 @@
<li><a href="#DesignLandscapeLayouts">Design Landscape Layouts</a></li>
<li><a href="#MakeTextControlsEasyToSee">Make Text and Controls Easy to See</a></li>
<li><a href="#DesignForLargeScreens">Design for High-Density Large Screens</a></li>
- <li><a href="#HandleLargeBitmaps">Handle Large Bitmaps in Your Application</a></li>
+ <li><a href="#HandleLargeBitmaps">Design to Handle Large Bitmaps</a></li>
</ol>
<h2>You should also read</h2>
diff --git a/docs/html/training/tv/optimizing-navigation-tv.jd b/docs/html/training/tv/optimizing-navigation-tv.jd
index 8b5878e..bb78258 100644
--- a/docs/html/training/tv/optimizing-navigation-tv.jd
+++ b/docs/html/training/tv/optimizing-navigation-tv.jd
@@ -5,7 +5,7 @@
trainingnavtop=true
previous.title=Optimizing Layouts for TV
previous.link=optimizing-layouts-tv.html
-next.title=Handling features not supported on TV
+next.title=Handling Features Not Supported on TV
next.link=unsupported-features-tv.html
@jd:body
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index c7e71eb..41d5c32 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -2237,6 +2237,14 @@
* docking station
*/
public static final int DEVICE_OUT_DGTL_DOCK_HEADSET = AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET;
+ /** {@hide} The audio output device code for a USB audio accessory. The accessory is in USB host
+ * mode and the Android device in USB device mode
+ */
+ public static final int DEVICE_OUT_USB_ACCESSORY = AudioSystem.DEVICE_OUT_USB_ACCESSORY;
+ /** {@hide} The audio output device code for a USB audio device. The device is in USB device
+ * mode and the Android device in USB host mode
+ */
+ public static final int DEVICE_OUT_USB_DEVICE = AudioSystem.DEVICE_OUT_USB_DEVICE;
/** {@hide} This is not used as a returned value from {@link #getDevicesForStream}, but could be
* used in the future in a set method to select whatever default device is chosen by the
* platform-specific implementation.
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index 2e456f0..48d3712 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -389,9 +389,11 @@
intentFilter.addAction(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED);
intentFilter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);
intentFilter.addAction(Intent.ACTION_DOCK_EVENT);
- intentFilter.addAction(Intent.ACTION_USB_ANLG_HEADSET_PLUG);
- intentFilter.addAction(Intent.ACTION_USB_DGTL_HEADSET_PLUG);
+ intentFilter.addAction(Intent.ACTION_ANALOG_AUDIO_DOCK_PLUG);
+ intentFilter.addAction(Intent.ACTION_DIGITAL_AUDIO_DOCK_PLUG);
intentFilter.addAction(Intent.ACTION_HDMI_AUDIO_PLUG);
+ intentFilter.addAction(Intent.ACTION_USB_AUDIO_ACCESSORY_PLUG);
+ intentFilter.addAction(Intent.ACTION_USB_AUDIO_DEVICE_PLUG);
intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
intentFilter.addAction(Intent.ACTION_SCREEN_ON);
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
@@ -2800,6 +2802,28 @@
}
}
+ private boolean handleDeviceConnection(boolean connected, int device, String params) {
+ synchronized (mConnectedDevices) {
+ boolean isConnected = (mConnectedDevices.containsKey(device) &&
+ mConnectedDevices.get(device).equals(params));
+
+ if (isConnected && !connected) {
+ AudioSystem.setDeviceConnectionState(device,
+ AudioSystem.DEVICE_STATE_UNAVAILABLE,
+ params);
+ mConnectedDevices.remove(device);
+ return true;
+ } else if (!isConnected && connected) {
+ AudioSystem.setDeviceConnectionState(device,
+ AudioSystem.DEVICE_STATE_AVAILABLE,
+ params);
+ mConnectedDevices.put(new Integer(device), params);
+ return true;
+ }
+ }
+ return false;
+ }
+
/* cache of the address of the last dock the device was connected to */
private String mDockAddress;
@@ -2810,6 +2834,8 @@
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
+ int device;
+ int state;
if (action.equals(Intent.ACTION_DOCK_EVENT)) {
int dockState = intent.getIntExtra(Intent.EXTRA_DOCK_STATE,
@@ -2834,15 +2860,15 @@
}
AudioSystem.setForceUse(AudioSystem.FOR_DOCK, config);
} else if (action.equals(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED)) {
- int state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE,
+ state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE,
BluetoothProfile.STATE_DISCONNECTED);
BluetoothDevice btDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
handleA2dpConnectionStateChange(btDevice, state);
} else if (action.equals(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED)) {
- int state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE,
+ state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE,
BluetoothProfile.STATE_DISCONNECTED);
- int device = AudioSystem.DEVICE_OUT_BLUETOOTH_SCO;
+ device = AudioSystem.DEVICE_OUT_BLUETOOTH_SCO;
String address = null;
BluetoothDevice btDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
@@ -2868,129 +2894,56 @@
address = "";
}
- synchronized (mConnectedDevices) {
- boolean isConnected = (mConnectedDevices.containsKey(device) &&
- mConnectedDevices.get(device).equals(address));
-
+ boolean connected = (state == BluetoothProfile.STATE_CONNECTED);
+ if (handleDeviceConnection(connected, device, address)) {
synchronized (mScoClients) {
- if (isConnected && state != BluetoothProfile.STATE_CONNECTED) {
- AudioSystem.setDeviceConnectionState(device,
- AudioSystem.DEVICE_STATE_UNAVAILABLE,
- address);
- mConnectedDevices.remove(device);
+ if (connected) {
+ mBluetoothHeadsetDevice = btDevice;
+ } else {
mBluetoothHeadsetDevice = null;
resetBluetoothSco();
- } else if (!isConnected && state == BluetoothProfile.STATE_CONNECTED) {
- AudioSystem.setDeviceConnectionState(device,
- AudioSystem.DEVICE_STATE_AVAILABLE,
- address);
- mConnectedDevices.put(new Integer(device), address);
- mBluetoothHeadsetDevice = btDevice;
}
}
}
} else if (action.equals(Intent.ACTION_HEADSET_PLUG)) {
- int state = intent.getIntExtra("state", 0);
+ state = intent.getIntExtra("state", 0);
int microphone = intent.getIntExtra("microphone", 0);
- synchronized (mConnectedDevices) {
- if (microphone != 0) {
- boolean isConnected =
- mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_WIRED_HEADSET);
- if (state == 0 && isConnected) {
- AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_WIRED_HEADSET,
- AudioSystem.DEVICE_STATE_UNAVAILABLE,
- "");
- mConnectedDevices.remove(AudioSystem.DEVICE_OUT_WIRED_HEADSET);
- } else if (state == 1 && !isConnected) {
- AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_WIRED_HEADSET,
- AudioSystem.DEVICE_STATE_AVAILABLE,
- "");
- mConnectedDevices.put(
- new Integer(AudioSystem.DEVICE_OUT_WIRED_HEADSET), "");
- }
- } else {
- boolean isConnected =
- mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE);
- if (state == 0 && isConnected) {
- AudioSystem.setDeviceConnectionState(
- AudioSystem.DEVICE_OUT_WIRED_HEADPHONE,
- AudioSystem.DEVICE_STATE_UNAVAILABLE,
- "");
- mConnectedDevices.remove(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE);
- } else if (state == 1 && !isConnected) {
- AudioSystem.setDeviceConnectionState(
- AudioSystem.DEVICE_OUT_WIRED_HEADPHONE,
- AudioSystem.DEVICE_STATE_AVAILABLE,
- "");
- mConnectedDevices.put(
- new Integer(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE), "");
- }
- }
+ if (microphone != 0) {
+ device = AudioSystem.DEVICE_OUT_WIRED_HEADSET;
+ } else {
+ device = AudioSystem.DEVICE_OUT_WIRED_HEADPHONE;
}
- } else if (action.equals(Intent.ACTION_USB_ANLG_HEADSET_PLUG)) {
- int state = intent.getIntExtra("state", 0);
- Log.v(TAG, "Broadcast Receiver: Got ACTION_USB_ANLG_HEADSET_PLUG, state = "+state);
- synchronized (mConnectedDevices) {
- boolean isConnected =
- mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET);
- if (state == 0 && isConnected) {
- AudioSystem.setDeviceConnectionState(
- AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET,
- AudioSystem.DEVICE_STATE_UNAVAILABLE,
- "");
- mConnectedDevices.remove(AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET);
- } else if (state == 1 && !isConnected) {
- AudioSystem.setDeviceConnectionState(
- AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET,
- AudioSystem.DEVICE_STATE_AVAILABLE,
- "");
- mConnectedDevices.put(
- new Integer(AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET), "");
- }
- }
+ handleDeviceConnection((state == 1), device, "");
+ } else if (action.equals(Intent.ACTION_ANALOG_AUDIO_DOCK_PLUG)) {
+ state = intent.getIntExtra("state", 0);
+ Log.v(TAG, "Broadcast Receiver: Got ACTION_ANALOG_AUDIO_DOCK_PLUG, state = "+state);
+ handleDeviceConnection((state == 1), AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET, "");
} else if (action.equals(Intent.ACTION_HDMI_AUDIO_PLUG)) {
- int state = intent.getIntExtra("state", 0);
+ state = intent.getIntExtra("state", 0);
Log.v(TAG, "Broadcast Receiver: Got ACTION_HDMI_AUDIO_PLUG, state = "+state);
- synchronized (mConnectedDevices) {
- boolean isConnected =
- mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_AUX_DIGITAL);
- if (state == 0 && isConnected) {
- AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_AUX_DIGITAL,
- AudioSystem.DEVICE_STATE_UNAVAILABLE,
- "");
- mConnectedDevices.remove(AudioSystem.DEVICE_OUT_AUX_DIGITAL);
- } else if (state == 1 && !isConnected) {
- AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_AUX_DIGITAL,
- AudioSystem.DEVICE_STATE_AVAILABLE,
- "");
- mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_AUX_DIGITAL), "");
- }
- }
- } else if (action.equals(Intent.ACTION_USB_DGTL_HEADSET_PLUG)) {
- int state = intent.getIntExtra("state", 0);
- Log.v(TAG, "Broadcast Receiver: Got ACTION_USB_DGTL_HEADSET_PLUG, state = "+state);
- synchronized (mConnectedDevices) {
- boolean isConnected =
- mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET);
- if (state == 0 && isConnected) {
- AudioSystem.setDeviceConnectionState(
- AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET,
- AudioSystem.DEVICE_STATE_UNAVAILABLE,
- "");
- mConnectedDevices.remove(AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET);
- } else if (state == 1 && !isConnected) {
- AudioSystem.setDeviceConnectionState(
- AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET,
- AudioSystem.DEVICE_STATE_AVAILABLE,
- "");
- mConnectedDevices.put(
- new Integer(AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET), "");
- }
- }
+ handleDeviceConnection((state == 1), AudioSystem.DEVICE_OUT_AUX_DIGITAL, "");
+ } else if (action.equals(Intent.ACTION_DIGITAL_AUDIO_DOCK_PLUG)) {
+ state = intent.getIntExtra("state", 0);
+ Log.v(TAG,
+ "Broadcast Receiver Got ACTION_DIGITAL_AUDIO_DOCK_PLUG, state = " + state);
+ handleDeviceConnection((state == 1), AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET, "");
+ } else if (action.equals(Intent.ACTION_USB_AUDIO_ACCESSORY_PLUG) ||
+ action.equals(Intent.ACTION_USB_AUDIO_DEVICE_PLUG)) {
+ state = intent.getIntExtra("state", 0);
+ int alsaCard = intent.getIntExtra("card", -1);
+ int alsaDevice = intent.getIntExtra("device", -1);
+ String params = "card=" + alsaCard + ";device=" + alsaDevice;
+ device = action.equals(Intent.ACTION_USB_AUDIO_ACCESSORY_PLUG) ?
+ AudioSystem.DEVICE_OUT_USB_ACCESSORY : AudioSystem.DEVICE_OUT_USB_DEVICE;
+ Log.v(TAG, "Broadcast Receiver: Got "
+ + (action.equals(Intent.ACTION_USB_AUDIO_ACCESSORY_PLUG) ?
+ "ACTION_USB_AUDIO_ACCESSORY_PLUG" : "ACTION_USB_AUDIO_DEVICE_PLUG")
+ + ", state = " + state + ", card: " + alsaCard + ", device: " + alsaDevice);
+ handleDeviceConnection((state == 1), device, params);
} else if (action.equals(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED)) {
boolean broadcast = false;
- int state = AudioManager.SCO_AUDIO_STATE_ERROR;
+ int scoAudioState = AudioManager.SCO_AUDIO_STATE_ERROR;
synchronized (mScoClients) {
int btState = intent.getIntExtra(BluetoothProfile.EXTRA_STATE, -1);
// broadcast intent if the connection was initated by AudioService
@@ -3002,7 +2955,7 @@
}
switch (btState) {
case BluetoothHeadset.STATE_AUDIO_CONNECTED:
- state = AudioManager.SCO_AUDIO_STATE_CONNECTED;
+ scoAudioState = AudioManager.SCO_AUDIO_STATE_CONNECTED;
if (mScoAudioState != SCO_STATE_ACTIVE_INTERNAL &&
mScoAudioState != SCO_STATE_DEACTIVATE_REQ &&
mScoAudioState != SCO_STATE_DEACTIVATE_EXT_REQ) {
@@ -3010,7 +2963,7 @@
}
break;
case BluetoothHeadset.STATE_AUDIO_DISCONNECTED:
- state = AudioManager.SCO_AUDIO_STATE_DISCONNECTED;
+ scoAudioState = AudioManager.SCO_AUDIO_STATE_DISCONNECTED;
mScoAudioState = SCO_STATE_INACTIVE;
clearAllScoClients(0, false);
break;
@@ -3027,11 +2980,11 @@
}
}
if (broadcast) {
- broadcastScoConnectionState(state);
+ broadcastScoConnectionState(scoAudioState);
//FIXME: this is to maintain compatibility with deprecated intent
// AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED. Remove when appropriate.
Intent newIntent = new Intent(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED);
- newIntent.putExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, state);
+ newIntent.putExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, scoAudioState);
mContext.sendStickyBroadcast(newIntent);
}
} else if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 18a00bc..9bafa5c 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -202,6 +202,9 @@
public static final int DEVICE_OUT_AUX_DIGITAL = 0x400;
public static final int DEVICE_OUT_ANLG_DOCK_HEADSET = 0x800;
public static final int DEVICE_OUT_DGTL_DOCK_HEADSET = 0x1000;
+ public static final int DEVICE_OUT_USB_ACCESSORY = 0x2000;
+ public static final int DEVICE_OUT_USB_DEVICE = 0x4000;
+
public static final int DEVICE_OUT_DEFAULT = 0x8000;
public static final int DEVICE_OUT_ALL = (DEVICE_OUT_EARPIECE |
DEVICE_OUT_SPEAKER |
@@ -216,10 +219,18 @@
DEVICE_OUT_AUX_DIGITAL |
DEVICE_OUT_ANLG_DOCK_HEADSET |
DEVICE_OUT_DGTL_DOCK_HEADSET |
+ DEVICE_OUT_USB_ACCESSORY |
+ DEVICE_OUT_USB_DEVICE |
DEVICE_OUT_DEFAULT);
public static final int DEVICE_OUT_ALL_A2DP = (DEVICE_OUT_BLUETOOTH_A2DP |
DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES |
DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER);
+ public static final int DEVICE_OUT_ALL_SCO = (DEVICE_OUT_BLUETOOTH_SCO |
+ DEVICE_OUT_BLUETOOTH_SCO_HEADSET |
+ DEVICE_OUT_BLUETOOTH_SCO_CARKIT);
+ public static final int DEVICE_OUT_ALL_USB = (DEVICE_OUT_USB_ACCESSORY |
+ DEVICE_OUT_USB_DEVICE);
+
// input devices
public static final int DEVICE_IN_COMMUNICATION = 0x10000;
public static final int DEVICE_IN_AMBIENT = 0x20000;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 5ba72c7..804ae06 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -591,10 +591,14 @@
}
final StatusBarNotification oldNotification = oldEntry.notification;
- final RemoteViews oldContentView = oldNotification.notification.contentView;
- final RemoteViews contentView = notification.notification.contentView;
-
+ // XXX: modify when we do something more intelligent with the two content views
+ final RemoteViews oldContentView = (oldNotification.notification.bigContentView != null)
+ ? oldNotification.notification.bigContentView
+ : oldNotification.notification.contentView;
+ final RemoteViews contentView = (notification.notification.bigContentView != null)
+ ? notification.notification.bigContentView
+ : notification.notification.contentView;
if (DEBUG) {
Slog.d(TAG, "old notification: when=" + oldNotification.notification.when
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index 09283f4..ba51108 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -867,9 +867,14 @@
}
final StatusBarNotification oldNotification = oldEntry.notification;
- final RemoteViews oldContentView = oldNotification.notification.contentView;
- final RemoteViews contentView = notification.notification.contentView;
+ // XXX: modify when we do something more intelligent with the two content views
+ final RemoteViews oldContentView = (oldNotification.notification.bigContentView != null)
+ ? oldNotification.notification.bigContentView
+ : oldNotification.notification.contentView;
+ final RemoteViews contentView = (notification.notification.bigContentView != null)
+ ? notification.notification.bigContentView
+ : notification.notification.contentView;
if (DEBUG) {
Slog.d(TAG, "old notification: when=" + oldNotification.notification.when
diff --git a/policy/src/com/android/internal/policy/impl/FaceUnlock.java b/policy/src/com/android/internal/policy/impl/FaceUnlock.java
new file mode 100644
index 0000000..2ae99e6
--- /dev/null
+++ b/policy/src/com/android/internal/policy/impl/FaceUnlock.java
@@ -0,0 +1,375 @@
+/*
+ * 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.internal.policy.impl;
+
+import com.android.internal.R;
+import com.android.internal.policy.IFaceLockCallback;
+import com.android.internal.policy.IFaceLockInterface;
+import com.android.internal.widget.LockPatternUtils;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.RemoteException;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+import android.view.View;
+
+public class FaceUnlock implements Handler.Callback {
+
+ private static final boolean DEBUG = false;
+ private static final String TAG = "FULLockscreen";
+
+ private final Context mContext;
+ private final KeyguardUpdateMonitor mUpdateMonitor;
+
+ private IFaceLockInterface mService;
+ private boolean mBoundToService = false;
+ private View mAreaView;
+
+ private Handler mHandler;
+ private final int MSG_SHOW_AREA_VIEW = 0;
+ private final int MSG_HIDE_AREA_VIEW = 1;
+
+ private boolean mServiceRunning = false;
+ private final Object mServiceRunningLock = new Object();
+
+ // Long enough to stay visible while dialer comes up
+ // Short enough to not be visible if the user goes back immediately
+ private final int VIEW_AREA_EMERGENCY_DIALER_TIMEOUT = 1000;
+
+ // Long enough to stay visible while the service starts
+ // Short enough to not have to wait long for backup if service fails to start or crashes
+ // The service can take a couple of seconds to start on the first try after boot
+ private final int VIEW_AREA_SERVICE_TIMEOUT = 3000;
+
+ // So the user has a consistent amount of time when brought to the backup method from FaceLock
+ private final int BACKUP_LOCK_TIMEOUT = 5000;
+
+ /**
+ * Used to lookup the state of the lock pattern
+ */
+ private final LockPatternUtils mLockPatternUtils;
+
+ KeyguardScreenCallback mKeyguardScreenCallback;
+
+ public FaceUnlock(Context context, KeyguardUpdateMonitor updateMonitor,
+ LockPatternUtils lockPatternUtils, KeyguardScreenCallback keyguardScreenCallback) {
+ mContext = context;
+ mUpdateMonitor = updateMonitor;
+ mLockPatternUtils = lockPatternUtils;
+ mKeyguardScreenCallback = keyguardScreenCallback;
+ mHandler = new Handler(this);
+ }
+
+ public void cleanUp() {
+ if (mService != null) {
+ try {
+ mService.unregisterCallback(mFaceLockCallback);
+ } catch (RemoteException e) {
+ // Not much we can do
+ }
+ stop();
+ mService = null;
+ }
+ }
+
+ /** When screen is turned on and focused, need to bind to FaceLock service if we are using
+ * FaceLock, but only if we're not dealing with a call
+ */
+ public void activateIfAble(boolean hasOverlay) {
+ final boolean tooManyFaceUnlockTries = mUpdateMonitor.getMaxFaceUnlockAttemptsReached();
+ final int failedBackupAttempts = mUpdateMonitor.getFailedAttempts();
+ final boolean backupIsTimedOut =
+ (failedBackupAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT);
+ if (tooManyFaceUnlockTries) Log.i(TAG, "tooManyFaceUnlockTries: " + tooManyFaceUnlockTries);
+ if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE
+ && installedAndSelected()
+ && !hasOverlay
+ && !tooManyFaceUnlockTries
+ && !backupIsTimedOut) {
+ bind();
+
+ // Show FaceLock area, but only for a little bit so lockpattern will become visible if
+ // FaceLock fails to start or crashes
+ showAreaWithTimeout(VIEW_AREA_SERVICE_TIMEOUT);
+
+ // When switching between portrait and landscape view while FaceLock is running, the
+ // screen will eventually go dark unless we poke the wakelock when FaceLock is
+ // restarted
+ mKeyguardScreenCallback.pokeWakelock();
+ } else {
+ hideArea();
+ }
+ }
+
+ public boolean isServiceRunning() {
+ return mServiceRunning;
+ }
+
+ public int viewAreaEmergencyDialerTimeout() {
+ return VIEW_AREA_EMERGENCY_DIALER_TIMEOUT;
+ }
+
+ // Indicates whether FaceLock is in use
+ public boolean installedAndSelected() {
+ return (mLockPatternUtils.usingBiometricWeak() &&
+ mLockPatternUtils.isBiometricWeakInstalled());
+ }
+
+ // Takes care of FaceLock area when layout is created
+ public void initializeAreaView(View view) {
+ if (installedAndSelected()) {
+ mAreaView = view.findViewById(R.id.faceLockAreaView);
+ if (mAreaView == null) {
+ Log.e(TAG, "Layout does not have areaView and FaceLock is enabled");
+ }
+ } else {
+ mAreaView = null; // Set to null if not using FaceLock
+ }
+ }
+
+ // Stops FaceLock if it is running and reports back whether it was running or not
+ public boolean stopIfRunning() {
+ if (installedAndSelected() && mBoundToService) {
+ stopAndUnbind();
+ return true;
+ }
+ return false;
+ }
+
+ // Handles covering or exposing FaceLock area on the client side when FaceLock starts or stops
+ // This needs to be done in a handler because the call could be coming from a callback from the
+ // FaceLock service that is in a thread that can't modify the UI
+ @Override
+ public boolean handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_SHOW_AREA_VIEW:
+ if (mAreaView != null) {
+ mAreaView.setVisibility(View.VISIBLE);
+ }
+ break;
+ case MSG_HIDE_AREA_VIEW:
+ if (mAreaView != null) {
+ mAreaView.setVisibility(View.INVISIBLE);
+ }
+ break;
+ default:
+ Log.w(TAG, "Unhandled message");
+ return false;
+ }
+ return true;
+ }
+
+ // Removes show and hide messages from the message queue
+ private void removeAreaDisplayMessages() {
+ mHandler.removeMessages(MSG_SHOW_AREA_VIEW);
+ mHandler.removeMessages(MSG_HIDE_AREA_VIEW);
+ }
+
+ // Shows the FaceLock area immediately
+ public void showArea() {
+ // Remove messages to prevent a delayed hide message from undo-ing the show
+ removeAreaDisplayMessages();
+ mHandler.sendEmptyMessage(MSG_SHOW_AREA_VIEW);
+ }
+
+ // Hides the FaceLock area immediately
+ public void hideArea() {
+ // Remove messages to prevent a delayed show message from undo-ing the hide
+ removeAreaDisplayMessages();
+ mHandler.sendEmptyMessage(MSG_HIDE_AREA_VIEW);
+ }
+
+ // Shows the FaceLock area for a period of time
+ public void showAreaWithTimeout(long timeoutMillis) {
+ showArea();
+ mHandler.sendEmptyMessageDelayed(MSG_HIDE_AREA_VIEW, timeoutMillis);
+ }
+
+ // Binds to FaceLock service. This call does not tell it to start, but it causes the service
+ // to call the onServiceConnected callback, which then starts FaceLock.
+ public void bind() {
+ if (installedAndSelected()) {
+ if (!mBoundToService) {
+ if (DEBUG) Log.d(TAG, "before bind to FaceLock service");
+ mContext.bindService(new Intent(IFaceLockInterface.class.getName()),
+ mConnection,
+ Context.BIND_AUTO_CREATE);
+ if (DEBUG) Log.d(TAG, "after bind to FaceLock service");
+ mBoundToService = true;
+ } else {
+ Log.w(TAG, "Attempt to bind to FaceLock when already bound");
+ }
+ }
+ }
+
+ // Tells FaceLock to stop and then unbinds from the FaceLock service
+ public void stopAndUnbind() {
+ if (installedAndSelected()) {
+ stop();
+
+ if (mBoundToService) {
+ if (DEBUG) Log.d(TAG, "before unbind from FaceLock service");
+ if (mService != null) {
+ try {
+ mService.unregisterCallback(mFaceLockCallback);
+ } catch (RemoteException e) {
+ // Not much we can do
+ }
+ }
+ mContext.unbindService(mConnection);
+ if (DEBUG) Log.d(TAG, "after unbind from FaceLock service");
+ mBoundToService = false;
+ } else {
+ // This is usually not an error when this happens. Sometimes we will tell it to
+ // unbind multiple times because it's called from both onWindowFocusChanged and
+ // onDetachedFromWindow.
+ if (DEBUG) Log.d(TAG, "Attempt to unbind from FaceLock when not bound");
+ }
+ }
+ }
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ // Completes connection, registers callback and starts FaceLock when service is bound
+ @Override
+ public void onServiceConnected(ComponentName className, IBinder iservice) {
+ mService = IFaceLockInterface.Stub.asInterface(iservice);
+ if (DEBUG) Log.d(TAG, "Connected to FaceLock service");
+ try {
+ mService.registerCallback(mFaceLockCallback);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Caught exception connecting to FaceLock: " + e.toString());
+ mService = null;
+ mBoundToService = false;
+ return;
+ }
+
+ if (mAreaView != null) {
+ int[] position;
+ position = new int[2];
+ mAreaView.getLocationInWindow(position);
+ start(mAreaView.getWindowToken(), position[0], position[1],
+ mAreaView.getWidth(), mAreaView.getHeight());
+ }
+ }
+
+ // Cleans up if FaceLock service unexpectedly disconnects
+ @Override
+ public void onServiceDisconnected(ComponentName className) {
+ synchronized(mServiceRunningLock) {
+ mService = null;
+ mServiceRunning = false;
+ }
+ mBoundToService = false;
+ Log.w(TAG, "Unexpected disconnect from FaceLock service");
+ }
+ };
+
+ // Tells the FaceLock service to start displaying its UI and perform recognition
+ public void start(IBinder windowToken, int x, int y, int w, int h) {
+ if (installedAndSelected()) {
+ synchronized (mServiceRunningLock) {
+ if (!mServiceRunning) {
+ if (DEBUG) Log.d(TAG, "Starting FaceLock");
+ try {
+ mService.startUi(windowToken, x, y, w, h);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Caught exception starting FaceLock: " + e.toString());
+ return;
+ }
+ mServiceRunning = true;
+ } else {
+ if (DEBUG) Log.w(TAG, "start() attempted while running");
+ }
+ }
+ }
+ }
+
+ // Tells the FaceLock service to stop displaying its UI and stop recognition
+ public void stop() {
+ if (installedAndSelected()) {
+ // Note that attempting to stop FaceLock when it's not running is not an issue.
+ // FaceLock can return, which stops it and then we try to stop it when the
+ // screen is turned off. That's why we check.
+ synchronized (mServiceRunningLock) {
+ if (mServiceRunning) {
+ try {
+ if (DEBUG) Log.d(TAG, "Stopping FaceLock");
+ mService.stopUi();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Caught exception stopping FaceLock: " + e.toString());
+ }
+ mServiceRunning = false;
+ }
+ }
+ }
+ }
+
+ // Implements the FaceLock service callback interface defined in AIDL
+ private final IFaceLockCallback mFaceLockCallback = new IFaceLockCallback.Stub() {
+ // Stops the FaceLock UI and indicates that the phone should be unlocked
+ @Override
+ public void unlock() {
+ if (DEBUG) Log.d(TAG, "FaceLock unlock()");
+ showArea(); // Keep fallback covered
+ stopAndUnbind();
+
+ mKeyguardScreenCallback.keyguardDone(true);
+ mKeyguardScreenCallback.reportSuccessfulUnlockAttempt();
+ }
+
+ // Stops the FaceLock UI and exposes the backup method without unlocking
+ // This means the user has cancelled out
+ @Override
+ public void cancel() {
+ if (DEBUG) Log.d(TAG, "FaceLock cancel()");
+ hideArea(); // Expose fallback
+ stopAndUnbind();
+ mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
+ }
+
+ // Stops the FaceLock UI and exposes the backup method without unlocking
+ // This means FaceLock failed to recognize them
+ @Override
+ public void reportFailedAttempt() {
+ if (DEBUG) Log.d(TAG, "FaceLock reportFailedAttempt()");
+ mUpdateMonitor.reportFailedFaceUnlockAttempt();
+ hideArea(); // Expose fallback
+ stopAndUnbind();
+ mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
+ }
+
+ // Removes the black area that covers the backup unlock method
+ @Override
+ public void exposeFallback() {
+ if (DEBUG) Log.d(TAG, "FaceLock exposeFallback()");
+ hideArea(); // Expose fallback
+ }
+
+ // Allows the Face Unlock service to poke the wake lock to keep the lockscreen alive
+ @Override
+ public void pokeWakelock() {
+ if (DEBUG) Log.d(TAG, "FaceLock pokeWakelock()");
+ mKeyguardScreenCallback.pokeWakelock();
+ }
+ };
+}
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
index 404dc6f..596040c 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
@@ -20,8 +20,6 @@
import com.android.internal.policy.impl.KeyguardUpdateMonitor.InfoCallback;
import com.android.internal.policy.impl.KeyguardUpdateMonitor.InfoCallbackImpl;
import com.android.internal.policy.impl.LockPatternKeyguardView.UnlockMode;
-import com.android.internal.policy.IFaceLockCallback;
-import com.android.internal.policy.IFaceLockInterface;
import com.android.internal.telephony.IccCard;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockScreenWidgetCallback;
@@ -36,12 +34,10 @@
import android.accounts.OperationCanceledException;
import android.app.AlertDialog;
import android.app.admin.DevicePolicyManager;
-import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
-import android.content.ServiceConnection;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -50,12 +46,8 @@
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.IBinder;
import android.os.Parcelable;
import android.os.PowerManager;
-import android.os.RemoteException;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.telephony.TelephonyManager;
@@ -82,7 +74,7 @@
* {@link com.android.internal.policy.impl.KeyguardViewManager}
* via its {@link com.android.internal.policy.impl.KeyguardViewCallback}, as appropriate.
*/
-public class LockPatternKeyguardView extends KeyguardViewBase implements Handler.Callback {
+public class LockPatternKeyguardView extends KeyguardViewBase {
private static final int TRANSPORT_USERACTIVITY_TIMEOUT = 10000;
@@ -110,30 +102,9 @@
private boolean mShowLockBeforeUnlock = false;
// The following were added to support FaceLock
- private IFaceLockInterface mFaceLockService;
- private boolean mBoundToFaceLockService = false;
- private View mFaceLockAreaView;
-
- private boolean mFaceLockServiceRunning = false;
- private final Object mFaceLockServiceRunningLock = new Object();
+ private FaceUnlock mFaceUnlock;
private final Object mFaceLockStartupLock = new Object();
- private Handler mHandler;
- private final int MSG_SHOW_FACELOCK_AREA_VIEW = 0;
- private final int MSG_HIDE_FACELOCK_AREA_VIEW = 1;
-
- // Long enough to stay visible while dialer comes up
- // Short enough to not be visible if the user goes back immediately
- private final int FACELOCK_VIEW_AREA_EMERGENCY_DIALER_TIMEOUT = 1000;
-
- // Long enough to stay visible while the service starts
- // Short enough to not have to wait long for backup if service fails to start or crashes
- // The service can take a couple of seconds to start on the first try after boot
- private final int FACELOCK_VIEW_AREA_SERVICE_TIMEOUT = 3000;
-
- // So the user has a consistent amount of time when brought to the backup method from FaceLock
- private final int BACKUP_LOCK_TIMEOUT = 5000;
-
private boolean mRequiresSim;
//True if we have some sort of overlay on top of the Lockscreen
//Also true if we've activated a phone call, either emergency dialing or incoming
@@ -340,12 +311,12 @@
mHasOverlay = true;
// Continue showing FaceLock area until dialer comes up or call is resumed
- if (usingFaceLock() && mFaceLockServiceRunning) {
- showFaceLockAreaWithTimeout(FACELOCK_VIEW_AREA_EMERGENCY_DIALER_TIMEOUT);
+ if (mFaceUnlock.installedAndSelected() && mFaceUnlock.isServiceRunning()) {
+ mFaceUnlock.showAreaWithTimeout(mFaceUnlock.viewAreaEmergencyDialerTimeout());
}
// FaceLock must be stopped if it is running when emergency call is pressed
- stopAndUnbindFromFaceLock();
+ mFaceUnlock.stopAndUnbind();
pokeWakelock(EMERGENCY_CALL_TIMEOUT);
if (TelephonyManager.getDefault().getCallState()
@@ -450,7 +421,8 @@
LockPatternUtils lockPatternUtils, KeyguardWindowController controller) {
super(context, callback);
- mHandler = new Handler(this);
+ mFaceUnlock = new FaceUnlock(context, updateMonitor, lockPatternUtils,
+ mKeyguardScreenCallback);
mConfiguration = context.getResources().getConfiguration();
mEnableFallback = false;
mRequiresSim = TextUtils.isEmpty(SystemProperties.get("keyguard.no_require_sim"));
@@ -570,36 +542,7 @@
saveWidgetState();
// When screen is turned off, need to unbind from FaceLock service if using FaceLock
- stopAndUnbindFromFaceLock();
- }
-
- /** When screen is turned on and focused, need to bind to FaceLock service if we are using
- * FaceLock, but only if we're not dealing with a call
- */
- private void activateFaceLockIfAble() {
- final boolean tooManyFaceUnlockTries = mUpdateMonitor.getMaxFaceUnlockAttemptsReached();
- final int failedBackupAttempts = mUpdateMonitor.getFailedAttempts();
- final boolean backupIsTimedOut =
- (failedBackupAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT);
- if (tooManyFaceUnlockTries) Log.i(TAG, "tooManyFaceUnlockTries: " + tooManyFaceUnlockTries);
- if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE
- && usingFaceLock()
- && !mHasOverlay
- && !tooManyFaceUnlockTries
- && !backupIsTimedOut) {
- bindToFaceLock();
-
- // Show FaceLock area, but only for a little bit so lockpattern will become visible if
- // FaceLock fails to start or crashes
- showFaceLockAreaWithTimeout(FACELOCK_VIEW_AREA_SERVICE_TIMEOUT);
-
- // When switching between portrait and landscape view while FaceLock is running, the
- // screen will eventually go dark unless we poke the wakelock when FaceLock is
- // restarted
- mKeyguardScreenCallback.pokeWakelock();
- } else {
- hideFaceLockArea();
- }
+ mFaceUnlock.stopAndUnbind();
}
@Override
@@ -616,7 +559,7 @@
restoreWidgetState();
- if (runFaceLock) activateFaceLockIfAble();
+ if (runFaceLock) mFaceUnlock.activateIfAble(mHasOverlay);
}
private void saveWidgetState() {
@@ -647,13 +590,13 @@
if(mScreenOn && !mWindowFocused) runFaceLock = hasWindowFocus;
mWindowFocused = hasWindowFocus;
}
- if(!hasWindowFocus) {
+ if (!hasWindowFocus) {
mHasOverlay = true;
- stopAndUnbindFromFaceLock();
- hideFaceLockArea();
+ mFaceUnlock.stopAndUnbind();
+ mFaceUnlock.hideArea();
} else {
mHasDialog = false;
- if (runFaceLock) activateFaceLockIfAble();
+ if (runFaceLock) mFaceUnlock.activateIfAble(mHasOverlay);
}
}
@@ -667,14 +610,14 @@
((KeyguardScreen) mUnlockScreen).onResume();
}
- if (usingFaceLock() && !mHasOverlay) {
+ if (mFaceUnlock.installedAndSelected() && !mHasOverlay) {
// Note that show() gets called before the screen turns off to set it up for next time
// it is turned on. We don't want to set a timeout on the FaceLock area here because it
// may be gone by the time the screen is turned on again. We set the timeout when the
// screen turns on instead.
- showFaceLockArea();
+ mFaceUnlock.showArea();
} else {
- hideFaceLockArea();
+ mFaceUnlock.hideArea();
}
}
@@ -710,7 +653,7 @@
// When view is hidden, need to unbind from FaceLock service if we are using FaceLock
// e.g., when device becomes unlocked
- stopAndUnbindFromFaceLock();
+ mFaceUnlock.stopAndUnbind();
super.onDetachedFromWindow();
}
@@ -734,9 +677,9 @@
mHasOverlay |= mPluggedIn != pluggedIn;
mPluggedIn = pluggedIn;
//If it's already running, don't close it down: the unplug didn't start it
- if (!mFaceLockServiceRunning) {
- stopAndUnbindFromFaceLock();
- hideFaceLockArea();
+ if (!mFaceUnlock.isServiceRunning()) {
+ mFaceUnlock.stopAndUnbind();
+ mFaceUnlock.hideArea();
}
}
@@ -753,8 +696,8 @@
if (DEBUG) Log.d(TAG, "phone state: " + phoneState);
if(phoneState == TelephonyManager.CALL_STATE_RINGING) {
mHasOverlay = true;
- stopAndUnbindFromFaceLock();
- hideFaceLockArea();
+ mFaceUnlock.stopAndUnbind();
+ mFaceUnlock.hideArea();
}
}
@@ -822,15 +765,7 @@
mUnlockScreen = null;
}
mUpdateMonitor.removeCallback(this);
- if (mFaceLockService != null) {
- try {
- mFaceLockService.unregisterCallback(mFaceLockCallback);
- } catch (RemoteException e) {
- // Not much we can do
- }
- stopFaceLock();
- mFaceLockService = null;
- }
+ mFaceUnlock.cleanUp();
}
private boolean isSecure() {
@@ -880,9 +815,9 @@
final UnlockMode unlockMode = getUnlockMode();
if (mode == Mode.UnlockScreen && unlockMode != UnlockMode.Unknown) {
if (force || mUnlockScreen == null || unlockMode != mUnlockScreenMode) {
- boolean restartFaceLock = stopFaceLockIfRunning();
+ boolean restartFaceLock = mFaceUnlock.stopIfRunning();
recreateUnlockScreen(unlockMode);
- if (restartFaceLock) activateFaceLockIfAble();
+ if (restartFaceLock) mFaceUnlock.activateIfAble(mHasOverlay);
}
}
@@ -995,7 +930,7 @@
throw new IllegalArgumentException("unknown unlock mode " + unlockMode);
}
initializeTransportControlView(unlockView);
- initializeFaceLockAreaView(unlockView); // Only shows view if FaceLock is enabled
+ mFaceUnlock.initializeAreaView(unlockView); // Only shows view if FaceLock is enabled
mUnlockScreenMode = unlockMode;
return unlockView;
@@ -1177,254 +1112,4 @@
return mBitmap.getHeight();
}
}
-
- // Everything below pertains to FaceLock - might want to separate this out
-
- // Indicates whether FaceLock is in use
- private boolean usingFaceLock() {
- return (mLockPatternUtils.usingBiometricWeak() &&
- mLockPatternUtils.isBiometricWeakInstalled());
- }
-
- // Takes care of FaceLock area when layout is created
- private void initializeFaceLockAreaView(View view) {
- if (usingFaceLock()) {
- mFaceLockAreaView = view.findViewById(R.id.faceLockAreaView);
- if (mFaceLockAreaView == null) {
- Log.e(TAG, "Layout does not have faceLockAreaView and FaceLock is enabled");
- }
- } else {
- mFaceLockAreaView = null; // Set to null if not using FaceLock
- }
- }
-
- // Stops FaceLock if it is running and reports back whether it was running or not
- private boolean stopFaceLockIfRunning() {
- if (usingFaceLock() && mBoundToFaceLockService) {
- stopAndUnbindFromFaceLock();
- return true;
- }
- return false;
- }
-
- // Handles covering or exposing FaceLock area on the client side when FaceLock starts or stops
- // This needs to be done in a handler because the call could be coming from a callback from the
- // FaceLock service that is in a thread that can't modify the UI
- @Override
- public boolean handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_SHOW_FACELOCK_AREA_VIEW:
- if (mFaceLockAreaView != null) {
- mFaceLockAreaView.setVisibility(View.VISIBLE);
- }
- break;
- case MSG_HIDE_FACELOCK_AREA_VIEW:
- if (mFaceLockAreaView != null) {
- mFaceLockAreaView.setVisibility(View.INVISIBLE);
- }
- break;
- default:
- Log.w(TAG, "Unhandled message");
- return false;
- }
- return true;
- }
-
- // Removes show and hide messages from the message queue
- private void removeFaceLockAreaDisplayMessages() {
- mHandler.removeMessages(MSG_SHOW_FACELOCK_AREA_VIEW);
- mHandler.removeMessages(MSG_HIDE_FACELOCK_AREA_VIEW);
- }
-
- // Shows the FaceLock area immediately
- private void showFaceLockArea() {
- // Remove messages to prevent a delayed hide message from undo-ing the show
- removeFaceLockAreaDisplayMessages();
- mHandler.sendEmptyMessage(MSG_SHOW_FACELOCK_AREA_VIEW);
- }
-
- // Hides the FaceLock area immediately
- private void hideFaceLockArea() {
- // Remove messages to prevent a delayed show message from undo-ing the hide
- removeFaceLockAreaDisplayMessages();
- mHandler.sendEmptyMessage(MSG_HIDE_FACELOCK_AREA_VIEW);
- }
-
- // Shows the FaceLock area for a period of time
- private void showFaceLockAreaWithTimeout(long timeoutMillis) {
- showFaceLockArea();
- mHandler.sendEmptyMessageDelayed(MSG_HIDE_FACELOCK_AREA_VIEW, timeoutMillis);
- }
-
- // Binds to FaceLock service. This call does not tell it to start, but it causes the service
- // to call the onServiceConnected callback, which then starts FaceLock.
- public void bindToFaceLock() {
- if (usingFaceLock()) {
- if (!mBoundToFaceLockService) {
- if (DEBUG) Log.d(TAG, "before bind to FaceLock service");
- mContext.bindService(new Intent(IFaceLockInterface.class.getName()),
- mFaceLockConnection,
- Context.BIND_AUTO_CREATE);
- if (DEBUG) Log.d(TAG, "after bind to FaceLock service");
- mBoundToFaceLockService = true;
- } else {
- Log.w(TAG, "Attempt to bind to FaceLock when already bound");
- }
- }
- }
-
- // Tells FaceLock to stop and then unbinds from the FaceLock service
- public void stopAndUnbindFromFaceLock() {
- if (usingFaceLock()) {
- stopFaceLock();
-
- if (mBoundToFaceLockService) {
- if (DEBUG) Log.d(TAG, "before unbind from FaceLock service");
- if (mFaceLockService != null) {
- try {
- mFaceLockService.unregisterCallback(mFaceLockCallback);
- } catch (RemoteException e) {
- // Not much we can do
- }
- }
- mContext.unbindService(mFaceLockConnection);
- if (DEBUG) Log.d(TAG, "after unbind from FaceLock service");
- mBoundToFaceLockService = false;
- } else {
- // This is usually not an error when this happens. Sometimes we will tell it to
- // unbind multiple times because it's called from both onWindowFocusChanged and
- // onDetachedFromWindow.
- if (DEBUG) Log.d(TAG, "Attempt to unbind from FaceLock when not bound");
- }
- }
- }
-
- private ServiceConnection mFaceLockConnection = new ServiceConnection() {
- // Completes connection, registers callback and starts FaceLock when service is bound
- @Override
- public void onServiceConnected(ComponentName className, IBinder iservice) {
- mFaceLockService = IFaceLockInterface.Stub.asInterface(iservice);
- if (DEBUG) Log.d(TAG, "Connected to FaceLock service");
- try {
- mFaceLockService.registerCallback(mFaceLockCallback);
- } catch (RemoteException e) {
- Log.e(TAG, "Caught exception connecting to FaceLock: " + e.toString());
- mFaceLockService = null;
- mBoundToFaceLockService = false;
- return;
- }
-
- if (mFaceLockAreaView != null) {
- int[] faceLockPosition;
- faceLockPosition = new int[2];
- mFaceLockAreaView.getLocationInWindow(faceLockPosition);
- startFaceLock(mFaceLockAreaView.getWindowToken(),
- faceLockPosition[0], faceLockPosition[1],
- mFaceLockAreaView.getWidth(), mFaceLockAreaView.getHeight());
- }
- }
-
- // Cleans up if FaceLock service unexpectedly disconnects
- @Override
- public void onServiceDisconnected(ComponentName className) {
- synchronized(mFaceLockServiceRunningLock) {
- mFaceLockService = null;
- mFaceLockServiceRunning = false;
- }
- mBoundToFaceLockService = false;
- Log.w(TAG, "Unexpected disconnect from FaceLock service");
- }
- };
-
- // Tells the FaceLock service to start displaying its UI and perform recognition
- public void startFaceLock(IBinder windowToken, int x, int y, int w, int h)
- {
- if (usingFaceLock()) {
- synchronized (mFaceLockServiceRunningLock) {
- if (!mFaceLockServiceRunning) {
- if (DEBUG) Log.d(TAG, "Starting FaceLock");
- try {
- mFaceLockService.startUi(windowToken, x, y, w, h);
- } catch (RemoteException e) {
- Log.e(TAG, "Caught exception starting FaceLock: " + e.toString());
- return;
- }
- mFaceLockServiceRunning = true;
- } else {
- if (DEBUG) Log.w(TAG, "startFaceLock() attempted while running");
- }
- }
- }
- }
-
- // Tells the FaceLock service to stop displaying its UI and stop recognition
- public void stopFaceLock()
- {
- if (usingFaceLock()) {
- // Note that attempting to stop FaceLock when it's not running is not an issue.
- // FaceLock can return, which stops it and then we try to stop it when the
- // screen is turned off. That's why we check.
- synchronized (mFaceLockServiceRunningLock) {
- if (mFaceLockServiceRunning) {
- try {
- if (DEBUG) Log.d(TAG, "Stopping FaceLock");
- mFaceLockService.stopUi();
- } catch (RemoteException e) {
- Log.e(TAG, "Caught exception stopping FaceLock: " + e.toString());
- }
- mFaceLockServiceRunning = false;
- }
- }
- }
- }
-
- // Implements the FaceLock service callback interface defined in AIDL
- private final IFaceLockCallback mFaceLockCallback = new IFaceLockCallback.Stub() {
-
- // Stops the FaceLock UI and indicates that the phone should be unlocked
- @Override
- public void unlock() {
- if (DEBUG) Log.d(TAG, "FaceLock unlock()");
- showFaceLockArea(); // Keep fallback covered
- stopAndUnbindFromFaceLock();
-
- mKeyguardScreenCallback.keyguardDone(true);
- mKeyguardScreenCallback.reportSuccessfulUnlockAttempt();
- }
-
- // Stops the FaceLock UI and exposes the backup method without unlocking
- // This means the user has cancelled out
- @Override
- public void cancel() {
- if (DEBUG) Log.d(TAG, "FaceLock cancel()");
- hideFaceLockArea(); // Expose fallback
- stopAndUnbindFromFaceLock();
- mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
- }
-
- // Stops the FaceLock UI and exposes the backup method without unlocking
- // This means FaceLock failed to recognize them
- @Override
- public void reportFailedAttempt() {
- if (DEBUG) Log.d(TAG, "FaceLock reportFailedAttempt()");
- mUpdateMonitor.reportFailedFaceUnlockAttempt();
- hideFaceLockArea(); // Expose fallback
- stopAndUnbindFromFaceLock();
- mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
- }
-
- // Removes the black area that covers the backup unlock method
- @Override
- public void exposeFallback() {
- if (DEBUG) Log.d(TAG, "FaceLock exposeFallback()");
- hideFaceLockArea(); // Expose fallback
- }
-
- // Allows the Face Unlock service to poke the wake lock to keep the lockscreen alive
- @Override
- public void pokeWakelock() {
- if (DEBUG) Log.d(TAG, "FaceLock pokeWakelock()");
- mKeyguardScreenCallback.pokeWakelock();
- }
- };
}
diff --git a/services/input/EventHub.cpp b/services/input/EventHub.cpp
index 665d711..7060ae2 100644
--- a/services/input/EventHub.cpp
+++ b/services/input/EventHub.cpp
@@ -1103,18 +1103,35 @@
// Enable wake-lock behavior on kernels that support it.
// TODO: Only need this for devices that can really wake the system.
- bool usingSuspendBlock = ioctl(fd, EVIOCSSUSPENDBLOCK, 1) == 0;
+ bool usingSuspendBlockIoctl = !ioctl(fd, EVIOCSSUSPENDBLOCK, 1);
+
+ // Tell the kernel that we want to use the monotonic clock for reporting timestamps
+ // associated with input events. This is important because the input system
+ // uses the timestamps extensively and assumes they were recorded using the monotonic
+ // clock.
+ //
+ // In older kernel, before Linux 3.4, there was no way to tell the kernel which
+ // clock to use to input event timestamps. The standard kernel behavior was to
+ // record a real time timestamp, which isn't what we want. Android kernels therefore
+ // contained a patch to the evdev_event() function in drivers/input/evdev.c to
+ // replace the call to do_gettimeofday() with ktime_get_ts() to cause the monotonic
+ // clock to be used instead of the real time clock.
+ //
+ // As of Linux 3.4, there is a new EVIOCSCLOCKID ioctl to set the desired clock.
+ // Therefore, we no longer require the Android-specific kernel patch described above
+ // as long as we make sure to set select the monotonic clock. We do that here.
+ bool usingClockIoctl = !ioctl(fd, EVIOCSCLOCKID, CLOCK_MONOTONIC);
ALOGI("New device: id=%d, fd=%d, path='%s', name='%s', classes=0x%x, "
"configuration='%s', keyLayout='%s', keyCharacterMap='%s', builtinKeyboard=%s, "
- "usingSuspendBlock=%s",
+ "usingSuspendBlockIoctl=%s, usingClockIoctl=%s",
deviceId, fd, devicePath, device->identifier.name.string(),
device->classes,
device->configurationFile.string(),
device->keyMap.keyLayoutFile.string(),
device->keyMap.keyCharacterMapFile.string(),
toString(mBuiltInKeyboardId == deviceId),
- toString(usingSuspendBlock));
+ toString(usingSuspendBlockIoctl), toString(usingClockIoctl));
mDevices.add(deviceId, device);
diff --git a/services/java/com/android/server/WiredAccessoryObserver.java b/services/java/com/android/server/WiredAccessoryObserver.java
index 9b4eddc..53d1f0e 100644
--- a/services/java/com/android/server/WiredAccessoryObserver.java
+++ b/services/java/com/android/server/WiredAccessoryObserver.java
@@ -301,13 +301,13 @@
// Pack up the values and broadcast them to everyone
if (headset == BIT_USB_HEADSET_ANLG) {
- intent = new Intent(Intent.ACTION_USB_ANLG_HEADSET_PLUG);
+ intent = new Intent(Intent.ACTION_ANALOG_AUDIO_DOCK_PLUG);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
intent.putExtra("state", state);
intent.putExtra("name", headsetName);
ActivityManagerNative.broadcastStickyIntent(intent, null);
} else if (headset == BIT_USB_HEADSET_DGTL) {
- intent = new Intent(Intent.ACTION_USB_DGTL_HEADSET_PLUG);
+ intent = new Intent(Intent.ACTION_DIGITAL_AUDIO_DOCK_PLUG);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
intent.putExtra("state", state);
intent.putExtra("name", headsetName);
diff --git a/services/java/com/android/server/net/NetworkPolicyManagerService.java b/services/java/com/android/server/net/NetworkPolicyManagerService.java
index 77addd60f0..fa62e497 100644
--- a/services/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -1588,7 +1588,7 @@
}
private Handler.Callback mHandlerCallback = new Handler.Callback() {
- /** {@inheritDoc} */
+ @Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case MSG_RULES_CHANGED: {
diff --git a/services/java/com/android/server/net/NetworkStatsCollection.java b/services/java/com/android/server/net/NetworkStatsCollection.java
index 70038d9..2892a74 100644
--- a/services/java/com/android/server/net/NetworkStatsCollection.java
+++ b/services/java/com/android/server/net/NetworkStatsCollection.java
@@ -57,8 +57,6 @@
* {@link NetworkIdentitySet}, UID, set, and tag. Knows how to persist itself.
*/
public class NetworkStatsCollection implements FileRotator.Reader {
- private static final String TAG = "NetworkStatsCollection";
-
/** File header magic number: "ANET" */
private static final int FILE_MAGIC = 0x414E4554;
@@ -173,7 +171,7 @@
}
/**
- * Record given {@link NetworkStats.Entry} into this collection.
+ * Record given {@link android.net.NetworkStats.Entry} into this collection.
*/
public void recordData(NetworkIdentitySet ident, int uid, int set, int tag, long start,
long end, NetworkStats.Entry entry) {
@@ -227,7 +225,7 @@
}
}
- /** {@inheritDoc} */
+ @Override
public void read(InputStream in) throws IOException {
read(new DataInputStream(in));
}
@@ -502,7 +500,7 @@
return false;
}
- /** {@inheritDoc} */
+ @Override
public int compareTo(Key another) {
return Integer.compare(uid, another.uid);
}
diff --git a/services/java/com/android/server/net/NetworkStatsRecorder.java b/services/java/com/android/server/net/NetworkStatsRecorder.java
index 540f606..57ad158 100644
--- a/services/java/com/android/server/net/NetworkStatsRecorder.java
+++ b/services/java/com/android/server/net/NetworkStatsRecorder.java
@@ -240,22 +240,22 @@
mCollection = checkNotNull(collection, "missing NetworkStatsCollection");
}
- /** {@inheritDoc} */
+ @Override
public void reset() {
// ignored
}
- /** {@inheritDoc} */
+ @Override
public void read(InputStream in) throws IOException {
mCollection.read(in);
}
- /** {@inheritDoc} */
+ @Override
public boolean shouldWrite() {
return true;
}
- /** {@inheritDoc} */
+ @Override
public void write(OutputStream out) throws IOException {
mCollection.write(new DataOutputStream(out));
mCollection.reset();
@@ -275,24 +275,24 @@
mUid = uid;
}
- /** {@inheritDoc} */
+ @Override
public void reset() {
mTemp.reset();
}
- /** {@inheritDoc} */
+ @Override
public void read(InputStream in) throws IOException {
mTemp.read(in);
mTemp.clearDirty();
mTemp.removeUid(mUid);
}
- /** {@inheritDoc} */
+ @Override
public boolean shouldWrite() {
return mTemp.isDirty();
}
- /** {@inheritDoc} */
+ @Override
public void write(OutputStream out) throws IOException {
mTemp.write(new DataOutputStream(out));
}
diff --git a/services/java/com/android/server/net/NetworkStatsService.java b/services/java/com/android/server/net/NetworkStatsService.java
index f7ba329..4382a03 100644
--- a/services/java/com/android/server/net/NetworkStatsService.java
+++ b/services/java/com/android/server/net/NetworkStatsService.java
@@ -500,6 +500,9 @@
Binder.restoreCallingIdentity(token);
}
+ // splice in operation counts
+ networkLayer.spliceOperationsFrom(mUidOperations);
+
final NetworkStats dataLayer = new NetworkStats(
networkLayer.getElapsedRealtime(), networkLayer.size());
@@ -510,8 +513,6 @@
dataLayer.combineValues(entry);
}
- // splice in operation counts
- dataLayer.spliceOperationsFrom(mUidOperations);
return dataLayer;
}
@@ -998,7 +999,7 @@
}
private Handler.Callback mHandlerCallback = new Handler.Callback() {
- /** {@inheritDoc} */
+ @Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case MSG_PERFORM_POLL: {
@@ -1037,7 +1038,7 @@
}
private class DropBoxNonMonotonicObserver implements NonMonotonicObserver<String> {
- /** {@inheritDoc} */
+ @Override
public void foundNonMonotonic(NetworkStats left, int leftIndex, NetworkStats right,
int rightIndex, String cookie) {
Log.w(TAG, "found non-monotonic values; saving to dropbox");
@@ -1056,7 +1057,8 @@
}
/**
- * Default external settings that read from {@link Settings.Secure}.
+ * Default external settings that read from
+ * {@link android.provider.Settings.Secure}.
*/
private static class DefaultNetworkStatsSettings implements NetworkStatsSettings {
private final ContentResolver mResolver;
@@ -1074,19 +1076,24 @@
return Settings.Secure.getInt(mResolver, name, defInt) != 0;
}
+ @Override
public long getPollInterval() {
return getSecureLong(NETSTATS_POLL_INTERVAL, 30 * MINUTE_IN_MILLIS);
}
+ @Override
public long getTimeCacheMaxAge() {
return getSecureLong(NETSTATS_TIME_CACHE_MAX_AGE, DAY_IN_MILLIS);
}
+ @Override
public long getGlobalAlertBytes() {
return getSecureLong(NETSTATS_GLOBAL_ALERT_BYTES, 2 * MB_IN_BYTES);
}
+ @Override
public boolean getSampleEnabled() {
return getSecureBoolean(NETSTATS_SAMPLE_ENABLED, true);
}
+ @Override
public Config getDevConfig() {
return new Config(getSecureLong(NETSTATS_DEV_BUCKET_DURATION, HOUR_IN_MILLIS),
getSecureLong(NETSTATS_DEV_PERSIST_BYTES, 2 * MB_IN_BYTES),
@@ -1094,6 +1101,7 @@
getSecureLong(NETSTATS_DEV_DELETE_AGE, 90 * DAY_IN_MILLIS));
}
+ @Override
public Config getUidConfig() {
return new Config(getSecureLong(NETSTATS_UID_BUCKET_DURATION, 2 * HOUR_IN_MILLIS),
getSecureLong(NETSTATS_UID_PERSIST_BYTES, 2 * MB_IN_BYTES),
@@ -1101,6 +1109,7 @@
getSecureLong(NETSTATS_UID_DELETE_AGE, 90 * DAY_IN_MILLIS));
}
+ @Override
public Config getUidTagConfig() {
return new Config(getSecureLong(NETSTATS_UID_BUCKET_DURATION, 2 * HOUR_IN_MILLIS),
getSecureLong(NETSTATS_UID_PERSIST_BYTES, 2 * MB_IN_BYTES),
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 6f7852d..a7af8fb 100644
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -4807,10 +4807,13 @@
final int SW_LID = 0x00;
int sw = mInputManager.getSwitchState(-1, InputDevice.SOURCE_ANY, SW_LID);
if (sw > 0) {
- return LID_OPEN;
- } else if (sw == 0) {
+ // Switch state: AKEY_STATE_DOWN or AKEY_STATE_VIRTUAL.
return LID_CLOSED;
+ } else if (sw == 0) {
+ // Switch state: AKEY_STATE_UP.
+ return LID_OPEN;
} else {
+ // Switch state: AKEY_STATE_UNKNOWN.
return LID_ABSENT;
}
}
@@ -4818,10 +4821,6 @@
// Called by window manager policy. Not exposed externally.
@Override
public InputChannel monitorInput(String inputChannelName) {
- if (!checkCallingPermission(android.Manifest.permission.READ_INPUT_STATE,
- "monitorInput()")) {
- throw new SecurityException("Requires READ_INPUT_STATE permission");
- }
return mInputManager.monitorInput(inputChannelName);
}
diff --git a/services/jni/com_android_server_input_InputManagerService.cpp b/services/jni/com_android_server_input_InputManagerService.cpp
index 75c20f3..c137a78 100644
--- a/services/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/jni/com_android_server_input_InputManagerService.cpp
@@ -510,8 +510,9 @@
switch (switchCode) {
case SW_LID:
+ // When switch value is set indicates lid is closed.
env->CallVoidMethod(mServiceObj, gServiceClassInfo.notifyLidSwitchChanged,
- when, switchValue == 0);
+ when, switchValue == 0 /*lidOpen*/);
checkAndClearExceptionFromCallback(env, "notifyLidSwitchChanged");
break;
}
diff --git a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
index 2033db6..ba3fd3c 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
@@ -981,7 +981,7 @@
}
}
- /** {@inheritDoc} */
+ @Override
public boolean queueIdle() {
set(null);
return false;
diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
index ed0081b..9f6ec71 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
@@ -205,6 +205,8 @@
// Sets operator numeric property by retrieving from build-time system property
String operatorNumeric = SystemProperties.get(PROPERTY_CDMA_HOME_OPERATOR_NUMERIC);
+ log("CDMAPhone: init set 'gsm.sim.operator.numeric' to operator='" +
+ operatorNumeric + "'");
setSystemProperty(PROPERTY_ICC_OPERATOR_NUMERIC, operatorNumeric);
// Sets iso country property by retrieving from build-time system property
diff --git a/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java b/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java
index 3855515..2fefa3f 100755
--- a/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java
+++ b/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java
@@ -329,11 +329,11 @@
@Override
protected void onAllRecordsLoaded() {
- log("RuimRecords: record load complete");
-
// Further records that can be inserted are Operator/OEM dependent
String operator = getRUIMOperatorNumeric();
+ log("RuimRecords: onAllRecordsLoaded set 'gsm.sim.operator.numeric' to operator='" +
+ operator + "'");
SystemProperties.set(PROPERTY_ICC_OPERATOR_NUMERIC, operator);
if (mImsi != null) {
diff --git a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
index b88af2c..80988fd 100755
--- a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
@@ -228,6 +228,7 @@
adnCache.reset();
+ log("SIMRecords: onRadioOffOrNotAvailable set 'gsm.sim.operator.numeric' to operator=null");
SystemProperties.set(PROPERTY_ICC_OPERATOR_NUMERIC, null);
SystemProperties.set(PROPERTY_ICC_OPERATOR_ALPHA, null);
SystemProperties.set(PROPERTY_ICC_OPERATOR_ISO_COUNTRY, null);
@@ -1254,12 +1255,12 @@
}
protected void onAllRecordsLoaded() {
- log("record load complete");
-
String operator = getOperatorNumeric();
// Some fields require more than one SIM record to set
+ log("SIMRecords: onAllRecordsLoaded set 'gsm.sim.operator.numeric' to operator='" +
+ operator + "'");
SystemProperties.set(PROPERTY_ICC_OPERATOR_NUMERIC, operator);
if (imsi != null) {