mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-09-01 06:35:09 +00:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
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="12603"
|
||||
android:versionName="1.26.3">
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.telephony"
|
||||
|
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.
|
86
po/bg/kdeconnect-android-store.po
Normal file
86
po/bg/kdeconnect-android-store.po
Normal file
@@ -0,0 +1,86 @@
|
||||
# KDE Connect store listing texts
|
||||
# Copyright (C) 2014 Albert Vaca Cintora
|
||||
# This file is distributed under the same license as kdeconnect-android.
|
||||
#
|
||||
# Albert Vaca Cintora <albertvaka@gmail.com>, 2014.
|
||||
# Mincho Kondarev <mkondarev@yahoo.de>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2019-06-30 11:38+0200\n"
|
||||
"PO-Revision-Date: 2023-06-22 20:53+0200\n"
|
||||
"Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n"
|
||||
"Language: bg\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Lokalize 23.04.2\n"
|
||||
|
||||
#: dummy:1
|
||||
msgid "Integrate Android with the KDE Plasma Desktop."
|
||||
msgstr "Интеграция на Android с работната среда Plasma на KDE."
|
||||
|
||||
#: dummy:2
|
||||
msgid ""
|
||||
"KDE Connect provides several features to integrate your phone and your"
|
||||
" computer:\n"
|
||||
"\n"
|
||||
"- Share files and URLs to KDE from any app, without wires.\n"
|
||||
"- Touchpad emulation: Use your phone screen as your computer's touchpad*.\n"
|
||||
"- Notifications sync (4.3+): Read your Android notifications from the"
|
||||
" desktop.\n"
|
||||
"- Shared clipboard: copy and paste between your phone and your computer.\n"
|
||||
"- Multimedia remote control: Use your phone as a remote for Linux media"
|
||||
" players.\n"
|
||||
"- WiFi connection: no usb wire or bluetooth needed.\n"
|
||||
"- RSA 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"
|
||||
"*NOTE for Ubuntu users: The Ubuntu folks are not updating their repos as fast"
|
||||
" as this app gets updated. Some features will not work if the KDE Connect"
|
||||
" version in you desktop doesn't match the one in your phone. To make sure you"
|
||||
" always have the latest version on your desktop, use this PPA repository: "
|
||||
" https://code.launchpad.net/~vikoadi/+archive/ubuntu/ppa/ \n"
|
||||
"\n"
|
||||
"This app is part of an open source project, visit the website to grab the"
|
||||
" sources.\n"
|
||||
msgstr ""
|
||||
"KDE Connect предоставя няколко функции за интегриране на телефона с "
|
||||
"компютъра:\n"
|
||||
"\n"
|
||||
"- Безжично поделяне на файлове и URL адреси в KDE от всяко приложение.\n"
|
||||
"- Емулация на тъчпад: Използвайте екрана на телефона си като тъчпад на"
|
||||
" компютъра*.\n"
|
||||
"- Синхронизиране на известия (4.3+): Четете известията си за Android от "
|
||||
"десктопа.\n"
|
||||
"- Споделен клипборд: копиране и поставяне между телефона и компютъра.\n"
|
||||
"- Мултимедийно дистанционно управление: Използвайте телефона си като"
|
||||
" дистанционно управление за Linux мултимедийни "
|
||||
"плейъри.\n"
|
||||
"- WiFi връзка: не е необходим USB кабел или Bluetooth.\n"
|
||||
"- RSA криптиране: информацията ви е сигурна.\n"
|
||||
"\n"
|
||||
"Моля, обърнете внимание, че за тази функция ще трябва да инсталирате KDE"
|
||||
" Connect на компютъра си "
|
||||
"и да поддържате версията за настолни компютри в актуално състояние с версията"
|
||||
" за Android, "
|
||||
"за да работят най-новите функции.\n"
|
||||
"\n"
|
||||
"*Забележка за потребителите на Ubuntu: Ubuntu не актуализират своите"
|
||||
" хранилища "
|
||||
"толкова бързо, колкото се обновява това приложение. Някои функции няма да"
|
||||
" работят, ако KDE "
|
||||
"Connect в десктопа не съвпада с версията в телефона ви. За да да сте сигурни,"
|
||||
" че винаги "
|
||||
"имате най-новата версия на десктопа си, използвайте това PPA "
|
||||
"хранилище: https://code.launchpad.net/~vikoadi/+archive/ubuntu/ppa/ \n"
|
||||
"\n"
|
||||
"Това приложение е част от проект с отворен код, посетете уебсайта, за да"
|
||||
" изтеглите "
|
||||
"изходния код.\n"
|
@@ -186,6 +186,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 +197,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 +219,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 +574,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 +581,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);
|
||||
|
@@ -264,13 +264,10 @@ 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);
|
||||
}
|
||||
Device device = KdeConnect.getInstance().getDevice(notificationDevice);
|
||||
if (device == null) {
|
||||
closeMediaNotification();
|
||||
return;
|
||||
}
|
||||
|
||||
//Make sure our information is up-to-date
|
||||
@@ -282,6 +279,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);
|
||||
}
|
||||
}
|
||||
|
||||
updateRemoteDeviceVolumeControl();
|
||||
|
||||
MediaMetadataCompat.Builder metadata = new MediaMetadataCompat.Builder();
|
||||
@@ -363,7 +369,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());
|
||||
|
||||
|
@@ -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