Display contacts regulary during fetch + fixed warnings

This commit is contained in:
Sylvain Berfini 2017-01-10 10:49:56 +01:00
parent afd12250bf
commit 49c98c9ebd
12 changed files with 118 additions and 101 deletions

View file

@ -21,7 +21,6 @@ package org.linphone;
import java.util.ArrayList;
import java.util.List;
import org.linphone.compatibility.Compatibility;
import org.linphone.core.LinphoneAddress;
import org.linphone.core.LinphoneCall;
import org.linphone.core.LinphoneCall.State;
@ -32,12 +31,9 @@ import org.linphone.mediastream.Log;
import org.linphone.ui.LinphoneSliders.LinphoneSliderTriggered;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.support.v4.app.ActivityCompat;
import android.view.KeyEvent;
import android.view.MotionEvent;
@ -88,8 +84,6 @@ public class CallIncomingActivity extends LinphoneGenericActivity implements Lin
int flags = WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON;
getWindow().addFlags(flags);
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
final int screenWidth = getResources().getDisplayMetrics().widthPixels;
acceptUnlock = (LinearLayout) findViewById(R.id.acceptUnlock);

View file

@ -30,7 +30,6 @@ import org.linphone.core.Reason;
import org.linphone.mediastream.Log;
import android.Manifest;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;

View file

@ -30,7 +30,6 @@ import org.linphone.mediastream.Log;
import android.app.Dialog;
import android.app.Fragment;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.ContextMenu;
@ -228,7 +227,8 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
@Override
public void onContactsUpdated() {
hideAndDisplayMessageIfNoChat();
ChatListAdapter adapter = (ChatListAdapter)chatList.getAdapter();
adapter.notifyDataSetChanged();
}
@Override

View file

