blob: 58fb6dc4b1f7af30cff2f91871d01fd4b3e4ef74 [file] [log] [blame]
Alexandre Savard14323be2012-10-24 10:02:13 -04001/*
alisionb1763882013-06-18 17:30:51 -04002 * Copyright (C) 2004-2013 Savoir-Faire Linux Inc.
Alexandre Savard14323be2012-10-24 10:02:13 -04003 *
4 * Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
Adrien Béraud71b2f812013-04-26 18:51:02 +10005 * Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com>
alisionfde875f2013-05-28 17:01:54 -04006 * Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
Alexandre Savard14323be2012-10-24 10:02:13 -04007 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 *
22 * Additional permission under GNU GPL version 3 section 7:
23 *
24 * If you modify this program, or any covered work, by linking or
25 * combining it with the OpenSSL project's OpenSSL library (or a
26 * modified version of that library), containing parts covered by the
27 * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
28 * grants you additional permission to convey the resulting work.
29 * Corresponding Source for a non-source form of such a combination
30 * shall include the source code for the parts of OpenSSL used as well
31 * as that of the covered work.
32 */
33
34package com.savoirfairelinux.sflphone.client;
35
alision85704182013-05-29 15:23:03 -040036import java.util.HashMap;
Adrien Béraud33268882013-05-18 03:41:15 +100037
Alexandre Savard14323be2012-10-24 10:02:13 -040038import android.app.Activity;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040039import android.content.ComponentName;
alision17052d42013-04-22 10:39:38 -040040import android.content.Context;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040041import android.content.Intent;
alision84813a12013-05-27 17:40:39 -040042import android.content.IntentFilter;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040043import android.content.ServiceConnection;
alision55c36cb2013-06-14 14:57:38 -040044import android.net.Uri;
Alexandre Savard14323be2012-10-24 10:02:13 -040045import android.os.Bundle;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040046import android.os.IBinder;
alision85992112013-05-29 12:18:08 -040047import android.os.RemoteException;
alisionfde875f2013-05-28 17:01:54 -040048import android.support.v4.widget.SlidingPaneLayout;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040049import android.util.Log;
alisionfde875f2013-05-28 17:01:54 -040050import android.view.View;
Adrien Béraud33268882013-05-18 03:41:15 +100051import android.widget.Toast;
Alexandre Savard14323be2012-10-24 10:02:13 -040052
53import com.savoirfairelinux.sflphone.R;
alision84813a12013-05-27 17:40:39 -040054import com.savoirfairelinux.sflphone.fragments.CallFragment;
alisionfde875f2013-05-28 17:01:54 -040055import com.savoirfairelinux.sflphone.fragments.CallListFragment;
alision84813a12013-05-27 17:40:39 -040056import com.savoirfairelinux.sflphone.interfaces.CallInterface;
alision55c36cb2013-06-14 14:57:38 -040057import com.savoirfairelinux.sflphone.model.CallContact;
alisiondf1dac92013-06-27 17:35:53 -040058import com.savoirfairelinux.sflphone.model.Conference;
alisionf76de3b2013-04-16 15:35:22 -040059import com.savoirfairelinux.sflphone.model.SipCall;
alision85992112013-05-29 12:18:08 -040060import com.savoirfairelinux.sflphone.model.SipCall.state;
alisioncc7bb422013-06-06 15:31:39 -040061import com.savoirfairelinux.sflphone.receivers.CallReceiver;
alision84813a12013-05-27 17:40:39 -040062import com.savoirfairelinux.sflphone.service.CallManagerCallBack;
Alexandre Savard6d54bbc2012-10-24 11:04:23 -040063import com.savoirfairelinux.sflphone.service.ISipService;
64import com.savoirfairelinux.sflphone.service.SipService;
Adrien Béraudc9c424d2013-05-30 17:47:35 +100065import com.savoirfairelinux.sflphone.views.CallPaneLayout;
Alexandre Savard14323be2012-10-24 10:02:13 -040066
alisionfde875f2013-05-28 17:01:54 -040067public class CallActivity extends Activity implements CallInterface, CallFragment.Callbacks, CallListFragment.Callbacks {
alision55c36cb2013-06-14 14:57:38 -040068 static final String TAG = "CallActivity";
69 private ISipService service;
alision84813a12013-05-27 17:40:39 -040070
alision55c36cb2013-06-14 14:57:38 -040071 CallReceiver receiver;
alision85992112013-05-29 12:18:08 -040072
alision55c36cb2013-06-14 14:57:38 -040073 CallPaneLayout slidingPaneLayout;
Adrien Béraud33268882013-05-18 03:41:15 +100074
alision55c36cb2013-06-14 14:57:38 -040075 CallListFragment mCallsFragment;
76 CallFragment mCurrentCallFragment;
alisiondf1dac92013-06-27 17:35:53 -040077 private boolean fragIsChanging;
Alexandre Savard4f42ade2012-10-24 18:03:31 -040078
alision55c36cb2013-06-14 14:57:38 -040079 @Override
80 protected void onCreate(Bundle savedInstanceState) {
81 super.onCreate(savedInstanceState);
82 setContentView(R.layout.activity_call_layout);
Alexandre Savard4f42ade2012-10-24 18:03:31 -040083
alision55c36cb2013-06-14 14:57:38 -040084 receiver = new CallReceiver(this);
Adrien Béraud33268882013-05-18 03:41:15 +100085
alision55c36cb2013-06-14 14:57:38 -040086 mCallsFragment = new CallListFragment();
Adrien Béraud33268882013-05-18 03:41:15 +100087
alision55c36cb2013-06-14 14:57:38 -040088 getFragmentManager().beginTransaction().replace(R.id.calllist_pane, mCallsFragment).commit();
alision85992112013-05-29 12:18:08 -040089
alision55c36cb2013-06-14 14:57:38 -040090 slidingPaneLayout = (CallPaneLayout) findViewById(R.id.slidingpanelayout);
alisiondf1dac92013-06-27 17:35:53 -040091
alision55c36cb2013-06-14 14:57:38 -040092 slidingPaneLayout.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() {
alision84813a12013-05-27 17:40:39 -040093
alision55c36cb2013-06-14 14:57:38 -040094 @Override
95 public void onPanelSlide(View view, float offSet) {
96 }
alisionfde875f2013-05-28 17:01:54 -040097
alision55c36cb2013-06-14 14:57:38 -040098 @Override
99 public void onPanelOpened(View view) {
alisionfde875f2013-05-28 17:01:54 -0400100
alision55c36cb2013-06-14 14:57:38 -0400101 switch (view.getId()) {
102 case R.id.calllist_pane:
103 // getFragmentManager().findFragmentById(R.id.calllist_pane).setHasOptionsMenu(true);
104 // getFragmentManager().findFragmentById(R.id.ongoingcall_pane).setHasOptionsMenu(false);
105 break;
106 default:
107 break;
108 }
109 }
alisionfde875f2013-05-28 17:01:54 -0400110
alision55c36cb2013-06-14 14:57:38 -0400111 @Override
112 public void onPanelClosed(View view) {
alisionfde875f2013-05-28 17:01:54 -0400113
alision55c36cb2013-06-14 14:57:38 -0400114 switch (view.getId()) {
115 case R.id.ongoingcall_pane:
alisiondf1dac92013-06-27 17:35:53 -0400116 if (fragIsChanging) {
117 getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment).commit();
118
119 fragIsChanging = false;
alisionf2ae4362013-07-05 16:16:12 -0400120 } else if(mCurrentCallFragment != null && mCurrentCallFragment.getBubbleView() != null){
alisiondf1dac92013-06-27 17:35:53 -0400121 mCurrentCallFragment.getBubbleView().restartDrawing();
122 }
123
alision55c36cb2013-06-14 14:57:38 -0400124 break;
125 default:
126 break;
127 }
128 }
129 });
alisionfde875f2013-05-28 17:01:54 -0400130
alision55c36cb2013-06-14 14:57:38 -0400131 Intent intent = new Intent(this, SipService.class);
132 bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
alisiondf1dac92013-06-27 17:35:53 -0400133 slidingPaneLayout.setCoveredFadeColor(0xFFFF0000);
alision55c36cb2013-06-14 14:57:38 -0400134 }
alisiond45da712013-05-30 09:18:49 -0400135
alision55c36cb2013-06-14 14:57:38 -0400136 /* activity gets back to the foreground and user input */
137 @Override
138 protected void onResume() {
139 Log.i(TAG, "onResume");
140 IntentFilter intentFilter = new IntentFilter();
141 intentFilter.addAction(CallManagerCallBack.INCOMING_CALL);
142 intentFilter.addAction(CallManagerCallBack.INCOMING_TEXT);
143 intentFilter.addAction(CallManagerCallBack.CALL_STATE_CHANGED);
alisiondf1dac92013-06-27 17:35:53 -0400144 intentFilter.addAction(CallManagerCallBack.CONF_CREATED);
145 intentFilter.addAction(CallManagerCallBack.CONF_REMOVED);
146 intentFilter.addAction(CallManagerCallBack.CONF_CHANGED);
147 intentFilter.addAction(CallManagerCallBack.RECORD_STATE_CHANGED);
alision55c36cb2013-06-14 14:57:38 -0400148 registerReceiver(receiver, intentFilter);
149 super.onResume();
150 }
alisiond45da712013-05-30 09:18:49 -0400151
alision55c36cb2013-06-14 14:57:38 -0400152 /* activity no more in foreground */
153 @Override
154 protected void onPause() {
155 super.onPause();
alisiond45da712013-05-30 09:18:49 -0400156
alision55c36cb2013-06-14 14:57:38 -0400157 }
Alexandre Savard6d54bbc2012-10-24 11:04:23 -0400158
alision55c36cb2013-06-14 14:57:38 -0400159 @Override
160 protected void onDestroy() {
Alexandre Savard6d54bbc2012-10-24 11:04:23 -0400161
alision55c36cb2013-06-14 14:57:38 -0400162 unregisterReceiver(receiver);
163
164 try {
alision2cb99562013-05-30 17:02:20 -0400165 service.createNotification();
166 } catch (RemoteException e) {
167 Log.e(TAG, e.toString());
168 }
alision55c36cb2013-06-14 14:57:38 -0400169 // Log.i(TAG, "Destroying Call Activity for call " + mCall.getCallId());
170 // LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
171 try {
alision2cb99562013-05-30 17:02:20 -0400172 service.destroyNotification();
173 } catch (RemoteException e) {
174 Log.e(TAG, e.toString());
175 }
alision55c36cb2013-06-14 14:57:38 -0400176 unbindService(mConnection);
Adrien Béraud33268882013-05-18 03:41:15 +1000177
alision55c36cb2013-06-14 14:57:38 -0400178 super.onDestroy();
179 }
Adrien Béraud33268882013-05-18 03:41:15 +1000180
alision55c36cb2013-06-14 14:57:38 -0400181 /** Defines callbacks for service binding, passed to bindService() */
182 private ServiceConnection mConnection = new ServiceConnection() {
183 @Override
184 public void onServiceConnected(ComponentName className, IBinder binder) {
185 service = ISipService.Stub.asInterface(binder);
alisiondf1dac92013-06-27 17:35:53 -0400186
alision55c36cb2013-06-14 14:57:38 -0400187 mCurrentCallFragment = new CallFragment();
188 Uri u = getIntent().getData();
189 if (u != null) {
190 CallContact c = CallContact.ContactBuilder.buildUnknownContact(u.getSchemeSpecificPart());
191 try {
192 service.destroyNotification();
alision907bde72013-06-20 14:40:37 -0400193 SipCall call = SipCall.SipCallBuilder.getInstance().startCallCreation().setContact(c)
alision55c36cb2013-06-14 14:57:38 -0400194 .setAccountID(service.getAccountList().get(1).toString()).setCallType(SipCall.state.CALL_TYPE_OUTGOING).build();
alisiondf1dac92013-06-27 17:35:53 -0400195 Conference tmp = new Conference("-1");
196 tmp.getParticipants().add(call);
alision55c36cb2013-06-14 14:57:38 -0400197 Bundle b = new Bundle();
alisiondf1dac92013-06-27 17:35:53 -0400198 b.putParcelable("conference", tmp);
alision1005ba12013-06-19 13:52:44 -0400199 Log.i(TAG, "Arguments set");
alision55c36cb2013-06-14 14:57:38 -0400200 mCurrentCallFragment.setArguments(b);
201 } catch (RemoteException e) {
alision55c36cb2013-06-14 14:57:38 -0400202 e.printStackTrace();
203 } catch (Exception e) {
alision55c36cb2013-06-14 14:57:38 -0400204 e.printStackTrace();
205 }
alision55c36cb2013-06-14 14:57:38 -0400206 } else {
alisiondf1dac92013-06-27 17:35:53 -0400207 if (getIntent().getBooleanExtra("resuming", false)) {
208
209 Bundle b = new Bundle();
210 try {
211 b.putParcelable("conference", (Conference) service.getCurrentCall());
212 mCurrentCallFragment.setArguments(b);
213 } catch (RemoteException e) {
214 e.printStackTrace();
215 }
216 } else {
217 mCurrentCallFragment.setArguments(getIntent().getExtras());
218 }
219
alision55c36cb2013-06-14 14:57:38 -0400220 }
Alexandre Savard6d54bbc2012-10-24 11:04:23 -0400221
alision55c36cb2013-06-14 14:57:38 -0400222 slidingPaneLayout.setCurFragment(mCurrentCallFragment);
223 getIntent().getExtras();
224 mCallsFragment.update();
225 getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment).commit();
alisiond8c83882013-05-17 17:00:42 -0400226
alision55c36cb2013-06-14 14:57:38 -0400227 }
Adrien Béraud6bbce912013-05-24 00:48:13 +1000228
alision55c36cb2013-06-14 14:57:38 -0400229 @Override
230 public void onServiceDisconnected(ComponentName arg0) {
231 }
232 };
Adrien Béraud6bbce912013-05-24 00:48:13 +1000233
alision55c36cb2013-06-14 14:57:38 -0400234 @Override
235 public void incomingCall(Intent call) {
236 Toast.makeText(this, "New Call incoming", Toast.LENGTH_LONG).show();
Alexandre Savarde41f5212012-10-26 14:23:50 -0400237
alision55c36cb2013-06-14 14:57:38 -0400238 mCallsFragment.update();
Alexandre Savarddf544262012-10-25 14:24:08 -0400239
alision55c36cb2013-06-14 14:57:38 -0400240 }
alision84813a12013-05-27 17:40:39 -0400241
alision55c36cb2013-06-14 14:57:38 -0400242 @Override
243 public void callStateChanged(Intent callState) {
alision84813a12013-05-27 17:40:39 -0400244
alision55c36cb2013-06-14 14:57:38 -0400245 Bundle b = callState.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate");
246 processCallStateChangedSignal(b.getString("CallID"), b.getString("State"));
alision84813a12013-05-27 17:40:39 -0400247
alision55c36cb2013-06-14 14:57:38 -0400248 }
alision84813a12013-05-27 17:40:39 -0400249
alision55c36cb2013-06-14 14:57:38 -0400250 public void processCallStateChangedSignal(String callID, String newState) {
251 /*
252 * Bundle bundle = intent.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate"); String callID = bundle.getString("CallID"); String
253 * newState = bundle.getString("State");
254 */
255 // CallFragment fr = mCurrentCallFragment;
alision84813a12013-05-27 17:40:39 -0400256
alision55c36cb2013-06-14 14:57:38 -0400257 mCallsFragment.update();
alision84813a12013-05-27 17:40:39 -0400258
alision465ceba2013-07-04 09:24:30 -0400259 if(mCurrentCallFragment != null)
alision55c36cb2013-06-14 14:57:38 -0400260 mCurrentCallFragment.changeCallState(callID, newState);
Adrien Béraud29556042013-04-26 17:35:43 +1000261
alision55c36cb2013-06-14 14:57:38 -0400262 try {
alisiondf1dac92013-06-27 17:35:53 -0400263 HashMap<String, SipCall> callMap = (HashMap<String, SipCall>) service.getCallList();
264 HashMap<String, Conference> confMap = (HashMap<String, Conference>) service.getConferenceList();
alision34673e62013-06-25 14:40:07 -0400265 if (callMap.size() == 0 && confMap.size() == 0) {
266
267 finish();
alision55c36cb2013-06-14 14:57:38 -0400268 }
269 } catch (RemoteException e) {
270 Log.e(TAG, e.toString());
271 }
Adrien Béraud29556042013-04-26 17:35:43 +1000272
alision55c36cb2013-06-14 14:57:38 -0400273 Log.w(TAG, "processCallStateChangedSignal " + newState);
Adrien Béraud71b2f812013-04-26 18:51:02 +1000274
alision55c36cb2013-06-14 14:57:38 -0400275 }
276
277 @Override
278 public void incomingText(Intent msg) {
279 Bundle b = msg.getBundleExtra("com.savoirfairelinux.sflphone.service.newtext");
280
alisiona2a2da12013-06-05 15:58:39 -0400281 Toast.makeText(this, b.getString("From") + " : " + b.getString("Msg"), Toast.LENGTH_LONG).show();
Adrien Béraud71b2f812013-04-26 18:51:02 +1000282
alision55c36cb2013-06-14 14:57:38 -0400283 }
alision7f18fc82013-05-01 09:37:33 -0400284
alision55c36cb2013-06-14 14:57:38 -0400285 @Override
286 public ISipService getService() {
287 return service;
288 }
alision04a00182013-05-10 17:05:29 -0400289
alision55c36cb2013-06-14 14:57:38 -0400290 @Override
alisiondf1dac92013-06-27 17:35:53 -0400291 public void onCallSelected(Conference conf) {
alision85992112013-05-29 12:18:08 -0400292
alisionf2ae4362013-07-05 16:16:12 -0400293 if(mCurrentCallFragment == null || mCurrentCallFragment.getBubbleView() == null){
alisiondf1dac92013-06-27 17:35:53 -0400294 return;
295 }
296 mCurrentCallFragment.getBubbleView().stopThread();
alision55c36cb2013-06-14 14:57:38 -0400297 mCurrentCallFragment = new CallFragment();
298 Bundle b = new Bundle();
alision34673e62013-06-25 14:40:07 -0400299
alisiondf1dac92013-06-27 17:35:53 -0400300 b.putParcelable("conference", conf);
alision55c36cb2013-06-14 14:57:38 -0400301 mCurrentCallFragment.setArguments(b);
alision85992112013-05-29 12:18:08 -0400302
alisiondf1dac92013-06-27 17:35:53 -0400303 // if (calls.size() == 1) {
304 // onCallResumed(calls.get(0));
305 // }
306
alision55c36cb2013-06-14 14:57:38 -0400307 slidingPaneLayout.setCurFragment(mCurrentCallFragment);
308 slidingPaneLayout.closePane();
alisiondf1dac92013-06-27 17:35:53 -0400309 fragIsChanging = true;
alision85992112013-05-29 12:18:08 -0400310
alision55c36cb2013-06-14 14:57:38 -0400311 }
alision85992112013-05-29 12:18:08 -0400312
alision55c36cb2013-06-14 14:57:38 -0400313 @Override
314 public void callContact(SipCall call) {
315 try {
316 service.placeCall(call);
317 } catch (RemoteException e) {
318 Log.e(TAG, "Cannot call service method", e);
319 }
alision85992112013-05-29 12:18:08 -0400320
alision55c36cb2013-06-14 14:57:38 -0400321 }
alision85992112013-05-29 12:18:08 -0400322
alision55c36cb2013-06-14 14:57:38 -0400323 @Override
324 public void onCallAccepted(SipCall call) {
325 int callState = call.getCallStateInt();
326 if (callState != state.CALL_STATE_RINGING && callState != state.CALL_STATE_NONE) {
327 return;
328 }
alision85992112013-05-29 12:18:08 -0400329
alision55c36cb2013-06-14 14:57:38 -0400330 try {
331 service.accept(call.getCallId());
332 } catch (RemoteException e) {
333 Log.e(TAG, "Cannot call service method", e);
334 }
alision85992112013-05-29 12:18:08 -0400335
alision55c36cb2013-06-14 14:57:38 -0400336 }
alision85992112013-05-29 12:18:08 -0400337
alision55c36cb2013-06-14 14:57:38 -0400338 @Override
339 public void onCallRejected(SipCall call) {
340 try {
341 if (call.getCallStateInt() == state.CALL_STATE_RINGING) {
342 service.refuse(call.getCallId());
343 return;
344 }
345 } catch (RemoteException e) {
346 Log.e(TAG, "Cannot call service method", e);
347 }
348 }
alision85992112013-05-29 12:18:08 -0400349
alision55c36cb2013-06-14 14:57:38 -0400350 @Override
351 public void onCallEnded(SipCall call) {
352 try {
353 if (call.getCallStateInt() == state.CALL_STATE_NONE || call.getCallStateInt() == state.CALL_STATE_CURRENT
354 || call.getCallStateInt() == state.CALL_STATE_HOLD) {
355 service.hangUp(call.getCallId());
356 return;
alision85992112013-05-29 12:18:08 -0400357
alision55c36cb2013-06-14 14:57:38 -0400358 } else if (call.getCallStateInt() == state.CALL_STATE_RINGING) {
359 if (call.getCallType() == state.CALL_TYPE_INCOMING) {
360 service.refuse(call.getCallId());
361 return;
362 } else if (call.getCallType() == state.CALL_TYPE_OUTGOING) {
363 service.hangUp(call.getCallId());
364 return;
365 }
366 }
367 } catch (RemoteException e) {
368 Log.e(TAG, "Cannot call service method", e);
369 }
370 }
alision85992112013-05-29 12:18:08 -0400371
alision55c36cb2013-06-14 14:57:38 -0400372 @Override
373 public void onCallSuspended(SipCall call) {
374 try {
375 if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
376 service.hold(call.getCallId());
377 return;
378 }
379 } catch (RemoteException e) {
380 Log.e(TAG, "Cannot call service method", e);
381 }
382 }
alision85992112013-05-29 12:18:08 -0400383
alision55c36cb2013-06-14 14:57:38 -0400384 @Override
385 public void onCallResumed(SipCall call) {
386 try {
387 if (call.getCallStateInt() == state.CALL_STATE_HOLD) {
388 service.unhold(call.getCallId());
389 return;
390 }
391 } catch (RemoteException e) {
392 Log.e(TAG, "Cannot call service method", e);
393 }
alision85992112013-05-29 12:18:08 -0400394
alision55c36cb2013-06-14 14:57:38 -0400395 }
alision85992112013-05-29 12:18:08 -0400396
alision55c36cb2013-06-14 14:57:38 -0400397 @Override
398 public void onCalltransfered(SipCall call, String to) {
399 try {
400 if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
401 service.transfer(call.getCallId(), to);
402 }
403 } catch (RemoteException e) {
404 Log.e(TAG, "Cannot call service method", e);
405 }
alision85992112013-05-29 12:18:08 -0400406
alision55c36cb2013-06-14 14:57:38 -0400407 }
alision85992112013-05-29 12:18:08 -0400408
alision55c36cb2013-06-14 14:57:38 -0400409 @Override
410 public void onRecordCall(SipCall call) {
411 try {
alisiondf1dac92013-06-27 17:35:53 -0400412
413 // service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath());
alision55c36cb2013-06-14 14:57:38 -0400414 Log.w(TAG, "Recording path" + service.getRecordPath());
415 service.setRecordingCall(call.getCallId());
alisiondf1dac92013-06-27 17:35:53 -0400416
alision55c36cb2013-06-14 14:57:38 -0400417 } catch (RemoteException e) {
418 Log.e(TAG, "Cannot call service method", e);
419 }
alision85992112013-05-29 12:18:08 -0400420
alision55c36cb2013-06-14 14:57:38 -0400421 }
alision85992112013-05-29 12:18:08 -0400422
alision55c36cb2013-06-14 14:57:38 -0400423 @Override
424 public void onBackPressed() {
425 super.onBackPressed();
426 Intent launchHome = new Intent(this, SFLPhoneHomeActivity.class);
427 launchHome.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
428 startActivity(launchHome);
429 }
alision85992112013-05-29 12:18:08 -0400430
alision55c36cb2013-06-14 14:57:38 -0400431 @Override
432 public void onSendMessage(SipCall call, String msg) {
433 try {
434 if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
435 service.sendTextMessage(call.getCallId(), msg, "Me");
436 }
437 } catch (RemoteException e) {
438 Log.e(TAG, "Cannot call service method", e);
439 }
alisiond45da712013-05-30 09:18:49 -0400440
alision55c36cb2013-06-14 14:57:38 -0400441 }
alisiond45da712013-05-30 09:18:49 -0400442
alision806e18e2013-06-21 15:30:17 -0400443 @Override
444 public void confCreated(Intent intent) {
445 mCallsFragment.update();
alision34673e62013-06-25 14:40:07 -0400446
alision806e18e2013-06-21 15:30:17 -0400447 }
448
449 @Override
450 public void confRemoved(Intent intent) {
451 mCallsFragment.update();
452 }
453
454 @Override
455 public void confChanged(Intent intent) {
456 mCallsFragment.update();
457 }
458
459 @Override
460 public void onCallsTerminated() {
alisiondf1dac92013-06-27 17:35:53 -0400461
462 }
463
464 @Override
465 public void recordingChanged(Intent intent) {
466 mCallsFragment.update();
467 }
468
469 @Override
470 public void replaceCurrentCallDisplayed() {
471 mCurrentCallFragment.getBubbleView().stopThread();
472 getFragmentManager().beginTransaction().remove(mCurrentCallFragment).commit();
alision465ceba2013-07-04 09:24:30 -0400473 mCurrentCallFragment = null;
alision34673e62013-06-25 14:40:07 -0400474
alision806e18e2013-06-21 15:30:17 -0400475 }
476
Alexandre Savard14323be2012-10-24 10:02:13 -0400477}