Merge "Maybe fix issue #17449495: Nakasi is pretty laggy/slow to do anything" into lmp-dev
diff --git a/core/java/android/app/backup/WallpaperBackupHelper.java b/core/java/android/app/backup/WallpaperBackupHelper.java
index 0567500..b8575d7 100644
--- a/core/java/android/app/backup/WallpaperBackupHelper.java
+++ b/core/java/android/app/backup/WallpaperBackupHelper.java
@@ -80,17 +80,17 @@
mFiles = files;
mKeys = keys;
- WallpaperManager wpm;
- wpm = (WallpaperManager) context.getSystemService(Context.WALLPAPER_SERVICE);
- mDesiredMinWidth = (double) wpm.getDesiredMinimumWidth();
+ final WindowManager wm =
+ (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+ final WallpaperManager wpm =
+ (WallpaperManager) context.getSystemService(Context.WALLPAPER_SERVICE);
+ final Display d = wm.getDefaultDisplay();
+ final Point size = new Point();
+ d.getSize(size);
+ mDesiredMinWidth = size.x;
mDesiredMinHeight = (double) wpm.getDesiredMinimumHeight();
- if (mDesiredMinWidth <= 0 || mDesiredMinHeight <= 0) {
- WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
- Display d = wm.getDefaultDisplay();
- Point size = new Point();
- d.getSize(size);
- mDesiredMinWidth = size.x;
+ if (mDesiredMinHeight <= 0) {
mDesiredMinHeight = size.y;
}
@@ -130,15 +130,12 @@
if (DEBUG) Slog.d(TAG, "Restoring wallpaper image w=" + options.outWidth
+ " h=" + options.outHeight);
- // How much does the image differ from our preference? The threshold
- // here is set to accept any image larger than our target, because
- // scaling down is acceptable; but to reject images that are deemed
- // "too small" to scale up attractively. The value 1.33 is just barely
- // too low to pass Nexus 1 or Droid wallpapers for use on a Xoom, but
- // will pass anything relatively larger.
- double widthRatio = mDesiredMinWidth / options.outWidth;
- double heightRatio = mDesiredMinHeight / options.outHeight;
- if (widthRatio > 0 && widthRatio < 1.33
+ // We accept any wallpaper that is at least as wide as our preference
+ // (i.e. wide enough to fill the screen), and is within a comfortable
+ // factor of the target height, to avoid significant clipping/scaling/
+ // letterboxing.
+ final double heightRatio = mDesiredMinHeight / options.outHeight;
+ if (options.outWidth >= mDesiredMinWidth
&& heightRatio > 0 && heightRatio < 1.33) {
// sufficiently close to our resolution; go ahead and use it
Slog.d(TAG, "Applying restored wallpaper image.");
@@ -147,8 +144,11 @@
// since it does not exist anywhere other than the private wallpaper
// file.
} else {
- Slog.i(TAG, "Dimensions too far off; using default wallpaper. wr=" + widthRatio
- + " hr=" + heightRatio);
+ Slog.i(TAG, "Restored image dimensions (w="
+ + options.outWidth + ", h=" + options.outHeight
+ + ") too far off target (tw="
+ + mDesiredMinWidth + ", th=" + mDesiredMinHeight
+ + "); falling back to default wallpaper.");
f.delete();
}
}
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 2315c74..37294e7 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -430,10 +430,14 @@
}
}
- /**
+ /**
* Used to determine whether the user making this call is subject to
* teleportations.
- * @return whether the user making this call is a goat
+ *
+ * <p>As of {@link android.os.Build.VERSION_CODES#L}, this method can
+ * now automatically identify goats using advanced goat recognition technology.</p>
+ *
+ * @return Returns true if the user making this call is a goat.
*/
public boolean isUserAGoat() {
return mContext.getPackageManager()
diff --git a/core/java/android/speech/RecognitionService.java b/core/java/android/speech/RecognitionService.java
index 45eb0bf..dcdbba78 100644
--- a/core/java/android/speech/RecognitionService.java
+++ b/core/java/android/speech/RecognitionService.java
@@ -28,6 +28,8 @@
import android.os.RemoteException;
import android.util.Log;
+import java.lang.ref.WeakReference;
+
/**
* This class provides a base class for recognition service implementations. This class should be
* extended only in case you wish to implement a new speech recognizer. Please note that the
@@ -315,40 +317,46 @@
}
/** Binder of the recognition service */
- private static class RecognitionServiceBinder extends IRecognitionService.Stub {
- private RecognitionService mInternalService;
+ private static final class RecognitionServiceBinder extends IRecognitionService.Stub {
+ private final WeakReference<RecognitionService> mServiceRef;
public RecognitionServiceBinder(RecognitionService service) {
- mInternalService = service;
+ mServiceRef = new WeakReference<RecognitionService>(service);
}
+ @Override
public void startListening(Intent recognizerIntent, IRecognitionListener listener) {
if (DBG) Log.d(TAG, "startListening called by:" + listener.asBinder());
- if (mInternalService != null && mInternalService.checkPermissions(listener)) {
- mInternalService.mHandler.sendMessage(Message.obtain(mInternalService.mHandler,
- MSG_START_LISTENING, mInternalService.new StartListeningArgs(
+ final RecognitionService service = mServiceRef.get();
+ if (service != null && service.checkPermissions(listener)) {
+ service.mHandler.sendMessage(Message.obtain(service.mHandler,
+ MSG_START_LISTENING, service.new StartListeningArgs(
recognizerIntent, listener)));
}
}
+ @Override
public void stopListening(IRecognitionListener listener) {
if (DBG) Log.d(TAG, "stopListening called by:" + listener.asBinder());
- if (mInternalService != null && mInternalService.checkPermissions(listener)) {
- mInternalService.mHandler.sendMessage(Message.obtain(mInternalService.mHandler,
+ final RecognitionService service = mServiceRef.get();
+ if (service != null && service.checkPermissions(listener)) {
+ service.mHandler.sendMessage(Message.obtain(service.mHandler,
MSG_STOP_LISTENING, listener));
}
}
+ @Override
public void cancel(IRecognitionListener listener) {
if (DBG) Log.d(TAG, "cancel called by:" + listener.asBinder());
- if (mInternalService != null && mInternalService.checkPermissions(listener)) {
- mInternalService.mHandler.sendMessage(Message.obtain(mInternalService.mHandler,
+ final RecognitionService service = mServiceRef.get();
+ if (service != null && service.checkPermissions(listener)) {
+ service.mHandler.sendMessage(Message.obtain(service.mHandler,
MSG_CANCEL, listener));
}
}
public void clearReference() {
- mInternalService = null;
+ mServiceRef.clear();
}
}
}
diff --git a/docs/html/preview/setup-sdk.jd b/docs/html/preview/setup-sdk.jd
index a05baa7..af466ab 100644
--- a/docs/html/preview/setup-sdk.jd
+++ b/docs/html/preview/setup-sdk.jd
@@ -202,16 +202,10 @@
<li>Nexus 7 Wi-Fi (version 2, released in 2013)</li>
</ul>
-<p>In addition, you also get the emulator system images, which include
+<p>In addition, you also get the emulator system images, which includes
experimental 64-bit system images along with standard 32-bit system images.
</p>
-<p class="note"><strong>Note:</strong> The 64-bit system images require the
-Intel x86 Emulator Accelerator (HAXM) Rev.5 which can be downloaded from the
-<a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a><em>Extras</em>
-folder.</p>
-
-
<h3 id="installImage">Install the L Preview System Image</h3>
<p class="warning"><b>Warning:</b> This is a preview version of the Android
@@ -224,7 +218,6 @@
</p>
-
<ol>
<li>Download and uncompress the Android Developer Preview package.
<table style="width:860px">
@@ -368,4 +361,4 @@
}
});
-</script>
+</script>
\ No newline at end of file
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
index ce6a920..c2aaae8 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -28,38 +28,6 @@
<div class="toggle-content opened">
<p><a href="#" onclick="return toggleContent(this)">
<img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
- alt=""/>SDK Tools, Revision 23.0.4</a> <em>(October 2014)</em>
- </p>
-
- <div class="toggle-content-toggleme">
-
- <dl>
- <dt>Dependencies:</dt>
-
- <dd>
- <ul>
- <li>Android SDK Platform-tools revision 19 or later.</li>
- <li>If you are developing in Eclipse with ADT, note that this version of SDK Tools is
- designed for use with ADT 23.0.4 and later. If you haven't already, update your
- <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a> to 23.0.4.</li>
- <li>If you are developing outside Eclipse, you must have
- <a href="http://ant.apache.org/">Apache Ant</a> 1.8 or later.</li>
- </ul>
- </dd>
-
- <dt>General Notes:</dt>
- <dd>
- <ul>
- <li>Fixed duplicate devices in AVD for Wear and TV.</li>
- </ul>
- </dd>
- </div>
-</div>
-
-
-<div class="toggle-content closed">
- <p><a href="#" onclick="return toggleContent(this)">
- <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
alt=""/>SDK Tools, Revision 23.0.2</a> <em>(July 2014)</em>
</p>
diff --git a/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java b/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java
index 4c8b4f1..9fb3fb4 100644
--- a/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java
@@ -257,7 +257,7 @@
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme)
throws XmlPullParserException, IOException {
- final TypedArray a = r.obtainAttributes(attrs, R.styleable.AnimatedRotateDrawable);
+ final TypedArray a = obtainAttributes(r, theme, attrs, R.styleable.AnimatedRotateDrawable);
super.inflateWithAttributes(r, parser, a, R.styleable.AnimatedRotateDrawable_visible);
diff --git a/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java b/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java
index d78138bc..cb09bbf 100644
--- a/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java
@@ -357,7 +357,8 @@
public void inflate(@NonNull Resources r, @NonNull XmlPullParser parser,
@NonNull AttributeSet attrs, @Nullable Theme theme)
throws XmlPullParserException, IOException {
- final TypedArray a = r.obtainAttributes(attrs, R.styleable.AnimatedStateListDrawable);
+ final TypedArray a = obtainAttributes(
+ r, theme, attrs, R.styleable.AnimatedStateListDrawable);
super.inflateWithAttributes(r, parser, a, R.styleable.AnimatedStateListDrawable_visible);
diff --git a/graphics/java/android/graphics/drawable/AnimationDrawable.java b/graphics/java/android/graphics/drawable/AnimationDrawable.java
index d87e8e4..9a9fd82 100644
--- a/graphics/java/android/graphics/drawable/AnimationDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimationDrawable.java
@@ -272,7 +272,7 @@
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme)
throws XmlPullParserException, IOException {
- TypedArray a = r.obtainAttributes(attrs,
+ TypedArray a = obtainAttributes(r, theme, attrs,
com.android.internal.R.styleable.AnimationDrawable);
super.inflateWithAttributes(r, parser, a,
@@ -300,7 +300,8 @@
continue;
}
- a = r.obtainAttributes(attrs, com.android.internal.R.styleable.AnimationDrawableItem);
+ a = obtainAttributes(
+ r, theme, attrs, com.android.internal.R.styleable.AnimationDrawableItem);
int duration = a.getInt(
com.android.internal.R.styleable.AnimationDrawableItem_duration, -1);
if (duration < 0) {
diff --git a/graphics/java/android/graphics/drawable/ClipDrawable.java b/graphics/java/android/graphics/drawable/ClipDrawable.java
index 61ef81b..40711cf 100644
--- a/graphics/java/android/graphics/drawable/ClipDrawable.java
+++ b/graphics/java/android/graphics/drawable/ClipDrawable.java
@@ -81,7 +81,8 @@
int type;
- TypedArray a = r.obtainAttributes(attrs, com.android.internal.R.styleable.ClipDrawable);
+ TypedArray a = obtainAttributes(
+ r, theme, attrs, com.android.internal.R.styleable.ClipDrawable);
int orientation = a.getInt(
com.android.internal.R.styleable.ClipDrawable_clipOrientation,
diff --git a/graphics/java/android/graphics/drawable/InsetDrawable.java b/graphics/java/android/graphics/drawable/InsetDrawable.java
index 384226f..961d1607 100644
--- a/graphics/java/android/graphics/drawable/InsetDrawable.java
+++ b/graphics/java/android/graphics/drawable/InsetDrawable.java
@@ -84,7 +84,7 @@
@Override
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme)
throws XmlPullParserException, IOException {
- final TypedArray a = r.obtainAttributes(attrs, R.styleable.InsetDrawable);
+ final TypedArray a = obtainAttributes(r, theme, attrs, R.styleable.InsetDrawable);
super.inflateWithAttributes(r, parser, a, R.styleable.InsetDrawable_visible);
mInsetState.mDrawable = null;
diff --git a/graphics/java/android/graphics/drawable/LevelListDrawable.java b/graphics/java/android/graphics/drawable/LevelListDrawable.java
index 7271b0e..bc1c61d 100644
--- a/graphics/java/android/graphics/drawable/LevelListDrawable.java
+++ b/graphics/java/android/graphics/drawable/LevelListDrawable.java
@@ -105,7 +105,7 @@
continue;
}
- TypedArray a = r.obtainAttributes(attrs,
+ TypedArray a = obtainAttributes(r, theme, attrs,
com.android.internal.R.styleable.LevelListDrawableItem);
low = a.getInt(
diff --git a/graphics/java/android/graphics/drawable/RotateDrawable.java b/graphics/java/android/graphics/drawable/RotateDrawable.java
index 70482a6..55c9637 100644
--- a/graphics/java/android/graphics/drawable/RotateDrawable.java
+++ b/graphics/java/android/graphics/drawable/RotateDrawable.java
@@ -399,7 +399,7 @@
@Override
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme)
throws XmlPullParserException, IOException {
- final TypedArray a = r.obtainAttributes(attrs,
+ final TypedArray a = obtainAttributes(r, theme, attrs,
com.android.internal.R.styleable.RotateDrawable);
super.inflateWithAttributes(r, parser, a,
diff --git a/graphics/java/android/graphics/drawable/ScaleDrawable.java b/graphics/java/android/graphics/drawable/ScaleDrawable.java
index b40038a..b990249 100644
--- a/graphics/java/android/graphics/drawable/ScaleDrawable.java
+++ b/graphics/java/android/graphics/drawable/ScaleDrawable.java
@@ -93,7 +93,8 @@
int type;
- TypedArray a = r.obtainAttributes(attrs, com.android.internal.R.styleable.ScaleDrawable);
+ TypedArray a = obtainAttributes(
+ r, theme, attrs, com.android.internal.R.styleable.ScaleDrawable);
float sw = getPercent(a, com.android.internal.R.styleable.ScaleDrawable_scaleWidth);
float sh = getPercent(a, com.android.internal.R.styleable.ScaleDrawable_scaleHeight);
diff --git a/graphics/java/android/graphics/drawable/StateListDrawable.java b/graphics/java/android/graphics/drawable/StateListDrawable.java
index 4c513e9..2eb8a80 100644
--- a/graphics/java/android/graphics/drawable/StateListDrawable.java
+++ b/graphics/java/android/graphics/drawable/StateListDrawable.java
@@ -118,7 +118,7 @@
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme)
throws XmlPullParserException, IOException {
- final TypedArray a = r.obtainAttributes(attrs, R.styleable.StateListDrawable);
+ final TypedArray a = obtainAttributes(r, theme, attrs, R.styleable.StateListDrawable);
super.inflateWithAttributes(r, parser, a,
R.styleable.StateListDrawable_visible);
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index a9cff22..3dbbf23 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -403,7 +403,7 @@
private ArrayList mInetLog;
// track the current default http proxy - tell the world if we get a new one (real change)
- private ProxyInfo mDefaultProxy = null;
+ private volatile ProxyInfo mDefaultProxy = null;
private Object mProxyLock = new Object();
private boolean mDefaultProxyDisabled = false;
@@ -2537,12 +2537,12 @@
} finally {
Binder.restoreCallingIdentity(token);
}
- }
- if (mGlobalProxy == null) {
- proxyProperties = mDefaultProxy;
+ if (mGlobalProxy == null) {
+ proxyProperties = mDefaultProxy;
+ }
+ sendProxyBroadcast(proxyProperties);
}
- sendProxyBroadcast(proxyProperties);
}
private void loadGlobalProxy() {
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index adc96f7..6dcbc42 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -16,7 +16,6 @@
package com.android.server.content;
-import android.Manifest;
import android.accounts.Account;
import android.accounts.AccountAndUser;
import android.accounts.AccountManager;
@@ -481,7 +480,7 @@
mContext.registerReceiverAsUser(mAccountsUpdatedReceiver,
UserHandle.ALL,
new IntentFilter(AccountManager.LOGIN_ACCOUNTS_CHANGED_ACTION),
- Manifest.permission.ACCOUNT_MANAGER, null);
+ null, null);
}
// Pick a random second in a day to seed all periodic syncs
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index e3a25c0..2d5b99e 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -563,6 +563,12 @@
state = Display.STATE_OFF;
}
+ // Animate the screen state change unless already animating.
+ // The transition may be deferred, so after this point we will use the
+ // actual state instead of the desired one.
+ animateScreenStateChange(state, performScreenOffTransition);
+ state = mPowerState.getScreenState();
+
// Use zero brightness when screen is off.
if (state == Display.STATE_OFF) {
brightness = PowerManager.BRIGHTNESS_OFF;
@@ -636,13 +642,9 @@
mAppliedLowPower = true;
}
- // Animate the screen state change unless already animating.
- animateScreenStateChange(state, performScreenOffTransition);
-
// Animate the screen brightness when the screen is on or dozing.
// Skip the animation when the screen is off or suspended.
- final int actualState = mPowerState.getScreenState();
- if (actualState == Display.STATE_ON || actualState == Display.STATE_DOZE) {
+ if (state == Display.STATE_ON || state == Display.STATE_DOZE) {
animateScreenBrightness(brightness,
slowChange ? BRIGHTNESS_RAMP_RATE_SLOW : BRIGHTNESS_RAMP_RATE_FAST);
} else {
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 851cf17..50cb5fc 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -5960,11 +5960,19 @@
if (bp != null && !Objects.equals(bp.sourcePackage, p.info.packageName)) {
final boolean currentOwnerIsSystem = (bp.perm != null
&& isSystemApp(bp.perm.owner));
- if (isSystemApp(p.owner) && !currentOwnerIsSystem) {
- String msg = "New decl " + p.owner + " of permission "
- + p.info.name + " is system; overriding " + bp.sourcePackage;
- reportSettingsProblem(Log.WARN, msg);
- bp = null;
+ if (isSystemApp(p.owner)) {
+ if (bp.type == BasePermission.TYPE_BUILTIN && bp.perm == null) {
+ // It's a built-in permission and no owner, take ownership now
+ bp.packageSetting = pkgSetting;
+ bp.perm = p;
+ bp.uid = pkg.applicationInfo.uid;
+ bp.sourcePackage = p.info.packageName;
+ } else if (!currentOwnerIsSystem) {
+ String msg = "New decl " + p.owner + " of permission "
+ + p.info.name + " is system; overriding " + bp.sourcePackage;
+ reportSettingsProblem(Log.WARN, msg);
+ bp = null;
+ }
}
}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 0c51160..30589b1 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -162,7 +162,7 @@
}
TaskStack getHomeStack() {
- if (mHomeStack == null) {
+ if (mHomeStack == null && mDisplayId == Display.DEFAULT_DISPLAY) {
Slog.e(TAG, "getHomeStack: Returning null from this=" + this);
}
return mHomeStack;
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 89d2dc0..b4d429a 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -584,6 +584,7 @@
* @param account The complete {@link PhoneAccount}.
* @hide
*/
+ @SystemApi
public void registerPhoneAccount(PhoneAccount account) {
try {
if (isServiceConnected()) {
@@ -600,6 +601,7 @@
* @param accountHandle A {@link PhoneAccountHandle} for the {@link PhoneAccount} to unregister.
* @hide
*/
+ @SystemApi
public void unregisterPhoneAccount(PhoneAccountHandle accountHandle) {
try {
if (isServiceConnected()) {
@@ -800,6 +802,7 @@
* {@link ConnectionService#onCreateIncomingConnection}.
* @hide
*/
+ @SystemApi
public void addNewIncomingCall(PhoneAccountHandle phoneAccount, Bundle extras) {
try {
if (isServiceConnected()) {
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 1ee390f..8e43772 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -146,6 +146,8 @@
* @hide
*/
public static final int RIL_RADIO_TECHNOLOGY_GSM = 16;
+ /** @hide */
+ public static final int RIL_RADIO_TECHNOLOGY_TD_SCDMA = 17;
/**
* Available registration states for GSM, UMTS and CDMA.
@@ -859,6 +861,7 @@
|| radioTechnology == RIL_RADIO_TECHNOLOGY_EVDO_0
|| radioTechnology == RIL_RADIO_TECHNOLOGY_EVDO_A
|| radioTechnology == RIL_RADIO_TECHNOLOGY_EVDO_B
- || radioTechnology == RIL_RADIO_TECHNOLOGY_EHRPD;
+ || radioTechnology == RIL_RADIO_TECHNOLOGY_EHRPD
+ || radioTechnology == RIL_RADIO_TECHNOLOGY_TD_SCDMA;
}
}