blob: e3ac34fa09e8e38cfbd33867759054911ded8f88 [file] [log] [blame]
alisioncc7bb422013-06-06 15:31:39 -04001package com.savoirfairelinux.sflphone.receivers;
alision2cb99562013-05-30 17:02:20 -04002
3import android.content.BroadcastReceiver;
4import android.content.Context;
5import android.content.Intent;
6import android.os.Bundle;
7import android.os.Vibrator;
8import android.util.Log;
9
10import com.savoirfairelinux.sflphone.interfaces.CallInterface;
11import com.savoirfairelinux.sflphone.model.CallContact;
12import com.savoirfairelinux.sflphone.model.SipCall;
13import com.savoirfairelinux.sflphone.service.CallManagerCallBack;
14import com.savoirfairelinux.sflphone.service.ConfigurationManagerCallback;
15import com.savoirfairelinux.sflphone.service.SipService;
16
17public class IncomingReceiver extends BroadcastReceiver{
18
alision58356b72013-06-03 17:13:36 -040019 static final String TAG = IncomingReceiver.class.getSimpleName();
alision2cb99562013-05-30 17:02:20 -040020
21 SipService callback;
22
23 public IncomingReceiver(SipService client){
24 callback = client;
25 }
26
27 @Override
28 public void onReceive(Context context, Intent intent) {
29
30 if (intent.getAction().contentEquals(ConfigurationManagerCallback.ACCOUNT_STATE_CHANGED)) {
31 Log.i(TAG, "Received" + intent.getAction());
alision58356b72013-06-03 17:13:36 -040032 callback.sendBroadcast(intent);
alision2cb99562013-05-30 17:02:20 -040033 } else if (intent.getAction().contentEquals(ConfigurationManagerCallback.ACCOUNTS_CHANGED)) {
34 Log.i(TAG, "Received" + intent.getAction());
alision58356b72013-06-03 17:13:36 -040035 callback.sendBroadcast(intent);
alision2cb99562013-05-30 17:02:20 -040036 } else if (intent.getAction().contentEquals(CallManagerCallBack.INCOMING_TEXT)) {
37 Log.i(TAG, "Received" + intent.getAction());
38 callback.sendBroadcast(intent);
39 } else if (intent.getAction().contentEquals(CallManagerCallBack.INCOMING_CALL)) {
40 Bundle b = intent.getBundleExtra("com.savoirfairelinux.sflphone.service.newcall");
41
42 SipCall.SipCallBuilder callBuilder = SipCall.SipCallBuilder.getInstance();
43 callBuilder.startCallCreation(b.getString("CallID")).setAccountID(b.getString("AccountID"))
44 .setCallState(SipCall.state.CALL_STATE_RINGING).setCallType(SipCall.state.CALL_TYPE_INCOMING);
alision907bde72013-06-20 14:40:37 -040045 callBuilder.setContact(CallContact.ContactBuilder.buildUnknownContact(b.getString("From")));
alision2cb99562013-05-30 17:02:20 -040046
47 Intent toSend = new Intent(CallManagerCallBack.INCOMING_CALL);
48 try {
49 SipCall newCall = callBuilder.build();
50 toSend.putExtra("newcall", newCall);
51 callback.getCurrent_calls().put(newCall.getCallId(), newCall);
52 callback.sendBroadcast(toSend);
53 } catch (Exception e) {
54 Log.e(TAG, e.toString());
55 }
56
57 } else if (intent.getAction().contentEquals(CallManagerCallBack.CALL_STATE_CHANGED)) {
58
59 Bundle b = intent.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate");
60 String newState = b.getString("State");
61 if (newState.equals("INCOMING")) {
62 callback.getCurrent_calls().get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_INCOMING);
63 } else if (newState.equals("RINGING")) {
64 callback.getCurrent_calls().get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_RINGING);
65 } else if (newState.equals("CURRENT")) {
66 callback.getCurrent_calls().get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_CURRENT);
67 } else if (newState.equals("HUNGUP")) {
68 callback.getCurrent_calls().remove(b.getString("CallID"));
69 } else if (newState.equals("BUSY")) {
70 callback.getCurrent_calls().remove(b.getString("CallID"));
71 } else if (newState.equals("FAILURE")) {
72 callback.getCurrent_calls().remove(b.getString("CallID"));
73 } else if (newState.equals("HOLD")) {
74 callback.getCurrent_calls().get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_HOLD);
75 } else if (newState.equals("UNHOLD")) {
76 callback.getCurrent_calls().get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_CURRENT);
77 } else {
78 callback.getCurrent_calls().get(b.getString("CallID")).setCallState(SipCall.state.CALL_STATE_NONE);
79 }
80
81 callback.sendBroadcast(intent);
82 } else if (intent.getAction().contentEquals(CallManagerCallBack.NEW_CALL_CREATED)) {
83 Log.i(TAG, "Received" + intent.getAction());
84 }
85
86 }
87}