javacall_native_ams.c

来自「This is a resource based on j2me embedde」· C语言 代码 · 共 666 行 · 第 1/2 页

C
666
字号
javacall_resultjavanotify_ams_midlet_get_app_suite_id(javacall_app_id appId,                                       javacall_suite_id* pSuiteId) {    MIDPError status;    SuiteIdType midpSuiteId;    if (pSuiteId == NULL) {        return JAVACALL_FAIL;    }    status = midp_midlet_get_suite_id((jint)appId, &midpSuiteId);    if (status != ALL_OK) {        return JAVACALL_FAIL;    }    *pSuiteId = (javacall_suite_id)midpSuiteId;    return JAVACALL_OK;}/** * Platform invokes this function to get runtime information * about the specified MIDlet. * * This call is asynchronous, the result will be reported later through * passing a MIDLET_INFO_READY_EVENT event to SYSTEM_EVENT_LISTENER. * * @param appId The ID used to identify the application * * @return error code: <tt>JAVACALL_OK<tt> if successful (operation started), *                     <tt>JAVACALL_FAIL</tt> otherwise */javacall_resultjavanotify_ams_midlet_request_runtime_info(javacall_app_id appId) {    MIDPError res = midp_midlet_request_runtime_info((jint)appId);    return (res == ALL_OK) ? JAVACALL_OK : JAVACALL_FAIL;}/** * Platform inform the VM to create the images cache. * @param suiteId  unique ID of the MIDlet suite * * @return <tt>JAVACALL_OK</tt> on success, *         <tt>JAVACALL_FAIL</tt> */javacall_resultjavanotify_ams_create_resource_cache(javacall_suite_id suiteId) {    (void) suiteId;    return JAVACALL_FAIL;}/** * MIDP proxy for the javacall_ams_system_state_changed() listener. * * @param pEventData full data about the event and about the application *                   caused this event */void midp_listener_ams_system_status(const NamsEventData* pEventData) {    void* pResult = NULL;    if (pEventData == NULL) {        return;    }    if (pEventData->event == MIDP_NAMS_EVENT_STATE_CHANGED) {        javacall_system_state state;        switch (pEventData->state) {            case MIDP_SYSTEM_STATE_ACTIVE:                state = JAVACALL_SYSTEM_STATE_ACTIVE;                break;            case MIDP_SYSTEM_STATE_SUSPENDED:                state = JAVACALL_SYSTEM_STATE_SUSPENDED;                break;            case MIDP_SYSTEM_STATE_STOPPED:                state = JAVACALL_SYSTEM_STATE_STOPPED;                break;            default:                state = JAVACALL_SYSTEM_STATE_ERROR;                break;        }        javacall_ams_system_state_changed(state);    }}/** * MIDP proxy for the javacall_ams_operation_completed() listener. * * @param pEventData full data about the event and about the application *                   caused this event */void midp_listener_ams_operation_completed(const NamsEventData* pEventData) {    void* pResult = NULL;    if (pEventData == NULL) {        return;    }    if (pEventData->event == MIDP_NAMS_EVENT_OPERATION_COMPLETED) {        if (pEventData->state == ALL_OK) {            if (pEventData->reason == NATIVE_MIDLET_GETINFO_REQUEST) {                pResult = pEventData->pRuntimeInfo;            }        }        javacall_ams_operation_completed(            midp_operation2javacall(pEventData->reason),            (javacall_app_id)pEventData->appId,            pResult);    }}/** * MIDP proxy for the javacall_ams_midlet_state_changed() listener. * * @param pEventData full data about the event and about the application *                   caused this event */void midp_listener_ams_midlet_state_changed(const NamsEventData* pEventData) {    if (pEventData == NULL) {        return;    }    javacall_ams_midlet_state_changed(        midp_midlet_state2javacall(pEventData->state),        (javacall_app_id)pEventData->appId,        midp_midlet_event_reason2javacall(pEventData->reason));}/** * MIDP proxy for the javacall_ams_midlet_ui_state_changed() listener. * * @param pEventData full data about the event and about the application *                   caused this event */void midp_listener_ams_midlet_ui_state_changed(        const NamsEventData* pEventData) {    if (pEventData == NULL) {        return;    }    javacall_ams_midlet_ui_state_changed(        midp_midlet_ui_state2javacall(pEventData->state),        (javacall_app_id)pEventData->appId,        midp_midlet_event_reason2javacall(pEventData->reason));}/* * File-private utility functions. *//** * Converts the given MIDP event reason constant to the Javacall * event reason constant. * * @param midpMidletState MIDP event reason constant * * @return Javacall event reason constant corresponding to the given MIDP one */static javacall_change_reasonmidp_midlet_event_reason2javacall(jint midpEventReason) {    javacall_change_reason jcEventReason;    /*     * IMPL_NOTE: handle reason depending on the event.     * MIDP_REASON_TERMINATED     * MIDP_REASON_EXIT     * MIDP_REASON_OTHER     *     * JAVACALL_MIDP_REASON_TERMINATED     * JAVACALL_MIDP_REASON_EXIT     */    /*     * We can't assume that the MIDP and Javacall constants are identical,     * so this switch is used.     */    switch (midpEventReason) {        case MIDLET_CONSTRUCTOR_FAILED: {            jcEventReason = JAVACALL_MIDLET_CONSTRUCTOR_FAILED;            break;        }        case MIDLET_SUITE_NOT_FOUND: {            jcEventReason = JAVACALL_MIDLET_SUITE_NOT_FOUND;            break;        }        case MIDLET_CLASS_NOT_FOUND: {            jcEventReason = JAVACALL_MIDLET_CLASS_NOT_FOUND;            break;        }        case MIDLET_INSTANTIATION_EXCEPTION: {            jcEventReason = JAVACALL_MIDLET_INSTANTIATION_EXCEPTION;            break;        }        case MIDLET_ILLEGAL_ACCESS_EXCEPTION: {            jcEventReason = JAVACALL_MIDLET_ILLEGAL_ACCESS_EXCEPTION;            break;        }        case MIDLET_OUT_OF_MEM_ERROR: {            jcEventReason = JAVACALL_MIDLET_OUT_OF_MEM_ERROR;            break;        }        case MIDLET_RESOURCE_LIMIT: {            jcEventReason = JAVACALL_MIDLET_RESOURCE_LIMIT;            break;        }        case MIDLET_ISOLATE_RESOURCE_LIMIT: {            jcEventReason = JAVACALL_MIDLET_ISOLATE_RESOURCE_LIMIT;            break;        }        case MIDLET_ISOLATE_CONSTRUCTOR_FAILED: {            jcEventReason = JAVACALL_MIDLET_ISOLATE_CONSTRUCTOR_FAILED;            break;        }        default: {            jcEventReason = JAVACALL_MIDP_REASON_OTHER;        }    }    return jcEventReason;}/** * Converts the given MIDP operation code to the Javacall operation code. * * @param midpOpcode MIDP code of the operation * * @return Javacall opeartion corresponding to the given MIDP one */static javacall_opcode midp_operation2javacall(jint midpOpcode) {    javacall_opcode jcOperation;    /*     * We can't assume that the MIDP and Javacall constants are identical,     * so this switch is used.     */    switch (midpOpcode) {        case NATIVE_MIDLET_GETINFO_REQUEST: {            jcOperation = JAVACALL_OPCODE_REQUEST_RUNTIME_INFO;            break;        }        default: {            jcOperation = JAVACALL_OPCODE_INVALID;        }    }    return jcOperation;}/** * Converts the given MIDP midlet state constant * to the Javacall midlet state constant. * * @param midpMidletState MIDP midlet state constant * * @return Javacall midlet state constant corresponding to the given MIDP one */static javacall_lifecycle_statemidp_midlet_state2javacall(jint midpMidletState) {    javacall_lifecycle_state jcMidletState;    /*     * We can't assume that the MIDP and Javacall constants are identical,     * so this switch is used.     */    switch (midpMidletState) {        case MIDP_MIDLET_STATE_ACTIVE: {            jcMidletState = JAVACALL_LIFECYCLE_MIDLET_STARTED;            break;        }        case MIDP_MIDLET_STATE_PAUSED: {            jcMidletState = JAVACALL_LIFECYCLE_MIDLET_PAUSED;            break;        }        case MIDP_MIDLET_STATE_DESTROYED: {            jcMidletState = JAVACALL_LIFECYCLE_MIDLET_SHUTDOWN;            break;        }        case MIDP_MIDLET_STATE_ERROR: {            jcMidletState = JAVACALL_LIFECYCLE_MIDLET_ERROR;            break;        }        default: {            jcMidletState = JAVACALL_LIFECYCLE_MIDLET_ERROR;        }    }    return jcMidletState;}/** * Converts the given MIDP midlet state constant * to the Javacall midlet state constant. * * @param midpMidletState MIDP midlet state constant * * @return Javacall midlet state constant corresponding to the given MIDP one */static javacall_midlet_ui_statemidp_midlet_ui_state2javacall(jint midpMidletUiState) {    javacall_midlet_ui_state jcMidletUiState;    /*     * We can't assume that the MIDP and Javacall constants are identical,     * so this switch is used.     */    switch (midpMidletUiState) {        case MIDP_DISPLAY_STATE_FOREGROUND: {            jcMidletUiState = JAVACALL_MIDLET_UI_STATE_FOREGROUND;            break;        }        case MIDP_DISPLAY_STATE_BACKGROUND: {            jcMidletUiState = JAVACALL_MIDLET_UI_STATE_BACKGROUND;            break;        }        case MIDP_DISPLAY_STATE_FOREGROUND_REQUEST: {            jcMidletUiState = JAVACALL_MIDLET_UI_STATE_FOREGROUND_REQUEST;            break;        }        case MIDP_DISPLAY_STATE_BACKGROUND_REQUEST: {            jcMidletUiState = JAVACALL_MIDLET_UI_STATE_BACKGROUND_REQUEST;            break;        }        default: {            /** Invalid state! Add to log? */            jcMidletUiState = (javacall_midlet_ui_state) midpMidletUiState;        }    }    return jcMidletUiState;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?