1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-12-26 02:25:50 +01:00

Merge remote-tracking branch 'origin/master' into appmanager-fragments

This commit is contained in:
Daniele Gobbetti 2016-06-18 19:00:23 +02:00
commit 7263307409
7 changed files with 337 additions and 47 deletions

View File

@ -261,6 +261,7 @@
</receiver> </receiver>
<activity <activity
android:launchMode="singleInstance"
android:name=".activities.ExternalPebbleJSActivity" android:name=".activities.ExternalPebbleJSActivity"
android:label="@string/app_configure" android:label="@string/app_configure"
android:parentActivityName=".activities.appmanager.AppManagerActivity"> android:parentActivityName=".activities.appmanager.AppManagerActivity">

View File

@ -1,6 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8"/>
<meta name='viewport' content='initial-scale=1.0, maximum-scale=1.0'> <meta name='viewport' content='initial-scale=1.0, maximum-scale=1.0'>
<script type="text/javascript" src="js/Uri.js"> <script type="text/javascript" src="js/Uri.js">
</script> </script>
@ -52,14 +52,16 @@
<!-- TODO --> <!-- TODO -->
</style> </style>
</head> </head>
<body onload="" style="width: 100%;"> <body>
<div id="step1"> <div id="step1" class="step">
<h2>Url of the configuration:</h2> <h2>Url of the configuration:</h2>
<div id="config_url"></div> <div id="config_url"></div>
<!--<button class="btn" name="show config" value="show config" onclick="Pebble.showConfiguration()" >Show config / URL</button>--> <!--<button class="btn" name="show config" value="show config" onclick="Pebble.showConfiguration()" >Show config / URL</button>-->
<button class="btn" name="open config" value="open config" onclick="Pebble.actuallyOpenURL()" >Open configuration website</button> <button class="btn" name="open config" value="open config" onclick="Pebble.actuallyOpenURL()">
Open configuration website
</button>
</div> </div>
<div id="step1compat"> <div id="step1compat" class="step">
<p>In case of "network error" after saving settings in the wathchapp, copy the "network error" <p>In case of "network error" after saving settings in the wathchapp, copy the "network error"
URL and paste it here:</p> URL and paste it here:</p>
<textarea id="pastereturn"></textarea><br/> <textarea id="pastereturn"></textarea><br/>
@ -67,9 +69,11 @@
configuration configuration
</button> </button>
</div> </div>
<div id="step2"> <div id="step2" class="step">
<h2>Incoming configuration data:</h2> <h2>Incoming configuration data:</h2>
<div id="jsondata"></div> <div id="jsondata"></div>
<button class="btn" name="send config" value="send config" onclick="Pebble.actuallySendData()" >Send data to pebble</button> <button class="btn" name="send config" value="send config" onclick="Pebble.actuallySendData()">
Send data to pebble
</button>
</div> </div>
</body> </body>

View File

