diff --git a/Android.mk b/Android.mk index d4247595a8b178bb62223af135e2adb7ffc7cd9f..d94cbf2007f1c2adf443f2b1f57f4f7e6e2dc4da 100644 --- a/Android.mk +++ b/Android.mk @@ -29,7 +29,7 @@ include $(CLEAR_VARS) lineage_platform_res := APPS/org.lineageos.platform-res_intermediates/aapt # List of packages used in lineage-api-stubs -lineage_stub_packages := lineageos.app:lineageos.content:lineageos.hardware:lineageos.media:lineageos.os:lineageos.preference:lineageos.profiles:lineageos.providers:lineageos.platform:lineageos.util:lineageos.trust +lineage_stub_packages := lineageos.app:lineageos.content:lineageos.hardware:lineageos.media:lineageos.os:lineageos.preference:lineageos.profiles:lineageos.providers:lineageos.platform:lineageos.util:lineageos.weather:lineageos.weatherservice:lineageos.trust lineage_framework_module := $(LOCAL_INSTALLED_MODULE) diff --git a/api/lineage_current.txt b/api/lineage_current.txt index 03c9aeeccde6cec3f59a16750398b206ca149816..8cf610533677128a32777eb9d6ccc04e33b2c73f 100644 --- a/api/lineage_current.txt +++ b/api/lineage_current.txt @@ -336,14 +336,18 @@ package lineageos.platform { public static final class Manifest.permission { ctor public Manifest.permission(); + field public static final java.lang.String ACCESS_WEATHER_MANAGER = "lineageos.permission.ACCESS_WEATHER_MANAGER"; + field public static final java.lang.String BIND_WEATHER_PROVIDER_SERVICE = "lineageos.permission.BIND_WEATHER_PROVIDER_SERVICE"; field public static final java.lang.String HARDWARE_ABSTRACTION_ACCESS = "lineageos.permission.HARDWARE_ABSTRACTION_ACCESS"; field public static final java.lang.String MANAGE_LIVEDISPLAY = "lineageos.permission.MANAGE_LIVEDISPLAY"; field public static final java.lang.String MANAGE_REMOTE_PREFERENCES = "lineageos.permission.MANAGE_REMOTE_PREFERENCES"; field public static final java.lang.String MODIFY_PROFILES = "lineageos.permission.MODIFY_PROFILES"; field public static final java.lang.String PERFORMANCE_ACCESS = "lineageos.permission.PERFORMANCE_ACCESS"; + field public static final java.lang.String READ_WEATHER = "lineageos.permission.READ_WEATHER"; field public static final java.lang.String TRUST_INTERFACE = "lineageos.permission.TRUST_INTERFACE"; field public static final java.lang.String WRITE_SECURE_SETTINGS = "lineageos.permission.WRITE_SECURE_SETTINGS"; field public static final java.lang.String WRITE_SETTINGS = "lineageos.permission.WRITE_SETTINGS"; + field public static final java.lang.String WRITE_WEATHER = "lineageos.permission.WRITE_WEATHER"; } public final class R { @@ -668,6 +672,7 @@ package lineageos.providers { method public static boolean putString(android.content.ContentResolver, java.lang.String, java.lang.String); field public static final android.net.Uri CONTENT_URI; field public static final java.lang.String SYS_PROP_LINEAGE_SETTING_VERSION = "sys.lineage_settings_global_version"; + field public static final java.lang.String WEATHER_TEMPERATURE_UNIT = "weather_temperature_unit"; } public static class LineageSettings.LineageSettingNotFoundException extends android.util.AndroidException { @@ -788,6 +793,7 @@ package lineageos.providers { field public static final java.lang.String STATUS_BAR_IME_SWITCHER = "status_bar_ime_switcher"; field public static final java.lang.String STATUS_BAR_QUICK_QS_PULLDOWN = "qs_quick_pulldown"; field public static final java.lang.String STATUS_BAR_SHOW_BATTERY_PERCENT = "status_bar_show_battery_percent"; + field public static final java.lang.String STATUS_BAR_SHOW_WEATHER = "status_bar_show_weather"; field public static final java.lang.String STYLUS_ICON_ENABLED = "stylus_icon_enabled"; field public static final java.lang.String SWAP_VOLUME_KEYS_ON_ROTATION = "swap_volume_keys_on_rotation"; field public static final java.lang.String SYSTEM_PROFILES_ENABLED = "system_profiles_enabled"; @@ -805,6 +811,95 @@ package lineageos.providers { field public static final java.lang.String ZEN_PRIORITY_ALLOW_LIGHTS = "zen_priority_allow_lights"; } + public class WeatherContract { + ctor public WeatherContract(); + field public static final java.lang.String AUTHORITY = "org.lineageos.weather"; + field public static final android.net.Uri AUTHORITY_URI; + } + + public static class WeatherContract.WeatherColumns { + ctor public WeatherContract.WeatherColumns(); + field public static final android.net.Uri CONTENT_URI; + field public static final android.net.Uri CURRENT_AND_FORECAST_WEATHER_URI; + field public static final java.lang.String CURRENT_CITY = "city"; + field public static final java.lang.String CURRENT_CONDITION = "condition"; + field public static final java.lang.String CURRENT_CONDITION_CODE = "condition_code"; + field public static final java.lang.String CURRENT_HUMIDITY = "humidity"; + field public static final java.lang.String CURRENT_TEMPERATURE = "temperature"; + field public static final java.lang.String CURRENT_TEMPERATURE_UNIT = "temperature_unit"; + field public static final java.lang.String CURRENT_TIMESTAMP = "timestamp"; + field public static final android.net.Uri CURRENT_WEATHER_URI; + field public static final java.lang.String CURRENT_WIND_DIRECTION = "wind_direction"; + field public static final java.lang.String CURRENT_WIND_SPEED = "wind_speed"; + field public static final java.lang.String CURRENT_WIND_SPEED_UNIT = "wind_speed_unit"; + field public static final java.lang.String FORECAST_CONDITION = "forecast_condition"; + field public static final java.lang.String FORECAST_CONDITION_CODE = "forecast_condition_code"; + field public static final java.lang.String FORECAST_HIGH = "forecast_high"; + field public static final java.lang.String FORECAST_LOW = "forecast_low"; + field public static final android.net.Uri FORECAST_WEATHER_URI; + field public static final java.lang.String TODAYS_HIGH_TEMPERATURE = "todays_high"; + field public static final java.lang.String TODAYS_LOW_TEMPERATURE = "todays_low"; + } + + public static final class WeatherContract.WeatherColumns.TempUnit { + field public static final int CELSIUS = 1; // 0x1 + field public static final int FAHRENHEIT = 2; // 0x2 + } + + public static final class WeatherContract.WeatherColumns.WeatherCode { + field public static final int BLOWING_SNOW = 14; // 0xe + field public static final int BLUSTERY = 22; // 0x16 + field public static final int CLEAR_NIGHT = 30; // 0x1e + field public static final int CLOUDY = 25; // 0x19 + field public static final int COLD = 24; // 0x18 + field public static final int DRIZZLE = 9; // 0x9 + field public static final int DUST = 18; // 0x12 + field public static final int FAIR_DAY = 33; // 0x21 + field public static final int FAIR_NIGHT = 32; // 0x20 + field public static final int FOGGY = 19; // 0x13 + field public static final int FREEZING_DRIZZLE = 8; // 0x8 + field public static final int FREEZING_RAIN = 10; // 0xa + field public static final int HAIL = 16; // 0x10 + field public static final int HAZE = 20; // 0x14 + field public static final int HEAVY_SNOW = 39; // 0x27 + field public static final int HOT = 35; // 0x23 + field public static final int HURRICANE = 2; // 0x2 + field public static final int ISOLATED_THUNDERSHOWERS = 44; // 0x2c + field public static final int ISOLATED_THUNDERSTORMS = 36; // 0x24 + field public static final int LIGHT_SNOW_SHOWERS = 13; // 0xd + field public static final int MIXED_RAIN_AND_HAIL = 34; // 0x22 + field public static final int MIXED_RAIN_AND_SLEET = 6; // 0x6 + field public static final int MIXED_RAIN_AND_SNOW = 5; // 0x5 + field public static final int MIXED_SNOW_AND_SLEET = 7; // 0x7 + field public static final int MOSTLY_CLOUDY_DAY = 27; // 0x1b + field public static final int MOSTLY_CLOUDY_NIGHT = 26; // 0x1a + field public static final int NOT_AVAILABLE = 3200; // 0xc80 + field public static final int PARTLY_CLOUDY = 41; // 0x29 + field public static final int PARTLY_CLOUDY_DAY = 29; // 0x1d + field public static final int PARTLY_CLOUDY_NIGHT = 28; // 0x1c + field public static final int SCATTERED_SHOWERS = 38; // 0x26 + field public static final int SCATTERED_SNOW_SHOWERS = 40; // 0x28 + field public static final int SCATTERED_THUNDERSTORMS = 37; // 0x25 + field public static final int SEVERE_THUNDERSTORMS = 3; // 0x3 + field public static final int SHOWERS = 11; // 0xb + field public static final int SLEET = 17; // 0x11 + field public static final int SMOKY = 21; // 0x15 + field public static final int SNOW = 15; // 0xf + field public static final int SNOW_FLURRIES = 12; // 0xc + field public static final int SNOW_SHOWERS = 43; // 0x2b + field public static final int SUNNY = 31; // 0x1f + field public static final int THUNDERSHOWER = 42; // 0x2a + field public static final int THUNDERSTORMS = 4; // 0x4 + field public static final int TORNADO = 0; // 0x0 + field public static final int TROPICAL_STORM = 1; // 0x1 + field public static final int WINDY = 23; // 0x17 + } + + public static final class WeatherContract.WeatherColumns.WindSpeedUnit { + field public static final int KPH = 1; // 0x1 + field public static final int MPH = 2; // 0x2 + } + } package lineageos.trust { @@ -845,3 +940,159 @@ package lineageos.util { } } + +package lineageos.weather { + + public class LineageWeatherManager { + method public void cancelRequest(int); + method public java.lang.String getActiveWeatherServiceProviderLabel(); + method public static lineageos.weather.LineageWeatherManager getInstance(android.content.Context); + method public int lookupCity(java.lang.String, lineageos.weather.LineageWeatherManager.LookupCityRequestListener); + method public void registerWeatherServiceProviderChangeListener(lineageos.weather.LineageWeatherManager.WeatherServiceProviderChangeListener); + method public int requestWeatherUpdate(android.location.Location, lineageos.weather.LineageWeatherManager.WeatherUpdateRequestListener); + method public int requestWeatherUpdate(lineageos.weather.WeatherLocation, lineageos.weather.LineageWeatherManager.WeatherUpdateRequestListener); + method public void unregisterWeatherServiceProviderChangeListener(lineageos.weather.LineageWeatherManager.WeatherServiceProviderChangeListener); + } + + public static abstract interface LineageWeatherManager.LookupCityRequestListener { + method public abstract void onLookupCityRequestCompleted(int, java.util.List); + } + + public static final class LineageWeatherManager.RequestStatus { + field public static final int ALREADY_IN_PROGRESS = -3; // 0xfffffffd + field public static final int COMPLETED = 1; // 0x1 + field public static final int FAILED = -1; // 0xffffffff + field public static final int NO_MATCH_FOUND = -4; // 0xfffffffc + field public static final int SUBMITTED_TOO_SOON = -2; // 0xfffffffe + } + + public static abstract interface LineageWeatherManager.WeatherServiceProviderChangeListener { + method public abstract void onWeatherServiceProviderChanged(java.lang.String); + } + + public static abstract interface LineageWeatherManager.WeatherUpdateRequestListener { + method public abstract void onWeatherRequestCompleted(int, lineageos.weather.WeatherInfo); + } + + public final class RequestInfo implements android.os.Parcelable { + method public int describeContents(); + method public java.lang.String getCityName(); + method public android.location.Location getLocation(); + method public int getRequestType(); + method public int getTemperatureUnit(); + method public lineageos.weather.WeatherLocation getWeatherLocation(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + field public static final int TYPE_LOOKUP_CITY_NAME_REQ = 3; // 0x3 + field public static final int TYPE_WEATHER_BY_GEO_LOCATION_REQ = 1; // 0x1 + field public static final int TYPE_WEATHER_BY_WEATHER_LOCATION_REQ = 2; // 0x2 + } + + public final class WeatherInfo implements android.os.Parcelable { + method public int describeContents(); + method public java.lang.String getCity(); + method public int getConditionCode(); + method public java.util.List getForecasts(); + method public double getHumidity(); + method public double getTemperature(); + method public int getTemperatureUnit(); + method public long getTimestamp(); + method public double getTodaysHigh(); + method public double getTodaysLow(); + method public double getWindDirection(); + method public double getWindSpeed(); + method public int getWindSpeedUnit(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class WeatherInfo.Builder { + ctor public WeatherInfo.Builder(java.lang.String, double, int); + method public lineageos.weather.WeatherInfo build(); + method public lineageos.weather.WeatherInfo.Builder setForecast(java.util.List); + method public lineageos.weather.WeatherInfo.Builder setHumidity(double); + method public lineageos.weather.WeatherInfo.Builder setTimestamp(long); + method public lineageos.weather.WeatherInfo.Builder setTodaysHigh(double); + method public lineageos.weather.WeatherInfo.Builder setTodaysLow(double); + method public lineageos.weather.WeatherInfo.Builder setWeatherCondition(int); + method public lineageos.weather.WeatherInfo.Builder setWind(double, double, int); + } + + public static class WeatherInfo.DayForecast implements android.os.Parcelable { + method public int describeContents(); + method public int getConditionCode(); + method public double getHigh(); + method public double getLow(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class WeatherInfo.DayForecast.Builder { + ctor public WeatherInfo.DayForecast.Builder(int); + method public lineageos.weather.WeatherInfo.DayForecast build(); + method public lineageos.weather.WeatherInfo.DayForecast.Builder setHigh(double); + method public lineageos.weather.WeatherInfo.DayForecast.Builder setLow(double); + } + + public final class WeatherLocation implements android.os.Parcelable { + method public int describeContents(); + method public java.lang.String getCity(); + method public java.lang.String getCityId(); + method public java.lang.String getCountry(); + method public java.lang.String getCountryId(); + method public java.lang.String getPostalCode(); + method public java.lang.String getState(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class WeatherLocation.Builder { + ctor public WeatherLocation.Builder(java.lang.String, java.lang.String); + ctor public WeatherLocation.Builder(java.lang.String); + method public lineageos.weather.WeatherLocation build(); + method public lineageos.weather.WeatherLocation.Builder setCountry(java.lang.String); + method public lineageos.weather.WeatherLocation.Builder setCountryId(java.lang.String); + method public lineageos.weather.WeatherLocation.Builder setPostalCode(java.lang.String); + method public lineageos.weather.WeatherLocation.Builder setState(java.lang.String); + } + +} + +package lineageos.weatherservice { + + public final class ServiceRequest { + method public void complete(lineageos.weatherservice.ServiceRequestResult); + method public void fail(); + method public lineageos.weather.RequestInfo getRequestInfo(); + method public void reject(int); + } + + public final class ServiceRequestResult implements android.os.Parcelable { + method public int describeContents(); + method public java.util.List getLocationLookupList(); + method public lineageos.weather.WeatherInfo getWeatherInfo(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class ServiceRequestResult.Builder { + ctor public ServiceRequestResult.Builder(); + ctor public ServiceRequestResult.Builder(lineageos.weather.WeatherInfo); + ctor public ServiceRequestResult.Builder(java.util.List); + method public lineageos.weatherservice.ServiceRequestResult build(); + } + + public abstract class WeatherProviderService extends android.app.Service { + ctor public WeatherProviderService(); + method protected final void attachBaseContext(android.content.Context); + method public final android.os.IBinder onBind(android.content.Intent); + method protected void onConnected(); + method protected void onDisconnected(); + method protected abstract void onRequestCancelled(lineageos.weatherservice.ServiceRequest); + method protected abstract void onRequestSubmitted(lineageos.weatherservice.ServiceRequest); + field public static final java.lang.String SERVICE_INTERFACE = "lineageos.weatherservice.WeatherProviderService"; + field public static final java.lang.String SERVICE_META_DATA = "lineageos.weatherservice"; + } + +} + diff --git a/host/migration/src/LineageSettings.java b/host/migration/src/LineageSettings.java index 861a0ab2ce2df22ab866e75f5b5c1d6cdbdebb28..a454a69b2b94106303f979429a62328e4bf00a31 100644 --- a/host/migration/src/LineageSettings.java +++ b/host/migration/src/LineageSettings.java @@ -373,6 +373,12 @@ public final class LineageSettings { */ public static final String DOUBLE_TAP_SLEEP_GESTURE = "double_tap_sleep_gesture"; + /** + * Boolean value on whether to show weather in the statusbar + * @hide + */ + public static final String STATUS_BAR_SHOW_WEATHER = "status_bar_show_weather"; + /** * Show search bar in recents * @hide @@ -593,6 +599,7 @@ public final class LineageSettings { LineageSettings.System.DISPLAY_COLOR_ADJUSTMENT, LineageSettings.System.LIVE_DISPLAY_HINTED, LineageSettings.System.DOUBLE_TAP_SLEEP_GESTURE, + LineageSettings.System.STATUS_BAR_SHOW_WEATHER, LineageSettings.System.RECENTS_SHOW_SEARCH_BAR, LineageSettings.System.NAVBAR_LEFT_IN_LANDSCAPE, LineageSettings.System.T9_SEARCH_INPUT_LOCALE, diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/LineageWeatherManagerService.java b/lineage/lib/main/java/org/lineageos/platform/internal/LineageWeatherManagerService.java new file mode 100644 index 0000000000000000000000000000000000000000..81375f31d71573bf19245ac7254d24e1fbc28ddd --- /dev/null +++ b/lineage/lib/main/java/org/lineageos/platform/internal/LineageWeatherManagerService.java @@ -0,0 +1,518 @@ +/* + * Copyright (C) 2016 The CyanogenMod 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 org.lineageos.platform.internal; + +import android.app.AppGlobals; +import android.annotation.NonNull; +import android.content.ComponentName; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.content.pm.IPackageManager; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.database.ContentObserver; +import android.net.Uri; +import android.os.Binder; +import android.os.IBinder; +import android.os.RemoteCallbackList; +import android.os.RemoteException; +import android.os.UserHandle; +import android.text.TextUtils; +import android.util.Slog; +import com.android.internal.content.PackageMonitor; +import com.android.internal.os.BackgroundThread; +import lineageos.app.LineageContextConstants; +import lineageos.platform.Manifest; +import lineageos.providers.LineageSettings; +import lineageos.providers.WeatherContract.WeatherColumns; +import lineageos.weather.LineageWeatherManager; +import lineageos.weather.ILineageWeatherManager; +import lineageos.weather.IRequestInfoListener; +import lineageos.weather.IWeatherServiceProviderChangeListener; +import lineageos.weather.RequestInfo; +import lineageos.weather.WeatherInfo; +import lineageos.weatherservice.IWeatherProviderService; +import lineageos.weatherservice.IWeatherProviderServiceClient; +import lineageos.weatherservice.ServiceRequestResult; + +import java.util.ArrayList; +import java.util.List; + +public class LineageWeatherManagerService extends LineageSystemService { + + private static final String TAG = LineageWeatherManagerService.class.getSimpleName(); + + private IWeatherProviderService mWeatherProviderService; + private boolean mIsWeatherProviderServiceBound; + private Object mMutex = new Object(); + private Context mContext; + private final RemoteCallbackList mProviderChangeListeners + = new RemoteCallbackList<>(); + private volatile boolean mReconnectedDuePkgModified = false; + + private final IWeatherProviderServiceClient mServiceClient + = new IWeatherProviderServiceClient.Stub() { + @Override + public void setServiceRequestState(RequestInfo requestInfo, + ServiceRequestResult result, int status) { + synchronized (mMutex) { + + if (requestInfo == null) { + //Invalid request info object + return; + } + + if (!isValidRequestInfoStatus(status)) { + //Invalid request status + return; + } + + final IRequestInfoListener listener = requestInfo.getRequestListener(); + final int requestType = requestInfo.getRequestType(); + + switch (requestType) { + case RequestInfo.TYPE_WEATHER_BY_GEO_LOCATION_REQ: + case RequestInfo.TYPE_WEATHER_BY_WEATHER_LOCATION_REQ: + WeatherInfo weatherInfo = null; + if (status == LineageWeatherManager.RequestStatus.COMPLETED) { + weatherInfo = (result != null) ? result.getWeatherInfo() : null; + if (weatherInfo == null) { + //This should never happen! WEATHER_REQUEST_COMPLETED is set + //only if the weatherinfo object was not null when the request + //was marked as completed + status = LineageWeatherManager.RequestStatus.FAILED; + } else { + if (!requestInfo.isQueryOnlyWeatherRequest()) { + final long identity = Binder.clearCallingIdentity(); + try { + updateWeatherInfoLocked(weatherInfo); + } finally { + Binder.restoreCallingIdentity(identity); + } + } + } + } + if (isValidListener(listener)) { + try { + listener.onWeatherRequestCompleted(requestInfo, status, + weatherInfo); + } catch (RemoteException e) { + } + } + break; + case RequestInfo.TYPE_LOOKUP_CITY_NAME_REQ: + if (isValidListener(listener)) { + try { + //Result might be null if the provider marked the request as failed + listener.onLookupCityRequestCompleted(requestInfo, status, + result != null ? result.getLocationLookupList() : null); + } catch (RemoteException e) { + } + } + break; + } + } + } + }; + + private boolean isValidRequestInfoStatus(int state) { + switch (state) { + case LineageWeatherManager.RequestStatus.COMPLETED: + case LineageWeatherManager.RequestStatus.ALREADY_IN_PROGRESS: + case LineageWeatherManager.RequestStatus.FAILED: + case LineageWeatherManager.RequestStatus.NO_MATCH_FOUND: + case LineageWeatherManager.RequestStatus.SUBMITTED_TOO_SOON: + return true; + default: + return false; + } + } + + private boolean isValidListener(IRequestInfoListener listener) { + return (listener != null && listener.asBinder().pingBinder()); + } + + private void enforcePermission() { + mContext.enforceCallingOrSelfPermission( + Manifest.permission.ACCESS_WEATHER_MANAGER, null); + } + + private final IBinder mService = new ILineageWeatherManager.Stub() { + + @Override + public void updateWeather(RequestInfo info) { + enforcePermission(); + processWeatherUpdateRequest(info); + } + + @Override + public void lookupCity(RequestInfo info) { + enforcePermission(); + processCityNameLookupRequest(info); + } + + @Override + public void registerWeatherServiceProviderChangeListener( + IWeatherServiceProviderChangeListener listener) { + enforcePermission(); + mProviderChangeListeners.register(listener); + } + + @Override + public void unregisterWeatherServiceProviderChangeListener( + IWeatherServiceProviderChangeListener listener) { + enforcePermission(); + mProviderChangeListeners.unregister(listener); + } + + @Override + public String getActiveWeatherServiceProviderLabel() { + enforcePermission(); + final long identity = Binder.clearCallingIdentity(); + try { + String enabledProviderService = LineageSettings.Secure.getString( + mContext.getContentResolver(), LineageSettings.Secure.WEATHER_PROVIDER_SERVICE); + if (enabledProviderService != null) { + return getComponentLabel( + ComponentName.unflattenFromString(enabledProviderService)); + } + } finally { + Binder.restoreCallingIdentity(identity); + } + return null; + } + + @Override + public void cancelRequest(int requestId) { + enforcePermission(); + processCancelRequest(requestId); + } + }; + + private String getComponentLabel(ComponentName componentName) { + final PackageManager pm = mContext.getPackageManager(); + Intent intent = new Intent().setComponent(componentName); + ResolveInfo resolveInfo = pm.resolveService(intent, + PackageManager.GET_SERVICES); + if (resolveInfo != null) { + return resolveInfo.loadLabel(pm).toString(); + } + return null; + } + + public LineageWeatherManagerService(Context context) { + super(context); + mContext = context; + } + + @Override + public String getFeatureDeclaration() { + return LineageContextConstants.Features.WEATHER_SERVICES; + } + + @Override + public void onStart() { + publishBinderService(LineageContextConstants.LINEAGE_WEATHER_SERVICE, mService); + registerPackageMonitor(); + registerSettingsObserver(); + } + + @Override + public void onBootPhase(int phase) { + // Do nothing. We need userland apps to be fully up and running. + // We will connect in onUnlockUser instead. + } + + @Override + public void onUserUnlocking(@NonNull TargetUser user) { + bindActiveWeatherProviderService(); + } + + private void bindActiveWeatherProviderService() { + String activeProviderService = LineageSettings.Secure.getString(mContext.getContentResolver(), + LineageSettings.Secure.WEATHER_PROVIDER_SERVICE); + if (activeProviderService != null) { + if (!getContext().bindServiceAsUser(new Intent().setComponent( + ComponentName.unflattenFromString(activeProviderService)), + mWeatherServiceProviderConnection, Context.BIND_AUTO_CREATE, + UserHandle.CURRENT)) { + Slog.w(TAG, "Failed to bind service " + activeProviderService); + } + } + } + + private boolean canProcessWeatherUpdateRequest(RequestInfo info) { + final IRequestInfoListener listener = info.getRequestListener(); + + if (!mIsWeatherProviderServiceBound) { + if (listener != null && listener.asBinder().pingBinder()) { + try { + listener.onWeatherRequestCompleted(info, + LineageWeatherManager.RequestStatus.FAILED, null); + } catch (RemoteException e) { + } + } + return false; + } + return true; + } + + private synchronized void processWeatherUpdateRequest(RequestInfo info) { + if (!canProcessWeatherUpdateRequest(info)) return; + try { + mWeatherProviderService.processWeatherUpdateRequest(info); + } catch (RemoteException e) { + } + } + + private void processCityNameLookupRequest(RequestInfo info) { + if (!mIsWeatherProviderServiceBound) { + final IRequestInfoListener listener = info.getRequestListener(); + if (listener != null && listener.asBinder().pingBinder()) { + try { + listener.onLookupCityRequestCompleted(info, + LineageWeatherManager.RequestStatus.FAILED, null); + } catch (RemoteException e) { + } + } + return; + } + try { + mWeatherProviderService.processCityNameLookupRequest(info); + } catch(RemoteException e){ + } + } + + private void processCancelRequest(int requestId) { + if (mIsWeatherProviderServiceBound) { + try { + mWeatherProviderService.cancelRequest(requestId); + } catch (RemoteException e) { + } + } + } + + private ServiceConnection mWeatherServiceProviderConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + mWeatherProviderService = IWeatherProviderService.Stub.asInterface(service); + mIsWeatherProviderServiceBound = true; + try { + mWeatherProviderService.setServiceClient(mServiceClient); + } catch(RemoteException e) { + } + if (!mReconnectedDuePkgModified) { + notifyProviderChanged(name); + } + mReconnectedDuePkgModified = false; + } + + @Override + public void onServiceDisconnected(ComponentName name) { + mWeatherProviderService = null; + mIsWeatherProviderServiceBound = false; + Slog.d(TAG, "Connection with " + name.flattenToString() + " has been closed"); + } + }; + + private void notifyProviderChanged(ComponentName name) { + String providerName = null; + if (name != null) { + providerName = getComponentLabel(name); + } + + int N = mProviderChangeListeners.beginBroadcast(); + for (int indx = 0; indx < N; indx++) { + IWeatherServiceProviderChangeListener listener + = mProviderChangeListeners.getBroadcastItem(indx); + try { + listener.onWeatherServiceProviderChanged(providerName); + } catch (RemoteException e){ + } + } + mProviderChangeListeners.finishBroadcast(); + } + + private boolean updateWeatherInfoLocked(WeatherInfo wi) { + final int size = wi.getForecasts().size() + 1; + List contentValuesList = new ArrayList<>(size); + ContentValues contentValues = new ContentValues(); + + contentValues.put(WeatherColumns.CURRENT_CITY, wi.getCity()); + contentValues.put(WeatherColumns.CURRENT_TEMPERATURE, wi.getTemperature()); + contentValues.put(WeatherColumns.CURRENT_TEMPERATURE_UNIT, wi.getTemperatureUnit()); + contentValues.put(WeatherColumns.CURRENT_CONDITION_CODE, wi.getConditionCode()); + contentValues.put(WeatherColumns.CURRENT_HUMIDITY, wi.getHumidity()); + contentValues.put(WeatherColumns.CURRENT_WIND_SPEED, wi.getWindSpeed()); + contentValues.put(WeatherColumns.CURRENT_WIND_DIRECTION, wi.getWindDirection()); + contentValues.put(WeatherColumns.CURRENT_WIND_SPEED_UNIT, wi.getWindSpeedUnit()); + contentValues.put(WeatherColumns.CURRENT_TIMESTAMP, wi.getTimestamp()); + contentValues.put(WeatherColumns.TODAYS_HIGH_TEMPERATURE, wi.getTodaysHigh()); + contentValues.put(WeatherColumns.TODAYS_LOW_TEMPERATURE, wi.getTodaysLow()); + contentValuesList.add(contentValues); + + for (WeatherInfo.DayForecast df : wi.getForecasts()) { + contentValues = new ContentValues(); + contentValues.put(WeatherColumns.FORECAST_LOW, df.getLow()); + contentValues.put(WeatherColumns.FORECAST_HIGH, df.getHigh()); + contentValues.put(WeatherColumns.FORECAST_CONDITION_CODE, df.getConditionCode()); + contentValuesList.add(contentValues); + } + + if (size != getContext().getContentResolver().bulkInsert( + WeatherColumns.CURRENT_AND_FORECAST_WEATHER_URI, + contentValuesList.toArray(new ContentValues[0]))) { + Slog.w(TAG, "Failed to update the weather content provider"); + return false; + } + return true; + } + + private void registerPackageMonitor() { + PackageMonitor monitor = new PackageMonitor() { + @Override + public void onPackageModified(String packageName) { + String enabledProviderService = LineageSettings.Secure.getString( + mContext.getContentResolver(), LineageSettings.Secure.WEATHER_PROVIDER_SERVICE); + if (enabledProviderService == null) return; + ComponentName cn = ComponentName.unflattenFromString(enabledProviderService); + if (!TextUtils.equals(packageName, cn.getPackageName())) return; + + if (cn.getPackageName().equals(packageName) && !mIsWeatherProviderServiceBound) { + //We were disconnected because the whole package changed + //(most likely remove->install) + if (!getContext().bindServiceAsUser(new Intent().setComponent(cn), + mWeatherServiceProviderConnection, Context.BIND_AUTO_CREATE, + UserHandle.CURRENT)) { + LineageSettings.Secure.putStringForUser( mContext.getContentResolver(), + LineageSettings.Secure.WEATHER_PROVIDER_SERVICE, null, + getChangingUserId()); + Slog.w(TAG, "Unable to rebind " + cn.flattenToString() + " after receiving" + + " package modified notification. Settings updated."); + } else { + mReconnectedDuePkgModified = true; + } + } + } + + @Override + public boolean onPackageChanged(String packageName, int uid, String[] components) { + String enabledProviderService = LineageSettings.Secure.getString( + mContext.getContentResolver(), LineageSettings.Secure.WEATHER_PROVIDER_SERVICE); + if (enabledProviderService == null) return false; + + boolean packageChanged = false; + ComponentName cn = ComponentName.unflattenFromString(enabledProviderService); + for (String component : components) { + if (cn.getPackageName().equals(component)) { + packageChanged = true; + break; + } + } + + if (packageChanged) { + try { + final IPackageManager pm = AppGlobals.getPackageManager(); + final int enabled = pm.getApplicationEnabledSetting(packageName, + getChangingUserId()); + if (enabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED + || enabled == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { + return false; + } else { + disconnectClient(); + //The package is not enabled so we can't use it anymore + LineageSettings.Secure.putStringForUser( + mContext.getContentResolver(), + LineageSettings.Secure.WEATHER_PROVIDER_SERVICE, null, + getChangingUserId()); + Slog.w(TAG, "Active provider " + cn.flattenToString() + " disabled"); + notifyProviderChanged(null); + } + } catch (IllegalArgumentException e) { + Slog.d(TAG, "Exception trying to look up app enabled settings ", e); + } catch (RemoteException e) { + // Really? + } + } + return false; + } + + @Override + public void onPackageRemoved(String packageName, int uid) { + String enabledProviderService = LineageSettings.Secure.getString( + mContext.getContentResolver(), LineageSettings.Secure.WEATHER_PROVIDER_SERVICE); + if (enabledProviderService == null) return; + + ComponentName cn = ComponentName.unflattenFromString(enabledProviderService); + if (!TextUtils.equals(packageName, cn.getPackageName())) return; + + disconnectClient(); + LineageSettings.Secure.putStringForUser( + mContext.getContentResolver(), LineageSettings.Secure.WEATHER_PROVIDER_SERVICE, + null, getChangingUserId()); + notifyProviderChanged(null); + } + }; + + monitor.register(mContext, BackgroundThread.getHandler().getLooper(), UserHandle.ALL, true); + } + + private void registerSettingsObserver() { + final Uri enabledWeatherProviderServiceUri = LineageSettings.Secure.getUriFor( + LineageSettings.Secure.WEATHER_PROVIDER_SERVICE); + ContentObserver observer = new ContentObserver(BackgroundThread.getHandler()) { + @Override + public void onChange(boolean selfChange, Uri uri, int userId) { + if (enabledWeatherProviderServiceUri.equals(uri)) { + String activeSrvc = LineageSettings.Secure.getString(mContext.getContentResolver(), + LineageSettings.Secure.WEATHER_PROVIDER_SERVICE); + disconnectClient(); + if (activeSrvc != null) { + ComponentName cn = ComponentName.unflattenFromString(activeSrvc); + getContext().bindServiceAsUser(new Intent().setComponent(cn), + mWeatherServiceProviderConnection, Context.BIND_AUTO_CREATE, + UserHandle.CURRENT); + } + } + } + }; + mContext.getContentResolver().registerContentObserver(enabledWeatherProviderServiceUri, + false, observer, UserHandle.USER_ALL); + } + + private synchronized void disconnectClient() { + if (mIsWeatherProviderServiceBound) { + //let's cancel any pending request + try { + mWeatherProviderService.cancelOngoingRequests(); + } catch (RemoteException e) { + Slog.d(TAG, "Error occurred while trying to cancel ongoing requests"); + } + //Disconnect from client + try { + mWeatherProviderService.setServiceClient(null); + } catch (RemoteException e) { + Slog.d(TAG, "Error occurred while disconnecting client"); + } + + getContext().unbindService(mWeatherServiceProviderConnection); + mIsWeatherProviderServiceBound = false; + } + } +} diff --git a/lineage/res/AndroidManifest.xml b/lineage/res/AndroidManifest.xml index 8e7ab2c6a048b3c392bfecab6e1ea32ba90e6370..32e4c7c904ce5b11c5a56ed73f2ecbcc69f41585 100644 --- a/lineage/res/AndroidManifest.xml +++ b/lineage/res/AndroidManifest.xml @@ -63,6 +63,33 @@ android:description="@string/permdesc_writeSecureSettings" android:protectionLevel="signature|privileged|development" /> + + + + + + + + + + + + LiveDisplay verander na dag modus. LiveDisplay verander na nag modus. LiveDisplay verander na buitelug modus. + lees weer + Laat \'n toep toe om inhoud te lees vanaf die weer verskaffer. + opdateer weer verskaffer + Laat \'n toep toe om inhoud van die weer verskaffer by te werk. + bind as \'n weer verskaffer diens + Laat \'n toep toe om as \'n weer diens verskaffer geïdentifiseer te word. + toegang na weer diens + Laat \'n toep om toegang te verkry tot die weer diens in die stelsel. Moet nooit nodig wees vir die normale toepassings. bestuur LiveDisplay instellings Laat \'n toep toe om gevorderde skerm instellings te konfigureer. bestuur afgeleë opsies diff --git a/lineage/res/res/values-ar/strings.xml b/lineage/res/res/values-ar/strings.xml index a49a29ccf8ffd996dd5ddd0eacd454b7e35a2702..478954252e309ca47824cc60b68f017ad9134045 100644 --- a/lineage/res/res/values-ar/strings.xml +++ b/lineage/res/res/values-ar/strings.xml @@ -58,6 +58,14 @@ تم تغيير LiveDisplay إلى الوضع النهاري. تم تغيير LiveDisplay إلى الوضع الليلي. تم تغيير LiveDisplay إلى وضع الأماكن المفتوحة. + قراءة الطقس + يسمح لتطبيق معين بقراءة المحتوى من موفر الطقس. + تحديث موفر الطقس + يسمح لتطبيق معين بتحديث المحتوى من موفر الطقس. + ربط كخدمة موفر الطقس + يسمح بتعريف تطبيق كخدمة موفر طقس. + الوصول إلى خدمة الطقس + يسمح لتطبيق معين بالوصول إلى خدمة الطقس في النظام. لا يتعين الاحتياج إليه كليةً للتطبيقات العادية. إدارة إعدادات LiveDisplay يسمح لتطبيق معين بتكوين إعدادات العرض المتقدمة. إعدادات التحكم عن بعد diff --git a/lineage/res/res/values-ast-rES/strings.xml b/lineage/res/res/values-ast-rES/strings.xml index 4bab038b5084c31c2170b8f5a4f36784c2cc562f..56aeb6e2c10e24437aa29e0372a7ce731e38b311 100644 --- a/lineage/res/res/values-ast-rES/strings.xml +++ b/lineage/res/res/values-ast-rES/strings.xml @@ -61,6 +61,14 @@ xestion de los axustes de LiveDisplay Permite qu\'una aplicación configure los axustes de visualización avanzaos. xestión d\'axustes remotos + lleer la metereoloxía + Permite qu\'una aplicación llea\'l conteníu del fornidor meteorolóxicu. + anovar el fornidor meteorolóxicu + Permite qu\'una aplicación anueve\'l conteníu del fornidor meteorolóxicu. + arreyar como serviciu fornidor de metereoloxía + Permite qu\'una aplicación s\'identifique como un serviciu fornidor de meteoroloxía. + acceder al serviciu de metereoloxía + Permite qu\'una aplicación acceda al serviciu meteorolóxicu nel sistema. Enxamás debería precisase p\'aplicaciones normales. Permite qu\'una aplicación xestione axustes remotos Data de la compilación Nivel de l\'API de LineageOS diff --git a/lineage/res/res/values-az/strings.xml b/lineage/res/res/values-az/strings.xml index bec1a7b0b103d0d77b317bd170823e6684926534..982ea0a0cd618038631f2b7df8d929f940481cf5 100644 --- a/lineage/res/res/values-az/strings.xml +++ b/lineage/res/res/values-az/strings.xml @@ -58,6 +58,14 @@ LiveDisplay gündüz rejiminə keçdi. LiveDisplay gecə rejiminə keçdi. LiveDisplay açıq hava rejiminə keçdi. + hava məlumatını oxu + Tətbiqetməyə hava təchizatçısından məzmunları oxumağa icazə verər. + hava təchizatçısını yenilə + Tətbiqetməyə hava təchizatçısı məzmununu yeniləməyə icazə verər. + hava təchizatçı xidməti kimi qoş + Tətbiqetmənin hava təchizatçısı xidməti kimi təqdim edilməsinə icazə verər. + hava xidmətinə müraciət + Tətbiqetmənin sistemdəki hava xidmətinə müraciətinə icazə verər. Normal tətbiqlər üçün lazım deyil. LiveDisplay tənzimləmələrini idarə et Tətbiqetməyə qabaqcıl ekran tənzimləmələrini konfiqurasiya etməyə icazə verər. uzaqdan bağlantı tənzimləmələri diff --git a/lineage/res/res/values-be/strings.xml b/lineage/res/res/values-be/strings.xml index 79519a9df503cc72da1eb04a05756d1c144af25d..b3c3170f44bff0d39cd4953439e588b7437d8279 100644 --- a/lineage/res/res/values-be/strings.xml +++ b/lineage/res/res/values-be/strings.xml @@ -46,6 +46,7 @@ LiveDisplay зменены на аўтаматычны рэжым. LiveDisplay зменены ў дзённы рэжым. LiveDisplay зменены ў начны рэжым. + Абнавіць звесткі аб надвор’і кіраванне наладамі LiveDisplay Даследуйце Trust diff --git a/lineage/res/res/values-bg/strings.xml b/lineage/res/res/values-bg/strings.xml index feb7290505f3112b09454f93b596c8f4b0ca3a23..2615b5ec1ebb17cb02a9a7286f52287cf602ee30 100644 --- a/lineage/res/res/values-bg/strings.xml +++ b/lineage/res/res/values-bg/strings.xml @@ -58,6 +58,14 @@ Адаптивен дисплей е променен на дневен режим. Адаптивен дисплей е променен на нощен режим. Адаптивен дисплей е променен на външен режим. + прочети прогнозата + Разрешава на приложението да чете данни от доставчика на време. + Актуализиране на доставчика на време + Разрешава на приложението да актуализира съдържанието на доставчика на време. + Задай като доставчик на време + Позволява на приложение да бъде идентифицирано като доставчик на време. + Достъп до метеорологична служба + Позволява на приложението достъп до услугата за време. Не е необходимо за нормални приложения. управление на настройките за Адаптивен дисплей Позволява на приложението да променя разширените настройки на дисплея. управление на отдалечени настройки diff --git a/lineage/res/res/values-ca/strings.xml b/lineage/res/res/values-ca/strings.xml index e8c753cd4b7a5c30220981f145c1e9dcd4db8d99..be82604b59b5608546668af10bd2c69fb1f9b254 100644 --- a/lineage/res/res/values-ca/strings.xml +++ b/lineage/res/res/values-ca/strings.xml @@ -58,6 +58,14 @@ LiveDisplay canviat al mode diürn. LiveDisplay canviat al mode nocturn. LiveDisplay canviat al mode exterior. + llegir el temps + Permet a una aplicació llegir els continguts del proveïdor meteorològic. + actualitzar el proveïdor meteorològic + Permet a una aplicació actualitzar els continguts del proveïdor meteorològic. + vincula com a un servei de proveïdor meteorològic + Permet a una aplicació ser identificada com un servei de proveïdor meteorològic. + accés al servei del temps + Permet a una aplicació accedir al servei del temps del sistema. No s\'hauria de necessitar mai en les aplicacions normals. administra la configuració de LiveDisplay Permet a una aplicació configurar les opcions de visualització avançades. gestiona la configuració remota diff --git a/lineage/res/res/values-cs/strings.xml b/lineage/res/res/values-cs/strings.xml index b4c085c751a198e3add9a876813d63a34e89425e..a926e1fc9e042001a412ec59ee7adb53fc188e53 100644 --- a/lineage/res/res/values-cs/strings.xml +++ b/lineage/res/res/values-cs/strings.xml @@ -58,6 +58,14 @@ LiveDisplay změněn na režim ve dne. LiveDisplay změněn na režim v noci. LiveDisplay změněn na režim venku. + číst počasí + Umožní číst obsah od poskytovatele počasí. + aktualizovat poskytovatele počasí + Umožní aktualizovat obsah poskytovatele počasí. + vázat se jako služba poskytovatele počasí + Umožní identifikaci jako služba poskytovatele počasí. + přistupovat ke službě počasí + Umožní přistupovat ke službě počasí v systému. Toto oprávnění by neměla vyžadovat žádná normální aplikace. spravovat nastavení LiveDisplay Umožní nastavovat rozšířené nastavení obrazovky. správa vzdálených nastavení diff --git a/lineage/res/res/values-cy/strings.xml b/lineage/res/res/values-cy/strings.xml index 87adf0d93a6fc080487b41870934976b68a868cc..644acc2f6207630a3c0025d6c26a18ea366dca3b 100644 --- a/lineage/res/res/values-cy/strings.xml +++ b/lineage/res/res/values-cy/strings.xml @@ -58,6 +58,14 @@ LiveDisplay wedi\'i newid i fodd dydd. LiveDisplay wedi\'i newid i fodd nos. LiveDisplay wedi\'i newid i fodd awyr agored. + darllen y tywydd + Mae\'n caniatáu i ap ddarllen cynnwys gan y darparydd tywydd. + diweddaru darparwr tywydd + Mae\'n caniatáu i ap ddiweddaru cynnwys y darparydd tywydd. + clymu fel gwasanaeth darparu tywydd + Mae\'n galluogi ap i gael ei adnabod fel gwasanaeth darparu tywydd. + mynediad at wasanaeth tywydd + Mae\'n caniatáu i ap gyrchu\'r gwasanaeth tywydd yn y system. Ni ddylai apiau arferol byth fod ei angen. rheoli gosodiadau LiveDisplay Mae\'n caniatáu i ap ffurfweddu gosodiadau dangosydd uwch. rheoli gosodiadau o bell diff --git a/lineage/res/res/values-da/strings.xml b/lineage/res/res/values-da/strings.xml index 0d9ebbc5e55926cea69bb98672f0c596889b11ff..4b546301316ce02141e1089c539ffd6ac3e38354 100644 --- a/lineage/res/res/values-da/strings.xml +++ b/lineage/res/res/values-da/strings.xml @@ -58,6 +58,14 @@ LiveDisplay ændret til dag tilstand. LiveDisplay ændret til nat tilstand. LiveDisplay ændret til udendørstilstand. + læs vejret + Tillader en app at læse indholdet fra en vejr-udbyder. + opdater vejr-udbyder + Tillader en app at opdatere indholdet fra en vejr-udbyder. + forbind som en vejrudbyder service + Tillader at en app kan identificeres som en vejrudbyder service. + tilgå vejr-tjenesten + Tillader en app at tilgå vejrtjenesten i systemet. Bør aldrig være nødvendig for alm. apps. håndtér LevendeDisplay-indstillinger Tillader en app at konfigurere avancerede skærmindstillinger. håndtere fjernbetjeningsindstillinger diff --git a/lineage/res/res/values-de/strings.xml b/lineage/res/res/values-de/strings.xml index d0de4ea689b93f030ab6055657ee916a2cda6c4a..d68f80dd4bffe5b56a2887643fd416aa7ba6c83c 100644 --- a/lineage/res/res/values-de/strings.xml +++ b/lineage/res/res/values-de/strings.xml @@ -58,6 +58,14 @@ LiveDisplay auf Tag-Modus geändert. LiveDisplay auf Nacht-Modus geändert. LiveDisplay auf Außen-Modus geändert. + Wetter auslesen + Ermöglicht der App, Inhalte des Wetterdatenanbieters auszulesen. + Wetterdatenanbieter aktualisieren + Ermöglicht der App, Inhalte des Wetterdatenanbieters zu aktualisieren. + Anbindung als Service für Wetterdatenanbieter + Ermöglicht der App, sich als Wetterdatenanbieter zu identifizieren. + auf Wetterdienst zugreifen + Ermöglicht der App, auf den Wetterdienst des Systems zuzugreifen. Wird für normale Apps nicht benötigt. LiveDisplay-Einstellungen verwalten Ermöglicht der App, erweiterte Displayeinstellungen vorzunehmen. Remote-Einstellungen verwalten diff --git a/lineage/res/res/values-el/strings.xml b/lineage/res/res/values-el/strings.xml index f6693b00dea6111bb57703a74dec33e61fe81ade..95308b68204988fb3e8ac6ea609cf10a56357a1f 100644 --- a/lineage/res/res/values-el/strings.xml +++ b/lineage/res/res/values-el/strings.xml @@ -58,6 +58,14 @@ Το LiveDisplay άλλαξε σε λειτουργία ημέρας. Το LiveDisplay άλλαξε σε λειτουργία νύχτας. Το LiveDisplay άλλαξε σε λειτουργία εξωτερικού χώρου. + ανάγνωση καιρού + Επιτρέπει σε μια εφαρμογή να διαβάσει περιεχόμενο από την υπηρεσία παροχής καιρού. + ενημέρωση παρόχου καιρού + Επιτρέπει σε μια εφαρμογή να ενημερώσει το περιεχόμενο της υπηρεσίας παροχής καιρού. + σύνδεση ως υπηρεσία παροχής καιρού + Επιτρέπει σε μια εφαρμογή να προσδιοριστεί ως μια υπηρεσία παροχής καιρού. + πρόσβαση στην υπηρεσία καιρού + Επιτρέπει σε μια εφαρμογή την πρόσβαση στην υπηρεσία καιρού στο σύστημα. Δεν πρέπει να απαιτείται από κανονικές εφαρμογές. διαχείριση ρυθμίσεων LiveDisplay Επιτρέπει σε μια εφαρμογή να τροποποιεί τις ρυθμίσεις οθόνης για προχωρημένους. διαχείριση απομακρυσμένων ρυθμίσεων diff --git a/lineage/res/res/values-en-rAU/strings.xml b/lineage/res/res/values-en-rAU/strings.xml index c3ca5bf1940a05046335b4965d0121d296c390af..00188277a5702215b0a2d5bbc217e369b3bd710f 100644 --- a/lineage/res/res/values-en-rAU/strings.xml +++ b/lineage/res/res/values-en-rAU/strings.xml @@ -58,6 +58,14 @@ LiveDisplay changed to day mode. LiveDisplay changed to night mode. LiveDisplay changed to outdoor mode. + read weather + Allows an app to read content from the weather provider. + update weather provider + Allows an app to update the content of the weather provider. + bind as a weather provider service + Allows an app to be identified as a weather provider service. + access weather service + Allows an app to access the weather service in the system. Should never be needed for normal apps. manage LiveDisplay settings Allows an app to configure advanced display settings. manage remote settings diff --git a/lineage/res/res/values-en-rCA/strings.xml b/lineage/res/res/values-en-rCA/strings.xml index c3ca5bf1940a05046335b4965d0121d296c390af..00188277a5702215b0a2d5bbc217e369b3bd710f 100644 --- a/lineage/res/res/values-en-rCA/strings.xml +++ b/lineage/res/res/values-en-rCA/strings.xml @@ -58,6 +58,14 @@ LiveDisplay changed to day mode. LiveDisplay changed to night mode. LiveDisplay changed to outdoor mode. + read weather + Allows an app to read content from the weather provider. + update weather provider + Allows an app to update the content of the weather provider. + bind as a weather provider service + Allows an app to be identified as a weather provider service. + access weather service + Allows an app to access the weather service in the system. Should never be needed for normal apps. manage LiveDisplay settings Allows an app to configure advanced display settings. manage remote settings diff --git a/lineage/res/res/values-en-rGB/strings.xml b/lineage/res/res/values-en-rGB/strings.xml index 22080b4c41fe0ccc04252d1d262cf2859736792b..45763ab21f0b276a640a29f3a5b8412111610720 100644 --- a/lineage/res/res/values-en-rGB/strings.xml +++ b/lineage/res/res/values-en-rGB/strings.xml @@ -58,6 +58,14 @@ LiveDisplay changed to day mode. LiveDisplay changed to night mode. LiveDisplay changed to outdoor mode. + read weather + Allows an app to read content from the weather provider. + update weather provider + Allows an app to update the content of the weather provider. + bind as a weather provider service + Allows an app to be identified as a weather provider service. + access weather service + Allows an app to access the weather service in the system. Should never be needed for normal apps. manage LiveDisplay settings Allows an app to configure advanced display settings. manage remote settings diff --git a/lineage/res/res/values-en-rIN/strings.xml b/lineage/res/res/values-en-rIN/strings.xml index 08b6f4cc697758d50fbe51901d2f0cf7d6b64d55..3f07a0bea0a77806dd08b968469b614f711d327e 100644 --- a/lineage/res/res/values-en-rIN/strings.xml +++ b/lineage/res/res/values-en-rIN/strings.xml @@ -58,6 +58,14 @@ LiveDisplay changed to day mode. LiveDisplay changed to night mode. LiveDisplay changed to outdoor mode. + read weather + Allows an app to read content from the weather provider. + update weather provider + Allows an app to update the content of the weather provider. + bind as a weather provider service + Allows an app to be identified as a weather provider service. + access weather service + Allows an app to access the weather service in the system. Should never be needed for normal apps. manage LiveDisplay settings Allows an app to configure advanced display settings. manage remote settings diff --git a/lineage/res/res/values-es-rUS/strings.xml b/lineage/res/res/values-es-rUS/strings.xml index 3c6401e1c8f734f9961da2fc451ea54b7a85aa67..5c9f7e22293c4f551d2fd74d577e26d9fecca3cd 100644 --- a/lineage/res/res/values-es-rUS/strings.xml +++ b/lineage/res/res/values-es-rUS/strings.xml @@ -58,6 +58,14 @@ LiveDisplay cambió a modo día. LiveDisplay cambió a modo noche. LiveDisplay cambió a modo exterior. + leer datos climáticos + Permite a una aplicación leer contenido desde el proveedor climático. + actualizar proveedor climático + Permite a una aplicación actualizar el contenido del proveedor climático. + establecer como servicio del proveedor climático + Permite que una aplicación sea identificada como un servicio del proveedor climático. + acceder al servicio meteorológico + Permite a una aplicación acceder al servicio meteorológico en el sistema. Nunca debería ser necesario para aplicaciones normales. gestionar los ajustes de LiveDisplay Permite que una aplicación modifique los ajustes avanzados de la pantalla. gestionar los ajustes remotos diff --git a/lineage/res/res/values-es/strings.xml b/lineage/res/res/values-es/strings.xml index 0aae3c5721cfbe5da1c4f5390490c5a91cc66c71..3a55843e413d045d564c4e88519062ad3d0f191d 100644 --- a/lineage/res/res/values-es/strings.xml +++ b/lineage/res/res/values-es/strings.xml @@ -58,6 +58,14 @@ LiveDisplay ha cambiado a modo diurno. LiveDisplay ha cambiado a modo nocturno. LiveDisplay cambiado a modo exterior. + leer el tiempo + Permite una aplicación leer contenido desde el proveedor de clima. + actualizar proveedor de clima + Permite una aplicación actualizar el contenido del proveedor de clima. + establecer como un servicio de proveedor de clima + Permite que una aplicación sea identificada como un servicio de proveedor de clima. + acceder al servicio de clima + Permite a una aplicación acceder al servicio de clima en el sistema. Nunca debe ser necesario para aplicaciones normales. administrar la configuración de LiveDisplay Permite que una aplicación modifique la configuración de pantalla avanzada. administrar la configuración remota diff --git a/lineage/res/res/values-et/strings.xml b/lineage/res/res/values-et/strings.xml index 49013c7a8f5470b0f1aef7ebeeba04ba4d8f3b2d..1cbaf29b1cdf1fb31893adb4a2db25060d2e4a80 100644 --- a/lineage/res/res/values-et/strings.xml +++ b/lineage/res/res/values-et/strings.xml @@ -58,6 +58,14 @@ LiveDisplay muudetud päevarežiimi. LiveDisplay muudetud öörežiimi. LiveDisplay muudetud õuerežiimi. + ilma lugemine + Lubab rakendusel lugeda ilmateenuse pakkuja sisu. + ilmateenuse pakkuja uuendamine + Lubab rakendusel uuendada ilmateenuse pakkuja sisu. + sidumine ilmateenuse pakkuja teenusena + Lubab rakendust end tuvastada ilmateenuse pakkuja teenusena. + ligipääs ilmateenuse pakkuja teenusesse + Annab rakendusele ligipääsu ilmateenusele. Tavarakenduste puhul ei peaks kunagi vaja minema. LiveDisplay seadete haldamine Lubab rakendusel muuta täpsemaid ekraaniseadeid. kaugtöölaua sätete haldamine diff --git a/lineage/res/res/values-eu/strings.xml b/lineage/res/res/values-eu/strings.xml index 2d6a27a55114dd3693c0ca906ee7dc517d0b49d6..9b8f213a6fbf96b3e84fc1aa74298d8a798f2c49 100644 --- a/lineage/res/res/values-eu/strings.xml +++ b/lineage/res/res/values-eu/strings.xml @@ -58,6 +58,14 @@ LiveDisplay eguna modura aldatu da. LiveDisplay gaua modura aldatu da. LiveDisplay kaleko modura aldatu da. + eguraldia irakurri + Eguraldi hornitzailetik edukia irakurtzea ahalbidetzen dio aplikazioari. + eguraldi hornitzailea eguneratu + Eguraldi hornitzailearen edukia eguneratzea ahalbidetzen dio aplikazioari. + eguraldi hornitzaile zerbitzu gisa lotu + Eguraldi hornitzaile zerbitzu gisa identifikatzea ahalbidetzen dio aplikazioari. + eguraldi zerbitzua atzitzea + Sistemako eguraldi zerbitzura sartzea ahalbidetzen dio aplikazioari. Aplikazio arruntek ez dute hau behar. LiveDisplay ezarpenak kudeatu Pantailaren ezarpen aurreratuak ezartzea ahalbidetzen dio aplikazioari. urruneko ezarpenak kudeatu diff --git a/lineage/res/res/values-fi/strings.xml b/lineage/res/res/values-fi/strings.xml index bbf554496a49fd1252bafe6f9b25b01435fbab48..4d58f7da97796252e8b53e767a547b003019298c 100644 --- a/lineage/res/res/values-fi/strings.xml +++ b/lineage/res/res/values-fi/strings.xml @@ -58,6 +58,15 @@ LiveDisplay asetettu päivätilaan. LiveDisplay asetettu yötilaan. LiveDisplay asetettu ulkoilmatilaan. + lue säätä + Sallii sovelluksen lukea sisältöä säätarjoajalta. + päivitä säätarjoajaa + Sallii sovelluksen päivittää säätarjoajan sisältöä. + aseta säätarjoajapalveluksi + Sallii sovellusta käytettävän säätarjoajapalveluna. + pääsy sääpalveluun + Sallii sovelluksen päästä järjestelmän sääpalveluun. Tavalliset sovellukset ei koskaan tarvitse tätä. + hallitse LiveDisplay-asetuksia Sallii sovelluksen määrittää kehittyneitä näytön asetuksia. hallitse etäkäytön asetuksia diff --git a/lineage/res/res/values-fr/strings.xml b/lineage/res/res/values-fr/strings.xml index 1161c3dcd9d0de9e62069516b8e75e4bee3e4eee..4395233fe2aaafa78d6e869317976ce78c8a86de 100644 --- a/lineage/res/res/values-fr/strings.xml +++ b/lineage/res/res/values-fr/strings.xml @@ -58,6 +58,14 @@ LiveDisplay changé en mode jour. LiveDisplay changé en mode nuit. LiveDisplay changé en mode extérieur. + lire la météo + Autorise une application à lire le contenu du fournisseur météo. + mettre à jour le fournisseur de météo + Autorise une application à mettre à jour le contenu du fournisseur météo. + lier en tant que service de fournisseur de météo + Permet à une application d\'être identifiée en tant que fournisseur de météo. + accéder au service météo + Autorise une application à accéder au service météorologique dans le système. Cette fonctionnalité ne devrait jamais être nécessaire pour les applications standards. gérer les paramètres de LiveDisplay Permet à une application de configurer les paramètres avancés de l\'affichage. gérer les paramètres distants diff --git a/lineage/res/res/values-fy-rNL/strings.xml b/lineage/res/res/values-fy-rNL/strings.xml index 6d07b54f1a7b059bc0432984953519b9a3a954df..c6d71786dd5c9f727937db231cc7d3c41c0213f7 100644 --- a/lineage/res/res/values-fy-rNL/strings.xml +++ b/lineage/res/res/values-fy-rNL/strings.xml @@ -58,6 +58,14 @@ LiveDisplay wizige nei deistân. LiveDisplay wizige nei nachtstân. LiveDisplay wizige nei bûtenstân. + it waar lêze + Hjirmei kin de app de ynhâld fan de waaroanbieder lêze. + Waaroanbieder fernije + Hjirmei kin de app de ynhâld fan de waaroanbieder fernije. + keppelje as waaroanbiedertsjinst + Hjirmei kin de app harren identifisearje as waaroanbiedertsjinst. + tagong ta waartsjinst + Hjirmei kin de app tagong krije ta de waartsjinst. Nea fereaske foar normale apps. LiveDisplay-ynstellingen beheare Hjirmei kin de app avansearre byldskermynstellingen wizigje. ynstellingen foar behear op ôfstân diff --git a/lineage/res/res/values-gd/strings.xml b/lineage/res/res/values-gd/strings.xml index f3610a6706b453a7c1bbcd698a0ffefb992cf974..8533920bb4970720849132f4423769fe62b49d59 100644 --- a/lineage/res/res/values-gd/strings.xml +++ b/lineage/res/res/values-gd/strings.xml @@ -58,6 +58,14 @@ Chaidh LiveDisplay atharrachadh gu modh an latha. Chaidh LiveDisplay atharrachadh gu modh na h-oidhche. Chaidh LiveDisplay atharrachadh gu modh an taoibh a-muigh. + an aimsir a leughadh + Leigidh seo le aplacaid susbaint o sholaraiche na h-aimsire a leughadh. + solaraiche aimsire ùrachadh + Leigidh seo le aplacaid susbaint aig solaraiche na h-aimsire ùrachadh. + aimsir a sholar ’na seirbheis + Leigidh seo le aplacaid gun dèid a h-aithneachadh mar seirbheis solaraiche aimsire. + seirbheis aimsire inntrigeadh + Leigidh seo le aplacaid seirbheis na h-aimsire inntrigeadh san t-siostam. Chan eil seo gu feum do dh’aplacaidean àbhaisteach idir. roghainnean LiveDisplay a stiùireadh Leigidh seo le aplacaid roghainnean adhartach an taisbeanaidh a rèiteachadh. roghainnean cèine a stiùireadh diff --git a/lineage/res/res/values-gl/strings.xml b/lineage/res/res/values-gl/strings.xml index eaf402e6742026bd0cd0895098a5cd60f5528d03..bdfe241122b39e16b453542fd626251e3f4666be 100644 --- a/lineage/res/res/values-gl/strings.xml +++ b/lineage/res/res/values-gl/strings.xml @@ -58,6 +58,14 @@ LiveDisplay mudado ao modo día. LiveDisplay mudado ao modo noite. LiveDisplay mudado ao modo exteriores. + ler o tempo + Permite que unha aplicación ler o contido desde o fornecedor de clima. + actualizar o fornecedor de clima + Permite que unha aplicación actualice o contido do fornecedor do clima. + establecer como un servizo fornecedor de clima + Permite que unha aplicación poida ser identificada como un servizo fornecedor de clima. + acceder ao servizo de clima + Permite que unha aplicación acceder ao servizo de clima do sistema. Nunca debería ser necesario para aplicacións normais. xestionar os axustes de LiveDisplay Permite que unha aplicación poida configurar os axustes de pantalla avanzados. xestionar axustes remotos diff --git a/lineage/res/res/values-hr/strings.xml b/lineage/res/res/values-hr/strings.xml index 214cb993a349d80539477b172e5b54d8af1e0e8f..ba5bf50827bf855cd91f97a7f4033a2f1b1e8746 100644 --- a/lineage/res/res/values-hr/strings.xml +++ b/lineage/res/res/values-hr/strings.xml @@ -58,6 +58,14 @@ LiveDisplay promijenjen u dnevni način. LiveDisplay promijenjen u noćni način. LiveDisplay promijenjen u vanjski način. + čitanje vremenske prognoze + Dopušta aplikaciji čitati sadržaj vremenske prognoze. + ažuriranje vremenske prognoze + Dopušta aplikaciji ažurirati sadržaj vremenske prognoze. + povezan kao dobavljač vremenske prognoze + Dopušta aplikaciji da se identificira kao dobavljač vremenske prognoze. + pristup usluzi vremenske prognoze + Omogućuje aplikaciji pristupiti uslugama vremenske prognoze u sustavu. Nije potrebno normalnim aplikacijama. upravljanje postavkama LiveDisplay-a Omogućuje aplikaciji konfiguriranje postavki naprednog prikaza. upravljanje udaljenim postavkama diff --git a/lineage/res/res/values-hu/strings.xml b/lineage/res/res/values-hu/strings.xml index 9dd53b00fdfaa66c6b38b56c2fab8ae98f559007..712f18d91a3383ed869ff952fe3e65aa31037fc2 100644 --- a/lineage/res/res/values-hu/strings.xml +++ b/lineage/res/res/values-hu/strings.xml @@ -58,6 +58,14 @@ LiveDisplay nappali módra változtatva. LiveDisplay éjszakai módra változtatva. LiveDisplay szabadtéri módra változtatva. + időjárás olvasása + Lehetővé teszi az alkalmazás számára az időjárás szolgáltatói tartalom olvasását. + időjárás szolgáltató frissítése + Lehetővé teszi az alkalmazás számár, hogy frissítse az időjárás szolgáltató tartalmát. + időjárás szolgáltatóként kötés + Lehetővé teszi az alkalmazás számára, hogy mint időjárás szolgáltató kerüljön azonosításra. + hozzáférés időjárás szolgáltatáshoz + Lehetővé teszi az alkalmazás számára a rendszer időjárás szolgáltatásának elérését. Általános alkalmazásoknak soha nem kell ilyen engedély. LiveDisplay beállítások kezelése Lehetővé teszi az alkalmazás számára a speciális megjelenítési beállítások konfigurálását. távoli beállítások kezelése diff --git a/lineage/res/res/values-in/strings.xml b/lineage/res/res/values-in/strings.xml index 63c3aff001fc39840fde5b92caf5f83d034a9e8f..e693592e93a64d20f4f8d8514b3c55bb8a5f9e88 100644 --- a/lineage/res/res/values-in/strings.xml +++ b/lineage/res/res/values-in/strings.xml @@ -58,6 +58,14 @@ LiveDisplay diubah menjadi modus siang. LiveDisplay diubah menjadi modus malam. LiveDisplay diubah menjadi modus luar ruangan. + baca cuaca + Izinkan aplikasi untuk membaca konten dari penyedia cuaca. + perbarui penyedia cuaca + Izinkan aplikasi untuk memperbarui konten dari penyedia cuaca. + ikat sebagai layanan penyedia cuaca + Izinkan aplikasi untuk diidentifikasi sebagai layanan penyedia cuaca. + akses layanan cuaca + Izinkan aplikasi untuk mengakses layanan cuaca dalam sistem. Tidak dibutuhkan untuk aplikasi biasa. kelola pengaturan LiveDisplay Izinkan aplikasi untuk mengonfigurasi pengaturan tampilan lanjutan. mengelola pengaturan jarak jauh diff --git a/lineage/res/res/values-it/strings.xml b/lineage/res/res/values-it/strings.xml index 2a6d5aafb1e8f0ed6496d1ed33fef06367098857..ba2e3f339cd3e9873ca83559b386d5da0cf40220 100644 --- a/lineage/res/res/values-it/strings.xml +++ b/lineage/res/res/values-it/strings.xml @@ -58,6 +58,14 @@ LiveDisplay cambiato in modalità giorno. LiveDisplay cambiato in modalità notte. LiveDisplay cambiato in modalità all\'aperto. + leggi meteo + Consente all\'applicazione di leggere contenuti dal provider meteo. + aggiorna provider meteo + Consente all\'applicazione di aggiornare contenuti nel provider meteo. + identificazione come provider meteo + Consente all\'applicazione di identificarsi come provider meteo. + accesso servizio meteo + Consente all\'applicazione di accedere al servizio meteo nel sistema. Non dovrebbe mai essere necessario per le app normali. gestisci le impostazioni LiveDisplay Consenti ad un\'app di configurare impostazioni avanzate del display. gestisci impostazioni remote diff --git a/lineage/res/res/values-iw/strings.xml b/lineage/res/res/values-iw/strings.xml index 0c55c83c7e93a4bcf41a6f62bca9992868999076..55701a04aeb12f33078223364c9386f094e47eed 100644 --- a/lineage/res/res/values-iw/strings.xml +++ b/lineage/res/res/values-iw/strings.xml @@ -58,6 +58,14 @@ LiveDisplay שונה למצב יום. LiveDisplay שונה למצב לילה. LiveDisplay שונה למצב חוץ. + קרא את מזג האוויר + מאפשר ליישום לקרוא תוכן של ספק מידע על מזג האוויר. + עדכן את ספק מזג האוויר + מאפשר ליישום לעדכן את תוכן ספק מידע מזג האוויר. + התקשרות לשירות ספק מזג האוויר + מאפשר ליישום להזדהות כספק מידע מזג אוויר. + גישה לשירות מידע מזג אוויר + מאפשר ליישום לגשת לשירות מזג האוויר של המערכת. לא אמור להידרש ליישומים רגילים לעולם. נהל הגדרות livedisplay מאפשר ליישום לקבוע הגדרות תצוגה מתקדמות. נהל הגדרות מרחוק diff --git a/lineage/res/res/values-ja/strings.xml b/lineage/res/res/values-ja/strings.xml index e1a604efff15d45a9207075043e4a1e14f1c1b31..582dcf05af6ee7aabac670d5d0fcd9f6be79c052 100644 --- a/lineage/res/res/values-ja/strings.xml +++ b/lineage/res/res/values-ja/strings.xml @@ -58,6 +58,14 @@ LiveDisplayが昼モードに変更されました。 LiveDisplayが夜モードに変更されました。 LiveDisplayが屋外モードに変更されました。 + 天気の読み取り + 天気プロバイダからのコンテンツの読み取りをアプリに許可します。 + 天気プロバイダの更新 + 天気プロバイダのコンテンツの更新をアプリに許可します。 + 天気プロバイダサービスとしてのバインド + 天気プロバイダサービスとして識別されることをアプリに許可します。 + 天気サービスへのアクセス + システムの天気サービスへのアクセスをアプリに許可します。通常のアプリで必要とされることはありません。 LiveDisplayの設定の管理 ディスプレイの詳細設定をアプリに許可します。 リモートの設定の管理 diff --git a/lineage/res/res/values-kn/strings.xml b/lineage/res/res/values-kn/strings.xml index 4c9e9c98d520891d6d06ddd76d5491e6d9c9a2a0..dddf0ae63602d03a7674313ef3e3db91da9086c4 100644 --- a/lineage/res/res/values-kn/strings.xml +++ b/lineage/res/res/values-kn/strings.xml @@ -58,6 +58,14 @@ LiveDisplay ಹಗಲು ರೀತಿಗೆ ಬದಲಾಗಿದೆ. LiveDisplay ರಾತ್ರಿ ರೀತಿಗೆ ಬದಲಾಗಿದೆ. LiveDisplay ಹೊರಾಂಗಣ ರೀತಿಗೆ ಬದಲಾಗಿದೆ. + ಹವಾಮಾನ ಓದು + ಹವಾಮಾನ ಪರಿಚಾರಕರ ಘಟಕಗಳನ್ನು ಓದಲು ಆಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. + ಹವಾಮಾನ ಪರಿಚಾರಕವನ್ನು ನವೀಕರಿಸು + ಹವಾಮಾನ ಪರಿಚಾರಕದ ಘಟಕಗಳನ್ನು ನವೀಕರಿಸಲು ಆಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. + ಹವಾಮಾನ ಪರಿಚಾರಕ ಸೇವೆಯಾಗಿ ಸಂಯೋಜಿಸು + ಹವಾಮಾನ ಪರಿಚಾರಕ ಎಂದು ಗುರುತಿಸಿಕೊಳ್ಳಲು ಆಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. + ಹವಾಮಾನ ಸೇವೆ ಪ್ರವೇಶ + ವ್ಯವಸ್ಥೆಯಲ್ಲಿನ ಹವಾಮಾನ ಸೇವೆಯನ್ನು ಬಳಸಲು ಆಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಸಾಮಾನ್ಯ ಆಪ್ಗಳಿಗೆ ಇದರ ಅಗತ್ಯವೇ ಇರುವುದಿಲ್ಲ. LiveDisplay ಅಳವಡಿಕೆಗಳನ್ನು ನಿರ್ವಹಿಸು ಸುಧಾರಿತ ಪ್ರದರ್ಶನ ಅಳವಡಿಕೆಗಳನ್ನು ಸಂರಚಿಸಲು ಆಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಗೆಂಟಂಕೆಯ ಅಳವಡಿಕೆಗಳನ್ನು ನಿರ್ವಹಿಸು diff --git a/lineage/res/res/values-ko/strings.xml b/lineage/res/res/values-ko/strings.xml index 30375674ab3750c4b97a2b2a8b2705d6d98c5832..72ff7b9293dce166c6b32d32a990b28ba14c41ec 100644 --- a/lineage/res/res/values-ko/strings.xml +++ b/lineage/res/res/values-ko/strings.xml @@ -58,6 +58,14 @@ 라이브 디스플레이가 낮 모드로 바뀜. 라이브 디스플레이가 밤 모드로 바뀜. 라이브 디스플레이가 야외 모드로 바뀜. + 날씨 확인 + 앱이 날씨 제공자로부터 날씨를 확인할 수 있도록 허용합니다. + 날씨 제공자 업데이트 + 앱이 날씨 제공자를 업데이트할 수 있도록 허용합니다. + 날씨 제공자 서비스로 연결 + 앱이 날씨 제공자 서비스로 인식되는 것을 허용합니다. + 날씨 서비스에 접근 + 앱이 시스템의 날씨 서비스에 접근할 수 있도록 허용합니다. 일반 앱에서는 필요 없는 권한입니다. LiveDisplay 설정 관리 앱이 고급 디스플레이 설정을 변경할 수 있도록 허용합니다. 원격 설정 관리 diff --git a/lineage/res/res/values-nb/strings.xml b/lineage/res/res/values-nb/strings.xml index f1fe511f175b2b99b5c581e621e4273a6d2fd418..51bbaf1a604913c770fe6fa55cdbbed24c101f27 100644 --- a/lineage/res/res/values-nb/strings.xml +++ b/lineage/res/res/values-nb/strings.xml @@ -52,6 +52,14 @@ LiveDisplay endret til dagsmodus. LiveDisplay endret til nattmodus. LiveDisplay endret til utendørs modus. + lese vær + Tillater en app å lese av innholdet fra værleverandøren. + oppdatere værleverandør + Tillater en app å oppdatere innholdet til vær leverandøren. + bind som en værleverandør tjeneste + Tillater en app å bli identifisert som en værleverandør tjeneste. + få tilgang til værtjeneste + Tillater en app å få tilgang til værtjenesten i systemet. Skal aldri være nødvendig for normale apper. behandle LiveDisplay innstillinger Tillater en app å konfigurere avanserte skjerminnstillinger. administrer fjernkontroll innstillinger diff --git a/lineage/res/res/values-nl/strings.xml b/lineage/res/res/values-nl/strings.xml index 9a9921da0cc7d2fb595656d5887091b60ef74102..5f630735e6201f5e99c47c7276797076567fa32f 100644 --- a/lineage/res/res/values-nl/strings.xml +++ b/lineage/res/res/values-nl/strings.xml @@ -58,6 +58,14 @@ LiveDisplay gewijzigd naar dagstand. LiveDisplay gewijzigd naar nachtstand. LiveDisplay gewijzigd naar buitenstand. + weer lezen + Hiermee kan de app de inhoud van de weeraanbieder lezen. + weeraanbieder vernieuwen + Hiermee kan de app de inhoud van de weeraanbieder vernieuwen. + koppelen als weeraanbiederservice + Hiermee kan de app zich identificeren als weeraanbiederservice. + toegang tot weerservice + Hiermee kan de app toegang krijgen tot de weerservice van het systeem. Nooit vereist voor normale apps. LiveDisplay-instellingen beheren Hiermee kan de app geavanceerde beeldscherminstellingen wijzigen. instellingen voor beheer op afstand diff --git a/lineage/res/res/values-pl/strings.xml b/lineage/res/res/values-pl/strings.xml index af5175050cb75a4e7d88a763799b98e38bc9b47f..ee5c828147917f0a6fb9ae48849a16071a602bde 100644 --- a/lineage/res/res/values-pl/strings.xml +++ b/lineage/res/res/values-pl/strings.xml @@ -58,6 +58,14 @@ LiveDisplay zmieniony na tryb dzienny. LiveDisplay zmieniony na tryb nocny. LiveDisplay zmieniony na tryb zewnętrzny. + odczyt pogody + Umożliwia aplikacji odczyt danych od dostawcy pogody. + aktualizacja dostawcy pogody + Umożliwia aplikacji na aktualizację danych dostawcy pogody. + powiąż jako usługa dostawcy pogody + Zezwala aplikacji na dostarczanie usługi prognozy pogody. + dostęp do usługi prognozy pogody + Zezwala aplikacji na dostęp do usługi prognozy pogody w systemie. Nie powinno być wymagane przez zwykłe aplikacje. zarządzanie ustawieniami LiveDisplay Pozwala aplikacji na konfigurację zaawansowanych ustawień wyświetlacza. zarządza zdalnymi ustawieniami diff --git a/lineage/res/res/values-pt-rBR/strings.xml b/lineage/res/res/values-pt-rBR/strings.xml index 473da23e3510089d11f3c288cfad5dfdc15cd8f8..faf55f4f07b9ee89c015979a90c30791f05c913f 100644 --- a/lineage/res/res/values-pt-rBR/strings.xml +++ b/lineage/res/res/values-pt-rBR/strings.xml @@ -58,6 +58,14 @@ LiveDisplay alterado para modo diurno. LiveDisplay alterado para modo noturno. LiveDisplay alterado para modo ao ar livre. + ler previsão do tempo + Permite que um aplicativo leia o conteúdo do provedor da previsão do tempo. + atualizar provedor de provisão do tempo + Permite que um aplicativo atualize o conteúdo do provedor da previsão do tempo. + vincular-se como um provedor de previsão do tempo + Permite que um aplicativo seja identificado como um provedor de previsão de tempo. + acesso ao serviço de previsão do tempo + Permite que um aplicativo acesse a previsão do tempo no sistema. Nunca deverá ser necessário para aplicativos normais. gerenciar configurações do LiveDisplay Permite que um aplicativo configure as definições de visualização avançada. Administrar configurações remotas diff --git a/lineage/res/res/values-pt-rPT/strings.xml b/lineage/res/res/values-pt-rPT/strings.xml index 57b9172b177ca335fc96d9209ed9f34502f609c6..cfee9c8f04e83fb6996f7bb21a07e89aa7ddf19e 100644 --- a/lineage/res/res/values-pt-rPT/strings.xml +++ b/lineage/res/res/values-pt-rPT/strings.xml @@ -58,6 +58,14 @@ LiveDisplay alterado para modo dia. LiveDisplay alterado para modo noite. LiveDisplay alterado para modo exterior. + ler a meteorologia + Permite que uma aplicação leia conteúdo através do fornecedor de meteorologia. + atualizar o fornecedor de meteorologia + Permite que uma aplicação atualize o conteúdo do fornecedor de meteorologia. + vincular-se como um serviço de fornecedor de meteorologia + Permite que uma aplicação seja identificada como um serviço de fornecedor de meteorologia. + aceder ao serviço de meteorologia + Permite que uma aplicação aceda ao serviço de meteorologia do sistema. Nunca deverá ser necessário para aplicações normais. gerir as definições do LiveDisplay Permite que uma aplicação configure definições avançadas do ecrã. gerir definições remotas diff --git a/lineage/res/res/values-ro/strings.xml b/lineage/res/res/values-ro/strings.xml index f1c7dcc79fa586e0843d4753dfb213e8c67db8b2..b4054dc5bae2d6686db714ea4e0f553f576b2840 100644 --- a/lineage/res/res/values-ro/strings.xml +++ b/lineage/res/res/values-ro/strings.xml @@ -58,6 +58,14 @@ LiveDisplay s-a schimbat la modul zi. LiveDisplay s-a schimbat la modul noapte. LiveDisplay s-a schimbat la modul afară. + citește vremea + Permite unei aplicații să citească conținutul furnizorului de vreme. + actualizare furnizor meteo + Permite unei aplicații să actualizeze conținutul furnizorului de vreme. + fixează ca serviciu furnizor de vreme + Permite unei aplicații să fie identificată ca un serviciu furnizor de vreme. + accesează serviciul pentru vreme + Permite unei aplicații să acceseze serviciul pentru vreme în sistem. Aplicațiile normale nu ar trebui să aibă nevoie de aceasta. gestionează setările LiveDisplay Permite unei aplicații să configureze setările de afișare avansate. gestionare setări la distanţă diff --git a/lineage/res/res/values-ru/strings.xml b/lineage/res/res/values-ru/strings.xml index 78acf54d02798578dfc7f8c9cd6d990c8c7ae1e9..5f41428c06f2cc3706a39a35a96931af18806227 100644 --- a/lineage/res/res/values-ru/strings.xml +++ b/lineage/res/res/values-ru/strings.xml @@ -58,6 +58,14 @@ LiveDisplay переключен в дневной режим. LiveDisplay переключен в ночной режим. LiveDisplay переключен в режим «на улице». + чтение данных о погоде + Приложение сможет считывать данные от поставщика погоды. + обновление поставщика погоды + Приложение сможет обновлять данные поставщика погоды. + привязать как службу поставщика погоды + Приложение сможет выступать в качестве службы поставщика погоды. + доступ к службе погоды + Приложение сможет получать доступ к службе погоды в системе. Это разрешение не используется обычными приложениями. управление настройками LiveDisplay Приложение сможет изменять расширенные настройки экрана. управление удаленными параметрами diff --git a/lineage/res/res/values-sk/strings.xml b/lineage/res/res/values-sk/strings.xml index 3ee6ea4fcbf4cc0f9e0806e8a4e6785d93df6046..961fcdc8c8093e7e75ad1e3ae69a044d0521577f 100644 --- a/lineage/res/res/values-sk/strings.xml +++ b/lineage/res/res/values-sk/strings.xml @@ -58,6 +58,14 @@ LiveDisplay sa zmenil na denný režim. LiveDisplay sa zmenil na nočný režim. LiveDisplay sa zmenil na režim vonku. + čítať počasie + Umožní aplikácii čítať obsah z poskytovateľa počasia. + aktualizovať poskytovateľa počasia + Umožní aplikácii aktualizovať obsah poskytovateľa počasia. + viazať sa ako služba poskytovateľa počasia + Umožní aplikácii identifikovať sa ako služba poskytovateľa počasia. + prístup k meteorologickej službe + Povoliť aplikácií prístup k meteorologickej službe v systéme. Bežné aplikácie by to nemali nikdy vyžadovať. spravovať nastavenia LiveDisplay Umožní aplikácii nastavovať pokročilé nastavenia obrazovky. správa vzdialených nastavení diff --git a/lineage/res/res/values-sl/strings.xml b/lineage/res/res/values-sl/strings.xml index 0b67fd2e6ee0f3b8a8dc1f4f29b976a2861bbaf5..0a8addeebc71b7ae1bb897188bdea04e1cfba0a0 100644 --- a/lineage/res/res/values-sl/strings.xml +++ b/lineage/res/res/values-sl/strings.xml @@ -58,6 +58,14 @@ LiveDisplay spremenjen v dnevni način. LiveDisplay spremenjen v nočni način. LiveDisplay spremenjen v način na prostem. + branje vremena + Dovoli aplikaciji branje vsebine iz ponudnika vremena. + posodabljanje ponudnika vremena + Dovoli aplikaciji posodobitev vsebine ponudnika vremena. + vezava kot storitev ponudnika vremena + Dovoli aplikaciji, da se identificira kot storitev ponudnika vremena. + dostop do storitve vremena + Dovoli aplikaciji dostop do storitve vremena v sistemu. Navadno ni potrebno za običajne aplikacije. upravljanje z nastavitvami LiveDisplay Dovoli aplikaciji nastavljanje naprednih nastavitev zaslona. upravljanje oddaljenih nastavitev diff --git a/lineage/res/res/values-sq/strings.xml b/lineage/res/res/values-sq/strings.xml index d0b0b7ca9be2a104305799bbd2da62e36d3532d0..a304062d525c105ee9701b772134a911915c8f23 100644 --- a/lineage/res/res/values-sq/strings.xml +++ b/lineage/res/res/values-sq/strings.xml @@ -58,6 +58,14 @@ LiveDisplay u kthye në profilin e ditës. LiveDisplay u kthye në profilin e natës. LiveDisplay u kthye në profilin jashtë shtëpisë. + lexo motin + Lejon një app të lexojë përmbajtjen nga parashkuesi i motit. + përditëso ofruesin e të dhënave të motit + Lejon një app të përditësojë përmbajtjen e një parashkuesi moti. + bashkoi si shërbim parashikimi moti + Lejon një app të identifikohet si shërbim për parashikuesin e motit. + akseso shërbimin e motit + Lejon një app të hyjë tek shërbimi i parashikimit të motit. App normale se kanë të nevojshme. menaxho parametrat e LiveDisplay Lejon një aplikacion të konfigurojë parametra të përparuar të ekranit. menaxho parametrat në distancë diff --git a/lineage/res/res/values-sr/strings.xml b/lineage/res/res/values-sr/strings.xml index cbc73394d2dead5fdb7dad0f8630157d31565519..ea05656db9b197a6184c2461bf4d6cf0efe18256 100644 --- a/lineage/res/res/values-sr/strings.xml +++ b/lineage/res/res/values-sr/strings.xml @@ -58,6 +58,14 @@ LiveDisplay је пребачен у дневни режим. LiveDisplay је пребачен у ноћни режим. LiveDisplay је пребачен у режим „на отвореном“. + читање временске прогнозе + Апликација може да чита садржај временске прогнозе. + ажурирање временске прогнозе + Апликација може да ажурира садржај временске прогнозе. + повезан као добављач временске прогнозе + Апликација може да буде добављач временске прогнозе. + приступ услузи временске прогнозе + Апликација може да приступа системској услузи временске прогнозе. Ова дозвола није потребна нормалним апликацијама. управљање подешавањима LiveDisplay-а Апликација може да мења подешавања напредног приказа. управљање подешавањима даљинског приступа diff --git a/lineage/res/res/values-sv/strings.xml b/lineage/res/res/values-sv/strings.xml index 4b877660b381f0220e605c0ba56e4a4ade0054ff..513ec2ffe01be2d760bae8a76508426bb51e56cf 100644 --- a/lineage/res/res/values-sv/strings.xml +++ b/lineage/res/res/values-sv/strings.xml @@ -47,6 +47,8 @@ LiveDisplay: automatiskt läge. LiveDisplay: dagläge. LiveDisplay: nattläge. + läsa väderinformation + uppdatera väderleverantör hantera fjärrinställningar Kompileringsdatum LineageOS-uppdateringar diff --git a/lineage/res/res/values-th/strings.xml b/lineage/res/res/values-th/strings.xml index aa126f9df2aae5879fa7613d0fa2a497231b0637..8b7f9878ad0a24b1d8607882449c5ce1b603b09f 100644 --- a/lineage/res/res/values-th/strings.xml +++ b/lineage/res/res/values-th/strings.xml @@ -58,6 +58,14 @@ LiveDisplay เปลี่ยนเป็นรูปแบบกลางวัน LiveDisplay เปลี่ยนเป็นรูปแบบกลางคืน LiveDisplay เปลี่ยนเป็นรูปแบบกลางแจ้ง + อ่านสภาพอากาศ + อนุญาตให้แอปอ่านเนื้อหาจากบริการรายงานสภาพอากาศ + ปรับปรุงบริการรายงานสภาพอากาศ + อนุญาตให้แอปสามารถอัพเดทเนื้อหาของบริการรายงานสภาพอากาศ + ผูกมัดเป็นบริการรายงานสภาพอากาศ + อนุญาตให้แอปยืนยันตัวตนเป็นบริการรายงานสภาพอากาศ + เข้าถึงบริการรายงานสภาพอากาศ + อนุญาตให้แอปสามารถจัดการบริการรายงานสภาพอากาศในระบบ ปกติแล้วไม่ต้องการใช้งานในแอปทั่วไป จัดการตั้งค่า LiveDisplay อนุญาตให้แอปตั้งค่าการแสดงผลขั้นสูง จัดการการตั้งค่าระยะไกล diff --git a/lineage/res/res/values-tr/strings.xml b/lineage/res/res/values-tr/strings.xml index ff2f4a54695fec00af0d6e7e1c0d39ff6b8ff298..04aea796a92511519ba5f9450438d74d842af315 100644 --- a/lineage/res/res/values-tr/strings.xml +++ b/lineage/res/res/values-tr/strings.xml @@ -58,6 +58,14 @@ LiveDisplay gündüz moduna geçti. LiveDisplay gece moduna geçti. LiveDisplay açık hava moduna geçti. + hava durumunu oku + Bir uygulamanın hava durumu sağlayıcısından içerik okumasına izin verir. + hava durumu sağlayıcısını güncelleme + Bir uygulamanın hava durumu sağlayıcısının içeriğini güncellemesine izin verir. + hava durumu sağlayıcı hizmeti olarak bağla + Bir uygulamanın hava durumu sağlayıcısı olarak tanımlanmasına izin verir. + hava durumu servisine erişme + Bir uygulamanın sistemdeki hava durumu hizmetinin erişimine izin verir. Normal uygulamalar için gerekli değildir. LiveDisplay ayarlarını yönet Uygulamalara gelişmiş ekran ayarlarını düzenleme izni verir. uzak bağlantı ayarları diff --git a/lineage/res/res/values-uk/strings.xml b/lineage/res/res/values-uk/strings.xml index 8ac6d3bb225dcb7cd67560af5a843198c5d4a055..90d67d6f482ff9e519e4752f1f0aa5cf1948108a 100644 --- a/lineage/res/res/values-uk/strings.xml +++ b/lineage/res/res/values-uk/strings.xml @@ -53,6 +53,14 @@ LiveDisplay змінено до денного режиму. LiveDisplay змінено до нічного режиму. LiveDisplay змінено до режиму на вулиці. + читати погоду + Дозволити додатку читати дані від провайдера погоди. + оновлення провайдера погоди + Дозволяє додатку оновлювати дані провайдера погоди. + прив\'язати як провайдера погоди + Дозволяє додатку бути службою провайдера погоди. + доступ до служби погоди + Дозволити додатку доступ до служби погоди в системі. Це ніколи не потрібно для звичайних додатків. керування налаштуваннями LiveDisplay Дозволяє додатку керувати розширеними налаштуваннями дисплея. керування віддаленими параметрами diff --git a/lineage/res/res/values-vi/strings.xml b/lineage/res/res/values-vi/strings.xml index 40a4c968fffa143a25d16c839a9e938963907382..6597a8fe6b18f2fc8515abfaf86a229b7a8d7d5b 100644 --- a/lineage/res/res/values-vi/strings.xml +++ b/lineage/res/res/values-vi/strings.xml @@ -58,6 +58,14 @@ LiveDisplay đã đổi sang chế độ ban ngày. LiveDisplay đã đổi sang chế độ ban đêm. LiveDisplay đã đổi sang chế độ ngoài trời. + đọc thời tiết + Cho phép ứng dụng đọc nội dung từ nhà cung cấp thời tiết. + cập nhật nhà cung cấp thời tiết + Cho phép ứng dụng cập nhật nội dung của nhà cung cấp thời tiết. + ràng buộc như là dịch vụ của nhà cung cấp thời tiết + Cho phép ứng dụng được xác định như là dịch vụ của nhà cung cấp thời tiết. + truy cập dịch vụ thời tiết + Cho phép ứng dụng truy cập dịch vụ thời tiết trong hệ thống. Ứng dụng bình thường không bao giờ cần sự cho phép này. quản lý cài đặt LiveDisplay Cho phép ứng dụng thiết lập cấu hình cài đặt hiển thị nâng cao. quản lý cài đặt từ xa diff --git a/lineage/res/res/values-zh-rCN/strings.xml b/lineage/res/res/values-zh-rCN/strings.xml index 6dcf8b65d8059814744d1478c2977a75cb802a9d..77de19d0132ca67495cf9676eb44c533cfcbbe8d 100644 --- a/lineage/res/res/values-zh-rCN/strings.xml +++ b/lineage/res/res/values-zh-rCN/strings.xml @@ -58,6 +58,14 @@ LiveDisplay 已修改为白天模式。 LiveDisplay 已修改为夜晚模式。 LiveDisplay 已修改为户外模式。 + 读取天气 + 允许应用读取来自天气提供商的内容。 + 更新天气提供商 + 允许应用更新来自天气提供商的内容。 + 绑定为天气提供商服务 + 允许应用被认定为天气服务商服务。 + 访问天气服务 + 允许应用在系统中访问天气服务。正常应用不应需要此权限。 管理 LiveDisplay 设置 允许应用配置高级显示设置。 管理远程设置 diff --git a/lineage/res/res/values-zh-rTW/strings.xml b/lineage/res/res/values-zh-rTW/strings.xml index c84e5a18cdac9c8aff06587603983af7ada55f32..2390a2e03c038844443dc1997c6947497f08849f 100644 --- a/lineage/res/res/values-zh-rTW/strings.xml +++ b/lineage/res/res/values-zh-rTW/strings.xml @@ -58,6 +58,14 @@ LiveDisplay 已變更為日間模式 LiveDisplay 已變更為夜間模式 LiveDisplay 已變更為戶外模式 + 讀取天氣資料 + 允許應用程式從天氣資訊供應商讀取資料內容 + 更新天氣 + 允許應用程式更新天氣資訊提供者的內容。 + 綁定為天氣資訊供應商服務 + 允許應用程式辨識為天氣供應商服務。 + 存取氣象服務 + 允許應用程式存取氣象服務 。一般應用程式不需使用。 管理 LiveDisplay 設定 允許應用程式設定進階顯示配置 管理遠端設定 diff --git a/lineage/res/res/values/config.xml b/lineage/res/res/values/config.xml index fbe9a7d7f73bbf77db992991b6a221483c3a0d56..d64dd557d6c49ac0d4c33e5476f2119d8d88b6b0 100644 --- a/lineage/res/res/values/config.xml +++ b/lineage/res/res/values/config.xml @@ -102,6 +102,7 @@ org.lineageos.platform.internal.ProfileManagerService org.lineageos.platform.internal.LineageHardwareService + org.lineageos.platform.internal.LineageWeatherManagerService org.lineageos.platform.internal.display.LiveDisplayService org.lineageos.platform.internal.TrustInterfaceService org.lineageos.platform.internal.LineageSettingsService diff --git a/lineage/res/res/values/strings.xml b/lineage/res/res/values/strings.xml index 6b4e067ab0840c06b0a14ab616074cfd1d5dca64..2d85e00bf5b3c7de0ebbc93a7efd5e54f0543bba 100644 --- a/lineage/res/res/values/strings.xml +++ b/lineage/res/res/values/strings.xml @@ -79,6 +79,16 @@ LiveDisplay changed to night mode. LiveDisplay changed to outdoor mode. + + read weather + Allows an app to read content from the weather provider. + update weather provider + Allows an app to update the content of the weather provider. + bind as a weather provider service + Allows an app to be identified as a weather provider service. + access weather service + Allows an app to access the weather service in the system. Should never be needed for normal apps. + manage LiveDisplay settings Allows an app to configure advanced display settings. diff --git a/packages/LineageSettingsProvider/res/values/defaults.xml b/packages/LineageSettingsProvider/res/values/defaults.xml index 9b52ce1a3911765fe0266180a7fcdaa3580f23b1..25d65c0613ab6690261b09168939ee9adcea845d 100644 --- a/packages/LineageSettingsProvider/res/values/defaults.xml +++ b/packages/LineageSettingsProvider/res/values/defaults.xml @@ -71,6 +71,9 @@ --> 0 + + 2 +