diff --git a/.gitlab-ci-files/job-android.yml b/.gitlab-ci-files/job-android.yml
index f1ede3e0f..946909ca4 100644
--- a/.gitlab-ci-files/job-android.yml
+++ b/.gitlab-ci-files/job-android.yml
@@ -24,13 +24,12 @@ job-android:
artifacts:
paths:
- - ./app/build/outputs/apk/debug/linphone-android-debug-*.apk
- ./app/build/outputs/apk/release/linphone-android-release-*.apk
when: always
- expire_in: 1 week
+ expire_in: 1 day
.scheduled-job-android:
extends: job-android
only:
- - schedules
\ No newline at end of file
+ - schedules
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4469ba211..4307142ea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,7 +11,7 @@ Group changes to describe their impact on the project, as follows:
Security to invite users to upgrade in case of vulnerabilities.
-## [6.0.0] - 2024-??-??
+## [6.0.0] - 2025-03-11
6.0.0 release is a complete rework of Linphone Android, with a fully redesigned UI, so it is impossible to list everything here.
@@ -20,30 +20,38 @@ Group changes to describe their impact on the project, as follows:
- Asymmetrical video : you no longer need to send your own camera feed to receive the one from the remote end of the call, and vice versa.
- Improved multi account: you'll only see history, conversations, meetings etc... related to currently selected account, and you can switch the default account in two clicks.
- Call transfer: Blind & Attended call transfer have been merged into one: during a call, if you initiate a transfer action, either pick another call to do the attended transfer or select a contact from the list (you can input a SIP URI not already in the suggestions list) to start a blind transfer.
+- User can only send up to 12 files in a single chat message.
+- IMDNs are now only sent to the message sender, preventing huge traffic in large groups, and thus the delivery status icon for received messages is now hidden in groups (as it was in 1-1 conversations).
- Settings: a lot of them are gone, the one that are still there have been reworked to increase user friendliness.
- Default screen (between contacts, call history, conversations & meetings list) will change depending on where you were when the app was paused or killed, and you will return to that last visited screen on the next startup.
- Gradle files have been migrated from Groovy to Kotlin DSL, and dependencies are now in a separated file (libs.versions.toml).
- Account creation no longer allows you to use your phone number as username, but it is still required to provide it to receive activation code by SMS.
- Minimum supported Android OS version is now 9 (API level 28).
- Telecom Manager support is now based on androidx.core.core-telecom package.
+- Some settings have changed name and/or section in linphonerc file.
### Added
-- Contacts trust: contacts for which all devices have been validated through a ZRTP call with SAS exchange are now highlighted with a blue circle (and with a red one in case of mistrust). That trust is now handled at contact level (instead of conversation level in previous versions).
+- Contacts trust: contacts for which all devices have been validated through a ZRTP call with SAS exchange are now highlighted with a blue circle (and with a red one in case of mistrust). That trust is now handled at contact level (instead of conversation level in previous versions).
- Media & documents exchanged in a conversation can be easily found through a dedicated screen.
- A brand new chat message search feature has been added to conversations.
- You can now react to a chat message using any emoji.
- If next message is also a voice recording, playback will automatically start after the currently playing one ends.
- Chat while in call: a shortcut to a conversation screen with the remote.
- Chat while in a conference: if the conference has a text stream enabled, you can chat with the other participants of the conference while it lasts. At the end, you'll find the messages history in the call history (and not in the list of conversations).
+- Auto export of media to native gallery even when auto download is enabled (but still not if VFS is enabled nor for ephemeral messages).
+- Save / export document & media from ephemeral messages will be disabled, and secure policy that prevents screenshots will be enforced in file viewer even if the setting is disabled.
+- Notification showing upload/download of files shared through chat will let user know the progress and keep the app alive during that process.
- Screen sharing in conference: only desktop app starting with 6.0 version is able to start it, but on mobiles you'll be able to see it.
- You can choose whatever ringtone you'd like for incoming calls (in Android notification channel settings).
- Security focus: security & trust is more visible than ever, and unsecure conversations & calls are even more visible than before.
- CardDAV: you can configure as many CardDAV servers you want to synchronize you contacts in Linphone (in addition or in replacement of native addressbook import).
- OpenID: when used with a SSO compliant SIP server (such as Flexisip), we support single-sign-on login.
- MWI support: display and allow to call your voicemail when you have new messages (if supported by your VoIP provider and properly configured in your account params).
+- CCMP support: if you configure a CCMP server URL in your accounts params, it will be used when scheduling meetings & to fetch list of meetings you've organized/been invited to.
- Devices list: check on which device your sip.linphone.org account is connected and the last connection date & time (like on subscribe.linphone.org).
- Protobuf dependency to allow logging native crashes stack traces at next app startup.
- Android 15 startup listener, allowing us to log type of start (cold, warm, etc...) and some other useful info.
+- Dialer & in-call numpad show letters under the digit.
### Removed
- Dialer: the previous home screen (dialer) has been removed, you'll find it as an input option in the new start call screen.
diff --git a/README.md b/README.md
index 99fc7f372..748fd7d8c 100644
--- a/README.md
+++ b/README.md
@@ -134,6 +134,8 @@ adb logcat -d | ndk-stack -sym ./libs-debug/`adb shell getprop ro.product.cpu.ab
```
Warning: This command won't print anything until you reproduce the crash!
+Starting [NDK r29](https://github.com/android/ndk/wiki/Changelog-r29) you will be able to directly use the ```libs-debug.zip``` file in ```ndk-stack -sym``` argument.
+
## Create an APK with a different package name
Simply edit the ```app/build.gradle.kts``` file and change the value of the ```packageName``` variable.
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 14af2afc8..76a87511e 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -103,7 +103,7 @@ android {
versionCode = 600000 // 6.00.000
versionName = "6.0.0"
- manifestPlaceholders["appAuthRedirectScheme"] = "org.linphone"
+ manifestPlaceholders["appAuthRedirectScheme"] = packageName
ndk {
//noinspection ChromeOsAbiSupport
@@ -155,6 +155,7 @@ android {
}
resValue("string", "linphone_app_version", gitVersion.trim())
resValue("string", "linphone_app_branch", gitBranch.toString().trim())
+ resValue("string", "linphone_openid_callback_scheme", packageName)
if (crashlyticsAvailable) {
val path = File("$sdkPath/libs-debug/").toString()
@@ -177,6 +178,7 @@ android {
resValue("string", "file_provider", "$packageName.fileprovider")
resValue("string", "linphone_app_version", gitVersion.trim())
resValue("string", "linphone_app_branch", gitBranch.toString().trim())
+ resValue("string", "linphone_openid_callback_scheme", packageName)
if (crashlyticsAvailable) {
val path = File("$sdkPath/libs-debug/").toString()
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b8543bc29..04a51f47f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -60,6 +60,7 @@
+
@@ -122,18 +123,6 @@
-
-
-
-
+
+
+
+
Adresse SIP
ID du téléphone
- utilisateur@domaine
Nom d\'affichage
Domaine
Nom d\'utilisateur
@@ -14,7 +13,7 @@
Mot de passe
Numéro de téléphone
ou
- suivant
+ Suivant
Commencer
Aujourd\'hui
Hier
@@ -90,6 +89,7 @@
Volume faible : vous risquez de ne pas entendre
Configuration appliquée
Erreur lors du chargement ou de l\'application de la configuration
+ Erreur lors de la création du lecteur média
Conditions de service & politique de confidentialité
@@ -97,16 +97,18 @@
politique de confidentialité
En continuant, vous acceptez nos %1$s et %2$s.
Confirmez votre numéro de téléphone
- Êtes-vous sûr de vouloir utiliser ce numéro de téléphone ?
+ Êtes-vous sûr que le %s est votre numéro de téléphone ?
Connexion
Scanner un QR code
Ce QR code est invalide !
J\'ai un compte SIP tiers
+ Compte SIP tiers
Single sign on
Adresse SIP invalide
L\'adresse SIP ne contient pas de nom d\'utilisateur !
Pas encore de compte ?
Créer un compte
+ Confirmez votre numéro
On vous a envoyé un code de vérification par SMS au numéro %1$s.\n\nMerci de le saisir ci-dessous :
Numéro incorrect ?
Créer
@@ -116,7 +118,6 @@
Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte &appName;.\n\nCes fonctionnalités seront masquées si vous utilisez un compte SIP tiers.\n\nPour les activer dans un projet commercial, merci de nous contacter.
Je préfère créer un compte
J\'ai compris
- Nom d\'utilisateur ou identité SIP*
Notifications push indisponible, la création de compte est donc désactivée.
Notification push non reçue, merci de réessayer plus tard
Un erreur inattendue est survenue, merci de réessayer plus tard
@@ -180,6 +181,7 @@
Chiffrer tous les fichiers
Attention, vous ne pourrez pas revenir en arrière !
Échec à l\'activation du module d\'encryption
+ Module d\'encryption activé
Confirmer l\'activation du chiffrement
Une fois la fonctionnalité activée, toutes les données de l\'application seront chiffrées et accessibles uniquement via celle-ci.\n\nCe changement est irréversible.
Empêcher l\'interface d\'être enregistrée
@@ -199,6 +201,7 @@
Changer de sonnerie
Conversations
Télécharger automatiquement les fichiers
+ Rendre visible dans la galerie les médias téléchargés
Marquer la conversation comme lue lorsqu\'une notification de message est supprimée
Contacts
Ajouter un serveur LDAP
@@ -261,6 +264,7 @@
URL du serveur de partage de fichier
Chiffrement du média
Rendre le chiffrement du média obligatoire
+ Créer en mode chiffré de bout en bout les réunions et les appels de groupe
Accepter l\'early media
Autoriser l\'early media pour les appels sortants
URL de configuration distante
@@ -572,13 +576,17 @@
Envoyer l\'invitation par message aux participants
Rejoindre la réunion
Organisateur
- Supprimer la réunion
Ajouter dans le calendrier
Réunion supprimée
+ Réunion introuvable !
Description
Modifier la réunion
Annuler la réunion?
Voulez-vous annuler la réunion et envoyer une notification aux participants ?
+ Annuler la réunion
+ Supprimer la réunion ?
+ Voulez-vous supprimer la réunion ?
+ Supprimer la réunion
Réunion créée
Réunion mise à jour
Réunion annulée
@@ -599,7 +607,8 @@
Appel sortant
Appel entrant
Appel vidéo entrant
- Appel terminé
+ Vous avez terminé l\'appel
+ Votre correspondant a terminé l\'appel
Appel entrant pour %s
Appel vidéo entrant pour %s
Transférer %s à…
@@ -633,6 +642,7 @@
Appel chiffré de point à point
Appel non chiffré
Liste des appels
+ L\'appel est enregistré
%s enregistre l\'appel
%s appels
%s appels en pause
diff --git a/app/src/main/res/values-sw600dp/dimen.xml b/app/src/main/res/values-sw600dp/dimen.xml
new file mode 100644
index 000000000..78da8b09d
--- /dev/null
+++ b/app/src/main/res/values-sw600dp/dimen.xml
@@ -0,0 +1,5 @@
+
+
+ 150dp
+ 600dp
+
\ No newline at end of file
diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml
index 12b62c7c6..f46aad053 100644
--- a/app/src/main/res/values/dimen.xml
+++ b/app/src/main/res/values/dimen.xml
@@ -14,6 +14,7 @@
24dp
48dp
100dp
+ 30dp
30dp
45dp
@@ -99,8 +100,6 @@
425dp
340dp
- 200dp
-
15dp
30dp
15dp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f23abecea..cfc3398f7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -44,7 +44,6 @@
SIP address
Device ID
- username@domain
Display name
Domain
Username
@@ -52,7 +51,7 @@
Password
Phone number
or
- next
+ Next
Start
Today
Yesterday
@@ -129,6 +128,7 @@
Media volume is low, you may not hear anything!
Configuration successfully applied
Error while trying to download and apply remote configuration
+ Error trying to create media player
General terms & privacy policy
@@ -141,11 +141,13 @@
Scan QR code
Invalid QR code!
Use a third party SIP account
+ Third party SIP account
Single sign on
SIP address is invalid!
SIP address doesn\'t contains a username!
No account yet?
Register
+ Confirm your phone number
We have sent a verification code on your phone number %1$s.\n\nPlease enter the verification code below:
Wrong number?
Create
@@ -155,7 +157,6 @@
Some features require a &appName; account, such as group messaging, video conferences…\n\nThese features are hidden when you register with a third party SIP account.\n\nTo enable it in a commercial project, please contact us.
I prefer to create an account
I understand
- Username or SIP identity*
Push notifications not available, account creation disabled
Push notification with auth token not received in 5 seconds, please try again later
Unexpected error occurred, please try again later
@@ -219,6 +220,7 @@
Encrypt everything
Warning: once enabled it can\'t be disabled!
Failed to enable encryption module!
+ Encryption module enabled
Do you really want to encrypt everything?
Be careful, it can\'t be undone!
Prevent interface from being recorded
@@ -238,6 +240,7 @@
Change ringtone
Conversations
Auto-download files
+ Make downloaded media public
Mark conversation as read when dismissing message notification
Contacts
Add LDAP server
@@ -300,6 +303,7 @@
File sharing server URL
Media encryption
Media encryption mandatory
+ Create end-to-end encrypted meetings & group calls
Accept early media
Allow outgoing early media
Remote provisioning URL
@@ -612,13 +616,17 @@
Send invitation to participants
Join the meeting now
Organizer
- Delete meeting
Create calendar event
Meeting has been deleted
+ Meeting cannot be found!
Description
Edit meeting
Cancel the meeting?
Do you want to cancel the meeting and send a notification to all participants?
+ Cancel meeting
+ Delete the meeting?
+ Do you want to delete the meeting?
+ Delete meeting
Meeting has been created
Meeting has been updated
Meeting has been cancelled
@@ -639,7 +647,8 @@
Outgoing call
Incoming call
Incoming video call
- Call ended
+ You have ended the call
+ Correspondent has ended the call
Incoming call for %s
Incoming video call for %s
Transfer %s to…
@@ -673,6 +682,7 @@
Point-to-point encrypted by SRTP
Call is not encrypted
Calls list
+ Call is being recorded
%s is recording
%s calls
%s paused calls
@@ -911,6 +921,7 @@
Go to conversation
Copy text to clipboard
Voice message are available
+ Long press to dial voicemail
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index adab3cc5b..5b54e32e7 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -149,15 +149,7 @@
- ?attr/color_danger_500
- 8dp
-
+