diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java index 925d8598dbab510bf0b7687bcc37bc0603bd2c4e..6613a61e81401d5389dc3cee2c5a19c31285af1a 100644 --- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java +++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java @@ -32,16 +32,71 @@ package com.savoirfairelinux.sflphone.client; import android.app.Activity; +import android.content.Context; +import android.content.ComponentName; +import android.content.Intent; +import android.content.ServiceConnection; import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import android.util.Log; +import android.view.View; +import android.view.View.OnClickListener; import com.savoirfairelinux.sflphone.R; +import com.savoirfairelinux.sflphone.client.SipCall; +import com.savoirfairelinux.sflphone.service.ISipService; +import com.savoirfairelinux.sflphone.service.SipService; -public class CallActivity extends Activity +public class CallActivity extends Activity implements OnClickListener { + static final String TAG = "CallActivity"; + private ISipService service; + private SipCall mCall; + + public void CallActivity(SipCall call) { + mCall = call; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.call_activity_layout); + + Intent intent = new Intent(this, SipService.class); + bindService(intent, mConnection, Context.BIND_AUTO_CREATE); + + + } + + @Override + protected void onDestroy() { + stopService(new Intent(this, SipService.class)); + super.onDestroy(); + } + + /** Defines callbacks for service binding, passed to bindService() */ + private ServiceConnection mConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName className, IBinder binder) { + service = ISipService.Stub.asInterface(binder); + } + + @Override + public void onServiceDisconnected(ComponentName arg0) { + } + }; + + @Override + public void onClick(View view) + { + if(view.getId() == R.id.buttonhangup) { + try { + service.hangUp(mCall.mCallInfo.mCallID); + } catch (RemoteException e) { + Log.e(TAG, "Cannot call service method", e); + } + } } } diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java index 06e1eae3a92079aac6b4840503b141dd9942c262..5f430168a41ca798d9fef3798464e01807adfebc 100644 --- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java +++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java @@ -484,7 +484,8 @@ public class SFLPhoneHome extends Activity implements ActionBar.TabListener, OnC Log.e(TAG, "Cannot call service method", e); } */ - launchCallActivity(); + SipCall call = new SipCall(); + launchCallActivity(call); } public void processingHangUpAction() { @@ -512,9 +513,11 @@ public class SFLPhoneHome extends Activity implements ActionBar.TabListener, OnC buttonCall.setImageResource(R.drawable.ic_call); } - private void launchCallActivity() + private void launchCallActivity(SipCall call) { Log.i(TAG, "Launch Call Activity"); + Bundle bundle = new Bundle(); + bundle.putString("CallID", call.mCallInfo.mCallID); Intent intent = new Intent().setClass(this, CallActivity.class); startActivity(intent); }