diff --git a/app/src/main/java/org/linphone/LinphoneService.java b/app/src/main/java/org/linphone/LinphoneService.java index 0783cfc88..389682b37 100644 --- a/app/src/main/java/org/linphone/LinphoneService.java +++ b/app/src/main/java/org/linphone/LinphoneService.java @@ -165,15 +165,10 @@ public final class LinphoneService extends Service { } if (state == State.End || state == State.Released || state == State.Error) { - if (LinphoneManager.isInstanciated() && LinphoneManager.getLc() != null && LinphoneManager.getLc().getCallsNb() == 0) { - if (LinphoneActivity.isInstanciated() && LinphoneActivity.instance().getStatusFragment() != null) { - LinphoneActivity.instance().getStatusFragment().setisZrtpAsk(false); - } - } destroyOverlay(); } - if (state == State.End && call.getCallLog().getStatus() == Call.Status.Missed) { + if (state == State.Released && call.getCallLog().getStatus() == Call.Status.Missed) { mNotificationManager.displayMissedCallNotification(call); } } diff --git a/app/src/main/java/org/linphone/call/CallActivity.java b/app/src/main/java/org/linphone/call/CallActivity.java index a421c3578..53e13efa7 100644 --- a/app/src/main/java/org/linphone/call/CallActivity.java +++ b/app/src/main/java/org/linphone/call/CallActivity.java @@ -186,9 +186,6 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList @Override public void onCallStateChanged(Core lc, final Call call, Call.State state, String message) { if (LinphoneManager.getLc().getCallsNb() == 0) { - if (status != null) { - status.setisZrtpAsk(false); - } finish(); return; } @@ -273,9 +270,6 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList TimeRemind = savedInstanceState.getLong("TimeRemind"); createTimerForDialog(TimeRemind); } - if (status != null && savedInstanceState.getBoolean("AskingZrtp")) { - status.setisZrtpAsk(savedInstanceState.getBoolean("AskingZrtp")); - } refreshInCallActions(); return; } else { @@ -334,7 +328,6 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList outState.putBoolean("VideoCallPaused", isVideoCallPaused); outState.putBoolean("AskingVideo", isVideoAsk); outState.putLong("TimeRemind", TimeRemind); - if (status != null) outState.putBoolean("AskingZrtp", status.getisZrtpAsk()); if (dialog != null) dialog.dismiss(); super.onSaveInstanceState(outState); } @@ -1179,8 +1172,11 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList refreshIncallUi(); handleViewIntent(); - if (status != null && status.getisZrtpAsk() && lc != null) { - status.showZRTPDialog(lc.getCurrentCall()); + if (status != null && lc != null) { + Call currentCall = lc.getCurrentCall(); + if (!currentCall.getAuthenticationTokenVerified()) { + status.showZRTPDialog(currentCall); + } } if (!isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) { diff --git a/app/src/main/java/org/linphone/compatibility/ApiTwentyOnePlus.java b/app/src/main/java/org/linphone/compatibility/ApiTwentyOnePlus.java index 62a2f934a..6905bbdde 100644 --- a/app/src/main/java/org/linphone/compatibility/ApiTwentyOnePlus.java +++ b/app/src/main/java/org/linphone/compatibility/ApiTwentyOnePlus.java @@ -128,10 +128,6 @@ public class ApiTwentyOnePlus { return notif; } - public static void removeGlobalLayoutListener(ViewTreeObserver viewTreeObserver, OnGlobalLayoutListener keyboardListener) { - viewTreeObserver.removeOnGlobalLayoutListener(keyboardListener); - } - public static Notification createMissedCallNotification(Context context, String title, String text, PendingIntent intent) { Notification notif = new Notification.Builder(context) .setContentTitle(title) @@ -141,7 +137,7 @@ public class ApiTwentyOnePlus { .setContentIntent(intent) .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE) - .setCategory(Notification.CATEGORY_MESSAGE) + .setCategory(Notification.CATEGORY_EVENT) .setVisibility(Notification.VISIBILITY_PRIVATE) .setLights(ContextCompat.getColor(context, R.color.notification_color_led), context.getResources().getInteger(R.integer.notification_ms_on), diff --git a/app/src/main/java/org/linphone/compatibility/ApiTwentySixPlus.java b/app/src/main/java/org/linphone/compatibility/ApiTwentySixPlus.java index 8b86699d6..cc18fa3a6 100644 --- a/app/src/main/java/org/linphone/compatibility/ApiTwentySixPlus.java +++ b/app/src/main/java/org/linphone/compatibility/ApiTwentySixPlus.java @@ -206,7 +206,7 @@ public class ApiTwentySixPlus { .setContentIntent(intent) .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE) - .setCategory(Notification.CATEGORY_MESSAGE) + .setCategory(Notification.CATEGORY_EVENT) .setVisibility(Notification.VISIBILITY_PRIVATE) .setPriority(Notification.PRIORITY_HIGH) .setWhen(System.currentTimeMillis()) diff --git a/app/src/main/java/org/linphone/fragments/StatusFragment.java b/app/src/main/java/org/linphone/fragments/StatusFragment.java index fdf2ec72b..a7d13fba7 100644 --- a/app/src/main/java/org/linphone/fragments/StatusFragment.java +++ b/app/src/main/java/org/linphone/fragments/StatusFragment.java @@ -60,7 +60,7 @@ public class StatusFragment extends Fragment { private TextView statusText, voicemailCount; private ImageView statusLed, callQuality, encryption, menu, voicemail; private Runnable mCallQualityUpdater; - private boolean isInCall, isAttached = false, isZrtpAsk; + private boolean isInCall, isAttached = false; private CoreListenerStub mListener; private Dialog ZRTPdialog = null; private int mDisplayedQuality = -1; @@ -418,7 +418,6 @@ public class StatusFragment extends Fragment { ZRTPdialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); ZRTPdialog.getWindow().setBackgroundDrawable(d); String zrtpToRead, zrtpToListen; - isZrtpAsk = true; if (call.getDir().equals(Call.Dir.Incoming)) { zrtpToRead = token.substring(0, 2); @@ -461,7 +460,6 @@ public class StatusFragment extends Fragment { encryption.setImageResource(R.drawable.security_ko); } } - isZrtpAsk = false; ZRTPdialog.dismiss(); } }); @@ -473,19 +471,10 @@ public class StatusFragment extends Fragment { if (encryption != null) { encryption.setImageResource(R.drawable.security_ok); } - isZrtpAsk = false; ZRTPdialog.dismiss(); } }); ZRTPdialog.show(); } } - - public boolean getisZrtpAsk() { - return isZrtpAsk; - } - - public void setisZrtpAsk(boolean bool) { - isZrtpAsk = bool; - } } diff --git a/app/src/main/java/org/linphone/notifications/NotificationsManager.java b/app/src/main/java/org/linphone/notifications/NotificationsManager.java index 8a6ab59b9..29d313e77 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationsManager.java +++ b/app/src/main/java/org/linphone/notifications/NotificationsManager.java @@ -27,7 +27,6 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; -import android.provider.MediaStore; import org.linphone.LinphoneManager; import org.linphone.LinphonePreferences; @@ -82,6 +81,7 @@ public class NotificationsManager { bm = BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_launcher); } catch (Exception e) { } + PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, notifIntent, PendingIntent.FLAG_UPDATE_CURRENT); mServiceNotification = Compatibility.createNotification(mContext, mContext.getString(R.string.service_name), "", R.drawable.linphone_notification_icon, R.mipmap.ic_launcher, bm, pendingIntent, true, @@ -143,6 +143,7 @@ public class NotificationsManager { mLastNotificationId += 1; mChatNotifMap.put(conferenceAddress, notif); } + notifMessage.setSenderBitmap(bm); notif.addMessage(notifMessage); notif.setIsGroup(true); @@ -173,6 +174,7 @@ public class NotificationsManager { mLastNotificationId += 1; mChatNotifMap.put(fromSipUri, notif); } + notifMessage.setSenderBitmap(bm); notif.addMessage(notifMessage); notif.setIsGroup(false); @@ -184,7 +186,7 @@ public class NotificationsManager { } public void displayMissedCallNotification(Call call) { - Intent missedCallNotifIntent = new Intent(mContext, LinphoneService.instance().getIncomingReceivedActivity()); + Intent missedCallNotifIntent = new Intent(mContext, LinphoneActivity.class); missedCallNotifIntent.putExtra("GoToHistory", true); PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, missedCallNotifIntent, PendingIntent.FLAG_UPDATE_CURRENT); @@ -204,14 +206,15 @@ public class NotificationsManager { } } } + Notification notif = Compatibility.createMissedCallNotification(mContext, mContext.getString(R.string.missed_calls_notif_title), body, pendingIntent); sendNotification(MISSED_CALLS_NOTIF_ID, notif); } public void displayCallNotification(Call call) { + if (call == null) return; Intent callNotifIntent = new Intent(mContext, LinphoneService.instance().getIncomingReceivedActivity()); PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, callNotifIntent, PendingIntent.FLAG_UPDATE_CURRENT); - if (call == null) return; Address address = call.getRemoteAddress(); String addressAsString = address.asStringUriOnly(); @@ -264,7 +267,6 @@ public class NotificationsManager { Notification notification = Compatibility.createInCallNotification(mContext, notif.getNotificationId(), showAnswerAction, mContext.getString(R.string.service_name), mContext.getString(notificationTextId), iconId, bm, name, pendingIntent); - sendNotification(notif.getNotificationId(), notification); } @@ -281,8 +283,8 @@ public class NotificationsManager { Intent notifIntent = new Intent(mContext, LinphoneActivity.class); notifIntent.putExtra("GoToInapp", true); PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, notifIntent, PendingIntent.FLAG_UPDATE_CURRENT); - Notification notif = Compatibility.createSimpleNotification(mContext, mContext.getString(R.string.inapp_notification_title), message, pendingIntent); + Notification notif = Compatibility.createSimpleNotification(mContext, mContext.getString(R.string.inapp_notification_title), message, pendingIntent); sendNotification(IN_APP_NOTIF_ID, notif); } }