summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThe Android Automerger <android-build@android.com>2010-01-22 13:37:52 -0800
committerThe Android Automerger <android-build@android.com>2010-01-22 13:37:52 -0800
commit1e81bf587e2f9f05fc2cd3ff3e1bee99ce43b763 (patch)
tree7a9aafe7c124f2c2b11a76e22e5bb0158ae2fd37
parentc8cb6a3678893b26629c902da1ab84f53bcc601e (diff)
parent5ff24d5da414db4e8c2ebe98f40976e7be62b72d (diff)
downloadbase-1e81bf587e2f9f05fc2cd3ff3e1bee99ce43b763.tar.gz
Merge branch 'eclair' into eclair-release
-rw-r--r--core/java/android/content/SyncManager.java9
-rw-r--r--core/java/android/webkit/WebView.java68
-rw-r--r--core/java/com/android/internal/widget/ContactHeaderWidget.java95
-rw-r--r--core/res/res/values-cs/strings.xml1
-rw-r--r--core/res/res/values-da/strings.xml1
-rw-r--r--core/res/res/values-de/strings.xml1
-rw-r--r--core/res/res/values-el/strings.xml1
-rw-r--r--core/res/res/values-es-rUS/strings.xml1
-rw-r--r--core/res/res/values-es/strings.xml1
-rw-r--r--core/res/res/values-fr/strings.xml1
-rw-r--r--core/res/res/values-it/strings.xml1
-rw-r--r--core/res/res/values-ja/strings.xml1
-rw-r--r--core/res/res/values-ko/strings.xml1
-rw-r--r--core/res/res/values-nb/strings.xml1
-rw-r--r--core/res/res/values-nl/strings.xml1
-rw-r--r--core/res/res/values-pl/strings.xml1
-rw-r--r--core/res/res/values-pt-rPT/strings.xml1
-rw-r--r--core/res/res/values-pt/strings.xml1
-rw-r--r--core/res/res/values-ru/strings.xml1
-rw-r--r--core/res/res/values-sv/strings.xml1
-rw-r--r--core/res/res/values-tr/strings.xml1
-rw-r--r--core/res/res/values-zh-rCN/strings.xml1
-rw-r--r--core/res/res/values-zh-rTW/strings.xml1
-rw-r--r--core/res/res/values/strings.xml2
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java56
-rw-r--r--services/java/com/android/server/HeadsetObserver.java21
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java36
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java2
28 files changed, 191 insertions, 118 deletions
diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java
index b2d406b5e7c5..33d6159db36c 100644
--- a/core/java/android/content/SyncManager.java
+++ b/core/java/android/content/SyncManager.java
@@ -34,6 +34,7 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.RegisteredServicesCache;
import android.content.pm.ProviderInfo;
+import android.content.pm.RegisteredServicesCacheListener;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
@@ -344,6 +345,14 @@ class SyncManager implements OnAccountsUpdateListener {
mPackageManager = null;
mSyncAdapters = new SyncAdaptersCache(mContext);
+ mSyncAdapters.setListener(new RegisteredServicesCacheListener<SyncAdapterType>() {
+ public void onServiceChanged(SyncAdapterType type, boolean removed) {
+ if (!removed) {
+ scheduleSync(null, type.authority, null, 0 /* no delay */,
+ false /* onlyThoseWithUnkownSyncableState */);
+ }
+ }
+ }, mSyncHandler);
mSyncAlarmIntent = PendingIntent.getBroadcast(
mContext, 0 /* ignored */, new Intent(ACTION_SYNC_ALARM), 0);
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 46064a270b5e..ab1841e140d7 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -536,10 +536,8 @@ public class WebView extends AbsoluteLayout
static int DEFAULT_SCALE_PERCENT;
private float mDefaultScale;
- // set to true temporarily during ScaleGesture triggered zoom
+ // set to true temporarily while the zoom control is being dragged
private boolean mPreviewZoomOnly = false;
- // extra scale during zoom preview
- private float mPreviewExtraZoomScale = 1.0f;
// computed scale and inverse, from mZoomWidth.
private float mActualScale;
@@ -2812,9 +2810,7 @@ public class WebView extends AbsoluteLayout
nativeRecordButtons(hasFocus() && hasWindowFocus(),
mTouchMode == TOUCH_SHORTPRESS_START_MODE
|| mTrackballDown || mGotCenterDown, false);
- // use the DKGRAY as background when drawing zoom preview
- drawCoreAndCursorRing(canvas, mPreviewZoomOnly ? Color.DKGRAY
- : mBackgroundColor, mDrawCursorRing);
+ drawCoreAndCursorRing(canvas, mBackgroundColor, mDrawCursorRing);
}
@Override
@@ -2824,12 +2820,6 @@ public class WebView extends AbsoluteLayout
return;
}
int saveCount = canvas.save();
- if (mPreviewZoomOnly) {
- // scale after canvas.save() so that the child, like titlebar, will
- // not be scaled.
- canvas.scale(mPreviewExtraZoomScale, mPreviewExtraZoomScale,
- mZoomCenterX + mScrollX, mZoomCenterY + mScrollY);
- }
if (mTitleBar != null) {
canvas.translate(0, (int) mTitleBar.getHeight());
}
@@ -2838,8 +2828,8 @@ public class WebView extends AbsoluteLayout
}
canvas.restoreToCount(saveCount);
- // Now draw the shadow, skip if it is in zoom preview mode.
- if ((mTitleBar != null && !mPreviewZoomOnly)) {
+ // Now draw the shadow.
+ if (mTitleBar != null) {
int y = mScrollY + getVisibleTitleHeight();
int height = (int) (5f * getContext().getResources()
.getDisplayMetrics().density);
@@ -3744,8 +3734,6 @@ public class WebView extends AbsoluteLayout
private class ScaleDetectorListener implements
ScaleGestureDetector.OnScaleGestureListener {
- float mStartX, mStartY;
-
public boolean onScaleBegin(ScaleGestureDetector detector) {
// cancel the single touch handling
cancelTouch();
@@ -3759,9 +3747,6 @@ public class WebView extends AbsoluteLayout
if (inEditingMode() && nativeFocusCandidateIsPassword()) {
mWebTextView.setInPassword(false);
}
- mPreviewExtraZoomScale = 1.0f;
- mStartX = detector.getFocusX();
- mStartY = detector.getFocusY();
return true;
}
@@ -3770,12 +3755,13 @@ public class WebView extends AbsoluteLayout
mPreviewZoomOnly = false;
mAnchorX = viewToContentX((int) mZoomCenterX + mScrollX);
mAnchorY = viewToContentY((int) mZoomCenterY + mScrollY);
- float scale = mPreviewExtraZoomScale * mActualScale;
// don't reflow when zoom in; when zoom out, do reflow if the
// new scale is almost minimum scale;
- boolean reflowNow = (scale - mMinZoomScale <= 0.01f)
- || ((scale <= 0.8 * mTextWrapScale));
- setNewZoomScale(scale, reflowNow, false);
+ boolean reflowNow = (mActualScale - mMinZoomScale <= 0.01f)
+ || ((mActualScale <= 0.8 * mTextWrapScale));
+ // force zoom after mPreviewZoomOnly is set to false so that the
+ // new view size will be passed to the WebKit
+ setNewZoomScale(mActualScale, reflowNow, true);
// call invalidate() to draw without zoom filter
invalidate();
}
@@ -3792,34 +3778,19 @@ public class WebView extends AbsoluteLayout
}
public boolean onScale(ScaleGestureDetector detector) {
- float currScale = mPreviewExtraZoomScale * mActualScale;
float scale = (float) (Math.round(detector.getScaleFactor()
- * currScale * 100) / 100.0);
- // limit the scale change per step
- if (scale > currScale) {
- scale = Math.min(scale, currScale * 1.25f);
- } else {
- // the preview scale can be 80% of mMinZoomScale for feedback
- scale = Math.max(Math.max(scale, currScale * 0.8f),
- mMinZoomScale * 0.8f);
- }
- if (Math.abs(scale - currScale) >= PREVIEW_SCALE_INCREMENT) {
+ * mActualScale * 100) / 100.0);
+ if (Math.abs(scale - mActualScale) >= PREVIEW_SCALE_INCREMENT) {
mPreviewZoomOnly = true;
- // FIXME: mZoomCenterX/Y need to be relative to mActualScale.
- // Ideally the focusX/Y should be a fixed point. But currently
- // it just returns the center of the two pointers. If only one
- // pointer is moving, the center is shifting. Currently we only
- // adjust it for zoom in case to get better result.
- if (mPreviewExtraZoomScale > 1.0f) {
- mZoomCenterX = mStartX - (mStartX - detector.getFocusX())
- / mPreviewExtraZoomScale;
- mZoomCenterY = mStartY - (mStartY - detector.getFocusY())
- / mPreviewExtraZoomScale;
+ // limit the scale change per step
+ if (scale > mActualScale) {
+ scale = Math.min(scale, mActualScale * 1.25f);
} else {
- mZoomCenterX = detector.getFocusX();
- mZoomCenterY = detector.getFocusY();
+ scale = Math.max(scale, mActualScale * 0.8f);
}
- mPreviewExtraZoomScale = scale / mActualScale;
+ mZoomCenterX = detector.getFocusX();
+ mZoomCenterY = detector.getFocusY();
+ setNewZoomScale(scale, false, false);
invalidate();
return true;
}
@@ -4000,7 +3971,8 @@ public class WebView extends AbsoluteLayout
// FIXME: we may consider to give WebKit an option to handle multi-touch
// events later.
- if (mSupportMultiTouch && ev.getPointerCount() > 1) {
+ if (mSupportMultiTouch && mMinZoomScale < mMaxZoomScale
+ && ev.getPointerCount() > 1) {
mScaleDetector.onTouchEvent(ev);
if (mScaleDetector.isInProgress()) {
mLastTouchTime = eventTime;
diff --git a/core/java/com/android/internal/widget/ContactHeaderWidget.java b/core/java/com/android/internal/widget/ContactHeaderWidget.java
index 33fd936fca56..c4f99886245d 100644
--- a/core/java/com/android/internal/widget/ContactHeaderWidget.java
+++ b/core/java/com/android/internal/widget/ContactHeaderWidget.java
@@ -201,7 +201,7 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
mNoPhotoResource = R.drawable.ic_contact_picture_3;
}
- mQueryHandler = new QueryHandler(mContentResolver);
+ resetAsyncQueryHandler();
}
public void enableClickListeners() {
@@ -237,6 +237,11 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
try{
+ if (this != mQueryHandler) {
+ Log.d(TAG, "onQueryComplete: discard result, the query handler is reset!");
+ return;
+ }
+
switch (token) {
case TOKEN_PHOTO_QUERY: {
//Set the photo
@@ -263,8 +268,14 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
bindContactInfo(cursor);
Uri lookupUri = Contacts.getLookupUri(cursor.getLong(ContactQuery._ID),
cursor.getString(ContactQuery.LOOKUP_KEY));
- startPhotoQuery(cursor.getLong(ContactQuery.PHOTO_ID), lookupUri);
+ startPhotoQuery(cursor.getLong(ContactQuery.PHOTO_ID),
+ lookupUri, false /* don't reset query handler */);
invalidate();
+ } else {
+ // shouldn't really happen
+ setDisplayName(null, null);
+ setSocialSnippet(null);
+ setPhoto(loadPlaceholderPhoto(null));
}
break;
}
@@ -273,11 +284,13 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
long contactId = cursor.getLong(PHONE_LOOKUP_CONTACT_ID_COLUMN_INDEX);
String lookupKey = cursor.getString(
PHONE_LOOKUP_CONTACT_LOOKUP_KEY_COLUMN_INDEX);
- bindFromContactUri(Contacts.getLookupUri(contactId, lookupKey));
+ bindFromContactUriInternal(Contacts.getLookupUri(contactId, lookupKey),
+ false /* don't reset query handler */);
} else {
String phoneNumber = (String) cookie;
setDisplayName(phoneNumber, null);
setSocialSnippet(null);
+ setPhoto(loadPlaceholderPhoto(null));
mPhotoView.assignContactFromPhone(phoneNumber, true);
}
break;
@@ -287,11 +300,13 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
long contactId = cursor.getLong(EMAIL_LOOKUP_CONTACT_ID_COLUMN_INDEX);
String lookupKey = cursor.getString(
EMAIL_LOOKUP_CONTACT_LOOKUP_KEY_COLUMN_INDEX);
- bindFromContactUri(Contacts.getLookupUri(contactId, lookupKey));
+ bindFromContactUriInternal(Contacts.getLookupUri(contactId, lookupKey),
+ false /* don't reset query handler */);
} else {
String emailAddress = (String) cookie;
setDisplayName(emailAddress, null);
setSocialSnippet(null);
+ setPhoto(loadPlaceholderPhoto(null));
mPhotoView.assignContactFromEmail(emailAddress, true);
}
break;
@@ -397,22 +412,22 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
* Convenience method for binding all available data from an existing
* contact.
*
- * @param conatctUri a {Contacts.CONTENT_LOOKUP_URI} style URI.
+ * @param contactLookupUri a {Contacts.CONTENT_LOOKUP_URI} style URI.
*/
public void bindFromContactLookupUri(Uri contactLookupUri) {
- mContactUri = contactLookupUri;
- startContactQuery(contactLookupUri);
+ bindFromContactUriInternal(contactLookupUri, true /* reset query handler */);
}
/**
* Convenience method for binding all available data from an existing
* contact.
*
- * @param conatctUri a {Contacts.CONTENT_URI} style URI.
+ * @param contactUri a {Contacts.CONTENT_URI} style URI.
+ * @param resetQueryHandler whether to use a new AsyncQueryHandler or not.
*/
- public void bindFromContactUri(Uri contactUri) {
+ private void bindFromContactUriInternal(Uri contactUri, boolean resetQueryHandler) {
mContactUri = contactUri;
- startContactQuery(contactUri);
+ startContactQuery(contactUri, resetQueryHandler);
}
/**
@@ -424,6 +439,8 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
* address, one of them will be chosen to bind to.
*/
public void bindFromEmail(String emailAddress) {
+ resetAsyncQueryHandler();
+
mQueryHandler.startQuery(TOKEN_EMAIL_LOOKUP, emailAddress,
Uri.withAppendedPath(Email.CONTENT_LOOKUP_URI, Uri.encode(emailAddress)),
EMAIL_LOOKUP_PROJECTION, null, null, null);
@@ -438,36 +455,72 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
* number, one of them will be chosen to bind to.
*/
public void bindFromPhoneNumber(String number) {
+ resetAsyncQueryHandler();
+
mQueryHandler.startQuery(TOKEN_PHONE_LOOKUP, number,
Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)),
PHONE_LOOKUP_PROJECTION, null, null, null);
}
/**
- * Method to force this widget to forget everything it knows about the contact.
- * The widget isn't automatically updated or redrawn.
+ * startContactQuery
*
+ * internal method to query contact by Uri.
+ *
+ * @param contactUri the contact uri
+ * @param resetQueryHandler whether to use a new AsyncQueryHandler or not
*/
- public void wipeClean() {
- setDisplayName(null, null);
- setPhoto(null);
- setSocialSnippet(null);
- mContactUri = null;
- mExcludeMimes = null;
- }
+ private void startContactQuery(Uri contactUri, boolean resetQueryHandler) {
+ if (resetQueryHandler) {
+ resetAsyncQueryHandler();
+ }
- private void startContactQuery(Uri contactUri) {
mQueryHandler.startQuery(TOKEN_CONTACT_INFO, null, contactUri, ContactQuery.COLUMNS,
null, null, null);
}
- protected void startPhotoQuery(long photoId, Uri lookupKey) {
+ /**
+ * startPhotoQuery
+ *
+ * internal method to query contact photo by photo id and uri.
+ *
+ * @param photoId the photo id.
+ * @param lookupKey the lookup uri.
+ * @param resetQueryHandler whether to use a new AsyncQueryHandler or not.
+ */
+ protected void startPhotoQuery(long photoId, Uri lookupKey, boolean resetQueryHandler) {
+ if (resetQueryHandler) {
+ resetAsyncQueryHandler();
+ }
+
mQueryHandler.startQuery(TOKEN_PHOTO_QUERY, lookupKey,
ContentUris.withAppendedId(Data.CONTENT_URI, photoId), PhotoQuery.COLUMNS,
null, null, null);
}
/**
+ * Method to force this widget to forget everything it knows about the contact.
+ * We need to stop any existing async queries for phone, email, contact, and photos.
+ */
+ public void wipeClean() {
+ resetAsyncQueryHandler();
+
+ setDisplayName(null, null);
+ setPhoto(loadPlaceholderPhoto(null));
+ setSocialSnippet(null);
+ setPresence(0);
+ mContactUri = null;
+ mExcludeMimes = null;
+ }
+
+
+ private void resetAsyncQueryHandler() {
+ // the api AsyncQueryHandler.cancelOperation() doesn't really work. Since we really
+ // need the old async queries to be cancelled, let's do it the hard way.
+ mQueryHandler = new QueryHandler(mContentResolver);
+ }
+
+ /**
* Bind the contact details provided by the given {@link Cursor}.
*/
protected void bindContactInfo(Cursor c) {
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 882ce47bd222..cec230a9c0fa 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Není vložena SIM karta."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"V telefonu není žádná karta SIM."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Prosím vložte kartu SIM."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Pouze tísňová volání"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Síť je blokována"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"Karta SIM je zablokována pomocí kódu PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Další informace naleznete v uživatelské příručce, nebo kontaktujte podporu zákazníků."</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 11ef0a91d7e4..0ea959f96866 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Der er ikke noget SIM-kort."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Der er ikke noget SIM-kort i telefonen."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Indsæt et SIM-kort."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Kun nødopkald"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Netværket er låst"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM-kortet er låst med PUK-koden."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Se brugervejledningen, eller kontakt kundeservice."</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index d59d3a70966a..353bc3b45d3e 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Keine SIM-Karte."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Keine SIM-Karte im Telefon."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Bitte legen Sie eine SIM-Karte ein."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Nur Notrufe"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Netzwerk gesperrt"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM-Karte ist gesperrt. PUK-Eingabe erforderlich."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Weitere Informationen finden Sie in der Bedienungsanleitung oder wenden Sie sich an den Kundendienst."</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index c423033c7987..65c6676a24ee 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Δεν υπάρχει κάρτα SIM."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Δεν υπάρχει κάρτα SIM στο τηλέφωνο."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Τοποθετήστε μια κάρτα SIM."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Μόνο κλήσεις έκτακτης ανάγκης"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Το δίκτυο κλειδώθηκε"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"Η κάρτα SIM είναι κλειδωμένη με κωδικό PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Ανατρέξτε στον οδηγό χρήσης ή επικοινωνήστε με την εξυπηρέτηση πελατών."</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 68939793427d..5f980e0cdc33 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"No hay tarjeta SIM."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"No hay tarjeta SIM en el teléfono."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Inserta una tarjeta SIM."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Sólo llamadas de emergencia"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Red bloqueada"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"La tarjeta SIM está bloqueada con PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Consulta la guía del usuario o comunícate con el servicio de atención al cliente."</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index d34de350b8e5..1dd9b3135eed 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Falta la tarjeta SIM"</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"No se ha insertado ninguna tarjeta SIM en el teléfono."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Inserta una tarjeta SIM."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Sólo llamadas de emergencia"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Bloqueada para la red"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"La tarjeta SIM está bloqueada con el código PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Consulta la guía del usuario o ponte en contacto con el servicio de atención al cliente."</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 61e72975ebef..a11e00deec14 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Aucune carte SIM n\'a été trouvée."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Aucune carte SIM n\'est insérée dans le téléphone."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Insérez une carte SIM."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Appels d\'urgence uniquement"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Réseau verrouillé"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"La carte SIM est verrouillée par clé PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Veuillez consulter le guide d\'utilisation ou contacter l\'assistance clientèle."</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index be7f002e892f..dd93286bd579 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Nessuna SIM presente."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Nessuna SIM presente nel telefono."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Inserisci una SIM."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Solo chiamate di emergenza"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Rete bloccata"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"La SIM è bloccata tramite PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Consulta il Manuale utente o contatta il servizio clienti."</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index d8bffe276a7c..9625068efc01 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"SIMカードが挿入されていません"</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"SIMカードが挿入されていません"</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"SIMカードを挿入してください。"</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"緊急通報のみ"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"ネットワークがロックされました"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIMカードはPUKでロックされています。"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"ユーザーガイドを参照するか、お客様サポートにお問い合わせください。"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 5271228b7774..aaeb6d815e89 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"SIM 카드가 없습니다."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"휴대전화에 SIM 카드가 없습니다."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"SIM 카드를 삽입하세요."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"비상 전화만"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"네트워크 잠김"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM 카드의 PUK가 잠겨 있습니다."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"사용자 가이드를 참조하거나 고객지원팀에 문의하세요."</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 1546ddb8f175..b012e12e45e1 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Mangler SIM-kort."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Ikke noe SIM-kort i telefonen."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Sett inn et SIM-kort."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Kun nødsamtaler"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Nettverk ikke tillatt"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM-kortet er PUK-låst."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Se manualen eller kontakt kundeservice."</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 37f6e0aff1aa..8046f1f64e5a 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Geen SIM-kaart."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Geen SIM-kaart in telefoon."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Plaats een SIM-kaart."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Alleen noodoproepen"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Netwerk vergrendeld"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM-kaart is vergrendeld met PUK-code."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Raadpleeg de gebruikershandleiding of neem contact op met de klantenservice."</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index fd63c58ec09d..0cf137e5d07e 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Brak karty SIM."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Brak karty SIM w telefonie."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Włóż kartę SIM."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Tylko połączenia alarmowe"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Sieć zablokowana"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"Karta SIM jest zablokowana kodem PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Zapoznaj się z instrukcją obsługi lub skontaktuj się z działem obsługi klienta."</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index a494a7ab170e..3e3d2e53be92 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Nenhum cartão SIM."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Nenhum cartão SIM no telefone."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Introduza um cartão SIM."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Apenas chamadas de emergência"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Rede bloqueada"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"O cartão SIM está bloqueado por PUK"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Consulte o Manual de utilizador ou contacte a Assistência a clientes."</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 1bae99e2d655..b6bcca2430ec 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Sem cartão SIM."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Não há um cartão SIM no telefone."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Insira um cartão SIM."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Apenas chamadas de emergência"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Rede bloqueada"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"O cartão SIM está bloqueado pelo PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Consulte o Guia do Usuário ou entre em contato com o Serviço de atendimento ao cliente."</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 281953320c8b..4f341cf94ba6 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Нет SIM-карты."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"SIM-карта не установлена."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Вставьте SIM-карту."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Только вызовы службы экстренной помощи"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Сеть заблокирована"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM-карта заблокирована с помощью кода PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"См. руководство пользователя или свяжитесь со службой поддержки."</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index fbbcb62cca86..702835112032 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"Inget SIM-kort."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Inget SIM-kort i telefonen."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Sätt i ett SIM-kort."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Endast nödsamtal"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Nätverk låst"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM-kortet är PUK-låst."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Se användarhandboken eller kontakta Kundtjänst."</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 687fe369cc79..fa4764e76bbb 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"SIM kart yok."</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"Telefonda SIM kart yok."</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"Lütfen SIM kart takın."</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"Yalnızca acil çağrılar için"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"Ağ kilitli"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM kart PUK kilidi devrede."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"Lütfen Kullanıcı Rehberi\'ne bakın veya Müşteri Hizmetleri\'ne başvurun."</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index de4baf812d50..ebb7758ced87 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"没有 SIM 卡"</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"手机中无 SIM 卡"</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"请插入 SIM 卡"</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"仅限于急救或报警电话"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"网络已锁定"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM 卡已用 PUK 码锁定"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"请参阅《用户指南》或联系客服人员。"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index fb846339f72d..39c081cfd515 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -503,6 +503,7 @@
<string name="lockscreen_missing_sim_message_short" msgid="7381499217732227295">"沒有 SIM 卡。"</string>
<string name="lockscreen_missing_sim_message" msgid="2186920585695169078">"手機未插入 SIM 卡。"</string>
<string name="lockscreen_missing_sim_instructions" msgid="8874620818937719067">"請插入 SIM 卡。"</string>
+ <string name="emergency_calls_only" msgid="6733978304386365407">"只能撥打緊急電話"</string>
<string name="lockscreen_network_locked_message" msgid="143389224986028501">"網路已鎖定"</string>
<string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM 的 PUK 已鎖定。"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="635967534992394321">"請參閱《使用者指南》或聯絡客戶服務中心。"</string>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 1394341d24e0..0327e0820d32 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1372,6 +1372,8 @@
<!-- Shown in the lock screen to ask the user to insert a SIM card. -->
<string name="lockscreen_missing_sim_instructions">Please insert a SIM card.</string>
+ <!-- Shown in the lock screen when there is emergency calls only mode. -->
+ <string name="emergency_calls_only" msgid="2485604591272668370">Emergency calls only</string>
<!-- When the user inserts a sim card from an unsupported network, it becomes network
locked -->
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java
index 4cdc06d79c06..88e171d3929a 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java
@@ -255,13 +255,19 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
}
//Write the ps output to the file
- public void getMemoryWriteToLog(Writer output) {
+ public void getMemoryWriteToLog(Writer output, int writeCount) {
String memusage = null;
- memusage = captureMediaserverInfo();
- Log.v(TAG, memusage);
try {
- //Write to file output
+ if (writeCount == 0) {
+ mStartMemory = getMediaserverVsize();
+ output.write("Start memory : " + mStartMemory + "\n");
+ }
+ memusage = captureMediaserverInfo();
output.write(memusage);
+ if (writeCount == NUM_STRESS_LOOP - 1) {
+ mEndMemory = getMediaserverVsize();
+ output.write("End Memory :" + mEndMemory + "\n");
+ }
} catch (Exception e) {
e.toString();
}
@@ -312,9 +318,6 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
//Wait for 10 seconds to make sure the memory settle.
Thread.sleep(10000);
mEndPid = getMediaserverPid();
- mEndMemory = getMediaserverVsize();
- Log.v(TAG, "End Memory " + mEndMemory);
- output.write("End Memory :" + mEndMemory + "\n");
int memDiff = mEndMemory - startMemory;
if (memDiff < 0)
memDiff = 0;
@@ -348,12 +351,9 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
File h263MemoryOut = new File(MEDIA_MEMORY_OUTPUT);
Writer output = new BufferedWriter(new FileWriter(h263MemoryOut, true));
output.write("H263 Video Playback Only\n");
- mStartMemory = getMediaserverVsize();
- output.write("Start memory : " + mStartMemory + "\n");
- Log.v(TAG, "first mem : " + mStartMemory);
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
mediaStressPlayback(MediaNames.VIDEO_HIGHRES_H263);
- getMemoryWriteToLog(output);
+ getMemoryWriteToLog(output, i);
}
output.write("\n");
memoryResult = validateMemoryResult(mStartPid, mStartMemory, output);
@@ -370,12 +370,9 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
File h264MemoryOut = new File(MEDIA_MEMORY_OUTPUT);
Writer output = new BufferedWriter(new FileWriter(h264MemoryOut, true));
output.write("H264 Video Playback only\n");
- mStartMemory = getMediaserverVsize();
- output.write("Start memory : " + mStartMemory + "\n");
- Log.v(TAG, "first mem : " + mStartMemory);
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
mediaStressPlayback(MediaNames.VIDEO_H264_AMR);
- getMemoryWriteToLog(output);
+ getMemoryWriteToLog(output, i);
}
output.write("\n");
memoryResult = validateMemoryResult(mStartPid, mStartMemory, output);
@@ -392,12 +389,9 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
File wmvMemoryOut = new File(MEDIA_MEMORY_OUTPUT);
Writer output = new BufferedWriter(new FileWriter(wmvMemoryOut, true));
output.write("WMV video playback only\n");
- mStartMemory = getMediaserverVsize();
- output.write("Start memory : " + mStartMemory + "\n");
- Log.v(TAG, "first mem : " + mStartMemory);
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
mediaStressPlayback(MediaNames.VIDEO_WMV);
- getMemoryWriteToLog(output);
+ getMemoryWriteToLog(output, i);
}
output.write("\n");
memoryResult = validateMemoryResult(mStartPid, mStartMemory, output);
@@ -415,14 +409,10 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
File videoH263RecordOnlyMemoryOut = new File(MEDIA_MEMORY_OUTPUT);
Writer output = new BufferedWriter(new FileWriter(videoH263RecordOnlyMemoryOut, true));
output.write("H263 video record only\n");
- mStartMemory = getMediaserverVsize();
- output.write("Start memory : " + mStartMemory + "\n");
- Log.v(TAG, "first mem : " + mStartMemory);
-
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
stressVideoRecord(20, 352, 288, MediaRecorder.VideoEncoder.H263,
MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_VIDEO_3GP, true);
- getMemoryWriteToLog(output);
+ getMemoryWriteToLog(output, i);
}
output.write("\n");
memoryResult = validateMemoryResult(mStartPid, mStartMemory, output);
@@ -439,14 +429,10 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
File videoMp4RecordOnlyMemoryOut = new File(MEDIA_MEMORY_OUTPUT);
Writer output = new BufferedWriter(new FileWriter(videoMp4RecordOnlyMemoryOut, true));
output.write("MPEG4 video record only\n");
- mStartMemory = getMediaserverVsize();
- output.write("Start memory : " + mStartMemory + "\n");
- Log.v(TAG, "first mem : " + mStartMemory);
-
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
stressVideoRecord(20, 352, 288, MediaRecorder.VideoEncoder.MPEG_4_SP,
MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_VIDEO_3GP, true);
- getMemoryWriteToLog(output);
+ getMemoryWriteToLog(output, i);
}
output.write("\n");
memoryResult = validateMemoryResult(mStartPid, mStartMemory, output);
@@ -464,14 +450,10 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
File videoRecordAudioMemoryOut = new File(MEDIA_MEMORY_OUTPUT);
Writer output = new BufferedWriter(new FileWriter(videoRecordAudioMemoryOut, true));
output.write("Audio and h263 video record\n");
- mStartMemory = getMediaserverVsize();
- output.write("Start memory : " + mStartMemory + "\n");
- Log.v(TAG, "first mem : " + mStartMemory);
-
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
stressVideoRecord(20, 352, 288, MediaRecorder.VideoEncoder.H263,
MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_VIDEO_3GP, false);
- getMemoryWriteToLog(output);
+ getMemoryWriteToLog(output, i);
}
output.write("\n");
memoryResult = validateMemoryResult(mStartPid, mStartMemory, output);
@@ -488,13 +470,9 @@ public class MediaPlayerPerformance extends ActivityInstrumentationTestCase<Medi
File audioOnlyMemoryOut = new File(MEDIA_MEMORY_OUTPUT);
Writer output = new BufferedWriter(new FileWriter(audioOnlyMemoryOut, true));
output.write("Audio record only\n");
- mStartMemory = getMediaserverVsize();
- output.write("Start memory : " + mStartMemory + "\n");
- Log.v(TAG, "first mem : " + mStartMemory);
-
for (int i = 0; i < NUM_STRESS_LOOP; i++) {
stressAudioRecord(MediaNames.RECORDER_OUTPUT);
- getMemoryWriteToLog(output);
+ getMemoryWriteToLog(output, i);
}
output.write("\n");
memoryResult = validateMemoryResult(mStartPid, mStartMemory, output);
diff --git a/services/java/com/android/server/HeadsetObserver.java b/services/java/com/android/server/HeadsetObserver.java
index a935131bd8c2..9d695649a60c 100644
--- a/services/java/com/android/server/HeadsetObserver.java
+++ b/services/java/com/android/server/HeadsetObserver.java
@@ -103,6 +103,7 @@ class HeadsetObserver extends UEventObserver {
// Retain only relevant bits
int headsetState = newState & SUPPORTED_HEADSETS;
int newOrOld = headsetState | mHeadsetState;
+ int delay = 0;
// reject all suspect transitions: only accept state changes from:
// - a: 0 heaset to 1 headset
// - b: 1 headset to 0 headset
@@ -117,21 +118,25 @@ class HeadsetObserver extends UEventObserver {
if (headsetState == 0) {
Intent intent = new Intent(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
mContext.sendBroadcast(intent);
-
// It can take hundreds of ms flush the audio pipeline after
// apps pause audio playback, but audio route changes are
// immediate, so delay the route change by 1000ms.
// This could be improved once the audio sub-system provides an
// interface to clear the audio pipeline.
- mWakeLock.acquire();
- mHandler.sendMessageDelayed(mHandler.obtainMessage(0,
- mHeadsetState,
- mPrevHeadsetState,
- mHeadsetName),
- 1000);
+ delay = 1000;
} else {
- sendIntents(mHeadsetState, mPrevHeadsetState, mHeadsetName);
+ // Insert the same delay for headset connection so that the connection event is not
+ // broadcast before the disconnection event in case of fast removal/insertion
+ if (mHandler.hasMessages(0)) {
+ delay = 1000;
+ }
}
+ mWakeLock.acquire();
+ mHandler.sendMessageDelayed(mHandler.obtainMessage(0,
+ mHeadsetState,
+ mPrevHeadsetState,
+ mHeadsetName),
+ delay);
}
private synchronized final void sendIntents(int headsetState, int prevHeadsetState, String headsetName) {
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
index 3bf76d4623d6..5034e1611ce1 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
@@ -96,6 +96,12 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
*/
private boolean mDataRoaming = false;
+ /**
+ * Mark when service state is in emergency call only mode
+ */
+ private boolean mEmergencyOnly = false;
+ private boolean mNewEmergencyOnly = false;
+
private RegistrantList gprsAttachedRegistrants = new RegistrantList();
private RegistrantList gprsDetachedRegistrants = new RegistrantList();
private RegistrantList psRestrictEnabledRegistrants = new RegistrantList();
@@ -550,6 +556,11 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
String spn = phone.mSIMRecords.getServiceProviderName();
String plmn = ss.getOperatorAlphaLong();
+ // For emergency calls only, pass the EmergencyCallsOnly string via EXTRA_PLMN
+ if (mEmergencyOnly && cm.getRadioState().isOn()) {
+ plmn = phone.getContext().getText(com.android.internal.R.string.emergency_calls_only).toString();
+ }
+
if (rule != curSpnRule
|| !TextUtils.equals(spn, curSpn)
|| !TextUtils.equals(plmn, curPlmn)) {
@@ -557,6 +568,10 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
(rule & SIMRecords.SPN_RULE_SHOW_SPN) == SIMRecords.SPN_RULE_SHOW_SPN;
boolean showPlmn =
(rule & SIMRecords.SPN_RULE_SHOW_PLMN) == SIMRecords.SPN_RULE_SHOW_PLMN;
+
+ if (mEmergencyOnly)
+ showPlmn = true;
+
Intent intent = new Intent(Intents.SPN_STRINGS_UPDATED_ACTION);
intent.putExtra(Intents.EXTRA_SHOW_SPN, showSpn);
intent.putExtra(Intents.EXTRA_SPN, spn);
@@ -564,6 +579,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
intent.putExtra(Intents.EXTRA_PLMN, plmn);
phone.getContext().sendStickyBroadcast(intent);
}
+
curSpnRule = rule;
curSpn = spn;
curPlmn = plmn;
@@ -629,6 +645,13 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
mGsmRoaming = regCodeIsRoaming(regState);
newSS.setState (regCodeToServiceState(regState));
+
+ if (regState == 10 || regState == 12 || regState == 13 || regState == 14) {
+ mNewEmergencyOnly = true;
+ } else {
+ mNewEmergencyOnly = false;
+ }
+
// LAC and CID are -1 if not avail
newCellLoc.setLacAndCid(lac, cid);
break;
@@ -838,6 +861,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
boolean hasLocationChanged = !newCellLoc.equals(cellLoc);
+ boolean hasEmergencyOnlyChanged = mNewEmergencyOnly != mEmergencyOnly;
+
ServiceState tss;
tss = ss;
ss = newSS;
@@ -849,6 +874,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
cellLoc = newCellLoc;
newCellLoc = tcl;
+ mEmergencyOnly = mNewEmergencyOnly;
+
// Add an event log when network type switched
// TODO: we may add filtering to reduce the event logged,
@@ -948,10 +975,13 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISROAMING,
ss.getRoaming() ? "true" : "false");
- updateSpnDisplay();
phone.notifyServiceStateChanged(ss);
}
+ if (hasChanged || hasEmergencyOnlyChanged) {
+ updateSpnDisplay();
+ }
+
if (hasGprsAttached) {
gprsAttachedRegistrants.notifyRegistrants();
}
@@ -1198,6 +1228,10 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
case 2: // 2 is "searching"
case 3: // 3 is "registration denied"
case 4: // 4 is "unknown" no vaild in current baseband
+ case 10:// same as 0, but indicates that emergency call is possible.
+ case 12:// same as 2, but indicates that emergency call is possible.
+ case 13:// same as 3, but indicates that emergency call is possible.
+ case 14:// same as 4, but indicates that emergency call is possible.
return ServiceState.STATE_OUT_OF_SERVICE;
case 1:
diff --git a/telephony/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java b/telephony/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java
index d27f240dd6d5..9caae3d6cbc4 100644
--- a/telephony/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java
+++ b/telephony/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java
@@ -282,7 +282,7 @@ public class UsimPhoneBookManager extends Handler implements IccConstants {
private void readAdnFileAndWait(int recNum) {
Map <Integer,Integer> fileIds;
fileIds = mPbrFile.mFileIds.get(recNum);
- if (fileIds == null) return;
+ if (fileIds == null || fileIds.isEmpty()) return;
mAdnCache.requestLoadAllAdnLike(fileIds.get(USIM_EFADN_TAG),
fileIds.get(USIM_EFEXT1_TAG), obtainMessage(EVENT_USIM_ADN_LOAD_DONE));