3 Copyright (C) 2010 Belledonne Communications, Grenoble, France
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 package org.linphone.core;
22 class LinphoneCallImpl implements LinphoneCall {
24 protected final long nativePtr;
25 boolean ownPtr = false;
26 native private void finalize(long nativePtr);
27 native private long getCallLog(long nativePtr);
28 private native boolean isIncoming(long nativePtr);
29 native private long getRemoteAddress(long nativePtr);
30 native private int getState(long nativePtr);
31 private native long getCurrentParamsCopy(long nativePtr);
32 private native void enableCamera(long nativePtr, boolean enabled);
33 private native boolean cameraEnabled(long nativePtr);
34 private native void enableEchoCancellation(long nativePtr,boolean enable);
35 private native boolean isEchoCancellationEnabled(long nativePtr) ;
36 private native void enableEchoLimiter(long nativePtr,boolean enable);
37 private native boolean isEchoLimiterEnabled(long nativePtr);
38 private native Object getReplacedCall(long nativePtr);
39 private native int getDuration(long nativePtr);
40 private native float getCurrentQuality(long nativePtr);
41 private native float getAverageQuality(long nativePtr);
42 private native String getAuthenticationToken(long nativePtr);
43 private native boolean isAuthenticationTokenVerified(long nativePtr);
44 private native boolean areStreamsEncrypted(long nativePtr);
47 * This method must always be called from JNI, nothing else.
49 private LinphoneCallImpl(long aNativePtr) {
50 nativePtr = aNativePtr;
52 protected void finalize() throws Throwable {
55 public LinphoneCallLog getCallLog() {
56 long lNativePtr = getCallLog(nativePtr);
58 return new LinphoneCallLogImpl(lNativePtr);
63 public CallDirection getDirection() {
64 return isIncoming(nativePtr)?CallDirection.Incoming:CallDirection.Outgoing;
66 public LinphoneAddress getRemoteAddress() {
67 long lNativePtr = getRemoteAddress(nativePtr);
69 return new LinphoneAddressImpl(lNativePtr);
74 public State getState() {
75 return LinphoneCall.State.fromInt(getState(nativePtr));
77 public LinphoneCallParams getCurrentParamsCopy() {
78 return new LinphoneCallParamsImpl(getCurrentParamsCopy(nativePtr));
81 public void enableCamera(boolean enabled) {
82 enableCamera(nativePtr, enabled);
84 public boolean cameraEnabled() {
85 return cameraEnabled(nativePtr);
89 public boolean equals(Object call) {
90 if (this == call) return true;
91 if (call == null) return false;
92 if (!(call instanceof LinphoneCallImpl)) return false;
93 return nativePtr == ((LinphoneCallImpl)call).nativePtr;
97 public int hashCode() {
99 result = 31 * result + (int) (nativePtr ^ (nativePtr >>> 32));
102 public void enableEchoCancellation(boolean enable) {
103 enableEchoCancellation(nativePtr,enable);
106 public boolean isEchoCancellationEnabled() {
107 return isEchoCancellationEnabled(nativePtr);
109 public void enableEchoLimiter(boolean enable) {
110 enableEchoLimiter(nativePtr,enable);
112 public boolean isEchoLimiterEnabled() {
113 return isEchoLimiterEnabled(nativePtr);
115 public LinphoneCall getReplacedCall(){
116 return (LinphoneCall)getReplacedCall(nativePtr);
119 public int getDuration() {
120 return getDuration(nativePtr);
122 public float getAverageQuality() {
123 return getAverageQuality(nativePtr);
125 public float getCurrentQuality() {
126 return getCurrentQuality(nativePtr);
129 public String getAuthenticationToken(){
130 return getAuthenticationToken(nativePtr);
132 public boolean isAuthenticationTokenVerified(){
133 return isAuthenticationTokenVerified(nativePtr);
136 public boolean isInConference() {
137 LinphoneCallParamsImpl params = new LinphoneCallParamsImpl(getCurrentParamsCopy(nativePtr));
138 return params.localConferenceMode();
142 public String toString() {
143 return "Call " + nativePtr;