From 17052d46a1c9185c2989f5cde4206c679da84a10 Mon Sep 17 00:00:00 2001
From: alision <alexandre.lision@savoirfairelinux.com>
Date: Mon, 22 Apr 2013 10:39:38 -0400
Subject: [PATCH] Added contact picture to ContactListFragment

---
 AndroidManifest.xml                           |   1 +
 bin/AndroidManifest.xml                       |   1 +
 res/drawable/ic_contact_picture.png           | Bin 0 -> 7422 bytes
 res/layout/item_contact.xml                   |  13 +-
 .../sflphone/adapters/CallElementAdapter.java |   6 -
 .../sflphone/client/CallActivity.java         |   3 +-
 .../sflphone/client/CallElementView.java      |   2 -
 .../client/receiver/CallListReceiver.java     |   4 +
 .../fragments/ButtonSectionFragment.java      |   4 +
 .../fragments/ContactListFragment.java        | 176 ++++++++----------
 .../sflphone/service/SipService.java          |  31 ++-
 11 files changed, 115 insertions(+), 126 deletions(-)
 create mode 100644 res/drawable/ic_contact_picture.png

diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 34dc33fb9..6c6345f51 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -45,6 +45,7 @@ as that of the covered work.
     <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.VIBRATE" />
 
     <application
         android:name=".client.SFLphoneApplication"
diff --git a/bin/AndroidManifest.xml b/bin/AndroidManifest.xml
index 34dc33fb9..6c6345f51 100644
--- a/bin/AndroidManifest.xml
+++ b/bin/AndroidManifest.xml
@@ -45,6 +45,7 @@ as that of the covered work.
     <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.VIBRATE" />
 
     <application
         android:name=".client.SFLphoneApplication"
