linphone-LinphoneCallLogImpl文件对应的JNI层文件分析

来源:互联网 发布:js中invoke 编辑:程序博客网 时间:2024/05/22 03:37

说明

本篇所有的功能全部围绕着LinphoneCallLog 展开。

疑惑

这里只是取得里面的值, 但是什么时候设置的值就不得而知了。 估计是接电话的时候创建的值吧。

native函数

    private native long getFrom(long nativePtr);    private native long getTo(long nativePtr);    private native boolean isIncoming(long nativePtr);    private native int getStatus(long nativePtr);    private native String getStartDate(long nativePtr);    private native int getCallDuration(long nativePtr);    private native String getCallId(long nativePtr);    private native long getTimestamp(long nativePtr);    private native boolean wasConference(long nativePtr);

getFrom

//CallLogextern "C" jlong Java_org_linphone_core_LinphoneCallLogImpl_getFrom(JNIEnv*  env                                                                        ,jobject  thiz                                                                        ,jlong ptr) {    return (jlong)((LinphoneCallLog*)ptr)->from;}

LinphoneCallLog

submodules/linphone/coreapi/private.h:struct _LinphoneCallLog{
struct _LinphoneCallLog{    belle_sip_object_t base;    void *user_data;    struct _LinphoneCore *lc;    LinphoneCallDir dir; /**< The direction of the call*/    LinphoneCallStatus status; /**< The status of the call*/    LinphoneAddress *from; /**<Originator of the call as a LinphoneAddress object*/    LinphoneAddress *to; /**<Destination of the call as a LinphoneAddress object*/    char start_date[128]; /**<Human readable string containing the start date*/    int duration; /**<Duration of the call starting in connected state in seconds*/    char *refkey;    rtp_stats_t local_stats;    rtp_stats_t remote_stats;    float quality;    time_t start_date_time; /**Start date of the call in seconds as expressed in a time_t */    time_t connected_date_time; /**Connecting date of the call in seconds as expressed in a time_t */    char* call_id; /**unique id of a call*/    struct _LinphoneQualityReporting reporting;    bool_t video_enabled;    bool_t was_conference; /**<That call was a call with a conference server */    unsigned int storage_id;};

LinphoneCallStatus

submodules/linphone/coreapi/call_log.h:typedef enum _LinphoneCallStatus {
/** * Enum representing the status of a call**/typedef enum _LinphoneCallStatus {    LinphoneCallSuccess, /**< The call was sucessful */    LinphoneCallAborted, /**< The call was aborted */    LinphoneCallMissed, /**< The call was missed (unanswered) */    LinphoneCallDeclined /**< The call was declined, either locally or by remote end */} LinphoneCallStatus;

LinphoneCallDir

submodules/linphone/coreapi/call_log.h:enum _LinphoneCallDir {
/** * Enum representing the direction of a call.**/enum _LinphoneCallDir {    LinphoneCallOutgoing, /**< outgoing calls*/    LinphoneCallIncoming  /**< incoming calls*/};

_LinphoneCore

struct _LinphoneCore{    MSFactory* factory;    MSList* vtable_refs;    Sal *sal;    LinphoneGlobalState state;    struct _LpConfig *config;    MSList *default_audio_codecs;    MSList *default_video_codecs;    MSList *default_text_codecs;    net_config_t net_conf;    sip_config_t sip_conf;    rtp_config_t rtp_conf;    sound_config_t sound_conf;    video_config_t video_conf;    text_config_t text_conf;    codecs_config_t codecs_conf;    ui_config_t ui_conf;    autoreplier_config_t autoreplier_conf;    LinphoneProxyConfig *default_proxy;    MSList *friends_lists;    MSList *auth_info;    struct _RingStream *ringstream;    time_t dmfs_playing_start_time;    LCCallbackObj preview_finished_cb;    LinphoneCall *current_call;   /* the current call */    MSList *calls;              /* all the processed calls */    MSList *queued_calls;   /* used by the autoreplier */    MSList *call_logs;    MSList *chatrooms;    int max_call_logs;    int missed_calls;    VideoPreview *previewstream;    struct _MSEventQueue *msevq;    LinphoneRtpTransportFactories *rtptf;    MSList *bl_reqs;    MSList *subscribers;    /* unknown subscribers */    int minutes_away;    LinphonePresenceModel *presence_model;    void *data;    char *play_file;    char *rec_file;    uint64_t prevtime_ms;    int audio_bw; /*IP bw consumed by audio codec, set as soon as used codec is known, its purpose is to know the remaining bw for video*/    LinphoneCoreWaitingCallback wait_cb;    void *wait_ctx;    void *video_window_id;    void *preview_window_id;    time_t netup_time; /*time when network went reachable */    struct _EcCalibrator *ecc;    LinphoneTaskList hooks; /*tasks periodically executed in linphone_core_iterate()*/    LinphoneConference *conf_ctx;    char* zrtp_secrets_cache;    char* user_certificates_path;    LinphoneVideoPolicy video_policy;    time_t network_last_check;    bool_t use_files;    bool_t apply_nat_settings;    bool_t initial_subscribes_sent;    bool_t bl_refresh;    bool_t preview_finished;    bool_t auto_net_state_mon;    bool_t sip_network_reachable;    bool_t media_network_reachable;    bool_t network_reachable_to_be_notified; /*set to true when state must be notified in next iterate*/    bool_t use_preview_window;    bool_t network_last_status;    bool_t ringstream_autorelease;    bool_t vtables_running;    bool_t send_call_stats_periodical_updates;    bool_t forced_ice_relay;    bool_t pad;    char localip[LINPHONE_IPADDR_SIZE];    int device_rotation;    int max_calls;    LinphoneTunnel *tunnel;    char* device_id;    MSList *last_recv_msg_ids;    char *chat_db_file;#ifdef MSG_STORAGE_ENABLED    sqlite3 *db;    bool_t debug_storage;#endif    char *logs_db_file;#ifdef CALL_LOGS_STORAGE_ENABLED    sqlite3 *logs_db;#endif    char *friends_db_file;#ifdef FRIENDS_SQL_STORAGE_ENABLED    sqlite3 *friends_db;#endif#ifdef BUILD_UPNP    UpnpContext *upnp;#endif //BUILD_UPNP    belle_http_provider_t *http_provider;    belle_tls_verify_policy_t *http_verify_policy;    belle_http_request_listener_t *provisioning_http_listener;    MSList *tones;    LinphoneReason chat_deny_code;    char *file_transfer_server;    const char **supported_formats;    LinphoneContent *log_collection_upload_information;    LinphoneCoreVTable *current_vtable; // the latest vtable to call a callback, see linphone_core_get_current_vtable    LinphoneRingtonePlayer *ringtoneplayer;#ifdef ANDROID    jobject wifi_lock;    jclass wifi_lock_class;    jmethodID wifi_lock_acquire_id;    jmethodID wifi_lock_release_id;    jobject multicast_lock;    jclass multicast_lock_class;    jmethodID multicast_lock_acquire_id;    jmethodID multicast_lock_release_id;#endif};

这个_LinphoneCore真的是很长啊,真后悔找到它。不过, 这个也是最核心的部分了。 所以早晚得看它, 到底现在看不看呢。 还是随便的看一看就好了。

getTo

extern "C" jlong Java_org_linphone_core_LinphoneCallLogImpl_getTo(JNIEnv*  env                                                                        ,jobject  thiz                                                                        ,jlong ptr) {    return (jlong)((LinphoneCallLog*)ptr)->to;}

isIncoming

extern "C" jboolean Java_org_linphone_core_LinphoneCallLogImpl_isIncoming(JNIEnv*  env                                                                        ,jobject  thiz                                                                        ,jlong ptr) {    return ((LinphoneCallLog*)ptr)->dir==LinphoneCallIncoming?JNI_TRUE:JNI_FALSE;}

getStatus

extern "C" jint Java_org_linphone_core_LinphoneCallLogImpl_getStatus(JNIEnv*  env                                                                        ,jobject  thiz                                                                        ,jlong ptr) {    return (jint)((LinphoneCallLog*)ptr)->status;}

getStartDate

extern "C" jstring Java_org_linphone_core_LinphoneCallLogImpl_getStartDate(JNIEnv*  env                                                                        ,jobject  thiz                                                                        ,jlong ptr) {    jstring jvalue =env->NewStringUTF(((LinphoneCallLog*)ptr)->start_date);    return jvalue;}

getCallDuration

extern "C" jint Java_org_linphone_core_LinphoneCallLogImpl_getCallDuration(JNIEnv*  env                                                                        ,jobject  thiz                                                                        ,jlong ptr) {    return (jint)((LinphoneCallLog*)ptr)->duration;}

getCallId

/* * Class:     org_linphone_core_LinphoneCallLogImpl * Method:    getCallId * Signature: (J)I */JNIEXPORT jstring JNICALL Java_org_linphone_core_LinphoneCallLogImpl_getCallId(JNIEnv *env, jobject jobj, jlong pcl){    const char *str = linphone_call_log_get_call_id((LinphoneCallLog*)pcl);    return str ? env->NewStringUTF(str) : NULL;}

linphone_call_log_get_call_id

submodules/linphone/coreapi/call_log.c:const char *linphone_call_log_get_call_id(const LinphoneCallLog *cl){submodules/linphone/coreapi/call_log.h:LINPHONE_PUBLIC const char * linphone_call_log_get_call_id(const LinphoneCallLog *cl);
const char *linphone_call_log_get_call_id(const LinphoneCallLog *cl){    return cl->call_id;}

getTimestamp

extern "C" jlong Java_org_linphone_core_LinphoneCallLogImpl_getTimestamp(JNIEnv*  env                                                                        ,jobject  thiz                                                                        ,jlong ptr) {    return static_cast<long> (((LinphoneCallLog*)ptr)->start_date_time);}

wasConference

extern "C" jboolean Java_org_linphone_core_LinphoneCallLogImpl_wasConference(JNIEnv *env, jobject thiz, jlong ptr) {    return linphone_call_log_was_conference((LinphoneCallLog *)ptr);}

linphone_call_log_was_conference

bool_t linphone_call_log_was_conference(LinphoneCallLog *cl) {    return cl->was_conference;}
0 0