From 1574778a0e193804d701557ad53e0aa354ebc54c Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 13 Sep 2016 10:51:23 +0200 Subject: [PATCH 1/9] Added notification when missed call(s) --- res/values/strings.xml | 2 ++ src/org/linphone/LinphoneActivity.java | 3 ++ src/org/linphone/LinphoneService.java | 32 +++++++++++++++---- .../linphone/compatibility/ApiElevenPlus.java | 14 ++++++++ .../compatibility/ApiSixteenPlus.java | 14 ++++++++ .../compatibility/ApiTwentyOnePlus.java | 16 ++++++++++ .../linphone/compatibility/Compatibility.java | 11 +++++++ 7 files changed, 86 insertions(+), 6 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 7807e83fb..1fbb3d425 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -170,6 +170,8 @@ Video capturing call ongoing started %i unread messages + Missed call + %i missed calls Warning: service is not ready diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index 1d0cbe75a..5a93cc348 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -1386,6 +1386,9 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta String sipUri = extras.getString("ChatContactSipUri"); doNotGoToCallActivity = true; displayChat(sipUri); + } else if (extras != null && extras.getBoolean("GoToHistory", false)) { + doNotGoToCallActivity = true; + changeCurrentFragment(FragmentsAvailable.HISTORY_LIST, null); } else if (extras != null && extras.getBoolean("Notification", false)) { if (LinphoneManager.getLc().getCallsNb() > 0) { LinphoneCall call = LinphoneManager.getLc().getCalls()[0]; diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index 674bf5521..844cc9b9b 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -89,6 +89,7 @@ public final class LinphoneService extends Service { private final static int INCALL_NOTIF_ID=2; private final static int MESSAGE_NOTIF_ID=3; private final static int CUSTOM_NOTIF_ID=4; + private final static int MISSED_NOTIF_ID=5; public static boolean isReady() { return instance != null && instance.mTestDelayElapsed; @@ -114,7 +115,7 @@ public final class LinphoneService extends Service { private Notification mMsgNotif; private Notification mCustomNotif; private int mMsgNotifCount; - private PendingIntent mNotifContentIntent; + private PendingIntent mNotifContentIntent, mMissedCallsNotifContentIntent; private String mNotificationTitle; private boolean mDisableRegistrationStatus; private LinphoneCoreListenerBase mListener; @@ -181,6 +182,10 @@ public final class LinphoneService extends Service { Intent notifIntent = new Intent(this, incomingReceivedActivity); notifIntent.putExtra("Notification", true); mNotifContentIntent = PendingIntent.getActivity(this, 0, notifIntent, PendingIntent.FLAG_UPDATE_CURRENT); + + Intent missedCallNotifIntent = new Intent(this, incomingReceivedActivity); + missedCallNotifIntent.putExtra("GoToHistory", true); + mMissedCallsNotifContentIntent = PendingIntent.getActivity(this, 0, missedCallNotifIntent, PendingIntent.FLAG_UPDATE_CURRENT); Bitmap bm = null; try { @@ -215,11 +220,26 @@ public final class LinphoneService extends Service { destroyOverlay(); } - // Enable the following to have missed call notifications - /*if (state == State.CallEnd && call.getCallLog().getStatus() == CallStatus.Missed) { - Notification notif = Compatibility.createSimpleNotification(instance, "Missed call", LinphoneManager.getLc().getMissedCallsCount() + " missed call", mNotifContentIntent); - notifyWrapper(CUSTOM_NOTIF_ID, notif); - }*/ + if (state == State.CallEnd && call.getCallLog().getStatus() == CallStatus.Missed) { + int missedCallCount = LinphoneManager.getLcIfManagerNotDestroyedOrNull().getMissedCallsCount(); + String body; + if (missedCallCount > 1) { + body = getString(R.string.missed_calls_notif_body).replace("%i", String.valueOf(missedCallCount)); + } else { + LinphoneAddress address = call.getRemoteAddress(); + LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(address); + if (c != null) { + body = c.getFullName(); + } else { + body = address.getDisplayName(); + if (body == null) { + body = address.asStringUriOnly(); + } + } + } + Notification notif = Compatibility.createMissedCallNotification(instance, getString(R.string.missed_calls_notif_title), body, mMissedCallsNotifContentIntent); + notifyWrapper(MISSED_NOTIF_ID, notif); + } if (state == State.StreamsRunning) { // Workaround bug current call seems to be updated after state changed to streams running diff --git a/src/org/linphone/compatibility/ApiElevenPlus.java b/src/org/linphone/compatibility/ApiElevenPlus.java index 6fa46d519..9dda22251 100644 --- a/src/org/linphone/compatibility/ApiElevenPlus.java +++ b/src/org/linphone/compatibility/ApiElevenPlus.java @@ -151,6 +151,20 @@ public class ApiElevenPlus { return intent; } + @SuppressWarnings("deprecation") + public static Notification createMissedCallNotification(Context context, String title, String text, PendingIntent intent) { + Notification notif = new Notification.Builder(context) + .setContentTitle(title) + .setContentText(text) + .setContentIntent(intent) + .setSmallIcon(R.drawable.call_status_missed) + .setAutoCancel(true) + .setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE) + .setWhen(System.currentTimeMillis()).getNotification(); + + return notif; + } + @SuppressWarnings("deprecation") public static Notification createSimpleNotification(Context context, String title, String text, PendingIntent intent) { Notification notif = new Notification.Builder(context) diff --git a/src/org/linphone/compatibility/ApiSixteenPlus.java b/src/org/linphone/compatibility/ApiSixteenPlus.java index f7fff7d2f..1bee2257e 100644 --- a/src/org/linphone/compatibility/ApiSixteenPlus.java +++ b/src/org/linphone/compatibility/ApiSixteenPlus.java @@ -112,6 +112,20 @@ public class ApiSixteenPlus { viewTreeObserver.removeOnGlobalLayoutListener(keyboardListener); } + public static Notification createMissedCallNotification(Context context, String title, String text, PendingIntent intent) { + Notification notif = new Notification.Builder(context) + .setContentTitle(title) + .setContentText(text) + .setSmallIcon(R.drawable.call_status_missed) + .setAutoCancel(true) + .setContentIntent(intent) + .setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE) + .setWhen(System.currentTimeMillis()) + .build(); + + return notif; + } + public static Notification createSimpleNotification(Context context, String title, String text, PendingIntent intent) { Notification notif = new Notification.Builder(context) .setContentTitle(title) diff --git a/src/org/linphone/compatibility/ApiTwentyOnePlus.java b/src/org/linphone/compatibility/ApiTwentyOnePlus.java index 66d0a37b6..ff6431a5b 100644 --- a/src/org/linphone/compatibility/ApiTwentyOnePlus.java +++ b/src/org/linphone/compatibility/ApiTwentyOnePlus.java @@ -112,6 +112,22 @@ public class ApiTwentyOnePlus { viewTreeObserver.removeOnGlobalLayoutListener(keyboardListener); } + public static Notification createMissedCallNotification(Context context, String title, String text, PendingIntent intent) { + Notification notif = new Notification.Builder(context) + .setContentTitle(title) + .setContentText(text) + .setSmallIcon(R.drawable.call_status_missed) + .setAutoCancel(true) + .setContentIntent(intent) + .setDefaults(Notification.DEFAULT_ALL) + .setCategory(Notification.CATEGORY_MESSAGE) + .setVisibility(Notification.VISIBILITY_PRIVATE) + .setPriority(Notification.PRIORITY_HIGH) + .build(); + + return notif; + } + public static Notification createSimpleNotification(Context context, String title, String text, PendingIntent intent) { Notification notif = new Notification.Builder(context) .setContentTitle(title) diff --git a/src/org/linphone/compatibility/Compatibility.java b/src/org/linphone/compatibility/Compatibility.java index 2cb9336c0..574cf485b 100644 --- a/src/org/linphone/compatibility/Compatibility.java +++ b/src/org/linphone/compatibility/Compatibility.java @@ -46,6 +46,17 @@ public class Compatibility { } return notif; } + public static Notification createMissedCallNotification(Context context, String title, String text, PendingIntent intent) { + Notification notif = null; + if (Version.sdkAboveOrEqual(Version.API21_LOLLIPOP_50)) { + return ApiTwentyOnePlus.createMissedCallNotification(context, title, text, intent); + } else if (Version.sdkAboveOrEqual(Version.API16_JELLY_BEAN_41)) { + notif = ApiSixteenPlus.createMissedCallNotification(context, title, text, intent); + } else { + notif = ApiElevenPlus.createMissedCallNotification(context, title, text, intent); + } + return notif; + } public static Notification createMessageNotification(Context context, int msgCount, String msgSender, String msg, Bitmap contactIcon, PendingIntent intent) { Notification notif = null; From 49139ba2aa10c3cc39a2c3c8f62b3a1d681d8dda Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 13 Sep 2016 10:57:49 +0200 Subject: [PATCH 2/9] Updated translations from transifex --- res/values-ar/strings.xml | 1 - res/values-de/strings.xml | 10 +- res/values-es/strings.xml | 1 - res/values-fi/strings.xml | 1 - res/values-fr/strings.xml | 14 +- res/values-he/strings.xml | 1 - res/values-ja/strings.xml | 1 - res/values-nl/strings.xml | 1 - res/values-pl/strings.xml | 364 ++++++++++++++++++++++++++++++++++ res/values-pt-rBR/strings.xml | 1 - res/values-ru/strings.xml | 1 - res/values-sr/strings.xml | 1 - res/values-sv/strings.xml | 1 - res/values-tr/strings.xml | 1 - res/values-zh-rTW/strings.xml | 29 ++- res/values/strings.xml | 2 +- 16 files changed, 408 insertions(+), 22 deletions(-) create mode 100644 res/values-pl/strings.xml diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 6d9035ed2..988b7fa32 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -247,7 +247,6 @@ الشبكة استخدم WiFi فقط - خادم STUN تشغيل ICE تشغيل UPnP استخدم منافذ عشوائية diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index bb698323b..1de2040ab 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -73,6 +73,9 @@ Ihr Konto wurde noch nicht überprüft. Ihr Konto wurde überprüft. Falscher Benutzername oder Passwort + Sind Sie mit dem Herunterladen des OpenH264-Videocodecs, bereitgestellt von Cisco Systems, Inc., einverstanden? + OpenH264-Videocodec, bereitgestellt von Cisco Systems, Inc., wird heruntergeladen. + OpenH264-Videocodec, bereitgestellt von Cisco Systems, Inc., heruntergeladen. Es ist ein Fehler aufgetreten, versuchen Sie es später nochmal Server nicht erreichbar, überprüfen Sie Ihre Netzwerkverbindung. Der Benutzername wird bereits verwendet. @@ -100,6 +103,7 @@ Telefonnummer Vorname Nachname + Organisation Keine Gespräche Möchten Sie das ausgewählte Gespräch löschen? @@ -246,6 +250,8 @@ Codecs Anruf + Geräteklingelton verwenden + Eingehende Anrufe automatisch beantworten RFC2833 DTMFs senden SIP INFO DTMFs senden Sprachnachricht-URI @@ -260,8 +266,8 @@ Netzwerk Nur WiFi verwenden - Stun-Server ICE aktivieren + TURN aktivieren UPNP aktivieren Zufällige Ports verwenden Zu benutzender SIP-Port @@ -281,6 +287,7 @@ Beim Einschalten starten Auflegen bei eingehendem Anruf (in Sekunden) Fernbereitstellung + Android-App-Einstellungen Primäres Konto Anzeigename Benutzername @@ -347,6 +354,7 @@ Auswahl löschen Vorname Nachname + Organisation Zurück zum Anruf Datei senden Nachricht diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index f0b79081c..a0da56384 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -150,7 +150,6 @@ Chat Red - Servidor STUN Activar ICE Usar puertos aleatorios Puerto SIP a usar diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index cef47c494..69c54a224 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -244,7 +244,6 @@ Verkko Käytä vain wifiä - Stun-palvelin eli \'osoitteenmuunoksen takaisin haku\'-palvelin Salli ICE Salli UPNP Käytä satunnaista porttia diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 4dc80e8ca..5aa8c3d23 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -74,6 +74,9 @@ Lorsque cela est fait, cliquez sur le bouton pour continuer. Votre compte n\'a pas encore été validé. Votre compte à été validé. Nom d\'utilisateur ou mot de passe invalide + Voulez-vous télécharger le codec vidéo OpenH264 fourni par Cisco Systems, Inc. ? + Téléchargement du codec vidéo OpenH264 fourni par Cisco Systems, Inc. + Téléchargement du codec vidéo OpenH264 fourni par Cisco Systems, Inc effectué. Une erreur est survenue, réessayez plus tard. Serveur indisponible, veuillez vérifier votre connexion réseau. Ce nom d\'utilisateur est déjà pris. @@ -101,6 +104,7 @@ Lorsque cela est fait, cliquez sur le bouton pour continuer. Numéro de téléphone Prénom Nom + Société Aucune conversation Voulez-vous supprimer la discussion sélectionnée ? @@ -154,6 +158,8 @@ Lorsque cela est fait, cliquez sur le bouton pour continuer. Appel vidéo en cours démarré %i messages non lus + Appel manqué + %i appels manqués Attention : le service n\'est pas prêt Erreur @@ -225,6 +231,7 @@ Lorsque cela est fait, cliquez sur le bouton pour continuer. Annulateur d\'écho Supprime l\'écho entendu de l\'autre côté Calibration de l\'annulateur d\'écho + Tester l\'écho Calibration… Calibré en %s ms Pas d\'écho @@ -264,8 +271,11 @@ Lorsque cela est fait, cliquez sur le bouton pour continuer. Réseau Utiliser WiFi uniquement - Serveur Stun + Serveur STUN / TURN Activer ICE + Activer TURN + Identifiant STUN / TURN (optionnel) + Mot de passe STUN / TURN (optionnel) Activer UPNP Utiliser des ports aléatoires Port SIP à utiliser si port aléatoire désactivé @@ -285,6 +295,7 @@ Lorsque cela est fait, cliquez sur le bouton pour continuer. Démarrer au lancement du téléphone Ignorer les appels entrants après (en secondes) Configuration distante + Infos appli Android Compte principal Nom d\'affichage Nom d\'utilisateur @@ -351,6 +362,7 @@ Lorsque cela est fait, cliquez sur le bouton pour continuer. Supprimer la sélection Prénom Nom + Société Retour à l\'appel Envoi d\'un fichier Message diff --git a/res/values-he/strings.xml b/res/values-he/strings.xml index e5cd6517f..7092176ea 100644 --- a/res/values-he/strings.xml +++ b/res/values-he/strings.xml @@ -71,7 +71,6 @@ שיחה רשת - שרת Stun אפשר ICE אפשר UPNP הצפנת מדיה diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 112d9524b..f58665a85 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -243,7 +243,6 @@ ネットワーク WiFiのみ - Stunサーバー ICEを有効にする UPNPを使う ランダムポートを使用する diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index d113654d2..9551dd30f 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -99,7 +99,6 @@ Chat Netwerk - Stun-server ICE inschakelen UPNP inschakelen Willekeurige poorten gebruiken diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml new file mode 100644 index 000000000..1a184aa86 --- /dev/null +++ b/res/values-pl/strings.xml @@ -0,0 +1,364 @@ + + + + Linphone + Linphone Service + Linphone + Linphone + Uruchamianie + %s zarejestrowany + %s nie udało się zarejestrować + + Linphone Android %s + Linphone Core %s + GNU General Public License V2\n © 2010-2016 Belledonne Communications + www.linphone.org + kontakt linphone + EEE, d MMM + yyyy/MM/dd - HH:mm - + dd/MM, HH:mm + dd/MM + HH:mm + + Nazwa użytkownika + Nazwa wyświetlana + Hasło + Potwierdź hasło + Domena + URL + Email + Czy na pewno chcesz skasować dokonany wybór? + Usuń + Spróbuj ponownie + Anuluj + Akceptuj + Kontynuuj + O nas + Zaprzeczać + Konto nie zostało skonfigurowane + Szukaj + Wyjście + Przychodzące + Nieodebrane + Ustawienia + Połączenie + Utracone + Konferencja + + libre klient SIP + + Witam + Asystent + Stwórz konto + Zakończ konfigurację + Konto zostało utworzone. Proszę sprawdzić pocztę, aby zweryfikować konto. Po weryfikacji proszę wrócić tutaj i kliknąć przycisk. + Ten asystent pomoże Ci używać konta połączeń SIP. + Wprowadź swoją nazwę użytkownika i hasło konta Linphone + Wprowadź swoją nazwę użytkownika i hasło w domenie SIP + Proszę podać swoje zastrzeganie URL + Transport + Użyj konta Linphone + Użyj konta SIP + Pobierz zdalną konfigurację + 1/2 + 2/2 + Wyświetl nazwę (opcjonalnie) + Skonfiguruj konto Linphone + Skonfiguruj konto SIP + Pobierz zdalną konfigurację + Pobierz i zastosuj + Login + Anulacja kalibracji echo w trakcie + Podaj login + Twoje konto nie zostało jeszcze zatwierdzone. + Twoje konto zostało zatwierdzone. + Niepoprawna nazwa użytkownika lub hasło + Czy zgadzają się Państwo na pobranie OpenH264 Video Codec dostarczonego przez Cisco Systems, Inc.? + Pobieranie OpenH264 Video Codec dostarczane przez Cisco Systems, Inc. + OpenH264 Video Codec dostarczane przez Cisco Systems, Inc. Zostało pobrane. + Wystąpił błąd, spróbuj ponownie później. + Serwer niedostępny, sprawdź swoje połączenie sieciowe. + Nazwa użytkownika zajęta. + Twoja nazwa użytkownika jest nieprawidłowa. + Twój email jest niepoprawny. + Twoje hasło jest nieprawidłowe + Hasła nie pasują do siebie. + Twoja nazwa użytkownika będzie %s.\r\n\r\nIt może różnić się od danych wejściowych w celu dopasowania wymagań. \ Czy akceptujesz? + Podaj swój login i hasło + Zapomniałeś hasła ? + + Wprowadź numer lub adres + + Brak połączeń w historii + Brak nieodebranego połączenia w historii + Czy chcesz usunąć zaznaczony rejestr połączeń? + Dzisiaj + Wczoraj + + Brak kontaktu w książce adresowej. + Brak kontaktu SIP w książce adresowej. + Czy chcesz usunąć wybrane kontakty? + Czy chcesz usunąć wybrany kontakt? + Adres SIP + Numer telefonu + Imię + Nazwisko + Organizacja + + Brak rozmów + Czy chcesz usunąć wybraną rozmowę? + Czy chcesz usunąć zaznaczoną wiadomość? + Zdalne pisanie ... + Mały + Średni + Duży + Rzeczywisty rozmiar + Tekst skopiowany do schowka + Kopiowanie tekstu + Wybierz źródło + Obraz zapisany + Błąd, obraz nie został zapisany + Proszę czekać... + Przetwarzania obrazu, może potrwać nawet do kilku sekund w zależności od rozmiaru pliku + + Zarejestrowany + Nie zarejestrowany + Rejestracja w trakcie + Rejestracja nie powiodła się + Nieprzeczytane wiadomości + + Asystent + Ustawienia + O nas + Zamknij + + Połączenie przychodzące + Połączenia wychodzące + Twój rozmówca chciałby włączyć wideo + Brak aktywnego połączenia + Twój rozmówca przerwał połączenie + Wystąpił błąd podczas odebrania + Znak ZRTP %s\n należy zaakceptować tylko jeśli mają ten sam znak, jak rozmówcy + Nieznany + Audio + Wideo + Codec: + Prześlij przepustowość: + Pobierz przepustowość: + Łączność ICE: + Rozmiar filmu: + Połączenie + + Wyślij rejestr + Resetuj rejestr + + Rozmowa audio w toku + Pauza rozmowy w toku + Przechwytywanie wideo rozmowy w toku + Rozpoczęty + %i nieprzeczytane wiadomości + + Ostrzeżenie: usługa nie jest gotowa + Błąd + Nie można zbudować adresu docelowego z %s + Nieznany błąd + Spadek połaczeń + Użytkownik nie znaleziony + Parametry nośników niekompatybilne + Twój rozmówca ma niską przepustowość, nie można uruchomić wideo + Sieć jest niedostępna + Złe poświadczenia + Nieautoryzowany + Błąd sieci + Pobieranie nie udane. Proszę sprawdzić swoje połączenie sieciowe lub spróbuj ponownie później. + Nie udało się pobrać lub zastosować profil zdalnego zastrzegania ... + Zdalne zastrzeganie + Chcesz zmienić zastrzeganie URI? + + Konto SIP + Zarządzanie + Wyłączyć + Proxy + Domena* + Hasło* + Nazwa użytkownika* + Outbound proxy + Nazwa hosta proxy SIP lub adres IP (opcja) + Droga wszystkich połączeń przez proxy SIP + Przykład: Jeśli konto jest john@sip.example.org + sip.example.org jeśli konto jest john@sip.example.org + Musisz ponownie wprowadzić hasło, jeśli edytowałeś swój login i / lub domenę + Expire + AVPF + AVPF regularny odstęp RTCP w sekundach (pomiędzy 1 i 5) + Wymień + przez 00 + Przyjazne subskrybowanie + Autoryzuj ID użytkownika + Wprowadź ID użytkownika uwierzytelniania (opcjonalnie) + Nazwa wyświetlana + +Wpisz wyświetlaną nazwę (opcjonalnie) + Prefix + Transport + UDP + TCP + TLS + Usuń to konto + Użyj jako domyślny + + Konta SIP + Domyślne konto + Dodaj konto + W aplikacji Store + Tunel + Nazwa hosta + Port + Tryb + + Żaden + Preferencje + Włącz wideo + + Audio + Redukcja szumów + Usuwa usłyszane echo od drugiego końca + Anulowanie kalibracji echo + Kalibracja ... + Kalibrowane w %s ms + Brak echa + Nie powiodło się + Adaptacyjne sterowanie prędkością + Limit szybkości transmisji kodeka + Kodeki + + Wideo + Nakładka wideo + Wywołanie wyświetlania wideo w nakładce, gdy poza aplikacją + Użyj przednią kamerę + Inicjowanie połączeń wideo + Zawsze wysyłaj żądania wideo + Akceptuj nadchodzące żądania wideo + Zawsze akceptuj żądania wideo + Ustawienie wideo + Preferowany rozmiar wideo + Preferowany FPS + Limit przepustowości w kbits/s + Kodeki + + Połączenie + Zastosowanie urządzenia dzwonka + Auto odbieranie przychodzących połączeń + Wyślij RFC2833 DTMFs + Wyślij SIP INFO DTMFs + Poczta głosowa URI + + Czat + Udostępnianie serwera + Nie edytuj, chyba że wiesz co robisz! + Używaj szyfrowania LIME + Nieaktywny + Obowiązkowy + Preferowany + + Sieć + Używaj tylko WiFi + Włącz ICE + Włącz TURN + Włącz UPNP + Użyj losowych portów + Port SIP w użyciu + Port wideo lub zakres portów + Port audio lub zakres portów + Port wideo lub zakres portów (minport-maxport) + Port audio lub zakres portów (minport-maxport) + Szyfrowanie mediów + Włącz powiadomienia push + Zezwól IPv6 + + Zaawansowany + Debug + Tryb tła + Włącz animacje + Włącz powiadomienie usług + Uruchom przy starcie systemu + Rozłączanie połączeń przychodzących (w sekundach) + Zdalne zastrzeganie + Ustawienia aplikacji Android + Pierwotne konto + Nazwa wyświetlana + Nazwa użytkownika + + Hacki audio + Użyj szczególnego trybu Hack + 0=MODE_NORMAL (domyślnie), 2=MODE_IN_CALL + Użyj routing API Hack + Użyj Galaxy S audio hack + + Powrót + Komunikator + Menu + Toggle micro + Toggle speaker + Utrata + Odłożyć słuchawkę + Akceptuj + Edytować + Edycja listy + Ważny + Dodaj do kontaktów + Nowy kontakt + Połączenie + Backspace + Czat + Wybieranie z powrotem + Powrót do rozmówcy + Zdjęcie kontaktu + Wyślij wiadomość + Szczegóły + Usuń + Dodaj połączenie + Nowa dyskusja + Szukaj + Wyszukiwanie kontaktu + Wszystkie kontakty + Kontakty Linphone + Kierunek połączeń + Wszystkie połączenia + Nieodebrane połączenie + Przełącznik wideo + Dodaj połączenie + Pauza + Numpad + History button + Chat button + Przycisk kontaktów + Jakość rozmów + Szyfrowanie + Przełącz kamerę + Przycisk anuluj + Stan wiadomości + Konferencja + Nazwa pola + Wyświetlana nazwa pola + Pole domeny + Pole zdalnego zastrzegania + Potwierdź pole hasła + Pole email + Domyślne konto + Odznacz wszystko + Zaznacz wszystko + Usuń wybrane + Pierwsze imię + Nazwisko + Organizacja + Wróć aby połączyć + Wyślij plik + Wiadomość + Nieprzeczytane wiadomości czatu + Transfer + Słuchawki + Bluetooth + Opcje połączeń + Przesyłanie audio + Wyjście konferencji + diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 6445c8332..42295bebe 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -166,7 +166,6 @@ Servidor de compartilhamento Network - Servidor Stun Habilitar ICE Habilitar UPNP Use portas aleatórias diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 96a0910d8..53fe03310 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -240,7 +240,6 @@ Сеть Использовать только WiFi - Сервер Stun Включить ICE Включить UPNP Использовать случайный порт diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 6da76c63d..f8115080d 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -174,7 +174,6 @@ Сервер дељења Мрежа - Стун сервер Укључи ИЦЕ Укључи УПНП Користи насумичне прикључнике diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 340d48e6e..393af657d 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -138,7 +138,6 @@ Delar server Nätverk - Stun-server Aktivera ICE Aktivera UPNP Använd slumpade portar diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index d709cec2c..7fb62494e 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -243,7 +243,6 @@ Sadece WİFİ kullan - Stun sunucusu İCE Etkin UPNP Etkin Rastgele bağlanma noktası kullan diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 8f70ad4a9..b6a58fedb 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -9,6 +9,10 @@ %s 已註冊 %s 無法註冊 + Linphone Android %s + GNU General Public License V2\n © 2010-2016 Belledonne Communications + www.linphone.org + Linphone 聯絡人 使用者名稱 顯示名稱 @@ -53,6 +57,7 @@ 設定 SIP 帳號 登入 正在進行回音消除器校正 + 輸入你的使用者名稱和密碼 你的帳號還沒被驗證。 你的帳號已經被驗證。 不正確的使用者名稱或密碼 @@ -63,11 +68,14 @@ 你的電子郵件無效。 你的密碼無效。 密碼不相符 + 你的使用者名稱將會是 %s。\r\n\r\n它可能與你輸入的不同來符合需求。\r\n你接受嗎? + 請輸入你的使用者名稱和密碼 + 忘記密碼? 輸入號碼或位址 - 歷史中沒有通話 - 歷史中沒有未接來電 + 記錄中沒有通話 + 記錄中沒有未接來電 你想要刪除選取的通話紀錄嗎? 今天 昨天 @@ -115,7 +123,7 @@ 未知 音訊 視訊 - 編碼: + 編解碼器: 上傳頻寬: 下載頻寬: 視訊大小: @@ -131,6 +139,7 @@ 錯誤 未知錯誤 找不到使用者 + 不相容的媒體參數 對方的頻寬過低,視訊無法啟動 無法連接網路 網路錯誤 @@ -178,8 +187,8 @@ 校正中... 沒有回音 失敗 - 編碼位元率限制 - 編碼 + 編解碼器位元率限制 + 編解碼器 視訊 使用前攝影機 @@ -190,16 +199,20 @@ 視訊預設 偏好的視訊大小 偏好的 FPS - 編碼 + 編解碼器 通話 + 使用裝置鈴聲 聊天 + 不要編輯除非你知道你在做什麼! + 停用 + 強制 網路 只使用 WiFi - Stun 伺服器 啟用 ICE + 啟用 TURN 啟用 UPNP 使用隨機連接埠 要使用的連接埠 @@ -251,7 +264,7 @@ 切換視訊 暫停 數字鍵盤 - 歷史按鈕 + 記錄按鈕 聊天按鈕 聯絡人按鈕 通話品質 diff --git a/res/values/strings.xml b/res/values/strings.xml index 1fbb3d425..8edc2148d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -292,7 +292,7 @@ Network Use WiFi only - STUN server + STUN / TURN server Enable ICE Enable TURN STUN / TURN username (optional) From 219340822235cef667c88509b9b5a1e4d53d3d0e Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 13 Sep 2016 13:40:29 +0200 Subject: [PATCH 3/9] Update linphone submodule. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 510e9d92d..c87b9a5a3 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 510e9d92d051c0bedc2803669f6aa81bda7c3cb9 +Subproject commit c87b9a5a3b706b74f1513f65fd56e7085850aefb From 36e361dc8db7ca8d47f3456aa21adce368336947 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Mon, 12 Sep 2016 17:37:07 +0200 Subject: [PATCH 4/9] Fix video enabled in tests --- tests/src/org/linphone/test/CallsAudio.java | 1 + tests/src/org/linphone/test/CallsVideo.java | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/src/org/linphone/test/CallsAudio.java b/tests/src/org/linphone/test/CallsAudio.java index 4d2238c60..e65c2f468 100644 --- a/tests/src/org/linphone/test/CallsAudio.java +++ b/tests/src/org/linphone/test/CallsAudio.java @@ -31,6 +31,7 @@ public class CallsAudio extends SampleTest { goToSettings(); selectItemInListOnUIThread(3); + solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_title)); solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_enable_title)); solo.sleep(500); diff --git a/tests/src/org/linphone/test/CallsVideo.java b/tests/src/org/linphone/test/CallsVideo.java index f4f258242..177c3974c 100644 --- a/tests/src/org/linphone/test/CallsVideo.java +++ b/tests/src/org/linphone/test/CallsVideo.java @@ -31,13 +31,10 @@ public class CallsVideo extends SampleTest { //Enable video goToSettings(); - selectItemInListOnUIThread(3); - solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_enable_title)); - solo.sleep(500); - // enable auto accept and auto share video goToVideoCodecsSettings(); solo.sleep(500); + solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_enable_title)); solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_initiate_call_with_video_title)); solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_automatically_accept_video_title)); solo.sleep(500); @@ -61,6 +58,7 @@ public class CallsVideo extends SampleTest { solo.clickOnView(solo.getView(org.linphone.R.id.call)); assertOutgoingCallIsCorrectlyRunning(); + assertCallIsCorrectlyRunning(); assertCallIsRunningWithVideo(); solo.clickOnView(solo.getView(org.linphone.R.id.video_frame)); From 83c32db784032bb55fb09794eef4a52f37c6b638 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Tue, 13 Sep 2016 14:19:19 +0200 Subject: [PATCH 5/9] Fix call transfer --- src/org/linphone/DialerFragment.java | 6 ++++-- src/org/linphone/LinphoneActivity.java | 13 ++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/org/linphone/DialerFragment.java b/src/org/linphone/DialerFragment.java index 32c54c3ed..6a760dd3f 100644 --- a/src/org/linphone/DialerFragment.java +++ b/src/org/linphone/DialerFragment.java @@ -122,13 +122,15 @@ public class DialerFragment extends Fragment { } } + instance = this; + return view; } /** * @return null if not ready yet */ - public static DialerFragment instance() { + public static DialerFragment instance() { return instance; } @@ -166,7 +168,7 @@ public class DialerFragment extends Fragment { } public void resetLayout(boolean callTransfer) { - isCallTransferOngoing = callTransfer; + isCallTransferOngoing = LinphoneActivity.instance().isCallTransfer(); LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); if (lc == null) { return; diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index 5a93cc348..0dea57932 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -133,6 +133,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta private ImageView menu; private boolean fetchedContactsOnce = false; private boolean doNotGoToCallActivity = false; + private boolean callTransfer = false; static final boolean isInstanciated() { return instance != null; @@ -998,7 +999,11 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta } } - private void initInCallMenuLayout(boolean callTransfer) { + public Boolean isCallTransfer(){ + return callTransfer; + } + + private void initInCallMenuLayout(final boolean callTransfer) { selectMenu(FragmentsAvailable.DIALER); DialerFragment dialerFragment = DialerFragment.instance(); if (dialerFragment != null) { @@ -1009,7 +1014,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta public void resetClassicMenuLayoutAndGoBackToCallIfStillRunning() { DialerFragment dialerFragment = DialerFragment.instance(); if (dialerFragment != null) { - ((DialerFragment) dialerFragment).resetLayout(false); + ((DialerFragment) dialerFragment).resetLayout(true); } if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() > 0) { @@ -1073,7 +1078,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta } } else if (resultCode == Activity.RESULT_FIRST_USER && requestCode == CALL_ACTIVITY) { getIntent().putExtra("PreviousActivity", CALL_ACTIVITY); - boolean callTransfer = data == null ? false : data.getBooleanExtra("Transfer", false); + callTransfer = data == null ? false : data.getBooleanExtra("Transfer", false); boolean chat = data == null ? false : data.getBooleanExtra("chat", false); if(chat){ pendingFragmentTransaction = FragmentsAvailable.CHAT_LIST; @@ -1103,6 +1108,8 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta if (lc != null) { lc.removeListener(mListener); } + + callTransfer = false; super.onPause(); } From ab8bc312fb94de61de0d97d4d382d95701827d2e Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Tue, 13 Sep 2016 14:19:38 +0200 Subject: [PATCH 6/9] Fix some tests --- tests/src/org/linphone/test/AccountAssistant.java | 5 +++-- tests/src/org/linphone/test/ConferenceAndMultiCall.java | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/src/org/linphone/test/AccountAssistant.java b/tests/src/org/linphone/test/AccountAssistant.java index ab029d5e4..1e31ee3d3 100644 --- a/tests/src/org/linphone/test/AccountAssistant.java +++ b/tests/src/org/linphone/test/AccountAssistant.java @@ -46,8 +46,9 @@ public class AccountAssistant extends SampleTest { solo.sleep(1000); //Test echo calibration launch at first start - Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.assistant_ec_calibration))); - + Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.assistant_codec_down_question))); + solo.clickOnView(solo.getView(org.linphone.R.id.answerNo)); + solo.waitForActivity("LinphoneActivity", 8000); Assert.assertTrue(solo.searchText(iContext.getString(R.string.account_linphone_login) + "@sip.linphone.org")); diff --git a/tests/src/org/linphone/test/ConferenceAndMultiCall.java b/tests/src/org/linphone/test/ConferenceAndMultiCall.java index 076640ac8..7f2c32d0a 100644 --- a/tests/src/org/linphone/test/ConferenceAndMultiCall.java +++ b/tests/src/org/linphone/test/ConferenceAndMultiCall.java @@ -33,6 +33,7 @@ public class ConferenceAndMultiCall extends SampleTest { goToSettings(); selectItemInListOnUIThread(3); + solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_title)); solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_enable_title)); solo.sleep(500); From 3c7948fdd553f20a0e40dd3050013cfecab16a7c Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 13 Sep 2016 16:38:46 +0200 Subject: [PATCH 7/9] Fixed spinner in contacts list not being visible while fetching contacts --- src/org/linphone/ContactsListFragment.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/org/linphone/ContactsListFragment.java b/src/org/linphone/ContactsListFragment.java index 66984af71..22dd4256c 100644 --- a/src/org/linphone/ContactsListFragment.java +++ b/src/org/linphone/ContactsListFragment.java @@ -146,6 +146,7 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O }); contactsFetchInProgress = (ProgressBar) view.findViewById(R.id.contactsFetchInProgress); + contactsFetchInProgress.setVisibility(View.VISIBLE); return view; } @@ -333,17 +334,23 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O noSipContact.setVisibility(View.GONE); noContact.setVisibility(View.GONE); contactsList.setVisibility(View.VISIBLE); - contactsFetchInProgress.setVisibility(View.GONE); + ContactsListAdapter adapter; if (onlyDisplayLinphoneContacts) { contactsList.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE); - contactsList.setAdapter(new ContactsListAdapter(ContactsManager.getInstance().getSIPContacts())); + adapter = new ContactsListAdapter(ContactsManager.getInstance().getSIPContacts()); + contactsList.setAdapter(adapter); edit.setEnabled(true); } else { contactsList.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE); - contactsList.setAdapter(new ContactsListAdapter(ContactsManager.getInstance().getContacts())); + adapter = new ContactsListAdapter(ContactsManager.getInstance().getContacts()); + contactsList.setAdapter(adapter); edit.setEnabled(true); } + + if (adapter.getCount() > 0) { + contactsFetchInProgress.setVisibility(View.GONE); + } ContactsManager.getInstance().setLinphoneContactsPrefered(onlyDisplayLinphoneContacts); } From 03883ed1a2a31eb6bf352710400a285198670a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Wed, 14 Sep 2016 11:22:38 +0200 Subject: [PATCH 8/9] Add codec2 submodule --- .gitmodules | 3 +++ submodules/externals/codec2 | 1 + 2 files changed, 4 insertions(+) create mode 160000 submodules/externals/codec2 diff --git a/.gitmodules b/.gitmodules index 366481017..d7a3256b5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -101,3 +101,6 @@ [submodule "submodules/externals/vo-amrwbenc"] path = submodules/externals/vo-amrwbenc url = git://git.linphone.org/vo-amrwbenc.git +[submodule "submodules/externals/codec2"] + path = submodules/externals/codec2 + url = git://git.linphone.org/codec2 diff --git a/submodules/externals/codec2 b/submodules/externals/codec2 new file mode 160000 index 000000000..4e154e6bb --- /dev/null +++ b/submodules/externals/codec2 @@ -0,0 +1 @@ +Subproject commit 4e154e6bbbe92cc76e333a0b4acb365b5c042ec6 From d2903709381f4d3cbe5a1545c7b40c13fc6dc9aa Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 14 Sep 2016 11:39:25 +0200 Subject: [PATCH 9/9] Updated linphone submodule --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index c87b9a5a3..a6e7eec3b 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit c87b9a5a3b706b74f1513f65fd56e7085850aefb +Subproject commit a6e7eec3b3ec268e7d86f85ae268b53eca5c10de