midpnativeappmanager.h

来自「This is a resource based on j2me embedde」· C头文件 代码 · 共 387 行

H
387
字号
/* * * * Copyright  1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER *  * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). *  * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA *  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */#ifndef _MIDPNATIVEAPPMANAGER_H_#define _MIDPNATIVEAPPMANAGER_H_/** * @file * @ingroup nams_extern * * @brief External Interface for native AMS. * * @{ */#include <java_types.h>#include <midp_global_status.h>#include <suitestore_common.h>#include <listeners_intern.h>#include <midp_runtime_info.h>/* * Definitions of the events that may cause a call of listener. *//** * @def MIDP_NAMS_EVENT_STATE_CHANGED 1 * state of the MIDP system or of a midlet was changed */#define MIDP_NAMS_EVENT_STATE_CHANGED 1/** * @def MIDP_NAMS_EVENT_OPERATION_COMPLETED 2 * previously initiated asynchronous operation has completed */#define MIDP_NAMS_EVENT_OPERATION_COMPLETED 2/** * @def MIDP_NAMS_EVENT_ERROR 3 * some error occured */#define MIDP_NAMS_EVENT_ERROR 3/* * Defines for Java platform system states. * * IMPL_NOTE: please note that for NAMS testing it is supposed that *            the following state constants have the consequent values; *            otherwise, please change NamsTestService.getStateByValue(). *//** * @def MIDP_SYSTEM_STATE_ACTIVE * when system is started up and ready to serve any MIDlet requests */#define MIDP_SYSTEM_STATE_ACTIVE     1/** * @def MIDP_SYSTEM_STATE_SUSPENDED * when system finishes suspending all MIDlets and resources */#define MIDP_SYSTEM_STATE_SUSPENDED  2/** * @def MIDP_SYSTEM_STATE_STOPPED * when system stops the VM and frees all resources */#define MIDP_SYSTEM_STATE_STOPPED    3/** * @def MIDP_SYSTEM_STATE_ERROR * when system cannot be started */#define MIDP_SYSTEM_STATE_ERROR      4/** * Defines for MIDlet states */#define MIDP_MIDLET_STATE_ACTIVE     1#define MIDP_MIDLET_STATE_PAUSED     2#define MIDP_MIDLET_STATE_DESTROYED  3#define MIDP_MIDLET_STATE_ERROR      4#define MIDP_DISPLAY_STATE_FOREGROUND 5#define MIDP_DISPLAY_STATE_BACKGROUND 6#define MIDP_DISPLAY_STATE_FOREGROUND_REQUEST 7#define MIDP_DISPLAY_STATE_BACKGROUND_REQUEST 8/** * Reasons that may cause a state change */#define MIDP_REASON_TERMINATED 1#define MIDP_REASON_EXIT       2#define MIDP_REASON_OTHER      3/** * @def MIDP_INVALID_ISOLATE_ID * An ID value that an isolate never has. */#define MIDP_INVALID_ISOLATE_ID -1/** * A structure containing all information about the event that caused * the call of the listener. */typedef struct _namsEventData {    /** a structure containing a common data for all types of listeners */    GenericListener genericListener;    /** event type */    jint event;    /** ID identifying the running application which this event is related to */    jint appId;    /**     * The reason why the state change has happened.     * For a midlet state change, the reason code is one of the values:     * MIDLET_CONSTRUCTOR_FAILED,     * MIDLET_SUITE_NOT_FOUND,     * MIDLET_CLASS_NOT_FOUND     * MIDLET_INSTANTIATION_EXCEPTION,     * MIDLET_ILLEGAL_ACCESS_EXCEPTION,     * MIDLET_OUT_OF_MEM_ERROR,     * MIDLET_RESOURCE_LIMIT, or     * MIDLET_ISOLATE_RESOURCE_LIMIT, or     * MIDLET_ISOLATE_CONSTRUCTOR_FAILED.     * See src/configuration/common/constants.xml for definitions.     */    jint reason;    /** the new state of the application or system (depending on the event) */    jint state;    /** information about the midlet suite corresponding to this application */    MidletSuiteData* pSuiteData;    /** runtime information about the application */    MidletRuntimeInfo* pRuntimeInfo;} NamsEventData;/** * Listener types */typedef enum _namsListenerType {    /*     * Starting from 1 because LISTENER_TYPE_INVALID is defined as 0     * in our implementation of listeners. If you need to change this,     * adjust the constants in listeners_intern.h.     */    SYSTEM_EVENT_LISTENER  = 1,    MIDLET_EVENT_LISTENER  = 2,    DISPLAY_EVENT_LISTENER = 3,    ANY_EVENT_LISTENER     = 4} NamsListenerType;/** * The typedef of the function that will be called when Java platform * system state changes. * * @param pEventData pointer to a structure containing all information *                   about the event that caused the call of the listener */typedef void (*MIDP_NAMS_EVENT_LISTENER) (const NamsEventData* pEventData);/* ------------------- API to control the system ------------------- *//** * Initializes the system. This function must be called before setting * the listeners and calling midp_system_start(). * * @return error code: (ALL_OK if successful) */MIDPError midp_system_initialize(void);/** * Starts the system. Does not return until the system is stopped. * * @return <tt>ALL_OK</tt> if the system is shutting down or *         <tt>GENERAL_ERROR</tt> if an error */MIDPError midp_system_start(void);/** * Initiates shutdown of the system and returns immediately. System shutdown * is not complete until midp_system_start() returns. * * @return error code: ALL_OK if the operation was started successfully */MIDPError midp_system_stop(void);/* ------------------- API to control individual midlets ------------------- *//** * Create and start the specified MIDlet. The suiteId is passed to the * midletsuitestorage API to retrieve the class path. The appId is assigned by * the caller and is used to identify this MIDlet in subsequent API calls. The * appId must be an integer greater than zero. The suite and class must not * name a MIDlet that is already running. The appId must not have already been * used to identify another running MIDlet. * * @param suiteId      The application suite ID * @param pClassName   Fully qualified name of the MIDlet class * @param classNameLen Length of the MIDlet class name * @param appId        The application id used to identify the app * @param pRuntimeInfo Quotas and profile to set for the new application * * @return error code: ALL_OK if the operation was started successfully, *                     BAD_PARAMS if suiteId is invalid or pClassName is null */MIDPError midp_midlet_create_start(SuiteIdType suiteId,                                   const jchar *pClassName, jint classNameLen,                                   jint appId,                                   const MidletRuntimeInfo* pRuntimeInfo);/** * Create and start the specified MIDlet passing the given arguments to it. * The suiteId is passed to the midletsuitestorage API to retrieve the class * path. The appId is assigned by the caller and is used to identify this * MIDlet in subsequent API calls. The appId must be an integer greater * than zero. The suite and class must not name a MIDlet that is already * running. The appId must not have already been used to identify another * running MIDlet. * * @param suiteId      The application suite ID * @param pClassName   Fully qualified name of the MIDlet class * @param classNameLen Length of the MIDlet class name * @param args         An array containning up to 3 arguments for *                     the MIDlet to be run * @param argsLen      An array containing the length of each argument * @param argsNum      Number of arguments * @param appId        The application id used to identify the app * @param pRuntimeInfo Quotas and profile to set for the new application * * @return error code: ALL_OK if the operation was started successfully, *                     BAD_PARAMS if suiteId is invalid or pClassName is null */MIDPError midp_midlet_create_start_with_args(SuiteIdType suiteId,                              const jchar *pClassName, jint classNameLen,                              const jchar **args, const jint *argsLen,                              jint argsNum, jint appId,                              const MidletRuntimeInfo* pRuntimeInfo);/** * Resume the specified paused MIDlet. * * If appId is invalid, or if that application is already active, this call * has no effect and the MIDlet state change listener will be called anyway. * * @param appId The ID used to identify the application * * @return error code: ALL_OK if the operation was started successfully */MIDPError midp_midlet_resume(jint appId);/** * Pause the specified MIDlet. * * If appId is invalid, or if that application is already paused, this call * has no effect and the MIDlet state change listener will be called anyway. * * @param appId The ID used to identify the application * * @return error code: ALL_OK if the operation was started successfully */MIDPError midp_midlet_pause(jint appId);/** * Stop the specified MIDlet. * * If the midlet is not terminated within the given number of milliseconds, * it will be forcefully terminated. * * If appId is invalid, this call has no effect, but the MIDlet state change * listener will be called anyway. * * @param appId The ID used to identify the application * @param timeout Timeout in milliseconds * * @return error code: ALL_OK if the operation was started successfully */MIDPError midp_midlet_destroy(jint appId, jint timeout);/** * Select which running MIDlet should have the foreground.  If appId is a * valid application ID, that application is placed into the foreground. If * appId is MIDLET_APPID_NO_FOREGROUND, the current foreground MIDlet will be * put into background and no MIDlet will have the foreground. * * If appId is invalid, or that application already has the foreground, this * has no effect, but the foreground listener will be called anyway. * * @param appId The ID of the application to be put into the foreground, *              or the special value MIDLET_APPID_NO_FOREGROUND (that is *              defined in src/configuration/common/constants.xml) * * @return error code: ALL_OK if successful */MIDPError midp_midlet_set_foreground(jint appId);/** * Gets ID of the suite containing the specified running MIDlet. * This call is synchronous. * * @param appId    [in]  The ID used to identify the application * @param pSuiteId [out] On exit will hold an ID of the suite the midlet *                       belongs to * * @return error code: ALL_OK if successful, *                     NOT_FOUND if the application was not found, *                     BAD_PARAMS if pSuiteId is null */MIDPError midp_midlet_get_suite_id(jint appId, SuiteIdType* pSuiteId);/** * Gets 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: ALL_OK if successful (operation started), *                     NOT_FOUND if the application was not found */MIDPError midp_midlet_request_runtime_info(jint appId);/* ------------------- API to control listeners ------------------- *//** * Adds a listener of the given type. * * @param listener pointer to a callback function that will be called when * an event of the given type happens * @param listenerType defines on which type of events (SYSTEM, MIDLET or * DISPLAY) this listener should be invoked * * @return error code: ALL_OK if successful, *                     OUT_OF_MEMORY if not enough memory, *                     BAD_PARAMS if listener is NULL */MIDPError midp_add_event_listener(MIDP_NAMS_EVENT_LISTENER listener,                                  NamsListenerType listenerType);/** * Removes the given listener of the given type. * * @param listener listener that should be removed * @param listenerType defines for which type of events (SYSTEM, MIDLET or * DISPLAY) this listener was added * * @return error code: ALL_OK if successful, *                     NOT_FOUND if the listener was not found */MIDPError midp_remove_event_listener(MIDP_NAMS_EVENT_LISTENER listener,                                     NamsListenerType listenerType);/** * Removes all listeners of the given type. * * @param listenerType defines for which type of events (SYSTEM, MIDLET or * DISPLAY) the registered listeneres must be removed * * @return error code: ALL_OK if successful, *                     NOT_FOUND if there are no registered listeners *                               of the given type */MIDPError midp_remove_all_event_listeners(NamsListenerType listenerType);/* @} */#endif /* _MIDPNATIVEAPPMANAGER_H_ */

⌨️ 快捷键说明

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