mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-09-01 14:45:08 +00:00
Compare commits
49 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a2ef4659d9 | ||
|
e769a512eb | ||
|
4da0599f0e | ||
|
b00a0771fd | ||
|
9d4e4cda3a | ||
|
06f8d47b00 | ||
|
e46a413630 | ||
|
d40e3122cc | ||
|
d84ac8b5f0 | ||
|
7128c9e298 | ||
|
affc019c9c | ||
|
8ffd1f5b20 | ||
|
ca2a622de5 | ||
|
40fc12797a | ||
|
f825a37c8e | ||
|
7c52260efe | ||
|
49e2b2d9a2 | ||
|
96fc4016ff | ||
|
1706a4c10d | ||
|
13b5fc4550 | ||
|
11ffab5502 | ||
|
377f91bd23 | ||
|
8e078e608a | ||
|
12d08a17c2 | ||
|
4b6ad1cdaa | ||
|
1fcfd4b879 | ||
|
541ee4d3cc | ||
|
af922a4277 | ||
|
48cccf3fca | ||
|
1c3389efa0 | ||
|
f54ebdb39b | ||
|
ea80000a4e | ||
|
d9db7e4ad9 | ||
|
1273cb641a | ||
|
cafbfcaee8 | ||
|
ac4c997efd | ||
|
d05feaa6d0 | ||
|
4967cc7a81 | ||
|
59cc3f2d4a | ||
|
0b9880d9b8 | ||
|
90f89c653d | ||
|
e53338c70e | ||
|
e641ff5a0a | ||
|
2ebaf6ae5b | ||
|
dd89463d75 | ||
|
7194b308cb | ||
|
328b708083 | ||
|
6404b86373 | ||
|
3263b37c8a |
@@ -9,8 +9,8 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="org.kde.kdeconnect_tp"
|
||||
android:versionCode="12602"
|
||||
android:versionName="1.26.2">
|
||||
android:versionCode="12701"
|
||||
android:versionName="1.27.1">
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.telephony"
|
||||
@@ -38,6 +38,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
||||
<uses-permission android:name="android.permission.RECEIVE_SMS" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_MMS" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
@@ -138,14 +139,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
||||
|
||||
<receiver android:name="org.kde.kdeconnect.KdeConnectBroadcastReceiver"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PACKAGE_REPLACED" />
|
||||
|
||||
<data
|
||||
android:host="kdeconnect"
|
||||
android:path="/"
|
||||
android:scheme="package" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
|
||||
</intent-filter>
|
||||
@@ -366,7 +359,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
||||
<action android:name="android.service.chooser.ChooserTargetService" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
<!--
|
||||
<service
|
||||
android:name="org.kde.kdeconnect.Plugins.MouseReceiverPlugin.MouseReceiverService"
|
||||
android:exported="true"
|
||||
@@ -378,7 +370,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
||||
android:name="android.accessibilityservice"
|
||||
android:resource="@xml/mouse_receiver_service" />
|
||||
</service>
|
||||
-->
|
||||
|
||||
<activity
|
||||
android:name="org.kde.kdeconnect.Plugins.NotificationsPlugin.NotificationFilterActivity"
|
||||
|
@@ -12,7 +12,7 @@ function import_po_dirs # First parameter will be a path that will be a director
|
||||
{
|
||||
podir=$1
|
||||
# Some languages don't exist in Google Play or have different codes
|
||||
declare -a to_delete=( "bs" "ca@valencia" "sr@ijekavian" "sr@ijekavianlatin" "sr@latin" "ia" "tg" )
|
||||
declare -a to_delete=( "bs" "ca@valencia" "sr@ijekavian" "sr@ijekavianlatin" "sr@latin" "ia" "eo" "tg" )
|
||||
for lang in "${to_delete[@]}"; do
|
||||
if [ -d $podir/$lang ]; then
|
||||
rm $podir/$lang/*
|
||||
|
12
fastlane/metadata/android/en-US/changelogs/12603.txt
Normal file
12
fastlane/metadata/android/en-US/changelogs/12603.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
1.26.3:
|
||||
* Fixed several bugs and crashes related to media controls.
|
||||
|
||||
1.26.1:
|
||||
* Fix infinite loop that would cause high CPU usage.
|
||||
|
||||
1.26.0:
|
||||
* Allow having different widgets for diferent devices.
|
||||
* Add stats about network packets sent and received.
|
||||
* Add the option to cancel a pairing request after sending it.
|
||||
* Fix device name set initially not being human-friendly.
|
||||
* Rewrite some of the internals to improve performance.
|
12
fastlane/metadata/android/en-US/changelogs/12604.txt
Normal file
12
fastlane/metadata/android/en-US/changelogs/12604.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
1.26.4:
|
||||
* Fixed several bugs and crashes related to media controls.
|
||||
|
||||
1.26.1:
|
||||
* Fix infinite loop that would cause high CPU usage.
|
||||
|
||||
1.26.0:
|
||||
* Allow having different widgets for diferent devices.
|
||||
* Add stats about network packets sent and received.
|
||||
* Add the option to cancel a pairing request after sending it.
|
||||
* Fix device name set initially not being human-friendly.
|
||||
* Rewrite some of the internals to improve performance.
|
9
fastlane/metadata/android/en-US/changelogs/12700.txt
Normal file
9
fastlane/metadata/android/en-US/changelogs/12700.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
1.27:
|
||||
* Added back the mouse receiver plugin.
|
||||
|
||||
1.26:
|
||||
* Allow having different widgets for diferent devices.
|
||||
* Add stats about network packets sent and received.
|
||||
* Add the option to cancel a pairing request after sending it.
|
||||
* Fix device name set initially not being human-friendly.
|
||||
* Rewrite some of the internals to improve performance.
|
12
fastlane/metadata/android/en-US/changelogs/12701.txt
Normal file
12
fastlane/metadata/android/en-US/changelogs/12701.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
1.27.1:
|
||||
* Fixed crashes.
|
||||
|
||||
1.27:
|
||||
* Added back the mouse receiver plugin.
|
||||
|
||||
1.26:
|
||||
* Allow having different widgets for diferent devices.
|
||||
* Add stats about network packets sent and received.
|
||||
* Add the option to cancel a pairing request after sending it.
|
||||
* Fix device name set initially not being human-friendly.
|
||||
* Rewrite some of the internals to improve performance.
|
14
fastlane/metadata/android/fi-FI/full_description.txt
Normal file
14
fastlane/metadata/android/fi-FI/full_description.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
KDE Connect tarjoaa ominaisuudet työnvuosi eheyttämiseksi laitteiden kesken:
|
||||
|
||||
– Jaettu leikepöytä: kopioi ja liitä laitteelta toiselle.
|
||||
– Jaa tiedostoja ja verkko-osoitteita tietokoneeseesi mistä sovelluksesta vain.
|
||||
– Saa ilmoitukset saapuvista puheluista ja tekstiviesteistä tietokoneellesi.
|
||||
– Näyttönäppäimistö: käytä puhelimen näyttöä tietokoneesi osoitinlaitteena.
|
||||
– Ilmoitusten tahdistus: lue Android-ilmoituksesi työpöydältä.
|
||||
– Multimedian etähallinta: käytä puhelinta Linux-mediasoitinten kaukosäätimenä.
|
||||
– Langaton verkkoyhteys: USB-johtoa tai Bluetoothia ei tarvita.
|
||||
– Päästä päähän -TLS-salaus: tietosi ovat turvassa.
|
||||
|
||||
Huomaa, että sovelluksen toimimiseksi KDE Connect tulee asentaa tietokoneeseen ja pitää ajan tasalla Android-version kanssa, jotta kaikki ominaisuudet toimisivat.
|
||||
|
||||
Sovellus on avoimen lähdekoodin projekti ja on olemassa sitä avustaneiden ihmisten ansiosta. Lähdekoodin saat noudettua kotisivulta.
|
1
fastlane/metadata/android/fi-FI/short_description.txt
Normal file
1
fastlane/metadata/android/fi-FI/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
KDE Connect eheyttää älypuhelimen ja tietokoneen
|
1
fastlane/metadata/android/fi-FI/title.txt
Normal file
1
fastlane/metadata/android/fi-FI/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
KDE Connect
|
14
fastlane/metadata/android/pt_BR/full_description.txt
Normal file
14
fastlane/metadata/android/pt_BR/full_description.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
O KDE Connect fornece um conjunto de recursos para integrar seu fluxo de trabalho entre dispositivos:
|
||||
|
||||
- Área de transferência compartilhada: copie e cole entre seus dispositivos.
|
||||
- Compartilhe arquivos e URLs em seu computador a partir de qualquer app.
|
||||
- Receba notificações de chamadas recebidas e mensagens SMS no seu PC.
|
||||
- Touchpad virtual: use a tela do telefone como touchpad do computador.
|
||||
- Sincronização de notificações: leia as notificações do seu Android na área de trabalho.
|
||||
- Controle remoto multimídia: use seu telefone como controle remoto para reprodutores de mídia Linux.
|
||||
- Conexão Wi-Fi: sem necessidade de cabos USB ou bluetooth.
|
||||
- Criptografia TLS de ponta a ponta: suas informações estão seguras.
|
||||
|
||||
Observe que você precisará instalar o KDE Connect no seu computador para que este aplicativo funcione e mantenha a versão para desktop atualizada com a versão do Android para que os recursos mais recentes funcionem.
|
||||
|
||||
Este aplicativo faz parte de um projeto de código aberto e existe graças a todas as pessoas que contribuíram para ele. Visite o site para obter o código-fonte.
|
1
fastlane/metadata/android/pt_BR/short_description.txt
Normal file
1
fastlane/metadata/android/pt_BR/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
O KDE Connect integra seu celular e computador
|
1
fastlane/metadata/android/pt_BR/title.txt
Normal file
1
fastlane/metadata/android/pt_BR/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
KDE Connect
|
61
po/eo/kdeconnect-android-store-full.po
Normal file
61
po/eo/kdeconnect-android-store-full.po
Normal file
@@ -0,0 +1,61 @@
|
||||
# translation of kdeconnect-android-store-full.pot to esperanto
|
||||
# Copyright (C) 2023 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the kdeconnect-android package.
|
||||
# Oliver Kellogg <okellogg@users.sourceforge.net, 2023.
|
||||
#
|
||||
#. extracted from ./metadata/android/en-US/full_description.txt
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kdeconnect-android\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-07 00:47+0000\n"
|
||||
"PO-Revision-Date: 2023-07-06 06:18+0100\n"
|
||||
"Last-Translator: Oliver Kellogg <okellogg@users.sourceforge.net>\n"
|
||||
"Language-Team: Esperanto <kde-i18n-eo@kde.org>\n"
|
||||
"Language: eo\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
|
||||
msgid ""
|
||||
"KDE Connect provides a set of features to integrate your workflow across "
|
||||
"devices:\n"
|
||||
"\n"
|
||||
"- Shared clipboard: copy and paste between your devices.\n"
|
||||
"- Share files and URLs to your computer from any app.\n"
|
||||
"- Get notifications for incoming calls and SMS messages on your PC.\n"
|
||||
"- Virtual touchpad: Use your phone screen as your computer's touchpad.\n"
|
||||
"- Notifications sync: Read your Android notifications from the desktop.\n"
|
||||
"- Multimedia remote control: Use your phone as a remote for Linux media "
|
||||
"players.\n"
|
||||
"- WiFi connection: no USB wire or bluetooth needed.\n"
|
||||
"- End-to-end TLS encryption: your information is safe.\n"
|
||||
"\n"
|
||||
"Please note you will need to install KDE Connect on your computer for this "
|
||||
"app to work, and keep the desktop version up-to-date with the Android "
|
||||
"version for the latest features to work.\n"
|
||||
"\n"
|
||||
"This app is part of an open source project and it exists thanks to all the "
|
||||
"people who contributed to it. Visit the website to grab the source code."
|
||||
msgstr ""
|
||||
"KDE Connect provizas aron da funkcioj por integri vian laborfluon trans "
|
||||
"aparatoj:\n"
|
||||
"\n"
|
||||
"- Komuna tondujo: kopiu kaj algluu inter viaj aparatoj.\n"
|
||||
"- Kunhavigu dosierojn kaj URL-ojn al via komputilo de iu ajn aplikaĵo.\n"
|
||||
"- Ricevu sciigojn pri envenantaj vokoj kaj SMS-mesaĝoj en via komputilo.\n"
|
||||
"- Virtuala tuŝplato: Uzu vian telefonan ekranon kiel la tuŝplaton de via "
|
||||
"komputilo.\n"
|
||||
"- Sinkronigo de sciigoj: Legu viajn Android-sciigojn de la labortablo.\n"
|
||||
"- Plurmedia teleregilo: Uzu vian telefonon kiel teleregilon por Linuks-"
|
||||
"komunikilaj ludantoj.\n"
|
||||
"- WiFi-konekto: ne necesas USB-drato aŭ bluetooth.\n"
|
||||
"- Fin-al-fina TLS-ĉifrado: viaj informoj estas sekuraj.\n"
|
||||
"\n"
|
||||
"Bonvolu noti, ke vi devos instali KDE Connect sur via komputilo por tiu "
|
||||
"aplikaĵo por funkcii, kaj tenu la labortablan version ĝisdatigita kun la "
|
||||
"Android versio por ke la plej novaj kapabloj funkciu.\n"
|
||||
"\n"
|
||||
"Ĉi tiu programo estas parto de malfermkoda projekto kaj ĝi ekzistas danke al "
|
||||
"ĉiuj homoj kiuj kontribuis al ĝi. Vizitu la retejon por kapti la fontkodon."
|
22
po/eo/kdeconnect-android-store-short.po
Normal file
22
po/eo/kdeconnect-android-store-short.po
Normal file
@@ -0,0 +1,22 @@
|
||||
# translation of kdeconnect-android-store-short.pot to esperanto
|
||||
# Copyright (C) 2023 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the kdeconnect-android package.
|
||||
# Oliver Kellogg <okellogg@users.sourceforge.net, 2023.
|
||||
#
|
||||
#. extracted from ./metadata/android/en-US/short_description.txt
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kdeconnect-android\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-07 00:47+0000\n"
|
||||
"PO-Revision-Date: 2023-07-05 07:30+0100\n"
|
||||
"Last-Translator: Oliver Kellogg <okellogg@users.sourceforge.net>\n"
|
||||
"Language-Team: Esperanto <kde-i18n-eo@kde.org>\n"
|
||||
"Language: eo\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
|
||||
msgid "KDE Connect integrates your smartphone and computer"
|
||||
msgstr "KDE Connect integras vian poŝtelefonon kaj komputilon"
|
59
po/fi/kdeconnect-android-store-full.po
Normal file
59
po/fi/kdeconnect-android-store-full.po
Normal file
@@ -0,0 +1,59 @@
|
||||
# Tommi Nieminen <translator@legisign.org>, 2023.
|
||||
#. extracted from ./metadata/android/en-US/full_description.txt
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-07 00:47+0000\n"
|
||||
"PO-Revision-Date: 2023-07-04 21:29+0300\n"
|
||||
"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
|
||||
"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
|
||||
"Language: fi\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Lokalize 22.12.3\n"
|
||||
|
||||
msgid ""
|
||||
"KDE Connect provides a set of features to integrate your workflow across "
|
||||
"devices:\n"
|
||||
"\n"
|
||||
"- Shared clipboard: copy and paste between your devices.\n"
|
||||
"- Share files and URLs to your computer from any app.\n"
|
||||
"- Get notifications for incoming calls and SMS messages on your PC.\n"
|
||||
"- Virtual touchpad: Use your phone screen as your computer's touchpad.\n"
|
||||
"- Notifications sync: Read your Android notifications from the desktop.\n"
|
||||
"- Multimedia remote control: Use your phone as a remote for Linux media "
|
||||
"players.\n"
|
||||
"- WiFi connection: no USB wire or bluetooth needed.\n"
|
||||
"- End-to-end TLS encryption: your information is safe.\n"
|
||||
"\n"
|
||||
"Please note you will need to install KDE Connect on your computer for this "
|
||||
"app to work, and keep the desktop version up-to-date with the Android "
|
||||
"version for the latest features to work.\n"
|
||||
"\n"
|
||||
"This app is part of an open source project and it exists thanks to all the "
|
||||
"people who contributed to it. Visit the website to grab the source code."
|
||||
msgstr ""
|
||||
"KDE Connect tarjoaa ominaisuudet työnvuosi eheyttämiseksi laitteiden "
|
||||
"kesken:\n"
|
||||
"\n"
|
||||
"– Jaettu leikepöytä: kopioi ja liitä laitteelta toiselle.\n"
|
||||
"– Jaa tiedostoja ja verkko-osoitteita tietokoneeseesi mistä sovelluksesta "
|
||||
"vain.\n"
|
||||
"– Saa ilmoitukset saapuvista puheluista ja tekstiviesteistä "
|
||||
"tietokoneellesi.\n"
|
||||
"– Näyttönäppäimistö: käytä puhelimen näyttöä tietokoneesi osoitinlaitteena.\n"
|
||||
"– Ilmoitusten tahdistus: lue Android-ilmoituksesi työpöydältä.\n"
|
||||
"– Multimedian etähallinta: käytä puhelinta Linux-mediasoitinten "
|
||||
"kaukosäätimenä.\n"
|
||||
"– Langaton verkkoyhteys: USB-johtoa tai Bluetoothia ei tarvita.\n"
|
||||
"– Päästä päähän -TLS-salaus: tietosi ovat turvassa.\n"
|
||||
"\n"
|
||||
"Huomaa, että sovelluksen toimimiseksi KDE Connect tulee asentaa "
|
||||
"tietokoneeseen ja pitää ajan tasalla Android-version kanssa, jotta kaikki "
|
||||
"ominaisuudet toimisivat.\n"
|
||||
"\n"
|
||||
"Sovellus on avoimen lähdekoodin projekti ja on olemassa sitä avustaneiden "
|
||||
"ihmisten ansiosta. Lähdekoodin saat noudettua kotisivulta."
|
19
po/fi/kdeconnect-android-store-short.po
Normal file
19
po/fi/kdeconnect-android-store-short.po
Normal file
@@ -0,0 +1,19 @@
|
||||
# Tommi Nieminen <translator@legisign.org>, 2023.
|
||||
#. extracted from ./metadata/android/en-US/short_description.txt
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-07 00:47+0000\n"
|
||||
"PO-Revision-Date: 2023-07-04 21:29+0300\n"
|
||||
"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
|
||||
"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
|
||||
"Language: fi\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Lokalize 22.12.3\n"
|
||||
|
||||
msgid "KDE Connect integrates your smartphone and computer"
|
||||
msgstr "KDE Connect eheyttää älypuhelimen ja tietokoneen"
|
19
po/ko/kdeconnect-android-store-short.po
Normal file
19
po/ko/kdeconnect-android-store-short.po
Normal file
@@ -0,0 +1,19 @@
|
||||
# Shinjo Park <kde@peremen.name>, 2023.
|
||||
#. extracted from ./metadata/android/en-US/short_description.txt
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-07 00:47+0000\n"
|
||||
"PO-Revision-Date: 2023-07-23 00:47+0200\n"
|
||||
"Last-Translator: Shinjo Park <kde@peremen.name>\n"
|
||||
"Language-Team: Korean <kde-kr@kde.org>\n"
|
||||
"Language: ko\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Lokalize 22.12.3\n"
|
||||
|
||||
msgid "KDE Connect integrates your smartphone and computer"
|
||||
msgstr "KDE Connect는 스마트폰과 컴퓨터를 통합합니다"
|
24
po/nn/kdeconnect-android-store-short.po
Normal file
24
po/nn/kdeconnect-android-store-short.po
Normal file
@@ -0,0 +1,24 @@
|
||||
# Translation of kdeconnect-android-store-short to Norwegian Nynorsk
|
||||
#
|
||||
# Karl Ove Hufthammer <karl@huftis.org>, 2023.
|
||||
#. extracted from ./metadata/android/en-US/short_description.txt
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-07 00:47+0000\n"
|
||||
"PO-Revision-Date: 2023-07-15 14:30+0200\n"
|
||||
"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
|
||||
"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: nn\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Lokalize 23.04.3\n"
|
||||
"X-Environment: kde\n"
|
||||
"X-Accelerator-Marker: &\n"
|
||||
"X-Text-Markup: kde4\n"
|
||||
|
||||
msgid "KDE Connect integrates your smartphone and computer"
|
||||
msgstr "KDE Connect koplar telefonen din saman med datamaskina"
|
60
po/pt_BR/kdeconnect-android-store-full.po
Normal file
60
po/pt_BR/kdeconnect-android-store-full.po
Normal file
@@ -0,0 +1,60 @@
|
||||
# Geraldo Simiao <geraldosimiao@fedoraproject.org>, 2023.
|
||||
#. extracted from ./metadata/android/en-US/full_description.txt
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-07 00:47+0000\n"
|
||||
"PO-Revision-Date: 2023-07-25 22:01-0300\n"
|
||||
"Last-Translator: Geraldo Simiao <geraldosimiao@fedoraproject.org>\n"
|
||||
"Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Lokalize 23.04.3\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
msgid ""
|
||||
"KDE Connect provides a set of features to integrate your workflow across "
|
||||
"devices:\n"
|
||||
"\n"
|
||||
"- Shared clipboard: copy and paste between your devices.\n"
|
||||
"- Share files and URLs to your computer from any app.\n"
|
||||
"- Get notifications for incoming calls and SMS messages on your PC.\n"
|
||||
"- Virtual touchpad: Use your phone screen as your computer's touchpad.\n"
|
||||
"- Notifications sync: Read your Android notifications from the desktop.\n"
|
||||
"- Multimedia remote control: Use your phone as a remote for Linux media "
|
||||
"players.\n"
|
||||
"- WiFi connection: no USB wire or bluetooth needed.\n"
|
||||
"- End-to-end TLS encryption: your information is safe.\n"
|
||||
"\n"
|
||||
"Please note you will need to install KDE Connect on your computer for this "
|
||||
"app to work, and keep the desktop version up-to-date with the Android "
|
||||
"version for the latest features to work.\n"
|
||||
"\n"
|
||||
"This app is part of an open source project and it exists thanks to all the "
|
||||
"people who contributed to it. Visit the website to grab the source code."
|
||||
msgstr ""
|
||||
"O KDE Connect fornece um conjunto de recursos para integrar seu fluxo de "
|
||||
"trabalho entre dispositivos:\n"
|
||||
"\n"
|
||||
"- Área de transferência compartilhada: copie e cole entre seus "
|
||||
"dispositivos.\n"
|
||||
"- Compartilhe arquivos e URLs em seu computador a partir de qualquer app.\n"
|
||||
"- Receba notificações de chamadas recebidas e mensagens SMS no seu PC.\n"
|
||||
"- Touchpad virtual: use a tela do telefone como touchpad do computador.\n"
|
||||
"- Sincronização de notificações: leia as notificações do seu Android na área "
|
||||
"de trabalho.\n"
|
||||
"- Controle remoto multimídia: use seu telefone como controle remoto para "
|
||||
"reprodutores de mídia Linux.\n"
|
||||
"- Conexão Wi-Fi: sem necessidade de cabos USB ou bluetooth.\n"
|
||||
"- Criptografia TLS de ponta a ponta: suas informações estão seguras.\n"
|
||||
"\n"
|
||||
"Observe que você precisará instalar o KDE Connect no seu computador para que "
|
||||
"este aplicativo funcione e mantenha a versão para desktop atualizada com a "
|
||||
"versão do Android para que os recursos mais recentes funcionem.\n"
|
||||
"\n"
|
||||
"Este aplicativo faz parte de um projeto de código aberto e existe graças a "
|
||||
"todas as pessoas que contribuíram para ele. Visite o site para obter o "
|
||||
"código-fonte."
|
@@ -4,7 +4,7 @@ msgstr ""
|
||||
"Project-Id-Version: kdeorg\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-07 00:47+0000\n"
|
||||
"PO-Revision-Date: 2023-06-17 04:11\n"
|
||||
"PO-Revision-Date: 2023-07-23 12:28\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Language: zh_CN\n"
|
||||
|
@@ -4,7 +4,7 @@ msgstr ""
|
||||
"Project-Id-Version: kdeorg\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-06-07 00:47+0000\n"
|
||||
"PO-Revision-Date: 2023-06-17 04:11\n"
|
||||
"PO-Revision-Date: 2023-07-23 12:28\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Language: zh_CN\n"
|
||||
|
@@ -97,7 +97,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Düymə vuruşu kimi göndərmək</string>
|
||||
<string name="mouse_receiver_plugin_description">Uzaqdakı siçanın hərəkətini qəbul etmək</string>
|
||||
<string name="mouse_receiver_plugin_name">Siçanı qəbul edən</string>
|
||||
<string name="mouse_receiver_no_permissions">Xüsusi İmkanlarda xidməti aktiv etməlisiniz</string>
|
||||
<string name="view_status_title">Vəziyyət</string>
|
||||
<string name="battery_status_format">Batareya: %d%%</string>
|
||||
<string name="battery_status_low_format">Batareya: %d%% Zəif batareya</string>
|
||||
|
@@ -97,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Изпращане като клавишни комбинации</string>
|
||||
<string name="mouse_receiver_plugin_description">Получаване на дистанционно движение на мишката</string>
|
||||
<string name="mouse_receiver_plugin_name">Приемане на движение на мишката</string>
|
||||
<string name="mouse_receiver_no_permissions">Трябва да активирате услугата за достъпност</string>
|
||||
<string name="mouse_receiver_no_permissions">"За отдалечено управление с тъчскрийн, трябва да предоставите разрешения за достъп за пълен контрол на устройството."</string>
|
||||
<string name="view_status_title">Състояние</string>
|
||||
<string name="battery_status_format">Батерия: %d%%</string>
|
||||
<string name="battery_status_low_format">Батерия: %d%% Ниско ниво на батерията</string>
|
||||
|
@@ -97,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Envia com a pulsacions de tecla</string>
|
||||
<string name="mouse_receiver_plugin_description">Rep el moviment del ratolí remot</string>
|
||||
<string name="mouse_receiver_plugin_name">Receptor del ratolí</string>
|
||||
<string name="mouse_receiver_no_permissions">Cal que habiliteu el servei Accessibilitat</string>
|
||||
<string name="mouse_receiver_no_permissions">Per a rebre entrades tàctils remotament cal atorgar el permís d\'Accessibilitat a control complet del vostre dispositiu</string>
|
||||
<string name="view_status_title">Estat</string>
|
||||
<string name="battery_status_format">Bateria: %d%%</string>
|
||||
<string name="battery_status_low_format">Bateria: %d%% bateria baixa</string>
|
||||
|
@@ -97,7 +97,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Posílat jako úhozy kláves</string>
|
||||
<string name="mouse_receiver_plugin_description">Přijímat vzdálený pohyb myši</string>
|
||||
<string name="mouse_receiver_plugin_name">Příjemce myši</string>
|
||||
<string name="mouse_receiver_no_permissions">Musíte povolit Službu Zpřístupnění.</string>
|
||||
<string name="view_status_title">Stav</string>
|
||||
<string name="battery_status_format">Baterie: %d%%</string>
|
||||
<string name="battery_status_low_format">Baterie: %d%% Téměř vybitá baterie</string>
|
||||
|
@@ -95,7 +95,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Als Tastendruck senden</string>
|
||||
<string name="mouse_receiver_plugin_description">Empfänger für entfernte Mauseingaben</string>
|
||||
<string name="mouse_receiver_plugin_name">Maus-Empfänger</string>
|
||||
<string name="mouse_receiver_no_permissions">Sie müssen den Zugangshilfendienst aktivieren</string>
|
||||
<string name="view_status_title">Status</string>
|
||||
<string name="battery_status_format">Akku: %d%%</string>
|
||||
<string name="battery_status_low_format">Akku: %d%% Niedriger Ladestand</string>
|
||||
|
@@ -84,7 +84,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Αποστολή ως πληκτρολογήσεις</string>
|
||||
<string name="mouse_receiver_plugin_description">Λήψη απομακρυσμένων κινήσεων του ποντικιού</string>
|
||||
<string name="mouse_receiver_plugin_name">Δέκτης ποντικιού</string>
|
||||
<string name="mouse_receiver_no_permissions">Απαιτείται η ενεργοποίηση της υπηρεσίας προσβασιμότητας</string>
|
||||
<string name="view_status_title">Κατάσταση</string>
|
||||
<string name="battery_status_format">Μπαταρία: %d%%</string>
|
||||
<string name="battery_status_low_format">Μπαταρία: %d%% Χαμηλή συάθμη</string>
|
||||
|
@@ -97,7 +97,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Send as keystrokes</string>
|
||||
<string name="mouse_receiver_plugin_description">Receive remote mouse movement</string>
|
||||
<string name="mouse_receiver_plugin_name">Mouse receiver</string>
|
||||
<string name="mouse_receiver_no_permissions">You need to enable Accessibility Service</string>
|
||||
<string name="view_status_title">Status</string>
|
||||
<string name="battery_status_format">Battery: %d%%</string>
|
||||
<string name="battery_status_low_format">Battery: %d%% Low Battery</string>
|
||||
|
@@ -97,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Enviar como pulsaciones</string>
|
||||
<string name="mouse_receiver_plugin_description">Recibir el movimiento de un ratón remoto</string>
|
||||
<string name="mouse_receiver_plugin_name">Receptor del ratón</string>
|
||||
<string name="mouse_receiver_no_permissions">Necesita activar el servicio de accesibilidad</string>
|
||||
<string name="mouse_receiver_no_permissions">Para recibir entradas táctiles de manera remota necesita conceder permisos de accesibilidad para controlar totalmente su dispositivo</string>
|
||||
<string name="view_status_title">Estado</string>
|
||||
<string name="battery_status_format">Batería: %d%%</string>
|
||||
<string name="battery_status_low_format">Batería: %d%% Batería baja</string>
|
||||
|
@@ -93,7 +93,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Bidali tekla-joaldi gisa</string>
|
||||
<string name="mouse_receiver_plugin_description">Jaso urrutiko saguaren mugimenduak</string>
|
||||
<string name="mouse_receiver_plugin_name">Sagu jasotzailea</string>
|
||||
<string name="mouse_receiver_no_permissions">Irisgarritasun zerbitzua gaitu behar duzu</string>
|
||||
<string name="view_status_title">Egoera</string>
|
||||
<string name="battery_status_format">Bateria: %%%d</string>
|
||||
<string name="battery_status_low_format">Bateria: %%%d bateria baxu</string>
|
||||
|
@@ -97,7 +97,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Lähetä näppäinpainalluksina</string>
|
||||
<string name="mouse_receiver_plugin_description">Vastaanota etähiiren liike</string>
|
||||
<string name="mouse_receiver_plugin_name">Hiirivastaanotin</string>
|
||||
<string name="mouse_receiver_no_permissions">Esteettömyyspalvelu on otettava käyttöön</string>
|
||||
<string name="view_status_title">Tila</string>
|
||||
<string name="battery_status_format">Varaus: %d %%</string>
|
||||
<string name="battery_status_low_format">Varaus: %d %%, vähissä</string>
|
||||
@@ -108,6 +107,7 @@
|
||||
<string name="device_menu_plugins">Liitännäisten asetukset</string>
|
||||
<string name="device_menu_unpair">Poista laitepari</string>
|
||||
<string name="pair_new_device">Kytke uusi laite pariksi</string>
|
||||
<string name="cancel_pairing">Peru paritus</string>
|
||||
<string name="unknown_device">Tuntematon laite</string>
|
||||
<string name="error_not_reachable">Laite tavoittamattomissa</string>
|
||||
<string name="error_already_paired">Laite on jo kytketty pariksi</string>
|
||||
@@ -395,4 +395,5 @@
|
||||
<string name="everyone_else">Kaikki muut vuosien varrella KDE Connectia avustaneet</string>
|
||||
<string name="send_clipboard">Lähetä leikepöytä</string>
|
||||
<string name="tap_to_execute">Suorita napauttamalla</string>
|
||||
<string name="plugin_stats">Liitännäisen tilastot</string>
|
||||
</resources>
|
||||
|
@@ -97,7 +97,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Envoyez comme appuis de touches</string>
|
||||
<string name="mouse_receiver_plugin_description">Recevoir les mouvements de la souri distante</string>
|
||||
<string name="mouse_receiver_plugin_name">Récepteur de souris</string>
|
||||
<string name="mouse_receiver_no_permissions">Vous avez besoin d\'accéder au service « Accessibilité »</string>
|
||||
<string name="view_status_title">État</string>
|
||||
<string name="battery_status_format">Batterie : %d %%</string>
|
||||
<string name="battery_status_low_format">Batterie : %d %% Batterie faible</string>
|
||||
|
@@ -97,7 +97,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Enviar como pulsacións de tecla</string>
|
||||
<string name="mouse_receiver_plugin_description">Recibir movementos de rato remotos</string>
|
||||
<string name="mouse_receiver_plugin_name">Receptor de rato</string>
|
||||
<string name="mouse_receiver_no_permissions">Ten que activar o servizo de accesibilidade</string>
|
||||
<string name="view_status_title">Estado</string>
|
||||
<string name="battery_status_format">Batería: %d%%</string>
|
||||
<string name="battery_status_low_format">Batería: %d%% (baixa)</string>
|
||||
|
@@ -92,7 +92,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Küldés billentyűleütésként</string>
|
||||
<string name="mouse_receiver_plugin_description">Távoli egérmozgások fogadása</string>
|
||||
<string name="mouse_receiver_plugin_name">Egérvevő</string>
|
||||
<string name="mouse_receiver_no_permissions">Engedélyeznie kell az akadálymentesítési szolgáltatást</string>
|
||||
<string name="view_status_title">Állapot</string>
|
||||
<string name="battery_status_format">Akku: %d%%</string>
|
||||
<string name="battery_status_low_format">Akku: %d%% alacsony töltöttség</string>
|
||||
|
@@ -177,7 +177,7 @@
|
||||
<string name="thanks_to">Gratias a</string>
|
||||
<string name="easter_egg">Ovo de Pascha</string>
|
||||
<string name="version">Version %s</string>
|
||||
<string name="about_kde">A proposio de KDE</string>
|
||||
<string name="about_kde">A proposito de KDE</string>
|
||||
<string name="kde_be_free">KDE- Vos Sia Libere!</string>
|
||||
<string name="kde">KDE</string>
|
||||
<string name="konqi">Konqi</string>
|
||||
|
@@ -92,7 +92,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Kirim sebagai penekanan tombol</string>
|
||||
<string name="mouse_receiver_plugin_description">Terima penggerakan mouse jarak jauh</string>
|
||||
<string name="mouse_receiver_plugin_name">Penerima mouse</string>
|
||||
<string name="mouse_receiver_no_permissions">Anda harus mengaktifkan Layanan Aksesibilitas</string>
|
||||
<string name="view_status_title">Status</string>
|
||||
<string name="battery_status_format">Baterai: %d%%</string>
|
||||
<string name="battery_status_low_format">Baterai: %d%% Baterai Lemah</string>
|
||||
|
@@ -86,7 +86,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Senda sem lyklaáslátt</string>
|
||||
<string name="mouse_receiver_plugin_description">"Taka á móti fjartengdum músarhreyfingum"</string>
|
||||
<string name="mouse_receiver_plugin_name">Móttakari músarmerkja</string>
|
||||
<string name="mouse_receiver_no_permissions">Þú þarft að virkja þjónustuna fyrir aukið aðgengi</string>
|
||||
<string name="view_status_title">Staða</string>
|
||||
<string name="battery_status_format">Rafhlaða: %d%%</string>
|
||||
<string name="battery_status_low_format">Rafhlaða: %d%% lítil hleðsla</string>
|
||||
|
@@ -97,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Invia come combinazioni di tasti</string>
|
||||
<string name="mouse_receiver_plugin_description">Ricevi i movimenti remoti del mouse</string>
|
||||
<string name="mouse_receiver_plugin_name">Ricevitore del mouse</string>
|
||||
<string name="mouse_receiver_no_permissions">Devi abilitare Servizio di accessibilità</string>
|
||||
<string name="mouse_receiver_no_permissions">Per ricevere input tattili da remoto devi concedere i permessi di accessibilità per controllare completamente il tuo dispositivo</string>
|
||||
<string name="view_status_title">Stato</string>
|
||||
<string name="battery_status_format">Batteria: %d%%</string>
|
||||
<string name="battery_status_low_format">Batteria: %d%% livello basso</string>
|
||||
|
@@ -93,7 +93,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">キー入力として送信</string>
|
||||
<string name="mouse_receiver_plugin_description">リモートからマウスの動きを受信</string>
|
||||
<string name="mouse_receiver_plugin_name">マウスレシーバ</string>
|
||||
<string name="mouse_receiver_no_permissions">アクセシビリティサービスを有効化する必要があります</string>
|
||||
<string name="view_status_title">状態</string>
|
||||
<string name="battery_status_format">バッテリ: %d%%</string>
|
||||
<string name="battery_status_low_format">バッテリ: %d%% 残量低下</string>
|
||||
|
@@ -60,6 +60,8 @@
|
||||
<string name="mousepad_mouse_buttons_title">마우스 단추 표시</string>
|
||||
<string name="mousepad_acceleration_profile_settings_title">포인터 가속 설정</string>
|
||||
<string name="mousepad_scroll_direction_title">스크롤 방향 뒤집기</string>
|
||||
<string name="gyro_mouse_enabled_title">자이로스코프 마우스 활성화</string>
|
||||
<string name="gyro_mouse_sensitivity_title">자이로스코프 감도</string>
|
||||
<string-array name="mousepad_tap_entries">
|
||||
<item>왼쪽 클릭</item>
|
||||
<item>오른쪽 단추 클릭</item>
|
||||
@@ -95,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">키 입력으로 보내기</string>
|
||||
<string name="mouse_receiver_plugin_description">원격 마우스 움직임 받기</string>
|
||||
<string name="mouse_receiver_plugin_name">마우스 수신기</string>
|
||||
<string name="mouse_receiver_no_permissions">접근성 서비스를 활성화해야 합니다</string>
|
||||
<string name="mouse_receiver_no_permissions">원격으로 터치 입력을 받으려면 장치 제어를 위해서 접근성 권한을 허용해야 합니다</string>
|
||||
<string name="view_status_title">상태</string>
|
||||
<string name="battery_status_format">배터리: %d%%</string>
|
||||
<string name="battery_status_low_format">배터리: %d%% 배터리 부족</string>
|
||||
@@ -106,6 +108,7 @@
|
||||
<string name="device_menu_plugins">플러그인 설정</string>
|
||||
<string name="device_menu_unpair">연결 해제</string>
|
||||
<string name="pair_new_device">새 장치 연결</string>
|
||||
<string name="cancel_pairing">페어링 취소</string>
|
||||
<string name="unknown_device">알 수 없는 장치</string>
|
||||
<string name="error_not_reachable">장치에 접근할 수 없음</string>
|
||||
<string name="error_already_paired">장치가 이미 연결됨</string>
|
||||
@@ -366,8 +369,9 @@
|
||||
<string name="click_here_to_type">입력하려면 누르십시오</string>
|
||||
<string name="clear_compose">지우기</string>
|
||||
<string name="send_compose">보내기</string>
|
||||
<string name="compose_send_title">텍스트 보내기</string>
|
||||
<string name="open_compose_send">텍스트 작성</string>
|
||||
<string name="about_kde_about"><h1>정보<h1> <p>KDE는 <a href=https://www.gnu.org/philosophy/free-sw.html>자유 소프트웨어</a>를 개발하려고 모인 소프트웨어 개발자, 예술가, 집필가, 번역가 및 기타 인원의 모임입니다. KDE 커뮤니티에서는 Plasma 데스크톱 환경, 다양한 프로그램 및 지원 라이브러리를 개발합니다.<p> <p>KDE는 협동 조합입니다. 어떠한 단일 집단도 방향이나 제품을 결정하지 않습니다. 우리는 전 세계에서 가장 뛰어난 자유 소프트웨어 개발이라는 공통 목표를 향해 함께 힘을 모으고 있습니다. KDE에는 이 글을 읽는 여러분과 같은 누구나 <a href=https://community.kde.org/Get_Involved>참여하고 기여</a>할 수 있습니다.<p> <a href=https://www.kde.org/>https://www.kde.org/</a> 페이지를 방문하셔서 KDE 커뮤니티와 소프트웨어에 대해 알아 보십시오.</string>
|
||||
<string name="about_kde_about"><h1>정보<h1> <p>KDE는 <a href=https://www.gnu.org/philosophy/free-sw.html>자유 소프트웨어</a>를 개발하려고 모인 소프트웨어 개발자, 예술가, 집필가, 번역가 및 기타 인원의 모임입니다. KDE 커뮤니티에서는 Plasma 데스크톱 환경, 다양한 앱 및 지원 라이브러리를 개발합니다.<p> <p>KDE는 협동 조합입니다. 어떠한 단일 집단도 방향이나 제품을 결정하지 않습니다. 우리는 전 세계에서 가장 뛰어난 자유 소프트웨어 개발이라는 공통 목표를 향해 함께 힘을 모으고 있습니다. KDE에는 이 글을 읽는 여러분과 같은 누구나 <a href=https://community.kde.org/Get_Involved>참여하고 기여</a>할 수 있습니다.<p> <a href=https://www.kde.org/>https://www.kde.org/</a> 페이지를 방문하셔서 KDE 커뮤니티와 소프트웨어에 대해 알아 보십시오.</string>
|
||||
<string name="about_kde_report_bugs_or_wishes">"<h1>버그나 요구 사항 보고</h1> <p>소프트웨어는 항상 개선되며, KDE 팀도 그럴 준비가 되어 있습니다. 따라서 사용자 여러분은 무언가가 예상한 대로 작동하지 않거나 더 잘 작동하기를 바라면 개발자에게 알려 주십시오.</p> <p>KDE는 버그 추적 시스템을 가지고 있습니다. <a href=https://bugs.kde.org/>https://bugs.kde.org/</a>를 방문하시거나 \"도움말\" 메뉴의 \"버그 보고...\" 대화 상자를 이용하셔서 버그를 보고해 주십시오.</p> 개선 사항 제안을 하고 싶으시다면 버그 보고 시스템을 통해서 알려 주십시오. 이 경우 심각성 항목에서 \"Wishlist\"를 선택하셔야 합니다."</string>
|
||||
<string name="about_kde_join_kde"><h1>KDE에 참여하기</h1> <p>소프트웨어 개발자만이 KDE에 참가할 수 있는 것은 아닙니다. 프로그램 인터페이스를 번역하는 각 나라 번역팀을 도울 수도 있습니다. 또한 그래픽, 테마, 소리, 더 나은 문서 등을 기여할 수도 있습니다. 직접 결정하십시오!</p> <p><a href=https://community.kde.org/Get_Involved>https://community.kde.org/Get_Involved</a> 페이지를 방문하셔서 참여할 수 있는 프로젝트를 찾아 보십시오.</p> 만약 더 많은 정보나 문서가 필요하다면, <a href=https://techbase.kde.org/>https://techbase.kde.org/</a> 사이트를 방문하셔서 원하는 정보를 찾으십시오.</string>
|
||||
<string name="about_kde_support_kde">"<h1>KDE 지원</h1> <p>KDE는 무료로 사용 가능하지만, 만드는 것은 무료가 아닙니다.</p> <p>따라서 KDE 커뮤니티는 독일에 비영리 재단 KDE e.V.를 설립했습니다. KDE e.V.는 KDE 커뮤니티를 법적, 재정적인 면에서 후원합니다. <a href=https://ev.kde.org/>https://ev.kde.org/</a> 사이트를 방문하셔서 KDE e.V.에 관한 정보를 확인하십시오.</p> <p>KDE는 재정적인 보조가 필요합니다. 대부분의 지원금은 구성원에게 대가를 지급하거나 KDE에 기여하는 데 드는 돈을 대는 데 사용됩니다. <a href=https://www.kde.org/community/donations/>https://www.kde.org/community/donations/</a>에 있는 방법을 사용하여 재정적인 지원을 해 주십시오.</p>여러분의 협조에 미리 감사드립니다."</string>
|
||||
@@ -384,4 +388,5 @@
|
||||
<string name="everyone_else">그 외 오랫동안 KDE Connect에 기여한 사람들</string>
|
||||
<string name="send_clipboard">클립보드 보내기</string>
|
||||
<string name="tap_to_execute">실행하려면 누르십시오</string>
|
||||
<string name="plugin_stats">플러그인 통계</string>
|
||||
</resources>
|
||||
|
@@ -93,7 +93,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Siųsti kaip klavišų paspaudimus</string>
|
||||
<string name="mouse_receiver_plugin_description">Gauti nuotolinius pelės judesius</string>
|
||||
<string name="mouse_receiver_plugin_name">Pelės gavėjas</string>
|
||||
<string name="mouse_receiver_no_permissions">Jūs turite įjungti prieinamumo tarnybą</string>
|
||||
<string name="view_status_title">Būsena</string>
|
||||
<string name="battery_status_format">Akumuliatorius: %d%%</string>
|
||||
<string name="battery_status_low_format">Akumuliatorius: %d%% baigia išsikrauti</string>
|
||||
|
@@ -97,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Als toetsaanslagen verzenden</string>
|
||||
<string name="mouse_receiver_plugin_description">Muisbewegingen van afstand ontvangen</string>
|
||||
<string name="mouse_receiver_plugin_name">Muisontvanger</string>
|
||||
<string name="mouse_receiver_no_permissions">U moet service toegankelijkheid inschakelen</string>
|
||||
<string name="mouse_receiver_no_permissions">Om aanraakinvoer op afstand te ontvangen moet u toegangsrechten toekennen om uw apparaat volledig te besturen</string>
|
||||
<string name="view_status_title">Status</string>
|
||||
<string name="battery_status_format">Batterij: %d%%</string>
|
||||
<string name="battery_status_low_format">Batterij: %d%% lage batterij</string>
|
||||
|
@@ -97,7 +97,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Send som tastetrykk</string>
|
||||
<string name="mouse_receiver_plugin_description">Ta imot eksterne muserørsler</string>
|
||||
<string name="mouse_receiver_plugin_name">Muserørsle-mottakar</string>
|
||||
<string name="mouse_receiver_no_permissions">Du må slå på tilgjenge-tenesta</string>
|
||||
<string name="view_status_title">Status</string>
|
||||
<string name="battery_status_format">Batteri: %d %%</string>
|
||||
<string name="battery_status_low_format">Batteri: %d %% – lågt batterinivå</string>
|
||||
@@ -108,6 +107,7 @@
|
||||
<string name="device_menu_plugins">Programtillegg-oppsett</string>
|
||||
<string name="device_menu_unpair">Løys paring</string>
|
||||
<string name="pair_new_device">Par ny eining</string>
|
||||
<string name="cancel_pairing">Avbryt paring</string>
|
||||
<string name="unknown_device">Ukjend eining</string>
|
||||
<string name="error_not_reachable">Får ikkje kontakt med eininga</string>
|
||||
<string name="error_already_paired">Eininga er alt para</string>
|
||||
@@ -394,4 +394,5 @@
|
||||
<string name="everyone_else">Alle andre som har hjelpt til med utviklinga av KDE Connect opp gjennom åra</string>
|
||||
<string name="send_clipboard">Send utklippstavla</string>
|
||||
<string name="tap_to_execute">Tapp for å utføra handlinga</string>
|
||||
<string name="plugin_stats">Programtillegg-statistikk</string>
|
||||
</resources>
|
||||
|
@@ -97,7 +97,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Wysyłaj jako naciśnięcia klawiszy</string>
|
||||
<string name="mouse_receiver_plugin_description">Odbiera ruchy myszy z innego urządzenia do sterowania tym urządzeniem</string>
|
||||
<string name="mouse_receiver_plugin_name">Odbieranie myszy</string>
|
||||
<string name="mouse_receiver_no_permissions">Musisz włączyć usługę dostępności</string>
|
||||
<string name="view_status_title">Stan</string>
|
||||
<string name="battery_status_format">Bateria: %d%%</string>
|
||||
<string name="battery_status_low_format">Bateria: %d%% niski poziom</string>
|
||||
|
@@ -97,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Enviar como pressionamento de teclas</string>
|
||||
<string name="mouse_receiver_plugin_description">Receber movimento de mouse remoto</string>
|
||||
<string name="mouse_receiver_plugin_name">Receptor de mouse</string>
|
||||
<string name="mouse_receiver_no_permissions">Você precisa habilitar o serviço de acessibilidade</string>
|
||||
<string name="mouse_receiver_no_permissions">Para receber entradas de toque remotas você precisa conceder permissões de acessibilidade para controlar totalmente seu dispositivo</string>
|
||||
<string name="view_status_title">Status</string>
|
||||
<string name="battery_status_format">Bateria: %d%%</string>
|
||||
<string name="battery_status_low_format">Bateria: %d%% bateria baixa</string>
|
||||
|
@@ -97,7 +97,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Enviar como eventos de teclado</string>
|
||||
<string name="mouse_receiver_plugin_description">Receber o movimento remoto do rato</string>
|
||||
<string name="mouse_receiver_plugin_name">Receptor do rato</string>
|
||||
<string name="mouse_receiver_no_permissions">Precisa de activar o Serviço de Acessibilidade</string>
|
||||
<string name="view_status_title">Estado</string>
|
||||
<string name="battery_status_format">Bateria: %d%%</string>
|
||||
<string name="battery_status_low_format">Bateria: %d%% Bateria Fraca</string>
|
||||
|
@@ -92,7 +92,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Trimite ca apăsări de taste</string>
|
||||
<string name="mouse_receiver_plugin_description">Primește mișcări de maus de la distanță</string>
|
||||
<string name="mouse_receiver_plugin_name">Receptor pentru maus</string>
|
||||
<string name="mouse_receiver_no_permissions">Trebuie să activați Serviciul de Accesibilitate</string>
|
||||
<string name="view_status_title">Stare</string>
|
||||
<string name="battery_status_format">Acumulator: %d%%</string>
|
||||
<string name="battery_status_low_format">Acumulator: %d%% Acumulator scăzut</string>
|
||||
|
File diff suppressed because one or more lines are too long
@@ -76,7 +76,6 @@
|
||||
<string name="sendkeystrokes_pref_enabled">Povoliť odosielanie stlačení klávesov</string>
|
||||
<string name="mouse_receiver_plugin_description">Prijímanie pohybu vzdialenej myši</string>
|
||||
<string name="mouse_receiver_plugin_name">Prijímač myši</string>
|
||||
<string name="mouse_receiver_no_permissions">Musíte povoliť službu dostupnosti</string>
|
||||
<string name="view_status_title">Stav</string>
|
||||
<string name="battery_status_format">Batéria: %d%%</string>
|
||||
<string name="battery_status_low_format">Batéria: %d%% Nízka úroveň batérie</string>
|
||||
|
@@ -97,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Pošlji kot pritiske tipk</string>
|
||||
<string name="mouse_receiver_plugin_description">Sprejemaj gibanje oddaljene miške</string>
|
||||
<string name="mouse_receiver_plugin_name">Sprejemnik miške</string>
|
||||
<string name="mouse_receiver_no_permissions">Omogočiti morate storitev dostopnosti</string>
|
||||
<string name="mouse_receiver_no_permissions">Če želite prejemati vnose dotikov na daljavo, morate podeliti dovoljenja za dostopnost za popoln nadzor vaše naprave</string>
|
||||
<string name="view_status_title">Stanje</string>
|
||||
<string name="battery_status_format">Baterija: %d%%</string>
|
||||
<string name="battery_status_low_format">Baterija: %d%% skoraj prazna</string>
|
||||
|
@@ -92,7 +92,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Skicka som tangentnedtryckningar</string>
|
||||
<string name="mouse_receiver_plugin_description">Ta emot externa musrörelser</string>
|
||||
<string name="mouse_receiver_plugin_name">Musmottagare</string>
|
||||
<string name="mouse_receiver_no_permissions">Du måste aktivera åtkomsttjänsten</string>
|
||||
<string name="view_status_title">Status</string>
|
||||
<string name="battery_status_format">Batteri: %d %%</string>
|
||||
<string name="battery_status_low_format">Batteri: %d %% låg laddning</string>
|
||||
|
@@ -97,7 +97,6 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">விசைகளாக அனுப்பு</string>
|
||||
<string name="mouse_receiver_plugin_description">தொலை சுட்டி அசைவைப் பெறு</string>
|
||||
<string name="mouse_receiver_plugin_name">சுட்டி பெறுநர்</string>
|
||||
<string name="mouse_receiver_no_permissions">அணுகல்தன்மை சேவையை நீங்கள் இயக்க வேண்டும்</string>
|
||||
<string name="view_status_title">நிலை</string>
|
||||
<string name="battery_status_format">மின்கலம்: %d%%</string>
|
||||
<string name="battery_status_low_format">மின்கலம்: %d%% குறைந்த மின்கலம்</string>
|
||||
|
@@ -97,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Düğme basımları olarak gönder</string>
|
||||
<string name="mouse_receiver_plugin_description">Uzaktan fare hareketi al</string>
|
||||
<string name="mouse_receiver_plugin_name">Fare alıcısı</string>
|
||||
<string name="mouse_receiver_no_permissions">Erişilebilirlik Hizmeti\'ni etkinleştirmeniz gerekiyor</string>
|
||||
<string name="mouse_receiver_no_permissions">Dokunma girdilerini uzaktan almak için aygıtı tümüyle denetlemek üzere Erişilebilirlik izinleri sağlamanız gerekir</string>
|
||||
<string name="view_status_title">Durum</string>
|
||||
<string name="battery_status_format">Pil: %d%%</string>
|
||||
<string name="battery_status_low_format">Pil: %d%% Düşük pil</string>
|
||||
@@ -379,9 +379,9 @@
|
||||
<string name="send_compose">Gönder</string>
|
||||
<string name="compose_send_title">Gönderi oluştur</string>
|
||||
<string name="open_compose_send">Metin oluştur</string>
|
||||
<string name="about_kde_about"><h1>Hakkında</h1> <p>KDE, <a href=https://www.gnu.org/philosophy/free-sw.html>Özgür Yazılım</a> hareketine destek veren yazılım mühendislerinin, sanatçıların, yazarların, çevirmenlerin ve yaratıcıların bir araya geldiği dünya çapında bir topluluktur KDE, Plasma masaüstü ortamını, yüzlerce uygulamayı ve onları destekleyen sayısız yazılım kitaplığını üretir.</p> <p>KDE, işbirlikçi bir kurumdur: Tek bir varlık yönünü veya ürünlerini kontrol etmez. Bunun yerine, dünyanın en kaliteli Özgür Yazılım\'larını üretme hedefi için birlikte çalışırız. Herkes, sen de dahil olmak üzere, KDE\'ye <a href=https://community.kde.org/Get_Involved>katılıp katkıda bulunmakta özgürdür</a>.</p> KDE topluluğu ve ürettiğimiz yazılımlar hakkında daha fazla bilgi için <a href=https://www.kde.org/>https://www.kde.org/</a> adresini ziyaret edin.</string>
|
||||
<string name="about_kde_about"><h1>Hakkında</h1> <p>KDE, <a href=https://www.gnu.org/philosophy/free-sw.html>Özgür Yazılım</a> hareketine destek veren yazılım mühendislerinin, sanatçıların, yazarların, çevirmenlerin ve yaratıcıların bir araya geldiği dünya çapında bir topluluktur KDE, Plasma masaüstü ortamını, yüzlerce uygulamayı ve onları destekleyen sayısız yazılım kitaplığını üretir.</p> <p>KDE, işbirliğine dayalı bir kuruluştur: yönünü veya ürünlerini tek başına denetleyen bir kuruluş yoktur. Bunun yerine, dünyanın en iyi Özgür Yazılımını oluşturma ortak hedefine ulaşmak için birlikte çalışıyoruz. Siz de dahil olmak üzere herkes <a href=https://community.kde.org/Get_Involved>katılabilir</a> ve katkıda bulunabilir.</p> KDE topluluğu ve ürettiğimiz yazılımlar hakkında daha fazla bilgi için <a href=https://www.kde.org/>https://www.kde.org/</a> adresini ziyaret edin.</string>
|
||||
<string name="about_kde_report_bugs_or_wishes"><h1>Hataları veya İsteklerinizi Bildirin</h1> <p>Yazılım her zaman iyileştirilebilir ve KDE takımın bunu yapmaya hazır. Ancak siz de bir şey beklendiği gibi gitmezse veya hata verirse bize bildirin.</p> <p>KDE\'nin bir hata takip sistemi vardır. <a href=https://bugs.kde.org/>https://bugs.kde.org/</a> adresini ziyaret edin veya hakkında ekranının \"Hata Bildir\" düğmesini kullanarak hataları bildirin.</p> Bir iyileştirme için öneriniz varsa bunu bildirmek için hata takip sistemini kullanabilirsiniz; yalnızca \"Wishlist\" ciddiyet düzeyini kullandığınızdan emin olun.</string>
|
||||
<string name="about_kde_join_kde">"<h1>KDE\'ye Katılın</h1> <p>KDE takımının bir üyesi olmak için yazılım geliştirici olmanıza gerek yok. Program arayüzlerini çeviren yerel takımlara katılabilirsiniz. Grafikler, temalar, sesler ve iyileştirilmiş belgelendirme sağlayabilirsiniz. Siz karar verin!</p> <p>Katılabileceğiniz bazı projeler hakkında bilgi almak için <a href=https://community.kde.org/Get_Involved>https://community.kde.org/Get_Involved</a> sayfasını ziyaret edin.</p> Daha fazla bilgiye veya belgeye gereksiniminiz varsa <a href=https://techbase.kde.org/>https://techbase.kde.org/</a> sayfasında aradığınızı bulabilirsiniz."</string>
|
||||
<string name="about_kde_join_kde">"<h1>KDE\'ye Katılın</h1> <p>KDE takımının bir üyesi olmak için yazılım geliştirici olmanıza gerek yok. Program arayüzlerini çeviren yerel takımlara katılabilirsiniz. Grafikler, temalar, sesler ve iyileştirilmiş belgelendirme sağlayabilirsiniz. Karar sizin!</p> <p>Katılabileceğiniz bazı projeler hakkında bilgi almak için <a href=https://community.kde.org/Get_Involved>https://community.kde.org/Get_Involved</a> sayfasını ziyaret edin.</p> Daha fazla bilgiye veya belgeye gereksiniminiz varsa <a href=https://techbase.kde.org/>https://techbase.kde.org/</a> sayfasında aradığınızı bulabilirsiniz."</string>
|
||||
<string name="about_kde_support_kde">"<h1>KDE\'yi Destekleyin</h1> <p>KDE yazılımları her zaman ücretsiz kalmayı sürdürecektir; ancak bunu oluşturmak bedava değildir. </p> <p>Geliştirmeyi desteklemek için KDE topluluğu, kar amacı gütmeyen bir kuruluş olan KDE e.V.\'yi kurmuştur, bu topluluk KDE topluğunu yasal ve finansal konularda temsil eder. KDE e.V. hakkında daha fazla bilgi için <a href=https://ev.kde.org/>https://ev.kde.org/</a> adresini ziyadet edin.</p> <p>KDE, finansal da dahil olmak üzere her türlü katkıdan yarar sağlar. Maddi kaynaklarımızla, geliştiricilerimizin ve diğerlerinin katkıda bulunurken oluşan masraflarını karşılıyoruz. Ayrıca yasal destek ve konferanslar ve toplantılar için de kullanılmaktadır.</p> <p>Emeklerimizi, finansal destekle desteklemeniz için <a href=https://www.kde.org/community/donations/>https://www.kde.org/community/donations/</a> adresinde bulunan yollardan birini kullanabilirsiniz.</p> Desteğiniz için şimdiden teşekkürler."</string>
|
||||
<string name="maintainer_and_developer">Projeyi sürdüren ve geliştirici</string>
|
||||
<string name="developer">Geliştirici</string>
|
||||
|
@@ -97,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">Надсилати як натискання клавіш</string>
|
||||
<string name="mouse_receiver_plugin_description">Отримувати віддалені рухи мишею</string>
|
||||
<string name="mouse_receiver_plugin_name">Отримання даних миші</string>
|
||||
<string name="mouse_receiver_no_permissions">Вам слід увімкнути службу доступності</string>
|
||||
<string name="mouse_receiver_no_permissions">Щоб отримувати сигнали про торкання віддалено, вам слід надати засобам доступності дозвіл на повне керування вашим пристроєм</string>
|
||||
<string name="view_status_title">Стан</string>
|
||||
<string name="battery_status_format">Акумулятор: %d%%</string>
|
||||
<string name="battery_status_low_format">Акумулятор: %d%%, низький заряд</string>
|
||||
|
@@ -97,7 +97,7 @@
|
||||
<string name="pref_plugin_mousepad_send_keystrokes">作为按键发送</string>
|
||||
<string name="mouse_receiver_plugin_description">接收远程鼠标移动</string>
|
||||
<string name="mouse_receiver_plugin_name">鼠标接收器</string>
|
||||
<string name="mouse_receiver_no_permissions">您需要启用无障碍模式</string>
|
||||
<string name="mouse_receiver_no_permissions">要远程接受触摸输入,您必须授予完全控制此设备的访问权限</string>
|
||||
<string name="view_status_title">状态</string>
|
||||
<string name="battery_status_format">电池:%d%%</string>
|
||||
<string name="battery_status_low_format">电池:%d%% 电量低</string>
|
||||
|
@@ -154,7 +154,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
||||
|
||||
<string name="mouse_receiver_plugin_description">Receive remote mouse movement</string>
|
||||
<string name="mouse_receiver_plugin_name">Mouse receiver</string>
|
||||
<string name="mouse_receiver_no_permissions">You need to enable Accessibility Service</string>
|
||||
<string name="mouse_receiver_no_permissions">To receive touch inputs remotely you need to grant Accessibility permissions to fully control your device</string>
|
||||
|
||||
<string name="view_status_title">Status</string>
|
||||
<string name="battery_status_format">Battery: %d%%</string>
|
||||
|
@@ -22,7 +22,6 @@ import android.net.NetworkCapabilities;
|
||||
import android.net.NetworkRequest;
|
||||
import android.os.Build;
|
||||
import android.os.IBinder;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -33,7 +32,6 @@ import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import org.kde.kdeconnect.Backends.BaseLinkProvider;
|
||||
import org.kde.kdeconnect.Backends.LanBackend.LanLinkProvider;
|
||||
import org.kde.kdeconnect.Backends.LoopbackBackend.LoopbackLinkProvider;
|
||||
import org.kde.kdeconnect.Helpers.NotificationHelper;
|
||||
import org.kde.kdeconnect.Plugins.ClibpoardPlugin.ClipboardFloatingActivity;
|
||||
import org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandActivity;
|
||||
@@ -82,10 +80,7 @@ public class BackgroundService extends Service {
|
||||
|
||||
private void registerLinkProviders() {
|
||||
linkProviders.add(new LanLinkProvider(this));
|
||||
String testLabSetting = Settings.System.getString(getContentResolver(), "firebase.test.lab");
|
||||
if ("true".equals(testLabSetting)) {
|
||||
linkProviders.add(new LoopbackLinkProvider(this));
|
||||
}
|
||||
// linkProviders.add(new LoopbackLinkProvider(this));
|
||||
// linkProviders.add(new BluetoothLinkProvider(this));
|
||||
}
|
||||
|
||||
@@ -206,6 +201,7 @@ public class BackgroundService extends Service {
|
||||
.setContentIntent(pi)
|
||||
.setPriority(NotificationCompat.PRIORITY_MIN) //MIN so it's not shown in the status bar before Oreo, on Oreo it will be bumped to LOW
|
||||
.setShowWhen(false)
|
||||
.setForegroundServiceBehavior(NotificationCompat.FOREGROUND_SERVICE_IMMEDIATE)
|
||||
.setAutoCancel(false);
|
||||
notification.setGroup("BackgroundService");
|
||||
|
||||
|
@@ -36,6 +36,7 @@ import org.kde.kdeconnect_tp.R;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
@@ -77,7 +78,7 @@ public class Device implements BaseLink.PacketReceiver {
|
||||
* Constructor for remembered, already-trusted devices.
|
||||
* Given the deviceId, it will load the other properties from SharedPreferences.
|
||||
*/
|
||||
Device(@NonNull Context context, @NonNull String deviceId) {
|
||||
Device(@NonNull Context context, @NonNull String deviceId) throws CertificateException {
|
||||
this.context = context;
|
||||
this.settings = context.getSharedPreferences(deviceId, Context.MODE_PRIVATE);
|
||||
this.deviceInfo = DeviceInfo.loadFromSettings(context, deviceId, settings);
|
||||
@@ -186,6 +187,8 @@ public class Device implements BaseLink.PacketReceiver {
|
||||
|
||||
@Override
|
||||
public void pairingSuccessful() {
|
||||
Log.i("Device", "pairing successful, adding to trusted devices list");
|
||||
|
||||
hidePairingNotification();
|
||||
|
||||
// Store current device certificate so we can check it in the future (TOFU)
|
||||
@@ -195,10 +198,15 @@ public class Device implements BaseLink.PacketReceiver {
|
||||
SharedPreferences preferences = context.getSharedPreferences("trusted_devices", Context.MODE_PRIVATE);
|
||||
preferences.edit().putBoolean(deviceInfo.id, true).apply();
|
||||
|
||||
reloadPluginsFromSettings();
|
||||
try {
|
||||
reloadPluginsFromSettings();
|
||||
|
||||
for (PairingHandler.PairingCallback cb : pairingCallbacks) {
|
||||
cb.pairingSuccessful();
|
||||
for (PairingHandler.PairingCallback cb : pairingCallbacks) {
|
||||
cb.pairingSuccessful();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("PairingHandler", "Exception in pairingSuccessful. Not unpairing because saving the trusted device succeeded");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -212,6 +220,7 @@ public class Device implements BaseLink.PacketReceiver {
|
||||
|
||||
@Override
|
||||
public void unpaired() {
|
||||
Log.i("Device", "unpaired, removing from trusted devices list");
|
||||
SharedPreferences preferences = context.getSharedPreferences("trusted_devices", Context.MODE_PRIVATE);
|
||||
preferences.edit().remove(deviceInfo.id).apply();
|
||||
|
||||
@@ -566,8 +575,6 @@ public class Device implements BaseLink.PacketReceiver {
|
||||
return false;
|
||||
}
|
||||
|
||||
plugins.put(pluginKey, plugin);
|
||||
|
||||
if (!plugin.checkRequiredPermissions()) {
|
||||
Log.d("KDE/addPlugin", "No permission " + pluginKey);
|
||||
plugins.remove(pluginKey);
|
||||
@@ -575,6 +582,7 @@ public class Device implements BaseLink.PacketReceiver {
|
||||
return false;
|
||||
} else {
|
||||
Log.d("KDE/addPlugin", "Permissions OK " + pluginKey);
|
||||
plugins.put(pluginKey, plugin);
|
||||
pluginsWithoutPermissions.remove(pluginKey);
|
||||
if (plugin.checkOptionalPermissions()) {
|
||||
Log.d("KDE/addPlugin", "Optional Permissions OK " + pluginKey);
|
||||
|
@@ -15,6 +15,7 @@ import org.kde.kdeconnect.Helpers.SecurityHelpers.SslHelper
|
||||
import org.kde.kdeconnect_tp.R
|
||||
import java.security.cert.Certificate
|
||||
import java.security.cert.CertificateEncodingException
|
||||
import java.security.cert.CertificateException
|
||||
|
||||
/**
|
||||
* DeviceInfo contains all the properties needed to instantiate a Device.
|
||||
@@ -70,6 +71,7 @@ class DeviceInfo(
|
||||
* Recreates a DeviceInfo object that was persisted using saveInSettings()
|
||||
*/
|
||||
@JvmStatic
|
||||
@Throws(CertificateException::class)
|
||||
fun loadFromSettings(context : Context, deviceId: String, settings: SharedPreferences): DeviceInfo {
|
||||
val deviceName = settings.getString("deviceName", "unknown")!!
|
||||
val deviceType = DeviceType.fromString(settings.getString("deviceType", "desktop")!!)
|
||||
|
@@ -16,6 +16,7 @@ import android.preference.PreferenceManager;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
|
||||
import com.univocity.parsers.common.TextParsingException;
|
||||
import com.univocity.parsers.csv.CsvParser;
|
||||
import com.univocity.parsers.csv.CsvParserSettings;
|
||||
|
||||
@@ -111,7 +112,7 @@ public class DeviceHelper {
|
||||
Log.e("DeviceHelper", "Didn't find a device name for " + Build.MODEL);
|
||||
}
|
||||
}
|
||||
} catch(IOException e) {
|
||||
} catch(IOException | TextParsingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
fetchingName = false;
|
||||
|
@@ -24,6 +24,7 @@ import org.kde.kdeconnect.Plugins.Plugin;
|
||||
import org.kde.kdeconnect.Plugins.PluginFactory;
|
||||
import org.kde.kdeconnect.UserInterface.ThemeUtil;
|
||||
|
||||
import java.security.cert.CertificateException;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@@ -113,9 +114,15 @@ public class KdeConnect extends Application {
|
||||
for (String deviceId : trustedDevices) {
|
||||
//Log.e("BackgroundService", "Loading device "+deviceId);
|
||||
if (preferences.getBoolean(deviceId, false)) {
|
||||
Device device = new Device(this, deviceId);
|
||||
devices.put(deviceId, device);
|
||||
device.addPairingCallback(devicePairingCallback);
|
||||
try {
|
||||
Device device = new Device(this, deviceId);
|
||||
devices.put(deviceId, device);
|
||||
device.addPairingCallback(devicePairingCallback);
|
||||
} catch (CertificateException e) {
|
||||
Log.w("KdeConnect", "Couldn't load the certificate for a remembered device. Removing from trusted list.");
|
||||
e.printStackTrace();
|
||||
preferences.edit().remove(deviceId).apply();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -26,17 +26,14 @@ public class KdeConnectBroadcastReceiver extends BroadcastReceiver {
|
||||
Log.i("KdeConnect", "MyUpdateReceiver");
|
||||
BackgroundService.Start(context);
|
||||
break;
|
||||
case Intent.ACTION_PACKAGE_REPLACED:
|
||||
Log.i("KdeConnect", "UpdateReceiver");
|
||||
if (!intent.getData().getSchemeSpecificPart().equals(context.getPackageName())) {
|
||||
Log.i("KdeConnect", "Ignoring, it's not me!");
|
||||
return;
|
||||
}
|
||||
BackgroundService.Start(context);
|
||||
break;
|
||||
case Intent.ACTION_BOOT_COMPLETED:
|
||||
Log.i("KdeConnect", "KdeConnectBroadcastReceiver");
|
||||
BackgroundService.Start(context);
|
||||
try {
|
||||
BackgroundService.Start(context);
|
||||
} catch (IllegalStateException e) { // To catch ForegroundServiceStartNotAllowedException
|
||||
Log.w("BroadcastReceiver", "Couldn't start the foreground service.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
break;
|
||||
case WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION:
|
||||
case WifiManager.WIFI_STATE_CHANGED_ACTION:
|
||||
|
@@ -24,7 +24,6 @@ import org.kde.kdeconnect_tp.R;
|
||||
public class BatteryPlugin extends Plugin {
|
||||
|
||||
private final static String PACKET_TYPE_BATTERY = "kdeconnect.battery";
|
||||
private final static String PACKET_TYPE_BATTERY_REQUEST = "kdeconnect.battery.request";
|
||||
|
||||
// keep these fields in sync with kdeconnect-kded:BatteryPlugin.h:ThresholdBatteryEvent
|
||||
private static final int THRESHOLD_EVENT_NONE = 0;
|
||||
@@ -95,11 +94,6 @@ public class BatteryPlugin extends Plugin {
|
||||
intentFilter.addAction(Intent.ACTION_BATTERY_OKAY);
|
||||
Intent currentState = context.registerReceiver(receiver, intentFilter);
|
||||
receiver.onReceive(context, currentState);
|
||||
|
||||
// Request new battery info from the linked device
|
||||
NetworkPacket np = new NetworkPacket(PACKET_TYPE_BATTERY_REQUEST);
|
||||
np.set("request", true);
|
||||
device.sendPacket(np);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -111,16 +105,11 @@ public class BatteryPlugin extends Plugin {
|
||||
|
||||
@Override
|
||||
public boolean onPacketReceived(@NonNull NetworkPacket np) {
|
||||
|
||||
if (np.getBoolean("request")) {
|
||||
device.sendPacket(batteryInfo);
|
||||
if (!PACKET_TYPE_BATTERY.equals(np.getType())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (PACKET_TYPE_BATTERY.equals(np.getType())) {
|
||||
remoteBatteryInfo = new DeviceBatteryInfo(np);
|
||||
device.onPluginsChanged();
|
||||
}
|
||||
|
||||
remoteBatteryInfo = new DeviceBatteryInfo(np);
|
||||
device.onPluginsChanged();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -140,12 +129,12 @@ public class BatteryPlugin extends Plugin {
|
||||
|
||||
@Override
|
||||
public @NonNull String[] getSupportedPacketTypes() {
|
||||
return new String[]{PACKET_TYPE_BATTERY_REQUEST, PACKET_TYPE_BATTERY};
|
||||
return new String[]{PACKET_TYPE_BATTERY};
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull String[] getOutgoingPacketTypes() {
|
||||
return new String[]{PACKET_TYPE_BATTERY_REQUEST, PACKET_TYPE_BATTERY};
|
||||
return new String[]{PACKET_TYPE_BATTERY};
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -57,13 +57,6 @@ public class ConnectivityReportPlugin extends Plugin {
|
||||
*/
|
||||
private final static String PACKET_TYPE_CONNECTIVITY_REPORT = "kdeconnect.connectivity_report";
|
||||
|
||||
/**
|
||||
* Packet sent to request the current connectivity state
|
||||
* <p>
|
||||
* The request packet shall contain no body
|
||||
*/
|
||||
private final static String PACKET_TYPE_CONNECTIVITY_REPORT_REQUEST = "kdeconnect.connectivity_report.request";
|
||||
|
||||
private final NetworkPacket connectivityInfo = new NetworkPacket(PACKET_TYPE_CONNECTIVITY_REPORT);
|
||||
|
||||
OnSubscriptionsChangedListener subListener = null;
|
||||
@@ -219,29 +212,28 @@ public class ConnectivityReportPlugin extends Plugin {
|
||||
runWithLooper(() -> {
|
||||
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
TelephonyHelper.cancelActiveSubscriptionIDsListener(context, subListener);
|
||||
if (subListener != null) {
|
||||
TelephonyHelper.cancelActiveSubscriptionIDsListener(context, subListener);
|
||||
subListener = null;
|
||||
}
|
||||
}
|
||||
for (Integer subID : listeners.keySet()) {
|
||||
Log.i("ConnectivityReport", "Removed subscription ID " + subID);
|
||||
tm.listen(listeners.get(subID), PhoneStateListener.LISTEN_NONE);
|
||||
}
|
||||
listeners.clear();
|
||||
states.clear();
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPacketReceived(@NonNull NetworkPacket np) {
|
||||
if (PACKET_TYPE_CONNECTIVITY_REPORT_REQUEST.equals(np.getType())) {
|
||||
Log.i("ConnectivityReport", "Requested");
|
||||
serializeSignalStrengths();
|
||||
device.sendPacket(connectivityInfo);
|
||||
}
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull String[] getSupportedPacketTypes() {
|
||||
return new String[]{PACKET_TYPE_CONNECTIVITY_REPORT_REQUEST};
|
||||
return new String[]{};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -17,12 +17,13 @@ import androidx.fragment.app.DialogFragment;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.kde.kdeconnect.NetworkPacket;
|
||||
import org.kde.kdeconnect.Plugins.Plugin;
|
||||
import org.kde.kdeconnect.Plugins.PluginFactory;
|
||||
import org.kde.kdeconnect.Plugins.RemoteKeyboardPlugin.RemoteKeyboardPlugin;
|
||||
import org.kde.kdeconnect.UserInterface.MainActivity;
|
||||
import org.kde.kdeconnect.UserInterface.StartActivityAlertDialogFragment;
|
||||
import org.kde.kdeconnect_tp.R;
|
||||
|
||||
//@PluginFactory.LoadablePlugin
|
||||
@PluginFactory.LoadablePlugin
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
public class MouseReceiverPlugin extends Plugin {
|
||||
private final static String PACKET_TYPE_MOUSEPAD_REQUEST = "kdeconnect.mousepad.request";
|
||||
|
@@ -216,7 +216,7 @@ public class MprisMediaSession implements
|
||||
}
|
||||
|
||||
private MprisPlugin.MprisPlayer getPlayerFromDevice(Device device, MprisPlugin.MprisPlayer preferredPlayer) {
|
||||
if (!mprisDevices.contains(device.getDeviceId()))
|
||||
if (device == null || !mprisDevices.contains(device.getDeviceId()))
|
||||
return null;
|
||||
|
||||
MprisPlugin plugin = device.getPlugin(MprisPlugin.class);
|
||||
@@ -264,18 +264,15 @@ public class MprisMediaSession implements
|
||||
return;
|
||||
}
|
||||
|
||||
synchronized (instance) {
|
||||
if (mediaSession == null) {
|
||||
mediaSession = new MediaSessionCompat(context, MPRIS_MEDIA_SESSION_TAG);
|
||||
mediaSession.setCallback(mediaSessionCallback, new Handler(context.getMainLooper()));
|
||||
// Deprecated flags not required in Build.VERSION_CODES.O and later
|
||||
mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
|
||||
}
|
||||
}
|
||||
|
||||
//Make sure our information is up-to-date
|
||||
MprisPlugin.MprisPlayer currentPlayer = updateCurrentPlayer();
|
||||
|
||||
Device device = KdeConnect.getInstance().getDevice(notificationDevice);
|
||||
if (device == null) {
|
||||
closeMediaNotification();
|
||||
return;
|
||||
}
|
||||
|
||||
//If the player disappeared (and no other playing one found), just remove the notification
|
||||
if (currentPlayer == null) {
|
||||
closeMediaNotification();
|
||||
@@ -304,7 +301,6 @@ public class MprisMediaSession implements
|
||||
metadata.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, albumArt);
|
||||
}
|
||||
|
||||
mediaSession.setMetadata(metadata.build());
|
||||
PlaybackStateCompat.Builder playbackState = new PlaybackStateCompat.Builder();
|
||||
|
||||
if (currentPlayer.isPlaying()) {
|
||||
@@ -363,7 +359,7 @@ public class MprisMediaSession implements
|
||||
.setShowWhen(false)
|
||||
.setColor(ContextCompat.getColor(context, R.color.primary))
|
||||
.setVisibility(androidx.core.app.NotificationCompat.VISIBILITY_PUBLIC)
|
||||
.setSubText(KdeConnect.getInstance().getDevice(notificationDevice).getName());
|
||||
.setSubText(device.getName());
|
||||
|
||||
notification.setContentTitle(currentPlayer.getTitle());
|
||||
|
||||
@@ -421,7 +417,6 @@ public class MprisMediaSession implements
|
||||
}
|
||||
}
|
||||
playbackState.setActions(playbackActions);
|
||||
mediaSession.setPlaybackState(playbackState.build());
|
||||
|
||||
//Only allow deletion if no music is currentPlayer
|
||||
notification.setOngoing(currentPlayer.isPlaying());
|
||||
@@ -435,14 +430,24 @@ public class MprisMediaSession implements
|
||||
} else if (numActions >= 3) {
|
||||
mediaStyle.setShowActionsInCompactView(0, 1, 2);
|
||||
}
|
||||
mediaStyle.setMediaSession(mediaSession.getSessionToken());
|
||||
notification.setStyle(mediaStyle);
|
||||
notification.setGroup("MprisMediaSession");
|
||||
|
||||
//Display the notification
|
||||
mediaSession.setActive(true);
|
||||
final NotificationManager nm = ContextCompat.getSystemService(context, NotificationManager.class);
|
||||
nm.notify(MPRIS_MEDIA_NOTIFICATION_ID, notification.build());
|
||||
synchronized (instance) {
|
||||
if (mediaSession == null) {
|
||||
mediaSession = new MediaSessionCompat(context, MPRIS_MEDIA_SESSION_TAG);
|
||||
mediaSession.setCallback(mediaSessionCallback, new Handler(context.getMainLooper()));
|
||||
// Deprecated flags not required in Build.VERSION_CODES.O and later
|
||||
mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
|
||||
}
|
||||
mediaSession.setMetadata(metadata.build());
|
||||
mediaSession.setPlaybackState(playbackState.build());
|
||||
mediaStyle.setMediaSession(mediaSession.getSessionToken());
|
||||
notification.setStyle(mediaStyle);
|
||||
mediaSession.setActive(true);
|
||||
final NotificationManager nm = ContextCompat.getSystemService(context, NotificationManager.class);
|
||||
nm.notify(MPRIS_MEDIA_NOTIFICATION_ID, notification.build());
|
||||
}
|
||||
}
|
||||
|
||||
public void closeMediaNotification() {
|
||||
@@ -496,11 +501,15 @@ public class MprisMediaSession implements
|
||||
|
||||
@Override
|
||||
public void onListenerConnected(NotificationReceiver service) {
|
||||
for (StatusBarNotification n : service.getActiveNotifications()) {
|
||||
if ("com.spotify.music".equals(n.getPackageName())) {
|
||||
spotifyRunning = true;
|
||||
updateMediaNotification();
|
||||
try {
|
||||
for (StatusBarNotification n : service.getActiveNotifications()) {
|
||||
if ("com.spotify.music".equals(n.getPackageName())) {
|
||||
spotifyRunning = true;
|
||||
updateMediaNotification();
|
||||
}
|
||||
}
|
||||
} catch(SecurityException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -245,7 +245,10 @@ public class MprisNowPlayingFragment extends Fragment implements VolumeKeyListen
|
||||
return; //Player hasn't actually changed
|
||||
}
|
||||
targetPlayer = plugin.getPlayerStatus(player);
|
||||
targetPlayerName = targetPlayer.getPlayerName();
|
||||
if (targetPlayer != null) {
|
||||
targetPlayerName = targetPlayer.getPlayerName();
|
||||
}
|
||||
|
||||
updatePlayerStatus(plugin);
|
||||
|
||||
if (targetPlayer != null && targetPlayer.isPlaying()) {
|
||||
|
Reference in New Issue
Block a user