Fixed some deprecated symbols with API 24 + a bit of cleanup in Compatibility.java + removed deprecated Contact and ChatMessage classes
This commit is contained in:
parent
f61efe5685
commit
970505e64e
11 changed files with 58 additions and 492 deletions
|
@ -387,7 +387,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
|
|
||||||
if(isEditMode) {
|
if(isEditMode) {
|
||||||
deleteChatBubble.setVisibility(View.VISIBLE);
|
deleteChatBubble.setVisibility(View.VISIBLE);
|
||||||
if(message.isOutgoing()){
|
if (message.isOutgoing()) {
|
||||||
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
||||||
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
|
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
|
||||||
layoutParams.setMargins(100, 10, 10, 10);
|
layoutParams.setMargins(100, 10, 10, 10);
|
||||||
|
@ -419,7 +419,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(messagesList.isItemChecked(position)) {
|
if (messagesList.isItemChecked(position)) {
|
||||||
deleteChatBubble.setChecked(true);
|
deleteChatBubble.setChecked(true);
|
||||||
} else {
|
} else {
|
||||||
deleteChatBubble.setChecked(false);
|
deleteChatBubble.setChecked(false);
|
||||||
|
@ -427,7 +427,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
|
|
||||||
rlayout.addView(v);
|
rlayout.addView(v);
|
||||||
} else {
|
} else {
|
||||||
if(message.isOutgoing()){
|
if (message.isOutgoing()) {
|
||||||
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
||||||
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
|
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
|
||||||
layoutParams.setMargins(100, 10, 10, 10);
|
layoutParams.setMargins(100, 10, 10, 10);
|
||||||
|
@ -448,7 +448,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
||||||
|
|
||||||
LinphoneAddress lAddress = null;
|
LinphoneAddress lAddress = null;
|
||||||
if(sipUri == null){
|
if (sipUri == null) {
|
||||||
initNewChatConversation();
|
initNewChatConversation();
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
|
@ -477,7 +477,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayMessageList() {
|
private void displayMessageList() {
|
||||||
if(chatRoom != null) {
|
if (chatRoom != null) {
|
||||||
if (adapter != null) {
|
if (adapter != null) {
|
||||||
adapter.refreshHistory();
|
adapter.refreshHistory();
|
||||||
} else {
|
} else {
|
||||||
|
@ -488,7 +488,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayChatHeader(LinphoneAddress address) {
|
private void displayChatHeader(LinphoneAddress address) {
|
||||||
if(contact != null) {
|
if (contact != null) {
|
||||||
contactName.setText(contact.getFullName());
|
contactName.setText(contact.getFullName());
|
||||||
} else if(address != null){
|
} else if(address != null){
|
||||||
contactName.setText(LinphoneUtils.getAddressDisplayName(address));
|
contactName.setText(LinphoneUtils.getAddressDisplayName(address));
|
||||||
|
@ -618,7 +618,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
String draft = getArguments().getString("messageDraft");
|
String draft = getArguments().getString("messageDraft");
|
||||||
message.setText(draft);
|
message.setText(draft);
|
||||||
|
|
||||||
if(!newChatConversation) {
|
if (!newChatConversation) {
|
||||||
initChatRoom(sipUri);
|
initChatRoom(sipUri);
|
||||||
searchContactField.setVisibility(View.GONE);
|
searchContactField.setVisibility(View.GONE);
|
||||||
resultContactsSearch.setVisibility(View.GONE);
|
resultContactsSearch.setVisibility(View.GONE);
|
||||||
|
@ -626,10 +626,10 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectAllList(boolean isSelectAll){
|
private void selectAllList(boolean isSelectAll) {
|
||||||
int size = messagesList.getAdapter().getCount();
|
int size = messagesList.getAdapter().getCount();
|
||||||
for(int i=0; i<size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
messagesList.setItemChecked(i,isSelectAll);
|
messagesList.setItemChecked(i, isSelectAll);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -642,8 +642,8 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
|
|
||||||
private void removeChats(){
|
private void removeChats(){
|
||||||
int size = messagesList.getAdapter().getCount();
|
int size = messagesList.getAdapter().getCount();
|
||||||
for(int i=0; i<size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
if(messagesList.isItemChecked(i)){
|
if (messagesList.isItemChecked(i)) {
|
||||||
LinphoneChatMessage message = (LinphoneChatMessage) messagesList.getAdapter().getItem(i);
|
LinphoneChatMessage message = (LinphoneChatMessage) messagesList.getAdapter().getItem(i);
|
||||||
chatRoom.deleteMessage(message);
|
chatRoom.deleteMessage(message);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,117 +0,0 @@
|
||||||
package org.linphone;
|
|
||||||
|
|
||||||
import org.linphone.core.LinphoneChatMessage;
|
|
||||||
|
|
||||||
import android.graphics.Bitmap;
|
|
||||||
import android.graphics.BitmapFactory;
|
|
||||||
/*
|
|
||||||
ChatMessage.java
|
|
||||||
Copyright (C) 2012 Belledonne Communications, Grenoble, France
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU General Public License
|
|
||||||
as published by the Free Software Foundation; either version 2
|
|
||||||
of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sylvain Berfini
|
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
public class ChatMessage {
|
|
||||||
private String message;
|
|
||||||
private String timestamp;
|
|
||||||
private String url;
|
|
||||||
private boolean incoming;
|
|
||||||
private int status;
|
|
||||||
private int id;
|
|
||||||
private Bitmap image;
|
|
||||||
private boolean isRead;
|
|
||||||
|
|
||||||
public ChatMessage(int id, String message, byte[] rawImage, String timestamp, boolean incoming, int status, boolean read) {
|
|
||||||
super();
|
|
||||||
this.id = id;
|
|
||||||
this.message = message;
|
|
||||||
this.timestamp = timestamp;
|
|
||||||
this.incoming = incoming;
|
|
||||||
this.status = status;
|
|
||||||
this.image = rawImage != null ? BitmapFactory.decodeByteArray(rawImage, 0, rawImage.length) : null;
|
|
||||||
this.isRead = read;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ChatMessage(int id, String message, Bitmap image, String timestamp, boolean incoming, int status, boolean read) {
|
|
||||||
super();
|
|
||||||
this.id = id;
|
|
||||||
this.message = message;
|
|
||||||
this.timestamp = timestamp;
|
|
||||||
this.incoming = incoming;
|
|
||||||
this.status = status;
|
|
||||||
this.image = image;
|
|
||||||
this.isRead = read;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMessage() {
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMessage(String message) {
|
|
||||||
this.message = message;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTimestamp() {
|
|
||||||
return timestamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTimestamp(String timestamp) {
|
|
||||||
this.timestamp = timestamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isIncoming() {
|
|
||||||
return incoming;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIncoming(boolean incoming) {
|
|
||||||
this.incoming = incoming;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LinphoneChatMessage.State getStatus() {
|
|
||||||
return LinphoneChatMessage.State.fromInt(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Bitmap getImage() {
|
|
||||||
return image;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isRead() {
|
|
||||||
return isRead;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrl() {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrl(String url) {
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString() {
|
|
||||||
return this.id + " : " + this.message + " (" + this.url + ") @ " + this.timestamp + ", read= " + this.isRead + ", incoming= " + this.incoming + ", status = " + this.status;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,139 +0,0 @@
|
||||||
package org.linphone;
|
|
||||||
/*
|
|
||||||
Contact.java
|
|
||||||
Copyright (C) 2012 Belledonne Communications, Grenoble, France
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU General Public License
|
|
||||||
as published by the Free Software Foundation; either version 2
|
|
||||||
of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
*/
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.linphone.compatibility.Compatibility;
|
|
||||||
import org.linphone.core.LinphoneAddress;
|
|
||||||
import org.linphone.core.LinphoneCore;
|
|
||||||
import org.linphone.core.LinphoneFriend;
|
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
|
||||||
import android.graphics.Bitmap;
|
|
||||||
import android.net.Uri;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sylvain Berfini
|
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
public class Contact implements Serializable {
|
|
||||||
private static final long serialVersionUID = 3790717505065723499L;
|
|
||||||
|
|
||||||
private String id;
|
|
||||||
private String name;
|
|
||||||
private transient Uri photoUri;
|
|
||||||
private transient Uri thumbnailUri;
|
|
||||||
private transient Bitmap photo;
|
|
||||||
private List<String> numbersOrAddresses;
|
|
||||||
private boolean hasFriends;
|
|
||||||
private LinphoneAddress address;
|
|
||||||
|
|
||||||
public Contact(String id, String name) {
|
|
||||||
super();
|
|
||||||
this.id = id;
|
|
||||||
this.name = name;
|
|
||||||
this.photoUri = null;
|
|
||||||
this.thumbnailUri = null;
|
|
||||||
this.hasFriends = false;
|
|
||||||
this.address = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Contact(String id, LinphoneAddress address) {
|
|
||||||
super();
|
|
||||||
this.id = id;
|
|
||||||
this.name = LinphoneUtils.getAddressDisplayName(address);
|
|
||||||
this.photoUri = null;
|
|
||||||
this.thumbnailUri = null;
|
|
||||||
this.address = address;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public Contact(String id, String name, Uri photo, Uri thumbnail) {
|
|
||||||
super();
|
|
||||||
this.id = id;
|
|
||||||
this.name = name;
|
|
||||||
this.photoUri = photo;
|
|
||||||
this.thumbnailUri = thumbnail;
|
|
||||||
this.photo = null;
|
|
||||||
this.hasFriends = false;
|
|
||||||
this.address = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Contact(String id, String name, Uri photo, Uri thumbnail, Bitmap picture) {
|
|
||||||
super();
|
|
||||||
this.id = id;
|
|
||||||
this.name = name;
|
|
||||||
this.photoUri = photo;
|
|
||||||
this.thumbnailUri = thumbnail;
|
|
||||||
this.photo = picture;
|
|
||||||
this.hasFriends = false;
|
|
||||||
this.address = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public boolean hasFriends() {
|
|
||||||
return hasFriends;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getID() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LinphoneAddress getLinphoneAddress() {
|
|
||||||
return address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Uri getPhotoUri() {
|
|
||||||
return photoUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Uri getThumbnailUri() {
|
|
||||||
return thumbnailUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Bitmap getPhoto() {
|
|
||||||
return photo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getNumbersOrAddresses() {
|
|
||||||
if (numbersOrAddresses == null)
|
|
||||||
numbersOrAddresses = new ArrayList<String>();
|
|
||||||
return numbersOrAddresses;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void refresh(ContentResolver cr) {
|
|
||||||
this.numbersOrAddresses = Compatibility.extractContactNumbersAndAddresses(id, cr);
|
|
||||||
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
|
||||||
if(lc != null && lc.getFriendList() != null) {
|
|
||||||
for (LinphoneFriend friend :lc.getFriendList()){
|
|
||||||
if (id.equals(friend.getRefKey())) {
|
|
||||||
hasFriends = true;
|
|
||||||
this.numbersOrAddresses.add(friend.getAddress().asStringUriOnly());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.name = Compatibility.refreshContactName(cr, id);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -688,6 +688,32 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
|
||||||
Log.e(e, "Cannot start linphone");
|
Log.e(e, "Cannot start linphone");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initPushNotificationsService() {
|
||||||
|
try {
|
||||||
|
Class<?> GCMRegistrar = Class.forName("com.google.android.gcm.GCMRegistrar");
|
||||||
|
GCMRegistrar.getMethod("checkDevice", Context.class).invoke(null, mServiceContext);
|
||||||
|
try {
|
||||||
|
GCMRegistrar.getMethod("checkManifest", Context.class).invoke(null, mServiceContext);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Log.e("[Push Notification] No receiver found", e);
|
||||||
|
}
|
||||||
|
final String regId = (String)GCMRegistrar.getMethod("getRegistrationId", Context.class).invoke(null, mServiceContext);
|
||||||
|
String newPushSenderID = mServiceContext.getString(R.string.push_sender_id);
|
||||||
|
String currentPushSenderID = LinphonePreferences.instance().getPushNotificationRegistrationID();
|
||||||
|
if (regId.equals("") || currentPushSenderID == null || !currentPushSenderID.equals(newPushSenderID)) {
|
||||||
|
GCMRegistrar.getMethod("register", Context.class, String[].class).invoke(null, mServiceContext, new String[]{newPushSenderID});
|
||||||
|
Log.i("[Push Notification] Storing current sender id = " + newPushSenderID);
|
||||||
|
} else {
|
||||||
|
Log.i("[Push Notification] Already registered with id = " + regId);
|
||||||
|
LinphonePreferences.instance().setPushNotificationRegistrationID(regId);
|
||||||
|
}
|
||||||
|
} catch (java.lang.UnsupportedOperationException e) {
|
||||||
|
Log.i("[Push Notification] Not activated");
|
||||||
|
} catch (Exception e1) {
|
||||||
|
Log.i("[Push Notification] Assuming GCM jar is not provided.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private synchronized void initLiblinphone(LinphoneCore lc) throws LinphoneCoreException {
|
private synchronized void initLiblinphone(LinphoneCore lc) throws LinphoneCoreException {
|
||||||
mLc = lc;
|
mLc = lc;
|
||||||
|
@ -742,7 +768,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
|
||||||
mLc.migrateCallLogs();
|
mLc.migrateCallLogs();
|
||||||
|
|
||||||
if (mServiceContext.getResources().getBoolean(R.bool.enable_push_id)) {
|
if (mServiceContext.getResources().getBoolean(R.bool.enable_push_id)) {
|
||||||
Compatibility.initPushNotificationService(mServiceContext);
|
initPushNotificationsService();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
package org.linphone;
|
|
||||||
|
|
||||||
public class OpenGLESDisplay {
|
|
||||||
public static native void init(int ptr, int width, int height);
|
|
||||||
public static native void render(int ptr);
|
|
||||||
}
|
|
|
@ -18,11 +18,11 @@ along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
import org.linphone.R;
|
import org.linphone.R;
|
||||||
|
import org.linphone.compatibility.Compatibility;
|
||||||
|
|
||||||
import android.app.Fragment;
|
import android.app.Fragment;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.Html;
|
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
import android.text.method.LinkMovementMethod;
|
import android.text.method.LinkMovementMethod;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -53,7 +53,7 @@ public class LinphoneLoginFragment extends Fragment implements OnClickListener,
|
||||||
password = (EditText) view.findViewById(R.id.assistant_password);
|
password = (EditText) view.findViewById(R.id.assistant_password);
|
||||||
password.addTextChangedListener(this);
|
password.addTextChangedListener(this);
|
||||||
forgotPassword = (TextView) view.findViewById(R.id.forgot_password);
|
forgotPassword = (TextView) view.findViewById(R.id.forgot_password);
|
||||||
forgotPassword.setText(Html.fromHtml("<a href=\"" + url + "\"'>"+ getString(R.string.forgot_password) + "</a>"));
|
forgotPassword.setText(Compatibility.fromHtml("<a href=\"" + url + "\"'>"+ getString(R.string.forgot_password) + "</a>"));
|
||||||
forgotPassword.setMovementMethod(LinkMovementMethod.getInstance());
|
forgotPassword.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
displayName = (EditText) view.findViewById(R.id.assistant_display_name);
|
displayName = (EditText) view.findViewById(R.id.assistant_display_name);
|
||||||
apply = (Button) view.findViewById(R.id.assistant_apply);
|
apply = (Button) view.findViewById(R.id.assistant_apply);
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
package org.linphone.compatibility;
|
package org.linphone.compatibility;
|
||||||
|
|
||||||
import org.linphone.LinphonePreferences;
|
|
||||||
import org.linphone.R;
|
|
||||||
import org.linphone.mediastream.Log;
|
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.content.Context;
|
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -33,34 +28,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
@TargetApi(8)
|
@TargetApi(8)
|
||||||
public class ApiEightPlus {
|
public class ApiEightPlus {
|
||||||
|
|
||||||
public static void initPushNotificationService(Context context) {
|
|
||||||
try {
|
|
||||||
Class<?> GCMRegistrar = Class.forName("com.google.android.gcm.GCMRegistrar");
|
|
||||||
// Starting the push notification service
|
|
||||||
GCMRegistrar.getMethod("checkDevice", Context.class).invoke(null, context);
|
|
||||||
try {
|
|
||||||
GCMRegistrar.getMethod("checkManifest", Context.class).invoke(null, context);
|
|
||||||
} catch (IllegalStateException e){
|
|
||||||
Log.e("Push notification: No receiver found",e);
|
|
||||||
}
|
|
||||||
final String regId = (String)GCMRegistrar.getMethod("getRegistrationId", Context.class).invoke(null, context);
|
|
||||||
String newPushSenderID = context.getString(R.string.push_sender_id);
|
|
||||||
String currentPushSenderID = LinphonePreferences.instance().getPushNotificationRegistrationID();
|
|
||||||
if (regId.equals("") || currentPushSenderID == null || !currentPushSenderID.equals(newPushSenderID)) {
|
|
||||||
GCMRegistrar.getMethod("register", Context.class, String[].class).invoke(null, context, new String[]{newPushSenderID});
|
|
||||||
Log.d("Push Notification: storing current sender id = " + newPushSenderID);
|
|
||||||
} else {
|
|
||||||
Log.d("Push Notification: already registered with id = " + regId);
|
|
||||||
LinphonePreferences.instance().setPushNotificationRegistrationID(regId);
|
|
||||||
}
|
|
||||||
} catch (java.lang.UnsupportedOperationException e) {
|
|
||||||
Log.i("Push Notification: not activated");
|
|
||||||
} catch (Exception e1) {
|
|
||||||
//assume the jar is not provided
|
|
||||||
Log.i("Push Notification: assuming GCM jar is not provided.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public static String getAudioManagerEventForBluetoothConnectionStateChangedEvent() {
|
public static String getAudioManagerEventForBluetoothConnectionStateChangedEvent() {
|
||||||
return AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED;
|
return AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED;
|
||||||
|
|
|
@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
@TargetApi(16)
|
@TargetApi(16)
|
||||||
public class ApiSixteenPlus {
|
public class ApiSixteenPlus {
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public static Notification createMessageNotification(Context context,
|
public static Notification createMessageNotification(Context context,
|
||||||
int msgCount, String msgSender, String msg, Bitmap contactIcon,
|
int msgCount, String msgSender, String msg, Bitmap contactIcon,
|
||||||
PendingIntent intent) {
|
PendingIntent intent) {
|
||||||
|
|
|
@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
@TargetApi(21)
|
@TargetApi(21)
|
||||||
public class ApiTwentyOnePlus {
|
public class ApiTwentyOnePlus {
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public static Notification createMessageNotification(Context context,
|
public static Notification createMessageNotification(Context context,
|
||||||
int msgCount, String msgSender, String msg, Bitmap contactIcon,
|
int msgCount, String msgSender, String msg, Bitmap contactIcon,
|
||||||
PendingIntent intent) {
|
PendingIntent intent) {
|
||||||
|
|
|
@ -17,79 +17,28 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.linphone.LinphoneContact;
|
|
||||||
import org.linphone.core.LinphoneAddress;
|
|
||||||
import org.linphone.mediastream.Version;
|
import org.linphone.mediastream.Version;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.ContentProviderOperation;
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.net.Uri;
|
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.preference.Preference;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.text.Html;
|
||||||
|
import android.text.Spanned;
|
||||||
import android.view.ViewTreeObserver;
|
import android.view.ViewTreeObserver;
|
||||||
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
||||||
/**
|
/**
|
||||||
* @author Sylvain Berfini
|
* @author Sylvain Berfini
|
||||||
*/
|
*/
|
||||||
public class Compatibility {
|
public class Compatibility {
|
||||||
public static void overridePendingTransition(Activity activity, int idAnimIn, int idAnimOut) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API05_ECLAIR_20)) {
|
|
||||||
ApiFivePlus.overridePendingTransition(activity, idAnimIn, idAnimOut);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Intent prepareAddContactIntent(String displayName, String sipUri) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API11_HONEYCOMB_30)) {
|
|
||||||
return ApiElevenPlus.prepareAddContactIntent(displayName, sipUri);
|
|
||||||
} else {
|
|
||||||
return ApiFivePlus.prepareAddContactIntent(displayName, sipUri);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Intent prepareEditContactIntent(int id) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API05_ECLAIR_20)) {
|
|
||||||
return ApiFivePlus.prepareEditContactIntent(id);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Intent prepareEditContactIntentWithSipAddress(int id, String sipAddress) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API11_HONEYCOMB_30)) {
|
|
||||||
return ApiElevenPlus.prepareEditContactIntentWithSipAddress(id, sipAddress);
|
|
||||||
} else {
|
|
||||||
return ApiFivePlus.prepareEditContactIntent(id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<String> extractContactNumbersAndAddresses(String id, ContentResolver cr) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
|
||||||
return ApiNinePlus.extractContactNumbersAndAddresses(id, cr);
|
|
||||||
} else {
|
|
||||||
return ApiFivePlus.extractContactNumbersAndAddresses(id, cr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<String> extractContactImAddresses(String id, ContentResolver cr) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
|
||||||
return ApiFivePlus.extractContactNumbersAndAddresses(id, cr);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Cursor getContactsCursor(ContentResolver cr, List<String> contactsId) {
|
public static Cursor getContactsCursor(ContentResolver cr, List<String> contactsId) {
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
||||||
return ApiNinePlus.getContactsCursor(cr, null, contactsId);
|
return ApiNinePlus.getContactsCursor(cr, null, contactsId);
|
||||||
|
@ -98,63 +47,6 @@ public class Compatibility {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Cursor getContactsCursor(ContentResolver cr, String search, List<String> contactsId) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
|
||||||
return ApiNinePlus.getContactsCursor(cr, search, contactsId);
|
|
||||||
} else {
|
|
||||||
return ApiFivePlus.getContactsCursor(cr, contactsId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Cursor getSIPContactsCursor(ContentResolver cr, List<String> contactsId) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
|
||||||
return ApiNinePlus.getSIPContactsCursor(cr, null, contactsId);
|
|
||||||
} else {
|
|
||||||
return ApiFivePlus.getSIPContactsCursor(cr, contactsId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Cursor getSIPContactsCursor(ContentResolver cr, String search, List<String> contactsId) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
|
||||||
return ApiNinePlus.getSIPContactsCursor(cr, search, contactsId);
|
|
||||||
} else {
|
|
||||||
return ApiFivePlus.getSIPContactsCursor(cr, contactsId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Cursor getImContactsCursor(ContentResolver cr) {
|
|
||||||
return ApiFivePlus.getSIPContactsCursor(cr,null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getCursorDisplayNameColumnIndex(Cursor cursor) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API05_ECLAIR_20)) {
|
|
||||||
return ApiFivePlus.getCursorDisplayNameColumnIndex(cursor);
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static LinphoneContact getContact(ContentResolver cr, Cursor cursor, int position) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API05_ECLAIR_20)) {
|
|
||||||
return ApiFivePlus.getContact(cr, cursor, position);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static InputStream getContactPictureInputStream(ContentResolver cr, String id) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API05_ECLAIR_20)) {
|
|
||||||
return ApiFivePlus.getContactPictureInputStream(cr, id);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Uri findUriPictureOfContactAndSetDisplayName(LinphoneAddress address, ContentResolver cr) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
|
||||||
return ApiNinePlus.findUriPictureOfContactAndSetDisplayName(address, cr);
|
|
||||||
} else {
|
|
||||||
return ApiFivePlus.findUriPictureOfContactAndSetDisplayName(address, cr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Notification createSimpleNotification(Context context, String title, String text, PendingIntent intent) {
|
public static Notification createSimpleNotification(Context context, String title, String text, PendingIntent intent) {
|
||||||
Notification notif = null;
|
Notification notif = null;
|
||||||
|
|
||||||
|
@ -218,13 +110,6 @@ public class Compatibility {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String refreshContactName(ContentResolver cr, String id) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API05_ECLAIR_20)) {
|
|
||||||
return ApiFivePlus.refreshContactName(cr, id);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CompatibilityScaleGestureDetector getScaleGestureDetector(Context context, CompatibilityScaleGestureListener listener) {
|
public static CompatibilityScaleGestureDetector getScaleGestureDetector(Context context, CompatibilityScaleGestureListener listener) {
|
||||||
if (Version.sdkAboveOrEqual(Version.API08_FROYO_22)) {
|
if (Version.sdkAboveOrEqual(Version.API08_FROYO_22)) {
|
||||||
CompatibilityScaleGestureDetector csgd = new CompatibilityScaleGestureDetector(context);
|
CompatibilityScaleGestureDetector csgd = new CompatibilityScaleGestureDetector(context);
|
||||||
|
@ -233,29 +118,6 @@ public class Compatibility {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void setPreferenceChecked(Preference preference, boolean checked) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API14_ICE_CREAM_SANDWICH_40)) {
|
|
||||||
ApiFourteenPlus.setPreferenceChecked(preference, checked);
|
|
||||||
} else {
|
|
||||||
ApiFivePlus.setPreferenceChecked(preference, checked);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isPreferenceChecked(Preference preference) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API14_ICE_CREAM_SANDWICH_40)) {
|
|
||||||
return ApiFourteenPlus.isPreferenceChecked(preference);
|
|
||||||
} else {
|
|
||||||
return ApiFivePlus.isPreferenceChecked(preference);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void initPushNotificationService(Context context) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API08_FROYO_22)) {
|
|
||||||
ApiEightPlus.initPushNotificationService(context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void copyTextToClipboard(Context context, String msg) {
|
public static void copyTextToClipboard(Context context, String msg) {
|
||||||
if(Version.sdkAboveOrEqual(Version.API11_HONEYCOMB_30)) {
|
if(Version.sdkAboveOrEqual(Version.API11_HONEYCOMB_30)) {
|
||||||
|
@ -264,42 +126,6 @@ public class Compatibility {
|
||||||
ApiFivePlus.copyTextToClipboard(context, msg);
|
ApiFivePlus.copyTextToClipboard(context, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addSipAddressToContact(Context context, ArrayList<ContentProviderOperation> ops, String sipAddress) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
|
||||||
ApiNinePlus.addSipAddressToContact(context, ops, sipAddress);
|
|
||||||
} else {
|
|
||||||
ApiFivePlus.addSipAddressToContact(context, ops, sipAddress);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void addSipAddressToContact(Context context, ArrayList<ContentProviderOperation> ops, String sipAddress, String rawContactID) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
|
||||||
ApiNinePlus.addSipAddressToContact(context, ops, sipAddress, rawContactID);
|
|
||||||
} else {
|
|
||||||
ApiFivePlus.addSipAddressToContact(context, ops, sipAddress, rawContactID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void updateSipAddressForContact(ArrayList<ContentProviderOperation> ops, String oldSipAddress, String newSipAddress, String contactID) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
|
||||||
ApiNinePlus.updateSipAddressForContact(ops, oldSipAddress, newSipAddress, contactID);
|
|
||||||
} else {
|
|
||||||
ApiFivePlus.updateSipAddressForContact(ops, oldSipAddress, newSipAddress, contactID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void deleteSipAddressFromContact(ArrayList<ContentProviderOperation> ops, String oldSipAddress, String contactID) {
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
|
|
||||||
ApiNinePlus.deleteSipAddressFromContact(ops, oldSipAddress, contactID);
|
|
||||||
} else {
|
|
||||||
ApiFivePlus.deleteSipAddressFromContact(ops, oldSipAddress, contactID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void deleteImAddressFromContact(ArrayList<ContentProviderOperation> ops, String oldSipAddress, String contactID) {
|
|
||||||
ApiFivePlus.deleteSipAddressFromContact(ops, oldSipAddress, contactID);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void removeGlobalLayoutListener(ViewTreeObserver viewTreeObserver, OnGlobalLayoutListener keyboardListener) {
|
public static void removeGlobalLayoutListener(ViewTreeObserver viewTreeObserver, OnGlobalLayoutListener keyboardListener) {
|
||||||
if (Version.sdkAboveOrEqual(Version.API16_JELLY_BEAN_41)) {
|
if (Version.sdkAboveOrEqual(Version.API16_JELLY_BEAN_41)) {
|
||||||
|
@ -309,15 +135,13 @@ public class Compatibility {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void hideNavigationBar(Activity activity)
|
public static void hideNavigationBar(Activity activity) {
|
||||||
{
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API14_ICE_CREAM_SANDWICH_40)) {
|
if (Version.sdkAboveOrEqual(Version.API14_ICE_CREAM_SANDWICH_40)) {
|
||||||
ApiFourteenPlus.hideNavigationBar(activity);
|
ApiFourteenPlus.hideNavigationBar(activity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void showNavigationBar(Activity activity)
|
public static void showNavigationBar(Activity activity) {
|
||||||
{
|
|
||||||
if (Version.sdkAboveOrEqual(Version.API14_ICE_CREAM_SANDWICH_40)) {
|
if (Version.sdkAboveOrEqual(Version.API14_ICE_CREAM_SANDWICH_40)) {
|
||||||
ApiFourteenPlus.showNavigationBar(activity);
|
ApiFourteenPlus.showNavigationBar(activity);
|
||||||
}
|
}
|
||||||
|
@ -354,4 +178,13 @@ public class Compatibility {
|
||||||
return pm.isScreenOn();
|
return pm.isScreenOn();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
public static Spanned fromHtml(String text) {
|
||||||
|
if (Version.sdkAboveOrEqual(Version.API24_NOUGAT_70)) {
|
||||||
|
return Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY);
|
||||||
|
} else {
|
||||||
|
return Html.fromHtml(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ import org.linphone.LinphoneContact;
|
||||||
import org.linphone.LinphoneManager;
|
import org.linphone.LinphoneManager;
|
||||||
import org.linphone.LinphoneUtils;
|
import org.linphone.LinphoneUtils;
|
||||||
import org.linphone.R;
|
import org.linphone.R;
|
||||||
|
import org.linphone.compatibility.Compatibility;
|
||||||
import org.linphone.core.LinphoneBuffer;
|
import org.linphone.core.LinphoneBuffer;
|
||||||
import org.linphone.core.LinphoneChatMessage;
|
import org.linphone.core.LinphoneChatMessage;
|
||||||
import org.linphone.core.LinphoneChatMessage.State;
|
import org.linphone.core.LinphoneChatMessage.State;
|
||||||
|
@ -52,7 +53,6 @@ import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.provider.MediaStore;
|
import android.provider.MediaStore;
|
||||||
import android.text.Html;
|
|
||||||
import android.text.Spannable;
|
import android.text.Spannable;
|
||||||
import android.text.SpannableStringBuilder;
|
import android.text.SpannableStringBuilder;
|
||||||
import android.text.Spanned;
|
import android.text.Spanned;
|
||||||
|
@ -312,7 +312,7 @@ public class BubbleChat implements LinphoneChatMessage.LinphoneChatMessageListen
|
||||||
text = text.replaceFirst(link, "<a href=\"" + link + "\">" + linkWithoutScheme + "</a>");
|
text = text.replaceFirst(link, "<a href=\"" + link + "\">" + linkWithoutScheme + "</a>");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Html.fromHtml(text);
|
return Compatibility.fromHtml(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTextMessage() {
|
public String getTextMessage() {
|
||||||
|
|
Loading…
Reference in a new issue