Merge "Fix for missing location icon" into pi-dev
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 15aedd7..63de8bf 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -1664,7 +1664,8 @@
/**
* Feature for {@link #getSystemAvailableFeatures} and
* {@link #hasSystemFeature}: The device includes at least one form of audio
- * output, such as speakers, audio jack or streaming over bluetooth
+ * output, as defined in the Android Compatibility Definition Document (CDD)
+ * <a href="https://source.android.com/compatibility/android-cdd#7_8_audio">section 7.8 Audio</a>.
*/
@SdkConstant(SdkConstantType.FEATURE)
public static final String FEATURE_AUDIO_OUTPUT = "android.hardware.audio.output";
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java
index 0ae5394..3d76c25 100644
--- a/core/java/android/os/Binder.java
+++ b/core/java/android/os/Binder.java
@@ -138,6 +138,15 @@
}
/**
+ * Dump proxy debug information.
+ *
+ * @hide
+ */
+ public static void dumpProxyDebugInfo() {
+ BinderProxy.dumpProxyDebugInfo();
+ }
+
+ /**
* Check if binder transaction tracing is enabled.
*
* @hide
@@ -941,8 +950,7 @@
// about to crash.
final int totalUnclearedSize = unclearedSize();
if (totalUnclearedSize >= CRASH_AT_SIZE) {
- dumpProxyInterfaceCounts();
- dumpPerUidProxyCounts();
+ dumpProxyDebugInfo();
Runtime.getRuntime().gc();
throw new AssertionError("Binder ProxyMap has too many entries: "
+ totalSize + " (total), " + totalUnclearedSize + " (uncleared), "
@@ -1027,6 +1035,14 @@
private static ProxyMap sProxyMap = new ProxyMap();
/**
+ * @hide
+ */
+ public static void dumpProxyDebugInfo() {
+ sProxyMap.dumpProxyInterfaceCounts();
+ sProxyMap.dumpPerUidProxyCounts();
+ }
+
+ /**
* Return a BinderProxy for IBinder.
* This method is thread-hostile! The (native) caller serializes getInstance() calls using
* gProxyLock.
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java
index 2d8b4d4..c861499 100644
--- a/core/java/android/util/FeatureFlagUtils.java
+++ b/core/java/android/util/FeatureFlagUtils.java
@@ -43,7 +43,7 @@
DEFAULT_FLAGS.put("settings_bluetooth_while_driving", "false");
DEFAULT_FLAGS.put("settings_data_usage_v2", "true");
DEFAULT_FLAGS.put("settings_audio_switcher", "true");
- DEFAULT_FLAGS.put("settings_systemui_theme", "false");
+ DEFAULT_FLAGS.put("settings_systemui_theme", "true");
}
/**
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 7c814f4..ed67075 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -1630,6 +1630,8 @@
contentInsets.top + outsets.top, contentInsets.right + outsets.right,
contentInsets.bottom + outsets.bottom);
}
+ contentInsets = ensureInsetsNonNegative(contentInsets, "content");
+ stableInsets = ensureInsetsNonNegative(stableInsets, "stable");
mLastWindowInsets = new WindowInsets(contentInsets,
null /* windowDecorInsets */, stableInsets,
mContext.getResources().getConfiguration().isScreenRound(),
@@ -1638,6 +1640,17 @@
return mLastWindowInsets;
}
+ private Rect ensureInsetsNonNegative(Rect insets, String kind) {
+ if (insets.left < 0 || insets.top < 0 || insets.right < 0 || insets.bottom < 0) {
+ Log.wtf(mTag, "Negative " + kind + "Insets: " + insets + ", mFirst=" + mFirst);
+ return new Rect(Math.max(0, insets.left),
+ Math.max(0, insets.top),
+ Math.max(0, insets.right),
+ Math.max(0, insets.bottom));
+ }
+ return insets;
+ }
+
void dispatchApplyInsets(View host) {
WindowInsets insets = getWindowInsets(true /* forceConstruct */);
final boolean dispatchCutout = (mWindowAttributes.layoutInDisplayCutoutMode
diff --git a/core/java/com/android/internal/app/AssistUtils.java b/core/java/com/android/internal/app/AssistUtils.java
index 2940079..9171959 100644
--- a/core/java/com/android/internal/app/AssistUtils.java
+++ b/core/java/com/android/internal/app/AssistUtils.java
@@ -156,9 +156,12 @@
if (activeServiceSupportsAssistGesture()) {
return getActiveServiceComponentName();
}
-
- Intent intent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE))
- .getAssistIntent(false);
+ final SearchManager searchManager =
+ (SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE);
+ if (searchManager == null) {
+ return null;
+ }
+ final Intent intent = searchManager.getAssistIntent(false);
PackageManager pm = mContext.getPackageManager();
ResolveInfo info = pm.resolveActivityAsUser(intent, PackageManager.MATCH_DEFAULT_ONLY,
userId);
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 571878d..4f567d2 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -76,6 +76,7 @@
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.app.ResolverActivity;
import com.android.internal.app.ResolverActivity.TargetInfo;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -932,7 +933,7 @@
public static final int TARGET_SERVICE = 1;
public static final int TARGET_STANDARD = 2;
- private static final int MAX_SERVICE_TARGETS = 8;
+ private static final int MAX_SERVICE_TARGETS = 4;
private static final int MAX_TARGETS_PER_SERVICE = 4;
private final List<ChooserTargetInfo> mServiceTargets = new ArrayList<>();
@@ -1189,123 +1190,20 @@
}
}
- static class RowScale {
- private static final int DURATION = 400;
-
- float mScale;
- ChooserRowAdapter mAdapter;
- private final ObjectAnimator mAnimator;
-
- public static final FloatProperty<RowScale> PROPERTY =
- new FloatProperty<RowScale>("scale") {
- @Override
- public void setValue(RowScale object, float value) {
- object.mScale = value;
- object.mAdapter.notifyDataSetChanged();
- }
-
- @Override
- public Float get(RowScale object) {
- return object.mScale;
- }
- };
-
- public RowScale(@NonNull ChooserRowAdapter adapter, float from, float to) {
- mAdapter = adapter;
- mScale = from;
- if (from == to) {
- mAnimator = null;
- return;
- }
-
- mAnimator = ObjectAnimator.ofFloat(this, PROPERTY, from, to)
- .setDuration(DURATION);
- mAnimator.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationStart(Animator animation) {
- mAdapter.onAnimationStart();
- }
- @Override
- public void onAnimationEnd(Animator animation) {
- mAdapter.onAnimationEnd();
- }
- });
- }
-
- public RowScale setInterpolator(Interpolator interpolator) {
- if (mAnimator != null) {
- mAnimator.setInterpolator(interpolator);
- }
- return this;
- }
-
- public float get() {
- return mScale;
- }
-
- public void startAnimation() {
- if (mAnimator != null) {
- mAnimator.start();
- }
- }
-
- public void cancelAnimation() {
- if (mAnimator != null) {
- mAnimator.cancel();
- }
- }
- }
-
class ChooserRowAdapter extends BaseAdapter {
private ChooserListAdapter mChooserListAdapter;
private final LayoutInflater mLayoutInflater;
private final int mColumnCount = 4;
- private RowScale[] mServiceTargetScale;
- private final Interpolator mInterpolator;
private int mAnimationCount = 0;
public ChooserRowAdapter(ChooserListAdapter wrappedAdapter) {
mChooserListAdapter = wrappedAdapter;
mLayoutInflater = LayoutInflater.from(ChooserActivity.this);
- mInterpolator = AnimationUtils.loadInterpolator(ChooserActivity.this,
- android.R.interpolator.decelerate_quint);
-
wrappedAdapter.registerDataSetObserver(new DataSetObserver() {
@Override
public void onChanged() {
super.onChanged();
- final int rcount = getServiceTargetRowCount();
- if (mServiceTargetScale == null
- || mServiceTargetScale.length != rcount) {
- RowScale[] old = mServiceTargetScale;
- int oldRCount = old != null ? old.length : 0;
- mServiceTargetScale = new RowScale[rcount];
- if (old != null && rcount > 0) {
- System.arraycopy(old, 0, mServiceTargetScale, 0,
- Math.min(old.length, rcount));
- }
-
- for (int i = rcount; i < oldRCount; i++) {
- old[i].cancelAnimation();
- }
-
- for (int i = oldRCount; i < rcount; i++) {
- final RowScale rs = new RowScale(ChooserRowAdapter.this, 0.f, 1.f)
- .setInterpolator(mInterpolator);
- mServiceTargetScale[i] = rs;
- }
-
- // Start the animations in a separate loop.
- // The process of starting animations will result in
- // binding views to set up initial values, and we must
- // have ALL of the new RowScale objects created above before
- // we get started.
- for (int i = oldRCount; i < rcount; i++) {
- mServiceTargetScale[i].startAnimation();
- }
- }
-
notifyDataSetChanged();
}
@@ -1313,39 +1211,10 @@
public void onInvalidated() {
super.onInvalidated();
notifyDataSetInvalidated();
- if (mServiceTargetScale != null) {
- for (RowScale rs : mServiceTargetScale) {
- rs.cancelAnimation();
- }
- }
}
});
}
- private float getRowScale(int rowPosition) {
- final int start = getCallerTargetRowCount();
- final int end = start + getServiceTargetRowCount();
- if (rowPosition >= start && rowPosition < end) {
- return mServiceTargetScale[rowPosition - start].get();
- }
- return 1.f;
- }
-
- public void onAnimationStart() {
- final boolean lock = mAnimationCount == 0;
- mAnimationCount++;
- if (lock) {
- mResolverDrawerLayout.setDismissLocked(true);
- }
- }
-
- public void onAnimationEnd() {
- mAnimationCount--;
- if (mAnimationCount == 0) {
- mResolverDrawerLayout.setDismissLocked(false);
- }
- }
-
@Override
public int getCount() {
return (int) (
@@ -1360,9 +1229,9 @@
(float) mChooserListAdapter.getCallerTargetCount() / mColumnCount);
}
+ // There can be at most one row of service targets.
public int getServiceTargetRowCount() {
- return (int) Math.ceil(
- (float) mChooserListAdapter.getServiceTargetCount() / mColumnCount);
+ return (int) mChooserListAdapter.getServiceTargetCount() == 0 ? 0 : 1;
}
@Override
@@ -1485,8 +1354,7 @@
}
final int oldHeight = holder.row.getLayoutParams().height;
- holder.row.getLayoutParams().height = Math.max(1,
- (int) (holder.measuredRowHeight * getRowScale(rowPosition)));
+ holder.row.getLayoutParams().height = Math.max(1, holder.measuredRowHeight);
if (holder.row.getLayoutParams().height != oldHeight) {
holder.row.requestLayout();
}
@@ -1728,7 +1596,7 @@
final View v = mChooserRowAdapter.getView(pos, mCachedView, mListView);
int height = ((RowViewHolder) (v.getTag())).measuredRowHeight;
- offset += (int) (height * mChooserRowAdapter.getRowScale(pos));
+ offset += (int) (height);
if (vt >= 0) {
mCachedViewType = vt;
diff --git a/core/tests/coretests/src/android/view/ViewRootImplTest.java b/core/tests/coretests/src/android/view/ViewRootImplTest.java
new file mode 100644
index 0000000..c8e46fc
--- /dev/null
+++ b/core/tests/coretests/src/android/view/ViewRootImplTest.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+import android.content.Context;
+import android.graphics.Rect;
+import android.platform.test.annotations.Presubmit;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+@Presubmit
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class ViewRootImplTest {
+
+ private Context mContext;
+ private ViewRootImplAccessor mViewRootImpl;
+
+ @Before
+ public void setUp() throws Exception {
+ mContext = InstrumentationRegistry.getContext();
+
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+ mViewRootImpl = new ViewRootImplAccessor(
+ new ViewRootImpl(mContext, mContext.getDisplay()));
+ });
+ }
+
+ @Test
+ public void negativeInsets_areSetToZero() throws Exception {
+ mViewRootImpl.getAttachInfo().getContentInsets().set(-10, -20, -30 , -40);
+ mViewRootImpl.getAttachInfo().getStableInsets().set(-10, -20, -30 , -40);
+ final WindowInsets insets = mViewRootImpl.getWindowInsets(true /* forceConstruct */);
+
+ assertThat(insets.getSystemWindowInsets(), equalTo(new Rect()));
+ assertThat(new Rect(insets.getStableInsetLeft(), insets.getStableInsetTop(),
+ insets.getStableInsetRight(), insets.getStableInsetBottom()), equalTo(new Rect()));
+ }
+
+ @Test
+ public void negativeInsets_areSetToZero_positiveAreLeftAsIs() throws Exception {
+ mViewRootImpl.getAttachInfo().getContentInsets().set(-10, 20, -30 , 40);
+ mViewRootImpl.getAttachInfo().getStableInsets().set(10, -20, 30 , -40);
+ final WindowInsets insets = mViewRootImpl.getWindowInsets(true /* forceConstruct */);
+
+ assertThat(insets.getSystemWindowInsets(), equalTo(new Rect(0, 20, 0, 40)));
+ assertThat(new Rect(insets.getStableInsetLeft(), insets.getStableInsetTop(),
+ insets.getStableInsetRight(), insets.getStableInsetBottom()),
+ equalTo(new Rect(10, 0, 30, 0)));
+ }
+
+ @Test
+ public void positiveInsets_areLeftAsIs() throws Exception {
+ mViewRootImpl.getAttachInfo().getContentInsets().set(10, 20, 30 , 40);
+ mViewRootImpl.getAttachInfo().getStableInsets().set(10, 20, 30 , 40);
+ final WindowInsets insets = mViewRootImpl.getWindowInsets(true /* forceConstruct */);
+
+ assertThat(insets.getSystemWindowInsets(), equalTo(new Rect(10, 20, 30, 40)));
+ assertThat(new Rect(insets.getStableInsetLeft(), insets.getStableInsetTop(),
+ insets.getStableInsetRight(), insets.getStableInsetBottom()),
+ equalTo(new Rect(10, 20, 30, 40)));
+ }
+
+ private static class ViewRootImplAccessor {
+
+ private final ViewRootImpl mViewRootImpl;
+
+ ViewRootImplAccessor(ViewRootImpl viewRootImpl) {
+ mViewRootImpl = viewRootImpl;
+ }
+
+ public ViewRootImpl get() {
+ return mViewRootImpl;
+ }
+
+ AttachInfoAccessor getAttachInfo() throws Exception {
+ return new AttachInfoAccessor(
+ getField(mViewRootImpl, ViewRootImpl.class.getDeclaredField("mAttachInfo")));
+ }
+
+ WindowInsets getWindowInsets(boolean forceConstruct) throws Exception {
+ return (WindowInsets) invokeMethod(mViewRootImpl,
+ ViewRootImpl.class.getDeclaredMethod("getWindowInsets", boolean.class),
+ forceConstruct);
+ }
+
+ class AttachInfoAccessor {
+
+ private final Class<?> mClass;
+ private final Object mAttachInfo;
+
+ AttachInfoAccessor(Object attachInfo) throws Exception {
+ mAttachInfo = attachInfo;
+ mClass = ViewRootImpl.class.getClassLoader().loadClass(
+ "android.view.View$AttachInfo");
+ }
+
+ Rect getContentInsets() throws Exception {
+ return (Rect) getField(mAttachInfo, mClass.getDeclaredField("mContentInsets"));
+ }
+
+ Rect getStableInsets() throws Exception {
+ return (Rect) getField(mAttachInfo, mClass.getDeclaredField("mStableInsets"));
+ }
+ }
+
+ private static Object getField(Object o, Field field) throws Exception {
+ field.setAccessible(true);
+ return field.get(o);
+ }
+
+ private static Object invokeMethod(Object o, Method method, Object... args)
+ throws Exception {
+ method.setAccessible(true);
+ return method.invoke(o, args);
+ }
+ }
+}
diff --git a/docs/html/reference/_book.yaml b/docs/html/reference/_book.yaml
deleted file mode 100644
index b902a61..0000000
--- a/docs/html/reference/_book.yaml
+++ /dev/null
@@ -1,853 +0,0 @@
-reference:
-- title: Class Index
- path: /reference/classes.html
- status_text: no-toggle
-- title: Package Index
- path: /reference/packages.html
- status_text: no-toggle
-- title: android
- path: /reference/android/package-summary.html
- status_text: apilevel-1
-- title: android.accessibilityservice
- path: /reference/android/accessibilityservice/package-summary.html
- status_text: apilevel-4
-- title: android.accounts
- path: /reference/android/accounts/package-summary.html
- status_text: apilevel-5
-- title: android.animation
- path: /reference/android/animation/package-summary.html
- status_text: apilevel-11
-- title: android.annotation
- path: /reference/android/annotation/package-summary.html
- status_text: apilevel-16
-- title: android.app
- path: /reference/android/app/package-summary.html
- status_text: apilevel-1
-- title: android.app.admin
- path: /reference/android/app/admin/package-summary.html
- status_text: apilevel-8
-- title: android.app.assist
- path: /reference/android/app/assist/package-summary.html
- status_text: apilevel-23
-- title: android.app.backup
- path: /reference/android/app/backup/package-summary.html
- status_text: apilevel-8
-- title: android.app.job
- path: /reference/android/app/job/package-summary.html
- status_text: apilevel-21
-- title: android.app.usage
- path: /reference/android/app/usage/package-summary.html
- status_text: apilevel-21
-- title: android.appwidget
- path: /reference/android/appwidget/package-summary.html
- status_text: apilevel-3
-- title: android.bluetooth
- path: /reference/android/bluetooth/package-summary.html
- status_text: apilevel-5
-- title: android.bluetooth.le
- path: /reference/android/bluetooth/le/package-summary.html
- status_text: apilevel-21
-- title: android.companion
- path: /reference/android/companion/package-summary.html
- status_text: apilevel-O
-- title: android.content
- path: /reference/android/content/package-summary.html
- status_text: apilevel-1
-- title: android.content.pm
- path: /reference/android/content/pm/package-summary.html
- status_text: apilevel-1
-- title: android.content.res
- path: /reference/android/content/res/package-summary.html
- status_text: apilevel-1
-- title: android.database
- path: /reference/android/database/package-summary.html
- status_text: apilevel-1
-- title: android.database.sqlite
- path: /reference/android/database/sqlite/package-summary.html
- status_text: apilevel-1
-- title: android.databinding
- path: /reference/android/databinding/package-summary.html
- status_text: apilevel-
-- title: android.drm
- path: /reference/android/drm/package-summary.html
- status_text: apilevel-11
-- title: android.gesture
- path: /reference/android/gesture/package-summary.html
- status_text: apilevel-4
-- title: android.graphics
- path: /reference/android/graphics/package-summary.html
- status_text: apilevel-1
-- title: android.graphics.drawable
- path: /reference/android/graphics/drawable/package-summary.html
- status_text: apilevel-1
-- title: android.graphics.drawable.shapes
- path: /reference/android/graphics/drawable/shapes/package-summary.html
- status_text: apilevel-1
-- title: android.graphics.fonts
- path: /reference/android/graphics/fonts/package-summary.html
- status_text: apilevel-O
-- title: android.graphics.pdf
- path: /reference/android/graphics/pdf/package-summary.html
- status_text: apilevel-19
-- title: android.hardware
- path: /reference/android/hardware/package-summary.html
- status_text: apilevel-1
-- title: android.hardware.camera2
- path: /reference/android/hardware/camera2/package-summary.html
- status_text: apilevel-21
-- title: android.hardware.camera2.params
- path: /reference/android/hardware/camera2/params/package-summary.html
- status_text: apilevel-21
-- title: android.hardware.display
- path: /reference/android/hardware/display/package-summary.html
- status_text: apilevel-17
-- title: android.hardware.fingerprint
- path: /reference/android/hardware/fingerprint/package-summary.html
- status_text: apilevel-23
-- title: android.hardware.input
- path: /reference/android/hardware/input/package-summary.html
- status_text: apilevel-16
-- title: android.hardware.usb
- path: /reference/android/hardware/usb/package-summary.html
- status_text: apilevel-12
-- title: android.icu.lang
- path: /reference/android/icu/lang/package-summary.html
- status_text: apilevel-24
-- title: android.icu.math
- path: /reference/android/icu/math/package-summary.html
- status_text: apilevel-24
-- title: android.icu.text
- path: /reference/android/icu/text/package-summary.html
- status_text: apilevel-24
-- title: android.icu.util
- path: /reference/android/icu/util/package-summary.html
- status_text: apilevel-24
-- title: android.inputmethodservice
- path: /reference/android/inputmethodservice/package-summary.html
- status_text: apilevel-3
-- title: android.location
- path: /reference/android/location/package-summary.html
- status_text: apilevel-1
-- title: android.media
- path: /reference/android/media/package-summary.html
- status_text: apilevel-1
-- title: android.media.audiofx
- path: /reference/android/media/audiofx/package-summary.html
- status_text: apilevel-9
-- title: android.media.browse
- path: /reference/android/media/browse/package-summary.html
- status_text: apilevel-21
-- title: android.media.effect
- path: /reference/android/media/effect/package-summary.html
- status_text: apilevel-14
-- title: android.media.midi
- path: /reference/android/media/midi/package-summary.html
- status_text: apilevel-23
-- title: android.media.projection
- path: /reference/android/media/projection/package-summary.html
- status_text: apilevel-21
-- title: android.media.session
- path: /reference/android/media/session/package-summary.html
- status_text: apilevel-21
-- title: android.media.tv
- path: /reference/android/media/tv/package-summary.html
- status_text: apilevel-21
-- title: android.mtp
- path: /reference/android/mtp/package-summary.html
- status_text: apilevel-12
-- title: android.net
- path: /reference/android/net/package-summary.html
- status_text: apilevel-1
-- title: android.net.http
- path: /reference/android/net/http/package-summary.html
- status_text: apilevel-1
-- title: android.net.nsd
- path: /reference/android/net/nsd/package-summary.html
- status_text: apilevel-16
-- title: android.net.rtp
- path: /reference/android/net/rtp/package-summary.html
- status_text: apilevel-12
-- title: android.net.sip
- path: /reference/android/net/sip/package-summary.html
- status_text: apilevel-9
-- title: android.net.wifi
- path: /reference/android/net/wifi/package-summary.html
- status_text: apilevel-1
-- title: android.net.wifi.aware
- path: /reference/android/net/wifi/aware/package-summary.html
- status_text: apilevel-O
-- title: android.net.wifi.hotspot2
- path: /reference/android/net/wifi/hotspot2/package-summary.html
- status_text: apilevel-O
-- title: android.net.wifi.hotspot2.omadm
- path: /reference/android/net/wifi/hotspot2/omadm/package-summary.html
- status_text: apilevel-O
-- title: android.net.wifi.hotspot2.pps
- path: /reference/android/net/wifi/hotspot2/pps/package-summary.html
- status_text: apilevel-O
-- title: android.net.wifi.p2p
- path: /reference/android/net/wifi/p2p/package-summary.html
- status_text: apilevel-14
-- title: android.net.wifi.p2p.nsd
- path: /reference/android/net/wifi/p2p/nsd/package-summary.html
- status_text: apilevel-16
-- title: android.nfc
- path: /reference/android/nfc/package-summary.html
- status_text: apilevel-9
-- title: android.nfc.cardemulation
- path: /reference/android/nfc/cardemulation/package-summary.html
- status_text: apilevel-19
-- title: android.nfc.tech
- path: /reference/android/nfc/tech/package-summary.html
- status_text: apilevel-10
-- title: android.opengl
- path: /reference/android/opengl/package-summary.html
- status_text: apilevel-1
-- title: android.os
- path: /reference/android/os/package-summary.html
- status_text: apilevel-1
-- title: android.os.health
- path: /reference/android/os/health/package-summary.html
- status_text: apilevel-24
-- title: android.os.storage
- path: /reference/android/os/storage/package-summary.html
- status_text: apilevel-9
-- title: android.preference
- path: /reference/android/preference/package-summary.html
- status_text: apilevel-1
-- title: android.print
- path: /reference/android/print/package-summary.html
- status_text: apilevel-19
-- title: android.print.pdf
- path: /reference/android/print/pdf/package-summary.html
- status_text: apilevel-19
-- title: android.printservice
- path: /reference/android/printservice/package-summary.html
- status_text: apilevel-19
-- title: android.provider
- path: /reference/android/provider/package-summary.html
- status_text: apilevel-1
-- title: android.renderscript
- path: /reference/android/renderscript/package-summary.html
- status_text: apilevel-11
-- title: android.sax
- path: /reference/android/sax/package-summary.html
- status_text: apilevel-1
-- title: android.security
- path: /reference/android/security/package-summary.html
- status_text: apilevel-14
-- title: android.security.keystore
- path: /reference/android/security/keystore/package-summary.html
- status_text: apilevel-23
-- title: android.service.autofill
- path: /reference/android/service/autofill/package-summary.html
- status_text: apilevel-O
-- title: android.service.carrier
- path: /reference/android/service/carrier/package-summary.html
- status_text: apilevel-22
-- title: android.service.chooser
- path: /reference/android/service/chooser/package-summary.html
- status_text: apilevel-23
-- title: android.service.dreams
- path: /reference/android/service/dreams/package-summary.html
- status_text: apilevel-17
-- title: android.service.media
- path: /reference/android/service/media/package-summary.html
- status_text: apilevel-21
-- title: android.service.notification
- path: /reference/android/service/notification/package-summary.html
- status_text: apilevel-18
-- title: android.service.quicksettings
- path: /reference/android/service/quicksettings/package-summary.html
- status_text: apilevel-24
-- title: android.service.restrictions
- path: /reference/android/service/restrictions/package-summary.html
- status_text: apilevel-21
-- title: android.service.textservice
- path: /reference/android/service/textservice/package-summary.html
- status_text: apilevel-14
-- title: android.service.voice
- path: /reference/android/service/voice/package-summary.html
- status_text: apilevel-21
-- title: android.service.vr
- path: /reference/android/service/vr/package-summary.html
- status_text: apilevel-24
-- title: android.service.wallpaper
- path: /reference/android/service/wallpaper/package-summary.html
- status_text: apilevel-7
-- title: android.speech
- path: /reference/android/speech/package-summary.html
- status_text: apilevel-3
-- title: android.speech.tts
- path: /reference/android/speech/tts/package-summary.html
- status_text: apilevel-4
-- title: android.support.animation
- path: /reference/android/support/animation/package-summary.html
- status_text: apilevel-25.3.0
-- title: android.support.annotation
- path: /reference/android/support/annotation/package-summary.html
- status_text: apilevel-
-- title: android.support.app.recommendation
- path: /reference/android/support/app/recommendation/package-summary.html
- status_text: apilevel-23.0.0
-- title: android.support.compat
- path: /reference/android/support/compat/package-summary.html
- status_text: apilevel-
-- title: android.support.coreui
- path: /reference/android/support/coreui/package-summary.html
- status_text: apilevel-
-- title: android.support.coreutils
- path: /reference/android/support/coreutils/package-summary.html
- status_text: apilevel-
-- title: android.support.customtabs
- path: /reference/android/support/customtabs/package-summary.html
- status_text: apilevel-23.0.0
-- title: android.support.design
- path: /reference/android/support/design/package-summary.html
- status_text: apilevel-
-- title: android.support.design.widget
- path: /reference/android/support/design/widget/package-summary.html
- status_text: apilevel-22.2.0
-- title: android.support.dynamicanimation
- path: /reference/android/support/dynamicanimation/package-summary.html
- status_text: apilevel-
-- title: android.support.exifinterface
- path: /reference/android/support/exifinterface/package-summary.html
- status_text: apilevel-
-- title: android.support.fragment
- path: /reference/android/support/fragment/package-summary.html
- status_text: apilevel-
-- title: android.support.graphics.drawable
- path: /reference/android/support/graphics/drawable/package-summary.html
- status_text: apilevel-23.2.0
-- title: android.support.graphics.drawable.animated
- path: /reference/android/support/graphics/drawable/animated/package-summary.html
- status_text: apilevel-
-- title: android.support.media
- path: /reference/android/support/media/package-summary.html
- status_text: apilevel-25.1.0
-- title: android.support.media.instantvideo
- path: /reference/android/support/media/instantvideo/package-summary.html
- status_text: apilevel-
-- title: android.support.media.instantvideo.preload
- path: /reference/android/support/media/instantvideo/preload/package-summary.html
- status_text: apilevel-26.0.0-alpha1
-- title: android.support.media.instantvideo.widget
- path: /reference/android/support/media/instantvideo/widget/package-summary.html
- status_text: apilevel-26.0.0-alpha1
-- title: android.support.media.tv
- path: /reference/android/support/media/tv/package-summary.html
- status_text: apilevel-26.0.0-alpha1
-- title: android.support.mediacompat
- path: /reference/android/support/mediacompat/package-summary.html
- status_text: apilevel-
-- title: android.support.multidex
- path: /reference/android/support/multidex/package-summary.html
- status_text: apilevel-
-- title: android.support.percent
- path: /reference/android/support/percent/package-summary.html
- status_text: apilevel-23.0.0
-- title: android.support.recommendation
- path: /reference/android/support/recommendation/package-summary.html
- status_text: apilevel-
-- title: android.support.transition
- path: /reference/android/support/transition/package-summary.html
- status_text: apilevel-24.2.0
-- title: android.support.v13
- path: /reference/android/support/v13/package-summary.html
- status_text: apilevel-
-- title: android.support.v13.app
- path: /reference/android/support/v13/app/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v13.view
- path: /reference/android/support/v13/view/package-summary.html
- status_text: apilevel-24.0.0
-- title: android.support.v13.view.inputmethod
- path: /reference/android/support/v13/view/inputmethod/package-summary.html
- status_text: apilevel-25.0.0
-- title: android.support.v14.preference
- path: /reference/android/support/v14/preference/package-summary.html
- status_text: apilevel-23.0.0
-- title: android.support.v17.leanback
- path: /reference/android/support/v17/leanback/package-summary.html
- status_text: apilevel-
-- title: android.support.v17.leanback.app
- path: /reference/android/support/v17/leanback/app/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v17.leanback.database
- path: /reference/android/support/v17/leanback/database/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v17.leanback.graphics
- path: /reference/android/support/v17/leanback/graphics/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v17.leanback.media
- path: /reference/android/support/v17/leanback/media/package-summary.html
- status_text: apilevel-25.1.0
-- title: android.support.v17.leanback.system
- path: /reference/android/support/v17/leanback/system/package-summary.html
- status_text: apilevel-22.2.1
-- title: android.support.v17.leanback.widget
- path: /reference/android/support/v17/leanback/widget/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v17.leanback.widget.picker
- path: /reference/android/support/v17/leanback/widget/picker/package-summary.html
- status_text: apilevel-23.2.0
-- title: android.support.v17.preference
- path: /reference/android/support/v17/preference/package-summary.html
- status_text: apilevel-23.0.0
-- title: android.support.v4
- path: /reference/android/support/v4/package-summary.html
- status_text: apilevel-
-- title: android.support.v4.accessibilityservice
- path: /reference/android/support/v4/accessibilityservice/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.app
- path: /reference/android/support/v4/app/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.content
- path: /reference/android/support/v4/content/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.content.pm
- path: /reference/android/support/v4/content/pm/package-summary.html
- status_text: apilevel-22.2.0
-- title: android.support.v4.content.res
- path: /reference/android/support/v4/content/res/package-summary.html
- status_text: apilevel-22.2.0
-- title: android.support.v4.database
- path: /reference/android/support/v4/database/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.graphics
- path: /reference/android/support/v4/graphics/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.graphics.drawable
- path: /reference/android/support/v4/graphics/drawable/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.hardware.display
- path: /reference/android/support/v4/hardware/display/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.hardware.fingerprint
- path: /reference/android/support/v4/hardware/fingerprint/package-summary.html
- status_text: apilevel-23.0.0
-- title: android.support.v4.math
- path: /reference/android/support/v4/math/package-summary.html
- status_text: apilevel-26.0.0-alpha1
-- title: android.support.v4.media
- path: /reference/android/support/v4/media/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.media.session
- path: /reference/android/support/v4/media/session/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.net
- path: /reference/android/support/v4/net/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.os
- path: /reference/android/support/v4/os/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.print
- path: /reference/android/support/v4/print/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.provider
- path: /reference/android/support/v4/provider/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.text
- path: /reference/android/support/v4/text/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.text.util
- path: /reference/android/support/v4/text/util/package-summary.html
- status_text: apilevel-24.2.0
-- title: android.support.v4.util
- path: /reference/android/support/v4/util/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.view
- path: /reference/android/support/v4/view/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.view.accessibility
- path: /reference/android/support/v4/view/accessibility/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v4.view.animation
- path: /reference/android/support/v4/view/animation/package-summary.html
- status_text: apilevel-22.1.0
-- title: android.support.v4.widget
- path: /reference/android/support/v4/widget/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v7.app
- path: /reference/android/support/v7/app/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v7.appcompat
- path: /reference/android/support/v7/appcompat/package-summary.html
- status_text: apilevel-22.2.0
-- title: android.support.v7.cardview
- path: /reference/android/support/v7/cardview/package-summary.html
- status_text: apilevel-
-- title: android.support.v7.content.res
- path: /reference/android/support/v7/content/res/package-summary.html
- status_text: apilevel-24.0.0
-- title: android.support.v7.graphics
- path: /reference/android/support/v7/graphics/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v7.graphics.drawable
- path: /reference/android/support/v7/graphics/drawable/package-summary.html
- status_text: apilevel-23.0.0
-- title: android.support.v7.gridlayout
- path: /reference/android/support/v7/gridlayout/package-summary.html
- status_text: apilevel-
-- title: android.support.v7.media
- path: /reference/android/support/v7/media/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v7.mediarouter
- path: /reference/android/support/v7/mediarouter/package-summary.html
- status_text: apilevel-
-- title: android.support.v7.palette
- path: /reference/android/support/v7/palette/package-summary.html
- status_text: apilevel-
-- title: android.support.v7.preference
- path: /reference/android/support/v7/preference/package-summary.html
- status_text: apilevel-23.0.0
-- title: android.support.v7.recyclerview
- path: /reference/android/support/v7/recyclerview/package-summary.html
- status_text: apilevel-22.2.0
-- title: android.support.v7.util
- path: /reference/android/support/v7/util/package-summary.html
- status_text: apilevel-22.1.0
-- title: android.support.v7.view
- path: /reference/android/support/v7/view/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v7.widget
- path: /reference/android/support/v7/widget/package-summary.html
- status_text: apilevel-22.0.0
-- title: android.support.v7.widget.helper
- path: /reference/android/support/v7/widget/helper/package-summary.html
- status_text: apilevel-22.2.0
-- title: android.support.v7.widget.util
- path: /reference/android/support/v7/widget/util/package-summary.html
- status_text: apilevel-22.1.0
-- title: android.support.v8.renderscript
- path: /reference/android/support/v8/renderscript/package-summary.html
- status_text: apilevel-23.0.0
-- title: android.support.wearable
- path: /reference/android/support/wearable/package-summary.html
- status_text: apilevel-
-- title: android.support.wearable.view
- path: /reference/android/support/wearable/view/package-summary.html
- status_text: apilevel-26.0.0-alpha1
-- title: android.system
- path: /reference/android/system/package-summary.html
- status_text: apilevel-21
-- title: android.telecom
- path: /reference/android/telecom/package-summary.html
- status_text: apilevel-21
-- title: android.telephony
- path: /reference/android/telephony/package-summary.html
- status_text: apilevel-1
-- title: android.telephony.cdma
- path: /reference/android/telephony/cdma/package-summary.html
- status_text: apilevel-5
-- title: android.telephony.gsm
- path: /reference/android/telephony/gsm/package-summary.html
- status_text: apilevel-1
-- title: android.test
- path: /reference/android/test/package-summary.html
- status_text: apilevel-1
-- title: android.test.mock
- path: /reference/android/test/mock/package-summary.html
- status_text: apilevel-1
-- title: android.test.suitebuilder
- path: /reference/android/test/suitebuilder/package-summary.html
- status_text: apilevel-1
-- title: android.test.suitebuilder.annotation
- path: /reference/android/test/suitebuilder/annotation/package-summary.html
- status_text: apilevel-1
-- title: android.text
- path: /reference/android/text/package-summary.html
- status_text: apilevel-1
-- title: android.text.format
- path: /reference/android/text/format/package-summary.html
- status_text: apilevel-3
-- title: android.text.method
- path: /reference/android/text/method/package-summary.html
- status_text: apilevel-1
-- title: android.text.style
- path: /reference/android/text/style/package-summary.html
- status_text: apilevel-1
-- title: android.text.util
- path: /reference/android/text/util/package-summary.html
- status_text: apilevel-1
-- title: android.transition
- path: /reference/android/transition/package-summary.html
- status_text: apilevel-19
-- title: android.util
- path: /reference/android/util/package-summary.html
- status_text: apilevel-1
-- title: android.view
- path: /reference/android/view/package-summary.html
- status_text: apilevel-1
-- title: android.view.accessibility
- path: /reference/android/view/accessibility/package-summary.html
- status_text: apilevel-4
-- title: android.view.animation
- path: /reference/android/view/animation/package-summary.html
- status_text: apilevel-1
-- title: android.view.autofill
- path: /reference/android/view/autofill/package-summary.html
- status_text: apilevel-O
-- title: android.view.inputmethod
- path: /reference/android/view/inputmethod/package-summary.html
- status_text: apilevel-3
-- title: android.view.textclassifier
- path: /reference/android/view/textclassifier/package-summary.html
- status_text: apilevel-O
-- title: android.view.textservice
- path: /reference/android/view/textservice/package-summary.html
- status_text: apilevel-14
-- title: android.webkit
- path: /reference/android/webkit/package-summary.html
- status_text: apilevel-1
-- title: android.widget
- path: /reference/android/widget/package-summary.html
- status_text: apilevel-1
-- title: com.android.test.runner
- path: /reference/com/android/test/runner/package-summary.html
- status_text: apilevel-
-- title: dalvik.annotation
- path: /reference/dalvik/annotation/package-summary.html
- status_text: apilevel-1
-- title: dalvik.bytecode
- path: /reference/dalvik/bytecode/package-summary.html
- status_text: apilevel-1
-- title: dalvik.system
- path: /reference/dalvik/system/package-summary.html
- status_text: apilevel-1
-- title: java.awt.font
- path: /reference/java/awt/font/package-summary.html
- status_text: apilevel-1
-- title: java.beans
- path: /reference/java/beans/package-summary.html
- status_text: apilevel-3
-- title: java.io
- path: /reference/java/io/package-summary.html
- status_text: apilevel-1
-- title: java.lang
- path: /reference/java/lang/package-summary.html
- status_text: apilevel-1
-- title: java.lang.annotation
- path: /reference/java/lang/annotation/package-summary.html
- status_text: apilevel-1
-- title: java.lang.invoke
- path: /reference/java/lang/invoke/package-summary.html
- status_text: apilevel-O
-- title: java.lang.ref
- path: /reference/java/lang/ref/package-summary.html
- status_text: apilevel-1
-- title: java.lang.reflect
- path: /reference/java/lang/reflect/package-summary.html
- status_text: apilevel-1
-- title: java.math
- path: /reference/java/math/package-summary.html
- status_text: apilevel-1
-- title: java.net
- path: /reference/java/net/package-summary.html
- status_text: apilevel-1
-- title: java.nio
- path: /reference/java/nio/package-summary.html
- status_text: apilevel-1
-- title: java.nio.channels
- path: /reference/java/nio/channels/package-summary.html
- status_text: apilevel-1
-- title: java.nio.channels.spi
- path: /reference/java/nio/channels/spi/package-summary.html
- status_text: apilevel-1
-- title: java.nio.charset
- path: /reference/java/nio/charset/package-summary.html
- status_text: apilevel-1
-- title: java.nio.charset.spi
- path: /reference/java/nio/charset/spi/package-summary.html
- status_text: apilevel-1
-- title: java.nio.file
- path: /reference/java/nio/file/package-summary.html
- status_text: apilevel-O
-- title: java.nio.file.attribute
- path: /reference/java/nio/file/attribute/package-summary.html
- status_text: apilevel-O
-- title: java.nio.file.spi
- path: /reference/java/nio/file/spi/package-summary.html
- status_text: apilevel-O
-- title: java.security
- path: /reference/java/security/package-summary.html
- status_text: apilevel-1
-- title: java.security.acl
- path: /reference/java/security/acl/package-summary.html
- status_text: apilevel-1
-- title: java.security.cert
- path: /reference/java/security/cert/package-summary.html
- status_text: apilevel-1
-- title: java.security.interfaces
- path: /reference/java/security/interfaces/package-summary.html
- status_text: apilevel-1
-- title: java.security.spec
- path: /reference/java/security/spec/package-summary.html
- status_text: apilevel-1
-- title: java.sql
- path: /reference/java/sql/package-summary.html
- status_text: apilevel-1
-- title: java.text
- path: /reference/java/text/package-summary.html
- status_text: apilevel-1
-- title: java.time
- path: /reference/java/time/package-summary.html
- status_text: apilevel-O
-- title: java.time.chrono
- path: /reference/java/time/chrono/package-summary.html
- status_text: apilevel-O
-- title: java.time.format
- path: /reference/java/time/format/package-summary.html
- status_text: apilevel-O
-- title: java.time.temporal
- path: /reference/java/time/temporal/package-summary.html
- status_text: apilevel-O
-- title: java.time.zone
- path: /reference/java/time/zone/package-summary.html
- status_text: apilevel-O
-- title: java.util
- path: /reference/java/util/package-summary.html
- status_text: apilevel-1
-- title: java.util.concurrent
- path: /reference/java/util/concurrent/package-summary.html
- status_text: apilevel-1
-- title: java.util.concurrent.atomic
- path: /reference/java/util/concurrent/atomic/package-summary.html
- status_text: apilevel-1
-- title: java.util.concurrent.locks
- path: /reference/java/util/concurrent/locks/package-summary.html
- status_text: apilevel-1
-- title: java.util.function
- path: /reference/java/util/function/package-summary.html
- status_text: apilevel-24
-- title: java.util.jar
- path: /reference/java/util/jar/package-summary.html
- status_text: apilevel-1
-- title: java.util.logging
- path: /reference/java/util/logging/package-summary.html
- status_text: apilevel-1
-- title: java.util.prefs
- path: /reference/java/util/prefs/package-summary.html
- status_text: apilevel-1
-- title: java.util.regex
- path: /reference/java/util/regex/package-summary.html
- status_text: apilevel-1
-- title: java.util.stream
- path: /reference/java/util/stream/package-summary.html
- status_text: apilevel-24
-- title: java.util.zip
- path: /reference/java/util/zip/package-summary.html
- status_text: apilevel-1
-- title: javax.crypto
- path: /reference/javax/crypto/package-summary.html
- status_text: apilevel-1
-- title: javax.crypto.interfaces
- path: /reference/javax/crypto/interfaces/package-summary.html
- status_text: apilevel-1
-- title: javax.crypto.spec
- path: /reference/javax/crypto/spec/package-summary.html
- status_text: apilevel-1
-- title: javax.microedition.khronos.egl
- path: /reference/javax/microedition/khronos/egl/package-summary.html
- status_text: apilevel-1
-- title: javax.microedition.khronos.opengles
- path: /reference/javax/microedition/khronos/opengles/package-summary.html
- status_text: apilevel-1
-- title: javax.net
- path: /reference/javax/net/package-summary.html
- status_text: apilevel-1
-- title: javax.net.ssl
- path: /reference/javax/net/ssl/package-summary.html
- status_text: apilevel-1
-- title: javax.security.auth
- path: /reference/javax/security/auth/package-summary.html
- status_text: apilevel-1
-- title: javax.security.auth.callback
- path: /reference/javax/security/auth/callback/package-summary.html
- status_text: apilevel-1
-- title: javax.security.auth.login
- path: /reference/javax/security/auth/login/package-summary.html
- status_text: apilevel-1
-- title: javax.security.auth.x500
- path: /reference/javax/security/auth/x500/package-summary.html
- status_text: apilevel-1
-- title: javax.security.cert
- path: /reference/javax/security/cert/package-summary.html
- status_text: apilevel-1
-- title: javax.sql
- path: /reference/javax/sql/package-summary.html
- status_text: apilevel-1
-- title: javax.xml
- path: /reference/javax/xml/package-summary.html
- status_text: apilevel-1
-- title: javax.xml.datatype
- path: /reference/javax/xml/datatype/package-summary.html
- status_text: apilevel-8
-- title: javax.xml.namespace
- path: /reference/javax/xml/namespace/package-summary.html
- status_text: apilevel-8
-- title: javax.xml.parsers
- path: /reference/javax/xml/parsers/package-summary.html
- status_text: apilevel-1
-- title: javax.xml.transform
- path: /reference/javax/xml/transform/package-summary.html
- status_text: apilevel-8
-- title: javax.xml.transform.dom
- path: /reference/javax/xml/transform/dom/package-summary.html
- status_text: apilevel-8
-- title: javax.xml.transform.sax
- path: /reference/javax/xml/transform/sax/package-summary.html
- status_text: apilevel-8
-- title: javax.xml.transform.stream
- path: /reference/javax/xml/transform/stream/package-summary.html
- status_text: apilevel-8
-- title: javax.xml.validation
- path: /reference/javax/xml/validation/package-summary.html
- status_text: apilevel-8
-- title: javax.xml.xpath
- path: /reference/javax/xml/xpath/package-summary.html
- status_text: apilevel-8
-- title: junit.framework
- path: /reference/junit/framework/package-summary.html
- status_text: apilevel-1
-- title: junit.runner
- path: /reference/junit/runner/package-summary.html
- status_text: apilevel-1
-- title: org.apache.http.conn
- path: /reference/org/apache/http/conn/package-summary.html
- status_text: apilevel-1
-- title: org.apache.http.conn.scheme
- path: /reference/org/apache/http/conn/scheme/package-summary.html
- status_text: apilevel-1
-- title: org.apache.http.conn.ssl
- path: /reference/org/apache/http/conn/ssl/package-summary.html
- status_text: apilevel-1
-- title: org.apache.http.params
- path: /reference/org/apache/http/params/package-summary.html
- status_text: apilevel-1
-- title: org.json
- path: /reference/org/json/package-summary.html
- status_text: apilevel-1
-- title: org.w3c.dom
- path: /reference/org/w3c/dom/package-summary.html
- status_text: apilevel-1
-- title: org.w3c.dom.ls
- path: /reference/org/w3c/dom/ls/package-summary.html
- status_text: apilevel-8
-- title: org.xml.sax
- path: /reference/org/xml/sax/package-summary.html
- status_text: apilevel-1
-- title: org.xml.sax.ext
- path: /reference/org/xml/sax/ext/package-summary.html
- status_text: apilevel-1
-- title: org.xml.sax.helpers
- path: /reference/org/xml/sax/helpers/package-summary.html
- status_text: apilevel-1
-- title: org.xmlpull.v1
- path: /reference/org/xmlpull/v1/package-summary.html
- status_text: apilevel-1
-- title: org.xmlpull.v1.sax2
- path: /reference/org/xmlpull/v1/sax2/package-summary.html
- status_text: apilevel-1
diff --git a/docs/html/reference/_project.yaml b/docs/html/reference/_project.yaml
deleted file mode 100644
index e5c26e7..0000000
--- a/docs/html/reference/_project.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-name: "Reference"
-home_url: /reference/
-description: "API Reference packages and classes."
-content_license: cc3-apache2
-buganizer_id: 30209417
-parent_project_metadata_path: /develop/_project.yaml
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java
index 3c0b226..894ea62 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java
@@ -114,6 +114,10 @@
return mVisibility != null ? mVisibility : View.VISIBLE;
}
+ public boolean isVisible() {
+ return getVisibility() == View.VISIBLE;
+ }
+
public float getAlpha() {
return mAlpha != null ? mAlpha : 1;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 6c66cab..0fd8df0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -336,13 +336,14 @@
int x = (int) event.getX();
int y = (int) event.getY();
mDownHitTarget = HIT_TARGET_NONE;
- if (mBackButtonBounds.contains(x, y)) {
+ if (getBackButton().isVisible() && mBackButtonBounds.contains(x, y)) {
mDownHitTarget = HIT_TARGET_BACK;
- } else if (mHomeButtonBounds.contains(x, y)) {
+ } else if (getHomeButton().isVisible() && mHomeButtonBounds.contains(x, y)) {
mDownHitTarget = HIT_TARGET_HOME;
- } else if (mRecentsButtonBounds.contains(x, y)) {
+ } else if (getRecentsButton().isVisible() && mRecentsButtonBounds.contains(x, y)) {
mDownHitTarget = HIT_TARGET_OVERVIEW;
- } else if (mRotationButtonBounds.contains(x, y)) {
+ } else if (getRotateSuggestionButton().isVisible()
+ && mRotationButtonBounds.contains(x, y)) {
mDownHitTarget = HIT_TARGET_ROTATION;
}
break;
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index c25f8ff..e95a932 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -15305,6 +15305,7 @@
public void onLimitReached(int uid) {
Slog.wtf(TAG, "Uid " + uid + " sent too many Binders to uid "
+ Process.myUid());
+ Binder.dumpProxyDebugInfo();
if (uid == Process.SYSTEM_UID) {
Slog.i(TAG, "Skipping kill (uid is SYSTEM)");
} else {
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 16f4585..d456f62 100644
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -2413,11 +2413,16 @@
}
// Compute configuration based on max supported width and height.
- outBounds.set(0, 0, maxActivityWidth, maxActivityHeight);
- // Position the activity frame on the opposite side of the nav bar.
- final int navBarPosition = service.mWindowManager.getNavBarPosition();
- final int left = navBarPosition == NAV_BAR_LEFT ? appBounds.right - outBounds.width() : 0;
- outBounds.offsetTo(left, 0 /* top */);
+ // Also account for the left / top insets (e.g. from display cutouts), which will be clipped
+ // away later in StackWindowController.adjustConfigurationForBounds(). Otherwise, the app
+ // bounds would end up too small.
+ outBounds.set(0, 0, maxActivityWidth + appBounds.left, maxActivityHeight + appBounds.top);
+
+ if (service.mWindowManager.getNavBarPosition() == NAV_BAR_LEFT) {
+ // Position the activity frame on the opposite side of the nav bar.
+ outBounds.left = appBounds.right - maxActivityWidth;
+ outBounds.right = appBounds.right;
+ }
}
boolean ensureActivityConfiguration(int globalChanges, boolean preserveWindow) {
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index 4e6307d..0f8c526 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -1015,26 +1015,25 @@
locationListener = mFusedLocationListener;
}
- if (!locationManager.isProviderEnabled(provider)) {
- Log.w(TAG, "Unable to request location since " + provider
- + " provider does not exist or is not enabled.");
- return;
- }
-
Log.i(TAG,
String.format(
"GNSS HAL Requesting location updates from %s provider for %d millis.",
provider, durationMillis));
- locationManager.requestLocationUpdates(provider,
- LOCATION_UPDATE_MIN_TIME_INTERVAL_MILLIS, /*minDistance=*/ 0,
- locationListener, mHandler.getLooper());
- locationListener.numLocationUpdateRequest++;
- mHandler.postDelayed(() -> {
- if (--locationListener.numLocationUpdateRequest == 0) {
- Log.i(TAG, String.format("Removing location updates from %s provider.", provider));
- locationManager.removeUpdates(locationListener);
- }
- }, durationMillis);
+ try {
+ locationManager.requestLocationUpdates(provider,
+ LOCATION_UPDATE_MIN_TIME_INTERVAL_MILLIS, /*minDistance=*/ 0,
+ locationListener, mHandler.getLooper());
+ locationListener.numLocationUpdateRequest++;
+ mHandler.postDelayed(() -> {
+ if (--locationListener.numLocationUpdateRequest == 0) {
+ Log.i(TAG,
+ String.format("Removing location updates from %s provider.", provider));
+ locationManager.removeUpdates(locationListener);
+ }
+ }, durationMillis);
+ } catch (IllegalArgumentException e) {
+ Log.w(TAG, "Unable to request location.", e);
+ }
}
private void injectBestLocation(Location location) {
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index a735297b..7ffd5ed 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -6161,7 +6161,9 @@
sendSystemKeyToStatusBarAsync(event.getKeyCode());
TelecomManager telecomManager = getTelecommService();
- if (telecomManager != null) {
+ if (telecomManager != null && !mHandleVolumeKeysInWM) {
+ // When {@link #mHandleVolumeKeysInWM} is set, volume key events
+ // should be dispatched to WM.
if (telecomManager.isRinging()) {
// If an incoming call is ringing, either VOLUME key means
// "silence ringer". We handle these keys here, rather than