diff options
127 files changed, 1466 insertions, 279 deletions
diff --git a/Android.bp b/Android.bp index e4b22d27d3a1..351704a1c0b4 100644 --- a/Android.bp +++ b/Android.bp @@ -34,6 +34,27 @@ filegroup { path: "core/java", } +// These are subset of framework-core-sources that are needed by the +// android.test.mock library. Ideally, the library should use public APIs only, +// but unfortunately its API signature has some references to these private APIs. +filegroup { + name: "framework-core-sources-for-test-mock", + srcs: [ + "core/java/android/app/IApplicationThread.aidl", + "core/java/android/app/IServiceConnection.aidl", + "core/java/android/content/IContentProvider.java", + "core/java/android/content/pm/IPackageDataObserver.aidl", + "core/java/android/content/pm/InstantAppInfo.java", + "core/java/android/content/pm/KeySet.java", + "core/java/android/content/pm/PackageManager.java", + "core/java/android/content/pm/VerifierDeviceIdentity.java", + "core/java/android/content/res/Resources.java", + "core/java/android/os/storage/VolumeInfo.java", + "core/java/android/view/DisplayAdjustments.java", + ], + path: "core/java", +} + filegroup { name: "framework-drm-sources", srcs: [ diff --git a/api/current.txt b/api/current.txt index ce9dba09a30b..59c3f6828154 100644 --- a/api/current.txt +++ b/api/current.txt @@ -61224,9 +61224,9 @@ package java.lang { method @NonNull public StringBuilder reverse(); method public void setCharAt(int, char); method public void setLength(int); - method public CharSequence subSequence(int, int); - method public String substring(int); - method public String substring(int, int); + method @NonNull public CharSequence subSequence(int, int); + method @NonNull public String substring(int); + method @NonNull public String substring(int, int); method public void trimToSize(); } @@ -71559,20 +71559,20 @@ package java.util.concurrent { method public boolean addAll(@NonNull java.util.Collection<? extends K>); method public final void clear(); method public boolean contains(@NonNull Object); - method public final boolean containsAll(java.util.Collection<?>); + method public final boolean containsAll(@NonNull java.util.Collection<?>); method public void forEach(@NonNull java.util.function.Consumer<? super K>); - method public java.util.concurrent.ConcurrentHashMap<K,V> getMap(); + method @NonNull public java.util.concurrent.ConcurrentHashMap<K,V> getMap(); method @Nullable public V getMappedValue(); method public final boolean isEmpty(); method @NonNull public java.util.Iterator<K> iterator(); method public boolean remove(@NonNull Object); - method public final boolean removeAll(java.util.Collection<?>); - method public final boolean retainAll(java.util.Collection<?>); + method public final boolean removeAll(@NonNull java.util.Collection<?>); + method public final boolean retainAll(@NonNull java.util.Collection<?>); method public final int size(); method @NonNull public java.util.Spliterator<K> spliterator(); - method public final Object[] toArray(); - method public final <T> T[] toArray(T[]); - method public final String toString(); + method @NonNull public final Object[] toArray(); + method @NonNull public final <T> T[] toArray(@NonNull T[]); + method @NonNull public final String toString(); } public class ConcurrentLinkedDeque<E> extends java.util.AbstractCollection<E> implements java.util.Deque<E> java.io.Serializable { diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl index f5914412663b..770e5f7ffe11 100644 --- a/core/java/android/app/IActivityTaskManager.aidl +++ b/core/java/android/app/IActivityTaskManager.aidl @@ -70,6 +70,7 @@ import android.service.voice.IVoiceInteractionSession; import android.view.IRecentsAnimationRunner; import android.view.RemoteAnimationDefinition; import android.view.RemoteAnimationAdapter; +import android.view.WindowContainerTransaction; import com.android.internal.app.IVoiceInteractor; import com.android.internal.os.IResultReceiver; import com.android.internal.policy.IKeyguardDismissCallback; @@ -220,6 +221,7 @@ interface IActivityTaskManager { void setTaskResizeable(int taskId, int resizeableMode); void toggleFreeformWindowingMode(in IBinder token); void resizeTask(int taskId, in Rect bounds, int resizeMode); + void applyContainerTransaction(in WindowContainerTransaction t); void moveStackToDisplay(int stackId, int displayId); void removeStack(int stackId); diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java index 4b4a071ecf72..3ad88829b812 100644 --- a/core/java/android/app/PendingIntent.java +++ b/core/java/android/app/PendingIntent.java @@ -94,6 +94,12 @@ import java.lang.annotation.RetentionPolicy; * {@link #FLAG_CANCEL_CURRENT} or {@link #FLAG_UPDATE_CURRENT} to either * cancel or modify whatever current PendingIntent is associated with the * Intent you are supplying. + * + * <p>Also note that flags like {@link #FLAG_ONE_SHOT} or {@link #FLAG_IMMUTABLE} describe the + * PendingIntent instance and thus, are used to identify it. Any calls to retrieve or modify a + * PendingIntent created with these flags will also require these flags to be supplied in + * conjunction with others. E.g. To retrieve an existing PendingIntent created with + * FLAG_ONE_SHOT, <b>both</b> FLAG_ONE_SHOT and FLAG_NO_CREATE need to be supplied. */ public final class PendingIntent implements Parcelable { private final IIntentSender mTarget; diff --git a/core/java/android/app/WindowConfiguration.java b/core/java/android/app/WindowConfiguration.java index c40031631a74..f4c6b50da714 100644 --- a/core/java/android/app/WindowConfiguration.java +++ b/core/java/android/app/WindowConfiguration.java @@ -440,6 +440,34 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu } /** + * Copies the fields specified by mask from delta into this Configuration object. + * @hide + */ + public void setTo(@NonNull WindowConfiguration delta, @WindowConfig int mask) { + if ((mask & WINDOW_CONFIG_BOUNDS) != 0) { + setBounds(delta.mBounds); + } + if ((mask & WINDOW_CONFIG_APP_BOUNDS) != 0) { + setAppBounds(delta.mAppBounds); + } + if ((mask & WINDOW_CONFIG_WINDOWING_MODE) != 0) { + setWindowingMode(delta.mWindowingMode); + } + if ((mask & WINDOW_CONFIG_ACTIVITY_TYPE) != 0) { + setActivityType(delta.mActivityType); + } + if ((mask & WINDOW_CONFIG_ALWAYS_ON_TOP) != 0) { + setAlwaysOnTop(delta.mAlwaysOnTop); + } + if ((mask & WINDOW_CONFIG_ROTATION) != 0) { + setRotation(delta.mRotation); + } + if ((mask & WINDOW_CONFIG_DISPLAY_WINDOWING_MODE) != 0) { + setDisplayWindowingMode(delta.mDisplayWindowingMode); + } + } + + /** * Return a bit mask of the differences between this Configuration object and the given one. * Does not change the values of either. Any undefined fields in <var>other</var> are ignored. * @param other The configuration to diff against. diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java index 578d08617b5f..053444b28f01 100644 --- a/core/java/android/content/res/Configuration.java +++ b/core/java/android/content/res/Configuration.java @@ -1587,6 +1587,80 @@ public final class Configuration implements Parcelable, Comparable<Configuration } /** + * Copies the fields specified by mask from delta into this Configuration object. This will + * copy anything allowed by the mask (including undefined values). + * @hide + */ + public void setTo(@NonNull Configuration delta, @Config int mask, + @WindowConfiguration.WindowConfig int windowMask) { + if ((mask & ActivityInfo.CONFIG_FONT_SCALE) != 0) { + fontScale = delta.fontScale; + } + if ((mask & ActivityInfo.CONFIG_MCC) != 0) { + mcc = delta.mcc; + } + if ((mask & ActivityInfo.CONFIG_MNC) != 0) { + mnc = delta.mnc; + } + if ((mask & ActivityInfo.CONFIG_LOCALE) != 0) { + mLocaleList = delta.mLocaleList; + if (!mLocaleList.isEmpty()) { + locale = (Locale) delta.locale.clone(); + } + } + if ((mask & ActivityInfo.CONFIG_LAYOUT_DIRECTION) != 0) { + final int deltaScreenLayoutDir = delta.screenLayout & SCREENLAYOUT_LAYOUTDIR_MASK; + screenLayout = (screenLayout & ~SCREENLAYOUT_LAYOUTDIR_MASK) | deltaScreenLayoutDir; + } + if ((mask & ActivityInfo.CONFIG_LOCALE) != 0) { + userSetLocale = delta.userSetLocale; + } + if ((mask & ActivityInfo.CONFIG_TOUCHSCREEN) != 0) { + touchscreen = delta.touchscreen; + } + if ((mask & ActivityInfo.CONFIG_KEYBOARD) != 0) { + keyboard = delta.keyboard; + } + if ((mask & ActivityInfo.CONFIG_KEYBOARD_HIDDEN) != 0) { + keyboardHidden = delta.keyboardHidden; + hardKeyboardHidden = delta.hardKeyboardHidden; + navigationHidden = delta.navigationHidden; + } + if ((mask & ActivityInfo.CONFIG_NAVIGATION) != 0) { + navigation = delta.navigation; + } + if ((mask & ActivityInfo.CONFIG_ORIENTATION) != 0) { + orientation = delta.orientation; + } + if ((mask & ActivityInfo.CONFIG_SCREEN_LAYOUT) != 0) { + // Not enough granularity for each component unfortunately. + screenLayout = screenLayout | (delta.screenLayout & ~SCREENLAYOUT_LAYOUTDIR_MASK); + } + if ((mask & ActivityInfo.CONFIG_COLOR_MODE) != 0) { + colorMode = delta.colorMode; + } + if ((mask & ActivityInfo.CONFIG_UI_MODE) != 0) { + uiMode = delta.uiMode; + } + if ((mask & ActivityInfo.CONFIG_SCREEN_SIZE) != 0) { + screenWidthDp = delta.screenWidthDp; + screenHeightDp = delta.screenHeightDp; + } + if ((mask & ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE) != 0) { + smallestScreenWidthDp = delta.smallestScreenWidthDp; + } + if ((mask & ActivityInfo.CONFIG_DENSITY) != 0) { + densityDpi = delta.densityDpi; + } + if ((mask & ActivityInfo.CONFIG_ASSETS_PATHS) != 0) { + assetsSeq = delta.assetsSeq; + } + if ((mask & ActivityInfo.CONFIG_WINDOW_CONFIGURATION) != 0) { + windowConfiguration.setTo(delta.windowConfiguration, windowMask); + } + } + + /** * Return a bit mask of the differences between this Configuration * object and the given one. Does not change the values of either. Any * undefined fields in <var>delta</var> are ignored. diff --git a/core/java/android/view/IWindowContainer.aidl b/core/java/android/view/IWindowContainer.aidl new file mode 100644 index 000000000000..878d86bcae9a --- /dev/null +++ b/core/java/android/view/IWindowContainer.aidl @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2019 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 android.view.SurfaceControl; + +/** + * Interface for a window container to communicate with the window manager. This also acts as a + * token. + * @hide + */ +interface IWindowContainer { + + /** + * Gets a persistent leash for this container or {@code null}. + */ + SurfaceControl getLeash(); +} diff --git a/core/java/android/view/WindowContainerTransaction.aidl b/core/java/android/view/WindowContainerTransaction.aidl new file mode 100644 index 000000000000..46ba6c1d5c59 --- /dev/null +++ b/core/java/android/view/WindowContainerTransaction.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2019 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; + +parcelable WindowContainerTransaction; diff --git a/core/java/android/view/WindowContainerTransaction.java b/core/java/android/view/WindowContainerTransaction.java new file mode 100644 index 000000000000..607a87047733 --- /dev/null +++ b/core/java/android/view/WindowContainerTransaction.java @@ -0,0 +1,173 @@ +/* + * Copyright (C) 2019 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 android.app.WindowConfiguration; +import android.content.pm.ActivityInfo; +import android.content.res.Configuration; +import android.graphics.Rect; +import android.os.IBinder; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.ArrayMap; + +import java.util.Map; + +/** + * Represents a collection of operations on some WindowContainers that should be applied all at + * once. + * + * @hide + */ +public class WindowContainerTransaction implements Parcelable { + private final ArrayMap<IBinder, Change> mChanges = new ArrayMap<>(); + + public WindowContainerTransaction() {} + + protected WindowContainerTransaction(Parcel in) { + in.readMap(mChanges, null /* loader */); + } + + private Change getOrCreateChange(IBinder token) { + Change out = mChanges.get(token); + if (out == null) { + out = new Change(); + mChanges.put(token, out); + } + return out; + } + + /** + * Resize a container. + */ + public WindowContainerTransaction setBounds(IWindowContainer container, Rect bounds) { + Change chg = getOrCreateChange(container.asBinder()); + chg.mConfiguration.windowConfiguration.setBounds(bounds); + chg.mConfigSetMask |= ActivityInfo.CONFIG_WINDOW_CONFIGURATION; + chg.mWindowSetMask |= WindowConfiguration.WINDOW_CONFIG_BOUNDS; + return this; + } + + public Map<IBinder, Change> getChanges() { + return mChanges; + } + + @Override + public String toString() { + return "WindowContainerTransaction { changes = " + mChanges + " }"; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeMap(mChanges); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator<WindowContainerTransaction> CREATOR = + new Creator<WindowContainerTransaction>() { + @Override + public WindowContainerTransaction createFromParcel(Parcel in) { + return new WindowContainerTransaction(in); + } + + @Override + public WindowContainerTransaction[] newArray(int size) { + return new WindowContainerTransaction[size]; + } + }; + + /** + * Holds changes on a single WindowContainer including Configuration changes. + * + * @hide + */ + public static class Change implements Parcelable { + private final Configuration mConfiguration = new Configuration(); + private @ActivityInfo.Config int mConfigSetMask = 0; + private @WindowConfiguration.WindowConfig int mWindowSetMask = 0; + + public Change() {} + + protected Change(Parcel in) { + mConfiguration.readFromParcel(in); + mConfigSetMask = in.readInt(); + mWindowSetMask = in.readInt(); + } + + public Configuration getConfiguration() { + return mConfiguration; + } + + @ActivityInfo.Config + public int getConfigSetMask() { + return mConfigSetMask; + } + + @WindowConfiguration.WindowConfig + public int getWindowSetMask() { + return mWindowSetMask; + } + + @Override + public String toString() { + final boolean changesBounds = + (mConfigSetMask & ActivityInfo.CONFIG_WINDOW_CONFIGURATION) != 0 + && ((mWindowSetMask & WindowConfiguration.WINDOW_CONFIG_BOUNDS) + != 0); + final boolean changesSss = + (mConfigSetMask & ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE) != 0; + StringBuilder sb = new StringBuilder(); + sb.append('{'); + if (changesBounds) { + sb.append("bounds:" + mConfiguration.windowConfiguration.getBounds() + ","); + } + if (changesSss) { + sb.append("ssw:" + mConfiguration.smallestScreenWidthDp + ","); + } + sb.append("}"); + return sb.toString(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + mConfiguration.writeToParcel(dest, flags); + dest.writeInt(mConfigSetMask); + dest.writeInt(mWindowSetMask); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator<Change> CREATOR = new Creator<Change>() { + @Override + public Change createFromParcel(Parcel in) { + return new Change(in); + } + + @Override + public Change[] newArray(int size) { + return new Change[size]; + } + }; + } +} diff --git a/core/tests/coretests/src/android/content/res/ConfigurationTest.java b/core/tests/coretests/src/android/content/res/ConfigurationTest.java index 4a93f42a0f7c..c231e611809f 100644 --- a/core/tests/coretests/src/android/content/res/ConfigurationTest.java +++ b/core/tests/coretests/src/android/content/res/ConfigurationTest.java @@ -16,6 +16,18 @@ package android.content.res; +import static android.app.WindowConfiguration.ROTATION_UNDEFINED; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.WINDOW_CONFIG_ROTATION; +import static android.app.WindowConfiguration.WINDOW_CONFIG_WINDOWING_MODE; +import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION; +import static android.content.pm.ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE; +import static android.content.pm.ActivityInfo.CONFIG_WINDOW_CONFIGURATION; +import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; +import static android.content.res.Configuration.ORIENTATION_PORTRAIT; +import static android.content.res.Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED; +import static android.view.Surface.ROTATION_90; + import android.content.Context; import android.os.LocaleList; import android.platform.test.annotations.Presubmit; @@ -104,6 +116,38 @@ public class ConfigurationTest extends TestCase { read.getLocales().indexOf(urduExtension) != -1); } + @Test + public void testMaskedSet() { + Configuration config = new Configuration(); + Configuration other = new Configuration(); + config.smallestScreenWidthDp = 100; + config.orientation = ORIENTATION_LANDSCAPE; + config.windowConfiguration.setRotation(ROTATION_90); + other.windowConfiguration.setWindowingMode(WINDOWING_MODE_FULLSCREEN); + other.orientation = ORIENTATION_PORTRAIT; + + // no change + config.setTo(other, 0, 0); + assertEquals(100, config.smallestScreenWidthDp); + assertEquals(ORIENTATION_LANDSCAPE, config.orientation); + assertEquals(ROTATION_90, config.windowConfiguration.getRotation()); + + final int justOrientationAndWindowConfig = CONFIG_ORIENTATION | CONFIG_WINDOW_CONFIGURATION; + config.setTo(other, justOrientationAndWindowConfig, WINDOW_CONFIG_WINDOWING_MODE); + assertEquals(100, config.smallestScreenWidthDp); + assertEquals(other.orientation, config.orientation); + assertEquals(other.windowConfiguration.getWindowingMode(), + config.windowConfiguration.getWindowingMode()); + assertEquals(ROTATION_90, config.windowConfiguration.getRotation()); + + // unset + final int justSmallestSwAndWindowConfig = + CONFIG_SMALLEST_SCREEN_SIZE | CONFIG_WINDOW_CONFIGURATION; + config.setTo(other, justSmallestSwAndWindowConfig, WINDOW_CONFIG_ROTATION); + assertEquals(ROTATION_UNDEFINED, config.windowConfiguration.getRotation()); + assertEquals(SMALLEST_SCREEN_WIDTH_DP_UNDEFINED, config.smallestScreenWidthDp); + } + private void writeToProto(File f, Configuration config) throws Exception { final AtomicFile af = new AtomicFile(f); FileOutputStream fos = af.startWrite(); diff --git a/media/java/android/media/IMediaRouter2Client.aidl b/media/java/android/media/IMediaRouter2Client.aidl index 26184af699db..72c33f994349 100644 --- a/media/java/android/media/IMediaRouter2Client.aidl +++ b/media/java/android/media/IMediaRouter2Client.aidl @@ -16,12 +16,14 @@ package android.media; -import android.media.MediaRoute2ProviderInfo; +import android.media.MediaRoute2Info; /** * @hide */ oneway interface IMediaRouter2Client { void notifyRestoreRoute(); - void notifyProviderInfosUpdated(in List<MediaRoute2ProviderInfo> providers); + void notifyRoutesAdded(in List<MediaRoute2Info> routes); + void notifyRoutesRemoved(in List<MediaRoute2Info> routes); + void notifyRoutesChanged(in List<MediaRoute2Info> routes); } diff --git a/media/java/android/media/MediaRoute2Info.java b/media/java/android/media/MediaRoute2Info.java index 59bd96ffb1bd..457ccb788d0d 100644 --- a/media/java/android/media/MediaRoute2Info.java +++ b/media/java/android/media/MediaRoute2Info.java @@ -314,7 +314,7 @@ public final class MediaRoute2Info implements Parcelable { List<String> mSupportedCategories; int mVolume; int mVolumeMax; - int mVolumeHandling; + int mVolumeHandling = PLAYBACK_VOLUME_FIXED; Bundle mExtras; public Builder(@NonNull String id, @NonNull String name) { diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java index b52e2d647e5a..ce18ab3b3c83 100644 --- a/media/java/android/media/MediaRouter2.java +++ b/media/java/android/media/MediaRouter2.java @@ -33,7 +33,9 @@ import com.android.internal.annotations.GuardedBy; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.Executor; @@ -51,23 +53,23 @@ public class MediaRouter2 { @GuardedBy("sLock") private static MediaRouter2 sInstance; - private Context mContext; + private final Context mContext; private final IMediaRouterService mMediaRouterService; private final CopyOnWriteArrayList<CallbackRecord> mCallbackRecords = new CopyOnWriteArrayList<>(); - @GuardedBy("sLock") - private List<String> mControlCategories = Collections.emptyList(); - @GuardedBy("sLock") - private Client mClient; private final String mPackageName; - final Handler mHandler; + private final Map<String, MediaRoute2Info> mRoutes = new HashMap<>(); - List<MediaRoute2ProviderInfo> mProviders = Collections.emptyList(); - volatile List<MediaRoute2Info> mRoutes = Collections.emptyList(); + private volatile List<String> mControlCategories = Collections.emptyList(); - MediaRoute2Info mSelectedRoute; + private MediaRoute2Info mSelectedRoute; + @GuardedBy("sLock") + private Client mClient; + + final Handler mHandler; + volatile List<MediaRoute2Info> mFilteredRoutes = Collections.emptyList(); /** * Gets an instance of the media router associated with the context. @@ -137,6 +139,7 @@ public class MediaRouter2 { } } } + //TODO: Is it thread-safe? record.notifyRoutes(); //TODO: Update discovery request here. @@ -181,31 +184,22 @@ public class MediaRouter2 { public void setControlCategories(@NonNull Collection<String> controlCategories) { Objects.requireNonNull(controlCategories, "control categories must not be null"); - Client client; - List<String> newControlCategories = new ArrayList<>(controlCategories); - synchronized (sLock) { - mControlCategories = newControlCategories; - client = mClient; - } - if (client != null) { - try { - mMediaRouterService.setControlCategories2(client, newControlCategories); - } catch (RemoteException ex) { - Log.e(TAG, "Unable to set control categories.", ex); - } - } - mHandler.sendMessage(obtainMessage(MediaRouter2::refreshAndNotifyRoutes, this)); + // To ensure invoking callbacks correctly according to control categories + mHandler.sendMessage(obtainMessage(MediaRouter2::setControlCategoriesOnHandler, + MediaRouter2.this, new ArrayList<>(controlCategories))); } + /** - * Gets the list of {@link MediaRoute2Info routes} currently known to the media router. + * Gets the unmodifiable list of {@link MediaRoute2Info routes} currently + * known to the media router. * * @return the list of routes that support at least one of the control categories set by * the application */ @NonNull public List<MediaRoute2Info> getRoutes() { - return mRoutes; + return mFilteredRoutes; } /** @@ -326,77 +320,121 @@ public class MediaRouter2 { return -1; } - void onProviderInfosUpdated(List<MediaRoute2ProviderInfo> providers) { - if (providers == null) { - Log.w(TAG, "Providers info is null."); - return; - } - - mProviders = providers; - refreshAndNotifyRoutes(); - } - - void refreshAndNotifyRoutes() { - ArrayList<MediaRoute2Info> routes = new ArrayList<>(); + private void setControlCategoriesOnHandler(List<String> newControlCategories) { + List<String> prevControlCategories = mControlCategories; + List<MediaRoute2Info> addedRoutes = new ArrayList<>(); + List<MediaRoute2Info> removedRoutes = new ArrayList<>(); + List<MediaRoute2Info> filteredRoutes = new ArrayList<>(); - List<String> controlCategories; + mControlCategories = newControlCategories; + Client client; synchronized (sLock) { - controlCategories = mControlCategories; + client = mClient; + } + if (client != null) { + try { + mMediaRouterService.setControlCategories2(client, mControlCategories); + } catch (RemoteException ex) { + Log.e(TAG, "Unable to set control categories.", ex); + } } - for (MediaRoute2ProviderInfo provider : mProviders) { - updateProvider(provider, controlCategories, routes); + for (MediaRoute2Info route : mRoutes.values()) { + boolean preSupported = route.supportsControlCategory(prevControlCategories); + boolean postSupported = route.supportsControlCategory(newControlCategories); + if (postSupported) { + filteredRoutes.add(route); + } + if (preSupported == postSupported) { + continue; + } + if (preSupported) { + removedRoutes.add(route); + } else { + addedRoutes.add(route); + } } + mFilteredRoutes = Collections.unmodifiableList(filteredRoutes); - //TODO: Can orders be changed? - if (!Objects.equals(mRoutes, routes)) { - mRoutes = Collections.unmodifiableList(routes); - notifyRouteListChanged(mRoutes); + if (removedRoutes.size() > 0) { + notifyRoutesRemoved(removedRoutes); + } + if (addedRoutes.size() > 0) { + notifyRoutesAdded(addedRoutes); } } - void updateProvider(MediaRoute2ProviderInfo provider, List<String> controlCategories, - List<MediaRoute2Info> outRoutes) { - if (provider == null || !provider.isValid()) { - Log.w(TAG, "Ignoring invalid provider : " + provider); - return; + void addRoutesOnHandler(List<MediaRoute2Info> routes) { + List<MediaRoute2Info> addedRoutes = new ArrayList<>(); + for (MediaRoute2Info route : routes) { + mRoutes.put(route.getUniqueId(), route); + if (route.supportsControlCategory(mControlCategories)) { + addedRoutes.add(route); + } } + if (addedRoutes.size() > 0) { + refreshFilteredRoutes(); + notifyRoutesAdded(addedRoutes); + } + } - final Collection<MediaRoute2Info> routes = provider.getRoutes(); + void removeRoutesOnHandler(List<MediaRoute2Info> routes) { + List<MediaRoute2Info> removedRoutes = new ArrayList<>(); for (MediaRoute2Info route : routes) { - if (!route.isValid()) { - Log.w(TAG, "Ignoring invalid route : " + route); - continue; + mRoutes.remove(route.getUniqueId()); + if (route.supportsControlCategory(mControlCategories)) { + removedRoutes.add(route); } - if (!route.supportsControlCategory(controlCategories)) { - continue; + } + if (removedRoutes.size() > 0) { + refreshFilteredRoutes(); + notifyRoutesRemoved(removedRoutes); + } + } + + void changeRoutesOnHandler(List<MediaRoute2Info> routes) { + List<MediaRoute2Info> changedRoutes = new ArrayList<>(); + for (MediaRoute2Info route : routes) { + mRoutes.put(route.getUniqueId(), route); + if (route.supportsControlCategory(mControlCategories)) { + changedRoutes.add(route); } - MediaRoute2Info preRoute = findRouteById(route.getId()); - if (!route.equals(preRoute)) { - notifyRouteChanged(route); + } + if (changedRoutes.size() > 0) { + refreshFilteredRoutes(); + notifyRoutesChanged(changedRoutes); + } + } + + private void refreshFilteredRoutes() { + List<MediaRoute2Info> filteredRoutes = new ArrayList<>(); + + for (MediaRoute2Info route : mRoutes.values()) { + if (route.supportsControlCategory(mControlCategories)) { + filteredRoutes.add(route); } - outRoutes.add(route); } + mFilteredRoutes = Collections.unmodifiableList(filteredRoutes); } - MediaRoute2Info findRouteById(String id) { - for (MediaRoute2Info route : mRoutes) { - if (route.getId().equals(id)) return route; + private void notifyRoutesAdded(List<MediaRoute2Info> routes) { + for (CallbackRecord record: mCallbackRecords) { + record.mExecutor.execute( + () -> record.mCallback.onRoutesAdded(routes)); } - return null; } - void notifyRouteListChanged(List<MediaRoute2Info> routes) { + private void notifyRoutesRemoved(List<MediaRoute2Info> routes) { for (CallbackRecord record: mCallbackRecords) { record.mExecutor.execute( - () -> record.mCallback.onRoutesChanged(routes)); + () -> record.mCallback.onRoutesRemoved(routes)); } } - void notifyRouteChanged(MediaRoute2Info route) { + private void notifyRoutesChanged(List<MediaRoute2Info> routes) { for (CallbackRecord record: mCallbackRecords) { record.mExecutor.execute( - () -> record.mCallback.onRouteChanged(route)); + () -> record.mCallback.onRoutesChanged(routes)); } } @@ -405,23 +443,22 @@ public class MediaRouter2 { */ public static class Callback { //TODO: clean up these callbacks - /** - * Called when a route is added. - */ - public void onRouteAdded(MediaRoute2Info routeInfo) {} /** - * Called when a route is changed. + * Called when routes are added. + * @param routes the list of routes that have been added. It's never empty. */ - public void onRouteChanged(MediaRoute2Info routeInfo) {} + public void onRoutesAdded(@NonNull List<MediaRoute2Info> routes) {} /** - * Called when a route is removed. + * Called when routes are removed. + * @param routes the list of routes that have been removed. It's never empty. */ - public void onRouteRemoved(MediaRoute2Info routeInfo) {} + public void onRoutesRemoved(@NonNull List<MediaRoute2Info> routes) {} /** - * Called when the list of routes is changed. + * Called when routes are changed. + * @param routes the list of routes that have been changed. It's never empty. */ public void onRoutesChanged(@NonNull List<MediaRoute2Info> routes) {} } @@ -436,11 +473,10 @@ public class MediaRouter2 { } void notifyRoutes() { - final List<MediaRoute2Info> routes = mRoutes; + final List<MediaRoute2Info> routes = mFilteredRoutes; // notify only when bound to media router service. - //TODO: Correct the condition when control category, default route, .. are finalized. if (routes.size() > 0) { - mExecutor.execute(() -> mCallback.onRoutesChanged(routes)); + mExecutor.execute(() -> mCallback.onRoutesAdded(routes)); } } } @@ -450,9 +486,21 @@ public class MediaRouter2 { public void notifyRestoreRoute() throws RemoteException {} @Override - public void notifyProviderInfosUpdated(List<MediaRoute2ProviderInfo> info) { - mHandler.sendMessage(obtainMessage(MediaRouter2::onProviderInfosUpdated, - MediaRouter2.this, info)); + public void notifyRoutesAdded(List<MediaRoute2Info> routes) { + mHandler.sendMessage(obtainMessage(MediaRouter2::addRoutesOnHandler, + MediaRouter2.this, routes)); + } + + @Override + public void notifyRoutesRemoved(List<MediaRoute2Info> routes) { + mHandler.sendMessage(obtainMessage(MediaRouter2::removeRoutesOnHandler, + MediaRouter2.this, routes)); + } + + @Override + public void notifyRoutesChanged(List<MediaRoute2Info> routes) { + mHandler.sendMessage(obtainMessage(MediaRouter2::changeRoutesOnHandler, + MediaRouter2.this, routes)); } } } diff --git a/media/java/android/media/MediaRouter2Manager.java b/media/java/android/media/MediaRouter2Manager.java index 0d7b6ff0ea91..7e848a0bdf90 100644 --- a/media/java/android/media/MediaRouter2Manager.java +++ b/media/java/android/media/MediaRouter2Manager.java @@ -67,7 +67,7 @@ public class MediaRouter2Manager { @NonNull List<MediaRoute2Info> mRoutes = Collections.emptyList(); @NonNull - ConcurrentMap<String, List<String>> mControlCategoryMap = new ConcurrentHashMap<>(); + final ConcurrentMap<String, List<String>> mControlCategoryMap = new ConcurrentHashMap<>(); /** * Gets an instance of media router manager that controls media route of other applications. @@ -427,6 +427,8 @@ public class MediaRouter2Manager { * A client may refresh available routes for each application. */ public void onRoutesChanged(@NonNull List<MediaRoute2Info> routes) {} + + //TODO: add onControlCategoriesChanged to notify available routes are changed } final class CallbackRecord { diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java index ca43d04573f3..acf899881600 100644 --- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java +++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java @@ -22,6 +22,7 @@ import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.timeout; @@ -272,29 +273,28 @@ public class MediaRouterManagerTest { @Test public void testControlVolumeWithRouter() throws Exception { - MediaRouter2.Callback mockCallback = mock(MediaRouter2.Callback.class); - Map<String, MediaRoute2Info> routes = waitAndGetRoutes(CONTROL_CATEGORIES_ALL); - mRouter2.registerCallback(mExecutor, mockCallback); MediaRoute2Info volRoute = routes.get(ROUTE_ID_VARIABLE_VOLUME); int originalVolume = volRoute.getVolume(); int deltaVolume = (originalVolume == volRoute.getVolumeMax() ? -1 : 1); - int targetVolume = originalVolume + deltaVolume; - - mRouter2.requestSetVolume(volRoute, targetVolume); - verify(mockCallback, timeout(TIMEOUT_MS).atLeastOnce()) - .onRouteChanged(argThat(route -> - route.getId().equals(volRoute.getId()) - && route.getVolume() == targetVolume)); - - mRouter2.requestUpdateVolume(volRoute, -deltaVolume); - verify(mockCallback, timeout(TIMEOUT_MS).atLeastOnce()) - .onRouteChanged(argThat(route -> - route.getId().equals(volRoute.getId()) - && route.getVolume() == originalVolume)); - mRouter2.unregisterCallback(mockCallback); + CountDownLatch latch1 = new CountDownLatch(1); + MediaRouter2.Callback callback1 = + createVolumeChangeCallback(ROUTE_ID_VARIABLE_VOLUME, + originalVolume + deltaVolume, latch1); + mRouter2.registerCallback(mExecutor, callback1); + mRouter2.requestUpdateVolume(volRoute, deltaVolume); + assertTrue(latch1.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); + mRouter2.unregisterCallback(callback1); + + CountDownLatch latch2 = new CountDownLatch(1); + MediaRouter2.Callback callback2 = + createVolumeChangeCallback(ROUTE_ID_VARIABLE_VOLUME, originalVolume, latch2); + mRouter2.registerCallback(mExecutor, callback2); + mRouter2.requestSetVolume(volRoute, originalVolume); + assertTrue(latch1.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); + mRouter2.unregisterCallback(callback1); } @Test @@ -312,13 +312,13 @@ public class MediaRouterManagerTest { int targetVolume = originalVolume + deltaVolume; mManager.requestSetVolume(volRoute, targetVolume); - verify(mockCallback, timeout(TIMEOUT_MS).atLeastOnce()) + verify(managerCallback, timeout(TIMEOUT_MS).atLeastOnce()) .onRouteChanged(argThat(route -> route.getId().equals(volRoute.getId()) && route.getVolume() == targetVolume)); mManager.requestUpdateVolume(volRoute, -deltaVolume); - verify(mockCallback, timeout(TIMEOUT_MS).atLeastOnce()) + verify(managerCallback, timeout(TIMEOUT_MS).atLeastOnce()) .onRouteChanged(argThat(route -> route.getId().equals(volRoute.getId()) && route.getVolume() == originalVolume)); @@ -347,14 +347,14 @@ public class MediaRouterManagerTest { CountDownLatch latch = new CountDownLatch(1); MediaRouter2.Callback callback = new MediaRouter2.Callback() { @Override - public void onRoutesChanged(List<MediaRoute2Info> routes) { - if (routes.size() > 0) latch.countDown(); + public void onRoutesAdded(List<MediaRoute2Info> added) { + if (added.size() > 0) latch.countDown(); } }; mRouter2.setControlCategories(controlCategories); mRouter2.registerCallback(mExecutor, callback); try { - latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS); + assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); return createRouteMap(mRouter2.getRoutes()); } finally { mRouter2.unregisterCallback(callback); @@ -370,14 +370,18 @@ public class MediaRouterManagerTest { MediaRouter2Manager.Callback managerCallback = new MediaRouter2Manager.Callback() { @Override public void onRoutesChanged(List<MediaRoute2Info> routes) { - if (routes.size() > 0) latch.countDown(); + if (routes.size() > 0) { + latch.countDown(); + } } }; mManager.registerCallback(mExecutor, managerCallback); mRouter2.setControlCategories(controlCategories); mRouter2.registerCallback(mExecutor, routerCallback); try { - latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS); + assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); + //TODO: currently this returns empty list occasionally. + //Maybe due to control category is not set yet return createRouteMap(mManager.getAvailableRoutes(mPackageName)); } finally { mRouter2.unregisterCallback(routerCallback); @@ -385,6 +389,20 @@ public class MediaRouterManagerTest { } } + MediaRouter2.Callback createVolumeChangeCallback(String routeId, + int targetVolume, CountDownLatch latch) { + MediaRouter2.Callback callback = new MediaRouter2.Callback() { + @Override + public void onRoutesChanged(List<MediaRoute2Info> changed) { + MediaRoute2Info volRoute = createRouteMap(changed).get(routeId); + if (volRoute != null && volRoute.getVolume() == targetVolume) { + latch.countDown(); + } + } + }; + return callback; + } + // Helper for getting routes easily static Map<String, MediaRoute2Info> createRouteMap(List<MediaRoute2Info> routes) { Map<String, MediaRoute2Info> routeMap = new HashMap<>(); diff --git a/packages/CarSystemUI/src/com/android/systemui/CarComponentBinder.java b/packages/CarSystemUI/src/com/android/systemui/CarComponentBinder.java index c40eda9fb303..f11eff851aa3 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarComponentBinder.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarComponentBinder.java @@ -17,6 +17,7 @@ package com.android.systemui; import com.android.systemui.dagger.DefaultActivityBinder; +import com.android.systemui.dagger.DefaultBroadcastReceiverBinder; import com.android.systemui.dagger.DefaultServiceBinder; import dagger.Module; @@ -26,6 +27,7 @@ import dagger.Module; */ @Module(includes = { DefaultActivityBinder.class, + DefaultBroadcastReceiverBinder.class, DefaultServiceBinder.class, CarSystemUIBinder.class}) public class CarComponentBinder { diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIBinder.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIBinder.java index 57e7fb374cf5..b2859f6e719e 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIBinder.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIBinder.java @@ -42,6 +42,7 @@ import com.android.systemui.plugins.FalsingManager; import com.android.systemui.power.PowerUI; import com.android.systemui.recents.Recents; import com.android.systemui.recents.RecentsModule; +import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.NavigationBarController; @@ -275,6 +276,7 @@ public abstract class CarSystemUIBinder { PowerManager powerManager, DozeScrimController dozeScrimController, CommandQueue commandQueue, + PluginManager pluginManager, CarNavigationBarController carNavigationBarController) { return new CarStatusBar( context, @@ -341,6 +343,7 @@ public abstract class CarSystemUIBinder { powerManager, dozeScrimController, commandQueue, + pluginManager, carNavigationBarController); } } diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java index a463d3780265..7ab2036251db 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java @@ -80,6 +80,7 @@ import com.android.systemui.navigationbar.car.CarNavigationBarView; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.qs.QS; import com.android.systemui.qs.car.CarQSFragment; +import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.FlingAnimationUtils; @@ -299,6 +300,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt PowerManager powerManager, DozeScrimController dozeScrimController, CommandQueue commandQueue, + PluginManager pluginManager, + /* Car Settings injected components. */ CarNavigationBarController carNavigationBarController) { super( @@ -366,7 +369,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt dozeServiceHost, powerManager, dozeScrimController, - commandQueue); + commandQueue, + pluginManager); mScrimController = scrimController; mCarNavigationBarController = carNavigationBarController; } diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml index f25b5eb294e0..843967de46b1 100644 --- a/packages/SettingsLib/res/values-af/strings.xml +++ b/packages/SettingsLib/res/values-af/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Middelmatig"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Vinnig"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Baie vinnig"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ontkoppel"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Ontkoppel tans…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Totdat jy dit afskakel"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Sopas"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Hierdie toestel"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index 6332c848c5a6..871a7fc5f1a0 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"መካከለኛ"</string> <string name="speed_label_fast" msgid="7715732164050975057">"ፈጣን"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"እጅግ በጣም ፈጣን"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"ተለያይቷል"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"በመለያየት ላይ..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"እስኪያጠፉት ድረስ"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ልክ አሁን"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ይህ መሣሪያ"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index 8c72527604a4..9ee6322666b8 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"متوسطة"</string> <string name="speed_label_fast" msgid="7715732164050975057">"سريعة"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"سريعة جدًا"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"غير متصل"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"جارٍ قطع الاتصال..."</string> @@ -470,4 +472,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"إلى أن توقف الوضع يدويًا"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"للتو"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"هذا الجهاز"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml index a7ea1e020f03..9dcd8ba06f41 100644 --- a/packages/SettingsLib/res/values-as/strings.xml +++ b/packages/SettingsLib/res/values-as/strings.xml @@ -43,8 +43,7 @@ <string name="available_via_passpoint" msgid="1617440946846329613">"%1$sৰ মাধ্যমেৰে উপলব্ধ"</string> <string name="tap_to_sign_up" msgid="6449724763052579434">"ছাইন আপ কৰিবলৈ টিপক"</string> <string name="wifi_connected_no_internet" msgid="8202906332837777829">"সংযোজিত, ইণ্টাৰনেট নাই"</string> - <!-- no translation found for private_dns_broken (7356676011023412490) --> - <skip /> + <string name="private_dns_broken" msgid="7356676011023412490">"ব্যক্তিগত DNS ছাৰ্ভাৰ এক্সেছ কৰিব নোৱাৰি"</string> <string name="wifi_limited_connection" msgid="7717855024753201527">"ইণ্টাৰনেট সংযোগ সীমিত"</string> <string name="wifi_status_no_internet" msgid="5784710974669608361">"ইণ্টাৰনেট সংযোগ নাই"</string> <string name="wifi_status_sign_in_required" msgid="123517180404752756">"ছাইন ইন কৰা দৰকাৰী"</string> @@ -62,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"মধ্যমীয়া"</string> <string name="speed_label_fast" msgid="7715732164050975057">"দ্ৰুত"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"অতি দ্ৰুত"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"সংযোগ বিচ্ছিন্ন কৰা হ’ল"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"সংযোগ বিচ্ছিন্ন কৰি থকা হৈছে…"</string> @@ -467,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"আপুনি অফ নকৰা পর্যন্ত"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"এই মাত্ৰ"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"এই ডিভাইচটো"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml index cb7db78fd018..fda96b4d2851 100644 --- a/packages/SettingsLib/res/values-az/strings.xml +++ b/packages/SettingsLib/res/values-az/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Orta"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Sürətli"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Çox Sürətli"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ayrıldı"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Ayrılır..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Deaktiv edənə qədər"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"İndicə"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Bu cihaz"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index 75feb326cd77..4dfbd8e1d6c4 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Srednja"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Brza"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Veoma brza"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Veza je prekinuta"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Prekidanje veze..."</string> @@ -467,4 +469,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Dok ne isključite"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Upravo"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ovaj uređaj"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index 677aa24ac43d..577c1ebf070d 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Сярэдняя"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Хуткая"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Вельмі хуткая"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Адключана"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Адключэнне..."</string> @@ -468,4 +470,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Пакуль не выключыце"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Толькі што"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Гэта прылада"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml index 162042209c46..1007b38ef3ec 100644 --- a/packages/SettingsLib/res/values-bg/strings.xml +++ b/packages/SettingsLib/res/values-bg/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Средна"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Бърза"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Много бърза"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Изкл."</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Изключва се..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"До изключване"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Току-що"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Това устройство"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index b1e37a66fa82..a92e8e421c33 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"মাঝারি"</string> <string name="speed_label_fast" msgid="7715732164050975057">"দ্রুত"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"খুব দ্রুত"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"ডিসকানেক্ট করা হয়েছে"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"ডিসকানেক্ট হচ্ছে..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"যতক্ষণ না আপনি বন্ধ করছেন"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"এখনই"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"এই ডিভাইস"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml index 911a8315523f..af7219d107f7 100644 --- a/packages/SettingsLib/res/values-bs/strings.xml +++ b/packages/SettingsLib/res/values-bs/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Srednja brzina"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Brzo"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Veoma brzo"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Isključen"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Prekidanje veze…"</string> @@ -467,4 +469,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Dok ne isključite"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Upravo"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ovaj uređaj"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index 58c2b670630d..ad6a1311b9c9 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Mitjana"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Ràpida"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Molt ràpida"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconnectat"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"S\'està desconnectant..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Fins que no ho desactivis"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Ara mateix"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Aquest dispositiu"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml index 3c3d5b811d26..577200c5076c 100644 --- a/packages/SettingsLib/res/values-cs/strings.xml +++ b/packages/SettingsLib/res/values-cs/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Střední"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Rychlá"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Velmi rychlá"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Odpojeno"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Odpojování..."</string> @@ -468,4 +470,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Dokud tuto funkci nevypnete"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Právě teď"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Toto zařízení"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index bf5d6cfd472d..43bd1f156456 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Middel"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Hurtig"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Meget hurtig"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> – <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Afbrudt"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Afbryder ..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Indtil du deaktiverer"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Lige nu"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Denne enhed"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index a6dbd5ae215a..8f6d12337df8 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Mittel"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Schnell"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Sehr schnell"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> – <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Nicht verbunden"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Verbindung wird getrennt..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Bis zur Deaktivierung"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"gerade eben"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Dieses Gerät"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index fdba74a4dfd8..fcdc4102985d 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Μέτρια"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Γρήγορη"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Πολύ γρήγορη"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Αποσυνδέθηκε"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Αποσύνδεση..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Μέχρι την απενεργοποίηση"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Μόλις τώρα"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Αυτή η συσκευή"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index 581adf86d062..65b19eeb5787 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Medium"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Fast"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Very fast"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Disconnected"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Disconnecting…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Until you turn off"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"This device"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml index 581adf86d062..65b19eeb5787 100644 --- a/packages/SettingsLib/res/values-en-rCA/strings.xml +++ b/packages/SettingsLib/res/values-en-rCA/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Medium"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Fast"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Very fast"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Disconnected"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Disconnecting…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Until you turn off"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"This device"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index 581adf86d062..65b19eeb5787 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Medium"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Fast"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Very fast"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Disconnected"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Disconnecting…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Until you turn off"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"This device"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index 581adf86d062..65b19eeb5787 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Medium"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Fast"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Very fast"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Disconnected"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Disconnecting…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Until you turn off"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"This device"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml index e75d7bc19bbf..38430851cf34 100644 --- a/packages/SettingsLib/res/values-en-rXC/strings.xml +++ b/packages/SettingsLib/res/values-en-rXC/strings.xml @@ -61,6 +61,7 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Medium"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Fast"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Very Fast"</string> + <string name="wifi_passpoint_expired" msgid="1711402866023391443">"Expired"</string> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Disconnected"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Disconnecting…"</string> @@ -466,4 +467,5 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Until you turn off"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"This device"</string> + <string name="profile_connect_timeout_subtext" msgid="2401801610868184557">"Problem connecting. Turn device off & back on"</string> </resources> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index 97cce55c11d8..2e1a132c3af6 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Media"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Rápida"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Muy rápida"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectado"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Hasta que lo desactives"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Recién"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index 7ba1a9435be2..31ac2a1f74ac 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Media"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Rápida"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Muy rápida"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectado"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Hasta que se desactive"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Justo ahora"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml index 0e987528d73a..983132a3b7d3 100644 --- a/packages/SettingsLib/res/values-et/strings.xml +++ b/packages/SettingsLib/res/values-et/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Keskmine"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Kiire"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Väga kiire"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ühendus katkestatud"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Ühenduse katkestamine ..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Kuni välja lülitate"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Äsja"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"See seade"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index 872e9a56ed87..727c6569afdd 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Tartekoa"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Bizkorra"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Oso bizkorra"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Deskonektatuta"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Deskonektatzen…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Zuk desaktibatu arte"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Oraintxe"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Gailu hau"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index 6e281fe05486..f93af2a50116 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"متوسط"</string> <string name="speed_label_fast" msgid="7715732164050975057">"سریع"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"خیلی سریع"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"اتصال قطع شد"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"در حال قطع اتصال..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"تا زمانیکه آن را خاموش کنید"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"هماکنون"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"این دستگاه"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index 8c3630a08c9b..855082604143 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Kohtuullinen"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Nopea"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Hyvin nopea"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Yhteys katkaistu"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Katkaistaan yhteyttä..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Kunnes poistat sen käytöstä"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Äsken"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Tämä laite"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index 6c5834ae793a..5c84be718832 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Moyenne"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Élevée"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Très rapide"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> : <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Déconnecté"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Déconnexion…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Jusqu\'à la désactivation"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"À l\'instant"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Cet appareil"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index 508556ece88a..a6711c7fcbf9 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Moyenne"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Élevée"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Très élevée"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Déconnecté"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Déconnexion…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Jusqu\'à la désactivation"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"À l\'instant"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Cet appareil"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index 1a3ae3d601e1..c70c453aedca 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Media"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Rápida"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Moi rápida"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectado"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Ata a desactivación"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Agora mesmo"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index b3f518541c71..34a8355a0781 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"મધ્યમ"</string> <string name="speed_label_fast" msgid="7715732164050975057">"ઝડપી"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"ખૂબ ઝડપી"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"ડિસ્કનેક્ટ કર્યું"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"ડિસ્કનેક્ટ થઈ રહ્યું છે..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"તમે બંધ ન કરો ત્યાં સુધી"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"હમણાં જ"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"આ ડિવાઇસ"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index 454773ca3538..758ce2704eda 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"मध्यम"</string> <string name="speed_label_fast" msgid="7715732164050975057">"तेज़"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"अत्यधिक तेज़"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"डिसकनेक्ट किया गया"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"डिस्कनेक्ट हो रहा है..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"जब तक आप इसे बंद नहीं करते"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"अभी-अभी"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"यह डिवाइस"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml index 0ec154baa0e9..2f89a66f8845 100644 --- a/packages/SettingsLib/res/values-hr/strings.xml +++ b/packages/SettingsLib/res/values-hr/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Srednje"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Brzo"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Vrlo brzo"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Niste povezani"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Isključivanje…"</string> @@ -467,4 +469,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Dok ne isključite"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Upravo sad"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ovaj uređaj"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index 4a0af7d27ab5..8f6e77615bc6 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Közepes"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Gyors"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Nagyon gyors"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Szétkapcsolva"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Szétkapcsolás..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Kikapcsolásig"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Az imént"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ez az eszköz"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index cc0ecb8125b6..3791b94c464c 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Միջին"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Արագ"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Շատ արագ"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Անջատված է"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Անջատվում է..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Մինչև չանջատեք"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Հենց նոր"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Այս սարքը"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index 0733c1f76a66..1a8248476eef 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Sedang"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Cepat"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Sangat Cepat"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Sambungan terputus"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Memutus sambungan..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Sampai Anda menonaktifkannya"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Baru saja"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Perangkat ini"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml index 28ed8fc6224a..c75e12b875a6 100644 --- a/packages/SettingsLib/res/values-is/strings.xml +++ b/packages/SettingsLib/res/values-is/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Miðlungshratt"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Hratt"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Mjög hratt"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Aftengt"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Aftengist…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Þar til þú slekkur"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Rétt í þessu"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Þetta tæki"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index b0569b0f96f2..b00d06db49b8 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Media"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Veloce"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Molto veloce"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Disconnesso"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Disconnessione..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Fino alla disattivazione"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Adesso"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Questo dispositivo"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index f7d4fcd317ad..8aeb9af8f58f 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -43,8 +43,7 @@ <string name="available_via_passpoint" msgid="1617440946846329613">"זמינה דרך %1$s"</string> <string name="tap_to_sign_up" msgid="6449724763052579434">"יש להקיש כדי להירשם"</string> <string name="wifi_connected_no_internet" msgid="8202906332837777829">"מחובר. אין אינטרנט"</string> - <!-- no translation found for private_dns_broken (7356676011023412490) --> - <skip /> + <string name="private_dns_broken" msgid="7356676011023412490">"לא ניתן לגשת לשרת DNS הפרטי"</string> <string name="wifi_limited_connection" msgid="7717855024753201527">"חיבור מוגבל"</string> <string name="wifi_status_no_internet" msgid="5784710974669608361">"אין אינטרנט"</string> <string name="wifi_status_sign_in_required" msgid="123517180404752756">"נדרשת כניסה"</string> @@ -62,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"בינונית"</string> <string name="speed_label_fast" msgid="7715732164050975057">"מהירה"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"מהירה מאוד"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"מנותק"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"מתנתק..."</string> @@ -469,4 +470,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"עד הכיבוי"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"הרגע"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"המכשיר הזה"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml index 4d5c86cafe3a..bd17074605e2 100644 --- a/packages/SettingsLib/res/values-ja/strings.xml +++ b/packages/SettingsLib/res/values-ja/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"普通"</string> <string name="speed_label_fast" msgid="7715732164050975057">"速い"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"非常に速い"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"切断"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"切断中..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"OFF にするまで"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"たった今"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"このデバイス"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml index 20342bc011cd..b1fa87fb2d90 100644 --- a/packages/SettingsLib/res/values-ka/strings.xml +++ b/packages/SettingsLib/res/values-ka/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"საშუალო"</string> <string name="speed_label_fast" msgid="7715732164050975057">"სწრაფი"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"ძალიან სწრაფი"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"კავშირი გაწყვეტილია"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"მიმდინარეობს გათიშვა…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"გამორთვამდე"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ახლახან"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ეს მოწყობილობა"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index 7b6d29eb43ad..e4dc6efc45b1 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Орташа"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Жылдам"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Өте жылдам"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ажыратылған"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Ажыратылуда…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Өшірілгенге дейін"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Дәл қазір"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Осы құрылғы"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index 115be8e07f59..5ca7fe7a97f9 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"មធ្យម"</string> <string name="speed_label_fast" msgid="7715732164050975057">"លឿន"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"លឿនណាស់"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"បានផ្ដាច់"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"កំពុងផ្ដាច់…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"រហូតទាល់តែអ្នកបិទ"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"អម្បាញ់មិញ"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ឧបករណ៍នេះ"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml index ac8bfb1654cb..cbdb62c412a6 100644 --- a/packages/SettingsLib/res/values-kn/strings.xml +++ b/packages/SettingsLib/res/values-kn/strings.xml @@ -43,8 +43,7 @@ <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ಮೂಲಕ ಲಭ್ಯವಿದೆ"</string> <string name="tap_to_sign_up" msgid="6449724763052579434">"ಸೈನ್ ಅಪ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string> <string name="wifi_connected_no_internet" msgid="8202906332837777829">"ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ, ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string> - <!-- no translation found for private_dns_broken (7356676011023412490) --> - <skip /> + <string name="private_dns_broken" msgid="7356676011023412490">"ಖಾಸಗಿ DNS ಸರ್ವರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> <string name="wifi_limited_connection" msgid="7717855024753201527">"ಸೀಮಿತ ಸಂಪರ್ಕ"</string> <string name="wifi_status_no_internet" msgid="5784710974669608361">"ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string> <string name="wifi_status_sign_in_required" msgid="123517180404752756">"ಸೈನ್ ಇನ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ"</string> @@ -62,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"ಮಧ್ಯಮ"</string> <string name="speed_label_fast" msgid="7715732164050975057">"ವೇಗ"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"ತುಂಬಾ ವೇಗವಾಗಿದೆ"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ..."</string> @@ -467,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"ನೀವು ಆಫ್ ಮಾಡುವವರೆಗೆ"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ಇದೀಗ"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ಈ ಸಾಧನ"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index 4e543103fe60..9d4a947f8953 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"보통"</string> <string name="speed_label_fast" msgid="7715732164050975057">"빠름"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"매우 빠름"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"연결 끊김"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"연결을 끊는 중…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"사용 중지할 때까지"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"조금 전"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"이 기기"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index e891b5a902cb..46e002f935ab 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Орто"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Ылдам"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Абдан ылдам"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ажыратылган"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Ажыратылууда…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Бул функция өчүрүлгөнгө чейин"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Азыр эле"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ушул түзмөк"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index 406a42b2b041..981685e7cdc4 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"ປານກາງ"</string> <string name="speed_label_fast" msgid="7715732164050975057">"ໄວ"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"ໄວຫຼາຍ"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"ຕັດການເຊື່ອມຕໍ່ແລ້ວ"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"ກຳລັງຢຸດການເຊື່ອມຕໍ່..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"ຈົນກວ່າທ່ານຈະປິດ"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ຕອນນີ້"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ອຸປະກອນນີ້"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml index b305fd90d1cc..6d23090cd4e3 100644 --- a/packages/SettingsLib/res/values-lt/strings.xml +++ b/packages/SettingsLib/res/values-lt/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Vidutinis"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Greitas"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Labai greitas"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Atsijungęs (-usi)"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Atjungiama..."</string> @@ -468,4 +470,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Kol išjungsite"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Ką tik"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Šis įrenginys"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml index c9e2c1114556..76304e09b132 100644 --- a/packages/SettingsLib/res/values-lv/strings.xml +++ b/packages/SettingsLib/res/values-lv/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Vidējs"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Ātrs"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Ļoti ātrs"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Atvienots"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Notiek atvienošana..."</string> @@ -467,4 +469,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Līdz brīdim, kad izslēgsiet"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Tikko"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Šī ierīce"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index e06d414c2453..d0a284ad56a7 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Средна"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Брза"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Многу брза"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Исклучено"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Се исклучува..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Додека не го исклучите"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Неодамнешни"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Овој уред"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml index 36e632a917f5..b5649aaef0c2 100644 --- a/packages/SettingsLib/res/values-ml/strings.xml +++ b/packages/SettingsLib/res/values-ml/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"ഇടത്തരം"</string> <string name="speed_label_fast" msgid="7715732164050975057">"വേഗത്തിൽ"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"വളരെ വേഗത്തിൽ"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"വിച്ഛേദിച്ചു"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"വിച്ഛേദിക്കുന്നു..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"നിങ്ങൾ ഓഫാക്കുന്നത് വരെ"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ഇപ്പോൾ"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ഈ ഉപകരണം"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index 1a5a0af7bd5c..93911429398f 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Дунд"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Хурдан"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Маш хурдан"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Салгагдсан"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Салгаж байна…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Таныг унтраах хүртэл"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Дөнгөж сая"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Энэ төхөөрөмж"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index 751010759fd0..224aa118250e 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -43,8 +43,7 @@ <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s द्वारे उपलब्ध"</string> <string name="tap_to_sign_up" msgid="6449724763052579434">"साइन अप करण्यासाठी टॅप करा"</string> <string name="wifi_connected_no_internet" msgid="8202906332837777829">"कनेक्ट केले, इंटरनेट नाही"</string> - <!-- no translation found for private_dns_broken (7356676011023412490) --> - <skip /> + <string name="private_dns_broken" msgid="7356676011023412490">"खाजगी DNS सर्व्हर अॅक्सेस करू शकत नाही"</string> <string name="wifi_limited_connection" msgid="7717855024753201527">"मर्यादित कनेक्शन"</string> <string name="wifi_status_no_internet" msgid="5784710974669608361">"इंटरनेट नाही"</string> <string name="wifi_status_sign_in_required" msgid="123517180404752756">"साइन इन करणे आवश्यक आहे"</string> @@ -62,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"मध्यम"</string> <string name="speed_label_fast" msgid="7715732164050975057">"जलद"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"खूप जलद"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"डिस्कनेक्ट केले"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"डिस्कनेक्ट करत आहे..."</string> @@ -467,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"तुम्ही बंद करेपर्यंत"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"आत्ताच"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"हे डिव्हाइस"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml index 82bd697a6a52..1c88ba3ea94a 100644 --- a/packages/SettingsLib/res/values-ms/strings.xml +++ b/packages/SettingsLib/res/values-ms/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Sederhana"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Laju"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Sangat Laju"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Diputuskan sambungan"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Memutuskan sambungan..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Sehingga anda matikan"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Sebentar tadi"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Peranti ini"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml index 9636f0675dd4..d6a2b93a1d00 100644 --- a/packages/SettingsLib/res/values-my/strings.xml +++ b/packages/SettingsLib/res/values-my/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"အတော်အသင့်"</string> <string name="speed_label_fast" msgid="7715732164050975057">"မြန်"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"အလွန်မြန်"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"ချိတ်ဆက်မှုပြတ်တောက်သည်"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"အဆက်အသွယ်ဖြတ်တောက်သည်"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"သင်ပိတ်လိုက်သည် အထိ"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ယခုလေးတင်"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ဤစက်ပစ္စည်း"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml index 99af7c88598a..51d84a03fe78 100644 --- a/packages/SettingsLib/res/values-nb/strings.xml +++ b/packages/SettingsLib/res/values-nb/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Middels"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Rask"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Veldig rask"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Frakoblet"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Kobler fra…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Til du slår av"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Nå nettopp"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Denne enheten"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index cdf2c7d27134..b41b0c794eed 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"मध्यम"</string> <string name="speed_label_fast" msgid="7715732164050975057">"छिटो"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"धेरै छिटो"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"विच्छेदन गरियो"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"जडान हटाइँदै ..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"तपाईंले निष्क्रिय नपार्दासम्म"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"अहिले भर्खरै"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"यो यन्त्र"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index 709e98d5b2c7..70d652d89c36 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Gemiddeld"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Snel"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Zeer snel"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Verbinding verbroken"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Verbinding verbreken..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Totdat je uitschakelt"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Zojuist"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Dit apparaat"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml index abe01984e9ef..c4e0e3007adf 100644 --- a/packages/SettingsLib/res/values-or/strings.xml +++ b/packages/SettingsLib/res/values-or/strings.xml @@ -43,8 +43,7 @@ <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ମାଧ୍ୟମରେ ଉପଲବ୍ଧ"</string> <string name="tap_to_sign_up" msgid="6449724763052579434">"ସାଇନ୍ ଅପ୍ ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string> <string name="wifi_connected_no_internet" msgid="8202906332837777829">"ସଂଯୁକ୍ତ, ଇଣ୍ଟର୍ନେଟ୍ ନାହିଁ"</string> - <!-- no translation found for private_dns_broken (7356676011023412490) --> - <skip /> + <string name="private_dns_broken" msgid="7356676011023412490">"ବ୍ୟକ୍ତିଗତ DNS ସର୍ଭର୍ ଆକ୍ସେସ୍ କରିହେବ ନାହିଁ"</string> <string name="wifi_limited_connection" msgid="7717855024753201527">"ସୀମିତ ସଂଯୋଗ"</string> <string name="wifi_status_no_internet" msgid="5784710974669608361">"କୌଣସି ଇଣ୍ଟରନେଟ୍ ନାହିଁ"</string> <string name="wifi_status_sign_in_required" msgid="123517180404752756">"ସାଇନ୍-ଇନ୍ ଆବଶ୍ୟକ"</string> @@ -62,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"ମଧ୍ୟମ"</string> <string name="speed_label_fast" msgid="7715732164050975057">"ଦ୍ରୁତ"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"ଅତି ଦ୍ରୁତ"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"ବିଛିନ୍ନ ହେଲା"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"ବିଚ୍ଛିନ୍ନ କରୁଛି…"</string> @@ -467,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"ଆପଣ ବନ୍ଦ ନକରିବା ପର୍ଯ୍ୟନ୍ତ"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ଏହିକ୍ଷଣି"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ଏହି ଡିଭାଇସ୍"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index b372185be7f2..732b78a81f82 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"ਔਸਤ"</string> <string name="speed_label_fast" msgid="7715732164050975057">"ਤੇਜ਼"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"ਬਹੁਤ ਤੇਜ਼"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"ਡਿਸਕਨੈਕਟ ਕੀਤਾ"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"ਡਿਸਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਬੰਦ ਨਹੀਂ ਕਰਦੇ"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ਹੁਣੇ ਹੀ"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ਇਹ ਡੀਵਾਈਸ"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index e7a8f22b52a5..ce49b75ce319 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -43,8 +43,7 @@ <string name="available_via_passpoint" msgid="1617440946846329613">"Dostępne przez %1$s"</string> <string name="tap_to_sign_up" msgid="6449724763052579434">"Kliknij, by się zarejestrować"</string> <string name="wifi_connected_no_internet" msgid="8202906332837777829">"Połączono, brak internetu"</string> - <!-- no translation found for private_dns_broken (7356676011023412490) --> - <skip /> + <string name="private_dns_broken" msgid="7356676011023412490">"Brak dostępu do prywatnego serwera DNS"</string> <string name="wifi_limited_connection" msgid="7717855024753201527">"Ograniczone połączenie"</string> <string name="wifi_status_no_internet" msgid="5784710974669608361">"Brak internetu"</string> <string name="wifi_status_sign_in_required" msgid="123517180404752756">"Musisz się zalogować"</string> @@ -62,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Średnia"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Szybka"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Bardzo szybka"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Rozłączona"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Rozłączanie..."</string> @@ -469,4 +470,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Dopóki nie wyłączysz"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Przed chwilą"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"To urządzenie"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index 6e75fbaa9d3f..4b194ec2db9e 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Média"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Rápida"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Muito rápida"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectado"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Até você desativar"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Agora"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index 4ee0a17cec74..966ba3fa1d24 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Média"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Rápida"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Muito rápida"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desligado"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"A desligar..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Até ser desativado"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Agora mesmo"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index 6e75fbaa9d3f..4b194ec2db9e 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Média"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Rápida"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Muito rápida"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Desconectado"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Desconectando…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Até você desativar"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Agora"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml index c5725d3262d7..117962dbc4e7 100644 --- a/packages/SettingsLib/res/values-ro/strings.xml +++ b/packages/SettingsLib/res/values-ro/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Medie"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Rapidă"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Foarte rapidă"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Deconectat"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"În curs de deconectare..."</string> @@ -467,4 +469,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Până când dezactivați"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Chiar acum"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Acest dispozitiv"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index 6e98601fbcd9..fcbbed9ad09f 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Средняя"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Быстрая"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Очень быстрая"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Нет подключения"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Отключение..."</string> @@ -468,4 +470,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Пока вы не отключите"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Только что"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Это устройство"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml index 0f67a6517ccc..374e5c446698 100644 --- a/packages/SettingsLib/res/values-si/strings.xml +++ b/packages/SettingsLib/res/values-si/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"මධ්යම"</string> <string name="speed_label_fast" msgid="7715732164050975057">"වේගවත්"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"ඉතා වේගවත්"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"විසන්ධි වුණි"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"විසන්ධි වෙමින්…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"ඔබ ක්රියාවිරහිත කරන තුරු"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"මේ දැන්"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"මෙම උපාංගය"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index e4b48487688d..4a660c109ae4 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Stredná"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Vysoká"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Veľmi vysoká"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Odpojený"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Prebieha odpájanie..."</string> @@ -468,4 +470,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Dokiaľ túto funkciu nevypnete"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Teraz"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Toto zariadenie"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index 3e181c2cacb0..e806fae598aa 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Srednje hitra"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Hitra"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Zelo hitra"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Prekinjena povezava"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Prekinjanje povezave ..."</string> @@ -468,4 +470,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Dokler ne izklopite"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"pravkar"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ta naprava"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml index 53803022f388..8aa29174cb9f 100644 --- a/packages/SettingsLib/res/values-sq/strings.xml +++ b/packages/SettingsLib/res/values-sq/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Mesatare"</string> <string name="speed_label_fast" msgid="7715732164050975057">"E shpejtë"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Shumë e shpejtë"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Shkëputur"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Po shkëputet..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Deri sa ta çaktivizosh"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Pikërisht tani"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Kjo pajisje"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index d68c9e8a1f22..01c9b807e22f 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Средња"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Брза"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Веома брза"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Веза је прекинута"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Прекидање везе..."</string> @@ -467,4 +469,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Док не искључите"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Управо"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Овај уређај"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index 45841f0ee816..0f9abc9830cb 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Medelsnabb"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Snabb"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Mycket snabb"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Kopplas ifrån"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Kopplar ifrån…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Tills du inaktiverar funktionen"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Nyss"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Den här enheten"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index a8e73d75dad2..3ccf8a4a6aa9 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Wastani"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Haraka"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Haraka Sana"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Haijaunganishwa"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Inatenganisha..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Hadi utakapoizima"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Sasa hivi"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Kifaa hiki"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml index 83fe954dcac8..4c6bd222785d 100644 --- a/packages/SettingsLib/res/values-ta/strings.xml +++ b/packages/SettingsLib/res/values-ta/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"நடுத்தரம்"</string> <string name="speed_label_fast" msgid="7715732164050975057">"வேகம்"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"மிகவும் வேகமானது"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"தொடர்பு துண்டிக்கப்பட்டது"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"துண்டிக்கிறது..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"ஆஃப் செய்யும் வரை"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"சற்றுமுன்"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"இந்தச் சாதனம்"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index ad0f673886c1..f1f192b0f040 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"మధ్యస్థం"</string> <string name="speed_label_fast" msgid="7715732164050975057">"వేగవంతం"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"చాలా వేగవంతం"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"డిస్కనెక్ట్ చేయబడింది"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"డిస్కనెక్ట్ చేస్తోంది..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"మీరు ఆఫ్ చేసే వరకు"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ఇప్పుడే"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ఈ పరికరం"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index c9e232d45a85..e7d7d5b93376 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"ปานกลาง"</string> <string name="speed_label_fast" msgid="7715732164050975057">"เร็ว"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"เร็วมาก"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"ตัดการเชื่อมต่อ"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"กำลังตัดการเชื่อมต่อ..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"จนกว่าคุณจะปิด"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"เมื่อสักครู่"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"อุปกรณ์นี้"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml index 74307f8e3912..a22135528e60 100644 --- a/packages/SettingsLib/res/values-tl/strings.xml +++ b/packages/SettingsLib/res/values-tl/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Katamtaman"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Mabilis"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Napakabilis"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Hindi nakakonekta"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Nadidiskonekta..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Hanggang sa i-off mo"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Ngayon lang"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ang device na ito"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml index b95d941a83b3..49aecf8b9054 100644 --- a/packages/SettingsLib/res/values-tr/strings.xml +++ b/packages/SettingsLib/res/values-tr/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Orta"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Hızlı"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Çok Hızlı"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Bağlantı kesildi"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Bağlantı kesiliyor…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Siz kapatana kadar"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Az önce"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Bu cihaz"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index 61a0c3e6128e..cf86f4d27014 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Середня"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Швидка"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Дуже швидка"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>: <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Роз’єднано"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Відключення..."</string> @@ -468,4 +470,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Доки не вимкнути"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Щойно"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Цей пристрій"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml index f21e891fb9ae..de93a4ac1446 100644 --- a/packages/SettingsLib/res/values-ur/strings.xml +++ b/packages/SettingsLib/res/values-ur/strings.xml @@ -43,8 +43,7 @@ <string name="available_via_passpoint" msgid="1617440946846329613">"دستیاب بذریعہ %1$s"</string> <string name="tap_to_sign_up" msgid="6449724763052579434">"سائن اپ کے لیے تھپتھپائیں"</string> <string name="wifi_connected_no_internet" msgid="8202906332837777829">"منسلک، انٹرنیٹ نہیں ہے"</string> - <!-- no translation found for private_dns_broken (7356676011023412490) --> - <skip /> + <string name="private_dns_broken" msgid="7356676011023412490">"نجی DNS سرور تک رسائی حاصل نہیں کی جا سکی"</string> <string name="wifi_limited_connection" msgid="7717855024753201527">"محدود کنکشن"</string> <string name="wifi_status_no_internet" msgid="5784710974669608361">"انٹرنیٹ نہیں ہے"</string> <string name="wifi_status_sign_in_required" msgid="123517180404752756">"سائن ان درکار ہے"</string> @@ -62,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"متوسط"</string> <string name="speed_label_fast" msgid="7715732164050975057">"تیز"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"بہت تیز"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"منقطع"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"منقطع کیا جارہا ہے…"</string> @@ -467,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"یہاں تک کہ آپ آف کر دیں"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ابھی ابھی"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"یہ آلہ"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml index a0a79e38422f..42847e13bbe6 100644 --- a/packages/SettingsLib/res/values-uz/strings.xml +++ b/packages/SettingsLib/res/values-uz/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"O‘rtacha"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Tez"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Juda tez"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Uzildi"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Uzilyapti…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Rejimdan chiqilgunicha"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Hozir"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Shu qurilma"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml index 3723b83db79d..433e924284c2 100644 --- a/packages/SettingsLib/res/values-vi/strings.xml +++ b/packages/SettingsLib/res/values-vi/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Trung bình"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Nhanh"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Rất nhanh"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Đã ngắt kết nối"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Đang ngắt kết nối…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Cho đến khi bạn tắt"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Vừa xong"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Thiết bị này"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml index f1200ee13404..c967372d9017 100644 --- a/packages/SettingsLib/res/values-zh-rCN/strings.xml +++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"适中"</string> <string name="speed_label_fast" msgid="7715732164050975057">"快"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"很快"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"已断开连接"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"正在断开连接..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"直到您将其关闭"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"刚刚"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"此设备"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml index 57ab472b5d3f..325425cc0ae1 100644 --- a/packages/SettingsLib/res/values-zh-rHK/strings.xml +++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"適中"</string> <string name="speed_label_fast" msgid="7715732164050975057">"快"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"非常快"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"已中斷連線"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"正在中斷連線..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"直至您關閉為止"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"剛剛"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"此裝置"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml index 630619bba7ab..82477ea275ce 100644 --- a/packages/SettingsLib/res/values-zh-rTW/strings.xml +++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"適中"</string> <string name="speed_label_fast" msgid="7715732164050975057">"快"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"非常快"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"已中斷連線"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"正在中斷連線…"</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"直到你關閉為止"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"剛剛"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"這個裝置"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml index ede336e831f9..d4e8166fb6fe 100644 --- a/packages/SettingsLib/res/values-zu/strings.xml +++ b/packages/SettingsLib/res/values-zu/strings.xml @@ -61,6 +61,8 @@ <string name="speed_label_medium" msgid="3175763313268941953">"Okumaphakathi"</string> <string name="speed_label_fast" msgid="7715732164050975057">"Sheshayo"</string> <string name="speed_label_very_fast" msgid="2265363430784523409">"Kushesha kakhulu"</string> + <!-- no translation found for wifi_passpoint_expired (1711402866023391443) --> + <skip /> <string name="preference_summary_default_combination" msgid="8532964268242666060">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="6557104142667339895">"Ayixhunyiwe"</string> <string name="bluetooth_disconnecting" msgid="8913264760027764974">"Inqamula uxhumano kwi-inthanethi..."</string> @@ -466,4 +468,6 @@ <string name="zen_mode_forever" msgid="2704305038191592967">"Uze uvale isikrini"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"Khona manje"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Le divayisi"</string> + <!-- no translation found for profile_connect_timeout_subtext (2401801610868184557) --> + <skip /> </resources> diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java index 746515a816b3..cacbf969e562 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java @@ -19,6 +19,7 @@ package com.android.systemui; import android.app.Activity; import android.app.Application; import android.app.Service; +import android.content.BroadcastReceiver; import android.content.ContentProvider; import android.content.Context; import android.content.Intent; @@ -125,6 +126,25 @@ public class SystemUIAppComponentFactory extends AppComponentFactory { return super.instantiateServiceCompat(cl, className, intent); } + @NonNull + @Override + public BroadcastReceiver instantiateReceiverCompat(@NonNull ClassLoader cl, + @NonNull String className, @Nullable Intent intent) + throws InstantiationException, IllegalAccessException, ClassNotFoundException { + if (mComponentHelper == null) { + // This shouldn't happen, but does when a device is freshly formatted. + // Bug filed against framework to take a look: http://b/141008541 + SystemUIFactory.getInstance().getRootComponent().inject( + SystemUIAppComponentFactory.this); + } + BroadcastReceiver receiver = mComponentHelper.resolveBroadcastReceiver(className); + if (receiver != null) { + return receiver; + } + + return super.instantiateReceiverCompat(cl, className, intent); + } + /** * A callback that receives a Context when one is ready. */ diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java index 022bf06838a6..aab4041aba5f 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java @@ -24,23 +24,14 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.res.Configuration; -import android.os.Handler; -import android.os.Looper; import android.os.Process; import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; -import android.util.ArraySet; import android.util.Log; import android.util.TimingsTraceLog; import com.android.systemui.dagger.ContextComponentHelper; -import com.android.systemui.plugins.OverlayPlugin; -import com.android.systemui.plugins.PluginListener; -import com.android.systemui.shared.plugins.PluginManager; -import com.android.systemui.statusbar.phone.DozeParameters; -import com.android.systemui.statusbar.phone.StatusBar; -import com.android.systemui.statusbar.phone.StatusBarWindowController; import com.android.systemui.util.NotificationChannels; import java.lang.reflect.Constructor; @@ -224,65 +215,6 @@ public class SystemUIApplication extends Application implements SysUiServiceProv } Dependency.get(InitController.class).executePostInitTasks(); log.traceEnd(); - final Handler mainHandler = new Handler(Looper.getMainLooper()); - Dependency.get(PluginManager.class).addPluginListener( - new PluginListener<OverlayPlugin>() { - private ArraySet<OverlayPlugin> mOverlays = new ArraySet<>(); - - @Override - public void onPluginConnected(OverlayPlugin plugin, Context pluginContext) { - mainHandler.post(new Runnable() { - @Override - public void run() { - StatusBar statusBar = getComponent(StatusBar.class); - if (statusBar != null) { - plugin.setup(statusBar.getStatusBarWindow(), - statusBar.getNavigationBarView(), new Callback(plugin), - Dependency.get(DozeParameters.class)); - } - } - }); - } - - @Override - public void onPluginDisconnected(OverlayPlugin plugin) { - mainHandler.post(new Runnable() { - @Override - public void run() { - mOverlays.remove(plugin); - Dependency.get(StatusBarWindowController.class).setForcePluginOpen( - mOverlays.size() != 0); - } - }); - } - - class Callback implements OverlayPlugin.Callback { - private final OverlayPlugin mPlugin; - - Callback(OverlayPlugin plugin) { - mPlugin = plugin; - } - - @Override - public void onHoldStatusBarOpenChange() { - if (mPlugin.holdStatusBarOpen()) { - mOverlays.add(mPlugin); - } else { - mOverlays.remove(mPlugin); - } - mainHandler.post(new Runnable() { - @Override - public void run() { - Dependency.get(StatusBarWindowController.class) - .setStateListener(b -> mOverlays.forEach( - o -> o.setCollapseDesired(b))); - Dependency.get(StatusBarWindowController.class) - .setForcePluginOpen(mOverlays.size() != 0); - } - }); - } - } - }, OverlayPlugin.class, true /* Allow multiple plugins */); mServicesStarted = true; } diff --git a/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentHelper.java b/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentHelper.java index 37a447fc1957..1e7449c64182 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentHelper.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentHelper.java @@ -18,6 +18,7 @@ package com.android.systemui.dagger; import android.app.Activity; import android.app.Service; +import android.content.BroadcastReceiver; import com.android.systemui.SystemUI; import com.android.systemui.recents.RecentsImplementation; @@ -37,4 +38,7 @@ public interface ContextComponentHelper { /** Turns a classname into an instance of the class or returns null. */ SystemUI resolveSystemUI(String className); + + /** Turns a classname into an instance of the class or returns null. */ + BroadcastReceiver resolveBroadcastReceiver(String className); } diff --git a/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentResolver.java b/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentResolver.java index 06339bd5122e..f91d79576395 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentResolver.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentResolver.java @@ -18,6 +18,7 @@ package com.android.systemui.dagger; import android.app.Activity; import android.app.Service; +import android.content.BroadcastReceiver; import com.android.systemui.SystemUI; import com.android.systemui.recents.RecentsImplementation; @@ -37,16 +38,19 @@ public class ContextComponentResolver implements ContextComponentHelper { private final Map<Class<?>, Provider<Service>> mServiceCreators; private final Map<Class<?>, Provider<SystemUI>> mSystemUICreators; private final Map<Class<?>, Provider<RecentsImplementation>> mRecentsCreators; + private final Map<Class<?>, Provider<BroadcastReceiver>> mBroadcastReceiverCreators; @Inject ContextComponentResolver(Map<Class<?>, Provider<Activity>> activityCreators, Map<Class<?>, Provider<Service>> serviceCreators, Map<Class<?>, Provider<SystemUI>> systemUICreators, - Map<Class<?>, Provider<RecentsImplementation>> recentsCreators) { + Map<Class<?>, Provider<RecentsImplementation>> recentsCreators, + Map<Class<?>, Provider<BroadcastReceiver>> broadcastReceiverCreators) { mActivityCreators = activityCreators; mServiceCreators = serviceCreators; mSystemUICreators = systemUICreators; mRecentsCreators = recentsCreators; + mBroadcastReceiverCreators = broadcastReceiverCreators; } /** @@ -58,6 +62,14 @@ public class ContextComponentResolver implements ContextComponentHelper { } /** + * Looks up the BroadcastReceiver class name to see if Dagger has an instance of it. + */ + @Override + public BroadcastReceiver resolveBroadcastReceiver(String className) { + return resolve(className, mBroadcastReceiverCreators); + } + + /** * Looks up the RecentsImplementation class name to see if Dagger has an instance of it. */ @Override diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DefaultBroadcastReceiverBinder.java b/packages/SystemUI/src/com/android/systemui/dagger/DefaultBroadcastReceiverBinder.java new file mode 100644 index 000000000000..56d0fa237b82 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/dagger/DefaultBroadcastReceiverBinder.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.dagger; + +import android.content.BroadcastReceiver; + +import com.android.systemui.screenshot.GlobalScreenshot.ActionProxyReceiver; + +import dagger.Binds; +import dagger.Module; +import dagger.multibindings.ClassKey; +import dagger.multibindings.IntoMap; + +/** + * BroadcastReceivers that are injectable should go here. + */ +@Module +public abstract class DefaultBroadcastReceiverBinder { + /** */ + @Binds + @IntoMap + @ClassKey(ActionProxyReceiver.class) + public abstract BroadcastReceiver bindActionProxyReceiver( + ActionProxyReceiver broadcastReceiver); +} diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DefaultComponentBinder.java b/packages/SystemUI/src/com/android/systemui/dagger/DefaultComponentBinder.java index d8989ee624fa..18fe3ec92827 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/DefaultComponentBinder.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/DefaultComponentBinder.java @@ -23,6 +23,9 @@ import dagger.Module; * * See {@link ContextComponentResolver} */ -@Module(includes = {DefaultActivityBinder.class, DefaultServiceBinder.class, SystemUIBinder.class}) +@Module(includes = {DefaultActivityBinder.class, + DefaultBroadcastReceiverBinder.class, + DefaultServiceBinder.class, + SystemUIBinder.class}) public abstract class DefaultComponentBinder { } diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DefaultServiceBinder.java b/packages/SystemUI/src/com/android/systemui/dagger/DefaultServiceBinder.java index 14bb80c79e27..85cd51c4e169 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/DefaultServiceBinder.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/DefaultServiceBinder.java @@ -21,6 +21,7 @@ import android.app.Service; import com.android.systemui.ImageWallpaper; import com.android.systemui.doze.DozeService; import com.android.systemui.keyguard.KeyguardService; +import com.android.systemui.screenshot.TakeScreenshotService; import dagger.Binds; import dagger.Module; @@ -49,4 +50,10 @@ public abstract class DefaultServiceBinder { @IntoMap @ClassKey(KeyguardService.class) public abstract Service bindKeyguardService(KeyguardService service); + + /** */ + @Binds + @IntoMap + @ClassKey(TakeScreenshotService.class) + public abstract Service bindTakeScreenshotService(TakeScreenshotService service); } diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java index 11879bb9c01f..248bf62230dd 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java @@ -27,8 +27,10 @@ import android.os.HandlerThread; import android.os.Looper; import android.os.Process; import android.os.ServiceManager; +import android.os.UserManager; import android.util.DisplayMetrics; import android.view.IWindowManager; +import android.view.LayoutInflater; import com.android.internal.logging.MetricsLogger; import com.android.internal.statusbar.IStatusBarService; @@ -153,6 +155,13 @@ public class DependencyProvider { ServiceManager.getService(Context.NOTIFICATION_SERVICE)); } + /** */ + @Singleton + @Provides + public LayoutInflater providerLayoutInflater(Context context) { + return LayoutInflater.from(context); + } + @Singleton @Provides public LeakDetector provideLeakDetector() { @@ -232,4 +241,11 @@ public class DependencyProvider { public AlwaysOnDisplayPolicy provideAlwaysOnDisplayPolicy(Context context) { return new AlwaysOnDisplayPolicy(context); } + + /** */ + @Singleton + @Provides + public UserManager providesUserManager(Context context) { + return context.getSystemService(UserManager.class); + } } diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java index ead6de2b7f0e..88ec76c7706b 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java @@ -48,6 +48,7 @@ import com.android.systemui.plugins.FalsingManager; import com.android.systemui.power.PowerUI; import com.android.systemui.recents.Recents; import com.android.systemui.recents.RecentsModule; +import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.NavigationBarController; @@ -271,7 +272,8 @@ public abstract class SystemUIBinder { DozeServiceHost dozeServiceHost, PowerManager powerManager, DozeScrimController dozeScrimController, - CommandQueue commandQueue) { + CommandQueue commandQueue, + PluginManager pluginManager) { return new StatusBar( context, featureFlags, @@ -337,7 +339,8 @@ public abstract class SystemUIBinder { dozeServiceHost, powerManager, dozeScrimController, - commandQueue); + commandQueue, + pluginManager); } } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java index 8670d1bd0ce9..6d7acd9727cd 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java @@ -79,8 +79,8 @@ import android.widget.Toast; import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; import com.android.systemui.R; -import com.android.systemui.SysUiServiceProvider; import com.android.systemui.SystemUI; +import com.android.systemui.dagger.qualifiers.MainResources; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.util.NotificationChannels; @@ -97,6 +97,8 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import javax.inject.Inject; +import javax.inject.Singleton; /** @@ -452,7 +454,8 @@ class DeleteImageInBackgroundTask extends AsyncTask<Uri, Void, Void> { } } -class GlobalScreenshot { +@Singleton +public class GlobalScreenshot { static final String SCREENSHOT_URI_ID = "android:screenshot_uri_id"; static final String EXTRA_ACTION_INTENT = "android:screenshot_action_intent"; static final String EXTRA_CANCEL_NOTIFICATION = "android:screenshot_cancel_notification"; @@ -503,19 +506,17 @@ class GlobalScreenshot { /** * @param context everything needs a context :( */ - public GlobalScreenshot(Context context) { - Resources r = context.getResources(); + @Inject + public GlobalScreenshot(Context context, @MainResources Resources resources, + LayoutInflater layoutInflater) { mContext = context; - LayoutInflater layoutInflater = (LayoutInflater) - context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // Inflate the screenshot layout mScreenshotLayout = layoutInflater.inflate(R.layout.global_screenshot, null); - mBackgroundView = (ImageView) mScreenshotLayout.findViewById(R.id.global_screenshot_background); - mScreenshotView = (ImageView) mScreenshotLayout.findViewById(R.id.global_screenshot); - mScreenshotFlash = (ImageView) mScreenshotLayout.findViewById(R.id.global_screenshot_flash); - mScreenshotSelectorView = (ScreenshotSelectorView) mScreenshotLayout.findViewById( - R.id.global_screenshot_selector); + mBackgroundView = mScreenshotLayout.findViewById(R.id.global_screenshot_background); + mScreenshotView = mScreenshotLayout.findViewById(R.id.global_screenshot); + mScreenshotFlash = mScreenshotLayout.findViewById(R.id.global_screenshot_flash); + mScreenshotSelectorView = mScreenshotLayout.findViewById(R.id.global_screenshot_selector); mScreenshotLayout.setFocusable(true); mScreenshotSelectorView.setFocusable(true); mScreenshotSelectorView.setFocusableInTouchMode(true); @@ -546,16 +547,16 @@ class GlobalScreenshot { // Get the various target sizes mNotificationIconSize = - r.getDimensionPixelSize(android.R.dimen.notification_large_icon_height); + resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_height); // Scale has to account for both sides of the bg - mBgPadding = (float) r.getDimensionPixelSize(R.dimen.global_screenshot_bg_padding); + mBgPadding = (float) resources.getDimensionPixelSize(R.dimen.global_screenshot_bg_padding); mBgPaddingScale = mBgPadding / mDisplayMetrics.widthPixels; // determine the optimal preview size int panelWidth = 0; try { - panelWidth = r.getDimensionPixelSize(R.dimen.notification_panel_width); + panelWidth = resources.getDimensionPixelSize(R.dimen.notification_panel_width); } catch (Resources.NotFoundException e) { } if (panelWidth <= 0) { @@ -563,7 +564,7 @@ class GlobalScreenshot { panelWidth = mDisplayMetrics.widthPixels; } mPreviewWidth = panelWidth; - mPreviewHeight = r.getDimensionPixelSize(R.dimen.notification_max_height); + mPreviewHeight = resources.getDimensionPixelSize(R.dimen.notification_max_height); // Setup the Camera shutter sound mCameraSound = new MediaActionSound(); @@ -917,6 +918,12 @@ class GlobalScreenshot { */ public static class ActionProxyReceiver extends BroadcastReceiver { static final int CLOSE_WINDOWS_TIMEOUT_MILLIS = 3000; + private final StatusBar mStatusBar; + + @Inject + public ActionProxyReceiver(StatusBar statusBar) { + mStatusBar = statusBar; + } @Override public void onReceive(Context context, final Intent intent) { @@ -939,8 +946,8 @@ class GlobalScreenshot { intent.getBooleanExtra(EXTRA_DISALLOW_ENTER_PIP, false)); context.startActivityAsUser(actionIntent, opts.toBundle(), UserHandle.CURRENT); }; - StatusBar statusBar = SysUiServiceProvider.getComponent(context, StatusBar.class); - statusBar.executeRunnableDismissingKeyguard(startActivityRunnable, null, + + mStatusBar.executeRunnableDismissingKeyguard(startActivityRunnable, null, true /* dismissShade */, true /* afterKeyguardGone */, true /* deferred */); } } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java index 34b8bfe59e7e..20d24e62fc0a 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java @@ -27,10 +27,15 @@ import android.os.UserManager; import android.util.Log; import android.view.WindowManager; +import javax.inject.Inject; +import javax.inject.Singleton; + +@Singleton public class TakeScreenshotService extends Service { private static final String TAG = "TakeScreenshotService"; - private static GlobalScreenshot mScreenshot; + private final GlobalScreenshot mScreenshot; + private final UserManager mUserManager; private Handler mHandler = new Handler() { @Override @@ -50,16 +55,12 @@ public class TakeScreenshotService extends Service { // If the storage for this user is locked, we have no place to store // the screenshot, so skip taking it instead of showing a misleading // animation and error notification. - if (!getSystemService(UserManager.class).isUserUnlocked()) { + if (!mUserManager.isUserUnlocked()) { Log.w(TAG, "Skipping screenshot because storage is locked!"); post(finisher); return; } - if (mScreenshot == null) { - mScreenshot = new GlobalScreenshot(TakeScreenshotService.this); - } - switch (msg.what) { case WindowManager.TAKE_SCREENSHOT_FULLSCREEN: mScreenshot.takeScreenshot(finisher, msg.arg1 > 0, msg.arg2 > 0); @@ -73,6 +74,12 @@ public class TakeScreenshotService extends Service { } }; + @Inject + public TakeScreenshotService(GlobalScreenshot globalScreenshot, UserManager userManager) { + mScreenshot = globalScreenshot; + mUserManager = userManager; + } + @Override public IBinder onBind(Intent intent) { return new Messenger(mHandler).getBinder(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 4f9f1314918c..2125d126752a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -100,6 +100,7 @@ import android.provider.Settings; import android.service.dreams.DreamService; import android.service.dreams.IDreamManager; import android.service.notification.StatusBarNotification; +import android.util.ArraySet; import android.util.DisplayMetrics; import android.util.EventLog; import android.util.Log; @@ -168,7 +169,9 @@ import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.FalsingManager; +import com.android.systemui.plugins.OverlayPlugin; import com.android.systemui.plugins.PluginDependencyProvider; +import com.android.systemui.plugins.PluginListener; import com.android.systemui.plugins.qs.QS; import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper.SnoozeOption; import com.android.systemui.plugins.statusbar.StatusBarStateController; @@ -176,6 +179,7 @@ import com.android.systemui.qs.QSFragment; import com.android.systemui.qs.QSPanel; import com.android.systemui.recents.Recents; import com.android.systemui.recents.ScreenPinningRequest; +import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.shared.system.WindowManagerWrapper; import com.android.systemui.stackdivider.Divider; import com.android.systemui.stackdivider.WindowManagerProxy; @@ -396,6 +400,7 @@ public class StatusBar extends SystemUI implements DemoMode, private final NotifLog mNotifLog; private final DozeParameters mDozeParameters; private final Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy; + private final PluginManager mPluginManager; // expanded notifications protected NotificationPanelView mNotificationPanel; // the sliding/resizing panel within the notification window @@ -697,7 +702,8 @@ public class StatusBar extends SystemUI implements DemoMode, DozeServiceHost dozeServiceHost, PowerManager powerManager, DozeScrimController dozeScrimController, - CommandQueue commandQueue) { + CommandQueue commandQueue, + PluginManager pluginManager) { super(context); mFeatureFlags = featureFlags; mLightBarController = lightBarController; @@ -763,6 +769,7 @@ public class StatusBar extends SystemUI implements DemoMode, mDozeScrimController = dozeScrimController; mBiometricUnlockControllerLazy = biometricUnlockControllerLazy; mCommandQueue = commandQueue; + mPluginManager = pluginManager; mBubbleExpandListener = (isExpanding, key) -> { @@ -929,6 +936,50 @@ public class StatusBar extends SystemUI implements DemoMode, int disabledFlags2 = result.mDisabledFlags2; Dependency.get(InitController.class).addPostInitTask( () -> setUpDisableFlags(disabledFlags1, disabledFlags2)); + + mPluginManager.addPluginListener( + new PluginListener<OverlayPlugin>() { + private ArraySet<OverlayPlugin> mOverlays = new ArraySet<>(); + + @Override + public void onPluginConnected(OverlayPlugin plugin, Context pluginContext) { + mMainThreadHandler.post( + () -> plugin.setup(getStatusBarWindow(), getNavigationBarView(), + new Callback(plugin), mDozeParameters)); + } + + @Override + public void onPluginDisconnected(OverlayPlugin plugin) { + mMainThreadHandler.post(() -> { + mOverlays.remove(plugin); + mStatusBarWindowController.setForcePluginOpen(mOverlays.size() != 0); + }); + } + + class Callback implements OverlayPlugin.Callback { + private final OverlayPlugin mPlugin; + + Callback(OverlayPlugin plugin) { + mPlugin = plugin; + } + + @Override + public void onHoldStatusBarOpenChange() { + if (mPlugin.holdStatusBarOpen()) { + mOverlays.add(mPlugin); + } else { + mOverlays.remove(mPlugin); + } + mMainThreadHandler.post(() -> { + mStatusBarWindowController + .setStateListener(b -> mOverlays.forEach( + o -> o.setCollapseDesired(b))); + mStatusBarWindowController + .setForcePluginOpen(mOverlays.size() != 0); + }); + } + } + }, OverlayPlugin.class, true /* Allow multiple plugins */); } // ================================================================================ diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java index bace30b1e00b..5d152054fdd3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java @@ -91,6 +91,7 @@ import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.plugins.ActivityStarter.OnDismissAction; import com.android.systemui.plugins.statusbar.StatusBarStateController; +import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.KeyguardIndicationController; @@ -230,6 +231,7 @@ public class StatusBarTest extends SysuiTestCase { @Mock private ViewMediatorCallback mKeyguardVieMediatorCallback; @Mock private KeyguardLiftController mKeyguardLiftController; @Mock private CommandQueue mCommandQueue; + @Mock private PluginManager mPluginManager; @Before public void setup() throws Exception { @@ -366,7 +368,8 @@ public class StatusBarTest extends SysuiTestCase { mDozeServiceHost, mPowerManager, mDozeScrimController, - mCommandQueue); + mCommandQueue, + mPluginManager); when(mStatusBarWindowView.findViewById(R.id.lock_icon_container)).thenReturn( mLockIconContainer); @@ -392,7 +395,6 @@ public class StatusBarTest extends SysuiTestCase { mStatusBar.mStackScroller = mStackScroller; mStatusBar.mStatusBarWindowViewController = mStatusBarWindowViewController; mStatusBar.startKeyguard(); - mStatusBar.putComponent(StatusBar.class, mStatusBar); Dependency.get(InitController.class).executePostInitTasks(); entryManager.setUpForTest(mock(NotificationPresenter.class), mStackScroller, mHeadsUpManager); diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index f610d7d63b6c..30674db484d5 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -410,6 +410,13 @@ public final class OomAdjuster { mAdjSeq--; // Update these reachable processes updateOomAdjLockedInner(oomAdjReason, topApp, processes, uids, false); + } else if (app.getCurRawAdj() == ProcessList.UNKNOWN_ADJ) { + // In case the app goes from non-cached to cached but it doesn't have other reachable + // processes, its adj could be still unknown as of now, assign one. + processes.add(app); + assignCachedAdjIfNecessary(processes); + applyOomAdjLocked(app, false, SystemClock.uptimeMillis(), + SystemClock.elapsedRealtime()); } mService.mOomAdjProfiler.oomAdjEnded(); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); @@ -490,7 +497,7 @@ public final class OomAdjuster { } } - assignCachedAdjIfNecessary(); + assignCachedAdjIfNecessary(mProcessList.mLruProcesses); if (fullUpdate) { // There won't be cycles if we didn't compute clients above. // Cycle strategy: @@ -564,8 +571,7 @@ public final class OomAdjuster { } } - private void assignCachedAdjIfNecessary() { - ArrayList<ProcessRecord> lruList = mProcessList.mLruProcesses; + private void assignCachedAdjIfNecessary(ArrayList<ProcessRecord> lruList) { final int numLru = lruList.size(); // First update the OOM adjustment for each of the diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java index 4816ceb5d76c..626bf1cc361b 100644 --- a/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java +++ b/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java @@ -119,6 +119,11 @@ final class MediaRoute2ProviderProxy implements ServiceConnection { } } + @NonNull + public String getUniqueId() { + return mUniqueId; + } + @Nullable public MediaRoute2ProviderInfo getProviderInfo() { return mProviderInfo; @@ -294,7 +299,7 @@ final class MediaRoute2ProviderProxy implements ServiceConnection { } public interface Callback { - void onProviderStateChanged(MediaRoute2ProviderProxy provider); + void onProviderStateChanged(@NonNull MediaRoute2ProviderProxy provider); } private final class Connection implements DeathRecipient { diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java index 361dc3673665..44642d4f85cd 100644 --- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java @@ -47,9 +47,12 @@ import com.android.internal.util.function.pooled.PooledLambda; import java.io.PrintWriter; import java.lang.ref.WeakReference; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Objects; +import java.util.Set; /** * TODO: Merge this to MediaRouterService once it's finished. @@ -357,8 +360,7 @@ class MediaRouter2ServiceImpl { mAllClientRecords.put(binder, clientRecord); userRecord.mHandler.sendMessage( - obtainMessage(UserHandler::notifyProviderInfosUpdatedToClient, - userRecord.mHandler, client)); + obtainMessage(UserHandler::notifyRoutesToClient, userRecord.mHandler, client)); } } @@ -586,6 +588,7 @@ class MediaRouter2ServiceImpl { final class UserRecord { public final int mUserId; + //TODO: make records private for thread-safety final ArrayList<ClientRecord> mClientRecords = new ArrayList<>(); final ArrayList<ManagerRecord> mManagerRecords = new ArrayList<>(); final UserHandler mHandler; @@ -705,7 +708,7 @@ class MediaRouter2ServiceImpl { //TODO: Make this thread-safe. private final ArrayList<MediaRoute2ProviderProxy> mMediaProviders = new ArrayList<>(); - private List<MediaRoute2ProviderInfo> mProviderInfos; + private final List<MediaRoute2ProviderInfo> mProviderInfos = new ArrayList<>(); private boolean mRunning; private boolean mProviderInfosUpdateScheduled; @@ -745,14 +748,89 @@ class MediaRouter2ServiceImpl { } @Override - public void onProviderStateChanged(MediaRoute2ProviderProxy provider) { - updateProvider(provider); + public void onProviderStateChanged(@NonNull MediaRoute2ProviderProxy provider) { + sendMessage(PooledLambda.obtainMessage(UserHandler::updateProvider, this, provider)); } private void updateProvider(MediaRoute2ProviderProxy provider) { + int providerIndex = getProviderInfoIndex(provider.getUniqueId()); + MediaRoute2ProviderInfo providerInfo = provider.getProviderInfo(); + MediaRoute2ProviderInfo prevInfo = + (providerIndex < 0) ? null : mProviderInfos.get(providerIndex); + + if (Objects.equals(prevInfo, providerInfo)) return; + + if (prevInfo == null) { + mProviderInfos.add(providerInfo); + Collection<MediaRoute2Info> addedRoutes = providerInfo.getRoutes(); + if (addedRoutes.size() > 0) { + sendMessage(PooledLambda.obtainMessage(UserHandler::notifyRoutesAddedToClients, + this, getClients(), new ArrayList<>(addedRoutes))); + } + } else if (providerInfo == null) { + mProviderInfos.remove(prevInfo); + Collection<MediaRoute2Info> removedRoutes = prevInfo.getRoutes(); + if (removedRoutes.size() > 0) { + sendMessage(PooledLambda.obtainMessage( + UserHandler::notifyRoutesRemovedToClients, + this, getClients(), new ArrayList<>(removedRoutes))); + } + } else { + mProviderInfos.set(providerIndex, providerInfo); + List<MediaRoute2Info> addedRoutes = new ArrayList<>(); + List<MediaRoute2Info> removedRoutes = new ArrayList<>(); + List<MediaRoute2Info> changedRoutes = new ArrayList<>(); + + final Collection<MediaRoute2Info> currentRoutes = providerInfo.getRoutes(); + final Set<String> updatedRouteIds = new HashSet<>(); + + for (MediaRoute2Info route : currentRoutes) { + if (!route.isValid()) { + Slog.w(TAG, "Ignoring invalid route : " + route); + continue; + } + MediaRoute2Info prevRoute = prevInfo.getRoute(route.getId()); + + if (prevRoute != null) { + if (!Objects.equals(prevRoute, route)) { + changedRoutes.add(route); + } + updatedRouteIds.add(route.getId()); + } else { + addedRoutes.add(route); + } + } + + for (MediaRoute2Info prevRoute : prevInfo.getRoutes()) { + if (!updatedRouteIds.contains(prevRoute.getId())) { + removedRoutes.add(prevRoute); + } + } + + List<IMediaRouter2Client> clients = getClients(); + if (addedRoutes.size() > 0) { + notifyRoutesAddedToClients(clients, addedRoutes); + } + if (removedRoutes.size() > 0) { + notifyRoutesRemovedToClients(clients, removedRoutes); + } + if (changedRoutes.size() > 0) { + notifyRoutesChangedToClients(clients, changedRoutes); + } + } scheduleUpdateProviderInfos(); } + private int getProviderInfoIndex(String providerId) { + for (int i = 0; i < mProviderInfos.size(); i++) { + MediaRoute2ProviderInfo providerInfo = mProviderInfos.get(i); + if (TextUtils.equals(providerInfo.getUniqueId(), providerId)) { + return i; + } + } + return -1; + } + private void selectRoute(ClientRecord clientRecord, MediaRoute2Info route) { if (route != null) { MediaRoute2ProviderProxy provider = findProvider(route.getProviderId()); @@ -803,6 +881,7 @@ class MediaRouter2ServiceImpl { } } + //TODO: should be replaced into notifyRoutes...ToManagers private void updateProviderInfos() { mProviderInfosUpdateScheduled = false; @@ -810,55 +889,83 @@ class MediaRouter2ServiceImpl { if (service == null) { return; } - final List<MediaRoute2ProviderInfo> providers = new ArrayList<>(); - for (MediaRoute2ProviderProxy mediaProvider : mMediaProviders) { - final MediaRoute2ProviderInfo providerInfo = - mediaProvider.getProviderInfo(); - if (providerInfo == null || !providerInfo.isValid()) { - Slog.w(TAG, "Ignoring invalid provider info : " + providerInfo); - } else { - providers.add(providerInfo); - } - } - mProviderInfos = providers; final List<IMediaRouter2Manager> managers = new ArrayList<>(); - final List<IMediaRouter2Client> clients = new ArrayList<>(); synchronized (service.mLock) { for (ManagerRecord managerRecord : mUserRecord.mManagerRecords) { managers.add(managerRecord.mManager); } + } + for (IMediaRouter2Manager manager : managers) { + notifyProviderInfosUpdatedToManager(manager); + } + } + + private List<IMediaRouter2Client> getClients() { + final List<IMediaRouter2Client> clients = new ArrayList<>(); + MediaRouter2ServiceImpl service = mServiceRef.get(); + if (service == null) { + return clients; + } + synchronized (service.mLock) { for (ClientRecord clientRecord : mUserRecord.mClientRecords) { if (clientRecord instanceof Client2Record) { clients.add(((Client2Record) clientRecord).mClient); } } } - for (IMediaRouter2Manager manager : managers) { - notifyProviderInfosUpdatedToManager(manager); - } - for (IMediaRouter2Client client : clients) { - notifyProviderInfosUpdatedToClient(client); - } + return clients; } - private void notifyProviderInfosUpdatedToClient(IMediaRouter2Client client) { - if (mProviderInfos == null) { - scheduleUpdateProviderInfos(); + private void notifyRoutesToClient(IMediaRouter2Client client) { + List<MediaRoute2Info> routes = new ArrayList<>(); + for (MediaRoute2ProviderInfo providerInfo : mProviderInfos) { + routes.addAll(providerInfo.getRoutes()); + } + if (routes.size() == 0) { return; } try { - client.notifyProviderInfosUpdated(mProviderInfos); + client.notifyRoutesAdded(routes); } catch (RemoteException ex) { - Slog.w(TAG, "Failed to notify provider infos updated. Client probably died."); + Slog.w(TAG, "Failed to notify all routes. Client probably died.", ex); } } - private void notifyProviderInfosUpdatedToManager(IMediaRouter2Manager manager) { - if (mProviderInfos == null) { - scheduleUpdateProviderInfos(); - return; + private void notifyRoutesAddedToClients(List<IMediaRouter2Client> clients, + List<MediaRoute2Info> routes) { + for (IMediaRouter2Client client : clients) { + try { + client.notifyRoutesAdded(routes); + } catch (RemoteException ex) { + Slog.w(TAG, "Failed to notify routes added. Client probably died.", ex); + } + } + } + + private void notifyRoutesRemovedToClients(List<IMediaRouter2Client> clients, + List<MediaRoute2Info> routes) { + for (IMediaRouter2Client client : clients) { + try { + client.notifyRoutesRemoved(routes); + } catch (RemoteException ex) { + Slog.w(TAG, "Failed to notify routes removed. Client probably died.", ex); + } } + } + + private void notifyRoutesChangedToClients(List<IMediaRouter2Client> clients, + List<MediaRoute2Info> routes) { + for (IMediaRouter2Client client : clients) { + try { + client.notifyRoutesChanged(routes); + } catch (RemoteException ex) { + Slog.w(TAG, "Failed to notify routes changed. Client probably died.", ex); + } + } + } + + private void notifyProviderInfosUpdatedToManager(IMediaRouter2Manager manager) { try { manager.notifyProviderInfosUpdated(mProviderInfos); } catch (RemoteException ex) { @@ -891,9 +998,7 @@ class MediaRouter2ServiceImpl { private MediaRoute2ProviderProxy findProvider(String providerId) { for (MediaRoute2ProviderProxy provider : mMediaProviders) { - final MediaRoute2ProviderInfo providerInfo = provider.getProviderInfo(); - if (providerInfo != null - && TextUtils.equals(providerInfo.getUniqueId(), providerId)) { + if (TextUtils.equals(provider.getUniqueId(), providerId)) { return provider; } } diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 3da84811ee1b..222f26edaf5d 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -227,6 +227,7 @@ import android.util.proto.ProtoOutputStream; import android.view.IRecentsAnimationRunner; import android.view.RemoteAnimationAdapter; import android.view.RemoteAnimationDefinition; +import android.view.WindowContainerTransaction; import android.view.WindowManager; import com.android.internal.R; @@ -289,6 +290,7 @@ import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; @@ -3249,6 +3251,47 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } + private void sanitizeAndApplyConfigChange(ConfigurationContainer container, + WindowContainerTransaction.Change change) { + if (!(container instanceof TaskRecord)) { + throw new RuntimeException("Invalid token in task transaction"); + } + // The "client"-facing API should prevent bad changes; however, just in case, sanitize + // masks here. + int configMask = change.getConfigSetMask(); + int windowMask = change.getWindowSetMask(); + configMask &= ActivityInfo.CONFIG_WINDOW_CONFIGURATION + | ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE; + windowMask &= WindowConfiguration.WINDOW_CONFIG_BOUNDS; + Configuration c = new Configuration(container.getRequestedOverrideConfiguration()); + c.setTo(change.getConfiguration(), configMask, windowMask); + container.onRequestedOverrideConfigurationChanged(c); + } + + @Override + public void applyContainerTransaction(WindowContainerTransaction t) { + mAmInternal.enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "applyContainerTransaction()"); + long ident = Binder.clearCallingIdentity(); + try { + if (t == null) { + return; + } + synchronized (mGlobalLock) { + Iterator<Map.Entry<IBinder, WindowContainerTransaction.Change>> entries = + t.getChanges().entrySet().iterator(); + while (entries.hasNext()) { + final Map.Entry<IBinder, WindowContainerTransaction.Change> entry = + entries.next(); + final ConfigurationContainer cc = ConfigurationContainer.RemoteToken.fromBinder( + entry.getKey()).getContainer(); + sanitizeAndApplyConfigChange(cc, entry.getValue()); + } + } + } finally { + Binder.restoreCallingIdentity(ident); + } + } + @Override public boolean releaseActivityInstance(IBinder token) { synchronized (mGlobalLock) { diff --git a/services/core/java/com/android/server/wm/ConfigurationContainer.java b/services/core/java/com/android/server/wm/ConfigurationContainer.java index 70d5ab93421e..8b4f7cc571f8 100644 --- a/services/core/java/com/android/server/wm/ConfigurationContainer.java +++ b/services/core/java/com/android/server/wm/ConfigurationContainer.java @@ -39,11 +39,15 @@ import android.app.WindowConfiguration; import android.content.res.Configuration; import android.graphics.Point; import android.graphics.Rect; +import android.os.IBinder; import android.util.proto.ProtoOutputStream; +import android.view.IWindowContainer; +import android.view.SurfaceControl; import com.android.internal.annotations.VisibleForTesting; import java.io.PrintWriter; +import java.lang.ref.WeakReference; import java.util.ArrayList; /** @@ -102,6 +106,11 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> { // Return value from {@link setBounds} indicating the size of the override bounds changed. static final int BOUNDS_CHANGE_SIZE = 1 << 1; + /** + * Used as a unique, cross-process identifier for this Container. It also serves a minimal + * interface to other processes. + */ + RemoteToken mRemoteToken = null; /** * Returns full configuration applied to this configuration container. @@ -634,4 +643,37 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> { abstract protected E getChildAt(int index); abstract protected ConfigurationContainer getParent(); + + // TODO: Consider moving to WindowContainer once hierarchies and Task/Stack are merged. + static class RemoteToken extends IWindowContainer.Stub { + final WeakReference<ConfigurationContainer> mWeakRef; + + RemoteToken(ConfigurationContainer container) { + mWeakRef = new WeakReference<>(container); + } + + ConfigurationContainer getContainer() { + return mWeakRef.get(); + } + + static RemoteToken fromBinder(IBinder binder) { + return (RemoteToken) binder; + } + + @Override + public SurfaceControl getLeash() { + throw new RuntimeException("Not implemented"); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("RemoteToken{"); + sb.append(Integer.toHexString(System.identityHashCode(this))); + sb.append(' '); + sb.append(mWeakRef.get()); + sb.append('}'); + return sb.toString(); + } + } } diff --git a/services/core/java/com/android/server/wm/TaskRecord.java b/services/core/java/com/android/server/wm/TaskRecord.java index 166bd058b080..6920d9d3a770 100644 --- a/services/core/java/com/android/server/wm/TaskRecord.java +++ b/services/core/java/com/android/server/wm/TaskRecord.java @@ -77,7 +77,6 @@ import static com.android.server.wm.ActivityStackSupervisor.REMOVE_FROM_RECENTS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_ADD_REMOVE; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_LOCKTASK; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RECENTS; -import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_STATES; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_TASKS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_ADD_REMOVE; import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_LOCKTASK; @@ -378,6 +377,7 @@ class TaskRecord extends ConfigurationContainer { IVoiceInteractionSession _voiceSession, IVoiceInteractor _voiceInteractor) { mAtmService = atmService; mTaskId = _taskId; + mRemoteToken = new RemoteToken(this); affinityIntent = _affinityIntent; affinity = _affinity; rootAffinity = _rootAffinity; diff --git a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java index 57f55e32a381..e7f6a7484881 100644 --- a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java +++ b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java @@ -61,6 +61,7 @@ import static com.android.server.am.ProcessList.UNKNOWN_ADJ; import static com.android.server.am.ProcessList.VISIBLE_APP_ADJ; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import static org.mockito.AdditionalAnswers.answer; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; @@ -542,6 +543,21 @@ public class MockingOomAdjusterTests { @SuppressWarnings("GuardedBy") @Test + public void testUpdateOomAdj_DoOne_NonCachedToCached() { + ProcessRecord app = spy(makeDefaultProcessRecord(MOCKAPP_PID, MOCKAPP_UID, + MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false)); + app.cached = false; + app.setCurRawAdj(SERVICE_ADJ); + doReturn(null).when(sService).getTopAppLocked(); + sService.mWakefulness = PowerManagerInternal.WAKEFULNESS_AWAKE; + sService.mOomAdjuster.updateOomAdjLocked(app, OomAdjuster.OOM_ADJ_REASON_NONE); + + assertTrue(ProcessList.CACHED_APP_MIN_ADJ <= app.setAdj); + assertTrue(ProcessList.CACHED_APP_MAX_ADJ >= app.setAdj); + } + + @SuppressWarnings("GuardedBy") + @Test public void testUpdateOomAdj_DoOne_Service_Started() { ProcessRecord app = spy(makeDefaultProcessRecord(MOCKAPP_PID, MOCKAPP_UID, MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false)); diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java index 7b7e6e70cd80..399f28302f32 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java @@ -16,11 +16,16 @@ package com.android.server.wm; +import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; + import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import android.app.Activity; +import android.graphics.Rect; +import android.view.WindowContainerTransaction; import androidx.test.filters.MediumTest; @@ -58,5 +63,18 @@ public class ActivityTaskManagerServiceTests extends ActivityTestsBase { mService.finishActivity(activity.appToken, 0 /* resultCode */, null /* resultData */, Activity.DONT_FINISH_TASK_WITH_ACTIVITY)); } + + @Test + public void testTaskTransaction() { + removeGlobalMinSizeRestriction(); + final ActivityStack stack = new StackBuilder(mRootActivityContainer) + .setWindowingMode(WINDOWING_MODE_FREEFORM).build(); + final TaskRecord task = stack.topTask(); + WindowContainerTransaction t = new WindowContainerTransaction(); + Rect newBounds = new Rect(10, 10, 100, 100); + t.setBounds(task.mRemoteToken, new Rect(10, 10, 100, 100)); + mService.applyContainerTransaction(t); + assertEquals(newBounds, task.getBounds()); + } } diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowConfigurationTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowConfigurationTests.java index d6608f1cabdc..64ac547bd9ee 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowConfigurationTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowConfigurationTests.java @@ -20,13 +20,17 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; +import static android.app.WindowConfiguration.ROTATION_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.app.WindowConfiguration.WINDOW_CONFIG_ALWAYS_ON_TOP; import static android.app.WindowConfiguration.WINDOW_CONFIG_APP_BOUNDS; +import static android.app.WindowConfiguration.WINDOW_CONFIG_BOUNDS; import static android.app.WindowConfiguration.WINDOW_CONFIG_ROTATION; import static android.app.WindowConfiguration.WINDOW_CONFIG_WINDOWING_MODE; import static android.content.pm.ActivityInfo.CONFIG_WINDOW_CONFIGURATION; +import static android.view.Surface.ROTATION_270; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -218,4 +222,31 @@ public class WindowConfigurationTests extends WindowTestsBase { config.setActivityType(ACTIVITY_TYPE_STANDARD); assertTrue(config.hasWindowDecorCaption()); } + + @Test + public void testMaskedSetTo() { + final WindowConfiguration config = new WindowConfiguration(); + final WindowConfiguration other = new WindowConfiguration(); + other.setBounds(new Rect(10, 10, 100, 100)); + other.setRotation(ROTATION_270); + config.setWindowingMode(WINDOWING_MODE_FULLSCREEN); + config.setBounds(null); + + // no change + config.setTo(other, 0); + assertTrue(config.getBounds().isEmpty()); + assertEquals(ROTATION_UNDEFINED, config.getRotation()); + assertEquals(WINDOWING_MODE_FULLSCREEN, config.getWindowingMode()); + + final int justBoundsAndRotation = WINDOW_CONFIG_BOUNDS | WINDOW_CONFIG_ROTATION; + config.setTo(other, justBoundsAndRotation); + assertEquals(other.getBounds(), config.getBounds()); + assertEquals(other.getRotation(), config.getRotation()); + assertEquals(WINDOWING_MODE_FULLSCREEN, config.getWindowingMode()); + + // unsets as well + final int justWindowingMode = WINDOW_CONFIG_WINDOWING_MODE; + config.setTo(other, justWindowingMode); + assertEquals(WINDOWING_MODE_UNDEFINED, config.getWindowingMode()); + } } diff --git a/test-mock/Android.bp b/test-mock/Android.bp index 81b1e49ffed1..0b5d4460612d 100644 --- a/test-mock/Android.bp +++ b/test-mock/Android.bp @@ -19,8 +19,14 @@ java_sdk_library { name: "android.test.mock", - srcs: ["src/**/*.java"], - api_srcs: [":framework-all-sources"], + srcs: [ + "src/**/*.java", + // Note: Below are NOT APIs of this library. We only take APIs under + // the android.test.mock package. They however provide private APIs that + // android.test.mock APIs references to. + ":framework-core-sources-for-test-mock", + ":framework_native_aidl", + ], libs: ["framework-all"], api_packages: [ diff --git a/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java b/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java index ba77a74974d1..1664746f4636 100644 --- a/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java +++ b/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java @@ -73,6 +73,10 @@ class TouchLatencyView extends View implements View.OnTouchListener { mFps = 0; mLastFpsUpdate = 0; mFrameCount = 0; + + mDf = new DecimalFormat("fps: #.##"); + mDf.setRoundingMode(RoundingMode.HALF_UP); + Trace.endSection(); } @@ -181,9 +185,7 @@ class TouchLatencyView extends View implements View.OnTouchListener { // Draw the ball canvas.drawColor(BACKGROUND_COLOR); canvas.drawOval(left, top, right, bottom, getBallColor()); - DecimalFormat df = new DecimalFormat("fps: #.##"); - df.setRoundingMode(RoundingMode.HALF_UP); - canvas.drawText(df.format(mFps), width, 100, mTextPaint); + canvas.drawText(mDf.format(mFps), width, 100, mTextPaint); invalidate(); Trace.endSection(); @@ -220,6 +222,7 @@ class TouchLatencyView extends View implements View.OnTouchListener { private long mLastDrawNano, mLastFpsUpdate, mFrameCount; private float mFps; + private DecimalFormat mDf; } public class TouchLatencyActivity extends Activity { |