@ -1,3 +1,6 @@
//clay stores the values in the localStorage
localStorage.clear();
function loadScript(url, callback) { function loadScript(url, callback) {
// Adding the script tag to the head as suggested before // Adding the script tag to the head as suggested before
var head = document.getElementsByTagName('head')[0]; var head = document.getElementsByTagName('head')[0];
@ -29,46 +32,63 @@ function getURLVariable(variable, defaultValue) {
return defaultValue || false; return defaultValue || false;
} }
function showStep(desiredStep) {
var steps = document.getElementsByClassName("step");
var testStep = null;
for (var i = 0; i < steps.length; i ++) {
if (steps[i].id == desiredStep)
testStep = steps[i].id;
}
if (testStep !== null) {
for (var i = 0; i < steps.length; i ++) {
steps[i].style.display = 'none';
}
document.getElementById(desiredStep).style.display="block";
}
}
function gbPebble() { function gbPebble() {
this.configurationURL = null; this.configurationURL = null;
this.configurationValues = null; this.configurationValues = null;
var self = this;
this.addEventListener = function(e, f) { this.addEventListener = function(e, f) {
if(e == 'ready') { if(e == 'ready') {
this.ready = f; self.ready = f;
} }
if(e == 'showConfiguration') { if(e == 'showConfiguration') {
this.showConfiguration = f; self.showConfiguration = f;
} }
if(e == 'webviewclosed') { if(e == 'webviewclosed') {
this.parseconfig = f; self.parseconfig = f;
} }
if(e == 'appmessage') { if(e == 'appmessage') {
this.appmessage = f; self.appmessage = f;
} }
} }
this.removeEventListener = function(e, f) { this.removeEventListener = function(e, f) {
if(e == 'ready') { if(e == 'ready') {
this.ready = null; self.ready = null;
} }
if(e == 'showConfiguration') { if(e == 'showConfiguration') {
this.showConfiguration = null; self.showConfiguration = null;
} }
if(e == 'webviewclosed') { if(e == 'webviewclosed') {
this.parseconfig = null; self.parseconfig = null;
} }
if(e == 'appmessage') { if(e == 'appmessage') {
this.appmessage = null; self.appmessage = null;
} }
} }
this.actuallyOpenURL = function() { this.actuallyOpenURL = function() {
document.getElementById('step1compat').style.display="block"; showStep("step1compat");
window.open(this.configurationURL.toString(), "config"); window.open(self.configurationURL.toString(), "config");
} }
this.actuallySendData = function() { this.actuallySendData = function() {
GBjs.sendAppMessage(this.configurationValues); GBjs.sendAppMessage(self.configurationValues);
GBjs.closeActivity();
} }
//needs to be called like this because of original Pebble function name //needs to be called like this because of original Pebble function name
@ -76,7 +96,7 @@ function gbPebble() {
if (url.lastIndexOf("http", 0) === 0) { if (url.lastIndexOf("http", 0) === 0) {
document.getElementById("config_url").innerHTML=url; document.getElementById("config_url").innerHTML=url;
var UUID = GBjs.getAppUUID(); var UUID = GBjs.getAppUUID();
this.configurationURL = new Uri(url).addQueryParam("return_to", "gadgetbridge://"+UUID+"?config=true&json="); self.configurationURL = new Uri(url).addQueryParam("return_to", "gadgetbridge://"+UUID+"?config=true&json=");
} else { } else {
//TODO: add custom return_to //TODO: add custom return_to
location.href = url; location.href = url;
@ -90,7 +110,7 @@ function gbPebble() {
this.sendAppMessage = function (dict, callbackAck, callbackNack){ this.sendAppMessage = function (dict, callbackAck, callbackNack){
try { try {
this.configurationValues = JSON.stringify(dict); self.configurationValues = JSON.stringify(dict);
document.getElementById("jsondata").innerHTML=this.configurationValues; document.getElementById("jsondata").innerHTML=this.configurationValues;
return callbackAck; return callbackAck;
} }
@ -108,6 +128,10 @@ function gbPebble() {
return GBjs.getWatchToken(); return GBjs.getWatchToken();
} }
this.getTimelineToken = function() {
return '';
}
this.showSimpleNotificationOnPebble = function(title, body) { this.showSimpleNotificationOnPebble = function(title, body) {
GBjs.gbLog("app wanted to show: " + title + " body: "+ body); GBjs.gbLog("app wanted to show: " + title + " body: "+ body);
} }
@ -116,17 +140,14 @@ function gbPebble() {
} }
this.parseReturnedPebbleJS = function() { this.parseReturnedPebbleJS = function() {
var str = document.getElementById('pastereturn').value; var str = document.getElementById('pastereturn').value;
var needle = "pebblejs://close#"; var needle = "pebblejs://close#";
if (str.split(needle)[1] !== undefined) { if (str.split(needle)[1] !== undefined) {
var t = new Object(); var t = new Object();
t.response = unescape(str.split(needle)[1]); t.response = unescape(str.split(needle)[1]);
this.parseconfig(t); self.parseconfig(t);
document.getElementById('step1').style.display="none"; showStep("step2");
document.getElementById('step1compat').style.display="none";
document.getElementById('step2').style.display="block";
} else { } else {
console.error("No valid configuration found in the entered string."); console.error("No valid configuration found in the entered string.");
} }
@ -136,13 +157,11 @@ function gbPebble() {
var Pebble = new gbPebble(); var Pebble = new gbPebble();
var jsConfigFile = GBjs.getAppConfigurationFile(); var jsConfigFile = GBjs.getAppConfigurationFile();
document.addEventListener('DOMContentLoaded', function(){
if (jsConfigFile != null) { if (jsConfigFile != null) {
loadScript(jsConfigFile, function() { loadScript(jsConfigFile, function() {
if (getURLVariable('config') == 'true') { if (getURLVariable('config') == 'true') {
document.getElementById('step1').style.display="none"; showStep("step2");
document.getElementById('step1compat').style.display="none";
document.getElementById('step2').style.display="block";
var json_string = unescape(getURLVariable('json')); var json_string = unescape(getURLVariable('json'));
var t = new Object(); var t = new Object();
t.response = json_string; t.response = json_string;
@ -154,3 +173,4 @@ if (jsConfigFile != null) {
} }
}); });
} }
}, false);

View File

@ -28,6 +28,7 @@ import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.PebbleUtils; import nodomain.freeyourgadget.gadgetbridge.util.PebbleUtils;
@ -37,7 +38,9 @@ public class ExternalPebbleJSActivity extends GBActivity {
private static final Logger LOG = LoggerFactory.getLogger(ExternalPebbleJSActivity.class); private static final Logger LOG = LoggerFactory.getLogger(ExternalPebbleJSActivity.class);
private UUID appUuid; private UUID appUuid;
private Uri confUri;
private GBDevice mGBDevice = null; private GBDevice mGBDevice = null;
private WebView myWebView;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -46,27 +49,15 @@ public class ExternalPebbleJSActivity extends GBActivity {
Bundle extras = getIntent().getExtras(); Bundle extras = getIntent().getExtras();
if (extras != null) { if (extras != null) {
mGBDevice = extras.getParcelable(GBDevice.EXTRA_DEVICE); mGBDevice = extras.getParcelable(GBDevice.EXTRA_DEVICE);
appUuid = (UUID) extras.getSerializable(DeviceService.EXTRA_APP_UUID);
} else { } else {
throw new IllegalArgumentException("Must provide a device when invoking this activity"); throw new IllegalArgumentException("Must provide a device when invoking this activity");
} }
String queryString = "";
Uri uri = getIntent().getData();
if (uri != null) {
//getting back with configuration data
try {
appUuid = UUID.fromString(uri.getHost());
queryString = uri.getEncodedQuery();
} catch (IllegalArgumentException e) {
Log.d("returned uri: ", uri.toString());
}
} else {
appUuid = (UUID) getIntent().getSerializableExtra("app_uuid");
}
setContentView(R.layout.activity_external_pebble_js); setContentView(R.layout.activity_external_pebble_js);
WebView myWebView = (WebView) findViewById(R.id.configureWebview); myWebView = (WebView) findViewById(R.id.configureWebview);
myWebView.clearCache(true); myWebView.clearCache(true);
myWebView.setWebViewClient(new GBWebClient()); myWebView.setWebViewClient(new GBWebClient());
myWebView.setWebChromeClient(new GBChromeClient()); myWebView.setWebChromeClient(new GBChromeClient());
@ -78,7 +69,32 @@ public class ExternalPebbleJSActivity extends GBActivity {
JSInterface gbJSInterface = new JSInterface(); JSInterface gbJSInterface = new JSInterface();
myWebView.addJavascriptInterface(gbJSInterface, "GBjs"); myWebView.addJavascriptInterface(gbJSInterface, "GBjs");
myWebView.loadUrl("file:///android_asset/app_config/configure.html?" + queryString); myWebView.loadUrl("file:///android_asset/app_config/configure.html");
}
@Override
protected void onNewIntent(Intent incoming) {
super.onNewIntent(incoming);
confUri = incoming.getData();
}
@Override
protected void onResume() {
super.onResume();
String queryString = "";
if (confUri != null) {
//getting back with configuration data
try {
appUuid = UUID.fromString(confUri.getHost());
queryString = confUri.getEncodedQuery();
} catch (IllegalArgumentException e) {
GB.toast("returned uri: " + confUri.toString(), Toast.LENGTH_LONG, GB.ERROR);
}
myWebView.loadUrl("file:///android_asset/app_config/configure.html?" + queryString);
}
} }
private JSONObject getAppConfigurationKeys() { private JSONObject getAppConfigurationKeys() {
@ -112,8 +128,7 @@ public class ExternalPebbleJSActivity extends GBActivity {
@Override @Override
public boolean shouldOverrideUrlLoading(WebView view, String url) { public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("http://") || url.startsWith("https://")) { if (url.startsWith("http://") || url.startsWith("https://")) {
Intent i = new Intent(Intent.ACTION_VIEW, Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
Uri.parse(url));
startActivity(i); startActivity(i);
} else { } else {
url = url.replaceFirst("^pebblejs://close#", "file:///android_asset/app_config/configure.html?config=true&json="); url = url.replaceFirst("^pebblejs://close#", "file:///android_asset/app_config/configure.html?config=true&json=");
@ -222,6 +237,11 @@ public class ExternalPebbleJSActivity extends GBActivity {
//specification says: A string that is is guaranteed to be identical for each Pebble device for the same app across different mobile devices. The token is unique to your app and cannot be used to track Pebble devices across applications. see https://developer.pebble.com/docs/js/Pebble/ //specification says: A string that is is guaranteed to be identical for each Pebble device for the same app across different mobile devices. The token is unique to your app and cannot be used to track Pebble devices across applications. see https://developer.pebble.com/docs/js/Pebble/
return "gb" + appUuid.toString(); return "gb" + appUuid.toString();
} }
@JavascriptInterface
public void closeActivity() {
finish();
}
} }
@Override @Override

View File

@ -36,6 +36,7 @@ import nodomain.freeyourgadget.gadgetbridge.activities.ExternalPebbleJSActivity;
import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAppAdapter; import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAppAdapter;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
import nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol; import nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol;
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
import nodomain.freeyourgadget.gadgetbridge.util.PebbleUtils; import nodomain.freeyourgadget.gadgetbridge.util.PebbleUtils;
@ -338,7 +339,7 @@ public abstract class AbstractAppManagerFragment extends Fragment {
GBApplication.deviceService().onAppStart(selectedApp.getUUID(), true); GBApplication.deviceService().onAppStart(selectedApp.getUUID(), true);
Intent startIntent = new Intent(getContext().getApplicationContext(), ExternalPebbleJSActivity.class); Intent startIntent = new Intent(getContext().getApplicationContext(), ExternalPebbleJSActivity.class);
startIntent.putExtra("app_uuid", selectedApp.getUUID()); startIntent.putExtra(DeviceService.EXTRA_APP_UUID, selectedApp.getUUID());
startIntent.putExtra(GBDevice.EXTRA_DEVICE, mGBDevice); startIntent.putExtra(GBDevice.EXTRA_DEVICE, mGBDevice);
startActivity(startIntent); startActivity(startIntent);
return true; return true;

View File

@ -0,0 +1,242 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="DEVINFO_HR_VER">HR:</string>
<string name="_unknown_">(ismeretlen)</string>
<string name="abstract_chart_fragment_kind_activity">Aktivitás</string>
<string name="abstract_chart_fragment_kind_deep_sleep">Mély alvás</string>
<string name="abstract_chart_fragment_kind_light_sleep">Könnyű alvás</string>
<string name="abstract_chart_fragment_kind_not_worn">Nem viselt</string>
<string name="action_debug">Hibakeresés</string>
<string name="action_discover">Új eszköz csatlakoztatása</string>
<string name="action_quit">Kilépés</string>
<string name="action_settings">Beállítások</string>
<string name="activity_prefs_about_you">Rólad</string>
<string name="activity_prefs_gender">Nem</string>
<string name="activity_prefs_height_cm">Magasság cm-ben</string>
<string name="activity_prefs_sleep_duration">Preferált alvási idő órában</string>
<string name="activity_prefs_weight_kg">Testsúly kg-ban</string>
<string name="activity_prefs_year_birth">Születési év</string>
<string name="activity_sleepchart_activity_and_sleep">Aktivitásod és alvásod</string>
<string name="add_widget">Widget hozzáadása</string>
<string name="alarm_fri_short">Pén</string>
<string name="alarm_mon_short">Hét</string>
<string name="alarm_sat_short">Szo</string>
<string name="alarm_smart_wakeup">Okos ébresztés</string>
<string name="alarm_sun_short">Vas</string>
<string name="alarm_thu_short">Csü</string>
<string name="alarm_tue_short">Ked</string>
<string name="alarm_wed_short">Sze</string>
<string name="always">mindig</string>
<string name="android_pairing_hint">Használja az Android Bluetooth párosítás ablakot eszköz párosításához.</string>
<string name="app_configure">Beállítás</string>
<string name="app_install_info">A következő alkalmazást fogod telepíteni:\n\n\n%1$s Version %2$s : %3$s\n</string>
<string name="appinstaller_install">Telepítés</string>
<string name="appmanager_health_activate">Aktiválás</string>
<string name="appmanager_health_deactivate">Deaktiválás</string>
<string name="appmananger_app_delete">Törlés</string>
<string name="appmananger_app_delete_cache">Törlés és eltávolítás a gyorsítótárból</string>
<string name="appmananger_app_reinstall">Újratelepítés</string>
<string name="appversion_by_creator">%1$s by %2$s</string>
<string name="appwidget_alarms_set">Ébresztő beállítva: %1$02d:%2$02d</string>
<string name="appwidget_text">Zzz</string>
<string name="authenticating">hitelesítés</string>
<string name="authentication_required">hitelesítés szükséges</string>
<string name="bluetooth_is_disabled_">A Bluetooth ki van kapcsolva.</string>
<string name="bluetooth_is_not_supported_">A Bluetooth nem támogatott.</string>
<string name="busy_task_fetch_activity_data">Aktivitási adatok lekérdezése.</string>
<string name="candidate_item_device_image">Eszköz kép</string>
<string name="cannot_connect">Nem lehet kapcsolódni: %1$s</string>
<string name="cannot_connect_bt_address_invalid_">Nem lehet csatlakozni. Rossz Bluetooth cím?</string>
<string name="chart_no_data_synchronize">Nincs adat. Szinkronizáltál?</string>
<string name="chart_steps">Lépések</string>
<string name="charts_legend_heartrate">Pulzus</string>
<string name="connected">csatlakoztatva</string>
<string name="connecting">csatlakozás</string>
<string name="connectionstate_fw">FW: %1$s</string>
<string name="connectionstate_hw_fw">HW: %1$s FW: %2$s</string>
<string name="control_center_cancel_to_stop_vibration">A vibrálás leállításához: Mégse.</string>
<string name="control_center_find_lost_device">Elveszett eszköz keresése</string>
<string name="controlcenter_disconnect">Szétcsatlakoztatás</string>
<string name="controlcenter_fetch_activity_data">Szinkronálás</string>
<string name="controlcenter_find_device">Elveszett eszköz keresése...</string>
<string name="controlcenter_start_activitymonitor">Aktivitásod (ALFA)</string>
<string name="controlcenter_start_configure_alarms">Ébresztők beállítása</string>
<string name="controlcenter_start_sleepmonitor">Alvási adatok (ALFA)</string>
<string name="controlcenter_take_screenshot">Képernyőkép készítése</string>
<string name="dbaccess_error_executing">Hiba a futtatáskor: \'%1$s\'</string>
<string name="device_fw">FW: %1$s</string>
<string name="device_hw">HW: %1$s</string>
<string name="device_not_connected">Nincs csatlakoztatva.</string>
<string name="device_with_rssi">%1$s (%2$s)</string>
<string name="discovery_connected_devices_hint">Engedélyezd a készüléked láthatóságát. A csatlakoztatott készülékek valószínűleg nem fognak megjelenni. Ha a készüléked nem jelenik meg 2 perc elteltével, próbáld újra, majd indítsd újra a telefonod.</string>
<string name="discovery_note">Megjegyzés:</string>
<string name="discovery_start_scanning">Keresés kezdése</string>
<string name="discovery_stop_scanning">Keresés leállítása</string>
<string name="error_creating_directory_for_logfiles">Hiba a könyvtár létrehozáskor a naplófájlok számára: %1$s</string>
<string name="female"></string>
<string name="firmware_install_warning">FIRMWARE-T PRÓBÁLSZ TELEPÍTENI, CSAK SAJÁT FELELŐSSÉGRE TEDD!.\n\n\n Ez a firmware ehhez a hardware-verzióhoz tartozik: %s</string>
<string name="fw_multi_upgrade_notice">Firmware-t fogsz telepíteni: %1$s és %2$s a mostani helyett a Mi Band-edre.</string>
<string name="fw_upgrade_notice">Firmware-t fogsz telepíteni: %s a mostani helyett a Mi Band-edre.</string>
<string name="fwapp_install_device_not_ready">A fájlt nem lehet telepíteni, a készülék nincs készen.</string>
<string name="fwappinstaller_connection_state">Csatlakozás az eszközhöz: %1$s</string>
<string name="fwinstaller_firmware_not_compatible_to_device">Ez a firmware nem kompatibilis az eszközöddel.</string>
<string name="gadgetbridge_running">A Gadgetbridge fut</string>
<string name="initialized">inicializált</string>
<string name="initializing">inicializálás</string>
<string name="installation_failed_">sikertelen telepítés!</string>
<string name="installation_successful">sikeres telepítés</string>
<string name="installer_activity_unable_to_find_handler">A telepítéshez szükséges segédfájl nem található.</string>
<string name="installer_activity_wait_while_determining_status">Kérlek várj a telepítési státusz megállapításáig...</string>
<string name="installing_binary_d_d">bináris telepítés %1$d/%2$d</string>
<string name="left">bal</string>
<string name="live_activity_current_steps_per_minute">Jelenlegi lépés/perc</string>
<string name="live_activity_heart_rate">Pulzus</string>
<string name="live_activity_start_your_activity">Aktivitás kezdése</string>
<string name="live_activity_steps_history">Lépésnapló</string>
<string name="live_activity_steps_per_minute_history">Lépés/perc napló</string>
<string name="live_activity_total_steps">Összes lépés</string>
<string name="liveactivity_live_activity">Aktuális aktivitás</string>
<string name="male">férfi</string>
<string name="message_cannot_pair_no_mac">Nincs találat a mac címre, nem lehet párosítani.</string>
<string name="miband_firmware_known">Ez a firmware tesztelt és ismerten kompatibilis a Gadgetbridge-el.</string>
<string name="miband_firmware_suggest_whitelist">Ha ennek ellenére is telepíteni szeretnéd, és a dolgok jól működnek, utána kérlek jelezd a Gadgetbridge fejlesztőinek, hogy fehérlistára tehessék a </string>
<string name="miband_firmware_unknown_warning">"Ez a firmware nincs tesztelve, lehetséges, hogy nem kompatibilis a Gadgetbridge-el.\n\nNem javasoljuk, hogy feltelepítsd a Mi Band-edre!"</string>
<string name="miband_fwinstaller_compatible_version">Kompatibilis verzió</string>
<string name="miband_fwinstaller_incompatible_version">Nem kompatibilis firmware</string>
<string name="miband_fwinstaller_untested_version">Nem tesztelt verzió!</string>
<string name="miband_installhandler_miband_firmware">Mi Band Firmware %1$s</string>
<string name="miband_pairing">Párosítás: %s…</string>
<string name="miband_pairing_tap_hint">Amikor vibrálni kezd a Mi Band-ed, érintsd meg párszor egymás után.</string>
<string name="miband_pairing_using_dummy_userdata">Nem helyes felhasználói adatok vannak megadva, alapértelmezett adatokat fogok használni.</string>
<string name="miband_prefs_alias">Név/Alias</string>
<string name="miband_prefs_device_time_offset_hours">Eszköz időeltolása órákban (Hogy az éjszakai műszakban dolgozók alvását is érzékelje.)</string>
<string name="miband_prefs_fitness_goal">Napi céllépésszám</string>
<string name="miband_prefs_hr_sleep_detection">Pulzus szenzor használata az alvás érzékelés javításához</string>
<string name="miband_prefs_reserve_alarm_calendar"></string>
<string name="miband_prefs_vibration">Rezgés</string>
<string name="miband_prefs_wearside">Melyik kezeden hordod?</string>
<string name="n_a">N/A</string>
<string name="never">soha</string>
<string name="not_connected">nincs csatlakozva</string>
<string name="notif_battery_low_bigtext_last_charge_time">Utoljára töltve: %s \n</string>
<string name="notif_battery_low_bigtext_number_of_charges">Töltések száma: %s</string>
<string name="notif_battery_low_percent">%1$s fennmaradó akkumulátor töltés: %2$s%%</string>
<string name="notif_battery_low_title">Alacsony akkumulátorszint</string>
<string name="other">egyéb</string>
<string name="pbw_install_handler_hw_revision_mismatch">Sikertelen telepítés: a firmware nem kompatibilis a Pebble hardver verzióddal.</string>
<string name="pbw_install_handler_unable_to_install">Nem sikerült telepíteni a fájlt: %1$s</string>
<string name="pbw_installhandler_pebble_firmware">Pebble Firmware %1$s</string>
<string name="pbwinstallhandler_app_item">%1$s (%2$s)</string>
<string name="pbwinstallhandler_correct_hw_revision">Helyes hardververzió</string>
<string name="pbwinstallhandler_incorrect_hw_revision">Hardververzió eltérés!</string>
<string name="pref_blacklist">Tiltott alkalmazások</string>
<string name="pref_default">Alapértelmezett</string>
<string name="pref_header_activitytrackers">Aktivitásmérők</string>
<string name="pref_header_datetime">Dátum és idő</string>
<string name="pref_header_development">Fejlesztői beállítások</string>
<string name="pref_header_general">Általános beállítások</string>
<string name="pref_header_location">Helység</string>
<string name="pref_header_notifications">Értesítések</string>
<string name="pref_header_vibration_count">Rezgésszám</string>
<string name="pref_header_vibration_settings">Rezgésbeállítások</string>
<string name="pref_screen_notification_profile_generic">Általános értesítések</string>
<string name="pref_screen_notification_profile_incoming_call">Bejővő hívás értesítés</string>
<string name="pref_screen_notification_profile_k9mail">K9 E-Mail értesítés</string>
<string name="pref_screen_notification_profile_pebblemsg">Pebble értesítés</string>
<string name="pref_screen_notification_profile_sms">SMS értesítés</string>
<string name="pref_screen_vibration_profile">Rezgés profil</string>
<string name="pref_summary_datetime_syctimeonconnect">Idő szinkronizálása csatlakozásnál és Android idő- vagy időzónaváltoztatásnál.</string>
<string name="pref_summary_enable_pebblekit"></string>
<string name="pref_summary_keep_data_on_device">Az adatokat a Mi Band-en fogja tárolni szinkronizálás után is. Hasznos, ha a GadgetBridge-et együtt használod más alkalmazásokkal.</string>
<string name="pref_summary_low_latency_fw_update">Ez segíthet, ha a firmware frissítés sikertelen.</string>
<string name="pref_summary_notification_filter">Értesítések tiltása a Ne zavarj üzemmód használatakor.</string>
<string name="pref_summary_notifications_pebblemsg">Támogatás az alkalmazásoknak, amik értesítést küldenek a Pebble-nek Intent-en keresztül. Ez beszélgetésre használható.</string>
<string name="pref_summary_pebble_forceprotocol">Ez az opció erőlteti az utolsó értesítési protokollt a firmware verziótól függően. CSAK AKKOR ENGEDÉLYEZD, HA TUDOD MIT CSINÁLSZ!</string>
<string name="pref_summary_pebble_forceuntested">Nem tesztelt funkciók engedélyezése. CSAK AKKOR ENGEDÉLYEZD, HA TUDOD MIT CSINÁLSZ!</string>
<string name="pref_summary_sunrise_sunset">A napkelte és napnyugta idejének küldése a Pebble idővonalra a hely és idő alapján</string>
<string name="pref_theme_dark">Sötét</string>
<string name="pref_theme_light">Világos</string>
<string name="pref_title_audo_player">Preferált zenelejátszó</string>
<string name="pref_title_canned_replies">Előre megírt válaszok</string>
<string name="pref_title_canned_reply_suffix">Közös előtag</string>
<string name="pref_title_datetime_syctimeonconnect">Idő szinkronizálás</string>
<string name="pref_title_development_miaddr">Mi Band cím</string>
<string name="pref_title_enable_pebblekit">Harmadik féltől származó Android alkalmazások hozzáférésének engedélyezése</string>
<string name="pref_title_general_autoconnectonbluetooth">Kapcsolódjon az eszközhöz a Bluetooth bekapcsolásakor</string>
<string name="pref_title_general_autocreonnect">Újracsatlakozás automatikusan</string>
<string name="pref_title_keep_data_on_device">Aktivitásadatok eszközön hagyása</string>
<string name="pref_title_dont_ack_transfer"></string>
<string name="pref_title_location_aquire">Földrajzi hely</string>
<string name="pref_title_location_latitude">Szélesség</string>
<string name="pref_title_location_longitude">Hosszúság</string>
<string name="pref_title_low_latency_fw_update">Használja a low-latency módot a Firmware frissítésnél</string>
<string name="pref_title_notification_filter">Ne zavarj mód</string>
<string name="pref_title_notifications_call">Telefonhívások</string>
<string name="pref_title_notifications_generic">Általános értesítési támogatás</string>
<string name="pref_title_notifications_k9mail">K9-Mail</string>
<string name="pref_title_notifications_pebblemsg">Pebble Üzenetek</string>
<string name="pref_title_notifications_repetitions">Ismétlések</string>
<string name="pref_title_notifications_sms">SMS</string>
<string name="pref_title_pebble_activitytracker">Preferált Aktivitásmérők</string>
<string name="pref_title_pebble_forceprotocol">Erőltetett értesítés protokoll</string>
<string name="pref_title_pebble_forceuntested">Nem tesztelt funkciók engedélyezése</string>
<string name="pref_title_pebble_reconnect_attempts">Újracsatlakozási kísérletek száma</string>
<string name="pref_title_pebble_settings">Pebble beállítások</string>
<string name="pref_title_pebble_sync_health">Pebble Health szinkronizálása</string>
<string name="pref_title_pebble_sync_misfit">Misfit szinkronizálás</string>
<string name="pref_title_pebble_sync_morpheuz">Morpheuz szinkronizálás</string>
<string name="pref_title_sunrise_sunset">Napkelte és napnyugta</string>
<string name="pref_title_theme">Téma</string>
<string name="pref_title_whenscreenon">… és amikor a kijelző be van kapcsolva</string>
<string name="pref_write_logfiles">Naplófájlok írása</string>
<string name="preferences_category_device_specific_settings">Eszközspecifikus beállítások</string>
<string name="preferences_miband_settings">MI Band beállítások</string>
<string name="right">jobb</string>
<string name="sleep_activity_date_range">Ettől %1$s eddig %2$s</string>
<string name="sleepchart_your_sleep">Az alvásod</string>
<string name="tap_a_device_to_connect">Érintsd meg az eszközt a csatlakozáshoz</string>
<string name="tap_connected_device_for_activity">Érintsd meg az eszközt az aktivitáshoz</string>
<string name="tap_connected_device_for_app_mananger">Érintsd meg az eszközt az alkalmazáskezelőhöz</string>
<string name="test">Teszt</string>
<string name="test_notification">Teszt értesítés</string>
<string name="this_is_a_test_notification_from_gadgetbridge">Ez egy tesztértesítés a Gadgetbridge-től</string>
<string name="title_activity_alarm_details">Ébresztés részletek</string>
<string name="title_activity_android_pairing">Eszköz párosítása</string>
<string name="title_activity_appblacklist">Értesítés tiltólista</string>
<string name="title_activity_appmanager">Alkalmazás kezelő</string>
<string name="title_activity_charts">Aktivitásod</string>
<string name="title_activity_controlcenter">Gadgetbridge </string>
<string name="title_activity_debug">Hibakeresés</string>
<string name="title_activity_discovery">Eszköz fellelhetőség</string>
<string name="title_activity_fw_app_insaller">FW/Alkalmazás telepítő</string>
<string name="title_activity_mi_band_pairing">Párosítsd a Mi Band-ed</string>
<string name="title_activity_set_alarm">Ébresztések beállítása</string>
<string name="title_activity_settings">Beállítások</string>
<string name="title_activity_sleepmonitor">Alvástörténet</string>
<string name="unknown_state">ismeretlen állapot</string>
<string name="updatefirmwareoperation_firmware_not_sent">Nem küldött Firmware </string>
<string name="updatefirmwareoperation_metadata_updateproblem">Probléma volt a Firmware metaadatainak küldésekor</string>
<string name="updatefirmwareoperation_update_complete">A Firmware telepítés kész</string>
<string name="updatefirmwareoperation_update_complete_rebooting">A Firmware telepítés kész, az eszköz újraindítása…</string>
<string name="updatefirmwareoperation_update_in_progress">Firmware frissítés folyamatban</string>
<string name="updatefirmwareoperation_updateproblem_do_not_reboot">Probléma volt a firmware küldésekor. NE INDÍTSD ÚJRA a Mi Band-ed!</string>
<string name="updatefirmwareoperation_write_failed">Firmware írási probléma</string>
<string name="updating_firmware">Firmware frissítése…</string>
<string name="user_feedback_all_alarms_disabled">Mindegyik ébresztés tiltva van</string>
<string name="user_feedback_miband_activity_data_transfer">Adatok fogadása: %1$s %2$s -tól</string>
<string name="user_feedback_miband_set_alarms_failed">Hiba történt az ébresztések beállításakor, kérlek próbáld újra!</string>
<string name="user_feedback_miband_set_alarms_ok">Ébresztések beállítva!</string>
<string name="vibration_profile_alarm_clock">Ébresztőóra</string>
<string name="vibration_profile_long">Hosszú</string>
<string name="vibration_profile_medium">Közepes</string>
<string name="vibration_profile_ring">Csörgés</string>
<string name="vibration_profile_short">Rövid</string>
<string name="vibration_profile_staccato">Szaggatott</string>
<string name="vibration_profile_waterdrop">Vízcsepp</string>
<string name="waiting_for_reconnect">várakozás az újracsatlakozásra</string>
<string name="weeksteps_today_steps_description">Lépések ma, cél: %1$s</string>
<string name="weekstepschart_steps_a_week">Lépések a héten</string>
<string name="when_screen_off">amikor a kijelző ki van kapcsolva</string>
</resources>

View File

@ -24,6 +24,7 @@
<item name="uk">Українська</item> <item name="uk">Українська</item>
<item name="ko">한국어</item> <item name="ko">한국어</item>
<item name="ja">日本語</item> <item name="ja">日本語</item>
<item name="hu">Magyar</item>
</string-array> </string-array>
<string-array name="pref_language_values"> <string-array name="pref_language_values">
@ -39,6 +40,7 @@
<item>uk</item> <item>uk</item>
<item>ko</item> <item>ko</item>
<item>ja</item> <item>ja</item>
<item>hu</item>
</string-array> </string-array>
<string-array name="notification_mode"> <string-array name="notification_mode">