Compare commits
36 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
275cd03b19 | ||
|
c0a70e35f0 | ||
|
8f3e0a8555 | ||
|
2f77e24ad1 | ||
|
5b694a3b3e | ||
|
9a04f24de6 | ||
|
39fba2ef2a | ||
|
de66bdfae3 | ||
|
017d05b189 | ||
|
d6264c3359 | ||
|
3e70c21031 | ||
|
2a6325c472 | ||
|
3aadc94278 | ||
|
9e8efb1822 | ||
|
74f5e2bf84 | ||
|
45fdf3c0ac | ||
|
e00376a316 | ||
|
f41fb4a9da | ||
|
e9a2cbd36b | ||
|
d5cb11e6c2 | ||
|
3b0a3e265d | ||
|
a5e9b29e20 | ||
|
307071e9e7 | ||
|
7c3e223e29 | ||
|
899c73d254 | ||
|
bd14c462dd | ||
|
e9b4ca70e9 | ||
|
706e3f71b5 | ||
|
f9b69a7e45 | ||
|
299e7e8375 | ||
|
f82c9c08cf | ||
|
25e1505df0 | ||
|
4d65382fa1 | ||
|
bf02f639b7 | ||
|
067f01134a | ||
|
7e2df27adb |
@@ -1,11 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.kde.kdeconnect_tp"
|
||||
android:versionCode="807"
|
||||
android:versionName="0.8g">
|
||||
android:versionCode="808"
|
||||
android:versionName="0.8h">
|
||||
|
||||
<uses-sdk android:minSdkVersion="9"
|
||||
android:targetSdkVersion="21" />
|
||||
android:targetSdkVersion="22" />
|
||||
|
||||
<supports-screens
|
||||
android:smallScreens="true"
|
||||
@@ -32,6 +32,7 @@
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/icon"
|
||||
android:label="KDE Connect"
|
||||
android:theme="@style/KdeConnectTheme"
|
||||
>
|
||||
|
||||
<service
|
||||
@@ -40,7 +41,6 @@
|
||||
</service>
|
||||
|
||||
<activity
|
||||
android:theme="@style/Theme.AppCompat"
|
||||
android:name="org.kde.kdeconnect.UserInterface.MainActivity"
|
||||
android:label="KDE Connect" >
|
||||
|
||||
@@ -60,7 +60,6 @@
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:theme="@style/Theme.AppCompat"
|
||||
android:name="org.kde.kdeconnect.UserInterface.DeviceActivity"
|
||||
android:label="@string/device"
|
||||
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity"
|
||||
@@ -70,7 +69,6 @@
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:theme="@style/Theme.AppCompat"
|
||||
android:name="org.kde.kdeconnect.UserInterface.PairActivity"
|
||||
android:label="@string/pair_device"
|
||||
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity"
|
||||
@@ -136,7 +134,6 @@
|
||||
<!-- Plugin-related activities and services -->
|
||||
|
||||
<activity
|
||||
android:theme="@style/Theme.AppCompat"
|
||||
android:name="org.kde.kdeconnect.Plugins.MprisPlugin.MprisActivity"
|
||||
android:label="@string/remote_control"
|
||||
android:parentActivityName="org.kde.kdeconnect.UserInterface.DeviceActivity"
|
||||
@@ -146,7 +143,6 @@
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:theme="@style/Theme.AppCompat"
|
||||
android:name="org.kde.kdeconnect.Plugins.MousePadPlugin.MousePadActivity"
|
||||
android:label="@string/remote_control"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize"
|
||||
@@ -159,7 +155,6 @@
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:theme="@style/Theme.AppCompat"
|
||||
android:name="org.kde.kdeconnect.Plugins.SharePlugin.ShareActivity"
|
||||
android:label="KDE Connect"
|
||||
>
|
||||
@@ -185,7 +180,6 @@
|
||||
<activity
|
||||
android:name="org.kde.kdeconnect.Plugins.NotificationsPlugin.NotificationFilterActivity"
|
||||
android:label="@string/title_activity_notification_filter"
|
||||
android:theme="@style/Theme.AppCompat"
|
||||
android:parentActivityName="org.kde.kdeconnect.UserInterface.PluginSettingsActivity" >
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
|
25
README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# KDE Connect - Android app
|
||||
|
||||
KDE Connect is a multi-platform app that allows your devices to communicate (eg: your phone and your computer).
|
||||
|
||||
## (Some) Features
|
||||
- **Shared clipboard**: copy and paste between your phone and your computer (or any other device).
|
||||
- **Notification sync**: Read your Android notifications from the desktop.
|
||||
- **Share files and URLs** instantly from one device to another.
|
||||
- **Multimedia remote control**: Use your phone as a remote for Linux media players.
|
||||
- **Virtual touchpad**: Use your phone screen as your computer's touchpad.
|
||||
|
||||
All this without wires, over the already existing WiFi network, and using a secure, encrypted protocol.
|
||||
|
||||
## About this app
|
||||
|
||||
This is a native Android port of the KDE Connect Qt app. You will find a more complete readme about KDE Connect [here](https://github.com/albertvaka/kdeconnect-kde).
|
||||
|
||||
## How to install this app
|
||||
|
||||
You can install this app from the [Play Store](https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp) as well as [F-Droid](https://f-droid.org/repository/browse/?fdid=org.kde.kdeconnect_tp). Note you will also need to install the [desktop app](https://github.com/albertvaka/kdeconnect-kde) for it to work.
|
||||
|
||||
## License
|
||||
[GNU GPL v2](https://www.gnu.org/licenses/gpl-2.0.html) and [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.html)
|
||||
|
||||
If you are reading this from Github, you should know that this is just a mirror of the [KDE Project repo](https://projects.kde.org/projects/playground/base/kdeconnect-android/repository/).
|
32
build.gradle
@@ -10,11 +10,11 @@ buildscript {
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 21
|
||||
buildToolsVersion '21.1.2'
|
||||
compileSdkVersion 22
|
||||
buildToolsVersion '22.0.1'
|
||||
defaultConfig {
|
||||
minSdkVersion 9
|
||||
targetSdkVersion 21
|
||||
targetSdkVersion 22
|
||||
}
|
||||
sourceSets {
|
||||
main {
|
||||
@@ -24,19 +24,24 @@ android {
|
||||
res.srcDirs = ['res']
|
||||
assets.srcDirs = ['assets']
|
||||
}
|
||||
androidTest {
|
||||
java.srcDirs = ['tests']
|
||||
}
|
||||
}
|
||||
packagingOptions {
|
||||
exclude "META-INF/DEPENDENCIES"
|
||||
exclude "META-INF/NOTICE"
|
||||
exclude "META-INF/LICENSE"
|
||||
exclude "META-INF/LICENSE.txt"
|
||||
exclude "META-INF/NOTICE.txt"
|
||||
pickFirst "META-INF/DEPENDENCIES"
|
||||
pickFirst "META-INF/LICENSE"
|
||||
pickFirst "META-INF/NOTICE"
|
||||
}
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
checkReleaseBuilds false
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled true
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,11 +49,18 @@ dependencies {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
compile 'com.android.support:support-v4:21.0.3'
|
||||
compile 'com.android.support:appcompat-v7:21.0.3'
|
||||
compile 'com.android.support:support-v4:22.2.0'
|
||||
compile 'com.android.support:appcompat-v7:22.2.0'
|
||||
compile 'org.apache.mina:mina-core:2.0.9'
|
||||
compile 'org.apache.sshd:sshd-core:0.8.0'
|
||||
compile 'org.bouncycastle:bcprov-jdk16:1.46'
|
||||
|
||||
|
||||
androidTestCompile 'org.mockito:mockito-core:1.10.19'
|
||||
|
||||
// Because mockito has some problems with dex environment
|
||||
androidTestCompile 'com.google.dexmaker:dexmaker:1.1'
|
||||
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.1'
|
||||
|
||||
//compile fileTree(dir: 'libs', include: '*.jar')
|
||||
}
|
||||
|
28
proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in {SDKHOME}/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the proguardFiles
|
||||
# directive in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Allow obfuscation of android.support.v7.internal.view.menu.**
|
||||
# to avoid problem on Samsung 4.2.2 devices with appcompat v21
|
||||
# see https://code.google.com/p/android/issues/detail?id=78377
|
||||
-keep class !android.support.v7.internal.view.menu.**,** {*;}
|
||||
|
||||
-dontwarn org.apache.sshd.**
|
||||
-dontwarn org.apache.mina.**
|
||||
-dontwarn org.bouncycastle.**
|
||||
-dontwarn org.slf4j.**
|
||||
|
BIN
res/drawable-hdpi/ic_device_laptop.png
Normal file
After Width: | Height: | Size: 627 B |
BIN
res/drawable-hdpi/ic_device_laptop_selected.png
Normal file
After Width: | Height: | Size: 671 B |
BIN
res/drawable-hdpi/ic_device_phone.png
Normal file
After Width: | Height: | Size: 560 B |
BIN
res/drawable-hdpi/ic_device_phone_selected.png
Normal file
After Width: | Height: | Size: 561 B |
BIN
res/drawable-hdpi/ic_device_tablet.png
Normal file
After Width: | Height: | Size: 444 B |
BIN
res/drawable-hdpi/ic_device_tablet_selected.png
Normal file
After Width: | Height: | Size: 456 B |
BIN
res/drawable-hdpi/mpris_plugin_action.png
Normal file
After Width: | Height: | Size: 477 B |
BIN
res/drawable-hdpi/share_plugin_action.png
Normal file
After Width: | Height: | Size: 441 B |
BIN
res/drawable-hdpi/touchpad_plugin_action.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 431 B After Width: | Height: | Size: 431 B |
Before Width: | Height: | Size: 750 B After Width: | Height: | Size: 750 B |
Before Width: | Height: | Size: 365 B After Width: | Height: | Size: 365 B |
BIN
res/drawable-mdpi/ic_device_laptop.png
Normal file
After Width: | Height: | Size: 377 B |
BIN
res/drawable-mdpi/ic_device_laptop_selected.png
Normal file
After Width: | Height: | Size: 385 B |
BIN
res/drawable-mdpi/ic_device_phone.png
Normal file
After Width: | Height: | Size: 402 B |
BIN
res/drawable-mdpi/ic_device_phone_selected.png
Normal file
After Width: | Height: | Size: 423 B |
BIN
res/drawable-mdpi/ic_device_tablet.png
Normal file
After Width: | Height: | Size: 304 B |
BIN
res/drawable-mdpi/ic_device_tablet_selected.png
Normal file
After Width: | Height: | Size: 299 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
BIN
res/drawable-mdpi/mpris_plugin_action.png
Normal file
After Width: | Height: | Size: 311 B |
BIN
res/drawable-mdpi/share_plugin_action.png
Normal file
After Width: | Height: | Size: 373 B |
BIN
res/drawable-mdpi/touchpad_plugin_action.png
Normal file
After Width: | Height: | Size: 841 B |
BIN
res/drawable-xhdpi/ic_device_laptop.png
Normal file
After Width: | Height: | Size: 790 B |
BIN
res/drawable-xhdpi/ic_device_laptop_selected.png
Normal file
After Width: | Height: | Size: 839 B |
BIN
res/drawable-xhdpi/ic_device_phone.png
Normal file
After Width: | Height: | Size: 693 B |
BIN
res/drawable-xhdpi/ic_device_phone_selected.png
Normal file
After Width: | Height: | Size: 733 B |
BIN
res/drawable-xhdpi/ic_device_tablet.png
Normal file
After Width: | Height: | Size: 611 B |
BIN
res/drawable-xhdpi/ic_device_tablet_selected.png
Normal file
After Width: | Height: | Size: 623 B |
BIN
res/drawable-xhdpi/mpris_plugin_action.png
Normal file
After Width: | Height: | Size: 667 B |
BIN
res/drawable-xhdpi/share_plugin_action.png
Normal file
After Width: | Height: | Size: 684 B |
BIN
res/drawable-xhdpi/touchpad_plugin_action.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
res/drawable-xxhdpi/ic_device_laptop.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
res/drawable-xxhdpi/ic_device_laptop_selected.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
res/drawable-xxhdpi/ic_device_phone.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
res/drawable-xxhdpi/ic_device_phone_selected.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
res/drawable-xxhdpi/ic_device_tablet.png
Normal file
After Width: | Height: | Size: 843 B |
BIN
res/drawable-xxhdpi/ic_device_tablet_selected.png
Normal file
After Width: | Height: | Size: 873 B |
BIN
res/drawable-xxhdpi/mpris_plugin_action.png
Normal file
After Width: | Height: | Size: 686 B |
BIN
res/drawable-xxhdpi/share_plugin_action.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
res/drawable-xxhdpi/touchpad_plugin_action.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
res/drawable-xxxhdpi/ic_device_laptop.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
res/drawable-xxxhdpi/ic_device_laptop_selected.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
res/drawable-xxxhdpi/ic_device_phone.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
res/drawable-xxxhdpi/ic_device_phone_selected.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
res/drawable-xxxhdpi/ic_device_tablet.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
res/drawable-xxxhdpi/ic_device_tablet_selected.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
@@ -10,14 +10,11 @@
|
||||
<string name="pref_plugin_clipboard_desc">شارك محتوى الحافظة</string>
|
||||
<string name="pref_plugin_mousepad">الدَّخل البعيد</string>
|
||||
<string name="pref_plugin_mousepad_desc">استخدم هاتفك كفأرة ولوحة مفاتيح</string>
|
||||
<string name="pref_plugin_mpris">تحكّمات الوسائط المتعدّدة البعيدة</string>
|
||||
<string name="pref_plugin_mpris_desc">تحكّم بالصّوت والصّورة من هاتفك</string>
|
||||
<string name="pref_plugin_ping">وخزة</string>
|
||||
<string name="pref_plugin_ping_desc">أرسل واستقبل وخزات</string>
|
||||
<string name="pref_plugin_notifications">مزامنة الإخطارات</string>
|
||||
<string name="pref_plugin_notifications_desc">انفذ إلى إخطاراتك من أجهزة أخرى</string>
|
||||
<string name="pref_plugin_sharereceiver">شارك المستقبل</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">احفظ الملفّات الواردة إلى تخزين الهاتف</string>
|
||||
<string name="plugin_not_available">هذه الميزة غير متوفّرة في إصدار أندرويد لديك</string>
|
||||
<string name="device_list_empty">لا أجهزة</string>
|
||||
<string name="ok">حسنًا</string>
|
||||
@@ -25,8 +22,6 @@
|
||||
<string name="open_settings">افتح الإعدادات</string>
|
||||
<string name="no_permissions">عليك إعطاء التّطبيق صلاحيّات للنّفاذ إلى الإخطارات</string>
|
||||
<string name="send_ping">أرسل وخزة</string>
|
||||
<string name="open_mpris_controls">افتح التّحكّم البعيد</string>
|
||||
<string name="open_mousepad">افتح تحكّم لوحة اللمس</string>
|
||||
<string-array name="mousepad_tap_entries">
|
||||
<item/>
|
||||
<item/>
|
||||
|
@@ -8,7 +8,6 @@
|
||||
<string name="pref_plugin_sftp_desc">Позволява отдалечен достъп до файловата система на телефона</string>
|
||||
<string name="pref_plugin_clipboard">Синхронизиране на буфера</string>
|
||||
<string name="pref_plugin_clipboard_desc">Споделяне съдържанието на буфера</string>
|
||||
<string name="pref_plugin_mpris">Отдалечен мултимедиен контрол</string>
|
||||
<string name="pref_plugin_mpris_desc">Управление на звук/видео от телефона</string>
|
||||
<string name="pref_plugin_ping">Пинг</string>
|
||||
<string name="pref_plugin_ping_desc">Изпращане и получаване на пинг</string>
|
||||
@@ -21,7 +20,6 @@
|
||||
<string name="open_settings">Отваряне на настройките</string>
|
||||
<string name="no_permissions">Трябва да осигурите права за достъп до уведомленията</string>
|
||||
<string name="send_ping">Изпращане на пинг</string>
|
||||
<string name="open_mpris_controls">Отваряне на отдалечен контрол</string>
|
||||
<string-array name="mousepad_tap_entries">
|
||||
<item>Right click</item>
|
||||
<item>Middle click</item>
|
||||
|
@@ -10,14 +10,11 @@
|
||||
<string name="pref_plugin_clipboard_desc">Podijeli sadržaj sandučića</string>
|
||||
<string name="pref_plugin_mousepad">Daljinska kontrola ulaza</string>
|
||||
<string name="pref_plugin_mousepad_desc">Koristi telofon kao miš i tastaturu</string>
|
||||
<string name="pref_plugin_mpris">Daljinske kontrole multimedije</string>
|
||||
<string name="pref_plugin_mpris_desc">Upravljajte zvukom/slikom sa vašeg telefona</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Šalji i primaj ping-ove</string>
|
||||
<string name="pref_plugin_notifications">Sinhronizovano obavještenje</string>
|
||||
<string name="pref_plugin_notifications_desc">Pristupite vašim notifikacijama sa drugog uređaja</string>
|
||||
<string name="pref_plugin_sharereceiver">Podijeli prijemnik</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Spasi dolazeće datoteke na telefonsku memoriju</string>
|
||||
<string name="plugin_not_available">Ovo svojstvo nije dostupno i vašoj Android verziji</string>
|
||||
<string name="device_list_empty">Nema uređaja</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -25,8 +22,6 @@
|
||||
<string name="open_settings">Otvori postavke</string>
|
||||
<string name="no_permissions">Morate odobriti dopuštenje da pristupite notifikacijama</string>
|
||||
<string name="send_ping">Pošalji ping</string>
|
||||
<string name="open_mpris_controls">Otvori daljinsku kontrolu</string>
|
||||
<string name="open_mousepad">Otvori touchpad kontrolu</string>
|
||||
<string name="mousepad_info">Pomjerite prst na ekranu da opmjerite kursor miša. Tapnite za klik i koristite dva ili tri prsta za srednje i desno dugme. Koristite dugi pritisak za prevlačenje.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Postavite akciju tapa sa dva prsta</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Postavite akciju tapa sa tri prsta</string>
|
||||
|
@@ -10,14 +10,14 @@
|
||||
<string name="pref_plugin_clipboard_desc">Comparteix el contingut del porta-retalls</string>
|
||||
<string name="pref_plugin_mousepad">Entrada remota</string>
|
||||
<string name="pref_plugin_mousepad_desc">Usa el vostre telèfon com un ratolí i un teclat</string>
|
||||
<string name="pref_plugin_mpris">Comandament a distància multimèdia</string>
|
||||
<string name="pref_plugin_mpris">Controls multimèdia</string>
|
||||
<string name="pref_plugin_mpris_desc">Controla l\'àudio i el vídeo del vostre telèfon</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Envia i rep els pings</string>
|
||||
<string name="pref_plugin_notifications">Sincronitza les notificacions</string>
|
||||
<string name="pref_plugin_notifications_desc">Accedeix a les vostres notificacions des d\'altres dispositius</string>
|
||||
<string name="pref_plugin_sharereceiver">Receptor de compartits</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Desa els fitxers entrants a l\'emmagatzematge del telèfon</string>
|
||||
<string name="pref_plugin_sharereceiver">Comparteix i rep</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Comparteix els fitxers i els URL entre els dispositius</string>
|
||||
<string name="plugin_not_available">Aquesta característica no està disponible en la vostra versió d\'Android</string>
|
||||
<string name="device_list_empty">No hi ha cap dispositiu</string>
|
||||
<string name="ok">D\'acord</string>
|
||||
@@ -25,8 +25,8 @@
|
||||
<string name="open_settings">Obre l\'arranjament</string>
|
||||
<string name="no_permissions">Us caldrà concedir permís per accedir a les notificacions</string>
|
||||
<string name="send_ping">Envia un ping</string>
|
||||
<string name="open_mpris_controls">Obre el comandament a distància</string>
|
||||
<string name="open_mousepad">Obre el control pel plafó tàctil</string>
|
||||
<string name="open_mpris_controls">Control multimèdia</string>
|
||||
<string name="open_mousepad">Entrada remota</string>
|
||||
<string name="mousepad_info">Moveu un dit per la pantalla per a moure el cursor del ratolí. Toqueu per un clic, i empreu dos/tres dits pels botons dret i mig. Empreu un toc llarg per arrossegar i deixar anar.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Estableix l\'acció de tocar amb dos dits</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Estableix l\'acció de tocar amb tres dits</string>
|
||||
|
@@ -10,14 +10,14 @@
|
||||
<string name="pref_plugin_clipboard_desc">Sdílet obsah schránky</string>
|
||||
<string name="pref_plugin_mousepad">Vzdálený vstup</string>
|
||||
<string name="pref_plugin_mousepad_desc">Používejte svůj telefon jako myš a klávesnici</string>
|
||||
<string name="pref_plugin_mpris">Vzdálené ovládání multimédií</string>
|
||||
<string name="pref_plugin_mpris">Ovládání multimédií</string>
|
||||
<string name="pref_plugin_mpris_desc">Ovládejte audio/video z vašeho telefonu</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Posílat a přijímat ping</string>
|
||||
<string name="pref_plugin_notifications">Synchronizace upozornění</string>
|
||||
<string name="pref_plugin_notifications_desc">Zpřístupněte si upozornění z jiných zařízení</string>
|
||||
<string name="pref_plugin_sharereceiver">Sdílet příjemce</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Ukládat příchozí soubory do úložiště telefonu</string>
|
||||
<string name="pref_plugin_sharereceiver">Sdílet s přijmnout</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Sdílet soubory a odkazy mezi zařízeními</string>
|
||||
<string name="plugin_not_available">Tato vlastnost není pro vaši verzi Androidu platná</string>
|
||||
<string name="device_list_empty">Žádná zařízení</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -25,8 +25,8 @@
|
||||
<string name="open_settings">Otevřít nastavení</string>
|
||||
<string name="no_permissions">Pro zpřístupnění upozornění potřebujete oprávnění</string>
|
||||
<string name="send_ping">Poslat ping</string>
|
||||
<string name="open_mpris_controls">Otevřít vzdálené ovládání</string>
|
||||
<string name="open_mousepad">Otevřít dotykové ovládání</string>
|
||||
<string name="open_mpris_controls">Ovládání multimédií</string>
|
||||
<string name="open_mousepad">Vzdálený vstup</string>
|
||||
<string name="mousepad_info">Pohybujte prstem po obrazovce pro pohybování kurzorem myši. Ťukněte pro kliknutí a použijte dva/tři prsty jako pravé a prostřední tlačítko. Pro přetažení dlouze podržte.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Nastavit činnost pro ťuknutí dvěma prsty</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Nastavit činnost pro ťuknutí třemi prsty</string>
|
||||
|
@@ -10,14 +10,11 @@
|
||||
<string name="pref_plugin_clipboard_desc">Del indholdet af udklipsholderen</string>
|
||||
<string name="pref_plugin_mousepad">Eksternt input</string>
|
||||
<string name="pref_plugin_mousepad_desc">Brug din telefon som mus og tastatur</string>
|
||||
<string name="pref_plugin_mpris">Fjernbetjening af multimedie</string>
|
||||
<string name="pref_plugin_mpris_desc">Styr lyd og video fra din telefon</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Send og modtag ping</string>
|
||||
<string name="pref_plugin_notifications">Synk. af bekendtgørelser</string>
|
||||
<string name="pref_plugin_notifications_desc">Tilgå dine bekendtgørelser fra andre enheder</string>
|
||||
<string name="pref_plugin_sharereceiver">Del modtager</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Gem indkommende filer til telefonens lager</string>
|
||||
<string name="plugin_not_available">Denne funktion er ikke tilgængelig i din Android-version</string>
|
||||
<string name="device_list_empty">Ingen enheder</string>
|
||||
<string name="ok">O.k.</string>
|
||||
@@ -25,8 +22,6 @@
|
||||
<string name="open_settings">Åbn indstillinger</string>
|
||||
<string name="no_permissions">Du skal give tilladelse for at tilgå bekendtgørelser</string>
|
||||
<string name="send_ping">Send ping</string>
|
||||
<string name="open_mpris_controls">Åbn fjernbetjening</string>
|
||||
<string name="open_mousepad">Åbn touchpad-kontrol</string>
|
||||
<string name="mousepad_info">Bevæg en finger på skærmen for at flytte musemarkøren. Tap for at klikke og brug to/tre-fingre for højre og midterste museknap. Brug et langt tryk til at trække og slippe.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Angiv handling for tap med to fingre</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Angiv handling for tap med tre fingre</string>
|
||||
@@ -62,6 +57,7 @@
|
||||
<string name="outgoing_file_title">Sender fil til %1s</string>
|
||||
<string name="outgoing_file_text">%1s</string>
|
||||
<string name="received_file_title">Modtog fil fra %1s</string>
|
||||
<string name="received_file_fail_title">Kunne ikke modtage fil fra %1s</string>
|
||||
<string name="received_file_text">Tap for at åbne \"%1s\"</string>
|
||||
<string name="sent_file_title">Fil sendt til %1s</string>
|
||||
<string name="sent_file_text">%1s</string>
|
||||
|
@@ -9,13 +9,11 @@
|
||||
<string name="pref_plugin_clipboard">Abgleich der Zwischenablage</string>
|
||||
<string name="pref_plugin_clipboard_desc">Inhalt der Zwischenablage freigeben</string>
|
||||
<string name="pref_plugin_mousepad_desc">Verwendet Ihr Handy als Maus und Tastatur</string>
|
||||
<string name="pref_plugin_mpris">Multimedia-Fernbedienungen</string>
|
||||
<string name="pref_plugin_mpris_desc">Audio und Video mit Ihrem Telefon steuern</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Senden und Empfangen von Pings</string>
|
||||
<string name="pref_plugin_notifications">Benachrichtigungs-Abgleich</string>
|
||||
<string name="pref_plugin_notifications_desc">Zugriff auf Ihre Benachrichtigungen von anderen Geräten</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Eingehende Dateien auf dem Telefonspeicher ablegen</string>
|
||||
<string name="plugin_not_available">Diese Funktion ist in Ihrer Android-Version nicht verfügbar</string>
|
||||
<string name="device_list_empty">Keine Geräte</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -23,8 +21,6 @@
|
||||
<string name="open_settings">Einstellungen öffnen</string>
|
||||
<string name="no_permissions">Sie müssen die Erlaubnis zum Zugriff auf Benachrichtigungen erteilen</string>
|
||||
<string name="send_ping">Ping senden</string>
|
||||
<string name="open_mpris_controls">Fernbedienung öffnen</string>
|
||||
<string name="open_mousepad">Touchpad-Steuerung öffnen</string>
|
||||
<string-array name="mousepad_tap_entries">
|
||||
<item>Rechtsklick</item>
|
||||
<item>Mittelklick</item>
|
||||
|
@@ -10,14 +10,11 @@
|
||||
<string name="pref_plugin_clipboard_desc">Compartir el contenido del portapapeles</string>
|
||||
<string name="pref_plugin_mousepad">Entrada remota</string>
|
||||
<string name="pref_plugin_mousepad_desc">Usar su teléfono como ratón y teclado</string>
|
||||
<string name="pref_plugin_mpris">Controles remotos multimedia</string>
|
||||
<string name="pref_plugin_mpris_desc">Controlar audio y vídeo desde el teléfono</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Enviar y recibir pings</string>
|
||||
<string name="pref_plugin_notifications">Sincronizar notificaciones</string>
|
||||
<string name="pref_plugin_notifications_desc">Acceder a las notificaciones desde otros dispositivos</string>
|
||||
<string name="pref_plugin_sharereceiver">Compartir receptor</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Guardar archivos entrantes en el almacenamiento del teléfono</string>
|
||||
<string name="plugin_not_available">Esta funcionalidad no está disponible en su versión de Android</string>
|
||||
<string name="device_list_empty">Ningún dispositivo</string>
|
||||
<string name="ok">Aceptar</string>
|
||||
@@ -25,8 +22,6 @@
|
||||
<string name="open_settings">Abrir preferencias</string>
|
||||
<string name="no_permissions">Debe otorgar permiso para acceder a las notificaciones</string>
|
||||
<string name="send_ping">Enviar ping</string>
|
||||
<string name="open_mpris_controls">Abrir control remoto</string>
|
||||
<string name="open_mousepad">Abrir control del panel táctil</string>
|
||||
<string name="mousepad_info">Mueva un dedo sobre la pantalla para mover el cursor del ratón. Pulse para ejecutar un clic y use dos/tres dedos para emular los botones derecho y central. Use una pulsación larga para arrastrar y soltar.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Establecer la acción al pulsar con dos dedos</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Establecer la acción al pulsar con tres dedos</string>
|
||||
@@ -62,6 +57,7 @@
|
||||
<string name="outgoing_file_title">Enviando archivo a %1s</string>
|
||||
<string name="outgoing_file_text">%1s</string>
|
||||
<string name="received_file_title">Archivo recibido desde %1s</string>
|
||||
<string name="received_file_fail_title">Fallo recibiendo archivo desde %1s</string>
|
||||
<string name="received_file_text">Pulse para abrir «%1s»</string>
|
||||
<string name="sent_file_title">Archivo enviado a %1s</string>
|
||||
<string name="sent_file_text">%1s</string>
|
||||
|
@@ -10,14 +10,11 @@
|
||||
<string name="pref_plugin_clipboard_desc">Jaa leikepöydän sisältö</string>
|
||||
<string name="pref_plugin_mousepad">Kauko-ohjaus</string>
|
||||
<string name="pref_plugin_mousepad_desc">Käytä puhelintasi hiirenä ja näppäimistönä</string>
|
||||
<string name="pref_plugin_mpris">Multimedian kauko-ohjaus</string>
|
||||
<string name="pref_plugin_mpris_desc">Ohjaa ääntä ja videota puhelimestasi</string>
|
||||
<string name="pref_plugin_ping">Tiedustelupaketti</string>
|
||||
<string name="pref_plugin_ping_desc">Lähetä ja vastaanota tiedustelupaketteja</string>
|
||||
<string name="pref_plugin_notifications">Ilmoitusten synkronointi</string>
|
||||
<string name="pref_plugin_notifications_desc">Näe ilmoituksesi muissa laitteissa</string>
|
||||
<string name="pref_plugin_sharereceiver">Jaon vastaanottaja</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Tallenna tulevat tiedoston puhelimen muistiin</string>
|
||||
<string name="plugin_not_available">Piirre ei ole käytettävissä Android-versiossasi</string>
|
||||
<string name="device_list_empty">Ei laitteita</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -25,8 +22,6 @@
|
||||
<string name="open_settings">Avaa asetukset</string>
|
||||
<string name="no_permissions">Sinun on annettava lupa ilmoitusten näkemiseen</string>
|
||||
<string name="send_ping">Lähetä tiedustelupaketti</string>
|
||||
<string name="open_mpris_controls">Avaa kauko-ohjain</string>
|
||||
<string name="open_mousepad">Avaa hiiren ohjain</string>
|
||||
<string name="mousepad_info">Liikuta hiiren osoitinta liikuttamalla sormeasi näytöllä. Napsauta napauttamalla yhdellä sormella, käytä oikeaa painiketta kahdella sormella ja keskipainiketta kolmella. Vedä ja pudota painamalla pitkään.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Aseta kahden sormen napautuksen toiminto</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Aseta kolmen sormen napautuksen toiminto</string>
|
||||
|
@@ -10,14 +10,11 @@
|
||||
<string name="pref_plugin_clipboard_desc">Partage le contenu du presse-papiers</string>
|
||||
<string name="pref_plugin_mousepad">Contrôle distant</string>
|
||||
<string name="pref_plugin_mousepad_desc">Utilisez votre téléphone comme une souris et un clavier</string>
|
||||
<string name="pref_plugin_mpris">Contrôles distants multimédia</string>
|
||||
<string name="pref_plugin_mpris_desc">Contrôle l\'audio / la vidéo depuis votre téléphone</string>
|
||||
<string name="pref_plugin_ping">Commande « Ping »</string>
|
||||
<string name="pref_plugin_ping_desc">Envoie et reçoit des commandes « Ping »</string>
|
||||
<string name="pref_plugin_notifications">Synchronisation des notifications</string>
|
||||
<string name="pref_plugin_notifications_desc">Accédez à vos notifications depuis d\'autres périphériques</string>
|
||||
<string name="pref_plugin_sharereceiver">Réception de fichier</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Enregistrer les fichiers reçus dans le stockage du téléphone</string>
|
||||
<string name="plugin_not_available">Cette fonctionnalité n\'est pas disponible dans votre version de Android</string>
|
||||
<string name="device_list_empty">Pas de périphériques</string>
|
||||
<string name="ok">Ok</string>
|
||||
@@ -25,8 +22,6 @@
|
||||
<string name="open_settings">Accéder aux paramètres</string>
|
||||
<string name="no_permissions">Vous devez accorder la permission d\'accéder aux notifications</string>
|
||||
<string name="send_ping">Envoyer un « Ping »</string>
|
||||
<string name="open_mpris_controls">Ouvrir un contrôle distant</string>
|
||||
<string name="open_mousepad">Ouvrir le pavé tactile</string>
|
||||
<string name="mousepad_info">Déplacer le doigt sur l\'écran pour bouger le pointeur de la souris. Appuyez pour cliquer et utiliser deux/trois doigts pour les clic droit et centre. Appuyez longtemps pour faire un glisser déplacer.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Action pour l\'appui à deux doigts</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Action pour l\'appui à trois doigts</string>
|
||||
|
59
res/values-gl/strings.xml
Normal file
@@ -0,0 +1,59 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Enviar e recibir pings.</string>
|
||||
<string name="pref_plugin_notifications">Sincronización de notificacións</string>
|
||||
<string name="device_list_empty">Non hai dispositivos.</string>
|
||||
<string name="ok">Aceptar</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="open_settings">Abrir a configuración</string>
|
||||
<string name="send_ping">Enviar un ping</string>
|
||||
<string-array name="mousepad_tap_entries">
|
||||
<item>Clic dereito</item>
|
||||
<item>Clic central</item>
|
||||
<item>Nada</item>
|
||||
</string-array>
|
||||
<string name="mousepad_double_default">dereita</string>
|
||||
<string name="mousepad_triple_default">medio</string>
|
||||
<string name="category_connected_devices">Dispositivos conectados</string>
|
||||
<string name="category_not_paired_devices">Dispositivos dispoñíbeis</string>
|
||||
<string name="device_menu_plugins">Configuración do engadido</string>
|
||||
<string name="device_menu_unpair">Desemparellarse</string>
|
||||
<string name="unknown_device">Dispositivo descoñecido</string>
|
||||
<string name="error_not_reachable">Dispositivo fóra do alcance</string>
|
||||
<string name="error_timed_out">Esgotouse o tempo límite</string>
|
||||
<string name="error_canceled_by_user">Cancelouno o usuario.</string>
|
||||
<string name="error_canceled_by_other_peer">Cancelouse remotamente</string>
|
||||
<string name="incoming_file_text">%1s</string>
|
||||
<string name="outgoing_file_text">%1s</string>
|
||||
<string name="sent_file_text">%1s</string>
|
||||
<string name="sent_file_failed_text">%1s</string>
|
||||
<string name="reconnect">Conectar de novo</string>
|
||||
<string name="show_keyboard">Mostrar o teclado</string>
|
||||
<string name="pairing_accept">Aceptar</string>
|
||||
<string name="pairing_reject">Rexeitar</string>
|
||||
<string name="device">Dispositivo</string>
|
||||
<string name="remote_control">Control remoto</string>
|
||||
<string name="settings">Configuración de KDE Connect</string>
|
||||
<string name="mpris_play">Reproducir</string>
|
||||
<string name="mpris_previous">Anterior</string>
|
||||
<string name="mpris_rew">Retroceder</string>
|
||||
<string name="mpris_ff">Cara a adiante</string>
|
||||
<string name="mpris_next">Seguinte</string>
|
||||
<string name="mpris_volume">Volume</string>
|
||||
<string-array name="mpris_time_entries">
|
||||
<item>10 segundos</item>
|
||||
<item>20 segundos</item>
|
||||
<item>30 segundos</item>
|
||||
<item>1 minuto</item>
|
||||
<item>2 minutos</item>
|
||||
</string-array>
|
||||
<string name="general_settings">Configuración xeral</string>
|
||||
<string name="plugin_settings">Configuración</string>
|
||||
<string name="device_name">Nome do dispositivo</string>
|
||||
<string name="device_name_preference_summary">%s</string>
|
||||
<string name="sftp_internal_storage">Almacenamento interno</string>
|
||||
<string name="sftp_all_files">Todos os ficheiros</string>
|
||||
<string name="sftp_readonly">(só lectura)</string>
|
||||
<string name="sftp_camera">Imaxes da cámara</string>
|
||||
</resources>
|
@@ -8,14 +8,11 @@
|
||||
<string name="pref_plugin_sftp_desc">Lehetővé teszi a telefon fájlrendszerének távolról történő tallózását</string>
|
||||
<string name="pref_plugin_clipboard">Vágólap szinkronizáció</string>
|
||||
<string name="pref_plugin_clipboard_desc">A vágólap tartalmának megosztása</string>
|
||||
<string name="pref_plugin_mpris">Multimedia távirányítók</string>
|
||||
<string name="pref_plugin_mpris_desc">Hang vagy videó vezérlése a telefonról</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Pingek küldése és fogadása</string>
|
||||
<string name="pref_plugin_notifications">Értesítés szinkronizáció</string>
|
||||
<string name="pref_plugin_notifications_desc">Hozzáférés az értesítésekhez más eszközökről</string>
|
||||
<string name="pref_plugin_sharereceiver">Megosztás vevő</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Bejövő fájlok mentése a telefon háttértárára</string>
|
||||
<string name="plugin_not_available">Ez a funkció nem érhető el az ön Android verziójában</string>
|
||||
<string name="device_list_empty">Nincsenek eszközök</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -23,8 +20,6 @@
|
||||
<string name="open_settings">Beállítások megnyitása</string>
|
||||
<string name="no_permissions">Jogot kell adnia az értesítésekhez való hozzáféréshez</string>
|
||||
<string name="send_ping">Ping küldése</string>
|
||||
<string name="open_mpris_controls">Távirányító megnyitása</string>
|
||||
<string name="open_mousepad">Érintőtábla vezérlő megnyitása</string>
|
||||
<string-array name="mousepad_tap_entries">
|
||||
<item/>
|
||||
<item/>
|
||||
|
@@ -10,14 +10,11 @@
|
||||
<string name="pref_plugin_clipboard_desc">Condividi il contenuto degli appunti</string>
|
||||
<string name="pref_plugin_mousepad">Impulso remoto</string>
|
||||
<string name="pref_plugin_mousepad_desc">Usa il tuo telefono come mouse e tastiera</string>
|
||||
<string name="pref_plugin_mpris">Telecomando multimediale</string>
|
||||
<string name="pref_plugin_mpris_desc">Controlla la riproduzione audio/video dal telefono</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Invia e ricevi ping</string>
|
||||
<string name="pref_plugin_notifications">Sincronizzazione notifiche</string>
|
||||
<string name="pref_plugin_notifications_desc">Consenti l\'accesso alle notifiche dagli altri dispositivi</string>
|
||||
<string name="pref_plugin_sharereceiver">Condivisione ricevitore</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Salva i file in ingresso nella memoria del telefono</string>
|
||||
<string name="plugin_not_available">Questa funzionalità non è disponibile sulla tua versione di Android</string>
|
||||
<string name="device_list_empty">Nessun dispositivo</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -25,8 +22,6 @@
|
||||
<string name="open_settings">Apri impostazioni</string>
|
||||
<string name="no_permissions">Devi concedere i permessi per l\'accesso alle notifiche</string>
|
||||
<string name="send_ping">Invia ping</string>
|
||||
<string name="open_mpris_controls">Apri telecomando</string>
|
||||
<string name="open_mousepad">Apri controllo del touchpad</string>
|
||||
<string name="mousepad_info">Muovi un dito sullo schermo per spostare il puntatore del mouse. Tocca per un clic e usa due/tre dita per i pulsanti destro e centrale. Utilizza una pressione lunga per trascinare e rilasciare.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Imposta azione per il tocco a due dita</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Imposta azione per il tocco a tre dita</string>
|
||||
|
@@ -10,14 +10,11 @@
|
||||
<string name="pref_plugin_clipboard_desc">클립보드 내용 동기화</string>
|
||||
<string name="pref_plugin_mousepad">원격 입력</string>
|
||||
<string name="pref_plugin_mousepad_desc">내 장치를 마우스와 키보드로 사용하기</string>
|
||||
<string name="pref_plugin_mpris">멀티미디어 제어</string>
|
||||
<string name="pref_plugin_mpris_desc">휴대폰에서 오디오/비디오 제어</string>
|
||||
<string name="pref_plugin_ping">핑</string>
|
||||
<string name="pref_plugin_ping_desc">핑 보내고 받기</string>
|
||||
<string name="pref_plugin_notifications">알림 동기화</string>
|
||||
<string name="pref_plugin_notifications_desc">다른 장치에서 알림 보기</string>
|
||||
<string name="pref_plugin_sharereceiver">공유 수신자</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">보낸 파일을 장치에 저장합니다</string>
|
||||
<string name="plugin_not_available">현재 안드로이드 버전에서 사용할 수 없습니다</string>
|
||||
<string name="device_list_empty">장치 없음</string>
|
||||
<string name="ok">확인</string>
|
||||
@@ -25,8 +22,6 @@
|
||||
<string name="open_settings">설정 열기</string>
|
||||
<string name="no_permissions">알림 접근 권한을 허가해야 합니다</string>
|
||||
<string name="send_ping">핑 보내기</string>
|
||||
<string name="open_mpris_controls">원격 제어 열기</string>
|
||||
<string name="open_mousepad">터치패드 제어 열기</string>
|
||||
<string-array name="mousepad_tap_entries">
|
||||
<item/>
|
||||
<item/>
|
||||
|
@@ -10,14 +10,14 @@
|
||||
<string name="pref_plugin_clipboard_desc">De inhoud van het klembord delen</string>
|
||||
<string name="pref_plugin_mousepad">Invoer op afstand</string>
|
||||
<string name="pref_plugin_mousepad_desc">Uw telefoon gebruiken als een muis en toetsenbord</string>
|
||||
<string name="pref_plugin_mpris">Afstandsbediening van multimedia</string>
|
||||
<string name="pref_plugin_mpris">Bediening van multimedia</string>
|
||||
<string name="pref_plugin_mpris_desc">Bedien de audio/video vanaf uw telefoon</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Pings verzenden en ontvangen</string>
|
||||
<string name="pref_plugin_notifications">Synchronisatie van meldingen</string>
|
||||
<string name="pref_plugin_notifications_desc">Bekijk uw meldingen van andere apparaten</string>
|
||||
<string name="pref_plugin_sharereceiver">Ontvanger delen</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Inkomende bestanden opslaan naar de opslag van de telefoon</string>
|
||||
<string name="pref_plugin_sharereceiver">Delen en Ontvangen</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Bestanden en URL\'s delen tussen apparaten</string>
|
||||
<string name="plugin_not_available">Deze functie is niet beschikbaar in uw versie van Android</string>
|
||||
<string name="device_list_empty">Geen apparaten</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -25,8 +25,8 @@
|
||||
<string name="open_settings">Instellingen openen</string>
|
||||
<string name="no_permissions">U moet toestemming geven voor toegang tot meldingen</string>
|
||||
<string name="send_ping">Ping verzenden</string>
|
||||
<string name="open_mpris_controls">Afstandsbediening openen</string>
|
||||
<string name="open_mousepad">Afstandsbediening van touchpad openen</string>
|
||||
<string name="open_mpris_controls">Bediening van multimedia</string>
|
||||
<string name="open_mousepad">Invoer op afstand</string>
|
||||
<string name="mousepad_info">Veeg met een vinger op het scherm om de muiscursor te verplaatsen. Tik om te klikken en gebruik twee/drie vingers voor rechter en middelste knop. Druk lang voor slepen en loslaten.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Tikactie met twee vingers instellen</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Tikactie met drie vingers instellen</string>
|
||||
|
@@ -10,14 +10,14 @@
|
||||
<string name="pref_plugin_clipboard_desc">Udostępnij zawartość schowka</string>
|
||||
<string name="pref_plugin_mousepad">Zdalne sterowanie</string>
|
||||
<string name="pref_plugin_mousepad_desc">Użyj swojego telefonu jako myszy i klawiatury</string>
|
||||
<string name="pref_plugin_mpris">Zdalne sterowanie multimediami</string>
|
||||
<string name="pref_plugin_mpris">Sterowanie multimediami</string>
|
||||
<string name="pref_plugin_mpris_desc">Steruj dźwiękiem/obrazem ze swojego telefonu</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Wysyłaj i otrzymuj pingi</string>
|
||||
<string name="pref_plugin_notifications">Powiadomienia synchronizacji</string>
|
||||
<string name="pref_plugin_notifications_desc">Uzyskaj dostęp do swoich powiadomień z innego urządzenia</string>
|
||||
<string name="pref_plugin_sharereceiver">Udostępnij odbiornik</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Zapisz przychodzące pliki do pamięci telefonu</string>
|
||||
<string name="pref_plugin_sharereceiver">Udostępniaj i otrzymuj</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Współdziel pliki i adresy URL pomiędzy urządzeniami</string>
|
||||
<string name="plugin_not_available">Funkcja ta nie jest dostępna w twojej wersji Androida</string>
|
||||
<string name="device_list_empty">Brak urządzeń</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -25,8 +25,8 @@
|
||||
<string name="open_settings">Otwórz ustawienia</string>
|
||||
<string name="no_permissions">Musisz przydzielić uprawnienia, aby uzyskać dostęp do powiadomień</string>
|
||||
<string name="send_ping">Wyślij ping</string>
|
||||
<string name="open_mpris_controls">Otwórz zdalne sterowanie</string>
|
||||
<string name="open_mousepad">Otwórz sterowanie gładzikiem</string>
|
||||
<string name="open_mpris_controls">Sterowanie multimediami</string>
|
||||
<string name="open_mousepad">Zdalne sterowanie</string>
|
||||
<string name="mousepad_info">Przesuń palcem po ekranie, aby przesunąć wskaźnik myszy. Stuknij, aby wywołać naciśniecie lewym przyciskiem myszy i użyj dwóch/trzech palców, aby wywołać naciśniecie prawym i środkowym przyciskiem myszy. Przyciśnij na dłużej, aby przeciągnąć i upuścić.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Ustaw działanie po dwukrotnym stuknięciu palcem</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Ustaw działanie po trzykrotnym stuknięciu palcem</string>
|
||||
@@ -62,6 +62,7 @@
|
||||
<string name="outgoing_file_title">Wysyłanie pliku do %1s</string>
|
||||
<string name="outgoing_file_text">%1s</string>
|
||||
<string name="received_file_title">Odebrano plik od %1s</string>
|
||||
<string name="received_file_fail_title">Nieudane odbieranie pliku z %1s</string>
|
||||
<string name="received_file_text">Znacznik do otwarcia \'%1s\'</string>
|
||||
<string name="sent_file_title">Plik wysłano do %1s</string>
|
||||
<string name="sent_file_text">%1s</string>
|
||||
|
@@ -10,14 +10,14 @@
|
||||
<string name="pref_plugin_clipboard_desc">Compartilha o conteúdo da área de transferência</string>
|
||||
<string name="pref_plugin_mousepad">Introdução de dados remota</string>
|
||||
<string name="pref_plugin_mousepad_desc">Usar seu telefone como mouse ou teclado</string>
|
||||
<string name="pref_plugin_mpris">Controle remoto multimídia</string>
|
||||
<string name="pref_plugin_mpris">Controle multimídia</string>
|
||||
<string name="pref_plugin_mpris_desc">Controla áudio e vídeo a partir do seu telefone</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Envia e recebe pings</string>
|
||||
<string name="pref_plugin_notifications">Sincronização de notificações</string>
|
||||
<string name="pref_plugin_notifications_desc">Acesse suas notificações a partir de outros dispositivos</string>
|
||||
<string name="pref_plugin_sharereceiver">Destinatário do compartilhamento</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Salvar os arquivos recebidos no armazenamento do celular</string>
|
||||
<string name="pref_plugin_sharereceiver">Compartilhar e receber</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Compartilhar arquivos e URLs entre os dispositivos</string>
|
||||
<string name="plugin_not_available">Esta funcionalidade não está disponível na sua versão do Android</string>
|
||||
<string name="device_list_empty">Sem dispositivos</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -25,8 +25,8 @@
|
||||
<string name="open_settings">Abrir configurações</string>
|
||||
<string name="no_permissions">Você precisa conceder permissão para acessar as notificações</string>
|
||||
<string name="send_ping">Enviar ping</string>
|
||||
<string name="open_mpris_controls">Abra o controle remoto</string>
|
||||
<string name="open_mousepad">Abrir o controle do touchpad</string>
|
||||
<string name="open_mpris_controls">Controle multimídia</string>
|
||||
<string name="open_mousepad">Introdução de dados remota</string>
|
||||
<string name="mousepad_info">Mova um dedo pelo tela para mover o ponteiro do mouse. Dê um toque para clicar e use dois/três dedos para os botões da direita e do meio. Use uma pressão longa para arrastar e soltar.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Definir a ação do toque com dois dedos</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Definir a ação do toque com três dedos</string>
|
||||
|
@@ -10,14 +10,14 @@
|
||||
<string name="pref_plugin_clipboard_desc">Partilhar o conteúdo da área de transferência</string>
|
||||
<string name="pref_plugin_mousepad">Introdução remota de dados</string>
|
||||
<string name="pref_plugin_mousepad_desc">Usar o seu telefone como um rato ou teclado</string>
|
||||
<string name="pref_plugin_mpris">Comando à distância multimédia</string>
|
||||
<string name="pref_plugin_mpris">Comandos multimédia</string>
|
||||
<string name="pref_plugin_mpris_desc">Controlar o áudio/vídeo a partir do seu telefone</string>
|
||||
<string name="pref_plugin_ping">Contacto</string>
|
||||
<string name="pref_plugin_ping_desc">Enviar e receber pedidos de contacto (\'ping\')</string>
|
||||
<string name="pref_plugin_notifications">Sincronização da notificação</string>
|
||||
<string name="pref_plugin_notifications_desc">Aceder às suas notificações a partir de outros dispositivos</string>
|
||||
<string name="pref_plugin_sharereceiver">Destinatário da partilha</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Gravar os ficheiros recebidos no armazenamento do telemóvel</string>
|
||||
<string name="pref_plugin_sharereceiver">Partilhar e receber</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Partilhar ficheiros e URL\'s entre dispositivos</string>
|
||||
<string name="plugin_not_available">Esta funcionalidade não está disponível na sua versão do Android</string>
|
||||
<string name="device_list_empty">Sem dispositivos</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -25,8 +25,8 @@
|
||||
<string name="open_settings">Abrir a configuração</string>
|
||||
<string name="no_permissions">Precisa de dar permissões de acesso às notificações</string>
|
||||
<string name="send_ping">Enviar um pedido de contacto</string>
|
||||
<string name="open_mpris_controls">Abrir o comando à distância</string>
|
||||
<string name="open_mousepad">Abrir o controlo do painel do rato</string>
|
||||
<string name="open_mpris_controls">Comando multimédia</string>
|
||||
<string name="open_mousepad">Introdução remota de dados</string>
|
||||
<string name="mousepad_info">Mova um dedo pelo ecrã para mover o cursor do rato. Dê um toque para carregar no botão esquerdo e use dois/três dedos para os botões direito e do meio. Use uma pressão longa para arrastar e largar.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Definir a acção do toque com dois dedos</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Definir a acção do toque com três dedos</string>
|
||||
|
@@ -8,7 +8,6 @@
|
||||
<string name="pref_plugin_sftp_desc">Vă permite să răsfoiți de la distanță sistemul de fișiere al dispozitivului</string>
|
||||
<string name="pref_plugin_clipboard">Sincronizare clipboard</string>
|
||||
<string name="pref_plugin_clipboard_desc">Partajează conținutul clipboardului</string>
|
||||
<string name="pref_plugin_mpris">Controale multimedia distante</string>
|
||||
<string name="pref_plugin_mpris_desc">Controlați audio/video de pe telefon</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Trimite și primește ping-uri</string>
|
||||
@@ -21,7 +20,6 @@
|
||||
<string name="open_settings">Deschide configurările</string>
|
||||
<string name="no_permissions">Trebuie să acordați permisiunea pentru accesarea notificărilor</string>
|
||||
<string name="send_ping">Trimite ping</string>
|
||||
<string name="open_mpris_controls">Deschide controlul de la distanță</string>
|
||||
<string-array name="mousepad_tap_entries">
|
||||
<item>Right click</item>
|
||||
<item>Middle click</item>
|
||||
|
@@ -6,7 +6,6 @@
|
||||
<string name="pref_plugin_battery_desc">Периодически сообщать о состоянии батареи</string>
|
||||
<string name="pref_plugin_clipboard">Синхронизация буфера обмена</string>
|
||||
<string name="pref_plugin_clipboard_desc">Сделать содержимое буфера обмена общим</string>
|
||||
<string name="pref_plugin_mpris">ДУ для мультимедия</string>
|
||||
<string name="pref_plugin_mpris_desc">Управление аудио/видео с устройства</string>
|
||||
<string name="pref_plugin_ping">Пинг</string>
|
||||
<string name="pref_plugin_ping_desc">Посылать и получать пинги</string>
|
||||
@@ -19,7 +18,6 @@
|
||||
<string name="open_settings">Открыть настройки</string>
|
||||
<string name="no_permissions">Вы должны разрешить доступ к уведомлениям</string>
|
||||
<string name="send_ping">Послать пинг</string>
|
||||
<string name="open_mpris_controls">Открыть дистанционное управление</string>
|
||||
<string-array name="mousepad_tap_entries">
|
||||
<item>Right click</item>
|
||||
<item>Middle click</item>
|
||||
|
@@ -10,14 +10,11 @@
|
||||
<string name="pref_plugin_clipboard_desc">Zdieľať obsah schránky</string>
|
||||
<string name="pref_plugin_mousepad">Vzdialený vstup</string>
|
||||
<string name="pref_plugin_mousepad_desc">Použiť váš telefón ako myš a klávesnicu</string>
|
||||
<string name="pref_plugin_mpris">Multimediálne diaľkové ovládače</string>
|
||||
<string name="pref_plugin_mpris_desc">Ovládať audio/video z vášho telefónu</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Poslať a prijať pingy</string>
|
||||
<string name="pref_plugin_notifications">Synchronizácia pripomienok</string>
|
||||
<string name="pref_plugin_notifications_desc">Prístup k vašim pripomienkam z iných zariadení</string>
|
||||
<string name="pref_plugin_sharereceiver">Zdieľať prijímač</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Uložiť prichádzajúce súbory na úložiska telefónu</string>
|
||||
<string name="plugin_not_available">Táto funkcia nie je dostupná vo vašej verzii Androidu</string>
|
||||
<string name="device_list_empty">Žiadne zariadenia</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -25,8 +22,6 @@
|
||||
<string name="open_settings">Otvoriť nastavenia</string>
|
||||
<string name="no_permissions">Musíte povoliť oprávnenia na prístup k pripomienkam</string>
|
||||
<string name="send_ping">Poslať ping</string>
|
||||
<string name="open_mpris_controls">Otvoriť diaľkové ovládanie</string>
|
||||
<string name="open_mousepad">Otvoriť ovládanie touchpadu</string>
|
||||
<string name="mousepad_info">Posúvajte prst na obrazovke na posun kurzora. Ťuknutie vyvolá klik a použite dva/tri prsty pre pravé a stredné tlačidlo. Použite dlhé stlačenie pre drag and drop.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Nastaviť akciu dvoch prstov</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Nastaviť akciu troch prstov</string>
|
||||
|
@@ -10,14 +10,14 @@
|
||||
<string name="pref_plugin_clipboard_desc">Dela klippbordets innehåll</string>
|
||||
<string name="pref_plugin_mousepad">Fjärrinmatning</string>
|
||||
<string name="pref_plugin_mousepad_desc">Använd telefonen som mus och tangentbord</string>
|
||||
<string name="pref_plugin_mpris">Fjärrkontroll av multimedia</string>
|
||||
<string name="pref_plugin_mpris">Multimediakontroller</string>
|
||||
<string name="pref_plugin_mpris_desc">Styr ljud och video från telefonen</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Skicka och ta emot ping</string>
|
||||
<string name="pref_plugin_notifications">Synkronisering av underrättelser</string>
|
||||
<string name="pref_plugin_notifications_desc">Kom åt underrättelser från andra apparater</string>
|
||||
<string name="pref_plugin_sharereceiver">Dela mottagare</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Spara inkommande filer i telefonens minne</string>
|
||||
<string name="pref_plugin_sharereceiver">Dela och ta emot</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Dela filer och webbadresser mellan enheter</string>
|
||||
<string name="plugin_not_available">Funktionen är inte tillgänglig i Android-versionen</string>
|
||||
<string name="device_list_empty">Inga apparater</string>
|
||||
<string name="ok">Ok</string>
|
||||
@@ -25,8 +25,8 @@
|
||||
<string name="open_settings">Öppna inställningarna</string>
|
||||
<string name="no_permissions">Du måste ge rättighet att komma åt underrättelser</string>
|
||||
<string name="send_ping">Skicka ping</string>
|
||||
<string name="open_mpris_controls">Öppna fjärrkontroll</string>
|
||||
<string name="open_mousepad">Öppna kontroll med tryckplatta</string>
|
||||
<string name="open_mpris_controls">Kontroll av multimedia</string>
|
||||
<string name="open_mousepad">Fjärrinmatning</string>
|
||||
<string name="mousepad_info">Flytta fingret på skärmen för att röra muspekaren. Rör för att klicka, och använd två eller tre fingrar för höger- och mittenknapparna. Använd en längre beröring för drag och släpp.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Ställ in åtgärd vid två fingerberöringar</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Ställ in åtgärd vid tre fingerberöringar</string>
|
||||
|
@@ -10,14 +10,14 @@
|
||||
<string name="pref_plugin_clipboard_desc">Спільне використання буфера обміну даними</string>
|
||||
<string name="pref_plugin_mousepad">Дистанційне введення</string>
|
||||
<string name="pref_plugin_mousepad_desc">Скористайтеся телефоном як замінником миші і клавіатури</string>
|
||||
<string name="pref_plugin_mpris">Дистанційне керування відтворенням</string>
|
||||
<string name="pref_plugin_mpris">Керування відтворенням</string>
|
||||
<string name="pref_plugin_mpris_desc">Керування відтворенням звуку та відео з вашого телефону</string>
|
||||
<string name="pref_plugin_ping">Підтримання зв’язку</string>
|
||||
<string name="pref_plugin_ping_desc">Надсилання і отримання сигналів підтримання зв’язку</string>
|
||||
<string name="pref_plugin_notifications">Синхронізація сповіщень</string>
|
||||
<string name="pref_plugin_notifications_desc">Доступ до ваших сповіщень з інших пристроїв</string>
|
||||
<string name="pref_plugin_sharereceiver">Отримувач спільних ресурсів</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Зберігає вхідні файли на носій даних телефону</string>
|
||||
<string name="pref_plugin_sharereceiver">Надання і отримання</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Спільне використання файлів і адрес між пристроями</string>
|
||||
<string name="plugin_not_available">Ця можливість є недоступною для вашої версії для Android</string>
|
||||
<string name="device_list_empty">Немає пристроїв</string>
|
||||
<string name="ok">Гаразд</string>
|
||||
@@ -25,8 +25,8 @@
|
||||
<string name="open_settings">Відкрити вікно параметрів</string>
|
||||
<string name="no_permissions">Вам слід надати доступ до сповіщень</string>
|
||||
<string name="send_ping">Надіслати сигнал підтримання зв’язку</string>
|
||||
<string name="open_mpris_controls">Відкрити дистанційне керування</string>
|
||||
<string name="open_mousepad">Відкрити керування сенсорною панеллю</string>
|
||||
<string name="open_mpris_controls">Керування відтворенням</string>
|
||||
<string name="open_mousepad">Дистанційне введення</string>
|
||||
<string name="mousepad_info">Проведіть по екрану пальцем, щоб пересунути вказівник миші. Дотик одним пальцем означатиме клацання, дотиком двома або трьома пальцями можна імітувати праву і середню кнопки. Для перетягування зі скиданням скористайтеся тривалим натисканням.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Встановлення дії для торкання двома пальцями</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Встановлення дії для торкання трьома пальцями</string>
|
||||
|
122
res/values-zh-rCN/strings.xml
Normal file
@@ -0,0 +1,122 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="pref_plugin_telephony">电话通知</string>
|
||||
<string name="pref_plugin_telephony_desc">为短信和来电发送通知</string>
|
||||
<string name="pref_plugin_battery">电池报告</string>
|
||||
<string name="pref_plugin_battery_desc">定期报告电池状态</string>
|
||||
<string name="pref_plugin_sftp">开放文件系统</string>
|
||||
<string name="pref_plugin_sftp_desc">允许远程浏览手机的文件系统</string>
|
||||
<string name="pref_plugin_clipboard">剪贴板同步</string>
|
||||
<string name="pref_plugin_clipboard_desc">共享剪贴板内容</string>
|
||||
<string name="pref_plugin_mousepad">远程输入</string>
|
||||
<string name="pref_plugin_mousepad_desc">将手机用作鼠标和键盘</string>
|
||||
<string name="pref_plugin_mpris_desc">从手机控制音频或视频</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">发送和接受ping</string>
|
||||
<string name="pref_plugin_notifications">通知同步</string>
|
||||
<string name="pref_plugin_notifications_desc">从其他设备访问你的通知</string>
|
||||
<string name="plugin_not_available">该特性不适用于您的Android版本</string>
|
||||
<string name="device_list_empty">无设备</string>
|
||||
<string name="ok">确认</string>
|
||||
<string name="cancel">取消</string>
|
||||
<string name="open_settings">开启设置</string>
|
||||
<string name="no_permissions">你需要授予权限以便访问通知</string>
|
||||
<string name="send_ping">发送ping</string>
|
||||
<string name="mousepad_info">在屏幕上移动手指来移动光标。轻击代表左键,双指或三指点击代表右键或中键。用长按来拖放。</string>
|
||||
<string name="mousepad_double_tap_settings_title">设置双指点击动作</string>
|
||||
<string name="mousepad_triple_tap_settings_title">设置三指点击动作</string>
|
||||
<string-array name="mousepad_tap_entries">
|
||||
<item>右键点击</item>
|
||||
<item>中键点击</item>
|
||||
<item>无</item>
|
||||
</string-array>
|
||||
<string name="mousepad_double_default">右</string>
|
||||
<string name="mousepad_triple_default">中</string>
|
||||
<string name="category_connected_devices">已连接设备</string>
|
||||
<string name="category_not_paired_devices">可用设备</string>
|
||||
<string name="category_remembered_devices">已记住设备</string>
|
||||
<string name="plugins_failed_to_load">插件载入失败 (按下以查看更多信息):</string>
|
||||
<string name="device_menu_plugins">插件设置</string>
|
||||
<string name="device_menu_unpair">取消配对</string>
|
||||
<string name="device_not_reachable">配对设备不可及</string>
|
||||
<string name="unknown_device">未知设备</string>
|
||||
<string name="error_not_reachable">设备不可及</string>
|
||||
<string name="error_already_requested">已在请求配对</string>
|
||||
<string name="error_already_paired">设备已配对</string>
|
||||
<string name="error_could_not_send_package">数据包无法发送</string>
|
||||
<string name="error_timed_out">超时</string>
|
||||
<string name="error_canceled_by_user">已被用户取消</string>
|
||||
<string name="error_canceled_by_other_peer">已被另一方取消</string>
|
||||
<string name="error_invalid_key">收到无效密钥</string>
|
||||
<string name="pair_requested">已请求配对</string>
|
||||
<string name="pairing_request_from">来自%1s的配对请求</string>
|
||||
<string name="received_url_title">已从%1s接收链接</string>
|
||||
<string name="received_url_text">点击以打开“%1s”</string>
|
||||
<string name="incoming_file_title">来自%1s的文件</string>
|
||||
<string name="incoming_file_text">%1s</string>
|
||||
<string name="outgoing_file_title">正在向%1s发送文件</string>
|
||||
<string name="outgoing_file_text">%1s</string>
|
||||
<string name="received_file_title">已从%1s接收文件</string>
|
||||
<string name="received_file_fail_title">未能从%1s接收文件</string>
|
||||
<string name="received_file_text">点击以打开“%1s”</string>
|
||||
<string name="sent_file_title">发送文件到%1s</string>
|
||||
<string name="sent_file_text">%1s</string>
|
||||
<string name="sent_file_failed_title">未能发送文件%1s</string>
|
||||
<string name="sent_file_failed_text">%1s</string>
|
||||
<string name="tap_to_answer">点击以应答</string>
|
||||
<string name="reconnect">重新连接</string>
|
||||
<string name="right_click">发送右键点击</string>
|
||||
<string name="middle_click">发送中键点击</string>
|
||||
<string name="show_keyboard">显示键盘</string>
|
||||
<string name="device_not_paired">设备未配对</string>
|
||||
<string name="request_pairing">请求配对</string>
|
||||
<string name="pairing_accept">接受</string>
|
||||
<string name="pairing_reject">拒绝</string>
|
||||
<string name="device">设备</string>
|
||||
<string name="pair_device">进行配对</string>
|
||||
<string name="remote_control">远程控制</string>
|
||||
<string name="settings">KDE Connect设置</string>
|
||||
<string name="mpris_play">播放</string>
|
||||
<string name="mpris_previous">前一个</string>
|
||||
<string name="mpris_rew">后退</string>
|
||||
<string name="mpris_ff">快进</string>
|
||||
<string name="mpris_next">下一个</string>
|
||||
<string name="mpris_volume">音量</string>
|
||||
<string name="mpris_settings">多媒体设置</string>
|
||||
<string name="mpris_time_settings_title">快进/后退按钮</string>
|
||||
<string name="mpris_time_settings_summary">调整快进或后退的时间 (当按下时)</string>
|
||||
<string-array name="mpris_time_entries">
|
||||
<item>10秒</item>
|
||||
<item>20秒</item>
|
||||
<item>30秒</item>
|
||||
<item>1分钟</item>
|
||||
<item>2分钟</item>
|
||||
</string-array>
|
||||
<string name="share_to">分享到...</string>
|
||||
<string name="protocol_version_older">该设备使用旧版本的协议</string>
|
||||
<string name="protocol_version_newer">该设备使用较新版本的协议</string>
|
||||
<string name="general_settings">通用设置</string>
|
||||
<string name="plugin_settings">设置</string>
|
||||
<string name="plugin_settings_with_name">%s设置</string>
|
||||
<string name="device_name">设备名</string>
|
||||
<string name="device_name_preference_summary">%s</string>
|
||||
<string name="invalid_device_name">设备名无效</string>
|
||||
<string name="shareplugin_text_saved">已收到文本,存至剪贴板</string>
|
||||
<string name="custom_devices_settings">自定义设备列表</string>
|
||||
<string name="custom_device_list">通过IP增加设备</string>
|
||||
<string name="share_notification_preference">出声通知</string>
|
||||
<string name="share_notification_preference_summary">当收到文件时震动并播放声音</string>
|
||||
<string name="title_activity_notification_filter">通知过滤器</string>
|
||||
<string name="filter_apps_info">所选软件的通知将会被同步。</string>
|
||||
<string name="sftp_internal_storage">内部存储</string>
|
||||
<string name="sftp_all_files">所有文件</string>
|
||||
<string name="sftp_sdcard_num">SD卡%d</string>
|
||||
<string name="sftp_sdcard">SD卡</string>
|
||||
<string name="sftp_readonly">(只读)</string>
|
||||
<string name="sftp_camera">相机照片</string>
|
||||
<string name="add_host">增加主机/IP</string>
|
||||
<string name="add_host_hint">主机名或IP</string>
|
||||
<string name="no_players_connected">未找到播放器</string>
|
||||
<string name="custom_dev_list_help">仅当你的设备没有被自动检测出时再使用本选项。在下方输入IP地址或主机名,然后点击按钮以添加其到列表中。点击已有条目来从列表中删除它。</string>
|
||||
<string name="mpris_player_on_device">%2$s上的%1$s</string>
|
||||
</resources>
|
@@ -11,14 +11,14 @@
|
||||
<string name="pref_plugin_clipboard_desc">Share the clipboard content</string>
|
||||
<string name="pref_plugin_mousepad">Remote input</string>
|
||||
<string name="pref_plugin_mousepad_desc">Use your phone as a mouse and keyboard</string>
|
||||
<string name="pref_plugin_mpris">Multimedia remote controls</string>
|
||||
<string name="pref_plugin_mpris">Multimedia controls</string>
|
||||
<string name="pref_plugin_mpris_desc">Control audio/video from your phone</string>
|
||||
<string name="pref_plugin_ping">Ping</string>
|
||||
<string name="pref_plugin_ping_desc">Send and receive pings</string>
|
||||
<string name="pref_plugin_notifications">Notification sync</string>
|
||||
<string name="pref_plugin_notifications_desc">Access your notifications from other devices</string>
|
||||
<string name="pref_plugin_sharereceiver">Share receiver</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Save incoming files to the phone storage</string>
|
||||
<string name="pref_plugin_sharereceiver">Share and receive</string>
|
||||
<string name="pref_plugin_sharereceiver_desc">Share files and URLs between devices</string>
|
||||
<string name="plugin_not_available">This feature is not available in your Android version</string>
|
||||
<string name="device_list_empty">No devices</string>
|
||||
<string name="ok">OK</string>
|
||||
@@ -26,8 +26,8 @@
|
||||
<string name="open_settings">Open settings</string>
|
||||
<string name="no_permissions">You need to grant permission to access notifications</string>
|
||||
<string name="send_ping">Send ping</string>
|
||||
<string name="open_mpris_controls">Open remote control</string>
|
||||
<string name="open_mousepad">Open touchpad control</string>
|
||||
<string name="open_mpris_controls">Multimedia control</string>
|
||||
<string name="open_mousepad">Remote input</string>
|
||||
<string name="mousepad_info">Move a finger on the screen to move the mouse cursor. Tap for a click, and use two/three fingers for right and middle buttons. Use a long press to drag\'n drop.</string>
|
||||
<string name="mousepad_double_tap_settings_title">Set two finger tap action</string>
|
||||
<string name="mousepad_triple_tap_settings_title">Set three finger tap action</string>
|
||||
|
@@ -1,20 +1,7 @@
|
||||
<resources>
|
||||
|
||||
<!--
|
||||
Base application theme, dependent on API level. This theme is replaced
|
||||
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
|
||||
-->
|
||||
<style name="AppBaseTheme" parent="android:Theme">
|
||||
<!--
|
||||
Theme customizations available in newer API levels can go in
|
||||
res/values-vXX/styles.xml, while customizations related to
|
||||
backward-compatibility can go here.
|
||||
-->
|
||||
</style>
|
||||
<style name="KdeConnectTheme" parent="Theme.AppCompat">
|
||||
|
||||
<!-- Application theme. -->
|
||||
<style name="AppTheme" parent="AppBaseTheme">
|
||||
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<EditTextPreference
|
||||
android:key="device_name_preference"
|
||||
android:title="@string/device_name"
|
||||
android:summary="@string/device_name_preference_summary"
|
||||
android:summary=""
|
||||
android:dialogTitle="@string/device_name"
|
||||
android:singleLine="true" />
|
||||
|
||||
|
@@ -306,14 +306,19 @@ public class BackgroundService extends Service {
|
||||
RunCommand(c, null);
|
||||
}
|
||||
|
||||
public static void RunCommand(Context c, final InstanceCallback callback) {
|
||||
if (callback != null) {
|
||||
mutex.lock();
|
||||
callbacks.add(callback);
|
||||
mutex.unlock();
|
||||
}
|
||||
Intent serviceIntent = new Intent(c, BackgroundService.class);
|
||||
c.startService(serviceIntent);
|
||||
public static void RunCommand(final Context c, final InstanceCallback callback) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (callback != null) {
|
||||
mutex.lock();
|
||||
callbacks.add(callback);
|
||||
mutex.unlock();
|
||||
}
|
||||
Intent serviceIntent = new Intent(c, BackgroundService.class);
|
||||
c.startService(serviceIntent);
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -27,6 +27,8 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.preference.PreferenceManager;
|
||||
@@ -61,13 +63,32 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
private int notificationId;
|
||||
private int protocolVersion;
|
||||
|
||||
private enum PairStatus {
|
||||
public enum PairStatus {
|
||||
NotPaired,
|
||||
Requested,
|
||||
RequestedByPeer,
|
||||
Paired
|
||||
}
|
||||
|
||||
public enum DeviceType {
|
||||
Phone,
|
||||
Tablet,
|
||||
Computer;
|
||||
|
||||
public static DeviceType FromString(String s) {
|
||||
if ("tablet".equals(s)) return Tablet;
|
||||
if ("computer".equals(s)) return Computer;
|
||||
return Phone; //Default
|
||||
}
|
||||
public String toString() {
|
||||
switch (this) {
|
||||
case Tablet: return "tablet";
|
||||
case Computer: return "computer";
|
||||
default: return "phone";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public interface PairingCallback {
|
||||
abstract void incomingRequest();
|
||||
abstract void pairingSuccessful();
|
||||
@@ -75,6 +96,7 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
abstract void unpaired();
|
||||
}
|
||||
|
||||
private DeviceType deviceType;
|
||||
private PairStatus pairStatus;
|
||||
private ArrayList<PairingCallback> pairingCallback = new ArrayList<PairingCallback>();
|
||||
private Timer pairingTimer;
|
||||
@@ -96,12 +118,14 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
this.name = settings.getString("deviceName", context.getString(R.string.unknown_device));
|
||||
this.pairStatus = PairStatus.Paired;
|
||||
this.protocolVersion = NetworkPackage.ProtocolVersion; //We don't know it yet
|
||||
this.deviceType = DeviceType.FromString(settings.getString("deviceType", "computer"));
|
||||
|
||||
try {
|
||||
byte[] publicKeyBytes = Base64.decode(settings.getString("publicKey", ""), 0);
|
||||
publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(publicKeyBytes));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
unpair();
|
||||
Log.e("KDE/Device","Exception");
|
||||
}
|
||||
|
||||
@@ -116,8 +140,9 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
this.context = context;
|
||||
this.deviceId = np.getString("deviceId");
|
||||
this.name = np.getString("deviceName", context.getString(R.string.unknown_device));
|
||||
this.protocolVersion = np.getInt("protocolVersion");
|
||||
this.pairStatus = PairStatus.NotPaired;
|
||||
this.protocolVersion = np.getInt("protocolVersion");
|
||||
this.deviceType = DeviceType.FromString(np.getString("deviceType", "computer"));
|
||||
this.publicKey = null;
|
||||
|
||||
settings = context.getSharedPreferences(deviceId, Context.MODE_PRIVATE);
|
||||
@@ -129,6 +154,19 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
return name != null? name : context.getString(R.string.unknown_device);
|
||||
}
|
||||
|
||||
public Drawable getIcon()
|
||||
{
|
||||
switch (deviceType) {
|
||||
case Phone: return context.getResources().getDrawable(R.drawable.ic_device_phone);
|
||||
case Tablet: return context.getResources().getDrawable(R.drawable.ic_device_tablet);
|
||||
default: return context.getResources().getDrawable(R.drawable.ic_device_laptop);
|
||||
}
|
||||
}
|
||||
|
||||
public DeviceType getDeviceType() {
|
||||
return deviceType;
|
||||
}
|
||||
|
||||
public String getDeviceId() {
|
||||
return deviceId;
|
||||
}
|
||||
@@ -257,6 +295,7 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
//Store device information needed to create a Device object in a future
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
editor.putString("deviceName", getName());
|
||||
editor.putString("deviceType", deviceType.toString());
|
||||
String encodedPublicKey = Base64.encodeToString(publicKey.getEncoded(), 0);
|
||||
editor.putString("publicKey", encodedPublicKey);
|
||||
editor.apply();
|
||||
@@ -332,6 +371,10 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
if (identityPackage.has("deviceType")) {
|
||||
this.deviceType = DeviceType.FromString(identityPackage.getString("deviceType", "computer"));
|
||||
}
|
||||
|
||||
|
||||
links.add(link);
|
||||
|
||||
@@ -442,7 +485,12 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
|
||||
final NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
notificationId = (int)System.currentTimeMillis();
|
||||
notificationManager.notify(notificationId, noti);
|
||||
try {
|
||||
notificationManager.notify(notificationId, noti);
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
|
||||
if (pairingTimer != null) pairingTimer.cancel();
|
||||
pairingTimer = new Timer();
|
||||
@@ -572,29 +620,37 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
// Plugin-related functions
|
||||
//
|
||||
|
||||
public Plugin getPlugin(String name) {
|
||||
return getPlugin(name, false);
|
||||
public <T extends Plugin> T getPlugin(Class<T> pluginClass) {
|
||||
return (T)getPlugin(Plugin.getPluginKey(pluginClass));
|
||||
}
|
||||
|
||||
public Plugin getPlugin(String name, boolean includeFailed) {
|
||||
Plugin plugin = plugins.get(name);
|
||||
public <T extends Plugin> T getPlugin(Class<T> pluginClass, boolean includeFailed) {
|
||||
return (T)getPlugin(Plugin.getPluginKey(pluginClass), includeFailed);
|
||||
}
|
||||
|
||||
public Plugin getPlugin(String pluginKey) {
|
||||
return getPlugin(pluginKey, false);
|
||||
}
|
||||
|
||||
public Plugin getPlugin(String pluginKey, boolean includeFailed) {
|
||||
Plugin plugin = plugins.get(pluginKey);
|
||||
if (includeFailed && plugin == null) {
|
||||
plugin = failedPlugins.get(name);
|
||||
plugin = failedPlugins.get(pluginKey);
|
||||
}
|
||||
return plugin;
|
||||
}
|
||||
|
||||
private synchronized void addPlugin(final String name) {
|
||||
Plugin existing = plugins.get(name);
|
||||
private synchronized void addPlugin(final String pluginKey) {
|
||||
Plugin existing = plugins.get(pluginKey);
|
||||
if (existing != null) {
|
||||
Log.w("KDE/addPlugin","plugin already present:" + name);
|
||||
Log.w("KDE/addPlugin","plugin already present:" + pluginKey);
|
||||
return;
|
||||
}
|
||||
|
||||
final Plugin plugin = PluginFactory.instantiatePluginForDevice(context, name, this);
|
||||
final Plugin plugin = PluginFactory.instantiatePluginForDevice(context, pluginKey, this);
|
||||
if (plugin == null) {
|
||||
Log.e("KDE/addPlugin","could not instantiate plugin: "+name);
|
||||
failedPlugins.put(name, plugin);
|
||||
Log.e("KDE/addPlugin","could not instantiate plugin: "+pluginKey);
|
||||
failedPlugins.put(pluginKey, plugin);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -608,17 +664,17 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
} catch (Exception e) {
|
||||
success = false;
|
||||
e.printStackTrace();
|
||||
Log.e("KDE/addPlugin", "Exception loading plugin " + name);
|
||||
Log.e("KDE/addPlugin", "Exception loading plugin " + pluginKey);
|
||||
}
|
||||
|
||||
if (success) {
|
||||
//Log.e("addPlugin","added " + name);
|
||||
failedPlugins.remove(name);
|
||||
plugins.put(name, plugin);
|
||||
//Log.e("addPlugin","added " + pluginKey);
|
||||
failedPlugins.remove(pluginKey);
|
||||
plugins.put(pluginKey, plugin);
|
||||
} else {
|
||||
Log.e("KDE/addPlugin", "plugin failed to load " + name);
|
||||
plugins.remove(name);
|
||||
failedPlugins.put(name, plugin);
|
||||
Log.e("KDE/addPlugin", "plugin failed to load " + pluginKey);
|
||||
plugins.remove(pluginKey);
|
||||
failedPlugins.put(pluginKey, plugin);
|
||||
}
|
||||
|
||||
for (PluginsChangedListener listener : pluginsChangedListeners) {
|
||||
@@ -630,10 +686,10 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
|
||||
}
|
||||
|
||||
private synchronized boolean removePlugin(String name) {
|
||||
private synchronized boolean removePlugin(String pluginKey) {
|
||||
|
||||
Plugin plugin = plugins.remove(name);
|
||||
Plugin failedPlugin = failedPlugins.remove(name);
|
||||
Plugin plugin = plugins.remove(pluginKey);
|
||||
Plugin failedPlugin = failedPlugins.remove(pluginKey);
|
||||
|
||||
if (plugin == null) {
|
||||
if (failedPlugin == null) {
|
||||
@@ -645,10 +701,10 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
|
||||
try {
|
||||
plugin.onDestroy();
|
||||
//Log.e("removePlugin","removed " + name);
|
||||
//Log.e("removePlugin","removed " + pluginKey);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Log.e("KDE/removePlugin","Exception calling onDestroy for plugin "+name);
|
||||
Log.e("KDE/removePlugin","Exception calling onDestroy for plugin "+pluginKey);
|
||||
}
|
||||
|
||||
for (PluginsChangedListener listener : pluginsChangedListeners) {
|
||||
@@ -658,15 +714,15 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setPluginEnabled(String pluginName, boolean value) {
|
||||
settings.edit().putBoolean(pluginName,value).apply();
|
||||
if (value && isPaired() && isReachable()) addPlugin(pluginName);
|
||||
else removePlugin(pluginName);
|
||||
public void setPluginEnabled(String pluginKey, boolean value) {
|
||||
settings.edit().putBoolean(pluginKey,value).apply();
|
||||
if (value && isPaired() && isReachable()) addPlugin(pluginKey);
|
||||
else removePlugin(pluginKey);
|
||||
}
|
||||
|
||||
public boolean isPluginEnabled(String pluginName) {
|
||||
boolean enabledByDefault = PluginFactory.getPluginInfo(context, pluginName).isEnabledByDefault();
|
||||
boolean enabled = settings.getBoolean(pluginName, enabledByDefault);
|
||||
public boolean isPluginEnabled(String pluginKey) {
|
||||
boolean enabledByDefault = PluginFactory.getPluginInfo(context, pluginKey).isEnabledByDefault();
|
||||
boolean enabled = settings.getBoolean(pluginKey, enabledByDefault);
|
||||
return enabled;
|
||||
}
|
||||
|
||||
@@ -680,15 +736,15 @@ public class Device implements BaseLink.PackageReceiver {
|
||||
|
||||
Set<String> availablePlugins = PluginFactory.getAvailablePlugins();
|
||||
|
||||
for(String pluginName : availablePlugins) {
|
||||
for(String pluginKey : availablePlugins) {
|
||||
boolean enabled = false;
|
||||
if (isPaired() && isReachable()) {
|
||||
enabled = isPluginEnabled(pluginName);
|
||||
enabled = isPluginEnabled(pluginKey);
|
||||
}
|
||||
if (enabled) {
|
||||
addPlugin(pluginName);
|
||||
addPlugin(pluginKey);
|
||||
} else {
|
||||
removePlugin(pluginName);
|
||||
removePlugin(pluginKey);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -23,6 +23,7 @@ package org.kde.kdeconnect.Helpers;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -335,16 +336,26 @@ public class DeviceHelper {
|
||||
}
|
||||
|
||||
public static String getDeviceName() {
|
||||
|
||||
String dictName = humanReadableNames.get(Build.MODEL.replace(' ','_'));
|
||||
if (dictName != null) return dictName;
|
||||
|
||||
if (Build.BRAND.equals("samsung") || Build.BRAND.equals("Samsung")) {
|
||||
return "Samsung" + Build.MODEL;
|
||||
String deviceName = null;
|
||||
try {
|
||||
String dictName = humanReadableNames.get(Build.MODEL.replace(' ', '_'));
|
||||
if (dictName != null) {
|
||||
deviceName = dictName;
|
||||
} else if (Build.BRAND.equalsIgnoreCase("samsung")) {
|
||||
deviceName = "Samsung " + Build.MODEL;
|
||||
} else {
|
||||
deviceName = Build.BRAND;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
//Some phones might not define BRAND or MODEL, ignore exceptions
|
||||
Log.e("Exception", e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (deviceName == null || deviceName.isEmpty()) {
|
||||
return "Android"; //Could not find a name
|
||||
} else {
|
||||
return deviceName;
|
||||
}
|
||||
|
||||
return Build.MODEL;
|
||||
|
||||
}
|
||||
|
||||
public static boolean isTablet() {
|
||||
|
@@ -85,6 +85,10 @@ public class NetworkPackage {
|
||||
return mType;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return mId;
|
||||
}
|
||||
|
||||
//Most commons getters and setters defined for convenience
|
||||
public String getString(String key) { return mBody.optString(key,""); }
|
||||
public String getString(String key, String defaultValue) { return mBody.optString(key,defaultValue); }
|
||||
|
@@ -20,20 +20,17 @@
|
||||
|
||||
package org.kde.kdeconnect.Plugins.BatteryPlugin;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.BatteryManager;
|
||||
import android.widget.Button;
|
||||
|
||||
import org.kde.kdeconnect.NetworkPackage;
|
||||
import org.kde.kdeconnect.Plugins.Plugin;
|
||||
import org.kde.kdeconnect_tp.R;
|
||||
|
||||
|
||||
public class BatteryPlugin extends Plugin {
|
||||
|
||||
// keep these fields in sync with kdeconnect-kded:BatteryPlugin.h:ThresholdBatteryEvent
|
||||
@@ -42,11 +39,6 @@ public class BatteryPlugin extends Plugin {
|
||||
|
||||
private NetworkPackage lastInfo = null;
|
||||
|
||||
@Override
|
||||
public String getPluginName() {
|
||||
return "plugin_battery";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return context.getResources().getString(R.string.pref_plugin_battery);
|
||||
@@ -57,21 +49,6 @@ public class BatteryPlugin extends Plugin {
|
||||
return context.getResources().getString(R.string.pref_plugin_battery_desc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Drawable getIcon() {
|
||||
return context.getResources().getDrawable(R.drawable.icon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSettings() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabledByDefault() {
|
||||
return true;
|
||||
}
|
||||
|
||||
private final BroadcastReceiver receiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent batteryIntent) {
|
||||
@@ -133,13 +110,4 @@ public class BatteryPlugin extends Plugin {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AlertDialog getErrorDialog(Activity deviceActivity) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Button getInterfaceButton(Activity activity) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@@ -31,10 +31,6 @@ import org.kde.kdeconnect_tp.R;
|
||||
|
||||
public class ClipboardPlugin extends Plugin {
|
||||
|
||||
@Override
|
||||
public String getPluginName() {
|
||||
return "plugin_clipboard";
|
||||
}
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return context.getResources().getString(R.string.pref_plugin_clipboard);
|
||||
|
@@ -176,7 +176,7 @@ public class KeyListenerView extends View {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MousePadPlugin mousePadPlugin = (MousePadPlugin) device.getPlugin("plugin_mousepad");
|
||||
MousePadPlugin mousePadPlugin = (MousePadPlugin) device.getPlugin(MousePadPlugin.class);
|
||||
if (mousePadPlugin == null) return;
|
||||
mousePadPlugin.sendKeyboardPacket(np);
|
||||
}
|
||||
|
@@ -182,7 +182,7 @@ public class MousePadActivity extends ActionBarActivity implements GestureDetect
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MousePadPlugin mousePadPlugin = (MousePadPlugin)device.getPlugin("plugin_mousepad");
|
||||
MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class);
|
||||
if (mousePadPlugin == null) return;
|
||||
mousePadPlugin.sendMouseDelta(mCurrentX - mPrevX, mCurrentY - mPrevY);
|
||||
mPrevX = mCurrentX;
|
||||
@@ -227,7 +227,7 @@ public class MousePadActivity extends ActionBarActivity implements GestureDetect
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MousePadPlugin mousePadPlugin = (MousePadPlugin)device.getPlugin("plugin_mousepad");
|
||||
MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class);
|
||||
if (mousePadPlugin == null) return;
|
||||
mousePadPlugin.sendScroll(0, scrollToSendY);
|
||||
}
|
||||
@@ -248,7 +248,7 @@ public class MousePadActivity extends ActionBarActivity implements GestureDetect
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MousePadPlugin mousePadPlugin = (MousePadPlugin)device.getPlugin("plugin_mousepad");
|
||||
MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class);
|
||||
if (mousePadPlugin == null) return;
|
||||
mousePadPlugin.sendSingleHold();
|
||||
}
|
||||
@@ -266,7 +266,7 @@ public class MousePadActivity extends ActionBarActivity implements GestureDetect
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MousePadPlugin mousePadPlugin = (MousePadPlugin)device.getPlugin("plugin_mousepad");
|
||||
MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class);
|
||||
if (mousePadPlugin == null) return;
|
||||
mousePadPlugin.sendSingleClick();
|
||||
}
|
||||
@@ -280,7 +280,7 @@ public class MousePadActivity extends ActionBarActivity implements GestureDetect
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MousePadPlugin mousePadPlugin = (MousePadPlugin)device.getPlugin("plugin_mousepad");
|
||||
MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class);
|
||||
if (mousePadPlugin == null) return;
|
||||
mousePadPlugin.sendDoubleClick();
|
||||
}
|
||||
@@ -327,7 +327,7 @@ public class MousePadActivity extends ActionBarActivity implements GestureDetect
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MousePadPlugin mousePadPlugin = (MousePadPlugin)device.getPlugin("plugin_mousepad");
|
||||
MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class);
|
||||
if (mousePadPlugin == null) return;
|
||||
mousePadPlugin.sendMiddleClick();
|
||||
}
|
||||
@@ -339,7 +339,7 @@ public class MousePadActivity extends ActionBarActivity implements GestureDetect
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MousePadPlugin mousePadPlugin = (MousePadPlugin) device.getPlugin("plugin_mousepad");
|
||||
MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class);
|
||||
if (mousePadPlugin == null) return;
|
||||
mousePadPlugin.sendRightClick();
|
||||
}
|
||||
@@ -350,7 +350,7 @@ public class MousePadActivity extends ActionBarActivity implements GestureDetect
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MousePadPlugin mousePadPlugin = (MousePadPlugin) device.getPlugin("plugin_mousepad");
|
||||
MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class);
|
||||
if (mousePadPlugin == null) return;
|
||||
mousePadPlugin.sendSingleHold();
|
||||
}
|
||||
|
@@ -21,11 +21,8 @@
|
||||
package org.kde.kdeconnect.Plugins.MousePadPlugin;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import org.kde.kdeconnect.NetworkPackage;
|
||||
import org.kde.kdeconnect.Plugins.Plugin;
|
||||
@@ -33,11 +30,6 @@ import org.kde.kdeconnect_tp.R;
|
||||
|
||||
public class MousePadPlugin extends Plugin {
|
||||
|
||||
@Override
|
||||
public String getPluginName() {
|
||||
return "plugin_mousepad";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return context.getString(R.string.pref_plugin_mousepad);
|
||||
@@ -50,12 +42,7 @@ public class MousePadPlugin extends Plugin {
|
||||
|
||||
@Override
|
||||
public Drawable getIcon() {
|
||||
return context.getResources().getDrawable(R.drawable.icon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabledByDefault() {
|
||||
return true;
|
||||
return context.getResources().getDrawable(R.drawable.touchpad_plugin_action);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,36 +51,20 @@ public class MousePadPlugin extends Plugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
public boolean hasMainActivity() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
public void startMainActivity(Activity parentActivity) {
|
||||
Intent intent = new Intent(parentActivity, MousePadActivity.class);
|
||||
intent.putExtra("deviceId", device.getDeviceId());
|
||||
parentActivity.startActivity(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPackageReceived(NetworkPackage np) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AlertDialog getErrorDialog(Activity deviceActivity) { return null; }
|
||||
|
||||
@Override
|
||||
public Button getInterfaceButton(final Activity activity) {
|
||||
Button button = new Button(activity);
|
||||
button.setText(R.string.open_mousepad);
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(activity, MousePadActivity.class);
|
||||
intent.putExtra("deviceId", device.getDeviceId());
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
});
|
||||
return button;
|
||||
public String getActionName() {
|
||||
return context.getString(R.string.open_mousepad);
|
||||
}
|
||||
|
||||
public void sendMouseDelta(float dx, float dy) {
|
||||
|
@@ -75,7 +75,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
|
||||
final Device device = service.getDevice(deviceId);
|
||||
final MprisPlugin mpris = (MprisPlugin) device.getPlugin("plugin_mpris");
|
||||
final MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris == null) {
|
||||
Log.e("MprisActivity", "device has no mpris plugin!");
|
||||
return;
|
||||
@@ -246,7 +246,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MprisPlugin mpris = (MprisPlugin) device.getPlugin("plugin_mpris");
|
||||
MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris == null) return;
|
||||
updateVolume(mpris, 5);
|
||||
}
|
||||
@@ -257,7 +257,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MprisPlugin mpris = (MprisPlugin) device.getPlugin("plugin_mpris");
|
||||
MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris == null) return;
|
||||
updateVolume(mpris, -5);
|
||||
}
|
||||
@@ -309,7 +309,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MprisPlugin mpris = (MprisPlugin)device.getPlugin("plugin_mpris");
|
||||
MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris == null) return;
|
||||
mpris.sendAction("PlayPause");
|
||||
}
|
||||
@@ -324,7 +324,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MprisPlugin mpris = (MprisPlugin)device.getPlugin("plugin_mpris");
|
||||
MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris == null) return;
|
||||
mpris.sendAction("Previous");
|
||||
}
|
||||
@@ -339,7 +339,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MprisPlugin mpris = (MprisPlugin)device.getPlugin("plugin_mpris");
|
||||
MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris == null) return;
|
||||
mpris.Seek(interval_time * -1);
|
||||
}
|
||||
@@ -354,7 +354,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MprisPlugin mpris = (MprisPlugin)device.getPlugin("plugin_mpris");
|
||||
MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris == null) return;
|
||||
mpris.Seek(interval_time);
|
||||
}
|
||||
@@ -369,7 +369,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MprisPlugin mpris = (MprisPlugin)device.getPlugin("plugin_mpris");
|
||||
MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris == null) return;
|
||||
mpris.sendAction("Next");
|
||||
}
|
||||
@@ -392,7 +392,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MprisPlugin mpris = (MprisPlugin) device.getPlugin("plugin_mpris");
|
||||
MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris == null) return;
|
||||
mpris.setVolume(seekBar.getProgress());
|
||||
}
|
||||
@@ -409,7 +409,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MprisPlugin mpris = (MprisPlugin) device.getPlugin("plugin_mpris");
|
||||
MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris != null) {
|
||||
positionSeek.setProgress((int) (mpris.getPosition()));
|
||||
}
|
||||
@@ -438,7 +438,7 @@ public class MprisActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void onServiceStart(BackgroundService service) {
|
||||
Device device = service.getDevice(deviceId);
|
||||
MprisPlugin mpris = (MprisPlugin) device.getPlugin("plugin_mpris");
|
||||
MprisPlugin mpris = device.getPlugin(MprisPlugin.class);
|
||||
if (mpris != null) {
|
||||
mpris.setPosition(seekBar.getProgress());
|
||||
}
|
||||
|
@@ -21,14 +21,11 @@
|
||||
package org.kde.kdeconnect.Plugins.MprisPlugin;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import org.kde.kdeconnect.NetworkPackage;
|
||||
import org.kde.kdeconnect.Plugins.Plugin;
|
||||
@@ -51,11 +48,6 @@ public class MprisPlugin extends Plugin {
|
||||
private ArrayList<String> playerList = new ArrayList<String>();
|
||||
private HashMap<String,Handler> playerListUpdated = new HashMap<String,Handler>();
|
||||
|
||||
@Override
|
||||
public String getPluginName() {
|
||||
return "plugin_mpris";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return context.getResources().getString(R.string.pref_plugin_mpris);
|
||||
@@ -68,7 +60,7 @@ public class MprisPlugin extends Plugin {
|
||||
|
||||
@Override
|
||||
public Drawable getIcon() {
|
||||
return context.getResources().getDrawable(R.drawable.icon);
|
||||
return context.getResources().getDrawable(R.drawable.mpris_plugin_action);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -76,11 +68,6 @@ public class MprisPlugin extends Plugin {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabledByDefault() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
requestPlayerList();
|
||||
@@ -267,22 +254,20 @@ public class MprisPlugin extends Plugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AlertDialog getErrorDialog(Activity deviceActivity) {
|
||||
return null;
|
||||
public boolean hasMainActivity() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Button getInterfaceButton(final Activity activity) {
|
||||
Button b = new Button(activity);
|
||||
b.setText(R.string.open_mpris_controls);
|
||||
b.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent(activity, MprisActivity.class);
|
||||
intent.putExtra("deviceId", device.getDeviceId());
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
});
|
||||
return b;
|
||||
public void startMainActivity(Activity parentActivity) {
|
||||
Intent intent = new Intent(parentActivity, MprisActivity.class);
|
||||
intent.putExtra("deviceId", device.getDeviceId());
|
||||
parentActivity.startActivity(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getActionName() {
|
||||
return context.getString(R.string.open_mpris_controls);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -25,13 +25,11 @@ import android.app.AlertDialog;
|
||||
import android.app.Notification;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.service.notification.StatusBarNotification;
|
||||
import android.util.Log;
|
||||
import android.widget.Button;
|
||||
|
||||
import org.kde.kdeconnect.Helpers.AppsHelper;
|
||||
import org.kde.kdeconnect.NetworkPackage;
|
||||
@@ -44,10 +42,6 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
||||
/*
|
||||
private boolean sendIcons = false;
|
||||
*/
|
||||
@Override
|
||||
public String getPluginName() {
|
||||
return "plugin_notifications";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
@@ -59,11 +53,6 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
||||
return context.getResources().getString(R.string.pref_plugin_notifications_desc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Drawable getIcon() {
|
||||
return context.getResources().getDrawable(R.drawable.icon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSettings() {
|
||||
return true;
|
||||
@@ -79,11 +68,6 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabledByDefault() {
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean hasPermission() {
|
||||
String notificationListenerList = Settings.Secure.getString(context.getContentResolver(), "enabled_notification_listeners");
|
||||
return (notificationListenerList != null && notificationListenerList.contains(context.getPackageName()));
|
||||
@@ -140,9 +124,6 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
|
||||
@@ -173,7 +154,6 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
@@ -190,9 +170,6 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onNotificationRemoved(StatusBarNotification statusBarNotification) {
|
||||
NotificationId id = NotificationId.fromNotification(statusBarNotification);
|
||||
@@ -421,9 +398,4 @@ public class NotificationsPlugin extends Plugin implements NotificationReceiver.
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Button getInterfaceButton(Activity activity) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -21,17 +21,13 @@
|
||||
package org.kde.kdeconnect.Plugins.PingPlugin;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.support.v4.app.TaskStackBuilder;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import org.kde.kdeconnect.NetworkPackage;
|
||||
import org.kde.kdeconnect.Plugins.Plugin;
|
||||
@@ -41,11 +37,6 @@ import org.kde.kdeconnect_tp.R;
|
||||
|
||||
public class PingPlugin extends Plugin {
|
||||
|
||||
@Override
|
||||
public String getPluginName() {
|
||||
return "plugin_ping";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return context.getResources().getString(R.string.pref_plugin_ping);
|
||||
@@ -56,31 +47,6 @@ public class PingPlugin extends Plugin {
|
||||
return context.getResources().getString(R.string.pref_plugin_ping_desc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Drawable getIcon() {
|
||||
return context.getResources().getDrawable(R.drawable.icon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSettings() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabledByDefault() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPackageReceived(NetworkPackage np) {
|
||||
|
||||
@@ -117,7 +83,13 @@ public class PingPlugin extends Plugin {
|
||||
.build();
|
||||
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
notificationManager.notify(id, noti);
|
||||
try {
|
||||
notificationManager.notify(id, noti);
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
@@ -125,21 +97,24 @@ public class PingPlugin extends Plugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AlertDialog getErrorDialog(Activity deviceActivity) {
|
||||
return null;
|
||||
public String getActionName() {
|
||||
return context.getString(R.string.send_ping);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Button getInterfaceButton(Activity activity) {
|
||||
Button b = new Button(activity);
|
||||
b.setText(R.string.send_ping);
|
||||
b.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
device.sendPackage(new NetworkPackage(NetworkPackage.PACKAGE_TYPE_PING));
|
||||
}
|
||||
});
|
||||
return b;
|
||||
public void startMainActivity(Activity activity) {
|
||||
if (device != null) {
|
||||
device.sendPackage(new NetworkPackage(NetworkPackage.PACKAGE_TYPE_PING));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasMainActivity() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean displayInContextMenu() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@@ -25,6 +25,7 @@ import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import org.kde.kdeconnect.Device;
|
||||
@@ -44,10 +45,14 @@ public abstract class Plugin {
|
||||
|
||||
/**
|
||||
* Return the internal plugin name, that will be used as a
|
||||
* unique key to distinguish it. This function can not access
|
||||
* this.context nor this.device.
|
||||
* unique key to distinguish it. Use the class name as key.
|
||||
*/
|
||||
public abstract String getPluginName();
|
||||
public String getPluginKey() {
|
||||
return getPluginKey(this.getClass());
|
||||
}
|
||||
public static String getPluginKey(Class<? extends Plugin> p) {
|
||||
return p.getSimpleName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the human-readable plugin name. This function can
|
||||
@@ -61,23 +66,37 @@ public abstract class Plugin {
|
||||
*/
|
||||
public abstract String getDescription();
|
||||
|
||||
/**
|
||||
* Return the action name displayed in the main activity, that
|
||||
* will call startMainActivity when clicked
|
||||
*/
|
||||
public String getActionName() {
|
||||
return getDisplayName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an icon associated to this plugin. This function can
|
||||
* access this.context to load the image from resources.
|
||||
*/
|
||||
public abstract Drawable getIcon();
|
||||
public Drawable getIcon() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if this plugin should be enabled on new devices.
|
||||
* This function can access this.context and perform compatibility
|
||||
* checks with the Android version, but can not access this.device.
|
||||
*/
|
||||
public abstract boolean isEnabledByDefault();
|
||||
public boolean isEnabledByDefault() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if this plugin needs an specific UI settings.
|
||||
*/
|
||||
public abstract boolean hasSettings();
|
||||
public boolean hasSettings() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* If hasSettings returns true, this will be called when the user
|
||||
@@ -88,33 +107,56 @@ public abstract class Plugin {
|
||||
public void startPreferencesActivity(SettingsActivity parentActivity) {
|
||||
Intent intent = new Intent(parentActivity, PluginSettingsActivity.class);
|
||||
intent.putExtra("plugin_display_name", getDisplayName());
|
||||
intent.putExtra("plugin_name", getPluginName());
|
||||
intent.putExtra("plugin_key", getPluginKey());
|
||||
parentActivity.startActivity(intent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if the plugin should display something in the Device main view
|
||||
*/
|
||||
public boolean hasMainActivity() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement here what your plugin should do when clicked
|
||||
*/
|
||||
public void startMainActivity(Activity parentActivity) { }
|
||||
|
||||
/**
|
||||
* Return true if the entry for this app should appear in the context menu instead of the main view
|
||||
*/
|
||||
public boolean displayInContextMenu() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the listeners and structures in your plugin.
|
||||
* Should return true if initialization was successful.
|
||||
*/
|
||||
public abstract boolean onCreate();
|
||||
public boolean onCreate() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish any ongoing operations, remove listeners... so
|
||||
* this object could be garbage collected.
|
||||
*/
|
||||
public abstract void onDestroy();
|
||||
public void onDestroy() { }
|
||||
|
||||
/**
|
||||
* If onCreate returns false, should create a dialog explaining
|
||||
* the problem (and how to fix it, if possible) to the user.
|
||||
*/
|
||||
public abstract boolean onPackageReceived(NetworkPackage np);
|
||||
public boolean onPackageReceived(NetworkPackage np) { return false; }
|
||||
|
||||
/**
|
||||
* If onCreate returns false, should create a dialog explaining
|
||||
* the problem (and how to fix it, if possible) to the user.
|
||||
*/
|
||||
public abstract AlertDialog getErrorDialog(Activity deviceActivity);
|
||||
public AlertDialog getErrorDialog(Activity deviceActivity) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a button that will be displayed in the user interface
|
||||
@@ -122,7 +164,18 @@ public abstract class Plugin {
|
||||
* plugin would wants to expose to the user. Return null if no
|
||||
* button should be displayed.
|
||||
*/
|
||||
public abstract Button getInterfaceButton(Activity activity);
|
||||
|
||||
@Deprecated
|
||||
public Button getInterfaceButton(final Activity activity) {
|
||||
if (!hasMainActivity()) return null;
|
||||
Button b = new Button(activity);
|
||||
b.setText(getActionName());
|
||||
b.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
startMainActivity(activity);
|
||||
}
|
||||
});
|
||||
return b;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -20,7 +20,6 @@
|
||||
|
||||
package org.kde.kdeconnect.Plugins;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.Log;
|
||||
@@ -44,9 +43,8 @@ public class PluginFactory {
|
||||
|
||||
public static class PluginInfo {
|
||||
|
||||
public PluginInfo(String pluginName, String displayName, String description, Drawable icon,
|
||||
public PluginInfo(String displayName, String description, Drawable icon,
|
||||
boolean enabledByDefault, boolean hasSettings) {
|
||||
this.pluginName = pluginName;
|
||||
this.displayName = displayName;
|
||||
this.description = description;
|
||||
this.icon = icon;
|
||||
@@ -54,10 +52,6 @@ public class PluginFactory {
|
||||
this.hasSettings = hasSettings;
|
||||
}
|
||||
|
||||
public String getPluginName() {
|
||||
return pluginName;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
@@ -76,7 +70,6 @@ public class PluginFactory {
|
||||
return enabledByDefault;
|
||||
}
|
||||
|
||||
private final String pluginName;
|
||||
private final String displayName;
|
||||
private final String description;
|
||||
private final Drawable icon;
|
||||
@@ -101,15 +94,15 @@ public class PluginFactory {
|
||||
PluginFactory.registerPlugin(SharePlugin.class);
|
||||
}
|
||||
|
||||
public static PluginInfo getPluginInfo(Context context, String pluginName) {
|
||||
PluginInfo info = availablePluginsInfo.get(pluginName); //Is it cached?
|
||||
public static PluginInfo getPluginInfo(Context context, String pluginKey) {
|
||||
PluginInfo info = availablePluginsInfo.get(pluginKey); //Is it cached?
|
||||
if (info != null) return info;
|
||||
try {
|
||||
Plugin p = ((Plugin)availablePlugins.get(pluginName).newInstance());
|
||||
Plugin p = ((Plugin)availablePlugins.get(pluginKey).newInstance());
|
||||
p.setContext(context, null);
|
||||
info = new PluginInfo(pluginName, p.getDisplayName(), p.getDescription(), p.getIcon(),
|
||||
info = new PluginInfo(p.getDisplayName(), p.getDescription(), p.getIcon(),
|
||||
p.isEnabledByDefault(), p.hasSettings());
|
||||
availablePluginsInfo.put(pluginName, info); //Cache it
|
||||
availablePluginsInfo.put(pluginKey, info); //Cache it
|
||||
return info;
|
||||
} catch(Exception e) {
|
||||
Log.e("PluginFactory","getPluginInfo exception");
|
||||
@@ -122,10 +115,10 @@ public class PluginFactory {
|
||||
return availablePlugins.keySet();
|
||||
}
|
||||
|
||||
public static Plugin instantiatePluginForDevice(Context context, String pluginName, Device device) {
|
||||
Class c = availablePlugins.get(pluginName);
|
||||
public static Plugin instantiatePluginForDevice(Context context, String pluginKey, Device device) {
|
||||
Class c = availablePlugins.get(pluginKey);
|
||||
if (c == null) {
|
||||
Log.e("PluginFactory", "Plugin not found: "+pluginName);
|
||||
Log.e("PluginFactory", "Plugin not found: "+pluginKey);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -134,7 +127,7 @@ public class PluginFactory {
|
||||
plugin.setContext(context, device);
|
||||
return plugin;
|
||||
} catch(Exception e) {
|
||||
Log.e("PluginFactory", "Could not instantiate plugin: "+pluginName);
|
||||
Log.e("PluginFactory", "Could not instantiate plugin: "+pluginKey);
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
@@ -143,9 +136,8 @@ public class PluginFactory {
|
||||
|
||||
public static void registerPlugin(Class<? extends Plugin> pluginClass) {
|
||||
try {
|
||||
//I hate this but I need to create an instance because abstract static functions can't be declared
|
||||
String pluginName = (pluginClass.newInstance()).getPluginName();
|
||||
availablePlugins.put(pluginName, pluginClass);
|
||||
String pluginKey = Plugin.getPluginKey(pluginClass);
|
||||
availablePlugins.put(pluginKey, pluginClass);
|
||||
} catch(Exception e) {
|
||||
Log.e("PluginFactory","addPlugin exception");
|
||||
e.printStackTrace();
|
||||
|
@@ -20,11 +20,7 @@
|
||||
|
||||
package org.kde.kdeconnect.Plugins.SftpPlugin;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Environment;
|
||||
import android.widget.Button;
|
||||
|
||||
import org.kde.kdeconnect.Helpers.StorageHelper;
|
||||
import org.kde.kdeconnect.NetworkPackage;
|
||||
@@ -39,9 +35,6 @@ public class SftpPlugin extends Plugin {
|
||||
|
||||
private static final SimpleSftpServer server = new SimpleSftpServer();
|
||||
|
||||
@Override
|
||||
public String getPluginName() {return "plugin_sftp";}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return context.getResources().getString(R.string.pref_plugin_sftp);
|
||||
@@ -52,19 +45,6 @@ public class SftpPlugin extends Plugin {
|
||||
return context.getResources().getString(R.string.pref_plugin_sftp_desc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Drawable getIcon() {
|
||||
return context.getResources().getDrawable(R.drawable.icon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSettings() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabledByDefault() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
server.init(context, device);
|
||||
@@ -147,10 +127,4 @@ public class SftpPlugin extends Plugin {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AlertDialog getErrorDialog(Activity deviceActivity) { return null; }
|
||||
|
||||
@Override
|
||||
public Button getInterfaceButton(Activity activity) { return null; }
|
||||
|
||||
}
|
||||
|
@@ -29,6 +29,7 @@ import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
@@ -224,7 +225,13 @@ public class ShareActivity extends ActionBarActivity {
|
||||
.setAutoCancel(true)
|
||||
.setOngoing(true)
|
||||
.setProgress(100,0,true);
|
||||
notificationManager.notify(notificationId,builder.build());
|
||||
|
||||
try {
|
||||
notificationManager.notify(notificationId,builder.build());
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
|
||||
final Handler progressBarHandler = new Handler(Looper.getMainLooper());
|
||||
|
||||
@@ -288,7 +295,12 @@ public class ShareActivity extends ActionBarActivity {
|
||||
final String filename = np.getString("filename");
|
||||
|
||||
builder.setContentText(res.getString(R.string.outgoing_file_text,filename));
|
||||
notificationManager.notify(notificationId,builder.build());
|
||||
try {
|
||||
notificationManager.notify(notificationId,builder.build());
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
|
||||
device.sendPackage(np, new Device.SendPackageStatusCallback() {
|
||||
|
||||
@@ -302,7 +314,12 @@ public class ShareActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void run() {
|
||||
builder.setProgress(100, progress, false);
|
||||
notificationManager.notify(notificationId, builder.build());
|
||||
try {
|
||||
notificationManager.notify(notificationId,builder.build());
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -314,7 +331,7 @@ public class ShareActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void run() {
|
||||
Resources res = getApplicationContext().getResources();
|
||||
NotificationCompat.Builder builder1 = new NotificationCompat.Builder(getApplicationContext())
|
||||
NotificationCompat.Builder anotherBuilder = new NotificationCompat.Builder(getApplicationContext())
|
||||
.setContentTitle(res.getString(R.string.sent_file_title, device.getName()))
|
||||
.setContentText(res.getString(R.string.sent_file_text, filename))
|
||||
.setTicker(res.getString(R.string.sent_file_title, device.getName()))
|
||||
@@ -324,9 +341,14 @@ public class ShareActivity extends ActionBarActivity {
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
|
||||
if (prefs.getBoolean("share_notification_preference", true)) {
|
||||
builder1.setDefaults(Notification.DEFAULT_ALL);
|
||||
anotherBuilder.setDefaults(Notification.DEFAULT_ALL);
|
||||
}
|
||||
try {
|
||||
notificationManager.notify(notificationId,anotherBuilder.build());
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
notificationManager.notify(notificationId, builder1.build());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -340,7 +362,7 @@ public class ShareActivity extends ActionBarActivity {
|
||||
@Override
|
||||
public void run() {
|
||||
Resources res = getApplicationContext().getResources();
|
||||
NotificationCompat.Builder builder2 = new NotificationCompat.Builder(getApplicationContext())
|
||||
NotificationCompat.Builder anotherBuilder = new NotificationCompat.Builder(getApplicationContext())
|
||||
.setContentTitle(res.getString(R.string.sent_file_failed_title, device.getName()))
|
||||
.setContentText(res.getString(R.string.sent_file_failed_text, filename))
|
||||
.setTicker(res.getString(R.string.sent_file_title, device.getName()))
|
||||
@@ -350,9 +372,14 @@ public class ShareActivity extends ActionBarActivity {
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
|
||||
if (prefs.getBoolean("share_notification_preference", true)) {
|
||||
builder2.setDefaults(Notification.DEFAULT_ALL);
|
||||
anotherBuilder.setDefaults(Notification.DEFAULT_ALL);
|
||||
}
|
||||
try {
|
||||
notificationManager.notify(notificationId,anotherBuilder.build());
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
notificationManager.notify(notificationId, builder2.build());
|
||||
}
|
||||
});
|
||||
|
||||
|
@@ -21,7 +21,6 @@
|
||||
package org.kde.kdeconnect.Plugins.SharePlugin;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
@@ -37,7 +36,6 @@ import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.support.v4.app.TaskStackBuilder;
|
||||
import android.util.Log;
|
||||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.kde.kdeconnect.Helpers.FilesHelper;
|
||||
@@ -50,49 +48,28 @@ import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
|
||||
public class SharePlugin extends Plugin {
|
||||
|
||||
@Override
|
||||
public String getPluginName() {
|
||||
return "plugin_share";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return context.getResources().getString(R.string.pref_plugin_sharereceiver);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Drawable getIcon() {
|
||||
return context.getResources().getDrawable(R.drawable.share_plugin_action);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return context.getResources().getString(R.string.pref_plugin_sharereceiver_desc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Drawable getIcon() {
|
||||
return context.getResources().getDrawable(R.drawable.icon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSettings() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabledByDefault() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPackageReceived(NetworkPackage np) {
|
||||
|
||||
@@ -136,7 +113,12 @@ public class SharePlugin extends Plugin {
|
||||
.setOngoing(true)
|
||||
.setProgress(100,0,true);
|
||||
|
||||
notificationManager.notify(notificationId,builder.build());
|
||||
try {
|
||||
notificationManager.notify(notificationId,builder.build());
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
@@ -157,7 +139,12 @@ public class SharePlugin extends Plugin {
|
||||
if (progressPercentage != prevProgressPercentage) {
|
||||
prevProgressPercentage = progressPercentage;
|
||||
builder.setProgress(100, (int) progressPercentage, false);
|
||||
notificationManager.notify(notificationId, builder.build());
|
||||
try {
|
||||
notificationManager.notify(notificationId,builder.build());
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
}
|
||||
}
|
||||
//else Log.e("SharePlugin", "Infinite loop? :D");
|
||||
@@ -212,8 +199,12 @@ public class SharePlugin extends Plugin {
|
||||
builder.setDefaults(Notification.DEFAULT_ALL);
|
||||
}
|
||||
|
||||
Notification notification = builder.build();
|
||||
notificationManager.notify(notificationId, notification);
|
||||
try {
|
||||
notificationManager.notify(notificationId,builder.build());
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
Log.e("SharePlugin", "Receiver thread exception");
|
||||
@@ -265,7 +256,12 @@ public class SharePlugin extends Plugin {
|
||||
.build();
|
||||
|
||||
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
notificationManager.notify((int)System.currentTimeMillis(), noti);
|
||||
try {
|
||||
notificationManager.notify((int)System.currentTimeMillis(), noti);
|
||||
} catch(Exception e) {
|
||||
//4.1 will throw an exception about not having the VIBRATE permission, ignore it.
|
||||
//https://android.googlesource.com/platform/frameworks/base/+/android-4.2.1_r1.2%5E%5E!/
|
||||
}
|
||||
|
||||
} else {
|
||||
Log.e("SharePlugin", "Error: Nothing attached!");
|
||||
@@ -280,12 +276,4 @@ public class SharePlugin extends Plugin {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AlertDialog getErrorDialog(Activity deviceActivity) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Button getInterfaceButton(Activity activity) { return null; }
|
||||
|
||||
}
|
||||
|