diff --git a/res/drawable/ic_contact_picture.png b/res/drawable/ic_contact_picture.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a2bfde385b770deff8237c256c118c81effe5b5
GIT binary patch
literal 7422
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
a2_N{_IsP|+#tXr#5hf#{C|)jV;Qv2JieUr*

literal 0
HcmV?d00001

diff --git a/res/layout/item_contact.xml b/res/layout/item_contact.xml
index eed4505b5..423ab662b 100644
--- a/res/layout/item_contact.xml
+++ b/res/layout/item_contact.xml
@@ -45,24 +45,17 @@ as that of the covered work.
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true"
             android:layout_alignParentLeft="true"
-            android:layout_alignTop="@+id/button2"
             android:background="#00000000"
             android:drawableLeft="@drawable/call_pause"
             android:gravity="left|center_vertical"
             android:src="@drawable/call_pause"
             android:visibility="gone" />
-        <Button
-            android:id="@+id/button2"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentBottom="true"
-            android:layout_toRightOf="@+id/toggleButton1"
-            android:text="Button"
-            android:visibility="gone" />
+
         <ImageView
             android:id="@+id/photo"
             android:layout_width="70dp"
             android:layout_height="70dp"
+            android:scaleType="centerCrop"
             android:src="@drawable/box_border" />
         <TextView
             android:id="@+id/display_name"
@@ -70,9 +63,9 @@ as that of the covered work.
             android:layout_height="wrap_content"
             android:layout_alignParentTop="true"
             android:layout_toRightOf="@+id/photo"
+            
             android:paddingLeft="@dimen/padding_small"
             android:paddingTop="@dimen/padding_small"
-            android:text="Contact Name"
             android:textAppearance="?android:attr/textAppearanceMedium" />
         <TextView
             android:id="@+id/phones"
diff --git a/src/com/savoirfairelinux/sflphone/adapters/CallElementAdapter.java b/src/com/savoirfairelinux/sflphone/adapters/CallElementAdapter.java
index 5196cf894..35b694ffc 100644
--- a/src/com/savoirfairelinux/sflphone/adapters/CallElementAdapter.java
+++ b/src/com/savoirfairelinux/sflphone/adapters/CallElementAdapter.java
@@ -9,8 +9,6 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.TextView;
 
@@ -46,8 +44,6 @@ public class CallElementAdapter extends ArrayAdapter {
             // Hold the view objects in an object
             // so they don't need to be re-fetched
             entryView = new CallElementView();
-            entryView.toggleButton = (ImageButton) rowView.findViewById(R.id.toggleButton1);
-            entryView.button = (Button) rowView.findViewById(R.id.button2);
             entryView.photo = (ImageView) rowView.findViewById(R.id.photo);
             entryView.displayName = (TextView) rowView.findViewById(R.id.display_name);
             entryView.phones = (TextView) rowView.findViewById(R.id.phones);
@@ -75,8 +71,6 @@ public class CallElementAdapter extends ArrayAdapter {
      * ViewHolder Pattern
      *********************/
     public class CallElementView {
-        protected ImageButton toggleButton;
-        protected Button button;
         protected ImageView photo;
         protected TextView displayName;
         protected TextView phones;
diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index 3b0bfd5ab..273ef5caa 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -33,14 +33,13 @@ package com.savoirfairelinux.sflphone.client;
 
 import android.app.Activity;
 import android.content.BroadcastReceiver;
-import android.content.Context;
 import android.content.ComponentName;
+import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.IBinder;
-import android.os.RemoteException;
 import android.support.v4.content.LocalBroadcastManager;
 import android.util.Log;
 import android.view.View;
diff --git a/src/com/savoirfairelinux/sflphone/client/CallElementView.java b/src/com/savoirfairelinux/sflphone/client/CallElementView.java
index 1031e0953..be580dee4 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallElementView.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallElementView.java
@@ -42,8 +42,6 @@ import android.view.animation.DecelerateInterpolator;
 import android.view.animation.Interpolator;
 import android.widget.FrameLayout;
 
-import com.savoirfairelinux.sflphone.R;
-
 public class CallElementView extends FrameLayout {
     private ViewGroup contactCard = null;
     private ViewGroup callCard = null;
diff --git a/src/com/savoirfairelinux/sflphone/client/receiver/CallListReceiver.java b/src/com/savoirfairelinux/sflphone/client/receiver/CallListReceiver.java
index ddf4efa6f..5b1dc16bd 100644
--- a/src/com/savoirfairelinux/sflphone/client/receiver/CallListReceiver.java
+++ b/src/com/savoirfairelinux/sflphone/client/receiver/CallListReceiver.java
@@ -85,6 +85,10 @@ public class CallListReceiver extends BroadcastReceiver
         mHome = home;
     }
 
+    public CallListReceiver() {
+        // TODO Auto-generated constructor stub
+    }
+
     @Override
     public void onReceive(Context context, Intent intent)
     {
diff --git a/src/com/savoirfairelinux/sflphone/fragments/ButtonSectionFragment.java b/src/com/savoirfairelinux/sflphone/fragments/ButtonSectionFragment.java
index 02c72e58f..280f3dc63 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/ButtonSectionFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/ButtonSectionFragment.java
@@ -43,4 +43,8 @@ public class ButtonSectionFragment extends Fragment
 
         return view;
     }
+    
+    public void onClick(){
+        Log.i(TAG,"onClik");
+    }
 }
diff --git a/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
index 18e8043df..2cdca0504 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
@@ -77,15 +77,13 @@ import android.widget.SearchView.OnQueryTextListener;
 import android.widget.TextView;
 
 import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountSelectionSpinner;
 import com.savoirfairelinux.sflphone.client.SFLPhoneHomeActivity;
 import com.savoirfairelinux.sflphone.client.SFLphoneApplication;
 import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
 import com.savoirfairelinux.sflphone.model.SipCall;
 import com.savoirfairelinux.sflphone.service.ISipService;
 
-public class ContactListFragment extends ListFragment implements OnQueryTextListener, LoaderManager.LoaderCallbacks<Cursor>
-{
+public class ContactListFragment extends ListFragment implements OnQueryTextListener, LoaderManager.LoaderCallbacks<Cursor> {
     final String TAG = "ContactListFragment";
     ContactElementAdapter mAdapter;
     Activity mContext;
@@ -96,8 +94,7 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
     private AccountListReceiver mAccountList;
 
     // These are the Contacts rows that we will retrieve.
-    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] { Contacts._ID, Contacts.DISPLAY_NAME,
-                                                                       Contacts.PHOTO_ID, Contacts.LOOKUP_KEY };
+    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] { Contacts._ID, Contacts.DISPLAY_NAME, Contacts.PHOTO_ID, Contacts.LOOKUP_KEY };
     static final String[] CONTACTS_PHONES_PROJECTION = new String[] { Phone.NUMBER, Phone.TYPE };
     static final String[] CONTACTS_SIP_PROJECTION = new String[] { SipAddress.SIP_ADDRESS, SipAddress.TYPE };
 
@@ -112,21 +109,19 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
         Log.w(TAG, "onAttach() service=" + service + ", mAccountList=" + mAccountList);
     }
 
-    public static class InfosLoader implements Runnable
-    {
-        private View view;
+    public static class InfosLoader implements Runnable {
+        private ImageView view;
         private long cid;
         private ContentResolver cr;
+        private static final String TAG = InfosLoader.class.getSimpleName();
 
-        public InfosLoader(Context context, View element, long contact_id)
-        {
+        public InfosLoader(Context context, ImageView element, long contact_id) {
             cid = contact_id;
             cr = context.getContentResolver();
             view = element;
         }
 
-        public static Bitmap loadContactPhoto(ContentResolver cr, long id) 
-        {
+        public static Bitmap loadContactPhoto(ContentResolver cr, long id) {
             Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
             InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
             if (input == null) {
@@ -136,14 +131,11 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
         }
 
         @Override
-        public void run()
-        {
+        public void run() {
             final Bitmap photo_bmp = loadContactPhoto(cr, cid);
 
-            Cursor phones = cr.query(CommonDataKinds.Phone.CONTENT_URI,	
-                                        CONTACTS_PHONES_PROJECTION, CommonDataKinds.Phone.CONTACT_ID + " = ?",
-                                        new String[] { Long.toString(cid) },
-                                        null);
+            Cursor phones = cr.query(CommonDataKinds.Phone.CONTENT_URI, CONTACTS_PHONES_PROJECTION, CommonDataKinds.Phone.CONTACT_ID + " = ?",
+                    new String[] { Long.toString(cid) }, null);
 
             final List<String> numbers = new ArrayList<String>();
             while (phones.moveToNext()) {
@@ -154,28 +146,24 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
             phones.close();
 
             final Bitmap bmp = photo_bmp;
-            view.post(new Runnable()
-            {
+            view.post(new Runnable() {
                 @Override
-                public void run()
-                {
+                public void run() {
+                    view.setImageBitmap(bmp);
                 }
             });
         }
     }
 
-    public static class ContactElementAdapter extends CursorAdapter
-    {
+    public static class ContactElementAdapter extends CursorAdapter {
         private ExecutorService infos_fetcher = Executors.newCachedThreadPool();
-
-        public ContactElementAdapter(Context context, Cursor c)
-        {
+        private static final String TAG = ContactElementAdapter.class.getSimpleName();
+        public ContactElementAdapter(Context context, Cursor c) {
             super(context, c, 0);
         }
 
         @Override
-        public View newView(Context context, Cursor cursor, ViewGroup parent)
-        {
+        public View newView(Context context, Cursor cursor, ViewGroup parent) {
             LayoutInflater inflater = LayoutInflater.from(context);
             View v = inflater.inflate(R.layout.item_contact, parent, false);
             bindView(v, context, cursor);
@@ -183,35 +171,33 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
         }
 
         @Override
-        public void bindView(final View view, Context context, Cursor cursor)
-        {
+        public void bindView(final View view, Context context, Cursor cursor) {
             final long contact_id = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
             final String display_name = cursor.getString(cursor.getColumnIndex(Contacts.DISPLAY_NAME));
-            // final long photo_uri_string = cursor.getLong(cursor.getColumnIndex(Contacts.PHOTO_ID));
-            // final String photo_uri_string = cursor.getString(cursor.getColumnIndex(Contacts.PHOTO_THUMBNAIL_URI));
+            final long photo_id = cursor.getLong(cursor.getColumnIndex(Contacts.PHOTO_ID));
+            Log.i(TAG,"photo_id "+photo_id);
+//            final String photo_uri_thumb_string = cursor.getString(cursor.getColumnIndex(Contacts.PHOTO_THUMBNAIL_URI));
 
             TextView display_name_txt = (TextView) view.findViewById(R.id.display_name);
             display_name_txt.setText(display_name);
 
             ImageView photo_view = (ImageView) view.findViewById(R.id.photo);
-            photo_view.setVisibility(View.GONE);
+            // photo_view.setVisibility(View.GONE);
 
-            infos_fetcher.execute(new InfosLoader(context, view, contact_id));
+            if (photo_id != 0) {
+                infos_fetcher.execute(new InfosLoader(context, photo_view, contact_id));
+            } else {
+                photo_view.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_contact_picture));
+            }
         }
     };
 
-    public ContactListFragment()
-    {
-        super();
-    }
-
     @Override
-    public void onActivityCreated(Bundle savedInstanceState)
-    {
+    public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
         mContext = getActivity();
 
-        // In order to onCreateOptionsMenu be called 
+        // In order to onCreateOptionsMenu be called
         setHasOptionsMenu(true);
 
         mAdapter = new ContactElementAdapter(mContext, null);
@@ -224,7 +210,7 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
             @Override
             public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) {
                 Log.i(TAG, "On Long Click");
-                final CharSequence[] items = {"Make Call", "Send Message", "Add to Conference"};
+                final CharSequence[] items = { "Make Call", "Send Message", "Add to Conference" };
                 final SipCall.CallInfo info = new SipCall.CallInfo();
                 info.mDisplayName = (String) ((TextView) v.findViewById(R.id.display_name)).getText();
                 info.mPhone = (String) ((TextView) v.findViewById(R.id.phones)).getText();
@@ -234,30 +220,29 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
                 // FIXME
                 service = sflphoneApplication.getSipService();
                 AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
-                builder.setTitle("Action to perform with " + call.mCallInfo.mDisplayName)
-                      .setCancelable(true)
-                      .setItems(items, new DialogInterface.OnClickListener() {
-                          public void onClick(DialogInterface dialog, int item) {
-                              Log.i(TAG, "Selected " + items[item]);
-                              switch (item) {
-                                  case 0:
-                                      call.placeCallUpdateUi();
-                                      break;
-                                  case 1:
-                                      call.sendTextMessage();
-                                      // Need to hangup this call immediately since no way to do it after this action
-                                      call.notifyServiceHangup(service);
-                                      break;
-                                  case 2:
-                                      call.addToConference();
-                                      // Need to hangup this call immediately since no way to do it after this action
-                                      call.notifyServiceHangup(service);
-                                      break;
-                                  default:
-                                      break; 
-                              }
-                          }
-                });
+                builder.setTitle("Action to perform with " + call.mCallInfo.mDisplayName).setCancelable(true)
+                        .setItems(items, new DialogInterface.OnClickListener() {
+                            public void onClick(DialogInterface dialog, int item) {
+                                Log.i(TAG, "Selected " + items[item]);
+                                switch (item) {
+                                case 0:
+                                    call.placeCallUpdateUi();
+                                    break;
+                                case 1:
+                                    call.sendTextMessage();
+                                    // Need to hangup this call immediately since no way to do it after this action
+                                    call.notifyServiceHangup(service);
+                                    break;
+                                case 2:
+                                    call.addToConference();
+                                    // Need to hangup this call immediately since no way to do it after this action
+                                    call.notifyServiceHangup(service);
+                                    break;
+                                default:
+                                    break;
+                                }
+                            }
+                        });
                 AlertDialog alert = builder.create();
                 alert.show();
 
@@ -279,19 +264,17 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
     }
 
     @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
-    {
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View inflatedView = inflater.inflate(R.layout.frag_contact_list, container, false);
         return inflatedView;
     }
 
     @Override
-    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
-    {
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         // Place an action bar item for searching
         MenuItem item = menu.add("Search");
         item.setIcon(R.drawable.ic_menu_search);
-        
+
         item.setShowAsAction(MenuItemCompat.SHOW_AS_ACTION_IF_ROOM | MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
         SearchView sv = new SearchView(getActivity());
         sv.setOnQueryTextListener(this);
@@ -299,8 +282,7 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
     }
 
     @Override
-    public void onListItemClick(ListView l, View v, int position, long id)
-    {
+    public void onListItemClick(ListView l, View v, int position, long id) {
         // Insert desired behavior here.
         SipCall.CallInfo callInfo = new SipCall.CallInfo();
         callInfo.mDisplayName = (String) ((TextView) v.findViewById(R.id.display_name)).getText();
@@ -315,38 +297,39 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
         SipCall call = new SipCall(callInfo);
 
         // if(nbCallAfter > nbCallBefore)
-        //    call.placeCall();
+        // call.placeCall();
     }
 
     @Override
-    public boolean onQueryTextChange(String newText)
-    {
+    public boolean onQueryTextChange(String newText) {
         // Called when the action bar search text has changed. Update
         // the search filter, and restart the loader to do a new query
         // with this filter.
         String newFilter = !TextUtils.isEmpty(newText) ? newText : null;
         // Don't do anything if the filter hasn't actually changed.
         // Prefents restarting the loader when restoring state.
-        if (mCurFilter == null && newFilter == null) { return true; }
-        if (mCurFilter != null && mCurFilter.equals(newFilter)) { return true; }
+        if (mCurFilter == null && newFilter == null) {
+            return true;
+        }
+        if (mCurFilter != null && mCurFilter.equals(newFilter)) {
+            return true;
+        }
         mCurFilter = newFilter;
         getLoaderManager().restartLoader(0, null, this);
-        return true; 
+        return true;
     }
 
     @Override
-    public boolean onQueryTextSubmit(String query)
-    {
+    public boolean onQueryTextSubmit(String query) {
         // Return false to let the SearchView perform the default action
         return false;
     }
 
     @Override
-    public Loader<Cursor> onCreateLoader(int id, Bundle args)
-    {
+    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
         Uri baseUri;
 
-        if(mCurFilter != null) {
+        if (mCurFilter != null) {
             baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI, Uri.encode(mCurFilter));
         } else {
             baseUri = Contacts.CONTENT_URI;
@@ -354,28 +337,21 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
 
         // Now create and return a CursorLoader that will take care of
         // creating a Cursor for the data being displayed.
-        String select = "((" + Contacts.DISPLAY_NAME
-                                  + " NOTNULL) AND ("
-                                  + Contacts.HAS_PHONE_NUMBER
-                                  + "=1) AND ("
-                                  + Contacts.DISPLAY_NAME
-                                  + " != '' ))";
-
-        return new CursorLoader(getActivity(), baseUri, CONTACTS_SUMMARY_PROJECTION,
-                                    select, null, Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
+        String select = "((" + Contacts.DISPLAY_NAME + " NOTNULL) AND (" + Contacts.HAS_PHONE_NUMBER + "=1) AND (" + Contacts.DISPLAY_NAME
+                + " != '' ))";
+
+        return new CursorLoader(getActivity(), baseUri, CONTACTS_SUMMARY_PROJECTION, select, null, Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
     }
 
     @Override
-    public void onLoadFinished(Loader<Cursor> loader, Cursor data)
-    {
+    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
         // Swap the new cursor in.
         mAdapter.swapCursor(data);
     }
 
     @Override
-    public void onLoaderReset(Loader<Cursor> loader)
-    {
-        // Thi is called when the last Cursor provided to onLoadFinished 
+    public void onLoaderReset(Loader<Cursor> loader) {
+        // Thi is called when the last Cursor provided to onLoadFinished
         mAdapter.swapCursor(null);
     }
 }
diff --git a/src/com/savoirfairelinux/sflphone/service/SipService.java b/src/com/savoirfairelinux/sflphone/service/SipService.java
index e0600065a..ec1f0b6d1 100644
--- a/src/com/savoirfairelinux/sflphone/service/SipService.java
+++ b/src/com/savoirfairelinux/sflphone/service/SipService.java
@@ -24,26 +24,29 @@
 package com.savoirfairelinux.sflphone.service;
 
 import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
 
 import android.app.Service;
+import android.content.BroadcastReceiver;
+import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.os.Binder;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.IBinder;
 import android.os.Looper;
 import android.os.Message;
+import android.os.Vibrator;
+import android.support.v4.content.LocalBroadcastManager;
 import android.util.Log;
 import android.widget.Toast;
 
-import com.savoirfairelinux.sflphone.service.ManagerImpl;
 import com.savoirfairelinux.sflphone.account.AccountDetailsHandler;
 import com.savoirfairelinux.sflphone.client.SFLphoneApplication;
-import com.savoirfairelinux.sflphone.service.ISipService;
-
-import java.util.Map;
-import java.util.HashMap;
-import java.util.ArrayList;
+import com.savoirfairelinux.sflphone.client.receiver.CallListReceiver;
 
 public class SipService extends Service {
 
@@ -60,6 +63,7 @@ public class SipService extends Service {
     private ConfigurationManagerCallback configurationManagerCallback;
     private ManagerImpl managerImpl;
     private boolean isPjSipStackStarted = false;
+    public CallListReceiver mCallList;
     
 
     /* Implement public interface for the service */
@@ -250,6 +254,16 @@ public class SipService extends Service {
             });
         }
     };
+    private BroadcastReceiver IncomingReceiver = new BroadcastReceiver() {
+        
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            Log.i(TAG, "Received"+ intent.getAction());
+         // Get instance of Vibrator from current Context
+            Vibrator mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
+            mVibrator.vibrate(300);
+        }
+    };
 
     /**
      * Class used for the client Binder.  Because we know this service always
@@ -269,6 +283,11 @@ public class SipService extends Service {
         super.onCreate();
         sflphoneApp = (SFLphoneApplication) getApplication();
         sipServiceThread = new SipServiceThread();
+        mCallList = new CallListReceiver();
+        
+        IntentFilter callFilter = new IntentFilter(CallManagerCallBack.NEW_CALL_CREATED);
+        callFilter.addAction(CallManagerCallBack.INCOMING_CALL);
+        LocalBroadcastManager.getInstance(this).registerReceiver(IncomingReceiver , callFilter);
         getExecutor().execute(new StartRunnable());
     }
 
-- 
GitLab