diff options
244 files changed, 2808 insertions, 2759 deletions
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java index 90b78288d0c6..e86d2f35ef16 100644 --- a/core/java/android/accessibilityservice/AccessibilityService.java +++ b/core/java/android/accessibilityservice/AccessibilityService.java @@ -43,9 +43,9 @@ import android.hardware.display.DisplayManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; +import android.os.HandlerExecutor; import android.os.IBinder; import android.os.Looper; -import android.os.Message; import android.os.RemoteCallback; import android.os.RemoteException; import android.os.SystemClock; @@ -72,10 +72,7 @@ import com.android.internal.inputmethod.IAccessibilityInputMethodSession; import com.android.internal.inputmethod.IAccessibilityInputMethodSessionCallback; import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection; import com.android.internal.inputmethod.RemoteAccessibilityInputConnection; -import com.android.internal.os.HandlerCaller; -import com.android.internal.os.SomeArgs; import com.android.internal.util.Preconditions; -import com.android.internal.util.function.pooled.PooledLambda; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -2634,7 +2631,7 @@ public abstract class AccessibilityService extends Service { */ @Override public final IBinder onBind(Intent intent) { - return new IAccessibilityServiceClientWrapper(this, getMainLooper(), new Callbacks() { + return new IAccessibilityServiceClientWrapper(this, getMainExecutor(), new Callbacks() { @Override public void onServiceConnected() { AccessibilityService.this.dispatchServiceConnected(); @@ -2751,30 +2748,12 @@ public abstract class AccessibilityService extends Service { * * @hide */ - public static class IAccessibilityServiceClientWrapper extends IAccessibilityServiceClient.Stub - implements HandlerCaller.Callback { - private static final int DO_INIT = 1; - private static final int DO_ON_INTERRUPT = 2; - private static final int DO_ON_ACCESSIBILITY_EVENT = 3; - private static final int DO_ON_GESTURE = 4; - private static final int DO_CLEAR_ACCESSIBILITY_CACHE = 5; - private static final int DO_ON_KEY_EVENT = 6; - private static final int DO_ON_MAGNIFICATION_CHANGED = 7; - private static final int DO_ON_SOFT_KEYBOARD_SHOW_MODE_CHANGED = 8; - private static final int DO_GESTURE_COMPLETE = 9; - private static final int DO_ON_FINGERPRINT_ACTIVE_CHANGED = 10; - private static final int DO_ON_FINGERPRINT_GESTURE = 11; - private static final int DO_ACCESSIBILITY_BUTTON_CLICKED = 12; - private static final int DO_ACCESSIBILITY_BUTTON_AVAILABILITY_CHANGED = 13; - private static final int DO_ON_SYSTEM_ACTIONS_CHANGED = 14; - private static final int DO_CREATE_IME_SESSION = 15; - private static final int DO_SET_IME_SESSION_ENABLED = 16; - private static final int DO_START_INPUT = 19; - - private final HandlerCaller mCaller; + public static class IAccessibilityServiceClientWrapper extends + IAccessibilityServiceClient.Stub { private final Callbacks mCallback; private final Context mContext; + private final Executor mExecutor; private int mConnectionId = AccessibilityInteractionClient.NO_ID; @@ -2793,103 +2772,199 @@ public abstract class AccessibilityService extends Service { @Nullable CancellationGroup mCancellationGroup = null; + public IAccessibilityServiceClientWrapper(Context context, Executor executor, + Callbacks callback) { + mCallback = callback; + mContext = context; + mExecutor = executor; + } + public IAccessibilityServiceClientWrapper(Context context, Looper looper, Callbacks callback) { mCallback = callback; mContext = context; - mCaller = new HandlerCaller(context, looper, this, true /*asyncHandler*/); + mExecutor = new HandlerExecutor(new Handler(looper)); } public void init(IAccessibilityServiceConnection connection, int connectionId, IBinder windowToken) { - Message message = mCaller.obtainMessageIOO(DO_INIT, connectionId, - connection, windowToken); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + mConnectionId = connectionId; + if (connection != null) { + AccessibilityInteractionClient.getInstance(mContext).addConnection( + mConnectionId, connection, /*initializeCache=*/true); + if (mContext != null) { + try { + connection.setAttributionTag(mContext.getAttributionTag()); + } catch (RemoteException re) { + Log.w(LOG_TAG, "Error while setting attributionTag", re); + re.rethrowFromSystemServer(); + } + } + mCallback.init(mConnectionId, windowToken); + mCallback.onServiceConnected(); + } else { + AccessibilityInteractionClient.getInstance(mContext) + .clearCache(mConnectionId); + AccessibilityInteractionClient.getInstance(mContext).removeConnection( + mConnectionId); + mConnectionId = AccessibilityInteractionClient.NO_ID; + mCallback.init(AccessibilityInteractionClient.NO_ID, null); + } + return; + }); } public void onInterrupt() { - Message message = mCaller.obtainMessage(DO_ON_INTERRUPT); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onInterrupt(); + } + }); } public void onAccessibilityEvent(AccessibilityEvent event, boolean serviceWantsEvent) { - Message message = mCaller.obtainMessageBO( - DO_ON_ACCESSIBILITY_EVENT, serviceWantsEvent, event); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + if (event != null) { + // Send the event to AccessibilityCache via AccessibilityInteractionClient + AccessibilityInteractionClient.getInstance(mContext).onAccessibilityEvent( + event, mConnectionId); + if (serviceWantsEvent + && (mConnectionId != AccessibilityInteractionClient.NO_ID)) { + // Send the event to AccessibilityService + mCallback.onAccessibilityEvent(event); + } + } + return; + }); } @Override public void onGesture(AccessibilityGestureEvent gestureInfo) { - Message message = mCaller.obtainMessageO(DO_ON_GESTURE, gestureInfo); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onGesture(gestureInfo); + } + return; + }); } public void clearAccessibilityCache() { - Message message = mCaller.obtainMessage(DO_CLEAR_ACCESSIBILITY_CACHE); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + AccessibilityInteractionClient.getInstance(mContext).clearCache(mConnectionId); + return; + }); } @Override public void onKeyEvent(KeyEvent event, int sequence) { - Message message = mCaller.obtainMessageIO(DO_ON_KEY_EVENT, sequence, event); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + try { + IAccessibilityServiceConnection connection = AccessibilityInteractionClient + .getInstance(mContext).getConnection(mConnectionId); + if (connection != null) { + final boolean result = mCallback.onKeyEvent(event); + try { + connection.setOnKeyEventResult(result, sequence); + } catch (RemoteException re) { + /* ignore */ + } + } + } finally { + // Make sure the event is recycled. + try { + event.recycle(); + } catch (IllegalStateException ise) { + /* ignore - best effort */ + } + } + return; + }); } /** Magnification changed callbacks for different displays */ public void onMagnificationChanged(int displayId, @NonNull Region region, MagnificationConfig config) { - final SomeArgs args = SomeArgs.obtain(); - args.arg1 = region; - args.arg2 = config; - args.argi1 = displayId; - - final Message message = mCaller.obtainMessageO(DO_ON_MAGNIFICATION_CHANGED, args); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onMagnificationChanged(displayId, region, config); + } + return; + }); } public void onSoftKeyboardShowModeChanged(int showMode) { - final Message message = - mCaller.obtainMessageI(DO_ON_SOFT_KEYBOARD_SHOW_MODE_CHANGED, showMode); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onSoftKeyboardShowModeChanged(showMode); + } + return; + }); } public void onPerformGestureResult(int sequence, boolean successfully) { - Message message = mCaller.obtainMessageII(DO_GESTURE_COMPLETE, sequence, - successfully ? 1 : 0); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onPerformGestureResult(sequence, successfully); + } + return; + }); } public void onFingerprintCapturingGesturesChanged(boolean active) { - mCaller.sendMessage(mCaller.obtainMessageI( - DO_ON_FINGERPRINT_ACTIVE_CHANGED, active ? 1 : 0)); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onFingerprintCapturingGesturesChanged(active); + } + return; + }); } public void onFingerprintGesture(int gesture) { - mCaller.sendMessage(mCaller.obtainMessageI(DO_ON_FINGERPRINT_GESTURE, gesture)); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onFingerprintGesture(gesture); + } + return; + }); } /** Accessibility button clicked callbacks for different displays */ public void onAccessibilityButtonClicked(int displayId) { - final Message message = mCaller.obtainMessageI(DO_ACCESSIBILITY_BUTTON_CLICKED, - displayId); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onAccessibilityButtonClicked(displayId); + } + return; + }); } public void onAccessibilityButtonAvailabilityChanged(boolean available) { - final Message message = mCaller.obtainMessageI( - DO_ACCESSIBILITY_BUTTON_AVAILABILITY_CHANGED, (available ? 1 : 0)); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onAccessibilityButtonAvailabilityChanged(available); + } + return; + }); } /** This is called when the system action list is changed. */ public void onSystemActionsChanged() { - mCaller.sendMessage(mCaller.obtainMessage(DO_ON_SYSTEM_ACTIONS_CHANGED)); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onSystemActionsChanged(); + } + return; + }); } /** This is called when an app requests ime sessions or when the service is enabled. */ public void createImeSession(IAccessibilityInputMethodSessionCallback callback) { - final Message message = mCaller.obtainMessageO(DO_CREATE_IME_SESSION, callback); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.createImeSession(callback); + } + }); } /** @@ -2905,8 +2980,12 @@ public abstract class AccessibilityService extends Service { Log.w(LOG_TAG, "Session is already finished: " + session); return; } - mCaller.sendMessage(mCaller.obtainMessageIO( - DO_SET_IME_SESSION_ENABLED, enabled ? 1 : 0, ls)); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + ls.setEnabled(enabled); + } + return; + }); } catch (ClassCastException e) { Log.w(LOG_TAG, "Incoming session not of correct type: " + session, e); } @@ -2938,213 +3017,29 @@ public abstract class AccessibilityService extends Service { Log.e(LOG_TAG, "startInput must be called after bindInput."); mCancellationGroup = new CancellationGroup(); } - final Message message = mCaller.obtainMessageOOOOII(DO_START_INPUT, null /* unused */, - connection, editorInfo, mCancellationGroup, restarting ? 1 : 0, - 0 /* unused */); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + final RemoteAccessibilityInputConnection ic = connection == null ? null + : new RemoteAccessibilityInputConnection( + connection, mCancellationGroup); + editorInfo.makeCompatible(mContext.getApplicationInfo().targetSdkVersion); + mCallback.startInput(ic, editorInfo, restarting); + } + }); } @Override public void onMotionEvent(MotionEvent event) { - final Message message = PooledLambda.obtainMessage( - Callbacks::onMotionEvent, mCallback, event); - mCaller.sendMessage(message); + mExecutor.execute(() -> { + mCallback.onMotionEvent(event); + }); } @Override public void onTouchStateChanged(int displayId, int state) { - final Message message = PooledLambda.obtainMessage(Callbacks::onTouchStateChanged, - mCallback, - displayId, state); - mCaller.sendMessage(message); - } - - @Override - public void executeMessage(Message message) { - switch (message.what) { - case DO_ON_ACCESSIBILITY_EVENT: { - AccessibilityEvent event = (AccessibilityEvent) message.obj; - boolean serviceWantsEvent = message.arg1 != 0; - if (event != null) { - // Send the event to AccessibilityCache via AccessibilityInteractionClient - AccessibilityInteractionClient.getInstance(mContext).onAccessibilityEvent( - event, mConnectionId); - if (serviceWantsEvent - && (mConnectionId != AccessibilityInteractionClient.NO_ID)) { - // Send the event to AccessibilityService - mCallback.onAccessibilityEvent(event); - } - // Make sure the event is recycled. - try { - event.recycle(); - } catch (IllegalStateException ise) { - /* ignore - best effort */ - } - } - return; - } - case DO_ON_INTERRUPT: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - mCallback.onInterrupt(); - } - return; - } - case DO_INIT: { - mConnectionId = message.arg1; - SomeArgs args = (SomeArgs) message.obj; - IAccessibilityServiceConnection connection = - (IAccessibilityServiceConnection) args.arg1; - IBinder windowToken = (IBinder) args.arg2; - args.recycle(); - if (connection != null) { - AccessibilityInteractionClient.getInstance(mContext).addConnection( - mConnectionId, connection, /*initializeCache=*/true); - if (mContext != null) { - try { - connection.setAttributionTag(mContext.getAttributionTag()); - } catch (RemoteException re) { - Log.w(LOG_TAG, "Error while setting attributionTag", re); - re.rethrowFromSystemServer(); - } - } - mCallback.init(mConnectionId, windowToken); - mCallback.onServiceConnected(); - } else { - AccessibilityInteractionClient.getInstance(mContext) - .clearCache(mConnectionId); - AccessibilityInteractionClient.getInstance(mContext).removeConnection( - mConnectionId); - mConnectionId = AccessibilityInteractionClient.NO_ID; - mCallback.init(AccessibilityInteractionClient.NO_ID, null); - } - return; - } - case DO_ON_GESTURE: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - mCallback.onGesture((AccessibilityGestureEvent) message.obj); - } - return; - } - case DO_CLEAR_ACCESSIBILITY_CACHE: { - AccessibilityInteractionClient.getInstance(mContext).clearCache(mConnectionId); - return; - } - case DO_ON_KEY_EVENT: { - KeyEvent event = (KeyEvent) message.obj; - try { - IAccessibilityServiceConnection connection = AccessibilityInteractionClient - .getInstance(mContext).getConnection(mConnectionId); - if (connection != null) { - final boolean result = mCallback.onKeyEvent(event); - final int sequence = message.arg1; - try { - connection.setOnKeyEventResult(result, sequence); - } catch (RemoteException re) { - /* ignore */ - } - } - } finally { - // Make sure the event is recycled. - try { - event.recycle(); - } catch (IllegalStateException ise) { - /* ignore - best effort */ - } - } - return; - } - case DO_ON_MAGNIFICATION_CHANGED: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - final SomeArgs args = (SomeArgs) message.obj; - final Region region = (Region) args.arg1; - final MagnificationConfig config = (MagnificationConfig) args.arg2; - final int displayId = args.argi1; - args.recycle(); - mCallback.onMagnificationChanged(displayId, region, config); - } - return; - } - case DO_ON_SOFT_KEYBOARD_SHOW_MODE_CHANGED: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - final int showMode = (int) message.arg1; - mCallback.onSoftKeyboardShowModeChanged(showMode); - } - return; - } - case DO_GESTURE_COMPLETE: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - final boolean successfully = message.arg2 == 1; - mCallback.onPerformGestureResult(message.arg1, successfully); - } - return; - } - case DO_ON_FINGERPRINT_ACTIVE_CHANGED: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - mCallback.onFingerprintCapturingGesturesChanged(message.arg1 == 1); - } - return; - } - case DO_ON_FINGERPRINT_GESTURE: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - mCallback.onFingerprintGesture(message.arg1); - } - return; - } - case DO_ACCESSIBILITY_BUTTON_CLICKED: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - mCallback.onAccessibilityButtonClicked(message.arg1); - } - return; - } - case DO_ACCESSIBILITY_BUTTON_AVAILABILITY_CHANGED: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - final boolean available = (message.arg1 != 0); - mCallback.onAccessibilityButtonAvailabilityChanged(available); - } - return; - } - case DO_ON_SYSTEM_ACTIONS_CHANGED: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - mCallback.onSystemActionsChanged(); - } - return; - } - case DO_CREATE_IME_SESSION: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - IAccessibilityInputMethodSessionCallback callback = - (IAccessibilityInputMethodSessionCallback) message.obj; - mCallback.createImeSession(callback); - } - return; - } - case DO_SET_IME_SESSION_ENABLED: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - AccessibilityInputMethodSession session = - (AccessibilityInputMethodSession) message.obj; - session.setEnabled(message.arg1 != 0); - } - return; - } - case DO_START_INPUT: { - if (mConnectionId != AccessibilityInteractionClient.NO_ID) { - final SomeArgs args = (SomeArgs) message.obj; - final IRemoteAccessibilityInputConnection connection = - (IRemoteAccessibilityInputConnection) args.arg2; - final EditorInfo info = (EditorInfo) args.arg3; - final CancellationGroup cancellationGroup = (CancellationGroup) args.arg4; - final boolean restarting = args.argi5 == 1; - final RemoteAccessibilityInputConnection ic = connection == null ? null - : new RemoteAccessibilityInputConnection( - connection, cancellationGroup); - info.makeCompatible(mContext.getApplicationInfo().targetSdkVersion); - mCallback.startInput(ic, info, restarting); - args.recycle(); - } - return; - } - default: - Log.w(LOG_TAG, "Unknown message type " + message.what); - } + mExecutor.execute(() -> { + mCallback.onTouchStateChanged(displayId, state); + }); } } diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index b383d7daafd0..6b3dc820635e 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -107,6 +107,7 @@ import android.net.ConnectivityManager; import android.net.Proxy; import android.net.TrafficStats; import android.net.Uri; +import android.net.wifi.WifiFrameworkInitializer; import android.os.AsyncTask; import android.os.Binder; import android.os.BluetoothServiceManager; @@ -7900,6 +7901,8 @@ public final class ActivityThread extends ClientTransactionHandler BluetoothFrameworkInitializer.setBluetoothServiceManager(new BluetoothServiceManager()); BluetoothFrameworkInitializer.setBinderCallsStatsInitializer(context -> { BinderCallsStats.startForBluetooth(context); }); + WifiFrameworkInitializer.setBinderCallsStatsInitializer(context -> { + BinderCallsStats.startForWifi(context); }); } private void purgePendingResources() { diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java index 8be2b4873c67..e3bca9c9aadb 100644 --- a/core/java/android/appwidget/AppWidgetHostView.java +++ b/core/java/android/appwidget/AppWidgetHostView.java @@ -103,7 +103,6 @@ public class AppWidgetHostView extends FrameLayout { private boolean mOnLightBackground; private SizeF mCurrentSize = null; private RemoteViews.ColorResources mColorResources = null; - private SparseIntArray mColorMapping = null; // Stores the last remote views last inflated. private RemoteViews mLastInflatedRemoteViews = null; private long mLastInflatedRemoteViewsId = -1; @@ -900,11 +899,19 @@ public class AppWidgetHostView extends FrameLayout { * {@link android.R.color#system_neutral1_500}. */ public void setColorResources(@NonNull SparseIntArray colorMapping) { - if (mColorMapping != null && isSameColorMapping(mColorMapping, colorMapping)) { + if (mColorResources != null + && isSameColorMapping(mColorResources.getColorMapping(), colorMapping)) { return; } - mColorMapping = colorMapping.clone(); - mColorResources = RemoteViews.ColorResources.create(mContext, mColorMapping); + setColorResources(RemoteViews.ColorResources.create(mContext, colorMapping)); + } + + /** @hide **/ + public void setColorResources(RemoteViews.ColorResources colorResources) { + if (colorResources == mColorResources) { + return; + } + mColorResources = colorResources; mColorMappingChanged = true; mViewMode = VIEW_MODE_NOINIT; reapplyLastRemoteViews(); @@ -934,7 +941,6 @@ public class AppWidgetHostView extends FrameLayout { public void resetColorResources() { if (mColorResources != null) { mColorResources = null; - mColorMapping = null; mColorMappingChanged = true; mViewMode = VIEW_MODE_NOINIT; reapplyLastRemoteViews(); diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 26b2f071e3f5..0e0b2dc3df8a 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -11051,10 +11051,7 @@ public class Intent implements Parcelable, Cloneable { if (!Objects.equals(this.mData, other.mData)) return false; if (!Objects.equals(this.mType, other.mType)) return false; if (!Objects.equals(this.mIdentifier, other.mIdentifier)) return false; - if (!(this.hasPackageEquivalentComponent() && other.hasPackageEquivalentComponent()) - && !Objects.equals(this.mPackage, other.mPackage)) { - return false; - } + if (!Objects.equals(this.mPackage, other.mPackage)) return false; if (!Objects.equals(this.mComponent, other.mComponent)) return false; if (!Objects.equals(this.mCategories, other.mCategories)) return false; @@ -11062,15 +11059,6 @@ public class Intent implements Parcelable, Cloneable { } /** - * Return {@code true} if the component name is not null and is in the same package that this - * intent limited to. otherwise return {@code false}. - */ - private boolean hasPackageEquivalentComponent() { - return mComponent != null - && (mPackage == null || mPackage.equals(mComponent.getPackageName())); - } - - /** * Generate hash code that matches semantics of filterEquals(). * * @return Returns the hash value of the action, data, type, class, and diff --git a/core/java/android/os/BaseBundle.java b/core/java/android/os/BaseBundle.java index 0418a4bb9f80..87579eb20890 100644 --- a/core/java/android/os/BaseBundle.java +++ b/core/java/android/os/BaseBundle.java @@ -29,6 +29,7 @@ import android.util.SparseArray; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.IndentingPrintWriter; +import com.android.internal.util.Preconditions; import java.io.Serializable; import java.lang.ref.WeakReference; @@ -113,17 +114,21 @@ public class BaseBundle { */ private boolean mParcelledByNative; - /* + /** * Flag indicating if mParcelledData is only referenced in this bundle. - * mParcelledData could be referenced by other bundles if mMap contains lazy values, + * mParcelledData could be referenced elsewhere if mMap contains lazy values, * and bundle data is copied to another bundle using putAll or the copy constructors. */ boolean mOwnsLazyValues = true; - /* + /** Tracks how many lazy values are referenced in mMap */ + private int mLazyValues = 0; + + /** * As mParcelledData is set to null when it is unparcelled, we keep a weak reference to * it to aid in recycling it. Do not use this reference otherwise. - */ + * Is non-null iff mMap contains lazy values. + */ private WeakReference<Parcel> mWeakParcelledData = null; /** @@ -310,7 +315,8 @@ public class BaseBundle { synchronized (this) { final Parcel source = mParcelledData; if (source != null) { - initializeFromParcelLocked(source, /*recycleParcel=*/ true, mParcelledByNative); + Preconditions.checkState(mOwnsLazyValues); + initializeFromParcelLocked(source, /*ownsParcel*/ true, mParcelledByNative); } else { if (DEBUG) { Log.d(TAG, "unparcel " @@ -401,11 +407,23 @@ public class BaseBundle { } } mMap.setValueAt(i, object); + mLazyValues--; + if (mOwnsLazyValues) { + Preconditions.checkState(mLazyValues >= 0, "Lazy values ref count below 0"); + // No more lazy values in mMap, so we can recycle the parcel early rather than + // waiting for the next GC run + if (mLazyValues == 0) { + Preconditions.checkState(mWeakParcelledData.get() != null, + "Parcel recycled earlier than expected"); + recycleParcel(mWeakParcelledData.get()); + mWeakParcelledData = null; + } + } } return (clazz != null) ? clazz.cast(object) : (T) object; } - private void initializeFromParcelLocked(@NonNull Parcel parcelledData, boolean recycleParcel, + private void initializeFromParcelLocked(@NonNull Parcel parcelledData, boolean ownsParcel, boolean parcelledByNative) { if (isEmptyParcel(parcelledData)) { if (DEBUG) { @@ -437,9 +455,10 @@ public class BaseBundle { map.erase(); map.ensureCapacity(count); } + int numLazyValues = 0; try { - recycleParcel &= parcelledData.readArrayMap(map, count, !parcelledByNative, - /* lazy */ true, mClassLoader); + numLazyValues = parcelledData.readArrayMap(map, count, !parcelledByNative, + /* lazy */ ownsParcel, mClassLoader); } catch (BadParcelableException e) { if (sShouldDefuse) { Log.w(TAG, "Failed to parse Bundle, but defusing quietly", e); @@ -448,14 +467,19 @@ public class BaseBundle { throw e; } } finally { - mMap = map; - if (recycleParcel) { - recycleParcel(parcelledData); - mWeakParcelledData = null; - } else { - mWeakParcelledData = new WeakReference<>(parcelledData); + mWeakParcelledData = null; + if (ownsParcel) { + if (numLazyValues == 0) { + recycleParcel(parcelledData); + } else { + mWeakParcelledData = new WeakReference<>(parcelledData); + } } + + mLazyValues = numLazyValues; mParcelledByNative = false; + mMap = map; + // Set field last as it is volatile mParcelledData = null; } if (DEBUG) { @@ -592,13 +616,17 @@ public class BaseBundle { /** * Removes all elements from the mapping of this Bundle. + * Recycles the underlying parcel if it is still present. */ public void clear() { unparcel(); if (mOwnsLazyValues && mWeakParcelledData != null) { recycleParcel(mWeakParcelledData.get()); - mWeakParcelledData = null; } + + mWeakParcelledData = null; + mLazyValues = 0; + mOwnsLazyValues = true; mMap.clear(); } @@ -1844,8 +1872,8 @@ public class BaseBundle { // had been constructed with parcel or to make sure they trigger deserialization of the // bundle immediately; neither of which is obvious. synchronized (this) { - initializeFromParcelLocked(parcel, /*recycleParcel=*/ false, isNativeBundle); - unparcel(/* itemwise */ true); + mOwnsLazyValues = false; + initializeFromParcelLocked(parcel, /*ownsParcel*/ false, isNativeBundle); } return; } @@ -1862,6 +1890,7 @@ public class BaseBundle { + ": " + length + " bundle bytes starting at " + offset); p.setDataPosition(0); + mOwnsLazyValues = true; mParcelledByNative = isNativeBundle; mParcelledData = p; } diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java index d55313273e3b..80201d327f64 100644 --- a/core/java/android/os/Parcel.java +++ b/core/java/android/os/Parcel.java @@ -71,7 +71,6 @@ import java.util.Set; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.IntFunction; -import java.util.function.Supplier; /** * Container for a message (data and object references) that can @@ -5242,20 +5241,20 @@ public final class Parcel { * Reads a map into {@code map}. * * @param sorted Whether the keys are sorted by their hashes, if so we use an optimized path. - * @param lazy Whether to populate the map with lazy {@link Supplier} objects for + * @param lazy Whether to populate the map with lazy {@link Function} objects for * length-prefixed values. See {@link Parcel#readLazyValue(ClassLoader)} for more * details. - * @return whether the parcel can be recycled or not. + * @return a count of the lazy values in the map * @hide */ - boolean readArrayMap(ArrayMap<? super String, Object> map, int size, boolean sorted, + int readArrayMap(ArrayMap<? super String, Object> map, int size, boolean sorted, boolean lazy, @Nullable ClassLoader loader) { - boolean recycle = true; + int lazyValues = 0; while (size > 0) { String key = readString(); Object value = (lazy) ? readLazyValue(loader) : readValue(loader); if (value instanceof LazyValue) { - recycle = false; + lazyValues++; } if (sorted) { map.append(key, value); @@ -5267,7 +5266,7 @@ public final class Parcel { if (sorted) { map.validate(); } - return recycle; + return lazyValues; } /** diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 2879cd888d2d..5eec05404144 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -594,8 +594,8 @@ public class RemoteViews implements Parcelable, Filter { * SUBCLASSES MUST BE IMMUTABLE SO CLONE WORKS!!!!! */ private abstract static class Action implements Parcelable { - public abstract void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) throws ActionException; + public abstract void apply(View root, ViewGroup rootParent, ActionApplyParams params) + throws ActionException; public static final int MERGE_REPLACE = 0; public static final int MERGE_APPEND = 1; @@ -626,7 +626,7 @@ public class RemoteViews implements Parcelable, Filter { * Override this if some of the tasks can be performed async. */ public Action initActionAsync(ViewTree root, ViewGroup rootParent, - InteractionHandler handler, ColorResources colorResources) { + ActionApplyParams params) { return this; } @@ -661,9 +661,7 @@ public class RemoteViews implements Parcelable, Filter { // Constant used during async execution. It is not parcelable. private static final Action ACTION_NOOP = new RuntimeAction() { @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { - } + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { } }; /** @@ -798,8 +796,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View view = root.findViewById(viewId); if (!(view instanceof AdapterView<?>)) return; @@ -834,8 +831,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, final InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null) return; @@ -846,7 +842,7 @@ public class RemoteViews implements Parcelable, Filter { OnItemClickListener listener = (parent, view, position, id) -> { RemoteResponse response = findRemoteResponseTag(view); if (response != null) { - response.handleViewInteraction(view, handler); + response.handleViewInteraction(view, params.handler); } }; av.setOnItemClickListener(listener); @@ -910,8 +906,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null) return; @@ -935,7 +930,7 @@ public class RemoteViews implements Parcelable, Filter { ((RemoteViewsListAdapter) a).setViewsList(list); } else { v.setAdapter(new RemoteViewsListAdapter(v.getContext(), list, viewTypeCount, - colorResources)); + params.colorResources)); } } else if (target instanceof AdapterViewAnimator) { AdapterViewAnimator v = (AdapterViewAnimator) target; @@ -944,7 +939,7 @@ public class RemoteViews implements Parcelable, Filter { ((RemoteViewsListAdapter) a).setViewsList(list); } else { v.setAdapter(new RemoteViewsListAdapter(v.getContext(), list, viewTypeCount, - colorResources)); + params.colorResources)); } } } @@ -1025,8 +1020,8 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) throws ActionException { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) + throws ActionException { View target = root.findViewById(viewId); if (target == null) return; @@ -1053,7 +1048,7 @@ public class RemoteViews implements Parcelable, Filter { && adapter.getViewTypeCount() >= mItems.getViewTypeCount()) { try { ((RemoteCollectionItemsAdapter) adapter).setData( - mItems, handler, colorResources); + mItems, params.handler, params.colorResources); } catch (Throwable throwable) { // setData should never failed with the validation in the items builder, but if // it does, catch and rethrow. @@ -1063,8 +1058,8 @@ public class RemoteViews implements Parcelable, Filter { } try { - adapterView.setAdapter( - new RemoteCollectionItemsAdapter(mItems, handler, colorResources)); + adapterView.setAdapter(new RemoteCollectionItemsAdapter(mItems, + params.handler, params.colorResources)); } catch (Throwable throwable) { // This could throw if the AdapterView somehow doesn't accept BaseAdapter due to // a type error. @@ -1095,8 +1090,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null) return; @@ -1124,17 +1118,17 @@ public class RemoteViews implements Parcelable, Filter { if (target instanceof AbsListView) { AbsListView v = (AbsListView) target; v.setRemoteViewsAdapter(intent, isAsync); - v.setRemoteViewsInteractionHandler(handler); + v.setRemoteViewsInteractionHandler(params.handler); } else if (target instanceof AdapterViewAnimator) { AdapterViewAnimator v = (AdapterViewAnimator) target; v.setRemoteViewsAdapter(intent, isAsync); - v.setRemoteViewsOnClickHandler(handler); + v.setRemoteViewsOnClickHandler(params.handler); } } @Override public Action initActionAsync(ViewTree root, ViewGroup rootParent, - InteractionHandler handler, ColorResources colorResources) { + ActionApplyParams params) { SetRemoteViewsAdapterIntent copy = new SetRemoteViewsAdapterIntent(viewId, intent); copy.isAsync = true; return copy; @@ -1173,8 +1167,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, final InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null) return; @@ -1215,7 +1208,7 @@ public class RemoteViews implements Parcelable, Filter { target.setTagInternal(com.android.internal.R.id.fillInIntent, null); return; } - target.setOnClickListener(v -> mResponse.handleViewInteraction(v, handler)); + target.setOnClickListener(v -> mResponse.handleViewInteraction(v, params.handler)); } @Override @@ -1253,8 +1246,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, final InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null) return; if (!(target instanceof CompoundButton)) { @@ -1287,7 +1279,7 @@ public class RemoteViews implements Parcelable, Filter { } OnCheckedChangeListener onCheckedChangeListener = - (v, isChecked) -> mResponse.handleViewInteraction(v, handler); + (v, isChecked) -> mResponse.handleViewInteraction(v, params.handler); button.setTagInternal(R.id.remote_checked_change_listener_tag, onCheckedChangeListener); button.setOnCheckedChangeListener(onCheckedChangeListener); } @@ -1459,8 +1451,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null) return; @@ -1517,8 +1508,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null) return; @@ -1561,8 +1551,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View view = root.findViewById(viewId); if (view == null) return; @@ -1675,12 +1664,12 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) throws ActionException { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) + throws ActionException { ReflectionAction ra = new ReflectionAction(viewId, methodName, BaseReflectionAction.BITMAP, bitmap); - ra.apply(root, rootParent, handler, colorResources); + ra.apply(root, rootParent, params); } @Override @@ -1756,8 +1745,7 @@ public class RemoteViews implements Parcelable, Filter { protected abstract Object getParameterValue(@Nullable View view) throws ActionException; @Override - public final void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public final void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View view = root.findViewById(viewId); if (view == null) return; @@ -1775,7 +1763,7 @@ public class RemoteViews implements Parcelable, Filter { @Override public final Action initActionAsync(ViewTree root, ViewGroup rootParent, - InteractionHandler handler, ColorResources colorResources) { + ActionApplyParams params) { final View view = root.findViewById(viewId); if (view == null) return ACTION_NOOP; @@ -2307,8 +2295,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { mRunnable.run(); } } @@ -2421,8 +2408,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final Context context = root.getContext(); final ViewGroup target = root.findViewById(viewId); @@ -2451,8 +2437,7 @@ public class RemoteViews implements Parcelable, Filter { target.removeViews(nextChild, recycledViewIndex - nextChild); } setNextRecyclableChild(target, nextChild + 1, target.getChildCount()); - rvToApply.reapplyNestedViews(context, child, rootParent, handler, - null /* size */, colorResources); + rvToApply.reapplyNestedViews(context, child, rootParent, params); return; } // If we cannot recycle the views, we still remove all views in between to @@ -2463,8 +2448,7 @@ public class RemoteViews implements Parcelable, Filter { // If we cannot recycle, insert the new view before the next recyclable child. // Inflate nested views and add as children - View nestedView = rvToApply.applyNestedViews(context, target, rootParent, handler, - null /* size */, colorResources); + View nestedView = rvToApply.apply(context, target, rootParent, null /* size */, params); if (mStableId != NO_ID) { setStableId(nestedView, mStableId); } @@ -2477,7 +2461,7 @@ public class RemoteViews implements Parcelable, Filter { @Override public Action initActionAsync(ViewTree root, ViewGroup rootParent, - InteractionHandler handler, ColorResources colorResources) { + ActionApplyParams params) { // In the async implementation, update the view tree so that subsequent calls to // findViewById return the current view. root.createTree(); @@ -2511,8 +2495,7 @@ public class RemoteViews implements Parcelable, Filter { setNextRecyclableChild(targetVg, nextChild + 1, target.mChildren.size()); final AsyncApplyTask reapplyTask = rvToApply.getInternalAsyncApplyTask( context, - targetVg, null /* listener */, handler, null /* size */, - colorResources, + targetVg, null /* listener */, params, null /* size */, recycled.mRoot); final ViewTree tree = reapplyTask.doInBackground(); if (tree == null) { @@ -2521,8 +2504,7 @@ public class RemoteViews implements Parcelable, Filter { return new RuntimeAction() { @Override public void apply(View root, ViewGroup rootParent, - InteractionHandler handler, ColorResources colorResources) - throws ActionException { + ActionApplyParams params) throws ActionException { reapplyTask.onPostExecute(tree); if (recycledViewIndex > nextChild) { targetVg.removeViews(nextChild, recycledViewIndex - nextChild); @@ -2533,23 +2515,22 @@ public class RemoteViews implements Parcelable, Filter { // If the layout id is different, still remove the children as if we recycled // the view, to insert at the same place. target.removeChildren(nextChild, recycledViewIndex - nextChild + 1); - return insertNewView(context, target, handler, colorResources, + return insertNewView(context, target, params, () -> targetVg.removeViews(nextChild, recycledViewIndex - nextChild + 1)); } } // If we cannot recycle, simply add the view at the same available slot. - return insertNewView(context, target, handler, colorResources, () -> {}); + return insertNewView(context, target, params, () -> {}); } - private Action insertNewView(Context context, ViewTree target, InteractionHandler handler, - ColorResources colorResources, Runnable finalizeAction) { + private Action insertNewView(Context context, ViewTree target, + ActionApplyParams params, Runnable finalizeAction) { ViewGroup targetVg = (ViewGroup) target.mRoot; int nextChild = getNextRecyclableChild(targetVg); final AsyncApplyTask task = mNestedViews.getInternalAsyncApplyTask(context, targetVg, - null /* listener */, handler, null /* size */, colorResources, - null /* result */); + null /* listener */, params, null /* size */, null /* result */); final ViewTree tree = task.doInBackground(); if (tree == null) { @@ -2569,8 +2550,7 @@ public class RemoteViews implements Parcelable, Filter { return new RuntimeAction() { @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) throws ActionException { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { task.onPostExecute(tree); finalizeAction.run(); targetVg.addView(task.mResult, insertIndex); @@ -2627,8 +2607,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final ViewGroup target = root.findViewById(viewId); if (target == null) { @@ -2652,7 +2631,7 @@ public class RemoteViews implements Parcelable, Filter { @Override public Action initActionAsync(ViewTree root, ViewGroup rootParent, - InteractionHandler handler, ColorResources colorResources) { + ActionApplyParams params) { // In the async implementation, update the view tree so that subsequent calls to // findViewById return the current view. root.createTree(); @@ -2676,8 +2655,7 @@ public class RemoteViews implements Parcelable, Filter { } return new RuntimeAction() { @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) throws ActionException { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { if (mViewIdToKeep == REMOVE_ALL_VIEWS_ID) { for (int i = targetVg.getChildCount() - 1; i >= 0; i--) { if (!hasStableId(targetVg.getChildAt(i))) { @@ -2736,8 +2714,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null || target == root) { @@ -2752,7 +2729,7 @@ public class RemoteViews implements Parcelable, Filter { @Override public Action initActionAsync(ViewTree root, ViewGroup rootParent, - InteractionHandler handler, ColorResources colorResources) { + ActionApplyParams params) { // In the async implementation, update the view tree so that subsequent calls to // findViewById return the correct view. root.createTree(); @@ -2771,8 +2748,7 @@ public class RemoteViews implements Parcelable, Filter { parent.mChildren.remove(target); return new RuntimeAction() { @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) throws ActionException { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { parentVg.removeView(target.mRoot); } }; @@ -2851,8 +2827,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final TextView target = root.findViewById(viewId); if (target == null) return; if (drawablesLoaded) { @@ -2883,7 +2858,7 @@ public class RemoteViews implements Parcelable, Filter { @Override public Action initActionAsync(ViewTree root, ViewGroup rootParent, - InteractionHandler handler, ColorResources colorResources) { + ActionApplyParams params) { final TextView target = root.findViewById(viewId); if (target == null) return ACTION_NOOP; @@ -2961,8 +2936,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final TextView target = root.findViewById(viewId); if (target == null) return; target.setTextSize(units, size); @@ -3007,8 +2981,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null) return; target.setPadding(left, top, right, bottom); @@ -3084,8 +3057,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null) { return; @@ -3230,8 +3202,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(viewId); if (target == null) return; @@ -3266,8 +3237,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { // Let's traverse the viewtree and override all textColors! Stack<View> viewsToProcess = new Stack<>(); viewsToProcess.add(root); @@ -3317,8 +3287,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) { final View target = root.findViewById(mViewId); if (target == null) return; @@ -3352,8 +3321,7 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) throws ActionException { final View target = root.findViewById(viewId); if (target == null) return; @@ -3404,8 +3372,8 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) throws ActionException { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) + throws ActionException { final View target = root.findViewById(viewId); if (target == null) return; @@ -3483,8 +3451,8 @@ public class RemoteViews implements Parcelable, Filter { } @Override - public void apply(View root, ViewGroup rootParent, InteractionHandler handler, - ColorResources colorResources) throws ActionException { + public void apply(View root, ViewGroup rootParent, ActionApplyParams params) + throws ActionException { final View target = root.findViewById(viewId); if (target == null) return; @@ -5578,54 +5546,41 @@ public class RemoteViews implements Parcelable, Filter { /** @hide */ public View apply(@NonNull Context context, @NonNull ViewGroup parent, @Nullable InteractionHandler handler, @Nullable SizeF size) { - RemoteViews rvToApply = getRemoteViewsToApply(context, size); - - View result = inflateView(context, rvToApply, parent); - rvToApply.performApply(result, parent, handler, null); - return result; + return apply(context, parent, size, new ActionApplyParams() + .withInteractionHandler(handler)); } /** @hide */ public View applyWithTheme(@NonNull Context context, @NonNull ViewGroup parent, @Nullable InteractionHandler handler, @StyleRes int applyThemeResId) { - return applyWithTheme(context, parent, handler, applyThemeResId, null); - } - - /** @hide */ - public View applyWithTheme(@NonNull Context context, @NonNull ViewGroup parent, - @Nullable InteractionHandler handler, @StyleRes int applyThemeResId, - @Nullable SizeF size) { - RemoteViews rvToApply = getRemoteViewsToApply(context, size); - - View result = inflateView(context, rvToApply, parent, applyThemeResId, null); - rvToApply.performApply(result, parent, handler, null); - return result; + return apply(context, parent, null, new ActionApplyParams() + .withInteractionHandler(handler) + .withThemeResId(applyThemeResId)); } /** @hide */ public View apply(Context context, ViewGroup parent, InteractionHandler handler, @Nullable SizeF size, @Nullable ColorResources colorResources) { - RemoteViews rvToApply = getRemoteViewsToApply(context, size); + return apply(context, parent, size, new ActionApplyParams() + .withInteractionHandler(handler) + .withColorResources(colorResources)); + } - View result = inflateView(context, rvToApply, parent, 0, colorResources); - rvToApply.performApply(result, parent, handler, colorResources); - return result; + /** @hide **/ + public View apply(Context context, ViewGroup parent, @Nullable SizeF size, + ActionApplyParams params) { + return apply(context, parent, parent, size, params); } - private View applyNestedViews(Context context, ViewGroup directParent, - ViewGroup rootParent, InteractionHandler handler, SizeF size, - ColorResources colorResources) { + private View apply(Context context, ViewGroup directParent, ViewGroup rootParent, + @Nullable SizeF size, ActionApplyParams params) { RemoteViews rvToApply = getRemoteViewsToApply(context, size); - - View result = inflateView(context, rvToApply, directParent, 0, colorResources); - rvToApply.performApply(result, rootParent, handler, colorResources); + View result = inflateView(context, rvToApply, directParent, + params.applyThemeResId, params.colorResources); + rvToApply.performApply(result, rootParent, params); return result; } - private View inflateView(Context context, RemoteViews rv, ViewGroup parent) { - return inflateView(context, rv, parent, 0, null); - } - private View inflateView(Context context, RemoteViews rv, @Nullable ViewGroup parent, @StyleRes int applyThemeResId, @Nullable ColorResources colorResources) { // RemoteViews may be built by an application installed in another @@ -5704,7 +5659,6 @@ public class RemoteViews implements Parcelable, Filter { return applyAsync(context, parent, executor, listener, null /* handler */); } - /** @hide */ public CancellationSignal applyAsync(Context context, ViewGroup parent, Executor executor, OnViewAppliedListener listener, InteractionHandler handler) { @@ -5723,16 +5677,19 @@ public class RemoteViews implements Parcelable, Filter { public CancellationSignal applyAsync(Context context, ViewGroup parent, Executor executor, OnViewAppliedListener listener, InteractionHandler handler, SizeF size, ColorResources colorResources) { + + ActionApplyParams params = new ActionApplyParams() + .withInteractionHandler(handler) + .withColorResources(colorResources) + .withExecutor(executor); return new AsyncApplyTask(getRemoteViewsToApply(context, size), parent, context, listener, - handler, colorResources, null /* result */, - true /* topLevel */).startTaskOnExecutor(executor); + params, null /* result */, true /* topLevel */).startTaskOnExecutor(executor); } private AsyncApplyTask getInternalAsyncApplyTask(Context context, ViewGroup parent, - OnViewAppliedListener listener, InteractionHandler handler, SizeF size, - ColorResources colorResources, View result) { + OnViewAppliedListener listener, ActionApplyParams params, SizeF size, View result) { return new AsyncApplyTask(getRemoteViewsToApply(context, size), parent, context, listener, - handler, colorResources, result, false /* topLevel */); + params, result, false /* topLevel */); } private class AsyncApplyTask extends AsyncTask<Void, Void, ViewTree> @@ -5742,8 +5699,8 @@ public class RemoteViews implements Parcelable, Filter { final ViewGroup mParent; final Context mContext; final OnViewAppliedListener mListener; - final InteractionHandler mHandler; - final ColorResources mColorResources; + final ActionApplyParams mApplyParams; + /** * Whether the remote view is the top-level one (i.e. not within an action). * @@ -5758,16 +5715,13 @@ public class RemoteViews implements Parcelable, Filter { private AsyncApplyTask( RemoteViews rv, ViewGroup parent, Context context, OnViewAppliedListener listener, - InteractionHandler handler, ColorResources colorResources, - View result, boolean topLevel) { + ActionApplyParams applyParams, View result, boolean topLevel) { mRV = rv; mParent = parent; mContext = context; mListener = listener; - mColorResources = colorResources; - mHandler = handler; mTopLevel = topLevel; - + mApplyParams = applyParams; mResult = result; } @@ -5776,17 +5730,18 @@ public class RemoteViews implements Parcelable, Filter { protected ViewTree doInBackground(Void... params) { try { if (mResult == null) { - mResult = inflateView(mContext, mRV, mParent, 0, mColorResources); + mResult = inflateView(mContext, mRV, mParent, 0, mApplyParams.colorResources); } mTree = new ViewTree(mResult); + if (mRV.mActions != null) { int count = mRV.mActions.size(); mActions = new Action[count]; for (int i = 0; i < count && !isCancelled(); i++) { // TODO: check if isCancelled in nested views. - mActions[i] = mRV.mActions.get(i).initActionAsync(mTree, mParent, mHandler, - mColorResources); + mActions[i] = mRV.mActions.get(i) + .initActionAsync(mTree, mParent, mApplyParams); } } else { mActions = null; @@ -5808,10 +5763,13 @@ public class RemoteViews implements Parcelable, Filter { try { if (mActions != null) { - InteractionHandler handler = mHandler == null - ? DEFAULT_INTERACTION_HANDLER : mHandler; + + ActionApplyParams applyParams = mApplyParams.clone(); + if (applyParams.handler == null) { + applyParams.handler = DEFAULT_INTERACTION_HANDLER; + } for (Action a : mActions) { - a.apply(viewTree.mRoot, mParent, handler, mColorResources); + a.apply(viewTree.mRoot, mParent, applyParams); } } // If the parent of the view is has is a root, resolve the recycling. @@ -5859,18 +5817,43 @@ public class RemoteViews implements Parcelable, Filter { * the {@link #apply(Context,ViewGroup)} call. */ public void reapply(Context context, View v) { - reapply(context, v, null /* handler */); + reapply(context, v, null /* size */, new ActionApplyParams()); } /** @hide */ public void reapply(Context context, View v, InteractionHandler handler) { - reapply(context, v, handler, null /* size */, null /* colorResources */); + reapply(context, v, null /* size */, + new ActionApplyParams().withInteractionHandler(handler)); } /** @hide */ public void reapply(Context context, View v, InteractionHandler handler, SizeF size, ColorResources colorResources) { - reapply(context, v, handler, size, colorResources, true); + reapply(context, v, size, new ActionApplyParams() + .withInteractionHandler(handler).withColorResources(colorResources)); + } + + /** @hide */ + public void reapply(Context context, View v, @Nullable SizeF size, ActionApplyParams params) { + reapply(context, v, (ViewGroup) v.getParent(), size, params, true); + } + + private void reapplyNestedViews(Context context, View v, ViewGroup rootParent, + ActionApplyParams params) { + reapply(context, v, rootParent, null, params, false); + } + + // Note: topLevel should be true only for calls on the topLevel RemoteViews, internal calls + // should set it to false. + private void reapply(Context context, View v, ViewGroup rootParent, + @Nullable SizeF size, ActionApplyParams params, boolean topLevel) { + RemoteViews rvToApply = getRemoteViewsToReapply(context, v, size); + rvToApply.performApply(v, rootParent, params); + + // If the parent of the view is has is a root, resolve the recycling. + if (topLevel && v instanceof ViewGroup) { + finalizeViewRecycling((ViewGroup) v); + } } /** @hide */ @@ -5922,27 +5905,6 @@ public class RemoteViews implements Parcelable, Filter { return rvToApply; } - // Note: topLevel should be true only for calls on the topLevel RemoteViews, internal calls - // should set it to false. - private void reapply(Context context, View v, InteractionHandler handler, SizeF size, - ColorResources colorResources, boolean topLevel) { - - RemoteViews rvToApply = getRemoteViewsToReapply(context, v, size); - - rvToApply.performApply(v, (ViewGroup) v.getParent(), handler, colorResources); - - // If the parent of the view is has is a root, resolve the recycling. - if (topLevel && v instanceof ViewGroup) { - finalizeViewRecycling((ViewGroup) v); - } - } - - private void reapplyNestedViews(Context context, View v, ViewGroup rootParent, - InteractionHandler handler, SizeF size, ColorResources colorResources) { - RemoteViews rvToApply = getRemoteViewsToReapply(context, v, size); - rvToApply.performApply(v, rootParent, handler, colorResources); - } - /** * Applies all the actions to the provided view, moving as much of the task on the background * thread as possible. @@ -5973,19 +5935,25 @@ public class RemoteViews implements Parcelable, Filter { ColorResources colorResources) { RemoteViews rvToApply = getRemoteViewsToReapply(context, v, size); + ActionApplyParams params = new ActionApplyParams() + .withColorResources(colorResources) + .withInteractionHandler(handler) + .withExecutor(executor); + return new AsyncApplyTask(rvToApply, (ViewGroup) v.getParent(), - context, listener, handler, colorResources, v, true /* topLevel */) + context, listener, params, v, true /* topLevel */) .startTaskOnExecutor(executor); } - private void performApply(View v, ViewGroup parent, InteractionHandler handler, - ColorResources colorResources) { + private void performApply(View v, ViewGroup parent, ActionApplyParams params) { + params = params.clone(); + if (params.handler == null) { + params.handler = DEFAULT_INTERACTION_HANDLER; + } if (mActions != null) { - handler = handler == null ? DEFAULT_INTERACTION_HANDLER : handler; final int count = mActions.size(); for (int i = 0; i < count; i++) { - Action a = mActions.get(i); - a.apply(v, parent, handler, colorResources); + mActions.get(i).apply(v, parent, params); } } } @@ -6043,6 +6011,47 @@ public class RemoteViews implements Parcelable, Filter { } /** + * Utility class to hold all the options when applying the remote views + * @hide + */ + public class ActionApplyParams { + + public InteractionHandler handler; + public ColorResources colorResources; + public Executor executor; + @StyleRes public int applyThemeResId; + + @Override + public ActionApplyParams clone() { + return new ActionApplyParams() + .withInteractionHandler(handler) + .withColorResources(colorResources) + .withExecutor(executor) + .withThemeResId(applyThemeResId); + } + + public ActionApplyParams withInteractionHandler(InteractionHandler handler) { + this.handler = handler; + return this; + } + + public ActionApplyParams withColorResources(ColorResources colorResources) { + this.colorResources = colorResources; + return this; + } + + public ActionApplyParams withThemeResId(@StyleRes int themeResId) { + this.applyThemeResId = themeResId; + return this; + } + + public ActionApplyParams withExecutor(Executor executor) { + this.executor = executor; + return this; + } + } + + /** * Object allowing the modification of a context to overload the system's dynamic colors. * * Only colors from {@link android.R.color#system_accent1_0} to @@ -6056,10 +6065,12 @@ public class RemoteViews implements Parcelable, Filter { // Size, in bytes, of an entry in the array of colors in an ARSC file. private static final int ARSC_ENTRY_SIZE = 16; - private ResourcesLoader mLoader; + private final ResourcesLoader mLoader; + private final SparseIntArray mColorMapping; - private ColorResources(ResourcesLoader loader) { + private ColorResources(ResourcesLoader loader, SparseIntArray colorMapping) { mLoader = loader; + mColorMapping = colorMapping; } /** @@ -6071,6 +6082,10 @@ public class RemoteViews implements Parcelable, Filter { context.getResources().addLoaders(mLoader); } + public SparseIntArray getColorMapping() { + return mColorMapping; + } + private static ByteArrayOutputStream readFileContent(InputStream input) throws IOException { ByteArrayOutputStream content = new ByteArrayOutputStream(2048); byte[] buffer = new byte[4096]; @@ -6145,7 +6160,7 @@ public class RemoteViews implements Parcelable, Filter { ResourcesLoader colorsLoader = new ResourcesLoader(); colorsLoader.addProvider(ResourcesProvider .loadFromTable(pfd, null /* assetsProvider */)); - return new ColorResources(colorsLoader); + return new ColorResources(colorsLoader, colorMapping.clone()); } } } finally { diff --git a/core/java/com/android/internal/os/BinderCallsStats.java b/core/java/com/android/internal/os/BinderCallsStats.java index 0a29fc5285a5..fa6fa55cbde9 100644 --- a/core/java/com/android/internal/os/BinderCallsStats.java +++ b/core/java/com/android/internal/os/BinderCallsStats.java @@ -1169,7 +1169,15 @@ public class BinderCallsStats implements BinderInternal.Observer { } + /** @hide */ + public static void startForWifi(Context context) { + new BinderCallsStats.SettingsObserver( + context, + new BinderCallsStats( + new BinderCallsStats.Injector(), + com.android.internal.os.BinderLatencyProto.Dims.WIFI)); + } /** * Settings observer for other processes (not system_server). diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java index 578b5880c5f0..2c9ef4f3c059 100644 --- a/core/java/com/android/server/SystemConfig.java +++ b/core/java/com/android/server/SystemConfig.java @@ -339,6 +339,8 @@ public class SystemConfig { // A map from package name of vendor APEXes that can be updated to an installer package name // allowed to install updates for it. private final ArrayMap<String, String> mAllowedVendorApexes = new ArrayMap<>(); + // A set of package names that are allowed to use <install-constraints> manifest tag. + private final Set<String> mInstallConstraintsAllowlist = new ArraySet<>(); private String mModulesInstallerPackageName; @@ -535,6 +537,10 @@ public class SystemConfig { return mAllowedVendorApexes; } + public Set<String> getInstallConstraintsAllowlist() { + return mInstallConstraintsAllowlist; + } + public String getModulesInstallerPackageName() { return mModulesInstallerPackageName; } @@ -1455,6 +1461,20 @@ public class SystemConfig { } XmlUtils.skipCurrentTag(parser); } break; + case "install-constraints-allowed": { + if (allowAppConfigs) { + String packageName = parser.getAttributeValue(null, "package"); + if (packageName == null) { + Slog.w(TAG, "<" + name + "> without package in " + permFile + + " at " + parser.getPositionDescription()); + } else { + mInstallConstraintsAllowlist.add(packageName); + } + } else { + logNotAllowedInPartition(name, permFile, parser); + } + XmlUtils.skipCurrentTag(parser); + } break; default: { Slog.w(TAG, "Tag " + name + " is unknown in " + permFile + " at " + parser.getPositionDescription()); diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 0acf7031e407..062523ed5f23 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -3607,4 +3607,19 @@ false, the application cannot be profiled at all. Defaults to true. --> <attr name="enabled" format="boolean" /> </declare-styleable> + + <!-- <code>install-constraints</code> tag rejects installs unless one the constraints defined by + its child elements is true. + It is possible to have multiple <code>install-constraints</code> tags in a single manifest, + where each tag is evaluated independently. + @hide --> + <declare-styleable name="AndroidManifestInstallConstraints" parent="AndroidManifest" /> + + <!-- A constraint for <code>install-constraints</code>. Checks that the device fingerprint + starts with the given prefix. + @hide --> + <declare-styleable name="AndroidManifestInstallConstraintsFingerprintPrefix" + parent="AndroidManifestInstallConstraints"> + <attr name="value" /> + </declare-styleable> </resources> diff --git a/core/tests/mockingcoretests/src/android/os/BundleRecyclingTest.java b/core/tests/mockingcoretests/src/android/os/BundleRecyclingTest.java index 7c7649813824..c88ab903e86e 100644 --- a/core/tests/mockingcoretests/src/android/os/BundleRecyclingTest.java +++ b/core/tests/mockingcoretests/src/android/os/BundleRecyclingTest.java @@ -23,6 +23,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; @@ -34,7 +35,6 @@ import androidx.test.filters.SmallTest; import com.android.dx.mockito.inline.extended.StaticMockitoSession; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.quality.Strictness; @@ -56,16 +56,11 @@ public class BundleRecyclingTest { private Parcel mParcelSpy; private Bundle mBundle; - @Before - public void setUp() throws Exception { - setUpBundle(/* hasLazy */ true); - } - @Test public void bundleClear_whenUnparcelledWithoutLazy_recyclesParcelOnce() { - setUpBundle(/* hasLazy */ false); + setUpBundle(/* lazy */ 0, /* nonLazy */ 1); // Will unparcel and immediately recycle parcel - assertNotNull(mBundle.getString("key")); + assertNotNull(mBundle.getString("nonLazy0")); verify(mParcelSpy, times(1)).recycle(); assertFalse(mBundle.isDefinitelyEmpty()); @@ -77,6 +72,7 @@ public class BundleRecyclingTest { @Test public void bundleClear_whenParcelled_recyclesParcel() { + setUpBundle(/* lazy */ 1); assertTrue(mBundle.isParcelled()); verify(mParcelSpy, times(0)).recycle(); @@ -90,23 +86,9 @@ public class BundleRecyclingTest { } @Test - public void bundleClear_whenUnparcelledWithLazyValueUnwrapped_recyclesParcel() { - // Will unparcel with a lazy value, and immediately unwrap the lazy value, - // with no lazy values left at the end of getParcelable - assertNotNull(mBundle.getParcelable("key", CustomParcelable.class)); - verify(mParcelSpy, times(0)).recycle(); - - mBundle.clear(); - verify(mParcelSpy, times(1)).recycle(); - assertTrue(mBundle.isDefinitelyEmpty()); - - // Should not recycle again - mBundle.clear(); - verify(mParcelSpy, times(1)).recycle(); - } - - @Test public void bundleClear_whenUnparcelledWithLazy_recyclesParcel() { + setUpBundle(/* lazy */ 1); + // Will unparcel but keep the CustomParcelable lazy assertFalse(mBundle.isEmpty()); verify(mParcelSpy, times(0)).recycle(); @@ -122,6 +104,8 @@ public class BundleRecyclingTest { @Test public void bundleClear_whenClearedWithSharedParcel_doesNotRecycleParcel() { + setUpBundle(/* lazy */ 1); + Bundle copy = new Bundle(); copy.putAll(mBundle); @@ -136,6 +120,8 @@ public class BundleRecyclingTest { @Test public void bundleClear_whenClearedWithCopiedParcel_doesNotRecycleParcel() { + setUpBundle(/* lazy */ 1); + // Will unparcel but keep the CustomParcelable lazy assertFalse(mBundle.isEmpty()); @@ -151,7 +137,101 @@ public class BundleRecyclingTest { verify(mParcelSpy, never()).recycle(); } - private void setUpBundle(boolean hasLazy) { + @Test + public void bundleGet_whenUnparcelledWithLazyValueUnwrapped_recyclesParcel() { + setUpBundle(/* lazy */ 1); + + // Will unparcel with a lazy value, and immediately unwrap the lazy value, + // with no lazy values left at the end of getParcelable + // Ref counting should immediately recycle + assertNotNull(mBundle.getParcelable("lazy0", CustomParcelable.class)); + verify(mParcelSpy, times(1)).recycle(); + + // Should not recycle again + assertNotNull(mBundle.getParcelable("lazy0", CustomParcelable.class)); + mBundle.clear(); + verify(mParcelSpy, times(1)).recycle(); + } + + @Test + public void bundleGet_whenMultipleLazy_recyclesParcelWhenAllUnwrapped() { + setUpBundle(/* lazy */ 2); + + assertNotNull(mBundle.getParcelable("lazy0", CustomParcelable.class)); + verify(mParcelSpy, times(0)).recycle(); + + assertNotNull(mBundle.getParcelable("lazy0", CustomParcelable.class)); + verify(mParcelSpy, times(0)).recycle(); + + assertNotNull(mBundle.getParcelable("lazy1", CustomParcelable.class)); + verify(mParcelSpy, times(1)).recycle(); + + // Should not recycle again + assertNotNull(mBundle.getParcelable("lazy0", CustomParcelable.class)); + mBundle.clear(); + verify(mParcelSpy, times(1)).recycle(); + assertTrue(mBundle.isDefinitelyEmpty()); + } + + @Test + public void bundleGet_whenLazyAndNonLazy_recyclesParcelWhenAllUnwrapped() { + setUpBundle(/* lazy */ 1, /* nonLazy */ 1); + + assertNotNull(mBundle.getParcelable("lazy0", CustomParcelable.class)); + verify(mParcelSpy, times(1)).recycle(); + + // Should not recycle again + assertNotNull(mBundle.getString("nonLazy0")); + assertNotNull(mBundle.getParcelable("lazy0", CustomParcelable.class)); + mBundle.clear(); + verify(mParcelSpy, times(1)).recycle(); + } + + @Test + public void bundleGet_whenLazyAndNonLazy_doesNotRecycleWhenOnlyNonLazyRetrieved() { + setUpBundle(/* lazy */ 1, /* nonLazy */ 1); + + assertNotNull(mBundle.getString("nonLazy0")); + verify(mParcelSpy, times(0)).recycle(); + + assertNotNull(mBundle.getString("nonLazy0")); + verify(mParcelSpy, times(0)).recycle(); + + assertNotNull(mBundle.getParcelable("lazy0", CustomParcelable.class)); + verify(mParcelSpy, times(1)).recycle(); + } + + @Test + public void bundleGet_withWithSharedParcel_doesNotRecycleParcel() { + setUpBundle(/* lazy */ 1); + + Bundle copy = new Bundle(); + copy.putAll(mBundle); + + assertNotNull(mBundle.getParcelable("lazy0", CustomParcelable.class)); + mBundle.clear(); + + assertNotNull(copy.getParcelable("lazy0", CustomParcelable.class)); + copy.clear(); + + verify(mParcelSpy, never()).recycle(); + } + + @Test + public void bundleGet_getAfterLazyCleared_doesNotRecycleAgain() { + setUpBundle(/* lazy */ 1); + mBundle.clear(); + verify(mParcelSpy, times(1)).recycle(); + + assertNull(mBundle.getParcelable("lazy0", CustomParcelable.class)); + verify(mParcelSpy, times(1)).recycle(); + } + + private void setUpBundle(int lazy) { + setUpBundle(lazy, /* nonLazy */ 0); + } + + private void setUpBundle(int lazy, int nonLazy) { AtomicReference<Parcel> parcel = new AtomicReference<>(); StaticMockitoSession session = mockitoSession() .strictness(Strictness.STRICT_STUBS) @@ -166,7 +246,7 @@ public class BundleRecyclingTest { Bundle bundle = new Bundle(); bundle.setClassLoader(getClass().getClassLoader()); - Parcel p = createBundle(hasLazy); + Parcel p = createBundle(lazy, nonLazy); bundle.readFromParcel(p); p.recycle(); @@ -179,13 +259,17 @@ public class BundleRecyclingTest { /** * Create a test bundle, parcel it and return the parcel. */ - private Parcel createBundle(boolean hasLazy) { + private Parcel createBundle(int lazy, int nonLazy) { final Bundle source = new Bundle(); - if (hasLazy) { - source.putParcelable("key", new CustomParcelable(13, "Tiramisu")); - } else { - source.putString("key", "tiramisu"); + + for (int i = 0; i < nonLazy; i++) { + source.putString("nonLazy" + i, "Tiramisu"); } + + for (int i = 0; i < lazy; i++) { + source.putParcelable("lazy" + i, new CustomParcelable(13, "Tiramisu")); + } + return getParcelledBundle(source); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java index 40cf9a32d7a5..85c8ebf454c9 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java @@ -1130,16 +1130,16 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange boolean adjusted = false; if (mYOffsetForIme != 0) { if (dividerLeash != null) { - mTempRect.set(mDividerBounds); + getRefDividerBounds(mTempRect); mTempRect.offset(0, mYOffsetForIme); t.setPosition(dividerLeash, mTempRect.left, mTempRect.top); } - mTempRect.set(mBounds1); + getRefBounds1(mTempRect); mTempRect.offset(0, mYOffsetForIme); t.setPosition(leash1, mTempRect.left, mTempRect.top); - mTempRect.set(mBounds2); + getRefBounds2(mTempRect); mTempRect.offset(0, mYOffsetForIme); t.setPosition(leash2, mTempRect.left, mTempRect.top); adjusted = true; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java index cf2734c375f2..81e49f884503 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java @@ -183,7 +183,7 @@ public class PipAnimationController { return mCurrentAnimator; } - PipTransitionAnimator getCurrentAnimator() { + public PipTransitionAnimator getCurrentAnimator() { return mCurrentAnimator; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java index 1155ea174ed1..f747b5e00759 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java @@ -127,7 +127,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private final PipBoundsAlgorithm mPipBoundsAlgorithm; private final @NonNull PipMenuController mPipMenuController; private final PipAnimationController mPipAnimationController; - private final PipTransitionController mPipTransitionController; + protected final PipTransitionController mPipTransitionController; protected final PipParamsChangedForwarder mPipParamsChangedForwarder; private final PipUiEventLogger mPipUiEventLoggerLogger; private final int mEnterAnimationDuration; @@ -196,6 +196,26 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, } }; + @VisibleForTesting + final PipTransitionController.PipTransitionCallback mPipTransitionCallback = + new PipTransitionController.PipTransitionCallback() { + @Override + public void onPipTransitionStarted(int direction, Rect pipBounds) {} + + @Override + public void onPipTransitionFinished(int direction) { + // Apply the deferred RunningTaskInfo if applicable after all proper callbacks + // are sent. + if (direction == TRANSITION_DIRECTION_TO_PIP && mDeferredTaskInfo != null) { + onTaskInfoChanged(mDeferredTaskInfo); + mDeferredTaskInfo = null; + } + } + + @Override + public void onPipTransitionCanceled(int direction) {} + }; + private final PipAnimationController.PipTransactionHandler mPipTransactionHandler = new PipAnimationController.PipTransactionHandler() { @Override @@ -216,7 +236,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private ActivityManager.RunningTaskInfo mDeferredTaskInfo; private WindowContainerToken mToken; private SurfaceControl mLeash; - private PipTransitionState mPipTransitionState; + protected PipTransitionState mPipTransitionState; private @PipAnimationController.AnimationType int mOneShotAnimationType = ANIM_TYPE_BOUNDS; private long mLastOneShotAlphaAnimationTime; private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory @@ -296,6 +316,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, mTaskOrganizer.addFocusListener(this); mPipTransitionController.setPipOrganizer(this); displayController.addDisplayWindowListener(this); + pipTransitionController.registerPipTransitionCallback(mPipTransitionCallback); } public PipTransitionController getTransitionController() { @@ -773,11 +794,6 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, mPipTransitionState.setTransitionState(PipTransitionState.ENTERED_PIP); } mPipTransitionController.sendOnPipTransitionFinished(direction); - // Apply the deferred RunningTaskInfo if applicable after all proper callbacks are sent. - if (direction == TRANSITION_DIRECTION_TO_PIP && mDeferredTaskInfo != null) { - onTaskInfoChanged(mDeferredTaskInfo); - mDeferredTaskInfo = null; - } } private void sendOnPipTransitionCancelled( diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java index 2858e874741c..33761d23379d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java @@ -317,7 +317,8 @@ public class PipTransition extends PipTransitionController { } @Override - public void onTransitionConsumed(@NonNull IBinder transition, boolean aborted) { + public void onTransitionConsumed(@NonNull IBinder transition, boolean aborted, + @Nullable SurfaceControl.Transaction finishT) { if (transition != mExitTransition) { return; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java index de7e7bd1c506..d6120c409506 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java @@ -21,6 +21,7 @@ import static android.app.ActivityManager.START_TASK_TO_FRONT; import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION; import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.RemoteAnimationTarget.MODE_OPENING; import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission; import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT; @@ -90,7 +91,6 @@ import com.android.wm.shell.transition.Transitions; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.util.Arrays; import java.util.Objects; import java.util.Optional; import java.util.concurrent.Executor; @@ -453,12 +453,12 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, mStageCoordinator.prepareEvictInvisibleChildTasks(wct); mSyncQueue.queue(wct); } - return reparentSplitTasksForAnimation(apps, true /*splitExpectedToBeVisible*/); + return reparentSplitTasksForAnimation(apps, false /* enterSplitScreen */); } RemoteAnimationTarget[] onStartingSplitLegacy(RemoteAnimationTarget[] apps) { try { - return reparentSplitTasksForAnimation(apps, false /*splitExpectedToBeVisible*/); + return reparentSplitTasksForAnimation(apps, true /* enterSplitScreen */); } finally { for (RemoteAnimationTarget appTarget : apps) { if (appTarget.leash != null) { @@ -469,14 +469,23 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, } private RemoteAnimationTarget[] reparentSplitTasksForAnimation(RemoteAnimationTarget[] apps, - boolean splitExpectedToBeVisible) { + boolean enterSplitScreen) { if (ENABLE_SHELL_TRANSITIONS) return null; - // TODO(b/206487881): Integrate this with shell transition. - if (splitExpectedToBeVisible && !isSplitScreenVisible()) return null; - // Split not visible, but not enough apps to have split, also return null - if (!splitExpectedToBeVisible && apps.length < 2) return null; - SurfaceControl.Transaction transaction = new SurfaceControl.Transaction(); + if (enterSplitScreen) { + int openingApps = 0; + for (int i = 0; i < apps.length; ++i) { + if (apps[i].mode == MODE_OPENING) openingApps++; + } + if (openingApps < 2) { + // Not having enough apps to enter split screen + return null; + } + } else if (!isSplitScreenVisible()) { + return null; + } + + final SurfaceControl.Transaction transaction = mTransactionPool.acquire(); if (mSplitTasksContainerLayer != null) { // Remove the previous layer before recreating transaction.remove(mSplitTasksContainerLayer); @@ -489,17 +498,14 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, mRootTDAOrganizer.attachToDisplayArea(DEFAULT_DISPLAY, builder); mSplitTasksContainerLayer = builder.build(); - // Ensure that we order these in the parent in the right z-order as their previous order - Arrays.sort(apps, (a1, a2) -> a1.prefixOrderIndex - a2.prefixOrderIndex); - int layer = 1; - for (RemoteAnimationTarget appTarget : apps) { + for (int i = 0; i < apps.length; ++i) { + final RemoteAnimationTarget appTarget = apps[i]; transaction.reparent(appTarget.leash, mSplitTasksContainerLayer); transaction.setPosition(appTarget.leash, appTarget.screenSpaceBounds.left, appTarget.screenSpaceBounds.top); - transaction.setLayer(appTarget.leash, layer++); } transaction.apply(); - transaction.close(); + mTransactionPool.release(transaction); return new RemoteAnimationTarget[]{mStageCoordinator.getDividerBarLegacyTarget()}; } /** diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java index 83bdf8bfb727..d7ca791e3863 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java @@ -94,6 +94,7 @@ class SplitScreenTransitions { @NonNull WindowContainerToken topRoot) { mFinishCallback = finishCallback; mAnimatingTransition = transition; + mFinishTransaction = finishTransaction; if (mPendingRemoteHandler != null) { mPendingRemoteHandler.startAnimation(transition, info, startTransaction, finishTransaction, mRemoteFinishCB); @@ -107,8 +108,6 @@ class SplitScreenTransitions { private void playInternalAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info, @NonNull SurfaceControl.Transaction t, @NonNull WindowContainerToken mainRoot, @NonNull WindowContainerToken sideRoot, @NonNull WindowContainerToken topRoot) { - mFinishTransaction = mTransactionPool.acquire(); - // Play some place-holder fade animations for (int i = info.getChanges().size() - 1; i >= 0; --i) { final TransitionInfo.Change change = info.getChanges().get(i); @@ -287,16 +286,14 @@ class SplitScreenTransitions { return true; } - void onTransitionConsumed(@NonNull IBinder transition, boolean aborted) { + void onTransitionConsumed(@NonNull IBinder transition, boolean aborted, + @Nullable SurfaceControl.Transaction finishT) { if (isPendingEnter(transition)) { if (!aborted) { // An enter transition got merged, appends the rest operations to finish entering // split screen. - // TODO (b/238856352): Passed-in the proper finish transition to merge instead. - if (mFinishTransaction == null) { - mFinishTransaction = mTransactionPool.acquire(); - } - mStageCoordinator.finishEnterSplitScreen(mFinishTransaction); + mStageCoordinator.finishEnterSplitScreen(finishT); + mPendingRemoteHandler = null; } mPendingEnter.mCallback.onTransitionConsumed(aborted); @@ -339,11 +336,6 @@ class SplitScreenTransitions { mAnimatingTransition = null; mOnFinish.run(); - if (mFinishTransaction != null) { - mFinishTransaction.apply(); - mTransactionPool.release(mFinishTransaction); - mFinishTransaction = null; - } if (mFinishCallback != null) { mFinishCallback.onTransitionFinished(wct /* wct */, wctCB /* wctCB */); mFinishCallback = null; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index f2340d531168..80ef74e63940 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -233,6 +233,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, if (op.getType() == HIERARCHY_OP_TYPE_REORDER && op.getToTop() && (mMainStage.containsContainer(container) || mSideStage.containsContainer(container))) { + updateSurfaceBounds(mSplitLayout, finishT, false /* applyResizingOffset */); setDividerVisibility(true, finishT); return; } @@ -1742,8 +1743,9 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, } @Override - public void onTransitionConsumed(@NonNull IBinder transition, boolean aborted) { - mSplitTransitions.onTransitionConsumed(transition, aborted); + public void onTransitionConsumed(@NonNull IBinder transition, boolean aborted, + @Nullable SurfaceControl.Transaction finishT) { + mSplitTransitions.onTransitionConsumed(transition, aborted, finishT); } @Override diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java index f414d69d37ec..1af9415fca3a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java @@ -33,6 +33,7 @@ import android.content.Context; import android.graphics.Point; import android.graphics.Rect; import android.os.IBinder; +import android.util.Slog; import android.util.SparseArray; import android.view.RemoteAnimationTarget; import android.view.SurfaceControl; @@ -376,7 +377,13 @@ class StageTaskListener implements ShellTaskOrganizer.TaskListener { SurfaceControl leash, boolean firstAppeared) { final Point taskPositionInParent = taskInfo.positionInParent; mSyncQueue.runInSync(t -> { - t.setWindowCrop(leash, null); + // The task surface might be released before running in the sync queue for the case like + // trampoline launch, so check if the surface is valid before processing it. + if (!leash.isValid()) { + Slog.w(TAG, "Skip updating invalid child task surface of task#" + taskInfo.taskId); + return; + } + t.setCrop(leash, null); t.setPosition(leash, taskPositionInParent.x, taskPositionInParent.y); if (firstAppeared && !ENABLE_SHELL_TRANSITIONS) { t.setAlpha(leash, 1f); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java index 11b453cb24a2..5cce6b99fb11 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java @@ -274,7 +274,8 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler { } @Override - public void onTransitionConsumed(@NonNull IBinder transition, boolean aborted) { + public void onTransitionConsumed(@NonNull IBinder transition, boolean aborted, + @Nullable SurfaceControl.Transaction finishT) { MixedTransition mixed = null; for (int i = mActiveTransitions.size() - 1; i >= 0; --i) { if (mActiveTransitions.get(i).mTransition != transition) continue; @@ -283,7 +284,7 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler { } if (mixed == null) return; if (mixed.mType == MixedTransition.TYPE_ENTER_PIP_FROM_SPLIT) { - mPipHandler.onTransitionConsumed(transition, aborted); + mPipHandler.onTransitionConsumed(transition, aborted, finishT); } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java index cedb340816ae..9469529de8f1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java @@ -82,7 +82,8 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler { } @Override - public void onTransitionConsumed(@NonNull IBinder transition, boolean aborted) { + public void onTransitionConsumed(@NonNull IBinder transition, boolean aborted, + @Nullable SurfaceControl.Transaction finishT) { mRequestedRemotes.remove(transition); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java index d3fd10bf233c..279d57a23e6e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java @@ -543,7 +543,8 @@ public class Transitions implements RemoteCallable<Transitions> { active.mMerged = true; active.mAborted = abort; if (active.mHandler != null) { - active.mHandler.onTransitionConsumed(active.mToken, abort); + active.mHandler.onTransitionConsumed( + active.mToken, abort, abort ? null : active.mFinishT); } return; } @@ -551,7 +552,8 @@ public class Transitions implements RemoteCallable<Transitions> { active.mAborted = abort; if (active.mAborted && active.mHandler != null) { // Notifies to clean-up the aborted transition. - active.mHandler.onTransitionConsumed(transition, true /* aborted */); + active.mHandler.onTransitionConsumed( + transition, true /* aborted */, null /* finishTransaction */); } ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, "Transition animation finished (abort=%b), notifying core %s", abort, transition); @@ -587,7 +589,8 @@ public class Transitions implements RemoteCallable<Transitions> { ActiveTransition aborted = mActiveTransitions.remove(activeIdx); // Notifies to clean-up the aborted transition. if (aborted.mHandler != null) { - aborted.mHandler.onTransitionConsumed(transition, true /* aborted */); + aborted.mHandler.onTransitionConsumed( + transition, true /* aborted */, null /* finishTransaction */); } mOrganizer.finishTransition(aborted.mToken, null /* wct */, null /* wctCB */); } @@ -773,8 +776,13 @@ public class Transitions implements RemoteCallable<Transitions> { * Called when a transition which was already "claimed" by this handler has been merged * into another animation or has been aborted. Gives this handler a chance to clean-up any * expectations. + * + * @param transition The transition been consumed. + * @param aborted Whether the transition is aborted or not. + * @param finishTransaction The transaction to be applied after the transition animated. */ - default void onTransitionConsumed(@NonNull IBinder transition, boolean aborted) { } + default void onTransitionConsumed(@NonNull IBinder transition, boolean aborted, + @Nullable SurfaceControl.Transaction finishTransaction) { } /** * Sets transition animation scale settings value to handler. diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java index 857f578fd8ed..579638d28311 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java @@ -21,13 +21,13 @@ import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTI import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.app.ActivityManager; @@ -70,7 +70,7 @@ import java.util.Optional; @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper public class PipTaskOrganizerTest extends ShellTestCase { - private PipTaskOrganizer mSpiedPipTaskOrganizer; + private PipTaskOrganizer mPipTaskOrganizer; @Mock private DisplayController mMockDisplayController; @Mock private SyncTransactionQueue mMockSyncTransactionQueue; @@ -100,14 +100,15 @@ public class PipTaskOrganizerTest extends ShellTestCase { mPipBoundsAlgorithm = new PipBoundsAlgorithm(mContext, mPipBoundsState, new PipSnapAlgorithm()); mMainExecutor = new TestShellExecutor(); - mSpiedPipTaskOrganizer = spy(new PipTaskOrganizer(mContext, + mPipTaskOrganizer = new PipTaskOrganizer(mContext, mMockSyncTransactionQueue, mPipTransitionState, mPipBoundsState, mPipBoundsAlgorithm, mMockPhonePipMenuController, mMockPipAnimationController, mMockPipSurfaceTransactionHelper, mMockPipTransitionController, mMockPipParamsChangedForwarder, mMockOptionalSplitScreen, mMockDisplayController, - mMockPipUiEventLogger, mMockShellTaskOrganizer, mMainExecutor)); + mMockPipUiEventLogger, mMockShellTaskOrganizer, mMainExecutor); mMainExecutor.flushAll(); preparePipTaskOrg(); + preparePipSurfaceTransactionHelper(); } @Test @@ -124,14 +125,14 @@ public class PipTaskOrganizerTest extends ShellTestCase { public void startSwipePipToHome_updatesAspectRatio() { final Rational aspectRatio = new Rational(2, 1); - mSpiedPipTaskOrganizer.startSwipePipToHome(mComponent1, null, createPipParams(aspectRatio)); + mPipTaskOrganizer.startSwipePipToHome(mComponent1, null, createPipParams(aspectRatio)); assertEquals(aspectRatio.floatValue(), mPipBoundsState.getAspectRatio(), 0.01f); } @Test public void startSwipePipToHome_updatesLastPipComponentName() { - mSpiedPipTaskOrganizer.startSwipePipToHome(mComponent1, null, createPipParams(null)); + mPipTaskOrganizer.startSwipePipToHome(mComponent1, null, createPipParams(null)); assertEquals(mComponent1, mPipBoundsState.getLastPipComponentName()); } @@ -140,7 +141,7 @@ public class PipTaskOrganizerTest extends ShellTestCase { public void startSwipePipToHome_updatesOverrideMinSize() { final Size minSize = new Size(400, 320); - mSpiedPipTaskOrganizer.startSwipePipToHome(mComponent1, createActivityInfo(minSize), + mPipTaskOrganizer.startSwipePipToHome(mComponent1, createActivityInfo(minSize), createPipParams(null)); assertEquals(minSize, mPipBoundsState.getOverrideMinSize()); @@ -150,7 +151,7 @@ public class PipTaskOrganizerTest extends ShellTestCase { public void onTaskAppeared_updatesAspectRatio() { final Rational aspectRatio = new Rational(2, 1); - mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, + mPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, createPipParams(aspectRatio)), mock(SurfaceControl.class)); assertEquals(aspectRatio.floatValue(), mPipBoundsState.getAspectRatio(), 0.01f); @@ -158,7 +159,7 @@ public class PipTaskOrganizerTest extends ShellTestCase { @Test public void onTaskAppeared_updatesLastPipComponentName() { - mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, createPipParams(null)), + mPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, createPipParams(null)), mock(SurfaceControl.class)); assertEquals(mComponent1, mPipBoundsState.getLastPipComponentName()); @@ -168,7 +169,7 @@ public class PipTaskOrganizerTest extends ShellTestCase { public void onTaskAppeared_updatesOverrideMinSize() { final Size minSize = new Size(400, 320); - mSpiedPipTaskOrganizer.onTaskAppeared( + mPipTaskOrganizer.onTaskAppeared( createTaskInfo(mComponent1, createPipParams(null), minSize), mock(SurfaceControl.class)); @@ -179,16 +180,16 @@ public class PipTaskOrganizerTest extends ShellTestCase { public void onTaskInfoChanged_notInPip_deferUpdatesAspectRatio() { final Rational startAspectRatio = new Rational(2, 1); final Rational newAspectRatio = new Rational(1, 2); - mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, + mPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, createPipParams(startAspectRatio)), mock(SurfaceControl.class)); // It is in entering transition, should defer onTaskInfoChanged callback in this case. - mSpiedPipTaskOrganizer.onTaskInfoChanged(createTaskInfo(mComponent1, + mPipTaskOrganizer.onTaskInfoChanged(createTaskInfo(mComponent1, createPipParams(newAspectRatio))); verify(mMockPipParamsChangedForwarder, never()).notifyAspectRatioChanged(anyFloat()); // Once the entering transition finishes, the new aspect ratio applies in a deferred manner - mSpiedPipTaskOrganizer.sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); + sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); verify(mMockPipParamsChangedForwarder) .notifyAspectRatioChanged(newAspectRatio.floatValue()); } @@ -197,11 +198,11 @@ public class PipTaskOrganizerTest extends ShellTestCase { public void onTaskInfoChanged_inPip_updatesAspectRatioIfChanged() { final Rational startAspectRatio = new Rational(2, 1); final Rational newAspectRatio = new Rational(1, 2); - mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, + mPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, createPipParams(startAspectRatio)), mock(SurfaceControl.class)); - mSpiedPipTaskOrganizer.sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); + sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); - mSpiedPipTaskOrganizer.onTaskInfoChanged(createTaskInfo(mComponent1, + mPipTaskOrganizer.onTaskInfoChanged(createTaskInfo(mComponent1, createPipParams(newAspectRatio))); verify(mMockPipParamsChangedForwarder) @@ -210,11 +211,11 @@ public class PipTaskOrganizerTest extends ShellTestCase { @Test public void onTaskInfoChanged_inPip_updatesLastPipComponentName() { - mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, + mPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, createPipParams(null)), mock(SurfaceControl.class)); - mSpiedPipTaskOrganizer.sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); + sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); - mSpiedPipTaskOrganizer.onTaskInfoChanged(createTaskInfo(mComponent2, + mPipTaskOrganizer.onTaskInfoChanged(createTaskInfo(mComponent2, createPipParams(null))); assertEquals(mComponent2, mPipBoundsState.getLastPipComponentName()); @@ -222,12 +223,12 @@ public class PipTaskOrganizerTest extends ShellTestCase { @Test public void onTaskInfoChanged_inPip_updatesOverrideMinSize() { - mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, + mPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, createPipParams(null)), mock(SurfaceControl.class)); - mSpiedPipTaskOrganizer.sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); + sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); final Size minSize = new Size(400, 320); - mSpiedPipTaskOrganizer.onTaskInfoChanged(createTaskInfo(mComponent2, + mPipTaskOrganizer.onTaskInfoChanged(createTaskInfo(mComponent2, createPipParams(null), minSize)); assertEquals(minSize, mPipBoundsState.getOverrideMinSize()); @@ -235,23 +236,42 @@ public class PipTaskOrganizerTest extends ShellTestCase { @Test public void onTaskVanished_clearsPipBounds() { - mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, + mPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, createPipParams(null)), mock(SurfaceControl.class)); mPipBoundsState.setBounds(new Rect(100, 100, 200, 150)); - mSpiedPipTaskOrganizer.onTaskVanished(createTaskInfo(mComponent1, createPipParams(null))); + mPipTaskOrganizer.onTaskVanished(createTaskInfo(mComponent1, createPipParams(null))); assertTrue(mPipBoundsState.getBounds().isEmpty()); } + private void sendOnPipTransitionFinished( + @PipAnimationController.TransitionDirection int direction) { + mPipTaskOrganizer.sendOnPipTransitionFinished(direction); + // PipTransitionController will call back into PipTaskOrganizer. + mPipTaskOrganizer.mPipTransitionCallback.onPipTransitionFinished(direction); + } + private void preparePipTaskOrg() { final DisplayInfo info = new DisplayInfo(); mPipBoundsState.setDisplayLayout(new DisplayLayout(info, mContext.getResources(), true, true)); - mSpiedPipTaskOrganizer.setOneShotAnimationType(PipAnimationController.ANIM_TYPE_ALPHA); - mSpiedPipTaskOrganizer.setSurfaceControlTransactionFactory( + mPipTaskOrganizer.setOneShotAnimationType(PipAnimationController.ANIM_TYPE_ALPHA); + mPipTaskOrganizer.setSurfaceControlTransactionFactory( MockSurfaceControlHelper::createMockSurfaceControlTransaction); - doNothing().when(mSpiedPipTaskOrganizer).enterPipWithAlphaAnimation(any(), anyLong()); - doNothing().when(mSpiedPipTaskOrganizer).scheduleAnimateResizePip(any(), anyInt(), any()); + } + + private void preparePipSurfaceTransactionHelper() { + doReturn(mMockPipSurfaceTransactionHelper).when(mMockPipSurfaceTransactionHelper) + .crop(any(), any(), any()); + doReturn(mMockPipSurfaceTransactionHelper).when(mMockPipSurfaceTransactionHelper) + .resetScale(any(), any(), any()); + doReturn(mMockPipSurfaceTransactionHelper).when(mMockPipSurfaceTransactionHelper) + .round(any(), any(), anyBoolean()); + doReturn(mMockPipSurfaceTransactionHelper).when(mMockPipSurfaceTransactionHelper) + .scale(any(), any(), any(), any(), anyFloat()); + doReturn(mMockPipSurfaceTransactionHelper).when(mMockPipSurfaceTransactionHelper) + .alpha(any(), any(), anyFloat()); + doNothing().when(mMockPipSurfaceTransactionHelper).onDensityOrFontScaleChanged(any()); } private static ActivityManager.RunningTaskInfo createTaskInfo( diff --git a/packages/SettingsLib/res/values-af/arrays.xml b/packages/SettingsLib/res/values-af/arrays.xml index 7165c147e34f..1de76684d860 100644 --- a/packages/SettingsLib/res/values-af/arrays.xml +++ b/packages/SettingsLib/res/values-af/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Gebruik stelselkeuse (verstek)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>-oudio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>-oudio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Gebruik stelselkeuse (verstek)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>-oudio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>-oudio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Gebruik stelselkeuse (verstek)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml index 264faad485c1..fe8030f9a68a 100644 --- a/packages/SettingsLib/res/values-af/strings.xml +++ b/packages/SettingsLib/res/values-af/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Lêeroordrag"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Invoertoestel"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internettoegang"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Deling van kontakte en oproepgeskiedenis"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Gebruik vir deling van kontakte en oproepgeskiedenis"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Deling van internetverbinding"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Teksboodskappe"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM-toegang"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Weer"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Luggehalte"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Uitsaai-inligting"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Huiskontroles"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Kies \'n profielprent"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Verstekgebruikerikoon"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fisieke sleutelbord"</string> diff --git a/packages/SettingsLib/res/values-am/arrays.xml b/packages/SettingsLib/res/values-am/arrays.xml index 1108c82116ea..a900d1379027 100644 --- a/packages/SettingsLib/res/values-am/arrays.xml +++ b/packages/SettingsLib/res/values-am/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"የስርዓቱን ምርጫ (ነባሪ) ተጠቀም"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ኦዲዮ"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ኦዲዮ"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"የስርዓቱን ምርጫ (ነባሪ) ተጠቀም"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ኦዲዮ"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ኦዲዮ"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"የስርዓቱን ምርጫ (ነባሪ) ተጠቀም"</item> <item msgid="8003118270854840095">"44.1 ኪኸ"</item> diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index b68cbd745e01..d3c034fa170c 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ፋይል ማስተላለፍ"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ግቤት መሣሪያ"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"የበይነመረብ ድረስ"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"የእውቂያዎች እና የጥሪ ታሪክ ማጋራት"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"እውቂያዎችን እና የጥሪ ታሪክን ለማጋራት ይጠቀሙበት"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"የበይነ መረብ ተያያዥ ማጋሪያ"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"የጽሑፍ መልዕክቶች"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"የሲም መዳረሻ"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"የአየር ሁኔታ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"የአየር ጥራት"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"የCast መረጃ"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"የመገለጫ ሥዕል ይምረጡ"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ነባሪ የተጠቃሚ አዶ"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"አካላዊ ቁልፍ ሰሌዳ"</string> diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml index eb4be38da93e..8f7d7d2ca399 100644 --- a/packages/SettingsLib/res/values-ar/arrays.xml +++ b/packages/SettingsLib/res/values-ar/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"استخدام اختيار النظام (تلقائي)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"صوت <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"صوت <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"استخدام اختيار النظام (تلقائي)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"صوت <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"صوت <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"استخدام اختيار النظام (تلقائي)"</item> <item msgid="8003118270854840095">"44.1 كيلو هرتز"</item> diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index c8b263bcb196..6783654c32e5 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"نقل الملف"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"جهاز الإرسال"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"استخدام الإنترنت"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"مشاركة جهات الاتصال وسجل المكالمات"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"استخدام إعدادات بلوتوث لمشاركة جهات الاتصال وسجل المكالمات"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"مشاركة اتصال الإنترنت"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"الرسائل النصية"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"الوصول إلى شريحة SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"الطقس"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"جودة الهواء"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"معلومات البث"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"اختيار صورة الملف الشخصي"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"رمز المستخدم التلقائي"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"لوحة مفاتيح خارجية"</string> diff --git a/packages/SettingsLib/res/values-as/arrays.xml b/packages/SettingsLib/res/values-as/arrays.xml index df23f672994c..4c879d0123d3 100644 --- a/packages/SettingsLib/res/values-as/arrays.xml +++ b/packages/SettingsLib/res/values-as/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"ছিষ্টেমৰ বাছনি ব্যৱহাৰ কৰক (ডিফ\'ল্ট)"</item> - <item msgid="4055460186095649420">"এছবিচি"</item> - <item msgid="720249083677397051">"এএচি"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> অডিঅ\'"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> অডিঅ’"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"ছিষ্টেমৰ বাছনি ব্যৱহাৰ কৰক (ডিফ\'ল্ট)"</item> - <item msgid="9024885861221697796">"এছবিচি"</item> - <item msgid="4688890470703790013">"এএচি"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> অডিঅ’"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> অডিঅ’"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"ছিষ্টেমৰ বাছনি ব্যৱহাৰ কৰক (ডিফ\'ল্ট)"</item> <item msgid="8003118270854840095">"৪৪.১ কিল\'হাৰ্টজ"</item> diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml index ea1aff001aa5..543c703e9003 100644 --- a/packages/SettingsLib/res/values-as/strings.xml +++ b/packages/SettingsLib/res/values-as/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ফাইল স্থানান্তৰণ"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ইনপুট ডিভাইচ"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ইণ্টাৰনেট সংযোগ"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"সম্পৰ্কসূচী আৰু কলৰ ইতিহাস শ্বেয়াৰ কৰা"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"সম্পৰ্কসূচী আৰু কলৰ ইতিহাস শ্বেয়াৰ কৰাৰ বাবে ব্যৱহাৰ কৰক"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ইণ্টাৰনেট সংযোগ শ্বেয়াৰ"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"পাঠ বাৰ্তা"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"ছিম প্ৰৱেশ"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"বতৰ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"বায়ুৰ গুণগত মান"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"কাষ্টৰ তথ্য"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"এখন প্ৰ’ফাইল চিত্ৰ বাছনি কৰক"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ডিফ’ল্ট ব্যৱহাৰকাৰীৰ চিহ্ন"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"কায়িক কীব’ৰ্ড"</string> diff --git a/packages/SettingsLib/res/values-az/arrays.xml b/packages/SettingsLib/res/values-az/arrays.xml index 516379102177..48974a7bd40f 100644 --- a/packages/SettingsLib/res/values-az/arrays.xml +++ b/packages/SettingsLib/res/values-az/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Sistem Seçimini istifadə edin (Defolt)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Sistem Seçimini istifadə edin (Defolt)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Sistem Seçimini istifadə edin (Defolt)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml index 88333e82782e..f3e5d95219fa 100644 --- a/packages/SettingsLib/res/values-az/strings.xml +++ b/packages/SettingsLib/res/values-az/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Fayl transferi"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Daxiletmə cihazı"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"İnternetə giriş"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Kontaktlar və zəng tarixçəsi paylaşımı"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Kontaktlar və zəng tarixçəsi paylaşımı üçün istifadə edin"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"internet bağlantı paylaşımı"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mətn Mesajları"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM-karta giriş"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Hava"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Havanın keyfiyyəti"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Yayım məlumatı"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Profil şəkli seçin"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Defolt istifadəçi ikonası"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fiziki klaviatura"</string> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml index 5cc43f6877ae..337da265711c 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Koristi izbor sistema (podrazumevano)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Koristi izbor sistema (podrazumevano)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Koristi izbor sistema (podrazumevano)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index a84d0190607a..6a880aac349f 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Prenos datoteke"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Ulazni uređaj"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Pristup Internetu"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Deljenje kontakata i istorije poziva"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Koristite za deljenje kontakata i istorije poziva"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Deljenje internet veze"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS-ovi"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Pristup SIM kartici"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Vreme"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Kvalitet vazduha"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Podaci o prebacivanju"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Odaberite sliku profila"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Podrazumevana ikona korisnika"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fizička tastatura"</string> diff --git a/packages/SettingsLib/res/values-be/arrays.xml b/packages/SettingsLib/res/values-be/arrays.xml index 6259c2d0f3a6..d843629a43c1 100644 --- a/packages/SettingsLib/res/values-be/arrays.xml +++ b/packages/SettingsLib/res/values-be/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Выбар сістэмы (стандартны)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Аўдыя <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Аўдыя <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Выбар сістэмы (стандартны)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Аўдыя <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Аўдыя <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Выбар сістэмы (стандартны)"</item> <item msgid="8003118270854840095">"44,1 кГц"</item> diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index 37f8410dd87c..a90242667b56 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Перадача файлаў"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Прылада ўводу"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Доступ у інтэрнэт"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Абагульванне кантактаў і гісторыі выклікаў"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Ужываць для абагульвання кантактаў і гісторыі выклікаў"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Прадастаўленне доступу да Інтэрнэту"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Тэкставыя паведамленні"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Доступ да SIM-карты"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Надвор\'е"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Якасць паветра"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Даныя пра трансляцыю"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Выберыце відарыс профілю"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Стандартны карыстальніцкі значок"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Фізічная клавіятура"</string> diff --git a/packages/SettingsLib/res/values-bg/arrays.xml b/packages/SettingsLib/res/values-bg/arrays.xml index 49e66c0f74e6..1aad6ca714c4 100644 --- a/packages/SettingsLib/res/values-bg/arrays.xml +++ b/packages/SettingsLib/res/values-bg/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Използване на сист. избор (стандартно)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"Разширено аудиокодиране (AAC)"</item> - <item msgid="1049450003868150455">"Аудио: <xliff:g id="APTX">aptX™</xliff:g> от <xliff:g id="QUALCOMM">Qualcomm®</xliff:g>"</item> - <item msgid="2908219194098827570">"Аудио: <xliff:g id="APTX_HD">aptX™ HD</xliff:g> от <xliff:g id="QUALCOMM">Qualcomm®</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Използване на сист. избор (стандартно)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"Разширено аудиокодиране (AAC)"</item> - <item msgid="8627333814413492563">"Аудио: <xliff:g id="APTX">aptX™</xliff:g> от <xliff:g id="QUALCOMM">Qualcomm®</xliff:g>"</item> - <item msgid="3517061573669307965">"Аудио: <xliff:g id="APTX_HD">aptX™ HD</xliff:g> от <xliff:g id="QUALCOMM">Qualcomm®</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Използване на сист. избор (стандартно)"</item> <item msgid="8003118270854840095">"44,1 кХц"</item> diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml index f2cf69ea5b1c..c5123667f2b2 100644 --- a/packages/SettingsLib/res/values-bg/strings.xml +++ b/packages/SettingsLib/res/values-bg/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Прехвърляне на файл"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Входно устройство"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Достъп до интернет"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Споделяне на контактите и ист. на обажд."</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Служи за споделяне на контактите и историята на обажданията"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Споделяне на връзката с интернет"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Текстови съобщения"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Достъп до SIM картата"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Времето"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Качество на въздуха"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Предаване: Инф."</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Изберете снимка на потребителския профил"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Икона за основния потребител"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Физическа клавиатура"</string> diff --git a/packages/SettingsLib/res/values-bn/arrays.xml b/packages/SettingsLib/res/values-bn/arrays.xml index fdb611bf191d..5e6bb9527c29 100644 --- a/packages/SettingsLib/res/values-bn/arrays.xml +++ b/packages/SettingsLib/res/values-bn/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"সিস্টেমের নির্বাচন ব্যবহার করুন (ডিফল্ট)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> অডিও"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> অডিও"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"সিস্টেমের নির্বাচন ব্যবহার করুন (ডিফল্ট)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> অডিও"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> অডিও"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"সিস্টেমের নির্বাচন ব্যবহার করুন (ডিফল্ট)"</item> <item msgid="8003118270854840095">"৪৪.১ kHz"</item> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index 801fb347a4ac..23eed04b4fb6 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ফাইল স্থানান্তর"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ইনপুট ডিভাইস"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ইন্টারনেট অ্যাক্সেস"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"পরিচিতি এবং কলের ইতিহাস শেয়ার করা"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"পরিচিতি ও কলের ইতিহাস শেয়ার করার জন্য ব্যবহার করুন"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ইন্টারনেট কানেকশন শেয়ার করা হচ্ছে"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"এসএমএস"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"সিম অ্যাক্সেস"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"আবহাওয়া"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"এয়ার কোয়ালিটি"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"কাস্ট সম্পর্কিত তথ্য"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"হোম কন্ট্রোল"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"একটি প্রোফাইল ছবি বেছে নিন"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ডিফল্ট ব্যবহারকারীর আইকন"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"ফিজিক্যাল কীবোর্ড"</string> diff --git a/packages/SettingsLib/res/values-bs/arrays.xml b/packages/SettingsLib/res/values-bs/arrays.xml index 32edef143c24..262a35feab65 100644 --- a/packages/SettingsLib/res/values-bs/arrays.xml +++ b/packages/SettingsLib/res/values-bs/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Korištenje odabira sistema (zadano)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Korištenje odabira sistema (zadano)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Korištenje odabira sistema (zadano)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml index 61082f6dd7f5..78a484f28e56 100644 --- a/packages/SettingsLib/res/values-bs/strings.xml +++ b/packages/SettingsLib/res/values-bs/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Prenošenje fajla"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Ulazni uređaj"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Pristup internetu"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Dijeljenje kontakata i historije poziva"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Upotrijebite za dijeljenje kontakata i historije poziva"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Dijeljenje internet veze"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS-ovi"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Pristup SIM-u"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Vremenska prognoza"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Kvalitet zraka"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Podaci o emitiranju"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Odaberite sliku profila"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Zadana ikona korisnika"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fizička tastatura"</string> diff --git a/packages/SettingsLib/res/values-ca/arrays.xml b/packages/SettingsLib/res/values-ca/arrays.xml index a267af862daf..8c34a1f0f72a 100644 --- a/packages/SettingsLib/res/values-ca/arrays.xml +++ b/packages/SettingsLib/res/values-ca/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Utilitza la selecció del sistema (predeterminada)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Àudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Àudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Utilitza la selecció del sistema (predeterminada)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Àudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Àudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Utilitza la selecció del sistema (predeterminada)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index 881f9d4ea193..606a379b1651 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferència de fitxers"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositiu d\'entrada"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Accés a Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Compartició de contactes i trucades"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Utilitza per compartir contactes i l\'historial de trucades"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Compartició de connexió d\'Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Missatges de text"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Accés a la SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Temps"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Qualitat de l\'aire"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Informació d\'emissió"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Tria una foto de perfil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Icona d\'usuari predeterminat"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Teclat físic"</string> diff --git a/packages/SettingsLib/res/values-cs/arrays.xml b/packages/SettingsLib/res/values-cs/arrays.xml index 3eeae64c8667..90bcaa4ba386 100644 --- a/packages/SettingsLib/res/values-cs/arrays.xml +++ b/packages/SettingsLib/res/values-cs/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Použít systémový výběr (výchozí)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Zvuk <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Zvuk <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Použít systémový výběr (výchozí)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Zvuk <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Zvuk <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Použít systémový výběr (výchozí)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml index 7f314bde25c4..37c0bb4ced79 100644 --- a/packages/SettingsLib/res/values-cs/strings.xml +++ b/packages/SettingsLib/res/values-cs/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Přenos souborů"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Vstupní zařízení"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Přístup k internetu"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Sdílení kontaktů a historie volání"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Používat ke sdílení kontaktů a historie hovorů"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Sdílení internetového připojení"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Textové zprávy"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Přístup k SIM kartě"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Počasí"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Kvalita vzduchu"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Info o odesílání"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Vyberte profilový obrázek"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Výchozí uživatelská ikona"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fyzická klávesnice"</string> diff --git a/packages/SettingsLib/res/values-da/arrays.xml b/packages/SettingsLib/res/values-da/arrays.xml index 58ca7225f549..155104ae81dc 100644 --- a/packages/SettingsLib/res/values-da/arrays.xml +++ b/packages/SettingsLib/res/values-da/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Brug systemvalg (standard)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>-lyd"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>-lyd"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Brug systemvalg (standard)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>-lyd"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>-lyd"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Brug systemvalg (standard)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index c470b8193fbd..d80e1ec4cbba 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Filoverførsel"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Inputenhed"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internetadgang"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Deling af kontakter og opkaldshistorik"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Brug til deling af kontakter og opkaldshistorik"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Deling af internetforbindelse"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Sms-beskeder"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Adgang til SIM-kort"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Vejr"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Luftkvalitet"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Cast-oplysninger"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Vælg et profilbillede"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ikon for standardbruger"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fysisk tastatur"</string> diff --git a/packages/SettingsLib/res/values-de/arrays.xml b/packages/SettingsLib/res/values-de/arrays.xml index a8eb3f6205ea..31126a803f8f 100644 --- a/packages/SettingsLib/res/values-de/arrays.xml +++ b/packages/SettingsLib/res/values-de/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Systemauswahl verwenden (Standard)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>-Audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>-Audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Systemauswahl verwenden (Standard)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>-Audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>-Audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Systemauswahl verwenden (Standard)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index 34a622bcb925..d4fafe12e10c 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Dateiübertragung"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Eingabegerät"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internetzugriff"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Teilen von Kontakten und der Anrufliste"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Zum Teilen von Kontakten und der Anrufliste verwenden"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Freigabe der Internetverbindung"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Zugriff auf SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Wetter"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Luftqualität"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Streaming-Info"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Profilbild auswählen"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Standardmäßiges Nutzersymbol"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Physische Tastatur"</string> diff --git a/packages/SettingsLib/res/values-el/arrays.xml b/packages/SettingsLib/res/values-el/arrays.xml index ccd06fa02451..70000e1917a7 100644 --- a/packages/SettingsLib/res/values-el/arrays.xml +++ b/packages/SettingsLib/res/values-el/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Χρήση επιλογής συστήματος (Προεπιλογή)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Ήχος <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Ήχος <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Χρήση επιλογής συστήματος (Προεπιλογή)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Ήχος <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Ήχος <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Χρήση επιλογής συστήματος (Προεπιλογή)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index fdc7419359b5..aa613a5eeb17 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Μεταφορά αρχείου"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Συσκευή εισόδου"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Πρόσβαση στο Διαδίκτυο"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Κοινοποίηση επαφών και ιστορικού κλήσεων"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Χρήση για την κοινοποίηση επαφών και του ιστορικού κλήσεων"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Κοινή χρήση σύνδεσης στο Διαδίκτυο"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Μηνύματα κειμένου"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Πρόσβαση SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Καιρός"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Ποιότητα αέρα"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Πληροφορίες ηθοποιών"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Επιλογή φωτογραφίας προφίλ"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Προεπιλεγμένο εικονίδιο χρήστη"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Φυσικό πληκτρολόγιο"</string> diff --git a/packages/SettingsLib/res/values-en-rAU/arrays.xml b/packages/SettingsLib/res/values-en-rAU/arrays.xml index 697e49afdc3d..fc6f791bf6ea 100644 --- a/packages/SettingsLib/res/values-en-rAU/arrays.xml +++ b/packages/SettingsLib/res/values-en-rAU/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Use system selection (default)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Use system selection (default)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Use system selection (default)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index 234109bd401c..62c8e21bf489 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"File transfer"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Input device"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internet access"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Contacts and call history sharing"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Use for contacts and call history sharing"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Internet connection sharing"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Text messages"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM access"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Weather"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Air quality"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Cast info"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Home Controls"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Choose a profile picture"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Default user icon"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Physical keyboard"</string> diff --git a/packages/SettingsLib/res/values-en-rCA/arrays.xml b/packages/SettingsLib/res/values-en-rCA/arrays.xml index 697e49afdc3d..fc6f791bf6ea 100644 --- a/packages/SettingsLib/res/values-en-rCA/arrays.xml +++ b/packages/SettingsLib/res/values-en-rCA/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Use system selection (default)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Use system selection (default)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Use system selection (default)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml index d88bb0e776cf..8650b77dec89 100644 --- a/packages/SettingsLib/res/values-en-rCA/strings.xml +++ b/packages/SettingsLib/res/values-en-rCA/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"File transfer"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Input device"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internet access"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Contacts and call history sharing"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Use for contacts and call history sharing"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Internet connection sharing"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Text messages"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM access"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Weather"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Air quality"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Cast info"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Home Controls"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Choose a profile picture"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Default user icon"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Physical keyboard"</string> diff --git a/packages/SettingsLib/res/values-en-rGB/arrays.xml b/packages/SettingsLib/res/values-en-rGB/arrays.xml index 697e49afdc3d..fc6f791bf6ea 100644 --- a/packages/SettingsLib/res/values-en-rGB/arrays.xml +++ b/packages/SettingsLib/res/values-en-rGB/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Use system selection (default)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Use system selection (default)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Use system selection (default)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index 234109bd401c..62c8e21bf489 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"File transfer"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Input device"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internet access"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Contacts and call history sharing"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Use for contacts and call history sharing"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Internet connection sharing"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Text messages"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM access"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Weather"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Air quality"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Cast info"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Home Controls"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Choose a profile picture"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Default user icon"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Physical keyboard"</string> diff --git a/packages/SettingsLib/res/values-en-rIN/arrays.xml b/packages/SettingsLib/res/values-en-rIN/arrays.xml index 697e49afdc3d..fc6f791bf6ea 100644 --- a/packages/SettingsLib/res/values-en-rIN/arrays.xml +++ b/packages/SettingsLib/res/values-en-rIN/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Use system selection (default)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Use system selection (default)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Use system selection (default)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index 234109bd401c..62c8e21bf489 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"File transfer"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Input device"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internet access"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Contacts and call history sharing"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Use for contacts and call history sharing"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Internet connection sharing"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Text messages"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM access"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Weather"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Air quality"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Cast info"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Home Controls"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Choose a profile picture"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Default user icon"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Physical keyboard"</string> diff --git a/packages/SettingsLib/res/values-en-rXC/arrays.xml b/packages/SettingsLib/res/values-en-rXC/arrays.xml index aca3eb420310..34db380b0cf6 100644 --- a/packages/SettingsLib/res/values-en-rXC/arrays.xml +++ b/packages/SettingsLib/res/values-en-rXC/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Use System Selection (Default)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Use System Selection (Default)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Use System Selection (Default)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml index 5d775d3a356b..21697b9a4fb5 100644 --- a/packages/SettingsLib/res/values-en-rXC/strings.xml +++ b/packages/SettingsLib/res/values-en-rXC/strings.xml @@ -660,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Weather"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Air Quality"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Cast Info"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Home Controls"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Choose a profile picture"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Default user icon"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Physical keyboard"</string> diff --git a/packages/SettingsLib/res/values-es-rUS/arrays.xml b/packages/SettingsLib/res/values-es-rUS/arrays.xml index 6a926d26cfb3..9b1aa3a274fc 100644 --- a/packages/SettingsLib/res/values-es-rUS/arrays.xml +++ b/packages/SettingsLib/res/values-es-rUS/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Usar selección del sistema (predeterminado)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Usar selección del sistema (predeterminado)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Usar selección del sistema (predeterminado)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index 98c140045b23..27cd0ab200f5 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferencia de archivos"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo de entrada"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acceso a Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Compartir contactos e historial de llam."</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Uso para compartir contactos e historial de llamadas"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Compartir conexión a Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensajes de texto"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Acceso a SIM"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Clima"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Calidad del aire"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Info de reparto"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Control de la casa"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Elige una foto de perfil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ícono de usuario predeterminado"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Teclado físico"</string> diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml index 7c37fa5007e9..0677864d1f46 100644 --- a/packages/SettingsLib/res/values-es/arrays.xml +++ b/packages/SettingsLib/res/values-es/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Usar preferencia del sistema (predeterminado)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Usar preferencia del sistema (predeterminado)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Usar preferencia del sistema (predeterminado)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index 90c4fb8e938a..d221c8dbe250 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferencia de archivos"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo de entrada"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acceso a Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Compartir contactos e historial de llamadas"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Usar para compartir los contactos y el historial de llamadas"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Compartir conexión a Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensajes de texto"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Acceso a tarjeta SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Tiempo"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Calidad del aire"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Info. de emisión"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Elige una imagen de perfil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Icono de usuario predeterminado"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Teclado físico"</string> diff --git a/packages/SettingsLib/res/values-et/arrays.xml b/packages/SettingsLib/res/values-et/arrays.xml index 14d0fd12d762..d986ecf47260 100644 --- a/packages/SettingsLib/res/values-et/arrays.xml +++ b/packages/SettingsLib/res/values-et/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Süsteemi valiku kasutamine (vaikeseade)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Heli: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Heli: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Süsteemi valiku kasutamine (vaikeseade)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Heli: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Heli: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Süsteemi valiku kasutamine (vaikeseade)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml index a6c787af5146..f32ae2347ef6 100644 --- a/packages/SettingsLib/res/values-et/strings.xml +++ b/packages/SettingsLib/res/values-et/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Failiedastus"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Sisendseade"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Juurdepääs internetile"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Kontaktide ja kõneajaloo jagamine"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Kasutage kontaktide ja kõneajaloo jagamiseks"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Interneti-ühenduse jagamine"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Tekstsõnumid"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Juurdepääs SIM-ile"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Ilm"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Õhukvaliteet"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Osatäitjate teave"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Valige profiilipilt"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Vaikekasutajaikoon"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Füüsiline klaviatuur"</string> diff --git a/packages/SettingsLib/res/values-eu/arrays.xml b/packages/SettingsLib/res/values-eu/arrays.xml index cc47e27fd485..d166e1b97a38 100644 --- a/packages/SettingsLib/res/values-eu/arrays.xml +++ b/packages/SettingsLib/res/values-eu/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Erabili sistema-hautapena (lehenetsia)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audioa"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audioa"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Erabili sistema-hautapena (lehenetsia)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audioa"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audioa"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Erabili sistema-hautapena (lehenetsia)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index 87cfaa8dac95..bcb57e89b213 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Fitxategi-transferentzia"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Sarrerako gailua"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Interneteko konexioa"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Kontaktuak eta deien historia partekatzeko aukera"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Erabili kontaktuetarako eta deien historia partekatzeko"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Interneteko konexioa partekatzea"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Testu-mezuak"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIMerako sarbidea"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Eguraldia"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Airearen kalitatea"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Igorpenari buruzko informazioa"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Aukeratu profileko argazki bat"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Erabiltzaile lehenetsiaren ikonoa"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Teklatu fisikoa"</string> diff --git a/packages/SettingsLib/res/values-fa/arrays.xml b/packages/SettingsLib/res/values-fa/arrays.xml index d76389b7b51f..b7761dd6ebcb 100644 --- a/packages/SettingsLib/res/values-fa/arrays.xml +++ b/packages/SettingsLib/res/values-fa/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"استفاده از انتخاب سیستم (پیشفرض)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"صوت <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"صوت <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"استفاده از انتخاب سیستم (پیشفرض)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"صوت <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"صوت <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"استفاده از انتخاب سیستم (پیشفرض)"</item> <item msgid="8003118270854840095">"۴۴٫۱ کیلوهرتز"</item> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index 51d74dd86ea9..6abe873d27eb 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"انتقال فایل"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"دستگاه ورودی"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"دسترسی به اینترنت"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"همرسانی مخاطبین و سابقه تماس"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"استفاده برای همرسانی مخاطبین و سابقه تماس"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"اشتراکگذاری اتصال اینترنت"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"پیامهای نوشتاری"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"دسترسی سیمکارت"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"آبوهوا"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"کیفیت هوا"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"اطلاعات پخش محتوا"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"انتخاب عکس نمایه"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"نماد کاربر پیشفرض"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"صفحهکلید فیزیکی"</string> diff --git a/packages/SettingsLib/res/values-fi/arrays.xml b/packages/SettingsLib/res/values-fi/arrays.xml index f8281866315b..296989299cfe 100644 --- a/packages/SettingsLib/res/values-fi/arrays.xml +++ b/packages/SettingsLib/res/values-fi/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Käytä järjestelmän valintaa (oletus)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ‑ääni"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ‑ääni"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Käytä järjestelmän valintaa (oletus)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ‑ääni"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ‑ääni"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Käytä järjestelmän valintaa (oletus)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index c0f90b8e5a4c..2f3436e1e7c6 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Tiedostonsiirto"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Syöttölaite"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internetyhteys"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Yhteystietojen ja soittohistorian jako"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Käytä yhteystiedoissa ja soittohistorian jakamiseen"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Internetyhteyden jakaminen"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Tekstiviestit"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM-kortin käyttö"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Sää"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Ilmanlaatu"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Striimaustiedot"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Valitse profiilikuva"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Oletuskäyttäjäkuvake"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fyysinen näppäimistö"</string> diff --git a/packages/SettingsLib/res/values-fr-rCA/arrays.xml b/packages/SettingsLib/res/values-fr-rCA/arrays.xml index 50c1bcb2e6b3..12acbb6736b4 100644 --- a/packages/SettingsLib/res/values-fr-rCA/arrays.xml +++ b/packages/SettingsLib/res/values-fr-rCA/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Utiliser sélect. du système (par défaut)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Utiliser sélect. du système (par défaut)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Utiliser sélect. du système (par défaut)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index 14515cd4ec7d..28b3cd96aed6 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transfert de fichier"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Périphérique d\'entrée"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Accès Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Partage des contacts et des appels"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Sert à partager des contacts et l\'historique des appels"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Partage de connexion Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Messages texte"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Accès à la carte SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Météo"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Qualité de l\'air"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Info diffusion"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Choisir une photo de profil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Icône d\'utilisateur par défaut"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Clavier physique"</string> diff --git a/packages/SettingsLib/res/values-fr/arrays.xml b/packages/SettingsLib/res/values-fr/arrays.xml index 6343f0dc8845..80ac7e4e4752 100644 --- a/packages/SettingsLib/res/values-fr/arrays.xml +++ b/packages/SettingsLib/res/values-fr/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Utiliser la sélection du système (par défaut)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Utiliser la sélection du système (par défaut)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Utiliser la sélection du système (par défaut)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index 19ea6ddf2c9b..da1497aa980b 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transfert de fichiers"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Périphérique d\'entrée"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Accès Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Partage contacts/historique des appels"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"À utiliser pour partage des contacts/historique des appels"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Partage de connexion Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Accès à la carte SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Météo"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Qualité de l\'air"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Infos distribution"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Choisissez une photo de profil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Icône de l\'utilisateur par défaut"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Clavier physique"</string> diff --git a/packages/SettingsLib/res/values-gl/arrays.xml b/packages/SettingsLib/res/values-gl/arrays.xml index 22fb2233ced9..b6cf48e54f72 100644 --- a/packages/SettingsLib/res/values-gl/arrays.xml +++ b/packages/SettingsLib/res/values-gl/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Usar selección do sistema (predeterminado)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Usa a selección do sistema (predeterminado)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Usar selección do sistema (predeterminado)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index 94fa72a260b1..7822749eea0f 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferencia de ficheiros"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo de entrada"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acceso a Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Compartir contactos e hist. de chamadas"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Uso da opción de compartir contactos e historial de chamadas"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Uso compartido da conexión a Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensaxes de texto"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Acceso á SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"O tempo"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Calidade do aire"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Datos da emisión"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Escolle unha imaxe do perfil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Icona do usuario predeterminado"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Teclado físico"</string> diff --git a/packages/SettingsLib/res/values-gu/arrays.xml b/packages/SettingsLib/res/values-gu/arrays.xml index 318b5f5714bd..7e668e71f91d 100644 --- a/packages/SettingsLib/res/values-gu/arrays.xml +++ b/packages/SettingsLib/res/values-gu/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"સિસ્ટમ પસંદગીનો ઉપયોગ કરો (ડિફૉલ્ટ)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ઑડિયો"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ઑડિયો"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"સિસ્ટમ પસંદગીનો ઉપયોગ કરો (ડિફૉલ્ટ)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ઑડિયો"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ઑડિયો"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"સિસ્ટમ પસંદગીનો ઉપયોગ કરો (ડિફૉલ્ટ)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index a474d8226364..cebb1febc001 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ફાઇલ સ્થાનાંતરણ"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ઇનપુટ ડિવાઇસ"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ઇન્ટરનેટ ઍક્સેસ"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"સંપર્કો અને કૉલ ઇતિહાસની શેરિંગ"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"સંપર્કો અને કૉલ ઇતિહાસની શેરિંગ માટે ઉપયોગ કરો"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ઇન્ટરનેટ કનેક્શન શેરિંગ"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"ટેક્સ્ટ સંદેશા"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"સિમ ઍક્સેસ"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"હવામાન"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"હવાની ક્વૉલિટી"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"કાસ્ટ વિશેની માહિતી"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"પ્રોફાઇલ ફોટો પસંદ કરો"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ડિફૉલ્ટ વપરાશકર્તાનું આઇકન"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"ભૌતિક કીબોર્ડ"</string> diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml index 61a8f92b792d..13da75b9bdba 100644 --- a/packages/SettingsLib/res/values-hi/arrays.xml +++ b/packages/SettingsLib/res/values-hi/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"सिस्टम से चुने जाने का उपयोग करें (डिफ़ॉल्ट)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ऑडियो"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ऑडियो"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"सिस्टम से चुने जाने का इस्तेमाल करें (डिफ़ॉल्ट)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ऑडियो"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ऑडियो"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"सिस्टम से चुने जाने का उपयोग करें (डिफ़ॉल्ट)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index 55fc547444cd..417d2b282821 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"फ़ाइल स्थानांतरण"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"इनपुट डिवाइस"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"इंटरनेट ऐक्सेस"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"संपर्क और कॉल का इतिहास शेयर करें"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"इसका इस्तेमाल संपर्क और कॉल का इतिहास शेयर करने के लिए करें"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"इंटरनेट कनेक्शन साझाकरण"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"लेख संदेश"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"सिम ऐक्सेस"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"मौसम"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"हवा की क्वालिटी"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"कास्टिंग की जानकारी"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"प्रोफ़ाइल फ़ोटो चुनें"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"उपयोगकर्ता के लिए डिफ़ॉल्ट आइकॉन"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"फ़िज़िकल कीबोर्ड"</string> diff --git a/packages/SettingsLib/res/values-hr/arrays.xml b/packages/SettingsLib/res/values-hr/arrays.xml index c979bc47ff6d..0e66858f2d3a 100644 --- a/packages/SettingsLib/res/values-hr/arrays.xml +++ b/packages/SettingsLib/res/values-hr/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Upotreba odabira sustava (zadano)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Upotreba odabira sustava (zadano)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Upotreba odabira sustava (zadano)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml index 55a3e5ed7b4a..267000ff9d4b 100644 --- a/packages/SettingsLib/res/values-hr/strings.xml +++ b/packages/SettingsLib/res/values-hr/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Prijenos datoteke"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Ulazni uređaj"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Pristup internetu"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Dijeljenje kontakata i povijesti poziva"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Upotreba za dijeljenje kontakata i povijesti poziva"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Dijeljenje internetske veze"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS-ovi"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Pristup SIM-u"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Vremenska prognoza"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Kvaliteta zraka"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Inform. o emitiranju"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Odabir profilne slike"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ikona zadanog korisnika"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fizička tipkovnica"</string> diff --git a/packages/SettingsLib/res/values-hu/arrays.xml b/packages/SettingsLib/res/values-hu/arrays.xml index 230e5546fae5..a5f37ea4cab9 100644 --- a/packages/SettingsLib/res/values-hu/arrays.xml +++ b/packages/SettingsLib/res/values-hu/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Rendszerérték (alapértelmezett)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Hang: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Hang: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Rendszerérték (alapértelmezett)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Hang: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Hang: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Rendszerérték (alapértelmezett)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index 2454d1cc5f90..69ddad82c712 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Fájlátvitel"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Beviteli eszköz"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internetelérés"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Névjegyek és hívásnapló megosztása"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Névjegyek és hívásnapló megosztásához használható"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Internetkapcsolat megosztása"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Szöveges üzenetek"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM-elérés"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Időjárás"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Levegőminőség"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Átküldési információ"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Profilkép választása"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Alapértelmezett felhasználó ikonja"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fizikai billentyűzet"</string> diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml index 2a9c544188c7..50d7c7f59f65 100644 --- a/packages/SettingsLib/res/values-hy/arrays.xml +++ b/packages/SettingsLib/res/values-hy/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Օգտագործել համակարգի կարգավորումը (կանխադրված)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> աուդիո"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> աուդիո"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Օգտագործել համակարգի կարգավորումը (կանխադրված)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> աուդիո"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> աուդիո"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Օգտագործել համակարգի կարգավորումը (կանխադրված)"</item> <item msgid="8003118270854840095">"44,1 կՀց"</item> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index 896655119ab7..d8efbd36bbeb 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Ֆայլերի փոխանցում"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Ներմուծման սարք"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Ինտերնետի հասանելիություն"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Կիսվել կոնտակտներով/զանգերի պատմությամբ"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Օգտագործել՝ կոնտակտներով/զանգերի պատմությամբ կիսվելու համար"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Ինտերնետ կապի տարածում"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS հաղորդագրություններ"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM քարտի հասանելիություն"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Եղանակ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Օդի որակը"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Հեռարձակման տվյալներ"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Պրոֆիլի նկար ընտրեք"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Օգտատիրոջ կանխադրված պատկերակ"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Ֆիզիկական ստեղնաշար"</string> diff --git a/packages/SettingsLib/res/values-in/arrays.xml b/packages/SettingsLib/res/values-in/arrays.xml index 6349e53465ee..5b0ad98aa2d5 100644 --- a/packages/SettingsLib/res/values-in/arrays.xml +++ b/packages/SettingsLib/res/values-in/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Gunakan Pilihan Sistem (Default)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Gunakan Pilihan Sistem (Default)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Gunakan Pilihan Sistem (Default)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index c525317c65ec..029ad8bcb196 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transfer file"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Perangkat masukan"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Akses Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Berbagi kontak dan histori panggilan"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Gunakan untuk berbagi kontak dan histori panggilan"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Berbagi koneksi internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Akses SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Cuaca"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Kualitas Udara"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Info Transmisi"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Pilih foto profil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ikon pengguna default"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Keyboard fisik"</string> diff --git a/packages/SettingsLib/res/values-is/arrays.xml b/packages/SettingsLib/res/values-is/arrays.xml index 730fcaf45c98..9d481f8993d8 100644 --- a/packages/SettingsLib/res/values-is/arrays.xml +++ b/packages/SettingsLib/res/values-is/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Nota val kerfisins (sjálfgefið)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> hljóð"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> hljóð"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Nota val kerfisins (sjálfgefið)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> hljóð"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> hljóð"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Nota val kerfisins (sjálfgefið)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml index c06d2f0cc497..ccf06b027213 100644 --- a/packages/SettingsLib/res/values-is/strings.xml +++ b/packages/SettingsLib/res/values-is/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Skráaflutningur"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Inntakstæki"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internetaðgangur"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Tengiliðir, SMS-skilaboð og símtalaferill"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Nota til að deila tengiliðum og símtalaferli"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Deiling nettengingar"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Textaskilaboð"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Aðgangur að SIM-korti"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Veður"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Loftgæði"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Útsendingaruppl."</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Veldu prófílmynd"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Tákn sjálfgefins notanda"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Vélbúnaðarlyklaborð"</string> diff --git a/packages/SettingsLib/res/values-it/arrays.xml b/packages/SettingsLib/res/values-it/arrays.xml index b7e114f025fb..62450da37ff7 100644 --- a/packages/SettingsLib/res/values-it/arrays.xml +++ b/packages/SettingsLib/res/values-it/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Usa selezione di sistema (predefinita)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Usa selezione di sistema (predefinita)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Usa selezione di sistema (predefinita)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index b3ac25aaeafc..3811152467f3 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Trasferimento file"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo di input"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Accesso a Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Condivis. contatti e cronologia chiamate"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Usa per condivisione di contatti e cronologia chiamate"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Condivisione connessione Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Accesso alla SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Meteo"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Qualità dell\'aria"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Info sul cast"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Scegli un\'immagine del profilo"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Icona dell\'utente predefinito"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Tastiera fisica"</string> diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml index 587016f99614..49f3fcf3cce6 100644 --- a/packages/SettingsLib/res/values-iw/arrays.xml +++ b/packages/SettingsLib/res/values-iw/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"שימוש בבחירת המערכת (ברירת המחדל)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"אודיו <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"אודיו <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"שימוש בבחירת המערכת (ברירת המחדל)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"אודיו <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"אודיו <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"שימוש בבחירת המערכת (ברירת המחדל)"</item> <item msgid="8003118270854840095">"44.1 קילו-הרץ"</item> diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index f021b3742399..3421fb5e7b83 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"העברת קבצים"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"מכשיר קלט"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"גישה לאינטרנט"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"שיתוף אנשי הקשר והיסטוריית השיחות"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"ההגדרה משמשת לשיתוף של אנשי הקשר והיסטוריית השיחות"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"שיתוף חיבור לאינטרנט"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"הודעות טקסט"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"גישה ל-SIM"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"מזג אוויר"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"איכות האוויר"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"פרטי ההעברה"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"בית חכם"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"בחירה של תמונת פרופיל"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"סמל המשתמש שמוגדר כברירת מחדל"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"מקלדת פיזית"</string> diff --git a/packages/SettingsLib/res/values-ja/arrays.xml b/packages/SettingsLib/res/values-ja/arrays.xml index ad84d9ed6fba..d73cc4362a56 100644 --- a/packages/SettingsLib/res/values-ja/arrays.xml +++ b/packages/SettingsLib/res/values-ja/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"システムの選択(デフォルト)を使用"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> オーディオ"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> オーディオ"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"システムの選択(デフォルト)を使用"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> オーディオ"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> オーディオ"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"システムの選択(デフォルト)を使用"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml index 2994e4d41559..e7d2cf8cccff 100644 --- a/packages/SettingsLib/res/values-ja/strings.xml +++ b/packages/SettingsLib/res/values-ja/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ファイル転送"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"入力デバイス"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"インターネットアクセス"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"連絡先と通話履歴の共有"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"連絡先と通話履歴の共有に使用します"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"インターネット接続の共有"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"テキスト メッセージ"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIMアクセス"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"天気"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"大気質"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"キャスト情報"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"プロフィール写真の選択"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"デフォルト ユーザー アイコン"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"物理キーボード"</string> diff --git a/packages/SettingsLib/res/values-ka/arrays.xml b/packages/SettingsLib/res/values-ka/arrays.xml index 01f1dcc7663b..c0d6f97eb552 100644 --- a/packages/SettingsLib/res/values-ka/arrays.xml +++ b/packages/SettingsLib/res/values-ka/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"სისტემის არჩეულის გამოყენება (ნაგულისხმევი)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> აუდიო"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> აუდიო"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"სისტემის არჩეულის გამოყენება (ნაგულისხმევი)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> აუდიო"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> აუდიო"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"სისტემის არჩეულის გამოყენება (ნაგულისხმევი)"</item> <item msgid="8003118270854840095">"44,1 კჰც"</item> diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml index 0c3277bacc31..09f547132420 100644 --- a/packages/SettingsLib/res/values-ka/strings.xml +++ b/packages/SettingsLib/res/values-ka/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ფაილების გადაცემა"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"შეყვანის მოწყობილობა"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ინტერნეტზე წვდომა"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"კონტაქტ. და საუბრის ისტორიის გაზიარება"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"გამოიყენეთ კონტაქტებისა და საუბრის ისტორიის გასაზიარებლად"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ინტერნეტ კავშირის გაზიარება"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"ტექსტური შეტყობინებები"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM წვდომა"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"ამინდი"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"ჰაერის ხარისხი"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"ტრანსლირების ინფო"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"სახლის მართვა"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"აირჩიეთ პროფილის სურათი"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"მომხმარებლის ნაგულისხმევი ხატულა"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"ფიზიკური კლავიატურა"</string> diff --git a/packages/SettingsLib/res/values-kk/arrays.xml b/packages/SettingsLib/res/values-kk/arrays.xml index 33fd25bbdaf6..fc998e73a16c 100644 --- a/packages/SettingsLib/res/values-kk/arrays.xml +++ b/packages/SettingsLib/res/values-kk/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Жүйенің таңдағанын алу (әдепкі)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудиокодегі"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудиокодегі"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Жүйенің таңдағанын алу (әдепкі)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудиокодегі"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудиокодегі"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Жүйенің таңдағанын алу (әдепкі)"</item> <item msgid="8003118270854840095">"44,1 кГц"</item> diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index 63c95759a1ba..3281303a6d33 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Файл жіберу"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Кіріс құрылғысы"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Интернетке қосылу"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Контактілер мен қоңыраулар тарихын бөлісу"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Контактілер мен қоңыраулар тарихын бөлісу үшін пайдалану"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Интернет байланысын ортақ қолдану"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Мәтіндік хабарлар"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM картасына кіру"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Ауа райы"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Ауа сапасы"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Трансляция ақпараты"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Профиль суретін таңдау"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Әдепкі пайдаланушы белгішесі"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Пернетақта"</string> diff --git a/packages/SettingsLib/res/values-km/arrays.xml b/packages/SettingsLib/res/values-km/arrays.xml index ef3aa522163a..a005f4dc2bd0 100644 --- a/packages/SettingsLib/res/values-km/arrays.xml +++ b/packages/SettingsLib/res/values-km/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"ប្រើការជ្រើសរើសប្រព័ន្ធ (លំនាំដើម)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g>សំឡេង <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g>សំឡេង <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"ប្រើការជ្រើសរើសប្រព័ន្ធ (លំនាំដើម)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g>សំឡេង <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g>សំឡេង <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"ប្រើការជ្រើសរើសប្រព័ន្ធ (លំនាំដើម)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index 9b9228a6d862..87c1aa22ff92 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ផ្ទេរឯកសារ"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ឧបករណ៍បញ្ចូល"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ការចូលប្រើអ៊ីនធឺណិត"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"ការចែករំលែកទំនាក់ទំនង និងប្រវត្តិហៅទូរសព្ទ"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"ការប្រើសម្រាប់ការចែករំលែកទំនាក់ទំនង និងប្រវត្តិហៅទូរសព្ទ"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ចែករំលែកការតភ្ជាប់អ៊ីនធឺណិត"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"សារជាអក្សរ"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"ការចូលដំណើរការស៊ីម"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"អាកាសធាតុ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"គុណភាពខ្យល់"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"ព័ត៌មានអំពីការបញ្ជូន"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"ជ្រើសរើសរូបភាពកម្រងព័ត៌មាន"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"រូបអ្នកប្រើប្រាស់លំនាំដើម"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"ក្ដារចុចរូបវន្ត"</string> diff --git a/packages/SettingsLib/res/values-kn/arrays.xml b/packages/SettingsLib/res/values-kn/arrays.xml index 6623564db76a..b6014ce72c65 100644 --- a/packages/SettingsLib/res/values-kn/arrays.xml +++ b/packages/SettingsLib/res/values-kn/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"ಸಿಸ್ಟಂ ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ (ಡಿಫಾಲ್ಟ್)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ಆಡಿಯೋ"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ಆಡಿಯೋ"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"ಸಿಸ್ಟಂ ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ (ಡಿಫಾಲ್ಟ್)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ಆಡಿಯೋ"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ಆಡಿಯೋ"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"ಸಿಸ್ಟಂ ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ (ಡಿಫಾಲ್ಟ್)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> @@ -184,7 +172,7 @@ <item msgid="7300881231043255746">"ಕೆರ್ನಲ್ ಮಾತ್ರ"</item> </string-array> <string-array name="select_logpersist_summaries"> - <item msgid="97587758561106269">"ಆಫ್ ಆಗಿದೆ"</item> + <item msgid="97587758561106269">"ಆಫ್"</item> <item msgid="7126170197336963369">"ಎಲ್ಲಾ ಲಾಗ್ ಬಫರ್ಗಳು"</item> <item msgid="7167543126036181392">"ಎಲ್ಲಾ ಆದರೆ ರೇಡಿಯೊ ಲಾಗ್ ಬಫರ್ಗಳು"</item> <item msgid="5135340178556563979">"ಕೆರ್ನಲ್ ಲಾಗ್ ಬಫರ್ ಮಾತ್ರ"</item> diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml index 7071598a6b0e..ab437e8a2d3a 100644 --- a/packages/SettingsLib/res/values-kn/strings.xml +++ b/packages/SettingsLib/res/values-kn/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ಫೈಲ್ ವರ್ಗಾವಣೆ"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ಇನ್ಪುಟ್ ಸಾಧನ"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶ"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"ಸಂಪರ್ಕಗಳು ಹಾಗೂ ಕರೆ ಇತಿಹಾಸ ಹಂಚಿಕೊಳ್ಳುವಿಕೆ"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"ಸಂಪರ್ಕಗಳು ಮತ್ತು ಕರೆ ಇತಿಹಾಸ ಹಂಚಿಕೆಗಾಗಿ ಬಳಸಿ"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕ ಹಂಚಿಕೊಳ್ಳುವಿಕೆ"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"ಪಠ್ಯ ಸಂದೇಶಗಳು"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"ಸಿಮ್ ಪ್ರವೇಶ"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"ಹವಾಮಾನ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"ವಾಯು ಗುಣಮಟ್ಟ"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"ಬಿತ್ತರಿಸಿದ ಮಾಹಿತಿ"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"ಪ್ರೊಫೈಲ್ ಚಿತ್ರವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ಡೀಫಾಲ್ಟ್ ಬಳಕೆದಾರರ ಐಕಾನ್"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"ಭೌತಿಕ ಕೀಬೋರ್ಡ್"</string> diff --git a/packages/SettingsLib/res/values-ko/arrays.xml b/packages/SettingsLib/res/values-ko/arrays.xml index a20770609626..7138113c8b74 100644 --- a/packages/SettingsLib/res/values-ko/arrays.xml +++ b/packages/SettingsLib/res/values-ko/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"시스템 설정 사용(기본)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> 오디오"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> 오디오"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"시스템 설정 사용(기본)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> 오디오"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> 오디오"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"시스템 설정 사용(기본)"</item> <item msgid="8003118270854840095">"44.1kHz"</item> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index 6ba289da9ba7..2b8ab7558266 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"파일 전송"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"입력 장치"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"인터넷 액세스"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"연락처 및 통화 기록 공유"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"연락처 및 통화 기록 공유에 사용"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"인터넷 연결 공유"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"문자 메시지"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM 액세스"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"날씨"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"대기 상태"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"전송 정보"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"프로필 사진 선택하기"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"기본 사용자 아이콘"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"물리적 키보드"</string> diff --git a/packages/SettingsLib/res/values-ky/arrays.xml b/packages/SettingsLib/res/values-ky/arrays.xml index 67cdc7cdb9e2..40271f71afdb 100644 --- a/packages/SettingsLib/res/values-ky/arrays.xml +++ b/packages/SettingsLib/res/values-ky/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"карта13"</item> <item msgid="8147982633566548515">"карта14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Система тандаганды колдонуу (демейки)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудио"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудио"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Система тандаганды колдонуу (демейки)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудио"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудио"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Система тандаганды колдонуу (демейки)"</item> <item msgid="8003118270854840095">"44,1 кГц"</item> diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index 3eb43fac9151..e993e3f3049e 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Файл алмашуу"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Киргизүү түзмөгү"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Интернетке мүмкүнчүлүк алуу"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Байланыштарды жана чалуу таржымалын бөлүшүү"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Байланыштарды жана чалуу таржымалын бөлүшүү үчүн колдонуу"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Интернет байланышын бөлүшүү"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS билдирүүлөрү"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM картаны пайдалануу мүмкүнчүлүгү"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Аба ырайы"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Абанын сапаты"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Тышкы экранга чыгаруу маалыматы"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Профилдин сүрөтүн тандоо"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Демейки колдонуучунун сүрөтчөсү"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Аппараттык баскычтоп"</string> diff --git a/packages/SettingsLib/res/values-lo/arrays.xml b/packages/SettingsLib/res/values-lo/arrays.xml index 56a9741d3419..792ca39a8bf4 100644 --- a/packages/SettingsLib/res/values-lo/arrays.xml +++ b/packages/SettingsLib/res/values-lo/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"ໃຊ້ການເລືອກຂອງລະບົບ (ຄ່າເລີ່ມຕົ້ນ)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"ສຽງ <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"ສຽງ <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"ໃຊ້ການເລືອກຂອງລະບົບ (ຄ່າເລີ່ມຕົ້ນ)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"ສຽງ <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"ສຽງ <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"ໃຊ້ການເລືອກຂອງລະບົບ (ຄ່າເລີ່ມຕົ້ນ)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index 2dcad1fb774c..d295932053e2 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ການໂອນຍ້າຍໄຟລ໌"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ອຸປະກອນປ້ອນຂໍ້ມູນ"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ການເຂົ້າເຖິງອິນເຕີເນັດ"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"ແບ່ງປັນລາຍຊື່ຜູ້ຕິດຕໍ່ ແລະ ປະຫວັດການໂທ"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"ໃຊ້ສໍາລັບແບ່ງປັນລາຍຊື່ຜູ້ຕິດຕໍ່ ແລະ ປະຫວັດການໂທ"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ການແບ່ງປັນການເຊື່ອມຕໍ່ອິນເຕີເນັດ"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"ຂໍ້ຄວາມ"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"ການເຂົ້າເຖິງ SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"ສະພາບອາກາດ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"ຄຸນນະພາບອາກາດ"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"ຂໍ້ມູນການສົ່ງສັນຍານ"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"ເລືອກຮູບໂປຣໄຟລ໌"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ໄອຄອນຜູ້ໃຊ້ເລີ່ມຕົ້ນ"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"ແປ້ນພິມພາຍນອກ"</string> diff --git a/packages/SettingsLib/res/values-lt/arrays.xml b/packages/SettingsLib/res/values-lt/arrays.xml index a7aba78a51f0..946f69c3030b 100644 --- a/packages/SettingsLib/res/values-lt/arrays.xml +++ b/packages/SettingsLib/res/values-lt/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Naudoti sistemos pasirink. (numatytasis)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> garsas"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> garsas"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Naudoti sistemos pasirink. (numatytasis)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> garsas"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> garsas"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Naudoti sistemos pasirink. (numatytasis)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml index 8aaec470c3bb..e38889bbf5ad 100644 --- a/packages/SettingsLib/res/values-lt/strings.xml +++ b/packages/SettingsLib/res/values-lt/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Failo perkėlimas"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Įvesties įrenginys"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Prieiga prie interneto"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Kontaktų ir skambučių istorijos bendrinimas"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Naudoti kontaktams ir skambučių istorijai bendrinti"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Interneto ryšio bendrinimas"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Teksto pranešimai"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM prieiga"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Orai"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Oro kokybė"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Perdav. informacija"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Namų sist. valdikl."</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Pasirinkite profilio nuotrauką"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Numatytojo naudotojo piktograma"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fizinė klaviatūra"</string> diff --git a/packages/SettingsLib/res/values-lv/arrays.xml b/packages/SettingsLib/res/values-lv/arrays.xml index 840d794d55ec..f4ae45234bf5 100644 --- a/packages/SettingsLib/res/values-lv/arrays.xml +++ b/packages/SettingsLib/res/values-lv/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Sistēmas atlases izmantošana (nokl.)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Sistēmas atlases izmantošana (nokl.)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Sistēmas atlases izmantošana (nokl.)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml index fcfb9b895313..d899adaa1f0e 100644 --- a/packages/SettingsLib/res/values-lv/strings.xml +++ b/packages/SettingsLib/res/values-lv/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Failu pārsūtīšana"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Ievades ierīce"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Interneta piekļuve"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Kontaktpersonu un zvanu vēst. kopīgošana"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Paredzēts kontaktpersonu un zvanu vēstures kopīgošanai"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Interneta savienojuma koplietošana"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Īsziņas"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Piekļuve SIM kartei"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Laikapstākļi"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Gaisa kvalitāte"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Apraides informācija"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Profila attēla izvēle"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Noklusējuma lietotāja ikona"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fiziskā tastatūra"</string> diff --git a/packages/SettingsLib/res/values-mk/arrays.xml b/packages/SettingsLib/res/values-mk/arrays.xml index 2f221653c5e7..9c46f216522c 100644 --- a/packages/SettingsLib/res/values-mk/arrays.xml +++ b/packages/SettingsLib/res/values-mk/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Користи избор на системот (стандардно)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудио"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудио"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Користи избор на системот (стандардно)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудио"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудио"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Користи избор на системот (стандардно)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index 144de00caa6b..c8033e3e9ce9 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Пренос на датотека"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Влезен уред"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Пристап до интернет"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Споделување контакти и историја на повици"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Користење на споделувањето контакти и историја на повици"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Споделување конекција на интернет"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Текстуални пораки"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Пристап до SIM"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Временска прогноза"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Квалитет на воздух"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Инфо за улогите"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Контроли за домот"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Изберете профилна слика"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Икона за стандарден корисник"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Физичка тастатура"</string> diff --git a/packages/SettingsLib/res/values-ml/arrays.xml b/packages/SettingsLib/res/values-ml/arrays.xml index 3aa9472f0297..4715e2a32643 100644 --- a/packages/SettingsLib/res/values-ml/arrays.xml +++ b/packages/SettingsLib/res/values-ml/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"സിസ്റ്റം സെലക്ഷൻ ഉപയോഗിക്കൂ (ഡിഫോൾട്ട്)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ഓഡിയോ"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ഓഡിയോ"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"സിസ്റ്റം സെലക്ഷൻ ഉപയോഗിക്കൂ (ഡിഫോൾട്ട്)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ഓഡിയോ"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ഓഡിയോ"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"സിസ്റ്റം സെലക്ഷൻ ഉപയോഗിക്കൂ (ഡിഫോൾട്ട്)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml index 59cd6bcee94f..089f6afd6271 100644 --- a/packages/SettingsLib/res/values-ml/strings.xml +++ b/packages/SettingsLib/res/values-ml/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ഫയൽ കൈമാറൽ"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ഇൻപുട്ട് ഉപകരണം"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ഇന്റർനെറ്റ് ആക്സസ്"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"കോൺടാക്റ്റുകളും കോൾ ചരിത്രം പങ്കിടലും"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"കോൺടാക്റ്റുകളുടെയും കോൾ ചരിത്രം പങ്കിടലിന്റെയും ഉപയോഗം"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ഇന്റർനെറ്റ് കണക്ഷൻ പങ്കിടൽ"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"അക്ഷര സന്ദേശങ്ങൾ"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"സിം ആക്സസ്"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"കാലാവസ്ഥ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"വായു നിലവാരം"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"കാസ്റ്റ് വിവരങ്ങൾ"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"ഹോം കൺട്രോളുകൾ"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"പ്രൊഫൈൽ ചിത്രം തിരഞ്ഞെടുക്കുക"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ഡിഫോൾട്ട് ഉപയോക്തൃ ഐക്കൺ"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"ഫിസിക്കൽ കീബോർഡ്"</string> diff --git a/packages/SettingsLib/res/values-mn/arrays.xml b/packages/SettingsLib/res/values-mn/arrays.xml index 9bd10a78d402..63fa53b799d0 100644 --- a/packages/SettingsLib/res/values-mn/arrays.xml +++ b/packages/SettingsLib/res/values-mn/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Системийн сонголтыг ашиглах (Өгөгдмөл)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудио"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудио"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Системийн сонголтыг ашиглах (Өгөгдмөл)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудио"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудио"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Системийн сонголтыг ашиглах (Өгөгдмөл)"</item> <item msgid="8003118270854840095">"44.1 кГц"</item> diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index 1bd6beaacee5..cc350536e8d9 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Файл дамжуулалт"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Оруулах төхөөрөмж"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Интернэт хандалт"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Харилцагчид ба дуудлагын түүх хуваалцах"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Харилцагчид ба дуудлагын түүх хуваалцахад ашиглах"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Интернэт холболтыг хуваалцах"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Мессеж"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM Хандалт"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Цаг агаар"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Агаарын чанар"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Дамжуулах мэдээлэл"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Гэрийн удирдлага"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Профайл зураг сонгох"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Өгөгдмөл хэрэглэгчийн дүрс тэмдэг"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Биет гар"</string> diff --git a/packages/SettingsLib/res/values-mr/arrays.xml b/packages/SettingsLib/res/values-mr/arrays.xml index 45bc5b8011e0..a54f99023a42 100644 --- a/packages/SettingsLib/res/values-mr/arrays.xml +++ b/packages/SettingsLib/res/values-mr/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"सिस्टीम निवड वापरा (डीफॉल्ट)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ऑडिओ"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ऑडिओ"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"सिस्टम निवड वापरा (डीफॉल्ट)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ऑडिओ"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ऑडिओ"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"सिस्टम निवड वापरा (डीफॉल्ट)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index c163219be81c..1907d009b896 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"फाइल स्थानांतरण"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"इनपुट डिव्हाइस"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"इंटरनेट अॅक्सेस"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"संपर्क आणि कॉल इतिहास शेअरिंग"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"संपर्क आणि कॉल इतिहास शेअरिंगसाठी वापरा"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"इंटरनेट कनेक्शन शेअररण"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"मजकूर मेसेज"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"सिम अॅक्सेस"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"हवामान"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"हवेची गुणवत्ता"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"कास्टसंबंधित माहिती"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"होम कंट्रोल"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"प्रोफाइल फोटो निवडा"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"डीफॉल्ट वापरकर्ता आयकन"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"वास्तविक कीबोर्ड"</string> diff --git a/packages/SettingsLib/res/values-ms/arrays.xml b/packages/SettingsLib/res/values-ms/arrays.xml index d88ea764f56d..b26ed2317b5f 100644 --- a/packages/SettingsLib/res/values-ms/arrays.xml +++ b/packages/SettingsLib/res/values-ms/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Gunakan Pilihan Sistem (Lalai)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Gunakan Pilihan Sistem (Lalai)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Gunakan Pilihan Sistem (Lalai)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml index 55c881403bff..b3929c912e23 100644 --- a/packages/SettingsLib/res/values-ms/strings.xml +++ b/packages/SettingsLib/res/values-ms/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Pemindahan fail"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Peranti input"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Akses Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Perkongsian kenalan & sejarah panggilan"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Digunakan untuk perkongsian kenalan dan sejarah panggilan"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Perkongsian sambungan Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mesej Teks"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Akses SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Cuaca"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Kualiti Udara"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Maklumat Pelakon"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Pilih gambar profil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ikon pengguna lalai"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Papan kekunci fizikal"</string> diff --git a/packages/SettingsLib/res/values-my/arrays.xml b/packages/SettingsLib/res/values-my/arrays.xml index 857a6aed8633..ed95dfe2e008 100644 --- a/packages/SettingsLib/res/values-my/arrays.xml +++ b/packages/SettingsLib/res/values-my/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"စနစ်ရွေးချယ်မှုကို အသုံးပြုပါ (မူရင်း)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> အသံ"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> အသံ"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"စနစ်ရွေးချယ်မှုကို အသုံးပြုပါ (မူရင်း)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> အသံ"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> အသံ"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"စနစ်ရွေးချယ်မှုကို အသုံးပြုပါ (မူရင်း)"</item> <item msgid="8003118270854840095">"၄၄.၁ kHz"</item> diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml index 38b1fe82456a..f7a33a95abf7 100644 --- a/packages/SettingsLib/res/values-my/strings.xml +++ b/packages/SettingsLib/res/values-my/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ဖိုင်လွဲပြောင်းခြင်း"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ထည့်သွင်းသော စက်"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"အင်တာနက်ချိတ်ဆက်ခြင်း"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"အဆက်အသွယ်၊ ယခင်ခေါ်ဆိုမှုများ မျှဝေခြင်း"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"အဆက်အသွယ်နှင့် ယခင်ခေါ်ဆိုမှုများ မျှဝေရန် သုံးသည်"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"အင်တာနက်ဆက်သွယ်မှု မျှဝေခြင်း"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"မိုဘိုင်းမက်ဆေ့ဂျ်များ"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM အသုံးပြုခြင်း"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"မိုးလေဝသ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"လေထုအရည်အသွေး"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"ကာစ် အချက်အလက်"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"ပရိုဖိုင်ပုံ ရွေးပါ"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"မူရင်းအသုံးပြုသူ သင်္ကေတ"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"ပကတိ ကီးဘုတ်"</string> diff --git a/packages/SettingsLib/res/values-nb/arrays.xml b/packages/SettingsLib/res/values-nb/arrays.xml index 0f6e1fcb541c..317c2dbbce04 100644 --- a/packages/SettingsLib/res/values-nb/arrays.xml +++ b/packages/SettingsLib/res/values-nb/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Bruk systemvalg (standard)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>-lyd"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>-lyd"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Bruk systemvalg (standard)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>-lyd"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>-lyd"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Bruk systemvalg (standard)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml index ef2111d1c7d4..9b99631aa738 100644 --- a/packages/SettingsLib/res/values-nb/strings.xml +++ b/packages/SettingsLib/res/values-nb/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Filoverføring"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Inndataenhet"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internett-tilgang"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Deling av kontakter og anropslogg"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Bruk for deling av kontakter og anropslogg"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Deling av internettilkobling"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Tekstmeldinger"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Tilgang til SIM-kortet"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Vær"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Luftkvalitet"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Castinformasjon"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Velg et profilbilde"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Standard brukerikon"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fysisk tastatur"</string> diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml index 611066efe9d2..b3c3ee2fc86f 100644 --- a/packages/SettingsLib/res/values-ne/arrays.xml +++ b/packages/SettingsLib/res/values-ne/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> अडियो"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> अडियो"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> अडियो"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> अडियो"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> <item msgid="8003118270854840095">"४४.१ kHz"</item> diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index 9fa7749359e8..1534cba6e1bd 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"फाइल स्थानान्तरण"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"इनपुट उपकरण"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"इन्टरनेट पहुँच"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"कन्ट्याक्ट र कलको इतिहास सेयर गर्ने"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"कन्ट्याक्ट र कलको इतिहास सेयर गर्न प्रयोग गरियोस्"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"इन्टरनेट जडान साझेदारी गर्दै"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"टेक्स्ट म्यासेजहरू"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM पहुँच"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"मौसम"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"वायुको गुणस्तर"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"कास्टसम्बन्धी जानकारी"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"प्रोफाइल फोटो छान्नुहोस्"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"प्रयोगकर्ताको डिफल्ट आइकन"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"भौतिक किबोर्ड"</string> diff --git a/packages/SettingsLib/res/values-nl/arrays.xml b/packages/SettingsLib/res/values-nl/arrays.xml index e0690df63dc4..e8094521fcf7 100644 --- a/packages/SettingsLib/res/values-nl/arrays.xml +++ b/packages/SettingsLib/res/values-nl/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Systeemselectie gebruiken (standaard)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Gebruik systeemselectie (standaard)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Systeemselectie gebruiken (standaard)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index f4cbfd50ff69..ba11b4653b1c 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Bestandsoverdracht"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Invoerapparaat"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internettoegang"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Contacten en gespreksgeschiedenis delen"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Gebruiken om contacten en gespreksgeschiedenis te delen"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Internetverbinding delen"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Sms-berichten"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Sim-toegang"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Weer"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Luchtkwaliteit"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Castinformatie"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Bediening voor in huis"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Kies een profielfoto"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Standaard gebruikersicoon"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fysiek toetsenbord"</string> diff --git a/packages/SettingsLib/res/values-or/arrays.xml b/packages/SettingsLib/res/values-or/arrays.xml index dd25b3e7851f..d42aeaff755d 100644 --- a/packages/SettingsLib/res/values-or/arrays.xml +++ b/packages/SettingsLib/res/values-or/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"ସିଷ୍ଟମ୍ ଚୟନ ବ୍ୟବହାର କରନ୍ତୁ (ଡିଫଲ୍ଟ)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ଅଡିଓ"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ଅଡିଓ"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"ସିଷ୍ଟମ୍ର ଚୟନ (ଡିଫଲ୍ଟ୍) ବ୍ୟବହାର କରନ୍ତୁ"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ଅଡିଓ"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ଅଡିଓ"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"ସିଷ୍ଟମ୍ର ଚୟନ (ଡିଫଲ୍ଟ୍) ବ୍ୟବହାର କରନ୍ତୁ"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml index 76c367195a9c..09fa59d60ba8 100644 --- a/packages/SettingsLib/res/values-or/strings.xml +++ b/packages/SettingsLib/res/values-or/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ଫାଇଲ୍ ଟ୍ରାନ୍ସଫର୍"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ଇନ୍ପୁଟ୍ ଡିଭାଇସ୍"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ଇଣ୍ଟର୍ନେଟ୍ ଆକ୍ସେସ୍"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"କଣ୍ଟାକ୍ଟ ଏବଂ କଲ ଇତିହାସ ସେୟାରିଂ"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"କଣ୍ଟାକ୍ଟ ଏବଂ କଲ ଇତିହାସ ସେୟାରିଂ ପାଇଁ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ଇଣ୍ଟର୍ନେଟ୍ ସଂଯୋଗ ଶେୟାରିଙ୍ଗ"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"ଟେକ୍ସଟ୍ ମେସେଜ୍"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM ଆକ୍ସେସ୍"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"ପାଣିପାଗ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"ବାୟୁର ଗୁଣବତ୍ତା"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"କାଷ୍ଟ ସୂଚନା"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"ଏକ ପ୍ରୋଫାଇଲ ଛବି ବାଛନ୍ତୁ"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ଡିଫଲ୍ଟ ଉପଯୋଗକର୍ତ୍ତା ଆଇକନ"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"ଫିଜିକାଲ କୀବୋର୍ଡ"</string> diff --git a/packages/SettingsLib/res/values-pa/arrays.xml b/packages/SettingsLib/res/values-pa/arrays.xml index 6ba214504ea4..a3fae22d9439 100644 --- a/packages/SettingsLib/res/values-pa/arrays.xml +++ b/packages/SettingsLib/res/values-pa/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ਆਡੀਓ"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ਆਡੀਓ"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ਆਡੀਓ"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ਆਡੀਓ"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index e34ece84d8ee..9df0fefd7ff8 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ਫਾਈਲ ਟ੍ਰਾਂਸਫਰ"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ਇਨਪੁੱਟ ਡੀਵਾਈਸ"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"ਸੰਪਰਕ ਅਤੇ ਕਾਲ ਇਤਿਹਾਸ ਸਾਂਝਾ ਕਰਨਾ"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"ਸੰਪਰਕ ਅਤੇ ਕਾਲ ਇਤਿਹਾਸ ਸਾਂਝਾ ਕਰਨ ਲਈ ਵਰਤੋਂ ਕਰੋ"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਸਾਂਝਾਕਰਨ"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"ਲਿਖਤ ਸੁਨੇਹੇ"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"ਸਿਮ ਪਹੁੰਚ"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"ਮੌਸਮ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"ਹਵਾ ਦੀ ਕੁਆਲਿਟੀ"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"ਕਾਸਟ ਸੰਬੰਧੀ ਜਾਣਕਾਰੀ"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"ਕੋਈ ਪ੍ਰੋਫਾਈਲ ਤਸਵੀਰ ਚੁਣੋ"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਵਰਤੋਂਕਾਰ ਪ੍ਰਤੀਕ"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"ਭੌਤਿਕ ਕੀ-ਬੋਰਡ"</string> diff --git a/packages/SettingsLib/res/values-pl/arrays.xml b/packages/SettingsLib/res/values-pl/arrays.xml index 5f91d35bb31b..f0453d1e7df1 100644 --- a/packages/SettingsLib/res/values-pl/arrays.xml +++ b/packages/SettingsLib/res/values-pl/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Używaj wyboru systemu (domyślnie)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Używaj wyboru systemu (domyślnie)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Używaj wyboru systemu (domyślnie)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index fe56c6170224..f4599fdf806a 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Przesyłanie pliku"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Urządzenie wejściowe"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Dostęp do internetu"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Udostępnianie kontaktów i historii połączeń"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Używaj w przypadku udostępniania kontaktów i historii połączeń"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Udostępnianie połączenia internetowego"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS-y"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Dostęp do karty SIM"</string> @@ -228,7 +226,7 @@ <string name="category_personal" msgid="6236798763159385225">"Osobiste"</string> <string name="category_work" msgid="4014193632325996115">"Służbowe"</string> <string name="development_settings_title" msgid="140296922921597393">"Opcje programisty"</string> - <string name="development_settings_enable" msgid="4285094651288242183">"Włącz opcje dla programistów"</string> + <string name="development_settings_enable" msgid="4285094651288242183">"Włącz opcje programisty"</string> <string name="development_settings_summary" msgid="8718917813868735095">"Ustaw opcje związane z programowaniem aplikacji."</string> <string name="development_settings_not_available" msgid="355070198089140951">"Opcje programisty są niedostępne dla tego użytkownika"</string> <string name="vpn_settings_not_available" msgid="2894137119965668920">"Ustawienia VPN są niedostępne dla tego użytkownika"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Pogoda"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Jakość powietrza"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Obsada"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Wybierz zdjęcie profilowe"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ikona domyślnego użytkownika"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Klawiatura fizyczna"</string> diff --git a/packages/SettingsLib/res/values-pt-rBR/arrays.xml b/packages/SettingsLib/res/values-pt-rBR/arrays.xml index c5a847ff29b2..1883ef355776 100644 --- a/packages/SettingsLib/res/values-pt-rBR/arrays.xml +++ b/packages/SettingsLib/res/values-pt-rBR/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Usar seleção do sistema (padrão)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Usar seleção do sistema (padrão)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Usar seleção do sistema (padrão)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index aa66c604304b..12507c5449df 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferência de arquivo"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo de entrada"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acesso à Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Compartilhar contatos e histórico de chamadas"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Use para compartilhar contatos e o histórico de chamadas"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Compartilhamento de conexão à Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensagens de texto"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Acesso ao chip"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Clima"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Qualidade do ar"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Info. de transmissão"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Escolher a foto do perfil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ícone de usuário padrão"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Teclado físico"</string> diff --git a/packages/SettingsLib/res/values-pt-rPT/arrays.xml b/packages/SettingsLib/res/values-pt-rPT/arrays.xml index 3e7ee052ba1c..985bd515acd0 100644 --- a/packages/SettingsLib/res/values-pt-rPT/arrays.xml +++ b/packages/SettingsLib/res/values-pt-rPT/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Utilizar seleção do sistema (predefinido)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Utilizar seleção do sistema (predefinido)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Utilizar seleção do sistema (predefinido)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index cf767809da05..4988136ba43a 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferência do ficheiro"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo de entrada"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acesso à internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Part. histórico de chamadas e contactos"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Usar para partilha do histórico de chamadas e dos contactos"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Partilha da ligação à internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensagens de texto"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Acesso ao SIM"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Meteorologia"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Qualidade do ar"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Info. de transmissão"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Ctr. domésticos"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Escolha uma imagem do perfil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ícone do utilizador predefinido"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Teclado físico"</string> diff --git a/packages/SettingsLib/res/values-pt/arrays.xml b/packages/SettingsLib/res/values-pt/arrays.xml index c5a847ff29b2..1883ef355776 100644 --- a/packages/SettingsLib/res/values-pt/arrays.xml +++ b/packages/SettingsLib/res/values-pt/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Usar seleção do sistema (padrão)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Usar seleção do sistema (padrão)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Usar seleção do sistema (padrão)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index aa66c604304b..12507c5449df 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferência de arquivo"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispositivo de entrada"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acesso à Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Compartilhar contatos e histórico de chamadas"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Use para compartilhar contatos e o histórico de chamadas"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Compartilhamento de conexão à Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensagens de texto"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Acesso ao chip"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Clima"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Qualidade do ar"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Info. de transmissão"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Escolher a foto do perfil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ícone de usuário padrão"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Teclado físico"</string> diff --git a/packages/SettingsLib/res/values-ro/arrays.xml b/packages/SettingsLib/res/values-ro/arrays.xml index 454867e150ac..f1e99865c9a6 100644 --- a/packages/SettingsLib/res/values-ro/arrays.xml +++ b/packages/SettingsLib/res/values-ro/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Folosiți selectarea sistemului (prestabilit)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Folosiți selectarea sistemului (prestabilit)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Folosiți selectarea sistemului (prestabilit)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml index 946f4b7e1afa..f49fcdd96a05 100644 --- a/packages/SettingsLib/res/values-ro/strings.xml +++ b/packages/SettingsLib/res/values-ro/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transfer de fișiere"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Dispozitiv de intrare"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Acces la internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Acces la agendă și istoricul apelurilor"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Folosiți pentru accesul la agendă și istoricul apelurilor"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Distribuirea conexiunii la internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mesaje text"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Acces la SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Meteo"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Calitatea aerului"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Informații artiști"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Alegeți o fotografie de profil"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Pictograma prestabilită a utilizatorului"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Tastatură fizică"</string> diff --git a/packages/SettingsLib/res/values-ru/arrays.xml b/packages/SettingsLib/res/values-ru/arrays.xml index 28b4695d0463..b1211a5c376c 100644 --- a/packages/SettingsLib/res/values-ru/arrays.xml +++ b/packages/SettingsLib/res/values-ru/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Выбор системы (по умолчанию)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Аудиокодек: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Аудиокодек: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Выбор системы (по умолчанию)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Аудиокодек: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Аудиокодек: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Выбор системы (по умолчанию)"</item> <item msgid="8003118270854840095">"44,1 кГц"</item> diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index bcd83cf4cd79..38930a5117ca 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Профиль OPP"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Профиль HID"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Доступ к интернету"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Доступ к контактам и журналу звонков"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Использовать для доступа к контактам и журналу звонков"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Профиль PAN"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Текстовые сообщения"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Доступ к SIM-карте"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Погода"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Качество воздуха"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Данные о трансляции"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Выберите фото профиля"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Значок пользователя по умолчанию"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Физическая клавиатура"</string> diff --git a/packages/SettingsLib/res/values-si/arrays.xml b/packages/SettingsLib/res/values-si/arrays.xml index c2dbf60f5906..8386c1aa5559 100644 --- a/packages/SettingsLib/res/values-si/arrays.xml +++ b/packages/SettingsLib/res/values-si/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"පද්ධති තේරීම භාවිත කරන්න (පෙරනිමි)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ශ්රව්යය"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ශ්රව්යය"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"පද්ධති තේරීම භාවිත කරන්න (පෙරනිමි)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ශ්රව්යය"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ශ්රව්යය"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"පද්ධති තේරීම භාවිත කරන්න (පෙරනිමි)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml index 7f5eb4921ed7..fa0296f80ff0 100644 --- a/packages/SettingsLib/res/values-si/strings.xml +++ b/packages/SettingsLib/res/values-si/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ගොනු හුවමාරුව"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ආදාන උපාංගය"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"අන්තර්ජාල ප්රවේශය"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"සම්බන්ධතා සහ ඇමතුම් ඉතිහාසය බෙදා ගැනීම"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"සම්බන්ධතා සහ ඇමතුම් ඉතිහාසය බෙදා ගැනීම සඳහා භාවිතා කරන්න"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"අන්තර්ජාල සම්බන්ධතා බෙදාගැනීම"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"පෙළ පණිවිඩ"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM ප්රවේශය"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"කාලගුණය"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"වායු ගුණත්වය"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"විකාශ තතු"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"පැතිකඩ පින්තූරයක් තේරීම"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"පෙරනිමි පරිශීලක නිරූපකය"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"භෞතික යතුරු පුවරුව"</string> diff --git a/packages/SettingsLib/res/values-sk/arrays.xml b/packages/SettingsLib/res/values-sk/arrays.xml index b28588832879..370b23f6cd58 100644 --- a/packages/SettingsLib/res/values-sk/arrays.xml +++ b/packages/SettingsLib/res/values-sk/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Použiť voľbu systému (predvolené)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Zvuk: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Zvuk: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Použiť voľbu systému (predvolené)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Zvuk: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Zvuk: <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Použiť voľbu systému (predvolené)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index 31925eaf0844..a7c69c8247d8 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Prenos súborov"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Vstupné zariadenie"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Prístup na internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Zdieľanie kontaktov a histórie hovorov"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Používané pri zdieľaní kontaktov a histórie hovorov"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Zdieľanie pripojenia na Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Textové správy"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Prístup k SIM karte"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Počasie"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Kvalita vzduchu"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Informácie o prenose"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Ovládanie domácnosti"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Výber profilovej fotky"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Predvolená ikona používateľa"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fyzická klávesnica"</string> diff --git a/packages/SettingsLib/res/values-sl/arrays.xml b/packages/SettingsLib/res/values-sl/arrays.xml index 8db3e99b77fc..6e33e386d897 100644 --- a/packages/SettingsLib/res/values-sl/arrays.xml +++ b/packages/SettingsLib/res/values-sl/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Uporabi sistemsko izbiro (privzeto)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Zvok <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Zvok <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Uporabi sistemsko izbiro (privzeto)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Zvok <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Zvok <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Uporabi sistemsko izbiro (privzeto)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index 687ff38d4fc2..7334ceafc954 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Prenos datoteke"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Vnosna naprava"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internetni dostop"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Deljenje stikov in zgodovine klicev"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Uporabite za deljenje stikov in zgodovine klicev."</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Deljenje internetne povezave"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Sporočila SMS"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Dostop do kartice SIM"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Vreme"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Kakovost zraka"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"O zasedbi"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"Nadzor doma"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"Izbira profilne slike"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Privzeta ikona uporabnika"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fizična tipkovnica"</string> diff --git a/packages/SettingsLib/res/values-sq/arrays.xml b/packages/SettingsLib/res/values-sq/arrays.xml index a82f71648298..8a6d853e7818 100644 --- a/packages/SettingsLib/res/values-sq/arrays.xml +++ b/packages/SettingsLib/res/values-sq/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Përdor përzgjedhjen e sistemit (e parazgjedhur)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Audioja e <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Audioja e <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Përdor përzgjedhjen e sistemit (e parazgjedhur)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Audioja e <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Audioja e <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Përdor përzgjedhjen e sistemit (e parazgjedhur)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml index 7e96990af569..59359cdf74fd 100644 --- a/packages/SettingsLib/res/values-sq/strings.xml +++ b/packages/SettingsLib/res/values-sq/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferimi i skedarëve"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Pajisja e hyrjes"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Qasje në internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Ndarje: kontakte e historik telefonatash"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Përdor për ndarje kontaktesh e të historikut të telefonatave"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Ndarja e lidhjes së internetit"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mesazhet me tekst"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Qasje në kartën SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Moti"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Cilësia e ajrit"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Të dhënat e aktorëve"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Zgjidh një fotografi profili"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ikona e parazgjedhur e përdoruesit"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Tastiera fizike"</string> diff --git a/packages/SettingsLib/res/values-sr/arrays.xml b/packages/SettingsLib/res/values-sr/arrays.xml index 4cd83606f02d..7e198bfe3f6d 100644 --- a/packages/SettingsLib/res/values-sr/arrays.xml +++ b/packages/SettingsLib/res/values-sr/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Користи избор система (подразумевано)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудио"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудио"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Користи избор система (подразумевано)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудио"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудио"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Користи избор система (подразумевано)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index 2842223032c0..eee3f8917c50 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Пренос датотеке"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Улазни уређај"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Приступ Интернету"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Дељење контаката и историје позива"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Користите за дељење контаката и историје позива"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Дељење интернет везе"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS-ови"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Приступ SIM картици"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Време"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Квалитет ваздуха"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Подаци о пребацивању"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Одаберите слику профила"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Подразумевана икона корисника"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Физичка тастатура"</string> diff --git a/packages/SettingsLib/res/values-sv/arrays.xml b/packages/SettingsLib/res/values-sv/arrays.xml index 1432ec21ea90..f99a85b84533 100644 --- a/packages/SettingsLib/res/values-sv/arrays.xml +++ b/packages/SettingsLib/res/values-sv/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Använd systemval (standardinställning)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>-ljud"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>-ljud"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Använd systemval (standardinställning)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>-ljud"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>-ljud"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Använd systemval (standardinställning)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index b0f8df59be3c..1a8815c1164b 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Filöverföring"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Indataenhet"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internetåtkomst"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Delning av kontakter och samtalshistorik"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Använd för delning av kontakter och samtalshistorik"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Delning av Internetanslutning"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Sms"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM-åtkomst"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Väder"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Luftkvalitet"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Info om rollistan"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Välj en profilbild"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Ikon för standardanvändare"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fysiskt tangentbord"</string> diff --git a/packages/SettingsLib/res/values-sw/arrays.xml b/packages/SettingsLib/res/values-sw/arrays.xml index cb74761aec58..dab4279f88dc 100644 --- a/packages/SettingsLib/res/values-sw/arrays.xml +++ b/packages/SettingsLib/res/values-sw/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"ramani ya 13"</item> <item msgid="8147982633566548515">"ramani ya 14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Tumia Uteuzi wa Mfumo (Chaguomsingi)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Sauti ya <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Sauti ya <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Tumia Uteuzi wa Mfumo (Chaguomsingi)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Sauti ya <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Sauti ya <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Tumia Uteuzi wa Mfumo (Chaguomsingi)"</item> <item msgid="8003118270854840095">"kHz 44.1"</item> diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index 7e62d3fdb644..5f1d141a0256 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Uhamishaji wa faili"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Kifaa cha kuingiza"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Ufikiaji wa intaneti"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Kushiriki anwani na rekodi ya simu zilizopigwa"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Tumia kushiriki anwani na rekodi ya simu zilizopigwa"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Kushiriki muunganisho wa tovuti"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Ufikiaji wa SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Hali ya Hewa"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Ubora wa Hewa"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Maelezo ya Wahusika"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Chagua picha ya wasifu"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Aikoni chaguomsingi ya mtumiaji"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Kibodi halisi"</string> diff --git a/packages/SettingsLib/res/values-ta/arrays.xml b/packages/SettingsLib/res/values-ta/arrays.xml index 1f5380f9063c..a0f1fa6447c8 100644 --- a/packages/SettingsLib/res/values-ta/arrays.xml +++ b/packages/SettingsLib/res/values-ta/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"சாதனத் தேர்வைப் பயன்படுத்து (இயல்பு)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ஆடியோ"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ஆடியோ"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"சாதனத் தேர்வைப் பயன்படுத்து (இயல்பு)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ஆடியோ"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ஆடியோ"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"சாதனத் தேர்வைப் பயன்படுத்து (இயல்பு)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml index abab3fb54361..b8c37b037d02 100644 --- a/packages/SettingsLib/res/values-ta/strings.xml +++ b/packages/SettingsLib/res/values-ta/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ஃபைல் இடமாற்றம்"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"உள்ளீட்டுச் சாதனம்"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"இணைய அணுகல்"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"தொடர்புகள் & அழைப்புப் பதிவைப் பகிர்தல்"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"தொடர்புகளையும் அழைப்புப் பதிவையும் பகிர்வதற்குப் பயன்படுத்து"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"இணைய இணைப்பு பகிர்தல்"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"உரைச் செய்திகள்"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"சிம் அணுகல்"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"வானிலை"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"காற்றின் தரம்"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"அலைபரப்புத் தகவல்"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"சுயவிவரப் படத்தைத் தேர்வுசெய்யுங்கள்"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"இயல்புநிலைப் பயனர் ஐகான்"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"கீபோர்டு"</string> diff --git a/packages/SettingsLib/res/values-te/arrays.xml b/packages/SettingsLib/res/values-te/arrays.xml index 513fb6e87a10..18a27585cc8c 100644 --- a/packages/SettingsLib/res/values-te/arrays.xml +++ b/packages/SettingsLib/res/values-te/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"సిస్టమ్ ఎంపికను ఉపయోగించండి (ఆటోమేటిక్)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ఆడియో"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ఆడియో"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"సిస్టమ్ ఎంపికను ఉపయోగించండి (ఆటోమేటిక్)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ఆడియో"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ఆడియో"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"సిస్టమ్ ఎంపికను ఉపయోగించండి (ఆటోమేటిక్)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index a362f24a75b6..504c827e9a9e 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ఫైల్ బదిలీ"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ఇన్పుట్ పరికరం"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ఇంటర్నెట్ యాక్సెస్"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Contacts and call history sharing"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Use for contacts and call history sharing"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ఇంటర్నెట్ కనెక్షన్ షేరింగ్"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"టెక్స్ట్ మెసేజ్లు"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM యాక్సెస్"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"వాతావరణం"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"గాలి క్వాలిటీ"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"కాస్ట్ సమాచారం"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"హోమ్ కంట్రోల్స్"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"ప్రొఫైల్ ఫోటోను ఎంచుకోండి"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ఆటోమేటిక్ సెట్టింగ్ యూజర్ చిహ్నం"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"భౌతిక కీబోర్డ్"</string> diff --git a/packages/SettingsLib/res/values-th/arrays.xml b/packages/SettingsLib/res/values-th/arrays.xml index 732124a15f7e..04a5f4dd86b9 100644 --- a/packages/SettingsLib/res/values-th/arrays.xml +++ b/packages/SettingsLib/res/values-th/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"ใช้การเลือกของระบบ (ค่าเริ่มต้น)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"เสียง <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"เสียง <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"ใช้การเลือกของระบบ (ค่าเริ่มต้น)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"เสียง <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"เสียง <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"ใช้การเลือกของระบบ (ค่าเริ่มต้น)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index a4e050867f40..f33630dd0ea4 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"การถ่ายโอนไฟล์"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"อุปกรณ์อินพุต"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"การเข้าถึงอินเทอร์เน็ต"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"การแชร์รายชื่อติดต่อและประวัติการโทร"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"ใช้สำหรับการแชร์รายชื่อติดต่อและประวัติการโทร"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"การแชร์การเชื่อมต่ออินเทอร์เน็ต"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"ข้อความ"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"การเข้าถึงซิม"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"สภาพอากาศ"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"คุณภาพอากาศ"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"ข้อมูลแคสต์"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"เลือกรูปโปรไฟล์"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ไอคอนผู้ใช้เริ่มต้น"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"แป้นพิมพ์จริง"</string> diff --git a/packages/SettingsLib/res/values-tl/arrays.xml b/packages/SettingsLib/res/values-tl/arrays.xml index bdd8706329cc..59cb1f370338 100644 --- a/packages/SettingsLib/res/values-tl/arrays.xml +++ b/packages/SettingsLib/res/values-tl/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Gamitin ang Pagpili ng System (Default)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> na audio"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> na audio"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Gamitin ang Pagpili ng System (Default)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> na audio"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> na audio"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Gamitin ang Pagpili ng System (Default)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml index e28fd961340c..f95f0e50f1be 100644 --- a/packages/SettingsLib/res/values-tl/strings.xml +++ b/packages/SettingsLib/res/values-tl/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Paglilipat ng file"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Device sa pag-input"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Access sa internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Contacts at pagbabahagi ng call history"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Gamitin para sa contacts at pagbabahagi ng call history"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Pagbabahagi ng koneksyon sa internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mga Text Message"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Access sa SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Lagay ng Panahon"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Kalidad ng Hangin"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Impormasyon ng Cast"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Pumili ng larawan sa profile"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Icon ng default na user"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Pisikal na keyboard"</string> diff --git a/packages/SettingsLib/res/values-tr/arrays.xml b/packages/SettingsLib/res/values-tr/arrays.xml index 0d0c69a1215e..5ed35faee347 100644 --- a/packages/SettingsLib/res/values-tr/arrays.xml +++ b/packages/SettingsLib/res/values-tr/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Sistem Seçimini Kullan (Varsayılan)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ses"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ses"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Sistem Seçimini Kullan (Varsayılan)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ses"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ses"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Sistem Seçimini Kullan (Varsayılan)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml index 05ec1cc1255b..2fa2bd18c5f3 100644 --- a/packages/SettingsLib/res/values-tr/strings.xml +++ b/packages/SettingsLib/res/values-tr/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Dosya aktarımı"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Giriş cihazı"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"İnternet erişimi"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Kişi ve çağrı geçmişi paylaşımı"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Kişi ve çağrı geçmişi paylaşımı için kullanın"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"İnternet bağlantısı paylaşımı"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Kısa Mesajlar"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM Erişimi"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Hava durumu"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Hava Kalitesi"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Yayın Bilgisi"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Profil fotoğrafı seçin"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Varsayılan kullanıcı simgesi"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Fiziksel klavye"</string> diff --git a/packages/SettingsLib/res/values-uk/arrays.xml b/packages/SettingsLib/res/values-uk/arrays.xml index 49a463519a38..0410bd6ab43d 100644 --- a/packages/SettingsLib/res/values-uk/arrays.xml +++ b/packages/SettingsLib/res/values-uk/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Використовувати вибір системи (за умовчанням)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Аудіо <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Аудіо <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Використовувати вибір системи (за умовчанням)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Аудіо <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Аудіо <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Використовувати вибір системи (за умовчанням)"</item> <item msgid="8003118270854840095">"44,1 кГц"</item> diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index 184d0c118b22..9be0855b1d48 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Передавання файлів"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Пристрій введення"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Доступ до Інтернету"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Надсилання контактів та історії викликів"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Використовуйте, щоб надсилати контакти й історію викликів"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Надання доступу до Інтернету"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Текстові повідомлення"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Доступ до SIM-карти"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Погода"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Якість повітря"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Акторський склад"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Виберіть зображення профілю"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Значок користувача за умовчанням"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Фізична клавіатура"</string> diff --git a/packages/SettingsLib/res/values-ur/arrays.xml b/packages/SettingsLib/res/values-ur/arrays.xml index 5dc21236a380..d0974580b5ee 100644 --- a/packages/SettingsLib/res/values-ur/arrays.xml +++ b/packages/SettingsLib/res/values-ur/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"سسٹم انتخاب کا استعمال کریں (ڈیفالٹ)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> آڈیو"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> آڈیو"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"سسٹم انتخاب کا استعمال کریں (ڈیفالٹ)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> آڈیو"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> آڈیو"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"سسٹم انتخاب کا استعمال کریں (ڈیفالٹ)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml index 419833a457e3..8eb9a117e1a3 100644 --- a/packages/SettingsLib/res/values-ur/strings.xml +++ b/packages/SettingsLib/res/values-ur/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"فائل کی منتقلی"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ان پٹ آلہ"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"انٹرنیٹ تک رسائی"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"رابطے اور کال کی سرگزشت کا اشتراک"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"رابطے اور کال کی سرگزشت کے اشتراک کے لیے استعمال کریں"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"انٹرنیٹ کنکشن کا اشتراک کرنا"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"ٹیکسٹ پیغامات"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM رسائی"</string> @@ -662,6 +660,7 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"موسم"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"ہوا کا معیار"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"کاسٹ کرنے کی معلومات"</string> + <string name="dream_complication_title_home_controls" msgid="9153381632476738811">"ہوم کنٹرولز"</string> <string name="avatar_picker_title" msgid="8492884172713170652">"پروفائل کی تصویر منتخب کریں"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"ڈیفالٹ صارف کا آئیکن"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"فزیکل کی بورڈ"</string> diff --git a/packages/SettingsLib/res/values-uz/arrays.xml b/packages/SettingsLib/res/values-uz/arrays.xml index 589c5927a5d2..7d09027983a3 100644 --- a/packages/SettingsLib/res/values-uz/arrays.xml +++ b/packages/SettingsLib/res/values-uz/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Tizim tanlovi (birlamchi)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audiokodeki"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audiokodeki"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Tizim tanlovi (birlamchi)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audiokodeki"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audiokodeki"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Tizim tanlovi (birlamchi)"</item> <item msgid="8003118270854840095">"44.1 kGs"</item> diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml index b1e22af84503..a5c868360eae 100644 --- a/packages/SettingsLib/res/values-uz/strings.xml +++ b/packages/SettingsLib/res/values-uz/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Fayl uzatish"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Kiritish qurilmasi"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internetga ulanish"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Kontakt va chaqiruvlar tarixiga kirish"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Kontaktlar va chaqiruvlar tarixiga kirish uchun foydalaning"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Internet aloqasi ulashmasi"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS xabarlari"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM kartaga kirish"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Ob-havo"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Havo sifati"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Translatsiya axboroti"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Profil rasmini tanlash"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Foydalanuvchining standart belgisi"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Tashqi klaviatura"</string> diff --git a/packages/SettingsLib/res/values-vi/arrays.xml b/packages/SettingsLib/res/values-vi/arrays.xml index 4cf8ff49b636..31867e2f18f7 100644 --- a/packages/SettingsLib/res/values-vi/arrays.xml +++ b/packages/SettingsLib/res/values-vi/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Sử dụng lựa chọn của hệ thống (Mặc định)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"Âm thanh <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="2908219194098827570">"Âm thanh <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Sử dụng lựa chọn của hệ thống (Mặc định)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"Âm thanh <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item> - <item msgid="3517061573669307965">"Âm thanh <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Sử dụng lựa chọn của hệ thống (Mặc định)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml index 71bb08e94539..45a0465719ed 100644 --- a/packages/SettingsLib/res/values-vi/strings.xml +++ b/packages/SettingsLib/res/values-vi/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Chuyển tệp"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Thiết bị đầu vào"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Truy cập Internet"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Chia sẻ danh bạ và nhật ký cuộc gọi"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Dùng để chia sẻ danh bạ và nhật ký cuộc gọi"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Chia sẻ kết nối internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Tin nhắn văn bản"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Truy cập SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Thời tiết"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Chất lượng không khí"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Thông tin về dàn nghệ sĩ"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Chọn một ảnh hồ sơ"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Biểu tượng người dùng mặc định"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Bàn phím thực"</string> diff --git a/packages/SettingsLib/res/values-zh-rCN/arrays.xml b/packages/SettingsLib/res/values-zh-rCN/arrays.xml index af87f6fdab39..973d7d01fcc9 100644 --- a/packages/SettingsLib/res/values-zh-rCN/arrays.xml +++ b/packages/SettingsLib/res/values-zh-rCN/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"使用系统选择(默认)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> 音频"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> 音频"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"使用系统选择(默认)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> 音频"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> 音频"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"使用系统选择(默认)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml index f9e087b9b212..2bc8a305d0fc 100644 --- a/packages/SettingsLib/res/values-zh-rCN/strings.xml +++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"文件传输"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"输入设备"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"互联网连接"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"联系人信息和通话记录分享"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"用于联系人信息和通话记录分享"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"共享互联网连接"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"短信"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM 卡存取权限"</string> @@ -661,7 +659,9 @@ <string name="dream_complication_title_date" msgid="8661176085446135789">"日期"</string> <string name="dream_complication_title_weather" msgid="598609151677172783">"天气"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"空气质量"</string> - <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"投射信息"</string> + <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"投放信息"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"选择个人资料照片"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"默认用户图标"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"实体键盘"</string> diff --git a/packages/SettingsLib/res/values-zh-rHK/arrays.xml b/packages/SettingsLib/res/values-zh-rHK/arrays.xml index 209941065755..87f382524a5c 100644 --- a/packages/SettingsLib/res/values-zh-rHK/arrays.xml +++ b/packages/SettingsLib/res/values-zh-rHK/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"使用系統選擇 (預設)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> 音訊"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> 音訊"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"使用系統選擇 (預設)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> 音訊"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> 音訊"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"使用系統選擇 (預設)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml index cd93f71e1e3e..114bc6424db5 100644 --- a/packages/SettingsLib/res/values-zh-rHK/strings.xml +++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"檔案傳輸"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"輸入裝置"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"互聯網連線"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"分享通訊錄及通話記錄"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"用於分享通訊錄及通話記錄"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"互聯網連線分享"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"短訊"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM 卡存取"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"天氣"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"空氣質素"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"投放資料"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"選擇個人檔案相片"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"預設使用者圖示"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"實體鍵盤"</string> diff --git a/packages/SettingsLib/res/values-zh-rTW/arrays.xml b/packages/SettingsLib/res/values-zh-rTW/arrays.xml index 24991e35e233..529287f4354f 100644 --- a/packages/SettingsLib/res/values-zh-rTW/arrays.xml +++ b/packages/SettingsLib/res/values-zh-rTW/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"map13"</item> <item msgid="8147982633566548515">"map14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"系統自動選擇 (預設)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> 音訊"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> 音訊"</item> - <item msgid="3825367753087348007">"LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"系統自動選擇 (預設)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> 音訊"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> 音訊"</item> - <item msgid="2553206901068987657">"LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"系統自動選擇 (預設)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml index 4f36742f59f2..a7ae213c26ba 100644 --- a/packages/SettingsLib/res/values-zh-rTW/strings.xml +++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"檔案傳輸"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"輸入裝置"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"網際網路連線"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"分享聯絡人和通話記錄"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"用於分享聯絡人和通話記錄"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"網際網路連線分享"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"簡訊"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM 卡存取權"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"天氣"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"空氣品質"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"演出者資訊"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"選擇個人資料相片"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"預設使用者圖示"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"實體鍵盤"</string> diff --git a/packages/SettingsLib/res/values-zu/arrays.xml b/packages/SettingsLib/res/values-zu/arrays.xml index 8732b26817e8..59ead86f0f8f 100644 --- a/packages/SettingsLib/res/values-zu/arrays.xml +++ b/packages/SettingsLib/res/values-zu/arrays.xml @@ -85,22 +85,10 @@ <item msgid="7073042887003102964">"Imephu13"</item> <item msgid="8147982633566548515">"Imephu14"</item> </string-array> - <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Sebenzisa ukukhetha kwesistimu (Okuzenzakalelayo)"</item> - <item msgid="4055460186095649420">"SBC"</item> - <item msgid="720249083677397051">"I-AAC"</item> - <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> umsindo"</item> - <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> umsindo"</item> - <item msgid="3825367753087348007">"I-LDAC"</item> - </string-array> - <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Sebenzisa ukukhetha kwesistimu (Okuzenzakalelayo)"</item> - <item msgid="9024885861221697796">"SBC"</item> - <item msgid="4688890470703790013">"I-AAC"</item> - <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> umsindo"</item> - <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> umsindo"</item> - <item msgid="2553206901068987657">"I-LDAC"</item> - </string-array> + <!-- no translation found for bluetooth_a2dp_codec_titles:6 (328951785723550863) --> + <!-- no translation found for bluetooth_a2dp_codec_titles:7 (506175145534048710) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:6 (3940992993241040716) --> + <!-- no translation found for bluetooth_a2dp_codec_summaries:7 (7940970833006181407) --> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> <item msgid="926809261293414607">"Sebenzisa ukukhetha kwesistimu (Okuzenzakalelayo)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml index 88c41c580617..e037d1275ed1 100644 --- a/packages/SettingsLib/res/values-zu/strings.xml +++ b/packages/SettingsLib/res/values-zu/strings.xml @@ -117,10 +117,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Dlulisa ifayela"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Idivaysi yokufakwayo"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Ukufinyelela i-Inthanethi"</string> - <!-- no translation found for bluetooth_profile_pbap (4262303387989406171) --> - <skip /> - <!-- no translation found for bluetooth_profile_pbap_summary (6466456791354759132) --> - <skip /> + <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Ukwabelana ngoxhumana nabo nomlando wekholi"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Ukusetshenziswa kokwabelana ngoxhumana nabo nomlando wekholi"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Ukwabelana ngoxhumano lwe-Inthanethi"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Imilayezo yombhalo"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Ukufinyelela kwe-SIM"</string> @@ -662,6 +660,8 @@ <string name="dream_complication_title_weather" msgid="598609151677172783">"Isimo sezulu"</string> <string name="dream_complication_title_aqi" msgid="4587552608957834110">"Ikhwalithi Yomoya"</string> <string name="dream_complication_title_cast_info" msgid="4038776652841885084">"Ulwazi Lokusakaza"</string> + <!-- no translation found for dream_complication_title_home_controls (9153381632476738811) --> + <skip /> <string name="avatar_picker_title" msgid="8492884172713170652">"Khetha isithombe sephrofayela"</string> <string name="default_user_icon_description" msgid="6554047177298972638">"Isithonjana somsebenzisi sokuzenzakalelayo"</string> <string name="physical_keyboard_title" msgid="4811935435315835220">"Ikhibhodi ephathekayo"</string> diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index a79cbb6fab7a..b8792236d0d9 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -1610,6 +1610,9 @@ <string name="dream_complication_title_cast_info">Cast Info</string> <!-- Screensaver overlay which displays home controls. [CHAR LIMIT=20] --> <string name="dream_complication_title_home_controls">Home Controls</string> + <!-- Screensaver overlay which displays smartspace. [CHAR LIMIT=20] --> + <string name="dream_complication_title_smartspace">Smartspace</string> + <!-- Title for a screen allowing the user to choose a profile picture. [CHAR LIMIT=NONE] --> <string name="avatar_picker_title">Choose a profile picture</string> diff --git a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java index a46e23235843..22586171e5cf 100644 --- a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java +++ b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java @@ -92,7 +92,8 @@ public class DreamBackend { COMPLICATION_TYPE_WEATHER, COMPLICATION_TYPE_AIR_QUALITY, COMPLICATION_TYPE_CAST_INFO, - COMPLICATION_TYPE_HOME_CONTROLS + COMPLICATION_TYPE_HOME_CONTROLS, + COMPLICATION_TYPE_SMARTSPACE }) @Retention(RetentionPolicy.SOURCE) public @interface ComplicationType {} @@ -103,6 +104,7 @@ public class DreamBackend { public static final int COMPLICATION_TYPE_AIR_QUALITY = 4; public static final int COMPLICATION_TYPE_CAST_INFO = 5; public static final int COMPLICATION_TYPE_HOME_CONTROLS = 6; + public static final int COMPLICATION_TYPE_SMARTSPACE = 7; private final Context mContext; private final IDreamManager mDreamManager; @@ -351,6 +353,9 @@ public class DreamBackend { case COMPLICATION_TYPE_HOME_CONTROLS: res = R.string.dream_complication_title_home_controls; break; + case COMPLICATION_TYPE_SMARTSPACE: + res = R.string.dream_complication_title_smartspace; + break; default: return null; } diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/DialogLaunchAnimator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/DialogLaunchAnimator.kt index 2f36ab9aa93d..8f9ced6956ca 100644 --- a/packages/SystemUI/animation/src/com/android/systemui/animation/DialogLaunchAnimator.kt +++ b/packages/SystemUI/animation/src/com/android/systemui/animation/DialogLaunchAnimator.kt @@ -23,7 +23,6 @@ import android.app.Dialog import android.graphics.Color import android.graphics.Rect import android.os.Looper -import android.service.dreams.IDreamManager import android.util.Log import android.util.MathUtils import android.view.GhostView @@ -54,7 +53,7 @@ private const val TAG = "DialogLaunchAnimator" class DialogLaunchAnimator @JvmOverloads constructor( - private val dreamManager: IDreamManager, + private val callback: Callback, private val interactionJankMonitor: InteractionJankMonitor, private val launchAnimator: LaunchAnimator = LaunchAnimator(TIMINGS, INTERPOLATORS), private val isForTesting: Boolean = false @@ -126,7 +125,7 @@ constructor( val animatedDialog = AnimatedDialog( launchAnimator, - dreamManager, + callback, interactionJankMonitor, animateFrom, onDialogDismissed = { openedDialogs.remove(it) }, @@ -194,8 +193,12 @@ constructor( val dialog = animatedDialog.dialog - // Don't animate if the dialog is not showing. - if (!dialog.isShowing) { + // Don't animate if the dialog is not showing or if we are locked and going to show the + // bouncer. + if ( + !dialog.isShowing || + (!callback.isUnlocked() && !callback.isShowingAlternateAuthOnUnlock()) + ) { return null } @@ -285,6 +288,23 @@ constructor( ?.let { it.touchSurface = it.prepareForStackDismiss() } dialog.dismiss() } + + interface Callback { + /** Whether the device is currently in dreaming (screensaver) mode. */ + fun isDreaming(): Boolean + + /** + * Whether the device is currently unlocked, i.e. if it is *not* on the keyguard or if the + * keyguard can be dismissed. + */ + fun isUnlocked(): Boolean + + /** + * Whether we are going to show alternate authentication (like UDFPS) instead of the + * traditional bouncer when unlocking the device. + */ + fun isShowingAlternateAuthOnUnlock(): Boolean + } } /** @@ -296,7 +316,7 @@ data class DialogCuj(@CujType val cujType: Int, val tag: String? = null) private class AnimatedDialog( private val launchAnimator: LaunchAnimator, - private val dreamManager: IDreamManager, + private val callback: DialogLaunchAnimator.Callback, private val interactionJankMonitor: InteractionJankMonitor, /** The view that triggered the dialog after being tapped. */ @@ -850,7 +870,7 @@ private class AnimatedDialog( // If we are dreaming, the dialog was probably closed because of that so we don't animate // into the touchSurface. - if (dreamManager.isDreaming) { + if (callback.isDreaming()) { return false } diff --git a/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt b/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt index a8a526a33229..f7049cf8f4f2 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt @@ -48,9 +48,13 @@ interface SysPropFlag<T> : Flag<T> { val default: T } +/** + * Base class for most common boolean flags. + * + * See [UnreleasedFlag] and [ReleasedFlag] for useful implementations. + */ // Consider using the "parcelize" kotlin library. - -data class BooleanFlag @JvmOverloads constructor( +abstract class BooleanFlag constructor( override val id: Int, override val default: Boolean = false, override val teamfood: Boolean = false, @@ -60,7 +64,7 @@ data class BooleanFlag @JvmOverloads constructor( companion object { @JvmField val CREATOR = object : Parcelable.Creator<BooleanFlag> { - override fun createFromParcel(parcel: Parcel) = BooleanFlag(parcel) + override fun createFromParcel(parcel: Parcel) = object : BooleanFlag(parcel) {} override fun newArray(size: Int) = arrayOfNulls<BooleanFlag>(size) } } @@ -80,12 +84,46 @@ data class BooleanFlag @JvmOverloads constructor( } } +/** + * A Flag that is is false by default. + * + * It can be changed or overridden in debug builds but not in release builds. + */ +data class UnreleasedFlag @JvmOverloads constructor( + override val id: Int, + override val teamfood: Boolean = false, + override val overridden: Boolean = false +) : BooleanFlag(id, false, teamfood, overridden) + +/** + * A Flag that is is true by default. + * + * It can be changed or overridden in any build, meaning it can be turned off if needed. + */ +data class ReleasedFlag @JvmOverloads constructor( + override val id: Int, + override val teamfood: Boolean = false, + override val overridden: Boolean = false +) : BooleanFlag(id, true, teamfood, overridden) + +/** + * A Flag that reads its default values from a resource overlay instead of code. + * + * Prefer [UnreleasedFlag] and [ReleasedFlag]. + */ data class ResourceBooleanFlag @JvmOverloads constructor( override val id: Int, @BoolRes override val resourceId: Int, override val teamfood: Boolean = false ) : ResourceFlag<Boolean> +/** + * A Flag that can reads its overrides from DeviceConfig. + * + * This is generally useful for flags that come from or are used _outside_ of SystemUI. + * + * Prefer [UnreleasedFlag] and [ReleasedFlag]. + */ data class DeviceConfigBooleanFlag @JvmOverloads constructor( override val id: Int, override val name: String, @@ -94,6 +132,13 @@ data class DeviceConfigBooleanFlag @JvmOverloads constructor( override val teamfood: Boolean = false ) : DeviceConfigFlag<Boolean> +/** + * A Flag that can reads its overrides from System Properties. + * + * This is generally useful for flags that come from or are used _outside_ of SystemUI. + * + * Prefer [UnreleasedFlag] and [ReleasedFlag]. + */ data class SysPropBooleanFlag @JvmOverloads constructor( override val id: Int, override val name: String, diff --git a/packages/SystemUI/src-debug/com/android/systemui/flags/FlagsModule.kt b/packages/SystemUI/src-debug/com/android/systemui/flags/FlagsModule.kt index 256028417a1d..74bd9c6c287d 100644 --- a/packages/SystemUI/src-debug/com/android/systemui/flags/FlagsModule.kt +++ b/packages/SystemUI/src-debug/com/android/systemui/flags/FlagsModule.kt @@ -27,7 +27,8 @@ import dagger.Provides import javax.inject.Named @Module(includes = [ - SettingsUtilModule::class + ServerFlagReaderModule::class, + SettingsUtilModule::class, ]) abstract class FlagsModule { @Binds @@ -46,4 +47,4 @@ abstract class FlagsModule { @Named(ALL_FLAGS) fun providesAllFlags(): Map<Int, Flag<*>> = Flags.collectFlags() } -}
\ No newline at end of file +} diff --git a/packages/SystemUI/src-release/com/android/systemui/flags/FlagsModule.kt b/packages/SystemUI/src-release/com/android/systemui/flags/FlagsModule.kt index ab9e01eebaf7..38b5c9a9fa79 100644 --- a/packages/SystemUI/src-release/com/android/systemui/flags/FlagsModule.kt +++ b/packages/SystemUI/src-release/com/android/systemui/flags/FlagsModule.kt @@ -19,8 +19,8 @@ package com.android.systemui.flags import dagger.Binds import dagger.Module -@Module +@Module(includes = [ServerFlagReaderModule::class]) abstract class FlagsModule { @Binds abstract fun bindsFeatureFlagRelease(impl: FeatureFlagsRelease): FeatureFlags -}
\ No newline at end of file +} diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java index de7bf28c01d6..55c1806e1899 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java @@ -215,16 +215,15 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve final boolean cameraBlocked = mSensorPrivacyController .isSensorBlocked(SensorPrivacyManager.Sensors.CAMERA); @DreamOverlayStatusBarView.StatusIconType int iconType = Resources.ID_NULL; - if (micBlocked && cameraBlocked) { - iconType = DreamOverlayStatusBarView.STATUS_ICON_MIC_CAMERA_DISABLED; - } else if (!micBlocked && cameraBlocked) { - iconType = DreamOverlayStatusBarView.STATUS_ICON_CAMERA_DISABLED; - } else if (micBlocked && !cameraBlocked) { - iconType = DreamOverlayStatusBarView.STATUS_ICON_MIC_DISABLED; - } - if (iconType != Resources.ID_NULL) { - showIcon(iconType, true); - } + showIcon( + DreamOverlayStatusBarView.STATUS_ICON_CAMERA_DISABLED, + !micBlocked && cameraBlocked); + showIcon( + DreamOverlayStatusBarView.STATUS_ICON_MIC_DISABLED, + micBlocked && !cameraBlocked); + showIcon( + DreamOverlayStatusBarView.STATUS_ICON_MIC_CAMERA_DISABLED, + micBlocked && cameraBlocked); } private String buildNotificationsContentDescription(int notificationCount) { diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/Complication.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/Complication.java index 54571448c981..29bb2f42cca5 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/Complication.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/Complication.java @@ -163,7 +163,8 @@ public interface Complication { COMPLICATION_TYPE_WEATHER, COMPLICATION_TYPE_AIR_QUALITY, COMPLICATION_TYPE_CAST_INFO, - COMPLICATION_TYPE_HOME_CONTROLS + COMPLICATION_TYPE_HOME_CONTROLS, + COMPLICATION_TYPE_SMARTSPACE }) @Retention(RetentionPolicy.SOURCE) @interface ComplicationType {} @@ -175,6 +176,7 @@ public interface Complication { int COMPLICATION_TYPE_AIR_QUALITY = 1 << 3; int COMPLICATION_TYPE_CAST_INFO = 1 << 4; int COMPLICATION_TYPE_HOME_CONTROLS = 1 << 5; + int COMPLICATION_TYPE_SMARTSPACE = 1 << 6; /** * The {@link Host} interface specifies a way a {@link Complication} to communicate with its diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/ComplicationUtils.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/ComplicationUtils.java index dcab90fe7ab9..d5db63dc9093 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/ComplicationUtils.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/ComplicationUtils.java @@ -21,6 +21,7 @@ import static com.android.systemui.dreams.complication.Complication.COMPLICATION import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_DATE; import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_HOME_CONTROLS; import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_NONE; +import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_SMARTSPACE; import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_TIME; import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_WEATHER; @@ -51,6 +52,8 @@ public class ComplicationUtils { return COMPLICATION_TYPE_CAST_INFO; case DreamBackend.COMPLICATION_TYPE_HOME_CONTROLS: return COMPLICATION_TYPE_HOME_CONTROLS; + case DreamBackend.COMPLICATION_TYPE_SMARTSPACE: + return COMPLICATION_TYPE_SMARTSPACE; default: return COMPLICATION_TYPE_NONE; } diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/SmartSpaceComplication.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/SmartSpaceComplication.java index ac6edba6b3fa..567bdbc01170 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/SmartSpaceComplication.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/SmartSpaceComplication.java @@ -52,6 +52,11 @@ public class SmartSpaceComplication implements Complication { return mViewHolderProvider.get(); } + @Override + public int getRequiredTypeAvailability() { + return COMPLICATION_TYPE_SMARTSPACE; + } + /** * {@link CoreStartable} responsbile for registering {@link SmartSpaceComplication} with * SystemUI. diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlags.kt b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlags.kt index 2cee2520ce55..dfa3bcda7d72 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlags.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlags.kt @@ -23,7 +23,10 @@ package com.android.systemui.flags */ interface FeatureFlags : FlagListenable { /** Returns a boolean value for the given flag. */ - fun isEnabled(flag: BooleanFlag): Boolean + fun isEnabled(flag: UnreleasedFlag): Boolean + + /** Returns a boolean value for the given flag. */ + fun isEnabled(flag: ReleasedFlag): Boolean /** Returns a boolean value for the given flag. */ fun isEnabled(flag: ResourceBooleanFlag): Boolean @@ -39,4 +42,4 @@ interface FeatureFlags : FlagListenable { /** Returns a string value for the given flag. */ fun getString(flag: ResourceStringFlag): String -}
\ No newline at end of file +} diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java index f804325e5aec..b4b87952980b 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java +++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java @@ -48,6 +48,8 @@ import com.android.systemui.statusbar.commandline.CommandRegistry; import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.settings.SecureSettings; +import org.jetbrains.annotations.NotNull; + import java.io.PrintWriter; import java.lang.reflect.Field; import java.util.ArrayList; @@ -84,6 +86,7 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable { private final Resources mResources; private final SystemPropertiesHelper mSystemProperties; private final DeviceConfigProxy mDeviceConfigProxy; + private final ServerFlagReader mServerFlagReader; private final Map<Integer, Flag<?>> mAllFlags; private final Map<Integer, Boolean> mBooleanFlagCache = new TreeMap<>(); private final Map<Integer, String> mStringFlagCache = new TreeMap<>(); @@ -98,6 +101,7 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable { @Main Resources resources, DumpManager dumpManager, DeviceConfigProxy deviceConfigProxy, + ServerFlagReader serverFlagReader, @Named(ALL_FLAGS) Map<Integer, Flag<?>> allFlags, CommandRegistry commandRegistry, IStatusBarService barService) { @@ -106,6 +110,7 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable { mResources = resources; mSystemProperties = systemProperties; mDeviceConfigProxy = deviceConfigProxy; + mServerFlagReader = serverFlagReader; mAllFlags = allFlags; mBarService = barService; @@ -121,7 +126,16 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable { } @Override - public boolean isEnabled(@NonNull BooleanFlag flag) { + public boolean isEnabled(@NotNull UnreleasedFlag flag) { + return isEnabledInternal(flag); + } + + @Override + public boolean isEnabled(@NotNull ReleasedFlag flag) { + return isEnabledInternal(flag); + } + + private boolean isEnabledInternal(@NotNull BooleanFlag flag) { int id = flag.getId(); if (!mBooleanFlagCache.containsKey(id)) { mBooleanFlagCache.put(id, @@ -198,14 +212,17 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable { /** Specific override for Boolean flags that checks against the teamfood list.*/ private boolean readFlagValue(int id, boolean defaultValue) { Boolean result = readBooleanFlagOverride(id); - // Only check for teamfood if the default is false. - if (!defaultValue && result == null && id != Flags.TEAMFOOD.getId()) { + boolean hasServerOverride = mServerFlagReader.hasOverride(id); + + // Only check for teamfood if the default is false + // and there is no server override. + if (!hasServerOverride && !defaultValue && result == null && id != Flags.TEAMFOOD.getId()) { if (mAllFlags.containsKey(id) && mAllFlags.get(id).getTeamfood()) { return isEnabled(Flags.TEAMFOOD); } } - return result == null ? defaultValue : result; + return result == null ? mServerFlagReader.readServerOverride(id, defaultValue) : result; } private Boolean readBooleanFlagOverride(int id) { @@ -410,36 +427,38 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable { */ @Nullable private ParcelableFlag<?> toParcelableFlag(Flag<?> f) { - if (f instanceof BooleanFlag) { - return new BooleanFlag( - f.getId(), - isEnabled((BooleanFlag) f), - f.getTeamfood(), - readBooleanFlagOverride(f.getId()) != null); - } - if (f instanceof ResourceBooleanFlag) { - return new BooleanFlag( - f.getId(), - isEnabled((ResourceBooleanFlag) f), - f.getTeamfood(), - readBooleanFlagOverride(f.getId()) != null); - } - if (f instanceof DeviceConfigBooleanFlag) { - return new BooleanFlag( - f.getId(), isEnabled((DeviceConfigBooleanFlag) f), f.getTeamfood()); - } - if (f instanceof SysPropBooleanFlag) { + boolean enabled; + boolean teamfood = f.getTeamfood(); + boolean overridden; + + if (f instanceof ReleasedFlag) { + enabled = isEnabled((ReleasedFlag) f); + overridden = readBooleanFlagOverride(f.getId()) != null; + } else if (f instanceof UnreleasedFlag) { + enabled = isEnabled((UnreleasedFlag) f); + overridden = readBooleanFlagOverride(f.getId()) != null; + } else if (f instanceof ResourceBooleanFlag) { + enabled = isEnabled((ResourceBooleanFlag) f); + overridden = readBooleanFlagOverride(f.getId()) != null; + } else if (f instanceof DeviceConfigBooleanFlag) { + enabled = isEnabled((DeviceConfigBooleanFlag) f); + overridden = false; + } else if (f instanceof SysPropBooleanFlag) { // TODO(b/223379190): Teamfood not supported for sysprop flags yet. - return new BooleanFlag( - f.getId(), - ((SysPropBooleanFlag) f).getDefault(), - false, - !mSystemProperties.get(((SysPropBooleanFlag) f).getName()).isEmpty()); + enabled = isEnabled((SysPropBooleanFlag) f); + teamfood = false; + overridden = !mSystemProperties.get(((SysPropBooleanFlag) f).getName()).isEmpty(); + } else { + // TODO: add support for other flag types. + Log.w(TAG, "Unsupported Flag Type. Please file a bug."); + return null; } - // TODO: add support for other flag types. - Log.w(TAG, "Unsupported Flag Type. Please file a bug."); - return null; + if (enabled) { + return new ReleasedFlag(f.getId(), teamfood, overridden); + } else { + return new UnreleasedFlag(f.getId(), teamfood, overridden); + } } }; @@ -540,8 +559,10 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable { } private boolean isBooleanFlagEnabled(Flag<?> flag) { - if (flag instanceof BooleanFlag) { - return isEnabled((BooleanFlag) flag); + if (flag instanceof ReleasedFlag) { + return isEnabled((ReleasedFlag) flag); + } else if (flag instanceof UnreleasedFlag) { + return isEnabled((UnreleasedFlag) flag); } else if (flag instanceof ResourceBooleanFlag) { return isEnabled((ResourceBooleanFlag) flag); } else if (flag instanceof SysPropFlag) { diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java index 1492a2bc0ceb..049b17d383a2 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java +++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java @@ -19,7 +19,6 @@ package com.android.systemui.flags; import static java.util.Objects.requireNonNull; import android.content.res.Resources; -import android.provider.DeviceConfig; import android.util.SparseArray; import android.util.SparseBooleanArray; @@ -31,6 +30,8 @@ import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; import com.android.systemui.util.DeviceConfigProxy; +import org.jetbrains.annotations.NotNull; + import java.io.PrintWriter; import java.util.Map; @@ -47,18 +48,22 @@ public class FeatureFlagsRelease implements FeatureFlags, Dumpable { private final Resources mResources; private final SystemPropertiesHelper mSystemProperties; private final DeviceConfigProxy mDeviceConfigProxy; + private final ServerFlagReader mServerFlagReader; SparseBooleanArray mBooleanCache = new SparseBooleanArray(); SparseArray<String> mStringCache = new SparseArray<>(); + private boolean mInited; @Inject public FeatureFlagsRelease( @Main Resources resources, SystemPropertiesHelper systemProperties, DeviceConfigProxy deviceConfigProxy, + ServerFlagReader serverFlagReader, DumpManager dumpManager) { mResources = resources; mSystemProperties = systemProperties; mDeviceConfigProxy = deviceConfigProxy; + mServerFlagReader = serverFlagReader; dumpManager.registerDumpable("SysUIFlags", this); } @@ -69,8 +74,13 @@ public class FeatureFlagsRelease implements FeatureFlags, Dumpable { public void removeListener(@NonNull Listener listener) {} @Override - public boolean isEnabled(BooleanFlag flag) { - return flag.getDefault(); + public boolean isEnabled(@NotNull UnreleasedFlag flag) { + return false; + } + + @Override + public boolean isEnabled(@NotNull ReleasedFlag flag) { + return mServerFlagReader.readServerOverride(flag.getId(), true); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.java b/packages/SystemUI/src/com/android/systemui/flags/Flags.java index c92cf54eb960..f10af36cbcbe 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.java +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.java @@ -32,7 +32,7 @@ import java.util.Map; * * Flag Ids are integers. * Ids must be unique. This is enforced in a unit test. - * Ids need not be sequential. Flags can "claim" a chunk of ids for flags in related featurs with + * Ids need not be sequential. Flags can "claim" a chunk of ids for flags in related features with * a comment. This is purely for organizational purposes. * * On public release builds, flags will always return their default value. There is no way to @@ -41,30 +41,30 @@ import java.util.Map; * See {@link FeatureFlagsDebug} for instructions on flipping the flags via adb. */ public class Flags { - public static final BooleanFlag TEAMFOOD = new BooleanFlag(1, false); + public static final UnreleasedFlag TEAMFOOD = new UnreleasedFlag(1); /***************************************/ // 100 - notification - public static final BooleanFlag NOTIFICATION_PIPELINE_DEVELOPER_LOGGING = - new BooleanFlag(103, false); + public static final UnreleasedFlag NOTIFICATION_PIPELINE_DEVELOPER_LOGGING = + new UnreleasedFlag(103); - public static final BooleanFlag NSSL_DEBUG_LINES = - new BooleanFlag(105, false); + public static final UnreleasedFlag NSSL_DEBUG_LINES = + new UnreleasedFlag(105); - public static final BooleanFlag NSSL_DEBUG_REMOVE_ANIMATION = - new BooleanFlag(106, false); + public static final UnreleasedFlag NSSL_DEBUG_REMOVE_ANIMATION = + new UnreleasedFlag(106); - public static final BooleanFlag NEW_PIPELINE_CRASH_ON_CALL_TO_OLD_PIPELINE = - new BooleanFlag(107, false); + public static final UnreleasedFlag NEW_PIPELINE_CRASH_ON_CALL_TO_OLD_PIPELINE = + new UnreleasedFlag(107); public static final ResourceBooleanFlag NOTIFICATION_DRAG_TO_CONTENTS = new ResourceBooleanFlag(108, R.bool.config_notificationToContents); - public static final BooleanFlag REMOVE_UNRANKED_NOTIFICATIONS = - new BooleanFlag(109, false, true); + public static final UnreleasedFlag REMOVE_UNRANKED_NOTIFICATIONS = + new UnreleasedFlag(109, true); - public static final BooleanFlag FSI_REQUIRES_KEYGUARD = - new BooleanFlag(110, false, true); + public static final UnreleasedFlag FSI_REQUIRES_KEYGUARD = + new UnreleasedFlag(110, true); /***************************************/ // 200 - keyguard/lockscreen @@ -73,11 +73,11 @@ public class Flags { // public static final BooleanFlag KEYGUARD_LAYOUT = // new BooleanFlag(200, true); - public static final BooleanFlag LOCKSCREEN_ANIMATIONS = - new BooleanFlag(201, true); + public static final ReleasedFlag LOCKSCREEN_ANIMATIONS = + new ReleasedFlag(201); - public static final BooleanFlag NEW_UNLOCK_SWIPE_ANIMATION = - new BooleanFlag(202, true); + public static final ReleasedFlag NEW_UNLOCK_SWIPE_ANIMATION = + new ReleasedFlag(202); public static final ResourceBooleanFlag CHARGING_RIPPLE = new ResourceBooleanFlag(203, R.bool.flag_charging_ripple); @@ -92,31 +92,28 @@ public class Flags { * Whether the KeyguardBottomArea(View|Controller) should use the modern architecture or the old * one. */ - public static final BooleanFlag MODERN_BOTTOM_AREA = new BooleanFlag( - 206, - /* default= */ false, - /* teamfood= */ true); - - public static final BooleanFlag LOCKSCREEN_CUSTOM_CLOCKS = new BooleanFlag(207, false); + public static final UnreleasedFlag MODERN_BOTTOM_AREA = new UnreleasedFlag(206, true); + public static final UnreleasedFlag LOCKSCREEN_CUSTOM_CLOCKS = new UnreleasedFlag(207); + /** * Flag to enable the usage of the new bouncer data source. This is a refactor of and * eventual replacement of KeyguardBouncer.java. */ - public static final BooleanFlag MODERN_BOUNCER = new BooleanFlag(208, true); + public static final ReleasedFlag MODERN_BOUNCER = new ReleasedFlag(208); /***************************************/ // 300 - power menu - public static final BooleanFlag POWER_MENU_LITE = - new BooleanFlag(300, true); + public static final ReleasedFlag POWER_MENU_LITE = + new ReleasedFlag(300); /***************************************/ // 400 - smartspace - public static final BooleanFlag SMARTSPACE_DEDUPING = - new BooleanFlag(400, true); + public static final ReleasedFlag SMARTSPACE_DEDUPING = + new ReleasedFlag(400); - public static final BooleanFlag SMARTSPACE_SHARED_ELEMENT_TRANSITION_ENABLED = - new BooleanFlag(401, true); + public static final ReleasedFlag SMARTSPACE_SHARED_ELEMENT_TRANSITION_ENABLED = + new ReleasedFlag(401); public static final ResourceBooleanFlag SMARTSPACE = new ResourceBooleanFlag(402, R.bool.flag_smartspace); @@ -127,11 +124,11 @@ public class Flags { * @deprecated Not needed anymore */ @Deprecated - public static final BooleanFlag NEW_USER_SWITCHER = - new BooleanFlag(500, true); + public static final ReleasedFlag NEW_USER_SWITCHER = + new ReleasedFlag(500); - public static final BooleanFlag COMBINED_QS_HEADERS = - new BooleanFlag(501, false, true); + public static final UnreleasedFlag COMBINED_QS_HEADERS = + new UnreleasedFlag(501, true); public static final ResourceBooleanFlag PEOPLE_TILE = new ResourceBooleanFlag(502, R.bool.flag_conversations); @@ -143,9 +140,9 @@ public class Flags { * @deprecated Not needed anymore */ @Deprecated - public static final BooleanFlag NEW_FOOTER = new BooleanFlag(504, true); + public static final ReleasedFlag NEW_FOOTER = new ReleasedFlag(504); - public static final BooleanFlag NEW_HEADER = new BooleanFlag(505, false, true); + public static final UnreleasedFlag NEW_HEADER = new UnreleasedFlag(505, true); public static final ResourceBooleanFlag FULL_SCREEN_USER_SWITCHER = new ResourceBooleanFlag(506, R.bool.config_enableFullscreenUserSwitcher); @@ -154,21 +151,21 @@ public class Flags { public static final ResourceBooleanFlag STATUS_BAR_USER_SWITCHER = new ResourceBooleanFlag(602, R.bool.flag_user_switcher_chip); - public static final BooleanFlag STATUS_BAR_LETTERBOX_APPEARANCE = - new BooleanFlag(603, false); + public static final UnreleasedFlag STATUS_BAR_LETTERBOX_APPEARANCE = + new UnreleasedFlag(603, false); - public static final BooleanFlag NEW_STATUS_BAR_PIPELINE = new BooleanFlag(604, false); + public static final UnreleasedFlag NEW_STATUS_BAR_PIPELINE = new UnreleasedFlag(604, true); /***************************************/ // 700 - dialer/calls - public static final BooleanFlag ONGOING_CALL_STATUS_BAR_CHIP = - new BooleanFlag(700, true); + public static final ReleasedFlag ONGOING_CALL_STATUS_BAR_CHIP = + new ReleasedFlag(700); - public static final BooleanFlag ONGOING_CALL_IN_IMMERSIVE = - new BooleanFlag(701, true); + public static final ReleasedFlag ONGOING_CALL_IN_IMMERSIVE = + new ReleasedFlag(701); - public static final BooleanFlag ONGOING_CALL_IN_IMMERSIVE_CHIP_TAP = - new BooleanFlag(702, true); + public static final ReleasedFlag ONGOING_CALL_IN_IMMERSIVE_CHIP_TAP = + new ReleasedFlag(702); /***************************************/ // 800 - general visual/theme @@ -177,20 +174,19 @@ public class Flags { /***************************************/ // 801 - region sampling - public static final BooleanFlag REGION_SAMPLING = - new BooleanFlag(801, false); + public static final UnreleasedFlag REGION_SAMPLING = new UnreleasedFlag(801); /***************************************/ // 900 - media - public static final BooleanFlag MEDIA_TAP_TO_TRANSFER = new BooleanFlag(900, true); - public static final BooleanFlag MEDIA_SESSION_ACTIONS = new BooleanFlag(901, false); - public static final BooleanFlag MEDIA_NEARBY_DEVICES = new BooleanFlag(903, true); - public static final BooleanFlag MEDIA_MUTE_AWAIT = new BooleanFlag(904, true); + public static final ReleasedFlag MEDIA_TAP_TO_TRANSFER = new ReleasedFlag(900); + public static final UnreleasedFlag MEDIA_SESSION_ACTIONS = new UnreleasedFlag(901); + public static final ReleasedFlag MEDIA_NEARBY_DEVICES = new ReleasedFlag(903); + public static final ReleasedFlag MEDIA_MUTE_AWAIT = new ReleasedFlag(904); // 1000 - dock - public static final BooleanFlag SIMULATE_DOCK_THROUGH_CHARGING = - new BooleanFlag(1000, true); - public static final BooleanFlag DOCK_SETUP_ENABLED = new BooleanFlag(1001, true); + public static final ReleasedFlag SIMULATE_DOCK_THROUGH_CHARGING = + new ReleasedFlag(1000); + public static final ReleasedFlag DOCK_SETUP_ENABLED = new ReleasedFlag(1001); // 1100 - windowing @@ -225,12 +221,12 @@ public class Flags { public static final SysPropBooleanFlag WM_ALWAYS_ENFORCE_PREDICTIVE_BACK = new SysPropBooleanFlag(1202, "persist.wm.debug.predictive_back_always_enforce", false); - public static final BooleanFlag NEW_BACK_AFFORDANCE = - new BooleanFlag(1203, false /* default */, false /* teamfood */); + public static final UnreleasedFlag NEW_BACK_AFFORDANCE = + new UnreleasedFlag(1203, false /* teamfood */); // 1300 - screenshots - public static final BooleanFlag SCREENSHOT_REQUEST_PROCESSOR = new BooleanFlag(1300, false); + public static final UnreleasedFlag SCREENSHOT_REQUEST_PROCESSOR = new UnreleasedFlag(1300); // Pay no attention to the reflection behind the curtain. // ========================== Curtain ========================== diff --git a/packages/SystemUI/src/com/android/systemui/flags/ServerFlagReader.kt b/packages/SystemUI/src/com/android/systemui/flags/ServerFlagReader.kt new file mode 100644 index 000000000000..fc5b9f4eea05 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/flags/ServerFlagReader.kt @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2022 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.flags + +import com.android.systemui.util.DeviceConfigProxy +import dagger.Binds +import dagger.Module +import javax.inject.Inject + +interface ServerFlagReader { + /** Returns true if there is a server-side setting stored. */ + fun hasOverride(flagId: Int): Boolean + + /** Returns any stored server-side setting or the default if not set. */ + fun readServerOverride(flagId: Int, default: Boolean): Boolean +} + +class ServerFlagReaderImpl @Inject constructor( + private val deviceConfig: DeviceConfigProxy +) : ServerFlagReader { + override fun hasOverride(flagId: Int): Boolean = + deviceConfig.getProperty( + SYSUI_NAMESPACE, + getServerOverrideName(flagId) + ) != null + + override fun readServerOverride(flagId: Int, default: Boolean): Boolean { + return deviceConfig.getBoolean( + SYSUI_NAMESPACE, + getServerOverrideName(flagId), + default + ) + } + + private fun getServerOverrideName(flagId: Int): String { + return "flag_override_$flagId" + } +} + +private val SYSUI_NAMESPACE = "systemui" + +@Module +interface ServerFlagReaderModule { + @Binds + fun bindsReader(impl: ServerFlagReaderImpl): ServerFlagReader +} + +class ServerFlagReaderFake : ServerFlagReader { + private val flagMap: MutableMap<Int, Boolean> = mutableMapOf() + + override fun hasOverride(flagId: Int): Boolean { + return flagMap.containsKey(flagId) + } + + override fun readServerOverride(flagId: Int, default: Boolean): Boolean { + return flagMap.getOrDefault(flagId, default) + } + + fun setFlagValue(flagId: Int, value: Boolean) { + flagMap.put(flagId, value) + } + + fun eraseFlag(flagId: Int) { + flagMap.remove(flagId) + } +} diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt index c2b7bb10bdda..6e927b071727 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt @@ -42,7 +42,6 @@ import com.android.systemui.plugins.NavigationEdgeBackPlugin import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.util.ViewController -import com.android.wm.shell.back.BackAnimation import java.io.PrintWriter import javax.inject.Inject import kotlin.math.abs @@ -119,7 +118,7 @@ class BackPanelController private constructor( private val latencyTracker: LatencyTracker ) { /** Construct a [BackPanelController]. */ - fun create(context: Context, backAnimation: BackAnimation?): BackPanelController { + fun create(context: Context): BackPanelController { val backPanelController = BackPanelController( context, windowManager, diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java index fc6dcd3e5bb8..6ac3eadb838d 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java @@ -574,10 +574,10 @@ public class EdgeBackGestureHandler extends CurrentUserTracker private void resetEdgeBackPlugin() { if (mIsNewBackAffordanceEnabled) { setEdgeBackPlugin( - mBackPanelControllerFactory.create(mContext, mBackAnimation)); + mBackPanelControllerFactory.create(mContext)); } else { setEdgeBackPlugin( - new NavigationBarEdgePanel(mContext, mBackAnimation, mLatencyTracker)); + new NavigationBarEdgePanel(mContext, mLatencyTracker)); } } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/NavigationBarEdgePanel.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/NavigationBarEdgePanel.java index eba9d3fdcab8..122852f7d07a 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/NavigationBarEdgePanel.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/NavigationBarEdgePanel.java @@ -43,7 +43,6 @@ import android.view.View; import android.view.WindowManager; import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; -import android.window.BackEvent; import androidx.core.graphics.ColorUtils; import androidx.dynamicanimation.animation.DynamicAnimation; @@ -59,7 +58,6 @@ import com.android.systemui.animation.Interpolators; import com.android.systemui.plugins.NavigationEdgeBackPlugin; import com.android.systemui.shared.navigationbar.RegionSamplingHelper; import com.android.systemui.statusbar.VibratorHelper; -import com.android.wm.shell.back.BackAnimation; import java.io.PrintWriter; import java.util.concurrent.Executor; @@ -283,14 +281,11 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl } }; private BackCallback mBackCallback; - private BackAnimation mBackAnimation; - public NavigationBarEdgePanel(Context context, - BackAnimation backAnimation, LatencyTracker latencyTracker) { + public NavigationBarEdgePanel(Context context, LatencyTracker latencyTracker) { super(context); mWindowManager = context.getSystemService(WindowManager.class); - mBackAnimation = backAnimation; mVibratorHelper = Dependency.get(VibratorHelper.class); mDensity = context.getResources().getDisplayMetrics().density; @@ -360,7 +355,6 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl .getDimension(R.dimen.navigation_edge_action_drag_threshold); mSwipeProgressThreshold = context.getResources() .getDimension(R.dimen.navigation_edge_action_progress_threshold); - initializeBackAnimation(); setVisibility(GONE); @@ -388,17 +382,6 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl mLatencyTracker = latencyTracker; } - public void setBackAnimation(BackAnimation backAnimation) { - mBackAnimation = backAnimation; - initializeBackAnimation(); - } - - private void initializeBackAnimation() { - if (mBackAnimation != null) { - mBackAnimation.setSwipeThresholds(mSwipeTriggerThreshold, mSwipeProgressThreshold); - } - } - @Override public void onDestroy() { cancelFailsafe(); @@ -484,12 +467,6 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl @Override public void onMotionEvent(MotionEvent event) { - if (mBackAnimation != null) { - mBackAnimation.onBackMotion( - event.getX(), event.getY(), - event.getActionMasked(), - mIsLeftPanel ? BackEvent.EDGE_LEFT : BackEvent.EDGE_RIGHT); - } if (mVelocityTracker == null) { mVelocityTracker = VelocityTracker.obtain(); } @@ -903,9 +880,6 @@ public class NavigationBarEdgePanel extends View implements NavigationEdgeBackPl // Whenever the trigger back state changes the existing translation animation should be // cancelled mTranslationAnimation.cancel(); - if (mBackAnimation != null) { - mBackAnimation.setTriggerBack(triggerBack); - } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/CentralSurfacesDependenciesModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/CentralSurfacesDependenciesModule.java index 48e34501ef59..0951e821cdc2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/CentralSurfacesDependenciesModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/CentralSurfacesDependenciesModule.java @@ -19,7 +19,9 @@ package com.android.systemui.statusbar.dagger; import android.app.IActivityManager; import android.content.Context; import android.os.Handler; +import android.os.RemoteException; import android.service.dreams.IDreamManager; +import android.util.Log; import com.android.internal.jank.InteractionJankMonitor; import com.android.internal.statusbar.IStatusBarService; @@ -60,10 +62,12 @@ import com.android.systemui.statusbar.phone.ManagedProfileControllerImpl; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.phone.StatusBarIconControllerImpl; import com.android.systemui.statusbar.phone.StatusBarIconList; +import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.StatusBarRemoteInputCallback; import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController; import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallFlags; import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallLogger; +import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.RemoteInputUriController; import com.android.systemui.statusbar.window.StatusBarWindowController; import com.android.systemui.tracing.ProtoTracer; @@ -274,7 +278,30 @@ public interface CentralSurfacesDependenciesModule { @Provides @SysUISingleton static DialogLaunchAnimator provideDialogLaunchAnimator(IDreamManager dreamManager, + KeyguardStateController keyguardStateController, + Lazy<StatusBarKeyguardViewManager> statusBarKeyguardViewManager, InteractionJankMonitor interactionJankMonitor) { - return new DialogLaunchAnimator(dreamManager, interactionJankMonitor); + DialogLaunchAnimator.Callback callback = new DialogLaunchAnimator.Callback() { + @Override + public boolean isDreaming() { + try { + return dreamManager.isDreaming(); + } catch (RemoteException e) { + Log.e("DialogLaunchAnimator.Callback", "dreamManager.isDreaming failed", e); + return false; + } + } + + @Override + public boolean isUnlocked() { + return keyguardStateController.isUnlocked(); + } + + @Override + public boolean isShowingAlternateAuthOnUnlock() { + return statusBarKeyguardViewManager.get().shouldShowAltAuth(); + } + }; + return new DialogLaunchAnimator(callback, interactionJankMonitor); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index dac532b59701..e9771d2be4e3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -471,7 +471,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb showBouncer(scrimmed); } - private boolean shouldShowAltAuth() { + /** Whether we should show the alternate authentication instead of the traditional bouncer. */ + public boolean shouldShowAltAuth() { return mAlternateAuthInterceptor != null && mKeyguardUpdateManager.isUnlockingWithBiometricAllowed(true); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt index c48cbb19b40a..0f112415df0d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt @@ -26,6 +26,7 @@ import junit.framework.Assert.assertNotNull import junit.framework.Assert.assertNull import junit.framework.Assert.assertTrue import junit.framework.AssertionFailedError +import kotlin.concurrent.thread import org.junit.After import org.junit.Before import org.junit.Rule @@ -34,19 +35,18 @@ import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers.anyBoolean import org.mockito.Mock -import org.mockito.Mockito.`when` import org.mockito.Mockito.never import org.mockito.Mockito.verify +import org.mockito.Mockito.`when` import org.mockito.Spy import org.mockito.junit.MockitoJUnit -import kotlin.concurrent.thread @SmallTest @RunWith(AndroidTestingRunner::class) @RunWithLooper class ActivityLaunchAnimatorTest : SysuiTestCase() { private val launchContainer = LinearLayout(mContext) - private val testLaunchAnimator = LaunchAnimator(TEST_TIMINGS, TEST_INTERPOLATORS) + private val testLaunchAnimator = fakeLaunchAnimator() @Mock lateinit var callback: ActivityLaunchAnimator.Callback @Mock lateinit var listener: ActivityLaunchAnimator.Listener @Spy private val controller = TestLaunchAnimatorController(launchContainer) @@ -77,12 +77,13 @@ class ActivityLaunchAnimatorTest : SysuiTestCase() { // We start in a new thread so that we can ensure that the callbacks are called in the main // thread. thread { - animator.startIntentWithAnimation( + animator.startIntentWithAnimation( controller = controller, animate = animate, intentStarter = intentStarter - ) - }.join() + ) + } + .join() } @Test @@ -197,14 +198,25 @@ class ActivityLaunchAnimatorTest : SysuiTestCase() { val bounds = Rect(10 /* left */, 20 /* top */, 30 /* right */, 40 /* bottom */) val taskInfo = ActivityManager.RunningTaskInfo() taskInfo.topActivity = ComponentName("com.android.systemui", "FakeActivity") - taskInfo.topActivityInfo = ActivityInfo().apply { - applicationInfo = ApplicationInfo() - } + taskInfo.topActivityInfo = ActivityInfo().apply { applicationInfo = ApplicationInfo() } return RemoteAnimationTarget( - 0, RemoteAnimationTarget.MODE_OPENING, SurfaceControl(), false, Rect(), Rect(), 0, - Point(), Rect(), bounds, WindowConfiguration(), false, SurfaceControl(), Rect(), - taskInfo, false + 0, + RemoteAnimationTarget.MODE_OPENING, + SurfaceControl(), + false, + Rect(), + Rect(), + 0, + Point(), + Rect(), + bounds, + WindowConfiguration(), + false, + SurfaceControl(), + Rect(), + taskInfo, + false ) } } @@ -213,17 +225,17 @@ class ActivityLaunchAnimatorTest : SysuiTestCase() { * A simple implementation of [ActivityLaunchAnimator.Controller] which throws if it is called * outside of the main thread. */ -private class TestLaunchAnimatorController( - override var launchContainer: ViewGroup -) : ActivityLaunchAnimator.Controller { - override fun createAnimatorState() = LaunchAnimator.State( +private class TestLaunchAnimatorController(override var launchContainer: ViewGroup) : + ActivityLaunchAnimator.Controller { + override fun createAnimatorState() = + LaunchAnimator.State( top = 100, bottom = 200, left = 300, right = 400, topCornerRadius = 10f, bottomCornerRadius = 20f - ) + ) private fun assertOnMainThread() { if (Looper.myLooper() != Looper.getMainLooper()) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/DialogLaunchAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/DialogLaunchAnimatorTest.kt index 4218e0904c43..7c1e384f8c30 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/animation/DialogLaunchAnimatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/animation/DialogLaunchAnimatorTest.kt @@ -5,7 +5,6 @@ import android.content.Context import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle -import android.service.dreams.IDreamManager import android.testing.AndroidTestingRunner import android.testing.TestableLooper import android.testing.ViewUtils @@ -38,19 +37,16 @@ import org.mockito.junit.MockitoJUnit @RunWith(AndroidTestingRunner::class) @TestableLooper.RunWithLooper class DialogLaunchAnimatorTest : SysuiTestCase() { - private val launchAnimator = LaunchAnimator(TEST_TIMINGS, TEST_INTERPOLATORS) private lateinit var dialogLaunchAnimator: DialogLaunchAnimator private val attachedViews = mutableSetOf<View>() - @Mock lateinit var dreamManager: IDreamManager @Mock lateinit var interactionJankMonitor: InteractionJankMonitor @get:Rule val rule = MockitoJUnit.rule() @Before fun setUp() { - dialogLaunchAnimator = DialogLaunchAnimator( - dreamManager, interactionJankMonitor, launchAnimator, isForTesting = true - ) + dialogLaunchAnimator = + fakeDialogLaunchAnimator(interactionJankMonitor = interactionJankMonitor) } @After @@ -153,6 +149,22 @@ class DialogLaunchAnimatorTest : SysuiTestCase() { } @Test + fun testActivityLaunchWhenLockedWithoutAlternateAuth() { + val dialogLaunchAnimator = + fakeDialogLaunchAnimator(isUnlocked = false, isShowingAlternateAuthOnUnlock = false) + val dialog = createAndShowDialog(dialogLaunchAnimator) + assertNull(dialogLaunchAnimator.createActivityLaunchController(dialog.contentView)) + } + + @Test + fun testActivityLaunchWhenLockedWithAlternateAuth() { + val dialogLaunchAnimator = + fakeDialogLaunchAnimator(isUnlocked = false, isShowingAlternateAuthOnUnlock = true) + val dialog = createAndShowDialog(dialogLaunchAnimator) + assertNotNull(dialogLaunchAnimator.createActivityLaunchController(dialog.contentView)) + } + + @Test fun testDialogAnimationIsChangedByAnimator() { // Important: the power menu animation relies on this behavior to know when to animate (see // http://ag/16774605). @@ -193,11 +205,13 @@ class DialogLaunchAnimatorTest : SysuiTestCase() { verify(interactionJankMonitor).end(InteractionJankMonitor.CUJ_USER_DIALOG_OPEN) } - private fun createAndShowDialog(): TestDialog { + private fun createAndShowDialog( + animator: DialogLaunchAnimator = dialogLaunchAnimator, + ): TestDialog { val touchSurface = createTouchSurface() return runOnMainThreadAndWaitForIdleSync { val dialog = TestDialog(context) - dialogLaunchAnimator.showFromView(dialog, touchSurface) + animator.showFromView(dialog, touchSurface) dialog } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/TestValues.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/TestValues.kt deleted file mode 100644 index dadf94e2a9dd..000000000000 --- a/packages/SystemUI/tests/src/com/android/systemui/animation/TestValues.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.android.systemui.animation - -/** - * A [LaunchAnimator.Timings] to be used in tests. - * - * Note that all timings except the total duration are non-zero to avoid divide-by-zero exceptions - * when computing the progress of a sub-animation (the contents fade in/out). - */ -val TEST_TIMINGS = LaunchAnimator.Timings( - totalDuration = 0L, - contentBeforeFadeOutDelay = 1L, - contentBeforeFadeOutDuration = 1L, - contentAfterFadeInDelay = 1L, - contentAfterFadeInDuration = 1L -) - -/** A [LaunchAnimator.Interpolators] to be used in tests. */ -val TEST_INTERPOLATORS = LaunchAnimator.Interpolators( - positionInterpolator = Interpolators.STANDARD, - positionXInterpolator = Interpolators.STANDARD, - contentBeforeFadeOutInterpolator = Interpolators.STANDARD, - contentAfterFadeInInterpolator = Interpolators.STANDARD -)
\ No newline at end of file diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/ComplicationUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/ComplicationUtilsTest.java index 2915f5a504d7..e099c9269d3f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/ComplicationUtilsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/ComplicationUtilsTest.java @@ -20,6 +20,7 @@ import static com.android.systemui.dreams.complication.Complication.COMPLICATION import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_CAST_INFO; import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_DATE; import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_HOME_CONTROLS; +import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_SMARTSPACE; import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_TIME; import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_WEATHER; import static com.android.systemui.dreams.complication.ComplicationUtils.convertComplicationType; @@ -60,6 +61,8 @@ public class ComplicationUtilsTest extends SysuiTestCase { .isEqualTo(COMPLICATION_TYPE_CAST_INFO); assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_HOME_CONTROLS)) .isEqualTo(COMPLICATION_TYPE_HOME_CONTROLS); + assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_SMARTSPACE)) + .isEqualTo(COMPLICATION_TYPE_SMARTSPACE); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlags.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlags.kt index b2a4e33978a1..7b1455cb2e46 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlags.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlags.kt @@ -19,7 +19,6 @@ package com.android.systemui.flags import android.util.SparseArray import android.util.SparseBooleanArray import androidx.core.util.containsKey -import java.lang.IllegalStateException class FakeFeatureFlags : FeatureFlags { private val booleanFlags = SparseBooleanArray() @@ -57,7 +56,10 @@ class FakeFeatureFlags : FeatureFlags { stringFlags.put(flag.id, value) } - override fun isEnabled(flag: BooleanFlag): Boolean = requireBooleanValue(flag.id) + + override fun isEnabled(flag: UnreleasedFlag): Boolean = requireBooleanValue(flag.id) + + override fun isEnabled(flag: ReleasedFlag): Boolean = requireBooleanValue(flag.id) override fun isEnabled(flag: ResourceBooleanFlag): Boolean = requireBooleanValue(flag.id) diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt index 7d4b4f53e380..ff579a1cc4aa 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt @@ -29,11 +29,12 @@ import org.junit.runner.RunWith @RunWith(AndroidTestingRunner::class) class FakeFeatureFlagsTest : SysuiTestCase() { - private val booleanFlag = BooleanFlag(-1000) - private val stringFlag = StringFlag(-1001) - private val resourceBooleanFlag = ResourceBooleanFlag(-1002, resourceId = -1) - private val resourceStringFlag = ResourceStringFlag(-1003, resourceId = -1) - private val sysPropBooleanFlag = SysPropBooleanFlag(-1004, name = "test") + private val unreleasedFlag = UnreleasedFlag(-1000) + private val releasedFlag = ReleasedFlag(-1001) + private val stringFlag = StringFlag(-1002) + private val resourceBooleanFlag = ResourceBooleanFlag(-1003, resourceId = -1) + private val resourceStringFlag = ResourceStringFlag(-1004, resourceId = -1) + private val sysPropBooleanFlag = SysPropBooleanFlag(-1005, name = "test") /** * FakeFeatureFlags does not honor any default values. All flags which are accessed must be @@ -49,56 +50,66 @@ class FakeFeatureFlagsTest : SysuiTestCase() { assertThat(ex.message).contains("TEAMFOOD") } try { - assertThat(flags.isEnabled(booleanFlag)).isFalse() + assertThat(flags.isEnabled(unreleasedFlag)).isFalse() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { assertThat(ex.message).contains("UNKNOWN(id=-1000)") } try { + assertThat(flags.isEnabled(releasedFlag)).isFalse() + fail("Expected an exception when accessing an unspecified flag.") + } catch (ex: IllegalStateException) { + assertThat(ex.message).contains("UNKNOWN(id=-1001)") + } + try { assertThat(flags.isEnabled(resourceBooleanFlag)).isFalse() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("UNKNOWN(id=-1002)") + assertThat(ex.message).contains("UNKNOWN(id=-1003)") } try { assertThat(flags.isEnabled(sysPropBooleanFlag)).isFalse() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("UNKNOWN(id=-1004)") + assertThat(ex.message).contains("UNKNOWN(id=-1005)") } try { assertThat(flags.getString(stringFlag)).isEmpty() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("UNKNOWN(id=-1001)") + assertThat(ex.message).contains("UNKNOWN(id=-1002)") } try { assertThat(flags.getString(resourceStringFlag)).isEmpty() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("UNKNOWN(id=-1003)") + assertThat(ex.message).contains("UNKNOWN(id=-1004)") } } @Test fun specifiedFlagsReturnCorrectValues() { val flags = FakeFeatureFlags() - flags.set(booleanFlag, false) + flags.set(unreleasedFlag, false) + flags.set(releasedFlag, false) flags.set(resourceBooleanFlag, false) flags.set(sysPropBooleanFlag, false) flags.set(resourceStringFlag, "") - assertThat(flags.isEnabled(booleanFlag)).isFalse() + assertThat(flags.isEnabled(unreleasedFlag)).isFalse() + assertThat(flags.isEnabled(releasedFlag)).isFalse() assertThat(flags.isEnabled(resourceBooleanFlag)).isFalse() assertThat(flags.isEnabled(sysPropBooleanFlag)).isFalse() assertThat(flags.getString(resourceStringFlag)).isEmpty() - flags.set(booleanFlag, true) + flags.set(unreleasedFlag, true) + flags.set(releasedFlag, true) flags.set(resourceBooleanFlag, true) flags.set(sysPropBooleanFlag, true) flags.set(resourceStringFlag, "Android") - assertThat(flags.isEnabled(booleanFlag)).isTrue() + assertThat(flags.isEnabled(unreleasedFlag)).isTrue() + assertThat(flags.isEnabled(releasedFlag)).isTrue() assertThat(flags.isEnabled(resourceBooleanFlag)).isTrue() assertThat(flags.isEnabled(sysPropBooleanFlag)).isTrue() assertThat(flags.getString(resourceStringFlag)).isEqualTo("Android") diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt index 51f3404a9bca..4511193d41d3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt @@ -35,6 +35,10 @@ import com.android.systemui.util.mockito.nullable import com.android.systemui.util.mockito.withArgCaptor import com.android.systemui.util.settings.SecureSettings import com.google.common.truth.Truth.assertThat +import java.io.PrintWriter +import java.io.Serializable +import java.io.StringWriter +import java.util.function.Consumer import org.junit.Assert import org.junit.Before import org.junit.Test @@ -48,12 +52,8 @@ import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.Mockito.verifyZeroInteractions -import org.mockito.MockitoAnnotations -import java.io.PrintWriter -import java.io.Serializable -import java.io.StringWriter -import java.util.function.Consumer import org.mockito.Mockito.`when` as whenever +import org.mockito.MockitoAnnotations /** * NOTE: This test is for the version of FeatureFlagManager in src-release, which should not allow @@ -75,10 +75,11 @@ class FeatureFlagsDebugTest : SysuiTestCase() { private val flagMap = mutableMapOf<Int, Flag<*>>() private lateinit var broadcastReceiver: BroadcastReceiver private lateinit var clearCacheAction: Consumer<Int> + private val serverFlagReader = ServerFlagReaderFake() private val deviceConfig = DeviceConfigProxyFake() - private val teamfoodableFlagA = BooleanFlag(500, false, true) - private val teamfoodableFlagB = BooleanFlag(501, true, true) + private val teamfoodableFlagA = UnreleasedFlag(500, true) + private val teamfoodableFlagB = ReleasedFlag(501, true) @Before fun setup() { @@ -93,6 +94,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { resources, dumpManager, deviceConfig, + serverFlagReader, flagMap, commandRegistry, barService @@ -109,40 +111,41 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testReadBooleanFlag() { + fun readBooleanFlag() { // Remember that the TEAMFOOD flag is id#1 and has special behavior. whenever(flagManager.readFlagValue<Boolean>(eq(3), any())).thenReturn(true) whenever(flagManager.readFlagValue<Boolean>(eq(4), any())).thenReturn(false) - assertThat(mFeatureFlagsDebug.isEnabled(BooleanFlag(2, true))).isTrue() - assertThat(mFeatureFlagsDebug.isEnabled(BooleanFlag(3, false))).isTrue() - assertThat(mFeatureFlagsDebug.isEnabled(BooleanFlag(4, true))).isFalse() - assertThat(mFeatureFlagsDebug.isEnabled(BooleanFlag(5, false))).isFalse() + + assertThat(mFeatureFlagsDebug.isEnabled(ReleasedFlag(2))).isTrue() + assertThat(mFeatureFlagsDebug.isEnabled(UnreleasedFlag(3))).isTrue() + assertThat(mFeatureFlagsDebug.isEnabled(ReleasedFlag(4))).isFalse() + assertThat(mFeatureFlagsDebug.isEnabled(UnreleasedFlag(5))).isFalse() } @Test - fun testTeamFoodFlag_False() { + fun teamFoodFlag_False() { whenever(flagManager.readFlagValue<Boolean>(eq(1), any())).thenReturn(false) assertThat(mFeatureFlagsDebug.isEnabled(teamfoodableFlagA)).isFalse() assertThat(mFeatureFlagsDebug.isEnabled(teamfoodableFlagB)).isTrue() // Regular boolean flags should still test the same. // Only our teamfoodableFlag should change. - testReadBooleanFlag() + readBooleanFlag() } @Test - fun testTeamFoodFlag_True() { + fun teamFoodFlag_True() { whenever(flagManager.readFlagValue<Boolean>(eq(1), any())).thenReturn(true) assertThat(mFeatureFlagsDebug.isEnabled(teamfoodableFlagA)).isTrue() assertThat(mFeatureFlagsDebug.isEnabled(teamfoodableFlagB)).isTrue() // Regular boolean flags should still test the same. // Only our teamfoodableFlag should change. - testReadBooleanFlag() + readBooleanFlag() } @Test - fun testTeamFoodFlag_Overridden() { + fun teamFoodFlag_Overridden() { whenever(flagManager.readFlagValue<Boolean>(eq(teamfoodableFlagA.id), any())) .thenReturn(true) whenever(flagManager.readFlagValue<Boolean>(eq(teamfoodableFlagB.id), any())) @@ -153,11 +156,11 @@ class FeatureFlagsDebugTest : SysuiTestCase() { // Regular boolean flags should still test the same. // Only our teamfoodableFlag should change. - testReadBooleanFlag() + readBooleanFlag() } @Test - fun testReadResourceBooleanFlag() { + fun readResourceBooleanFlag() { whenever(resources.getBoolean(1001)).thenReturn(false) whenever(resources.getBoolean(1002)).thenReturn(true) whenever(resources.getBoolean(1003)).thenReturn(false) @@ -182,7 +185,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testReadSysPropBooleanFlag() { + fun readSysPropBooleanFlag() { whenever(systemProperties.getBoolean(anyString(), anyBoolean())).thenAnswer { if ("b".equals(it.getArgument<String?>(0))) { return@thenAnswer true @@ -198,7 +201,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testReadDeviceConfigBooleanFlag() { + fun readDeviceConfigBooleanFlag() { val namespace = "test_namespace" deviceConfig.setProperty(namespace, "a", "true", false) deviceConfig.setProperty(namespace, "b", "false", false) @@ -213,7 +216,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testReadStringFlag() { + fun readStringFlag() { whenever(flagManager.readFlagValue<String>(eq(3), any())).thenReturn("foo") whenever(flagManager.readFlagValue<String>(eq(4), any())).thenReturn("bar") assertThat(mFeatureFlagsDebug.getString(StringFlag(1, "biz"))).isEqualTo("biz") @@ -223,7 +226,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testReadResourceStringFlag() { + fun readResourceStringFlag() { whenever(resources.getString(1001)).thenReturn("") whenever(resources.getString(1002)).thenReturn("resource2") whenever(resources.getString(1003)).thenReturn("resource3") @@ -253,8 +256,8 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testBroadcastReceiverIgnoresInvalidData() { - addFlag(BooleanFlag(1, false)) + fun broadcastReceiver_IgnoresInvalidData() { + addFlag(UnreleasedFlag(1)) addFlag(ResourceBooleanFlag(2, 1002)) addFlag(StringFlag(3, "flag3")) addFlag(ResourceStringFlag(4, 1004)) @@ -272,10 +275,10 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testIntentWithIdButNoValueKeyClears() { - addFlag(BooleanFlag(1, false)) + fun intentWithId_NoValueKeyClears() { + addFlag(UnreleasedFlag(1)) - // trying to erase an id not in the map does noting + // trying to erase an id not in the map does nothing broadcastReceiver.onReceive( mockContext, Intent(FlagManager.ACTION_SET_FLAG).putExtra(FlagManager.EXTRA_ID, 0) @@ -291,9 +294,9 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testSetBooleanFlag() { - addFlag(BooleanFlag(1, false)) - addFlag(BooleanFlag(2, false)) + fun setBooleanFlag() { + addFlag(UnreleasedFlag(1)) + addFlag(UnreleasedFlag(2)) addFlag(ResourceBooleanFlag(3, 1003)) addFlag(ResourceBooleanFlag(4, 1004)) @@ -311,7 +314,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testSetStringFlag() { + fun setStringFlag() { addFlag(StringFlag(1, "flag1")) addFlag(ResourceStringFlag(2, 1002)) @@ -323,7 +326,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testSetFlagClearsCache() { + fun setFlag_ClearsCache() { val flag1 = addFlag(StringFlag(1, "flag1")) whenever(flagManager.readFlagValue<String>(eq(1), any())).thenReturn("original") @@ -345,12 +348,30 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testRegisterCommand() { + fun serverSide_Overrides_MakesFalse() { + val flag = ReleasedFlag(100) + + serverFlagReader.setFlagValue(flag.id, false) + + assertThat(mFeatureFlagsDebug.isEnabled(flag)).isFalse() + } + + @Test + fun serverSide_Overrides_MakesTrue() { + val flag = UnreleasedFlag(100) + + serverFlagReader.setFlagValue(flag.id, true) + + assertThat(mFeatureFlagsDebug.isEnabled(flag)).isTrue() + } + + @Test + fun statusBarCommand_IsRegistered() { verify(commandRegistry).registerCommand(anyString(), any()) } @Test - fun testNoOpCommand() { + fun noOpCommand() { val cmd = captureCommand() cmd.execute(pw, ArrayList()) @@ -360,72 +381,42 @@ class FeatureFlagsDebugTest : SysuiTestCase() { } @Test - fun testReadFlagCommand() { - addFlag(BooleanFlag(1, false)) + fun readFlagCommand() { + addFlag(UnreleasedFlag(1)) val cmd = captureCommand() cmd.execute(pw, listOf("1")) verify(flagManager).readFlagValue<Boolean>(eq(1), any()) } @Test - fun testSetFlagCommand() { - addFlag(BooleanFlag(1, false)) + fun setFlagCommand() { + addFlag(UnreleasedFlag(1)) val cmd = captureCommand() cmd.execute(pw, listOf("1", "on")) verifyPutData(1, "{\"type\":\"boolean\",\"value\":true}") } @Test - fun testToggleFlagCommand() { - addFlag(BooleanFlag(1, true)) + fun toggleFlagCommand() { + addFlag(ReleasedFlag(1)) val cmd = captureCommand() cmd.execute(pw, listOf("1", "toggle")) verifyPutData(1, "{\"type\":\"boolean\",\"value\":false}", 2) } @Test - fun testEraseFlagCommand() { - addFlag(BooleanFlag(1, true)) + fun eraseFlagCommand() { + addFlag(ReleasedFlag(1)) val cmd = captureCommand() cmd.execute(pw, listOf("1", "erase")) verify(secureSettings).putStringForUser(eq("key-1"), eq(""), anyInt()) } - private fun verifyPutData(id: Int, data: String, numReads: Int = 1) { - inOrder(flagManager, secureSettings).apply { - verify(flagManager, times(numReads)).readFlagValue(eq(id), any<FlagSerializer<*>>()) - verify(flagManager).idToSettingsKey(eq(id)) - verify(secureSettings).putStringForUser(eq("key-$id"), eq(data), anyInt()) - verify(flagManager).dispatchListenersAndMaybeRestart(eq(id), any()) - }.verifyNoMoreInteractions() - verifyNoMoreInteractions(flagManager, secureSettings) - } - - private fun setByBroadcast(id: Int, value: Serializable?) { - val intent = Intent(FlagManager.ACTION_SET_FLAG) - intent.putExtra(FlagManager.EXTRA_ID, id) - intent.putExtra(FlagManager.EXTRA_VALUE, value) - broadcastReceiver.onReceive(mockContext, intent) - } - - private fun <F : Flag<*>> addFlag(flag: F): F { - val old = flagMap.put(flag.id, flag) - check(old == null) { "Flag ${flag.id} already registered" } - return flag - } - - private fun captureCommand(): Command { - val captor = argumentCaptor<Function0<Command>>() - verify(commandRegistry).registerCommand(anyString(), capture(captor)) - - return captor.value.invoke() - } - @Test - fun testDump() { - val flag1 = BooleanFlag(1, true) + fun dumpFormat() { + val flag1 = ReleasedFlag(1) val flag2 = ResourceBooleanFlag(2, 1002) - val flag3 = BooleanFlag(3, false) + val flag3 = UnreleasedFlag(3) val flag4 = StringFlag(4, "") val flag5 = StringFlag(5, "flag5default") val flag6 = ResourceStringFlag(6, 1006) @@ -457,6 +448,36 @@ class FeatureFlagsDebugTest : SysuiTestCase() { assertThat(dump).contains(" sysui_flag_7: [length=9] \"override7\"\n") } + private fun verifyPutData(id: Int, data: String, numReads: Int = 1) { + inOrder(flagManager, secureSettings).apply { + verify(flagManager, times(numReads)).readFlagValue(eq(id), any<FlagSerializer<*>>()) + verify(flagManager).idToSettingsKey(eq(id)) + verify(secureSettings).putStringForUser(eq("key-$id"), eq(data), anyInt()) + verify(flagManager).dispatchListenersAndMaybeRestart(eq(id), any()) + }.verifyNoMoreInteractions() + verifyNoMoreInteractions(flagManager, secureSettings) + } + + private fun setByBroadcast(id: Int, value: Serializable?) { + val intent = Intent(FlagManager.ACTION_SET_FLAG) + intent.putExtra(FlagManager.EXTRA_ID, id) + intent.putExtra(FlagManager.EXTRA_VALUE, value) + broadcastReceiver.onReceive(mockContext, intent) + } + + private fun <F : Flag<*>> addFlag(flag: F): F { + val old = flagMap.put(flag.id, flag) + check(old == null) { "Flag ${flag.id} already registered" } + return flag + } + + private fun captureCommand(): Command { + val captor = argumentCaptor<Function0<Command>>() + verify(commandRegistry).registerCommand(anyString(), capture(captor)) + + return captor.value.invoke() + } + private fun dumpToString(): String { val sw = StringWriter() val pw = PrintWriter(sw) @@ -464,4 +485,4 @@ class FeatureFlagsDebugTest : SysuiTestCase() { pw.flush() return sw.toString() } -}
\ No newline at end of file +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseTest.kt index 6b683f456ea7..e94b5202956d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseTest.kt @@ -30,8 +30,8 @@ import org.junit.Test import org.mockito.Mock import org.mockito.Mockito.verify import org.mockito.Mockito.verifyNoMoreInteractions -import org.mockito.MockitoAnnotations import org.mockito.Mockito.`when` as whenever +import org.mockito.MockitoAnnotations /** * NOTE: This test is for the version of FeatureFlagManager in src-release, which should not allow @@ -44,13 +44,18 @@ class FeatureFlagsReleaseTest : SysuiTestCase() { @Mock private lateinit var mResources: Resources @Mock private lateinit var mSystemProperties: SystemPropertiesHelper @Mock private lateinit var mDumpManager: DumpManager + private val serverFlagReader = ServerFlagReaderFake() private val deviceConfig = DeviceConfigProxyFake() @Before fun setup() { MockitoAnnotations.initMocks(this) - mFeatureFlagsRelease = FeatureFlagsRelease(mResources, mSystemProperties, deviceConfig, + mFeatureFlagsRelease = FeatureFlagsRelease( + mResources, + mSystemProperties, + deviceConfig, + serverFlagReader, mDumpManager) } @@ -113,4 +118,22 @@ class FeatureFlagsReleaseTest : SysuiTestCase() { whenever(mSystemProperties.getBoolean(flagName, flagDefault)).thenReturn(flagDefault) assertThat(mFeatureFlagsRelease.isEnabled(flag)).isEqualTo(flagDefault) } -}
\ No newline at end of file + + @Test + fun serverSide_OverridesReleased_MakesFalse() { + val flag = ReleasedFlag(100) + + serverFlagReader.setFlagValue(flag.id, false) + + assertThat(mFeatureFlagsRelease.isEnabled(flag)).isFalse() + } + + @Test + fun serverSide_OverridesUnreleased_Ignored() { + val flag = UnreleasedFlag(100) + + serverFlagReader.setFlagValue(flag.id, true) + + assertThat(mFeatureFlagsRelease.isEnabled(flag)).isFalse() + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FlagManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FlagManagerTest.kt index a2eca81b04ed..17324a01502b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FlagManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FlagManagerTest.kt @@ -26,6 +26,7 @@ import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.withArgCaptor import com.google.common.truth.Truth.assertThat +import java.util.function.Consumer import org.junit.Assert.assertThrows import org.junit.Before import org.junit.Test @@ -33,9 +34,8 @@ import org.mockito.Mock import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.verifyNoMoreInteractions -import org.mockito.MockitoAnnotations -import java.util.function.Consumer import org.mockito.Mockito.`when` as whenever +import org.mockito.MockitoAnnotations /** * NOTE: This test is for the version of FeatureFlagManager in src-release, which should not allow @@ -64,14 +64,14 @@ class FlagManagerTest : SysuiTestCase() { verifyNoMoreInteractions(mFlagSettingsHelper) // adding the first listener registers the observer - mFlagManager.addListener(BooleanFlag(1, true), listener1) + mFlagManager.addListener(ReleasedFlag(1), listener1) val observer = withArgCaptor<ContentObserver> { verify(mFlagSettingsHelper).registerContentObserver(any(), any(), capture()) } verifyNoMoreInteractions(mFlagSettingsHelper) // adding another listener does nothing - mFlagManager.addListener(BooleanFlag(2, true), listener2) + mFlagManager.addListener(ReleasedFlag(2), listener2) verifyNoMoreInteractions(mFlagSettingsHelper) // removing the original listener does nothing with second one still present @@ -89,7 +89,7 @@ class FlagManagerTest : SysuiTestCase() { val listener = mock<FlagListenable.Listener>() val clearCacheAction = mock<Consumer<Int>>() mFlagManager.clearCacheAction = clearCacheAction - mFlagManager.addListener(BooleanFlag(1, true), listener) + mFlagManager.addListener(ReleasedFlag(1), listener) val observer = withArgCaptor<ContentObserver> { verify(mFlagSettingsHelper).registerContentObserver(any(), any(), capture()) } @@ -101,8 +101,8 @@ class FlagManagerTest : SysuiTestCase() { fun testObserverInvokesListeners() { val listener1 = mock<FlagListenable.Listener>() val listener10 = mock<FlagListenable.Listener>() - mFlagManager.addListener(BooleanFlag(1, true), listener1) - mFlagManager.addListener(BooleanFlag(10, true), listener10) + mFlagManager.addListener(ReleasedFlag(1), listener1) + mFlagManager.addListener(ReleasedFlag(10), listener10) val observer = withArgCaptor<ContentObserver> { verify(mFlagSettingsHelper).registerContentObserver(any(), any(), capture()) } @@ -127,8 +127,8 @@ class FlagManagerTest : SysuiTestCase() { fun testOnlySpecificFlagListenerIsInvoked() { val listener1 = mock<FlagListenable.Listener>() val listener10 = mock<FlagListenable.Listener>() - mFlagManager.addListener(BooleanFlag(1, true), listener1) - mFlagManager.addListener(BooleanFlag(10, true), listener10) + mFlagManager.addListener(ReleasedFlag(1), listener1) + mFlagManager.addListener(ReleasedFlag(10), listener10) mFlagManager.dispatchListenersAndMaybeRestart(1, null) val flagEvent1 = withArgCaptor<FlagListenable.FlagEvent> { @@ -148,8 +148,8 @@ class FlagManagerTest : SysuiTestCase() { @Test fun testSameListenerCanBeUsedForMultipleFlags() { val listener = mock<FlagListenable.Listener>() - mFlagManager.addListener(BooleanFlag(1, true), listener) - mFlagManager.addListener(BooleanFlag(10, true), listener) + mFlagManager.addListener(ReleasedFlag(1), listener) + mFlagManager.addListener(ReleasedFlag(10), listener) mFlagManager.dispatchListenersAndMaybeRestart(1, null) val flagEvent1 = withArgCaptor<FlagListenable.FlagEvent> { @@ -177,7 +177,7 @@ class FlagManagerTest : SysuiTestCase() { @Test fun testListenerCanSuppressRestart() { val restartAction = mock<Consumer<Boolean>>() - mFlagManager.addListener(BooleanFlag(1, true)) { event -> + mFlagManager.addListener(ReleasedFlag(1)) { event -> event.requestNoRestart() } mFlagManager.dispatchListenersAndMaybeRestart(1, restartAction) @@ -188,7 +188,7 @@ class FlagManagerTest : SysuiTestCase() { @Test fun testListenerOnlySuppressesRestartForOwnFlag() { val restartAction = mock<Consumer<Boolean>>() - mFlagManager.addListener(BooleanFlag(10, true)) { event -> + mFlagManager.addListener(ReleasedFlag(10)) { event -> event.requestNoRestart() } mFlagManager.dispatchListenersAndMaybeRestart(1, restartAction) @@ -199,10 +199,10 @@ class FlagManagerTest : SysuiTestCase() { @Test fun testRestartWhenNotAllListenersRequestSuppress() { val restartAction = mock<Consumer<Boolean>>() - mFlagManager.addListener(BooleanFlag(10, true)) { event -> + mFlagManager.addListener(ReleasedFlag(10)) { event -> event.requestNoRestart() } - mFlagManager.addListener(BooleanFlag(10, true)) { + mFlagManager.addListener(ReleasedFlag(10)) { // do not request } mFlagManager.dispatchListenersAndMaybeRestart(1, restartAction) @@ -295,4 +295,4 @@ class FlagManagerTest : SysuiTestCase() { assertThat(StringFlagSerializer.toSettingsData("foo")) .isEqualTo("{\"type\":\"string\",\"value\":\"foo\"}") } -}
\ No newline at end of file +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FlagsTest.java b/packages/SystemUI/tests/src/com/android/systemui/flags/FlagsTest.java index 25c302885e07..250cc48fece3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FlagsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FlagsTest.java @@ -107,11 +107,11 @@ public class FlagsTest extends SysuiTestCase { } private static class DuplicateFlagContainer { - public static final BooleanFlag A_FLAG = new BooleanFlag(0); - public static final BooleanFlag B_FLAG = new BooleanFlag(0); + public static final BooleanFlag A_FLAG = new UnreleasedFlag(0); + public static final BooleanFlag B_FLAG = new UnreleasedFlag(0); public static final StringFlag C_FLAG = new StringFlag(0); - public static final BooleanFlag D_FLAG = new BooleanFlag(1); + public static final BooleanFlag D_FLAG = new UnreleasedFlag(1); public static final DoubleFlag E_FLAG = new DoubleFlag(3); public static final DoubleFlag F_FLAG = new DoubleFlag(3); diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestCase.java b/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestCase.java index c52ea60f0bfc..c83189dbc616 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestCase.java +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestCase.java @@ -15,6 +15,8 @@ */ package com.android.systemui; +import static com.android.systemui.animation.FakeDialogLaunchAnimatorKt.fakeDialogLaunchAnimator; + import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; @@ -34,6 +36,7 @@ import androidx.test.uiautomator.UiDevice; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.settingslib.bluetooth.LocalBluetoothManager; +import com.android.systemui.animation.DialogLaunchAnimator; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.FakeBroadcastDispatcher; import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger; @@ -119,6 +122,7 @@ public abstract class SysuiTestCase { // is missing (constructing the actual one would throw). // TODO(b/219008720): Remove this. mDependency.injectMockDependency(SystemUIDialogManager.class); + mDependency.injectTestDependency(DialogLaunchAnimator.class, fakeDialogLaunchAnimator()); } @After diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/animation/FakeDialogLaunchAnimator.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/animation/FakeDialogLaunchAnimator.kt new file mode 100644 index 000000000000..990db77463f6 --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/animation/FakeDialogLaunchAnimator.kt @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2022 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.animation + +import com.android.internal.jank.InteractionJankMonitor +import org.mockito.Mockito.mock + +/** A [DialogLaunchAnimator] to be used in tests. */ +@JvmOverloads +fun fakeDialogLaunchAnimator( + isUnlocked: Boolean = true, + isShowingAlternateAuthOnUnlock: Boolean = false, + interactionJankMonitor: InteractionJankMonitor = mock(InteractionJankMonitor::class.java), +): DialogLaunchAnimator { + return DialogLaunchAnimator( + FakeCallback( + isUnlocked = isUnlocked, + isShowingAlternateAuthOnUnlock = isShowingAlternateAuthOnUnlock, + ), + interactionJankMonitor, + fakeLaunchAnimator(), + isForTesting = true, + ) +} + +private class FakeCallback( + private val isDreaming: Boolean = false, + private val isUnlocked: Boolean = true, + private val isShowingAlternateAuthOnUnlock: Boolean = false, +) : DialogLaunchAnimator.Callback { + override fun isDreaming(): Boolean = isDreaming + override fun isUnlocked(): Boolean = isUnlocked + override fun isShowingAlternateAuthOnUnlock() = isShowingAlternateAuthOnUnlock +} diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/animation/FakeLaunchAnimator.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/animation/FakeLaunchAnimator.kt new file mode 100644 index 000000000000..5b431e72e2ac --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/animation/FakeLaunchAnimator.kt @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 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.animation + +/** A [LaunchAnimator] to be used in tests. */ +fun fakeLaunchAnimator(): LaunchAnimator { + return LaunchAnimator(TEST_TIMINGS, TEST_INTERPOLATORS) +} + +/** + * A [LaunchAnimator.Timings] to be used in tests. + * + * Note that all timings except the total duration are non-zero to avoid divide-by-zero exceptions + * when computing the progress of a sub-animation (the contents fade in/out). + */ +private val TEST_TIMINGS = + LaunchAnimator.Timings( + totalDuration = 0L, + contentBeforeFadeOutDelay = 1L, + contentBeforeFadeOutDuration = 1L, + contentAfterFadeInDelay = 1L, + contentAfterFadeInDuration = 1L + ) + +/** A [LaunchAnimator.Interpolators] to be used in tests. */ +private val TEST_INTERPOLATORS = + LaunchAnimator.Interpolators( + positionInterpolator = Interpolators.STANDARD, + positionXInterpolator = Interpolators.STANDARD, + contentBeforeFadeOutInterpolator = Interpolators.STANDARD, + contentAfterFadeInInterpolator = Interpolators.STANDARD + ) diff --git a/services/core/java/com/android/server/VpnManagerService.java b/services/core/java/com/android/server/VpnManagerService.java index c9a420eabbd8..32dc47019fd5 100644 --- a/services/core/java/com/android/server/VpnManagerService.java +++ b/services/core/java/com/android/server/VpnManagerService.java @@ -138,6 +138,12 @@ public class VpnManagerService extends IVpnManager.Stub { INetd netd, int userId) { return new Vpn(looper, context, nms, netd, userId, new VpnProfileStore()); } + + /** Create a LockDownVpnTracker. */ + public LockdownVpnTracker createLockDownVpnTracker(Context context, Handler handler, + Vpn vpn, VpnProfile profile) { + return new LockdownVpnTracker(context, handler, vpn, profile); + } } public VpnManagerService(Context context, Dependencies deps) { @@ -502,8 +508,7 @@ public class VpnManagerService extends IVpnManager.Stub { logw("VPN for user " + user + " not ready yet. Skipping lockdown"); return false; } - setLockdownTracker( - new LockdownVpnTracker(mContext, mHandler, vpn, profile)); + setLockdownTracker(mDeps.createLockDownVpnTracker(mContext, mHandler, vpn, profile)); } return true; diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 5729a06830cf..6921bf6c4771 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -14692,6 +14692,17 @@ public class ActivityManagerService extends IActivityManager.Stub } } + if (!Build.IS_DEBUGGABLE && callingUid != ROOT_UID && callingUid != SHELL_UID + && callingUid != SYSTEM_UID) { + // If it's not debug build and not called from root/shell/system uid, reject it. + String msg = "Permission Denial: instrumentation test " + + className + " from pid=" + callingPid + ", uid=" + callingUid + + " not allowed because target package " + ii.targetPackage + + " is not debuggable."; + reportStartInstrumentationFailureLocked(watcher, className, msg); + throw new SecurityException(msg); + } + boolean disableHiddenApiChecks = ai.usesNonSdkApi() || (flags & INSTR_FLAG_DISABLE_HIDDEN_API_CHECKS) != 0; boolean disableTestApiChecks = disableHiddenApiChecks diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 7bef6d520d67..a5bcb0517d25 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -217,7 +217,7 @@ import java.util.Set; import java.util.concurrent.ThreadLocalRandom; import java.util.function.Consumer; -public class AppOpsService extends IAppOpsService.Stub { +public class AppOpsService extends IAppOpsService.Stub implements PersistenceScheduler { static final String TAG = "AppOps"; static final boolean DEBUG = false; @@ -402,6 +402,9 @@ public class AppOpsService extends IAppOpsService.Stub { /** Package Manager internal. Access via {@link #getPackageManagerInternal()} */ private @Nullable PackageManagerInternal mPackageManagerInternal; + /** Interface for app-op modes.*/ + @VisibleForTesting AppOpsServiceInterface mAppOpsServiceInterface; + /** * An unsynchronized pool of {@link OpEventProxyInfo} objects. */ @@ -558,7 +561,6 @@ public class AppOpsService extends IAppOpsService.Stub { public boolean pendingAppWidgetVisible; public ArrayMap<String, Ops> pkgOps; - public SparseIntArray opModes; // true indicates there is an interested observer, false there isn't but it has such an op public SparseBooleanArray foregroundOps; @@ -569,15 +571,43 @@ public class AppOpsService extends IAppOpsService.Stub { } public void clear() { + mAppOpsServiceInterface.removeUid(uid); + if (pkgOps != null) { + for (String packageName : pkgOps.keySet()) { + mAppOpsServiceInterface.removePackage(packageName); + } + } pkgOps = null; - opModes = null; } public boolean isDefault() { + boolean areAllPackageModesDefault = true; + if (pkgOps != null) { + for (String packageName : pkgOps.keySet()) { + if (!mAppOpsServiceInterface.arePackageModesDefault(packageName)) { + areAllPackageModesDefault = false; + break; + } + } + } return (pkgOps == null || pkgOps.isEmpty()) - && (opModes == null || opModes.size() <= 0) && (state == UID_STATE_CACHED - && (pendingState == UID_STATE_CACHED)); + && (pendingState == UID_STATE_CACHED)) + && (mAppOpsServiceInterface.areUidModesDefault(uid) + && areAllPackageModesDefault); + } + + // Functions for uid mode access and manipulation. + public SparseIntArray getNonDefaultUidModes() { + return mAppOpsServiceInterface.getNonDefaultUidModes(uid); + } + + public int getUidMode(int op) { + return mAppOpsServiceInterface.getUidMode(uid, op); + } + + public boolean setUidMode(int op, int mode) { + return mAppOpsServiceInterface.setUidMode(uid, op, mode); } int evalMode(int op, int mode) { @@ -647,21 +677,20 @@ public class AppOpsService extends IAppOpsService.Stub { public void evalForegroundOps(SparseArray<ArraySet<ModeCallback>> watchers) { SparseBooleanArray which = null; hasForegroundWatchers = false; - if (opModes != null) { - for (int i = opModes.size() - 1; i >= 0; i--) { - if (opModes.valueAt(i) == AppOpsManager.MODE_FOREGROUND) { - if (which == null) { - which = new SparseBooleanArray(); - } - evalForegroundWatchers(opModes.keyAt(i), watchers, which); + final SparseIntArray opModes = getNonDefaultUidModes(); + for (int i = opModes.size() - 1; i >= 0; i--) { + if (opModes.valueAt(i) == AppOpsManager.MODE_FOREGROUND) { + if (which == null) { + which = new SparseBooleanArray(); } + evalForegroundWatchers(opModes.keyAt(i), watchers, which); } } if (pkgOps != null) { for (int i = pkgOps.size() - 1; i >= 0; i--) { Ops ops = pkgOps.valueAt(i); for (int j = ops.size() - 1; j >= 0; j--) { - if (ops.valueAt(j).mode == AppOpsManager.MODE_FOREGROUND) { + if (ops.valueAt(j).getMode() == AppOpsManager.MODE_FOREGROUND) { if (which == null) { which = new SparseBooleanArray(); } @@ -1451,8 +1480,6 @@ public class AppOpsService extends IAppOpsService.Stub { final UidState uidState; final @NonNull String packageName; - private @Mode int mode; - /** attributionTag -> AttributedOp */ final ArrayMap<String, AttributedOp> mAttributions = new ArrayMap<>(1); @@ -1461,15 +1488,17 @@ public class AppOpsService extends IAppOpsService.Stub { this.uid = uid; this.uidState = uidState; this.packageName = packageName; - this.mode = AppOpsManager.opToDefaultMode(op); } - int getMode() { - return mode; + @Mode int getMode() { + return mAppOpsServiceInterface.getPackageMode(packageName, this.op); + } + void setMode(@Mode int mode) { + mAppOpsServiceInterface.setPackageMode(packageName, this.op, mode); } int evalMode() { - return uidState.evalMode(op, mode); + return uidState.evalMode(op, getMode()); } void removeAttributionsWithNoTime() { @@ -1503,7 +1532,7 @@ public class AppOpsService extends IAppOpsService.Stub { mAttributions.valueAt(i).createAttributedOpEntryLocked()); } - return new OpEntry(op, mode, attributionEntries); + return new OpEntry(op, getMode(), attributionEntries); } @NonNull OpEntry createSingleAttributionEntryLocked(@Nullable String attributionTag) { @@ -1518,7 +1547,7 @@ public class AppOpsService extends IAppOpsService.Stub { } } - return new OpEntry(op, mode, attributionEntries); + return new OpEntry(op, getMode(), attributionEntries); } boolean isRunning() { @@ -1775,6 +1804,7 @@ public class AppOpsService extends IAppOpsService.Stub { public AppOpsService(File storagePath, Handler handler, Context context) { mContext = context; + mAppOpsServiceInterface = new LegacyAppOpsServiceInterfaceImpl(this, this); LockGuard.installLock(this, LockGuard.INDEX_APP_OPS); mFile = new AtomicFile(storagePath, "appops"); @@ -1815,7 +1845,7 @@ public class AppOpsService extends IAppOpsService.Stub { if (uidState == null || uidState.pkgOps == null) { return; } - + mAppOpsServiceInterface.removePackage(pkgName); Ops removedOps = uidState.pkgOps.remove(pkgName); if (removedOps != null) { scheduleFastWriteLocked(); @@ -2037,25 +2067,27 @@ public class AppOpsService extends IAppOpsService.Stub { return; } - Ops ops = null; + Ops removedOps = null; // Remove any package state if such. if (uidState.pkgOps != null) { - ops = uidState.pkgOps.remove(packageName); + removedOps = uidState.pkgOps.remove(packageName); + mAppOpsServiceInterface.removePackage(packageName); } // If we just nuked the last package state check if the UID is valid. - if (ops != null && uidState.pkgOps.isEmpty() + if (removedOps != null && uidState.pkgOps.isEmpty() && getPackagesForUid(uid).length <= 0) { + uidState.clear(); mUidStates.remove(uid); } - if (ops != null) { + if (removedOps != null) { scheduleFastWriteLocked(); - final int numOps = ops.size(); + final int numOps = removedOps.size(); for (int opNum = 0; opNum < numOps; opNum++) { - final Op op = ops.valueAt(opNum); + final Op op = removedOps.valueAt(opNum); final int numAttributions = op.mAttributions.size(); for (int attributionNum = 0; attributionNum < numAttributions; @@ -2080,6 +2112,7 @@ public class AppOpsService extends IAppOpsService.Stub { public void uidRemoved(int uid) { synchronized (this) { if (mUidStates.indexOfKey(uid) >= 0) { + mUidStates.get(uid).clear(); mUidStates.remove(uid); scheduleFastWriteLocked(); } @@ -2185,12 +2218,11 @@ public class AppOpsService extends IAppOpsService.Stub { private ArrayList<AppOpsManager.OpEntry> collectOps(Ops pkgOps, int[] ops) { ArrayList<AppOpsManager.OpEntry> resOps = null; - final long elapsedNow = SystemClock.elapsedRealtime(); if (ops == null) { resOps = new ArrayList<>(); for (int j=0; j<pkgOps.size(); j++) { Op curOp = pkgOps.valueAt(j); - resOps.add(getOpEntryForResult(curOp, elapsedNow)); + resOps.add(getOpEntryForResult(curOp)); } } else { for (int j=0; j<ops.length; j++) { @@ -2199,7 +2231,7 @@ public class AppOpsService extends IAppOpsService.Stub { if (resOps == null) { resOps = new ArrayList<>(); } - resOps.add(getOpEntryForResult(curOp, elapsedNow)); + resOps.add(getOpEntryForResult(curOp)); } } } @@ -2209,11 +2241,12 @@ public class AppOpsService extends IAppOpsService.Stub { @Nullable private ArrayList<AppOpsManager.OpEntry> collectUidOps(@NonNull UidState uidState, @Nullable int[] ops) { - if (uidState.opModes == null) { + final SparseIntArray opModes = uidState.getNonDefaultUidModes(); + if (opModes == null) { return null; } - int opModeCount = uidState.opModes.size(); + int opModeCount = opModes.size(); if (opModeCount == 0) { return null; } @@ -2221,25 +2254,24 @@ public class AppOpsService extends IAppOpsService.Stub { if (ops == null) { resOps = new ArrayList<>(); for (int i = 0; i < opModeCount; i++) { - int code = uidState.opModes.keyAt(i); - resOps.add(new OpEntry(code, uidState.opModes.get(code), Collections.emptyMap())); + int code = opModes.keyAt(i); + resOps.add(new OpEntry(code, opModes.get(code), Collections.emptyMap())); } } else { for (int j=0; j<ops.length; j++) { int code = ops[j]; - if (uidState.opModes.indexOfKey(code) >= 0) { + if (opModes.indexOfKey(code) >= 0) { if (resOps == null) { resOps = new ArrayList<>(); } - resOps.add(new OpEntry(code, uidState.opModes.get(code), - Collections.emptyMap())); + resOps.add(new OpEntry(code, opModes.get(code), Collections.emptyMap())); } } } return resOps; } - private static @NonNull OpEntry getOpEntryForResult(@NonNull Op op, long elapsedNow) { + private static @NonNull OpEntry getOpEntryForResult(@NonNull Op op) { return op.createEntryLocked(); } @@ -2484,15 +2516,18 @@ public class AppOpsService extends IAppOpsService.Stub { Ops ops = getOpsLocked(uid, packageName, null, false, null, /* edit */ false); if (ops != null) { ops.remove(op.op); + op.setMode(AppOpsManager.opToDefaultMode(op.op)); if (ops.size() <= 0) { UidState uidState = ops.uidState; ArrayMap<String, Ops> pkgOps = uidState.pkgOps; if (pkgOps != null) { pkgOps.remove(ops.packageName); + mAppOpsServiceInterface.removePackage(ops.packageName); if (pkgOps.isEmpty()) { uidState.pkgOps = null; } if (uidState.isDefault()) { + uidState.clear(); mUidStates.remove(uid); } } @@ -2548,33 +2583,18 @@ public class AppOpsService extends IAppOpsService.Stub { if (mode == defaultMode) { return; } - previousMode = MODE_DEFAULT; uidState = new UidState(uid); - uidState.opModes = new SparseIntArray(); - uidState.opModes.put(code, mode); mUidStates.put(uid, uidState); - scheduleWriteLocked(); - } else if (uidState.opModes == null) { - previousMode = MODE_DEFAULT; - if (mode != defaultMode) { - uidState.opModes = new SparseIntArray(); - uidState.opModes.put(code, mode); - scheduleWriteLocked(); - } + } + if (uidState.getUidMode(code) != AppOpsManager.opToDefaultMode(code)) { + previousMode = uidState.getUidMode(code); } else { - if (uidState.opModes.indexOfKey(code) >= 0 && uidState.opModes.get(code) == mode) { - return; - } - previousMode = uidState.opModes.get(code); - if (mode == defaultMode) { - uidState.opModes.delete(code); - if (uidState.opModes.size() <= 0) { - uidState.opModes = null; - } - } else { - uidState.opModes.put(code, mode); - } - scheduleWriteLocked(); + // doesn't look right but is legacy behavior. + previousMode = MODE_DEFAULT; + } + + if (!uidState.setUidMode(code, mode)) { + return; } uidState.evalForegroundOps(mOpModeWatchers); if (mode != MODE_ERRORED && mode != previousMode) { @@ -2806,9 +2826,10 @@ public class AppOpsService extends IAppOpsService.Stub { UidState uidState = getUidStateLocked(uid, false); Op op = getOpLocked(code, uid, packageName, null, false, pvr.bypass, /* edit */ true); if (op != null) { - if (op.mode != mode) { - previousMode = op.mode; - op.mode = mode; + if (op.getMode() != mode) { + previousMode = op.getMode(); + op.setMode(mode); + if (uidState != null) { uidState.evalForegroundOps(mOpModeWatchers); } @@ -2976,17 +2997,14 @@ public class AppOpsService extends IAppOpsService.Stub { for (int i = mUidStates.size() - 1; i >= 0; i--) { UidState uidState = mUidStates.valueAt(i); - SparseIntArray opModes = uidState.opModes; + SparseIntArray opModes = uidState.getNonDefaultUidModes(); if (opModes != null && (uidState.uid == reqUid || reqUid == -1)) { final int uidOpCount = opModes.size(); for (int j = uidOpCount - 1; j >= 0; j--) { final int code = opModes.keyAt(j); if (AppOpsManager.opAllowsReset(code)) { int previousMode = opModes.valueAt(j); - opModes.removeAt(j); - if (opModes.size() <= 0) { - uidState.opModes = null; - } + uidState.setUidMode(code, AppOpsManager.opToDefaultMode(code)); for (String packageName : getPackagesForUid(uidState.uid)) { callbacks = addCallbacks(callbacks, code, uidState.uid, packageName, previousMode, mOpModeWatchers.get(code)); @@ -3028,9 +3046,9 @@ public class AppOpsService extends IAppOpsService.Stub { continue; } if (AppOpsManager.opAllowsReset(curOp.op) - && curOp.mode != AppOpsManager.opToDefaultMode(curOp.op)) { - int previousMode = curOp.mode; - curOp.mode = AppOpsManager.opToDefaultMode(curOp.op); + && curOp.getMode() != AppOpsManager.opToDefaultMode(curOp.op)) { + int previousMode = curOp.getMode(); + curOp.setMode(AppOpsManager.opToDefaultMode(curOp.op)); changed = true; uidChanged = true; final int uid = curOp.uidState.uid; @@ -3049,9 +3067,11 @@ public class AppOpsService extends IAppOpsService.Stub { } if (pkgOps.size() == 0) { it.remove(); + mAppOpsServiceInterface.removePackage(packageName); } } if (uidState.isDefault()) { + uidState.clear(); mUidStates.remove(uidState.uid); } if (uidChanged) { @@ -3267,16 +3287,16 @@ public class AppOpsService extends IAppOpsService.Stub { } code = AppOpsManager.opToSwitch(code); UidState uidState = getUidStateLocked(uid, false); - if (uidState != null && uidState.opModes != null - && uidState.opModes.indexOfKey(code) >= 0) { - final int rawMode = uidState.opModes.get(code); + if (uidState != null + && uidState.getUidMode(code) != AppOpsManager.opToDefaultMode(code)) { + final int rawMode = uidState.getUidMode(code); return raw ? rawMode : uidState.evalMode(code, rawMode); } Op op = getOpLocked(code, uid, packageName, null, false, pvr.bypass, /* edit */ false); if (op == null) { return AppOpsManager.opToDefaultMode(code); } - return raw ? op.mode : op.evalMode(); + return raw ? op.getMode() : op.evalMode(); } } @@ -3502,8 +3522,8 @@ public class AppOpsService extends IAppOpsService.Stub { } // If there is a non-default per UID policy (we set UID op mode only if // non-default) it takes over, otherwise use the per package policy. - if (uidState.opModes != null && uidState.opModes.indexOfKey(switchCode) >= 0) { - final int uidMode = uidState.evalMode(code, uidState.opModes.get(switchCode)); + if (uidState.getUidMode(switchCode) != AppOpsManager.opToDefaultMode(switchCode)) { + final int uidMode = uidState.evalMode(code, uidState.getUidMode(switchCode)); if (uidMode != AppOpsManager.MODE_ALLOWED) { if (DEBUG) Slog.d(TAG, "noteOperation: uid reject #" + uidMode + " for code " + switchCode + " (" + code + ") uid " + uid + " package " @@ -4018,8 +4038,8 @@ public class AppOpsService extends IAppOpsService.Stub { final int switchCode = AppOpsManager.opToSwitch(code); // If there is a non-default per UID policy (we set UID op mode only if // non-default) it takes over, otherwise use the per package policy. - if (uidState.opModes != null && uidState.opModes.indexOfKey(switchCode) >= 0) { - final int uidMode = uidState.evalMode(code, uidState.opModes.get(switchCode)); + if (uidState.getUidMode(switchCode) != AppOpsManager.opToDefaultMode(switchCode)) { + final int uidMode = uidState.evalMode(code, uidState.getUidMode(switchCode)); if (!shouldStartForMode(uidMode, startIfModeDefault)) { if (DEBUG) { Slog.d(TAG, "startOperation: uid reject #" + uidMode + " for code " @@ -4516,9 +4536,8 @@ public class AppOpsService extends IAppOpsService.Stub { continue; } - if (uidState.opModes != null - && uidState.opModes.indexOfKey(code) >= 0 - && uidState.opModes.get(code) == AppOpsManager.MODE_FOREGROUND) { + if (uidState.getUidMode(code) != AppOpsManager.opToDefaultMode(code) + && uidState.getUidMode(code) == AppOpsManager.MODE_FOREGROUND) { mHandler.sendMessage(PooledLambda.obtainMessage( AppOpsService::notifyOpChangedForAllPkgsInUid, this, code, uidState.uid, true, null)); @@ -4536,7 +4555,7 @@ public class AppOpsService extends IAppOpsService.Stub { if (op == null) { continue; } - if (op.mode == AppOpsManager.MODE_FOREGROUND) { + if (op.getMode() == AppOpsManager.MODE_FOREGROUND) { mHandler.sendMessage(PooledLambda.obtainMessage( AppOpsService::notifyOpChanged, this, callback, code, uidState.uid, @@ -4811,14 +4830,16 @@ public class AppOpsService extends IAppOpsService.Stub { return ops; } - private void scheduleWriteLocked() { + @Override + public void scheduleWriteLocked() { if (!mWriteScheduled) { mWriteScheduled = true; mHandler.postDelayed(mWriteRunner, WRITE_DELAY); } } - private void scheduleFastWriteLocked() { + @Override + public void scheduleFastWriteLocked() { if (!mFastWriteScheduled) { mWriteScheduled = true; mFastWriteScheduled = true; @@ -4929,6 +4950,7 @@ public class AppOpsService extends IAppOpsService.Stub { } boolean success = false; mUidStates.clear(); + mAppOpsServiceInterface.clearAllModes(); try { TypedXmlPullParser parser = Xml.resolvePullParser(stream); int type; @@ -4977,6 +4999,7 @@ public class AppOpsService extends IAppOpsService.Stub { } finally { if (!success) { mUidStates.clear(); + mAppOpsServiceInterface.clearAllModes(); } try { stream.close(); @@ -4996,11 +5019,12 @@ public class AppOpsService extends IAppOpsService.Stub { if (uidState == null) { continue; } - if (uidState.opModes != null) { - final int idx = uidState.opModes.indexOfKey(AppOpsManager.OP_RUN_IN_BACKGROUND); + SparseIntArray opModes = uidState.getNonDefaultUidModes(); + if (opModes != null) { + final int idx = opModes.indexOfKey(AppOpsManager.OP_RUN_IN_BACKGROUND); if (idx >= 0) { - uidState.opModes.put(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, - uidState.opModes.valueAt(idx)); + uidState.setUidMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, + opModes.valueAt(idx)); } } if (uidState.pkgOps == null) { @@ -5011,10 +5035,10 @@ public class AppOpsService extends IAppOpsService.Stub { Ops ops = uidState.pkgOps.valueAt(j); if (ops != null) { final Op op = ops.get(AppOpsManager.OP_RUN_IN_BACKGROUND); - if (op != null && op.mode != AppOpsManager.opToDefaultMode(op.op)) { + if (op != null && op.getMode() != AppOpsManager.opToDefaultMode(op.op)) { final Op copy = new Op(op.uidState, op.packageName, AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, uidState.uid); - copy.mode = op.mode; + copy.setMode(op.getMode()); ops.put(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, copy); changed = true; } @@ -5142,7 +5166,7 @@ public class AppOpsService extends IAppOpsService.Stub { Op op = new Op(uidState, pkgName, opCode, uidState.uid); final int mode = parser.getAttributeInt(null, "m", AppOpsManager.opToDefaultMode(op.op)); - op.mode = mode; + op.setMode(mode); int outerDepth = parser.getDepth(); int type; @@ -5199,16 +5223,9 @@ public class AppOpsService extends IAppOpsService.Stub { UidState uidState = mUidStates.valueAt(uidStateNum); int uid = mUidStates.keyAt(uidStateNum); - SparseIntArray opModes = uidState.opModes; + SparseIntArray opModes = uidState.getNonDefaultUidModes(); if (opModes != null && opModes.size() > 0) { - uidStatesClone.put(uid, new SparseIntArray(opModes.size())); - - final int opCount = opModes.size(); - for (int opCountNum = 0; opCountNum < opCount; opCountNum++) { - uidStatesClone.get(uid).put( - opModes.keyAt(opCountNum), - opModes.valueAt(opCountNum)); - } + uidStatesClone.put(uid, opModes); } } } @@ -6314,15 +6331,15 @@ public class AppOpsService extends IAppOpsService.Stub { } for (int i=0; i<mUidStates.size(); i++) { UidState uidState = mUidStates.valueAt(i); - final SparseIntArray opModes = uidState.opModes; + final SparseIntArray opModes = uidState.getNonDefaultUidModes(); final ArrayMap<String, Ops> pkgOps = uidState.pkgOps; if (dumpWatchers || dumpHistory) { continue; } if (dumpOp >= 0 || dumpPackage != null || dumpMode >= 0) { - boolean hasOp = dumpOp < 0 || (uidState.opModes != null - && uidState.opModes.indexOfKey(dumpOp) >= 0); + boolean hasOp = dumpOp < 0 || (opModes != null + && opModes.indexOfKey(dumpOp) >= 0); boolean hasPackage = dumpPackage == null || dumpUid == mUidStates.keyAt(i); boolean hasMode = dumpMode < 0; if (!hasMode && opModes != null) { @@ -6342,7 +6359,7 @@ public class AppOpsService extends IAppOpsService.Stub { } if (!hasMode) { for (int opi = 0; !hasMode && opi < ops.size(); opi++) { - if (ops.valueAt(opi).mode == dumpMode) { + if (ops.valueAt(opi).getMode() == dumpMode) { hasMode = true; } } @@ -6437,7 +6454,7 @@ public class AppOpsService extends IAppOpsService.Stub { if (dumpOp >= 0 && dumpOp != opCode) { continue; } - if (dumpMode >= 0 && dumpMode != op.mode) { + if (dumpMode >= 0 && dumpMode != op.getMode()) { continue; } if (!printedPackage) { @@ -6445,14 +6462,14 @@ public class AppOpsService extends IAppOpsService.Stub { printedPackage = true; } pw.print(" "); pw.print(AppOpsManager.opToName(opCode)); - pw.print(" ("); pw.print(AppOpsManager.modeToName(op.mode)); + pw.print(" ("); pw.print(AppOpsManager.modeToName(op.getMode())); final int switchOp = AppOpsManager.opToSwitch(opCode); if (switchOp != opCode) { pw.print(" / switch "); pw.print(AppOpsManager.opToName(switchOp)); final Op switchObj = ops.get(switchOp); - int mode = switchObj != null ? switchObj.mode - : AppOpsManager.opToDefaultMode(switchOp); + int mode = switchObj == null + ? AppOpsManager.opToDefaultMode(switchOp) : switchObj.getMode(); pw.print("="); pw.print(AppOpsManager.modeToName(mode)); } pw.println("): "); @@ -6696,7 +6713,7 @@ public class AppOpsService extends IAppOpsService.Stub { for (int pkgNum = 0; pkgNum < numPkgOps; pkgNum++) { Ops ops = uidState.pkgOps.valueAt(pkgNum); Op op = ops != null ? ops.get(code) : null; - if (op == null || (op.mode != MODE_ALLOWED && op.mode != MODE_FOREGROUND)) { + if (op == null || (op.getMode() != MODE_ALLOWED && op.getMode() != MODE_FOREGROUND)) { continue; } int numAttrTags = op.mAttributions.size(); @@ -6817,6 +6834,7 @@ public class AppOpsService extends IAppOpsService.Stub { return; } Ops removedOps = uidState.pkgOps.remove(packageName); + mAppOpsServiceInterface.removePackage(packageName); if (removedOps != null) { scheduleFastWriteLocked(); } @@ -7136,10 +7154,12 @@ public class AppOpsService extends IAppOpsService.Stub { return false; } + @GuardedBy("this") private void removeUidsForUserLocked(int userHandle) { for (int i = mUidStates.size() - 1; i >= 0; --i) { final int uid = mUidStates.keyAt(i); if (UserHandle.getUserId(uid) == userHandle) { + mUidStates.valueAt(i).clear(); mUidStates.removeAt(i); } } diff --git a/services/core/java/com/android/server/appop/AppOpsServiceInterface.java b/services/core/java/com/android/server/appop/AppOpsServiceInterface.java new file mode 100644 index 000000000000..cd5ea120f878 --- /dev/null +++ b/services/core/java/com/android/server/appop/AppOpsServiceInterface.java @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2022 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.server.appop; +import android.annotation.NonNull; +import android.app.AppOpsManager.Mode; +import android.util.SparseIntArray; +/** + * Interface for accessing and modifying modes for app-ops i.e. package and uid modes. + * In the future this interface will also include mode callbacks and op restrictions. + */ +public interface AppOpsServiceInterface { + /** + * Returns a copy of non-default app-ops with op as keys and their modes as values for a uid. + * Returns an empty SparseIntArray if nothing is set. + * @param uid for which we need the app-ops and their modes. + */ + SparseIntArray getNonDefaultUidModes(int uid); + + /** + * Returns the app-op mode for a particular app-op of a uid. + * Returns default op mode if the op mode for particular uid and op is not set. + * @param uid user id for which we need the mode. + * @param op app-op for which we need the mode. + * @return mode of the app-op. + */ + int getUidMode(int uid, int op); + + /** + * Set the app-op mode for a particular uid and op. + * The mode is not set if the mode is the same as the default mode for the op. + * @param uid user id for which we want to set the mode. + * @param op app-op for which we want to set the mode. + * @param mode mode for the app-op. + * @return true if op mode is changed. + */ + boolean setUidMode(int uid, int op, @Mode int mode); + + /** + * Gets the app-op mode for a particular package. + * Returns default op mode if the op mode for the particular package is not set. + * @param packageName package name for which we need the op mode. + * @param op app-op for which we need the mode. + * @return the mode of the app-op. + */ + int getPackageMode(@NonNull String packageName, int op); + + /** + * Sets the app-op mode for a particular package. + * @param packageName package name for which we need to set the op mode. + * @param op app-op for which we need to set the mode. + * @param mode the mode of the app-op. + */ + void setPackageMode(@NonNull String packageName, int op, @Mode int mode); + + /** + * Stop tracking any app-op modes for a package. + * @param packageName Name of the package for which we want to remove all mode tracking. + */ + boolean removePackage(@NonNull String packageName); + + /** + * Stop tracking any app-op modes for this uid. + * @param uid user id for which we want to remove all tracking. + */ + void removeUid(int uid); + + /** + * Returns true if all uid modes for this uid are + * in default state. + * @param uid user id + */ + boolean areUidModesDefault(int uid); + + /** + * Returns true if all package modes for this package name are + * in default state. + * @param packageName package name. + */ + boolean arePackageModesDefault(String packageName); + + /** + * Stop tracking app-op modes for all uid and packages. + */ + void clearAllModes(); +} diff --git a/services/core/java/com/android/server/appop/LegacyAppOpsServiceInterfaceImpl.java b/services/core/java/com/android/server/appop/LegacyAppOpsServiceInterfaceImpl.java new file mode 100644 index 000000000000..c27c0d3de5d7 --- /dev/null +++ b/services/core/java/com/android/server/appop/LegacyAppOpsServiceInterfaceImpl.java @@ -0,0 +1,198 @@ +/* + * Copyright (C) 2022 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.server.appop; + +import android.annotation.NonNull; +import android.app.AppOpsManager; +import android.app.AppOpsManager.Mode; +import android.util.ArrayMap; +import android.util.SparseArray; +import android.util.SparseIntArray; + +import com.android.internal.annotations.GuardedBy; +import com.android.internal.annotations.VisibleForTesting; + + +/** + * Legacy implementation for App-ops service's app-op mode (uid and package) storage and access. + * In the future this class will also include mode callbacks and op restrictions. + */ +public class LegacyAppOpsServiceInterfaceImpl implements AppOpsServiceInterface { + + // Should be the same object that the AppOpsService is using for locking. + final Object mLock; + + @GuardedBy("mLock") + @VisibleForTesting + final SparseArray<SparseIntArray> mUidModes = new SparseArray<>(); + + @GuardedBy("mLock") + final ArrayMap<String, SparseIntArray> mPackageModes = new ArrayMap<>(); + + final PersistenceScheduler mPersistenceScheduler; + + + LegacyAppOpsServiceInterfaceImpl(PersistenceScheduler persistenceScheduler, + @NonNull Object lock) { + this.mPersistenceScheduler = persistenceScheduler; + this.mLock = lock; + } + + @Override + public SparseIntArray getNonDefaultUidModes(int uid) { + synchronized (mLock) { + SparseIntArray opModes = mUidModes.get(uid, null); + if (opModes == null) { + return new SparseIntArray(); + } + return opModes.clone(); + } + } + + @Override + public int getUidMode(int uid, int op) { + synchronized (mLock) { + SparseIntArray opModes = mUidModes.get(uid, null); + if (opModes == null) { + return AppOpsManager.opToDefaultMode(op); + } + return opModes.get(op, AppOpsManager.opToDefaultMode(op)); + } + } + + @Override + public boolean setUidMode(int uid, int op, int mode) { + final int defaultMode = AppOpsManager.opToDefaultMode(op); + synchronized (mLock) { + SparseIntArray opModes = mUidModes.get(uid, null); + if (opModes == null) { + if (mode != defaultMode) { + opModes = new SparseIntArray(); + mUidModes.put(uid, opModes); + opModes.put(op, mode); + mPersistenceScheduler.scheduleWriteLocked(); + } + } else { + if (opModes.indexOfKey(op) >= 0 && opModes.get(op) == mode) { + return false; + } + if (mode == defaultMode) { + opModes.delete(op); + if (opModes.size() <= 0) { + opModes = null; + mUidModes.delete(uid); + } + } else { + opModes.put(op, mode); + } + mPersistenceScheduler.scheduleWriteLocked(); + } + } + return true; + } + + @Override + public int getPackageMode(String packageName, int op) { + synchronized (mLock) { + SparseIntArray opModes = mPackageModes.getOrDefault(packageName, null); + if (opModes == null) { + return AppOpsManager.opToDefaultMode(op); + } + return opModes.get(op, AppOpsManager.opToDefaultMode(op)); + } + } + + @Override + public void setPackageMode(String packageName, int op, @Mode int mode) { + final int defaultMode = AppOpsManager.opToDefaultMode(op); + synchronized (mLock) { + SparseIntArray opModes = mPackageModes.get(packageName); + if (opModes == null) { + if (mode != defaultMode) { + opModes = new SparseIntArray(); + mPackageModes.put(packageName, opModes); + opModes.put(op, mode); + mPersistenceScheduler.scheduleWriteLocked(); + } + } else { + if (opModes.indexOfKey(op) >= 0 && opModes.get(op) == mode) { + return; + } + if (mode == defaultMode) { + opModes.delete(op); + if (opModes.size() <= 0) { + opModes = null; + mPackageModes.remove(packageName); + } + } else { + opModes.put(op, mode); + } + mPersistenceScheduler.scheduleWriteLocked(); + } + } + } + + @Override + public void removeUid(int uid) { + synchronized (mLock) { + SparseIntArray opModes = mUidModes.get(uid); + if (opModes == null) { + return; + } + mUidModes.remove(uid); + mPersistenceScheduler.scheduleFastWriteLocked(); + } + } + + + @Override + public boolean areUidModesDefault(int uid) { + synchronized (mLock) { + SparseIntArray opModes = mUidModes.get(uid); + return (opModes == null || opModes.size() <= 0); + } + } + + @Override + public boolean arePackageModesDefault(String packageMode) { + synchronized (mLock) { + SparseIntArray opModes = mPackageModes.get(packageMode); + return (opModes == null || opModes.size() <= 0); + } + } + + @Override + public boolean removePackage(String packageName) { + synchronized (mLock) { + SparseIntArray ops = mPackageModes.remove(packageName); + if (ops != null) { + mPersistenceScheduler.scheduleFastWriteLocked(); + return true; + } + return false; + } + } + + @Override + public void clearAllModes() { + synchronized (mLock) { + mUidModes.clear(); + mPackageModes.clear(); + } + } + +} diff --git a/services/core/java/com/android/server/appop/PersistenceScheduler.java b/services/core/java/com/android/server/appop/PersistenceScheduler.java new file mode 100644 index 000000000000..e50b6586b4fe --- /dev/null +++ b/services/core/java/com/android/server/appop/PersistenceScheduler.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2022 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.server.appop; + +/** + * Interface that allows callers to persist AppOpsService's internal state + * to disk. + */ +public interface PersistenceScheduler { + + /** + * Schedules disk writes for appOpsService and it's internal states. + */ + void scheduleWriteLocked(); + + /** + * Schedules fast disk writes for appOpsService and it's internal states. + */ + void scheduleFastWriteLocked(); + +} diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index b86fa7af8bd8..f4ad750948e6 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -1627,7 +1627,7 @@ public class LockSettingsService extends ILockSettings.Stub { } onSyntheticPasswordKnown(userId, sp); - setLockCredentialWithSpLocked(credential, sp, userId, isLockTiedToParent); + setLockCredentialWithSpLocked(credential, sp, userId); sendCredentialsOnChangeIfRequired(credential, userId, isLockTiedToParent); return true; } @@ -1641,15 +1641,18 @@ public class LockSettingsService extends ILockSettings.Stub { if (newCredential.isPattern()) { setBoolean(LockPatternUtils.PATTERN_EVER_CHOSEN_KEY, true, userHandle); } + updatePasswordHistory(newCredential, userHandle); mContext.getSystemService(TrustManager.class).reportEnabledTrustAgentsChanged(userHandle); } /** * Store the hash of the new password in the password history list, if device policy enforces * a password history requirement. + * + * This must not be called while the mSpManager lock is held, as this calls into + * DevicePolicyManagerService to get the requested password history length. */ - private void updatePasswordHistory(SyntheticPassword sp, LockscreenCredential password, - int userHandle, boolean isLockTiedToParent) { + private void updatePasswordHistory(LockscreenCredential password, int userHandle) { if (password.isNone()) { return; } @@ -1657,10 +1660,6 @@ public class LockSettingsService extends ILockSettings.Stub { // Do not keep track of historical patterns return; } - if (isLockTiedToParent) { - // Do not keep track of historical auto-generated profile passwords - return; - } // Add the password to the password history. String passwordHistory = getString( LockPatternUtils.PASSWORD_HISTORY_KEY, /* defaultValue= */ null, userHandle); @@ -1671,9 +1670,16 @@ public class LockSettingsService extends ILockSettings.Stub { if (passwordHistoryLength == 0) { passwordHistory = ""; } else { - final byte[] hashFactor = sp.derivePasswordHashFactor(); + final byte[] hashFactor = getHashFactor(password, userHandle); final byte[] salt = getSalt(userHandle).getBytes(); String hash = password.passwordToHistoryHash(salt, hashFactor); + if (hash == null) { + // This should never happen, as all information needed to compute the hash should be + // available. In particular, unwrapping the SP in getHashFactor() should always + // succeed, as we're using the LSKF that was just set. + Slog.e(TAG, "Failed to compute password hash; password history won't be updated"); + return; + } if (TextUtils.isEmpty(passwordHistory)) { passwordHistory = hash; } else { @@ -2644,7 +2650,7 @@ public class LockSettingsService extends ILockSettings.Stub { */ @GuardedBy("mSpManager") private long setLockCredentialWithSpLocked(LockscreenCredential credential, - SyntheticPassword sp, int userId, boolean isLockTiedToParent) { + SyntheticPassword sp, int userId) { if (DEBUG) Slog.d(TAG, "setLockCredentialWithSpLocked: user=" + userId); final int savedCredentialType = getCredentialTypeInternal(userId); final long oldProtectorId = getCurrentLskfBasedProtectorId(userId); @@ -2682,7 +2688,6 @@ public class LockSettingsService extends ILockSettings.Stub { LockPatternUtils.invalidateCredentialTypeCache(); synchronizeUnifiedWorkChallengeForProfiles(userId, profilePasswords); - updatePasswordHistory(sp, credential, userId, isLockTiedToParent); setUserPasswordMetrics(credential, userId); mManagedProfilePasswordCache.removePassword(userId); if (savedCredentialType != CREDENTIAL_TYPE_NONE) { @@ -2928,8 +2933,7 @@ public class LockSettingsService extends ILockSettings.Stub { return false; } onSyntheticPasswordKnown(userId, result.syntheticPassword); - setLockCredentialWithSpLocked(credential, result.syntheticPassword, userId, - /* isLockTiedToParent= */ false); + setLockCredentialWithSpLocked(credential, result.syntheticPassword, userId); return true; } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 24f029e43be6..8b40f6510e7e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -5461,13 +5461,19 @@ public class PackageManagerService implements PackageSender, TestUtilityService final long callingId = Binder.clearCallingIdentity(); try { - final PackageStateInternal packageState = - snapshot.getPackageStateForInstalledAndFiltered( - packageName, callingUid, userId); + final PackageStateInternal packageState = snapshot.getPackageStateInternal( + packageName); if (packageState == null) { return false; } + final PackageUserStateInternal userState = packageState.getUserStateOrDefault( + userId); + if (userState.isHidden() == hidden || !userState.isInstalled() + || snapshot.shouldFilterApplication(packageState, callingUid, userId)) { + return false; + } + // Cannot hide static shared libs as they are considered // a part of the using app (emulating static linking). Also // static libs are installed always on internal storage. @@ -5497,10 +5503,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService return false; } - if (packageState.getUserStateOrDefault(userId).isHidden() == hidden) { - return false; - } - commitPackageStateMutation(null, packageName, packageState1 -> packageState1.userState(userId).setHidden(hidden)); diff --git a/services/core/java/com/android/server/pm/SuspendPackageHelper.java b/services/core/java/com/android/server/pm/SuspendPackageHelper.java index f931ba8720db..01aecd95afb9 100644 --- a/services/core/java/com/android/server/pm/SuspendPackageHelper.java +++ b/services/core/java/com/android/server/pm/SuspendPackageHelper.java @@ -126,10 +126,9 @@ public final class SuspendPackageHelper { unmodifiablePackages.add(packageName); continue; } - final PackageStateInternal packageState = - snapshot.getPackageStateForInstalledAndFiltered( - packageName, callingUid, userId); - if (packageState == null) { + final PackageStateInternal packageState = snapshot.getPackageStateInternal(packageName); + if (packageState == null || !packageState.getUserStateOrDefault(userId).isInstalled() + || snapshot.shouldFilterApplication(packageState, callingUid, userId)) { Slog.w(TAG, "Could not find package setting for package: " + packageName + ". Skipping suspending/un-suspending."); unmodifiablePackages.add(packageName); diff --git a/services/core/java/com/android/server/pm/pkg/component/InstallConstraintsTagParser.java b/services/core/java/com/android/server/pm/pkg/component/InstallConstraintsTagParser.java new file mode 100644 index 000000000000..14976848fe61 --- /dev/null +++ b/services/core/java/com/android/server/pm/pkg/component/InstallConstraintsTagParser.java @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2022 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.server.pm.pkg.component; + + +import android.content.pm.parsing.result.ParseInput; +import android.content.pm.parsing.result.ParseResult; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.content.res.XmlResourceParser; +import android.os.Build; +import android.util.ArraySet; + +import com.android.internal.R; +import com.android.server.SystemConfig; +import com.android.server.pm.pkg.parsing.ParsingPackage; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.util.Set; + +/** + * Utility methods for handling the tag {@code <install-constraints/>} + * + * @hide + */ +public class InstallConstraintsTagParser { + + private static final String TAG_FINGERPRINT_PREFIX = "fingerprint-prefix"; + + /** + * @hide + */ + public static ParseResult<ParsingPackage> parseInstallConstraints( + ParseInput input, ParsingPackage pkg, Resources res, XmlResourceParser parser) + throws XmlPullParserException, IOException { + Set<String> allowlist = SystemConfig.getInstance().getInstallConstraintsAllowlist(); + if (!allowlist.contains(pkg.getPackageName())) { + return input.skip("install-constraints cannot be used by this package"); + } + + ParseResult<Set<String>> prefixes = parseFingerprintPrefixes(input, res, parser); + if (prefixes.isSuccess()) { + if (validateFingerprintPrefixes(prefixes.getResult())) { + return input.success(pkg); + } else { + return input.skip( + "Install of this package is restricted on this device; device fingerprint" + + " does not start with one of the allowed prefixes"); + } + } + return input.skip(prefixes.getErrorMessage()); + } + + private static ParseResult<Set<String>> parseFingerprintPrefixes( + ParseInput input, Resources res, XmlResourceParser parser) + throws XmlPullParserException, IOException { + Set<String> prefixes = new ArraySet<>(); + int type; + while (true) { + // move to the tag that contains the next prefix + type = parser.next(); + if (type == XmlPullParser.END_TAG) { + if (prefixes.size() == 0) { + return input.error("install-constraints must contain at least one constraint"); + } + return input.success(prefixes); + } else if (type == XmlPullParser.START_TAG) { + if (parser.getName().equals(TAG_FINGERPRINT_PREFIX)) { + ParseResult<String> parsedPrefix = + readFingerprintPrefixValue(input, res, parser); + if (parsedPrefix.isSuccess()) { + prefixes.add(parsedPrefix.getResult()); + } else { + return input.error(parsedPrefix.getErrorMessage()); + } + } else { + return input.error("Unexpected tag: " + parser.getName()); + } + + // consume the end tag of this attribute + type = parser.next(); + if (type != XmlPullParser.END_TAG) { + return input.error("Expected end tag; instead got " + type); + } + } + } + } + + private static ParseResult<String> readFingerprintPrefixValue(ParseInput input, Resources res, + XmlResourceParser parser) { + TypedArray sa = res.obtainAttributes(parser, + R.styleable.AndroidManifestInstallConstraintsFingerprintPrefix); + try { + String value = sa.getString( + R.styleable.AndroidManifestInstallConstraintsFingerprintPrefix_value); + if (value == null) { + return input.error("Failed to specify prefix value"); + } + return input.success(value); + } finally { + sa.recycle(); + } + } + + private static boolean validateFingerprintPrefixes(Set<String> prefixes) { + String fingerprint = Build.FINGERPRINT; + for (String prefix : prefixes) { + if (fingerprint.startsWith(prefix)) { + return true; + } + } + return false; + } +} diff --git a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java index b60b9a04d620..5b8f473bad2e 100644 --- a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java +++ b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java @@ -94,6 +94,7 @@ import com.android.server.pm.SharedUidMigration; import com.android.server.pm.permission.CompatibilityPermissionInfo; import com.android.server.pm.pkg.component.ComponentMutateUtils; import com.android.server.pm.pkg.component.ComponentParseUtils; +import com.android.server.pm.pkg.component.InstallConstraintsTagParser; import com.android.server.pm.pkg.component.ParsedActivity; import com.android.server.pm.pkg.component.ParsedActivityUtils; import com.android.server.pm.pkg.component.ParsedApexSystemService; @@ -168,9 +169,11 @@ public class ParsingPackageUtils { public static final String TAG_ADOPT_PERMISSIONS = "adopt-permissions"; public static final String TAG_APPLICATION = "application"; + public static final String TAG_ATTRIBUTION = "attribution"; public static final String TAG_COMPATIBLE_SCREENS = "compatible-screens"; public static final String TAG_EAT_COMMENT = "eat-comment"; public static final String TAG_FEATURE_GROUP = "feature-group"; + public static final String TAG_INSTALL_CONSTRAINTS = "install-constraints"; public static final String TAG_INSTRUMENTATION = "instrumentation"; public static final String TAG_KEY_SETS = "key-sets"; public static final String TAG_MANIFEST = "manifest"; @@ -178,15 +181,16 @@ public class ParsingPackageUtils { public static final String TAG_OVERLAY = "overlay"; public static final String TAG_PACKAGE = "package"; public static final String TAG_PACKAGE_VERIFIER = "package-verifier"; - public static final String TAG_ATTRIBUTION = "attribution"; public static final String TAG_PERMISSION = "permission"; public static final String TAG_PERMISSION_GROUP = "permission-group"; public static final String TAG_PERMISSION_TREE = "permission-tree"; + public static final String TAG_PROFILEABLE = "profileable"; public static final String TAG_PROTECTED_BROADCAST = "protected-broadcast"; public static final String TAG_QUERIES = "queries"; + public static final String TAG_RECEIVER = "receiver"; public static final String TAG_RESTRICT_UPDATE = "restrict-update"; - public static final String TAG_SUPPORT_SCREENS = "supports-screens"; public static final String TAG_SUPPORTS_INPUT = "supports-input"; + public static final String TAG_SUPPORT_SCREENS = "supports-screens"; public static final String TAG_USES_CONFIGURATION = "uses-configuration"; public static final String TAG_USES_FEATURE = "uses-feature"; public static final String TAG_USES_GL_TEXTURE = "uses-gl-texture"; @@ -195,8 +199,6 @@ public class ParsingPackageUtils { public static final String TAG_USES_PERMISSION_SDK_M = "uses-permission-sdk-m"; public static final String TAG_USES_SDK = "uses-sdk"; public static final String TAG_USES_SPLIT = "uses-split"; - public static final String TAG_PROFILEABLE = "profileable"; - public static final String TAG_RECEIVER = "receiver"; public static final String METADATA_MAX_ASPECT_RATIO = "android.max_aspect"; public static final String METADATA_SUPPORTS_SIZE_CHANGES = "android.supports_size_changes"; @@ -1026,6 +1028,8 @@ public class ParsingPackageUtils { return input.success(pkg); case TAG_RESTRICT_UPDATE: return parseRestrictUpdateHash(flags, input, pkg, res, parser); + case TAG_INSTALL_CONSTRAINTS: + return parseInstallConstraints(input, pkg, res, parser); case TAG_QUERIES: return parseQueries(input, pkg, res, parser); default: @@ -1719,6 +1723,12 @@ public class ParsingPackageUtils { return input.success(pkg); } + private static ParseResult<ParsingPackage> parseInstallConstraints( + ParseInput input, ParsingPackage pkg, Resources res, XmlResourceParser parser) + throws IOException, XmlPullParserException { + return InstallConstraintsTagParser.parseInstallConstraints(input, pkg, res, parser); + } + private static ParseResult<ParsingPackage> parseQueries(ParseInput input, ParsingPackage pkg, Resources res, XmlResourceParser parser) throws IOException, XmlPullParserException { final int depth = parser.getDepth(); diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index e062c3896cf3..abedd96d1cde 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -131,6 +131,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.HeavyWeightSwitcherActivity; import com.android.internal.app.IVoiceInteractor; import com.android.internal.protolog.common.ProtoLog; +import com.android.internal.util.FrameworkStatsLog; import com.android.server.am.PendingIntentRecord; import com.android.server.pm.InstantAppResolver; import com.android.server.power.ShutdownCheckPoints; @@ -2095,6 +2096,49 @@ class ActivityStarter { } } + // Log activity starts which violate one of the following rules of the + // activity security model (ASM): + // 1. Only the top activity on a task can start activities on that task + // 2. Only the top activity on the top task can create new (top) tasks + // We don't currently block, but these checks may later become blocks + // TODO(b/236234252): Shift to BackgroundActivityStartController once + // class is ready + if (mSourceRecord != null) { + int callerUid = mSourceRecord.getUid(); + ActivityRecord targetTopActivity = + targetTask != null ? targetTask.getTopNonFinishingActivity() : null; + boolean passesAsmChecks = newTask + ? mRootWindowContainer.hasResumedActivity(callerUid) + : targetTopActivity != null && targetTopActivity.getUid() == callerUid; + + if (!passesAsmChecks) { + Slog.i(TAG, "Launching r: " + r + + " from background: " + mSourceRecord + + ". New task: " + newTask); + boolean newOrEmptyTask = newTask || (targetTopActivity == null); + FrameworkStatsLog.write(FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED, + /* caller_uid */ + callerUid, + /* caller_activity_class_name */ + mSourceRecord.info.name, + /* target_task_top_activity_uid */ + newOrEmptyTask ? -1 : targetTopActivity.getUid(), + /* target_task_top_activity_class_name */ + newOrEmptyTask ? null : targetTopActivity.info.name, + /* target_task_is_different */ + newTask || !mSourceRecord.getTask().equals(targetTask), + /* target_activity_uid */ + r.getUid(), + /* target_activity_class_name */ + r.info.name, + /* target_intent_action */ + r.intent.getAction(), + /* target_intent_flags */ + r.intent.getFlags() + ); + } + } + return START_SUCCESS; } diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index 7d9dc2118b09..552c6a530544 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -1820,6 +1820,10 @@ class RootWindowContainer extends WindowContainer<DisplayContent> return getItemFromTaskDisplayAreas(TaskDisplayArea::getFocusedActivity); } + boolean hasResumedActivity(int uid) { + return forAllActivities(ar -> ar.isState(RESUMED) && ar.getUid() == uid); + } + boolean isTopDisplayFocusedRootTask(Task task) { return task != null && task == getTopDisplayFocusedRootTask(); } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 74e1fe4d288b..8de556ac4667 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -1109,6 +1109,9 @@ class Task extends TaskFragment { // as the one in the task because either one of them could be the alias activity. if (Objects.equals(realActivity, r.mActivityComponent) && this.intent != null) { intent.setComponent(this.intent.getComponent()); + // Make sure the package name the same to prevent one of the intent is set while the + // other one is not. + intent.setPackage(this.intent.getPackage()); } return intent.filterEquals(this.intent); } diff --git a/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsUpgradeTest.java b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsUpgradeTest.java index 99693d28f378..7111047956bf 100644 --- a/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsUpgradeTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsUpgradeTest.java @@ -35,6 +35,7 @@ import android.os.Handler; import android.os.HandlerThread; import android.util.Log; import android.util.SparseArray; +import android.util.SparseIntArray; import android.util.TypedXmlPullParser; import android.util.Xml; @@ -97,9 +98,10 @@ public class AppOpsUpgradeTest { final int defaultModeOp2 = AppOpsManager.opToDefaultMode(op2); for(int i = 0; i < uidStates.size(); i++) { final AppOpsService.UidState uidState = uidStates.valueAt(i); - if (uidState.opModes != null) { - final int uidMode1 = uidState.opModes.get(op1, defaultModeOp1); - final int uidMode2 = uidState.opModes.get(op2, defaultModeOp2); + SparseIntArray opModes = uidState.getNonDefaultUidModes(); + if (opModes != null) { + final int uidMode1 = opModes.get(op1, defaultModeOp1); + final int uidMode2 = opModes.get(op2, defaultModeOp2); assertEquals(uidMode1, uidMode2); if (uidMode1 != defaultModeOp1) { numberOfNonDefaultOps++; diff --git a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java index e9171c0c3514..92c7871e611d 100644 --- a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java +++ b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java @@ -336,6 +336,59 @@ public class SystemConfigTest { assertThat(mSysConfig.getAllowedVendorApexes()).isEmpty(); } + /** + * Tests that readPermissions works correctly for the tag: {@code install-constraints-allowed}. + */ + @Test + public void readPermissions_installConstraints_successful() throws IOException { + final String contents = + "<config>\n" + + " <install-constraints-allowed package=\"com.android.apex1\" />\n" + + "</config>"; + final File folder = createTempSubfolder("folder"); + createTempFile(folder, "install-constraints-allowlist.xml", contents); + + readPermissions(folder, /* Grant all permission flags */ ~0); + + assertThat(mSysConfig.getInstallConstraintsAllowlist()) + .containsExactly("com.android.apex1"); + } + + /** + * Tests that readPermissions works correctly for the tag: {@code install-constraints-allowed}. + */ + @Test + public void readPermissions_installConstraints_noPackage() throws IOException { + final String contents = + "<config>\n" + + " <install-constraints-allowed/>\n" + + "</config>"; + final File folder = createTempSubfolder("folder"); + createTempFile(folder, "install-constraints-allowlist.xml", contents); + + readPermissions(folder, /* Grant all permission flags */ ~0); + + assertThat(mSysConfig.getInstallConstraintsAllowlist()).isEmpty(); + } + + /** + * Tests that readPermissions works correctly for the tag {@code install-constraints-allowed} + * without {@link SystemConfig#ALLOW_VENDOR_APEX}. + */ + @Test + public void readPermissions_installConstraints_noAppConfigs() throws IOException { + final String contents = + "<config>\n" + + " <install-constraints-allowed package=\"com.android.apex1\" />\n" + + "</config>"; + final File folder = createTempSubfolder("folder"); + createTempFile(folder, "install-constraints-allowlist.xml", contents); + + readPermissions(folder, /* Grant all but ALLOW_APP_CONFIGS flag */ ~0x08); + + assertThat(mSysConfig.getInstallConstraintsAllowlist()).isEmpty(); + } + @Test public void readApexPrivAppPermissions_addAllPermissions() throws Exception { diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java index f4323db2ceec..6a7e388dc0b8 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java @@ -846,6 +846,7 @@ public class TaskTests extends WindowTestsBase { new ComponentName(DEFAULT_COMPONENT_PACKAGE_NAME, targetClassName); final Intent intent = new Intent(); + intent.setPackage(DEFAULT_COMPONENT_PACKAGE_NAME); intent.setComponent(aliasComponent); final ActivityInfo info = new ActivityInfo(); info.applicationInfo = new ApplicationInfo(); diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp index cbf920acc8cf..035f911865d0 100644 --- a/tools/aapt2/link/ManifestFixer.cpp +++ b/tools/aapt2/link/ManifestFixer.cpp @@ -472,6 +472,7 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, android::IDiagn manifest_action["compatible-screens"]["screen"]; manifest_action["supports-gl-texture"]; manifest_action["restrict-update"]; + manifest_action["install-constraints"]["fingerprint-prefix"]; manifest_action["package-verifier"]; manifest_action["meta-data"] = meta_data_action; manifest_action["uses-split"].Action(RequiredNameIsJavaPackage); |