@ -27,7 +27,6 @@ import java.util.Map;
import android.app.Dialog;
import android.app.Fragment;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
@ -411,7 +410,15 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O
@Override
public void onContactsUpdated() {
invalidate();
ContactsListAdapter adapter = (ContactsListAdapter)contactsList.getAdapter();
contactsList.setFastScrollEnabled(false);
if (onlyDisplayLinphoneContacts) {
adapter.updateDataSet(ContactsManager.getInstance().getSIPContacts());
} else {
adapter.updateDataSet(ContactsManager.getInstance().getContacts());
}
contactsList.setFastScrollEnabled(true);
contactsFetchInProgress.setVisibility(View.GONE);
}
public void invalidate() {
@ -452,6 +459,10 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O
Map<String, Integer>map = new LinkedHashMap<String, Integer>();
ContactsListAdapter(List<LinphoneContact> contactsList) {
updateDataSet(contactsList);
}
public void updateDataSet(List<LinphoneContact> contactsList) {
contacts = contactsList;
map = new LinkedHashMap<String, Integer>();
@ -471,6 +482,8 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O
sectionsList = new ArrayList<String>(map.keySet());
sections = new String[sectionsList.size()];
sectionsList.toArray(sections);
notifyDataSetChanged();
}
public int getCount() {

View file

@ -40,6 +40,7 @@ import android.accounts.AccountManager;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.database.Cursor;
import android.database.MatrixCursor;
@ -58,6 +59,7 @@ interface ContactsUpdatedListener {
}
public class ContactsManager extends ContentObserver {
public static int CONTACTS_STEP = 15;
private static ContactsManager instance;
private List<LinphoneContact> contacts, sipContacts;
private boolean preferLinphoneContacts = false, isContactPresenceDisabled = true, hasContactAccess = false;
@ -180,7 +182,8 @@ public class ContactsManager extends ContentObserver {
if (context == null)
return false;
int contacts = context.getPackageManager().checkPermission(android.Manifest.permission.READ_CONTACTS, context.getPackageName());
return contacts == context.getPackageManager().PERMISSION_GRANTED && !context.getResources().getBoolean(R.bool.force_use_of_linphone_friends);
context.getPackageManager();
return contacts == PackageManager.PERMISSION_GRANTED && !context.getResources().getBoolean(R.bool.force_use_of_linphone_friends);
}
public void setLinphoneContactsPrefered(boolean isPrefered) {
@ -217,7 +220,7 @@ public class ContactsManager extends ContentObserver {
initializeContactManager(context, contentResolver);
}
public LinphoneContact findContactFromAddress(LinphoneAddress address) {
public synchronized LinphoneContact findContactFromAddress(LinphoneAddress address) {
String sipUri = address.asStringUriOnly();
String username = address.getUserName();
@ -251,7 +254,7 @@ public class ContactsManager extends ContentObserver {
return null;
}
public LinphoneContact findContactFromPhoneNumber(String phoneNumber) {
public synchronized LinphoneContact findContactFromPhoneNumber(String phoneNumber) {
LinphoneContact cache = contactsCache.get(phoneNumber);
if (cache != null) {
if (cache == contactNotFound) return null;
@ -355,9 +358,17 @@ public class ContactsManager extends ContentObserver {
}
}
int i = 0;
for (LinphoneContact contact : contacts) {
// This will only get name & picture informations to be able to quickly display contacts list
contact.minimalRefresh();
i++;
if (i == CONTACTS_STEP) {
i = 0;
publishProgress(contacts);
}
}
Collections.sort(contacts);
@ -384,9 +395,9 @@ public class ContactsManager extends ContentObserver {
return contacts;
}
protected void onProgressUpdate(List<LinphoneContact>... result) {
contactsCache.clear();
protected synchronized void onProgressUpdate(List<LinphoneContact>... result) {
setContacts(result[0]);
contactsCache.clear();
for (ContactsUpdatedListener listener : contactsUpdatedListeners) {
listener.onContactsUpdated();
}

View file

@ -1,14 +1,14 @@
package org.linphone;
import org.linphone.core.LinphoneCore;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.mediastream.Log;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.PowerManager;
import org.linphone.core.LinphoneCore;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.mediastream.Log;
/*
* Purpose of this receiver is to disable keep alives when device is on idle
* */
@ -24,7 +24,7 @@ public class DozeReceiver extends android.content.BroadcastReceiver {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc == null) return;
pm = (PowerManager) context.getSystemService(context.POWER_SERVICE);
pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
boolean dozeM = pm.isDeviceIdleMode();
Log.i("[DozeReceiver] Idle Mode: " + dozeM);

View file

@ -30,10 +30,9 @@ import org.linphone.core.LinphoneCallLog.CallStatus;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@ -222,7 +221,8 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
@Override
public void onContactsUpdated() {
historyList.setAdapter(new CallHistoryAdapter(getActivity().getApplicationContext()));
CallHistoryAdapter adapter = (CallHistoryAdapter)historyList.getAdapter();
adapter.notifyDataSetChanged();
}
@Override

View file

@ -18,35 +18,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.linphone;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Build;
import android.os.Handler;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.Vibrator;
import android.preference.CheckBoxPreference;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import static android.media.AudioManager.MODE_RINGTONE;
import static android.media.AudioManager.STREAM_RING;
import static android.media.AudioManager.STREAM_VOICE_CALL;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import org.linphone.assistant.AssistantActivity;
import org.linphone.core.CallDirection;
@ -91,23 +79,35 @@ import org.linphone.mediastream.video.capture.hwconf.Hacks;
import org.linphone.tools.H264Helper;
import org.linphone.tools.OpenH264DownloadHelper;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import static android.media.AudioManager.MODE_RINGTONE;
import static android.media.AudioManager.STREAM_RING;
import static android.media.AudioManager.STREAM_VOICE_CALL;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Build;
import android.os.Handler;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.Vibrator;
import android.preference.CheckBoxPreference;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
/**
*
@ -193,7 +193,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
mPendingChatFileMessage = new ArrayList<LinphoneChatMessage>();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
dozeModeEnabled = ((PowerManager)c.getSystemService(c.POWER_SERVICE)).isDeviceIdleMode();
dozeModeEnabled = ((PowerManager)c.getSystemService(Context.POWER_SERVICE)).isDeviceIdleMode();
} else {
dozeModeEnabled = false;
}

View file

@ -42,7 +42,6 @@ import java.util.Locale;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.linphone.assistant.AssistantActivity;
import org.linphone.core.DialPlan;
import org.linphone.core.LinphoneAccountCreator;
import org.linphone.core.LinphoneAddress;
@ -58,7 +57,6 @@ import org.linphone.mediastream.video.capture.hwconf.Hacks;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;

View file

@ -22,7 +22,6 @@ import java.util.Timer;
import java.util.TimerTask;
import org.linphone.assistant.AssistantActivity;
import org.linphone.core.LinphoneAccountCreator;
import org.linphone.core.LinphoneCall;
import org.linphone.core.LinphoneCallParams;
import org.linphone.core.LinphoneCallStats;
@ -442,6 +441,7 @@ public class StatusFragment extends Fragment {
}
}
@SuppressWarnings("deprecation")
private void formatText(TextView tv, String name, String value) {
tv.setText(Html.fromHtml("<b>" + name + " </b>" + value));
}

View file

@ -18,21 +18,17 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.*;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.linphone.LinphoneActivity;
import org.linphone.LinphoneLauncherActivity;
import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences;
import org.linphone.LinphonePreferences.AccountBuilder;
import org.linphone.LinphoneService;
import org.linphone.LinphoneUtils;
import org.linphone.LinphonePreferences.AccountBuilder;
import org.linphone.R;
import org.linphone.StatusFragment;
import org.linphone.core.DialPlan;
@ -51,10 +47,12 @@ import org.linphone.tools.OpenH264DownloadHelper;
import android.Manifest;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
@ -67,14 +65,18 @@ import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
/**
* @author Sylvain Berfini

View file

@ -17,6 +17,18 @@ 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.util.Locale;
import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences;
import org.linphone.LinphoneUtils;
import org.linphone.R;
import org.linphone.compatibility.Compatibility;
import org.linphone.core.DialPlan;
import org.linphone.core.LinphoneAccountCreator;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.core.LinphoneProxyConfig;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.Context;
@ -38,18 +50,6 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences;
import org.linphone.LinphoneUtils;
import org.linphone.R;
import org.linphone.compatibility.Compatibility;
import org.linphone.core.DialPlan;
import org.linphone.core.LinphoneAccountCreator;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.core.LinphoneProxyConfig;
import java.util.Locale;
/**
* @author Sylvain Berfini
*/
@ -62,7 +62,7 @@ public class LinphoneLoginFragment extends Fragment implements CompoundButton.On
private Boolean recoverAccount;
private LinphoneAccountCreator accountCreator;
private int countryCode;
private String username, phone, dialcode;
private String phone, dialcode;
private ImageView phoneNumberInfo;
@Override