Package com.jme3.app

Class AndroidHarness

  • All Implemented Interfaces:
    android.content.ComponentCallbacks, android.content.ComponentCallbacks2, android.content.DialogInterface.OnClickListener, android.view.KeyEvent.Callback, android.view.LayoutInflater.Factory, android.view.LayoutInflater.Factory2, android.view.View.OnCreateContextMenuListener, android.view.Window.Callback, com.jme3.input.controls.InputListener, com.jme3.input.controls.TouchListener, com.jme3.system.SystemListener

    public class AndroidHarness
    extends android.app.Activity
    implements com.jme3.input.controls.TouchListener, android.content.DialogInterface.OnClickListener, com.jme3.system.SystemListener
    AndroidHarness wraps a jme application object and runs it on Android
    Author:
    Kirill, larynx
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected com.jme3.app.LegacyApplication app
      The jme3 application object
      protected java.lang.String appClass
      The application class to start
      protected java.lang.String audioRendererType
      Sets the type of Audio Renderer to be used.
      protected OGLESContext ctx  
      protected int eglAlphaBits
      Sets the desired number of Alpha bits for the surfaceview.
      protected int eglBitsPerPixel
      Sets the desired RGB size for the surfaceview.
      protected int eglDepthBits
      The number of depth bits specifies the precision of the depth buffer.
      protected int eglSamples
      Sets the number of samples to use for multisampling.
      Leave 0 (default) to disable multisampling.
      Set to 2 or 4 to enable multisampling.
      protected int eglStencilBits
      Set the number of stencil bits.
      protected java.lang.String exitDialogMessage
      Message of the exit dialog, default is "Use your home key to bring this app into the background or exit to terminate it."
      protected java.lang.String exitDialogTitle
      Title of the exit dialog, default is "Do you want to exit?"
      protected boolean finishOnAppStop
      if true finish this activity when the jme app is stopped
      protected android.widget.FrameLayout frameLayout  
      protected int frameRate
      Set the desired frame rate.
      protected boolean handleExitHook
      set to false if you don't want the harness to handle the exit hook
      protected boolean isGLThreadPaused  
      protected boolean joystickEventsEnabled
      If true Android Sensors are used as simulated Joysticks.
      protected boolean keyEventsEnabled
      If true KeyEvents are generated from TouchEvents
      protected static java.util.logging.Logger logger  
      protected boolean mouseEventsEnabled
      If true MouseEvents are generated from TouchEvents
      protected boolean mouseEventsInvertX
      Flip X axis
      protected boolean mouseEventsInvertY
      Flip Y axis
      protected boolean screenFullScreen
      Set the screen window mode.
      protected boolean screenShowTitle
      if screenShowTitle is true while screenFullScreen is false, then the title bar is also displayed under the notification bar
      protected android.widget.ImageView splashImageView  
      protected int splashPicID
      Splash Screen picture Resource ID.
      protected android.opengl.GLSurfaceView view  
      • Fields inherited from class android.app.Activity

        DEFAULT_KEYS_DIALER, DEFAULT_KEYS_DISABLE, DEFAULT_KEYS_SEARCH_GLOBAL, DEFAULT_KEYS_SEARCH_LOCAL, DEFAULT_KEYS_SHORTCUT, FOCUSED_STATE_SET, RESULT_CANCELED, RESULT_FIRST_USER, RESULT_OK
      • Fields inherited from class android.content.Context

        ACCESSIBILITY_SERVICE, ACCOUNT_SERVICE, ACTIVITY_SERVICE, ALARM_SERVICE, APP_OPS_SERVICE, APPWIDGET_SERVICE, AUDIO_SERVICE, BATTERY_SERVICE, BIND_ABOVE_CLIENT, BIND_ADJUST_WITH_ACTIVITY, BIND_ALLOW_OOM_MANAGEMENT, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_EXTERNAL_SERVICE, BIND_IMPORTANT, BIND_NOT_FOREGROUND, BIND_WAIVE_PRIORITY, BLUETOOTH_SERVICE, CAMERA_SERVICE, CAPTIONING_SERVICE, CARRIER_CONFIG_SERVICE, CLIPBOARD_SERVICE, COMPANION_DEVICE_SERVICE, CONNECTIVITY_SERVICE, CONSUMER_IR_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, CROSS_PROFILE_APPS_SERVICE, DEVICE_POLICY_SERVICE, DISPLAY_SERVICE, DOWNLOAD_SERVICE, DROPBOX_SERVICE, EUICC_SERVICE, FINGERPRINT_SERVICE, HARDWARE_PROPERTIES_SERVICE, INPUT_METHOD_SERVICE, INPUT_SERVICE, IPSEC_SERVICE, JOB_SCHEDULER_SERVICE, KEYGUARD_SERVICE, LAUNCHER_APPS_SERVICE, LAYOUT_INFLATER_SERVICE, LOCATION_SERVICE, MEDIA_PROJECTION_SERVICE, MEDIA_ROUTER_SERVICE, MEDIA_SESSION_SERVICE, MIDI_SERVICE, MODE_APPEND, MODE_ENABLE_WRITE_AHEAD_LOGGING, MODE_MULTI_PROCESS, MODE_NO_LOCALIZED_COLLATORS, MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, NETWORK_STATS_SERVICE, NFC_SERVICE, NOTIFICATION_SERVICE, NSD_SERVICE, POWER_SERVICE, PRINT_SERVICE, RECEIVER_VISIBLE_TO_INSTANT_APPS, RESTRICTIONS_SERVICE, SEARCH_SERVICE, SENSOR_SERVICE, SHORTCUT_SERVICE, STORAGE_SERVICE, STORAGE_STATS_SERVICE, SYSTEM_HEALTH_SERVICE, TELECOM_SERVICE, TELEPHONY_SERVICE, TELEPHONY_SUBSCRIPTION_SERVICE, TEXT_CLASSIFICATION_SERVICE, TEXT_SERVICES_MANAGER_SERVICE, TV_INPUT_SERVICE, UI_MODE_SERVICE, USAGE_STATS_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_SERVICE, WALLPAPER_SERVICE, WIFI_AWARE_SERVICE, WIFI_P2P_SERVICE, WIFI_RTT_RANGING_SERVICE, WIFI_SERVICE, WINDOW_SERVICE
      • Fields inherited from interface android.content.ComponentCallbacks2

        TRIM_MEMORY_BACKGROUND, TRIM_MEMORY_COMPLETE, TRIM_MEMORY_MODERATE, TRIM_MEMORY_RUNNING_CRITICAL, TRIM_MEMORY_RUNNING_LOW, TRIM_MEMORY_RUNNING_MODERATE, TRIM_MEMORY_UI_HIDDEN
    • Constructor Summary

      Constructors 
      Constructor Description
      AndroidHarness()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void destroy()  
      void gainFocus()  
      com.jme3.app.Application getJmeApplication()  
      void handleError​(java.lang.String errorMsg, java.lang.Throwable t)
      Called when an error has occurred.
      void initialize()  
      protected void initializeLogHandler()
      Removes the standard Android log handler due to an issue with not logging entries lower than INFO level and adds a handler that produces JME formatted log messages.
      void layoutDisplay()  
      void loseFocus()  
      void onClick​(android.content.DialogInterface dialog, int whichButton)
      Called by the android alert dialog, terminate the activity and OpenGL rendering
      void onCreate​(android.os.Bundle savedInstanceState)  
      protected void onDestroy()  
      protected void onPause()  
      protected void onRestart()  
      protected void onResume()  
      java.lang.Object onRetainNonConfigurationInstance()  
      protected void onStart()  
      protected void onStop()  
      void onTouch​(java.lang.String name, com.jme3.input.event.TouchEvent evt, float tpf)
      Gets called by the InputManager on all touch/drag/scale events
      void removeSplashScreen()  
      void requestClose​(boolean esc)  
      void rescale​(float x, float y)  
      void reshape​(int width, int height)  
      void update()  
      • Methods inherited from class android.app.Activity

        addContentView, attachBaseContext, closeContextMenu, closeOptionsMenu, createPendingResult, dismissDialog, dismissKeyboardShortcutsHelper, dispatchGenericMotionEvent, dispatchKeyEvent, dispatchKeyShortcutEvent, dispatchPopulateAccessibilityEvent, dispatchTouchEvent, dispatchTrackballEvent, dump, enterPictureInPictureMode, enterPictureInPictureMode, findViewById, finish, finishActivity, finishActivityFromChild, finishAffinity, finishAfterTransition, finishAndRemoveTask, finishFromChild, getActionBar, getApplication, getCallingActivity, getCallingPackage, getChangingConfigurations, getComponentName, getContentScene, getContentTransitionManager, getCurrentFocus, getFragmentManager, getIntent, getLastNonConfigurationInstance, getLayoutInflater, getLoaderManager, getLocalClassName, getMaxNumPictureInPictureActions, getMediaController, getMenuInflater, getParent, getParentActivityIntent, getPreferences, getReferrer, getRequestedOrientation, getSearchEvent, getSystemService, getTaskId, getTitle, getTitleColor, getVoiceInteractor, getVolumeControlStream, getWindow, getWindowManager, hasWindowFocus, invalidateOptionsMenu, isActivityTransitionRunning, isChangingConfigurations, isChild, isDestroyed, isFinishing, isImmersive, isInMultiWindowMode, isInPictureInPictureMode, isLocalVoiceInteractionSupported, isTaskRoot, isVoiceInteraction, isVoiceInteractionRoot, managedQuery, moveTaskToBack, navigateUpTo, navigateUpToFromChild, onActionModeFinished, onActionModeStarted, onActivityReenter, onActivityResult, onApplyThemeResource, onAttachedToWindow, onAttachFragment, onBackPressed, onChildTitleChanged, onConfigurationChanged, onContentChanged, onContextItemSelected, onContextMenuClosed, onCreate, onCreateContextMenu, onCreateDescription, onCreateDialog, onCreateDialog, onCreateNavigateUpTaskStack, onCreateOptionsMenu, onCreatePanelMenu, onCreatePanelView, onCreateThumbnail, onCreateView, onCreateView, onDetachedFromWindow, onEnterAnimationComplete, onGenericMotionEvent, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyShortcut, onKeyUp, onLocalVoiceInteractionStarted, onLocalVoiceInteractionStopped, onLowMemory, onMenuItemSelected, onMenuOpened, onMultiWindowModeChanged, onMultiWindowModeChanged, onNavigateUp, onNavigateUpFromChild, onNewIntent, onOptionsItemSelected, onOptionsMenuClosed, onPanelClosed, onPictureInPictureModeChanged, onPictureInPictureModeChanged, onPostCreate, onPostCreate, onPostResume, onPrepareDialog, onPrepareDialog, onPrepareNavigateUpTaskStack, onPrepareOptionsMenu, onPreparePanel, onProvideAssistContent, onProvideAssistData, onProvideKeyboardShortcuts, onProvideReferrer, onRequestPermissionsResult, onRestoreInstanceState, onRestoreInstanceState, onSaveInstanceState, onSaveInstanceState, onSearchRequested, onSearchRequested, onStateNotSaved, onTitleChanged, onTouchEvent, onTrackballEvent, onTrimMemory, onUserInteraction, onUserLeaveHint, onVisibleBehindCanceled, onWindowAttributesChanged, onWindowFocusChanged, onWindowStartingActionMode, onWindowStartingActionMode, openContextMenu, openOptionsMenu, overridePendingTransition, postponeEnterTransition, recreate, registerForContextMenu, releaseInstance, removeDialog, reportFullyDrawn, requestDragAndDropPermissions, requestPermissions, requestShowKeyboardShortcuts, requestVisibleBehind, requestWindowFeature, requireViewById, runOnUiThread, setActionBar, setContentTransitionManager, setContentView, setContentView, setContentView, setDefaultKeyMode, setEnterSharedElementCallback, setExitSharedElementCallback, setFeatureDrawable, setFeatureDrawableAlpha, setFeatureDrawableResource, setFeatureDrawableUri, setFinishOnTouchOutside, setImmersive, setIntent, setMediaController, setPictureInPictureParams, setProgress, setProgressBarIndeterminate, setProgressBarIndeterminateVisibility, setProgressBarVisibility, setRequestedOrientation, setResult, setResult, setSecondaryProgress, setShowWhenLocked, setTaskDescription, setTheme, setTitle, setTitle, setTitleColor, setTurnScreenOn, setVisible, setVolumeControlStream, setVrModeEnabled, shouldShowRequestPermissionRationale, shouldUpRecreateTask, showAssist, showDialog, showDialog, showLockTaskEscapeMessage, startActionMode, startActionMode, startActivities, startActivities, startActivity, startActivity, startActivityForResult, startActivityForResult, startActivityFromChild, startActivityFromChild, startActivityFromFragment, startActivityFromFragment, startActivityIfNeeded, startActivityIfNeeded, startIntentSender, startIntentSender, startIntentSenderForResult, startIntentSenderForResult, startIntentSenderFromChild, startIntentSenderFromChild, startLocalVoiceInteraction, startLockTask, startManagingCursor, startNextMatchingActivity, startNextMatchingActivity, startPostponedEnterTransition, startSearch, stopLocalVoiceInteraction, stopLockTask, stopManagingCursor, takeKeyEvents, triggerSearch, unregisterForContextMenu
      • Methods inherited from class android.view.ContextThemeWrapper

        applyOverrideConfiguration, getAssets, getResources, getTheme
      • Methods inherited from class android.content.ContextWrapper

        bindService, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingPermission, checkCallingUriPermission, checkPermission, checkSelfPermission, checkUriPermission, checkUriPermission, clearWallpaper, createConfigurationContext, createContextForSplit, createDeviceProtectedStorageContext, createDisplayContext, createPackageContext, databaseList, deleteDatabase, deleteFile, deleteSharedPreferences, enforceCallingOrSelfPermission, enforceCallingOrSelfUriPermission, enforceCallingPermission, enforceCallingUriPermission, enforcePermission, enforceUriPermission, enforceUriPermission, fileList, getApplicationContext, getApplicationInfo, getBaseContext, getCacheDir, getClassLoader, getCodeCacheDir, getContentResolver, getDatabasePath, getDataDir, getDir, getExternalCacheDir, getExternalCacheDirs, getExternalFilesDir, getExternalFilesDirs, getExternalMediaDirs, getFilesDir, getFileStreamPath, getMainExecutor, getMainLooper, getNoBackupFilesDir, getObbDir, getObbDirs, getPackageCodePath, getPackageManager, getPackageName, getPackageResourcePath, getSharedPreferences, getSystemServiceName, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isDeviceProtectedStorage, isRestricted, moveDatabaseFrom, moveSharedPreferencesFrom, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, registerReceiver, registerReceiver, registerReceiver, registerReceiver, removeStickyBroadcast, removeStickyBroadcastAsUser, revokeUriPermission, revokeUriPermission, sendBroadcast, sendBroadcast, sendBroadcastAsUser, sendBroadcastAsUser, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcastAsUser, sendStickyBroadcast, sendStickyBroadcastAsUser, sendStickyOrderedBroadcast, sendStickyOrderedBroadcastAsUser, setWallpaper, setWallpaper, startForegroundService, startInstrumentation, startService, stopService, unbindService, unregisterReceiver
      • Methods inherited from class android.content.Context

        getColor, getColorStateList, getDrawable, getString, getString, getSystemService, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, registerComponentCallbacks, unregisterComponentCallbacks
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface android.view.Window.Callback

        onPointerCaptureChanged
    • Field Detail

      • logger

        protected static final java.util.logging.Logger logger
      • appClass

        protected java.lang.String appClass
        The application class to start
      • app

        protected com.jme3.app.LegacyApplication app
        The jme3 application object
      • eglBitsPerPixel

        protected int eglBitsPerPixel
        Sets the desired RGB size for the surfaceview. 16 = RGB565, 24 = RGB888. (default = 24)
      • eglAlphaBits

        protected int eglAlphaBits
        Sets the desired number of Alpha bits for the surfaceview. This affects how the surfaceview is able to display Android views that are located under the surfaceview jME uses to render the scenegraph. 0 = Opaque surfaceview background (fastest) 1->7 = Transparent surfaceview background 8 or higher = Translucent surfaceview background (default = 0)
      • eglDepthBits

        protected int eglDepthBits
        The number of depth bits specifies the precision of the depth buffer. (default = 16)
      • eglSamples

        protected int eglSamples
        Sets the number of samples to use for multisampling.
        Leave 0 (default) to disable multisampling.
        Set to 2 or 4 to enable multisampling.
      • eglStencilBits

        protected int eglStencilBits
        Set the number of stencil bits. (default = 0)
      • frameRate

        protected int frameRate
        Set the desired frame rate. If frameRate higher than 0, the application will be capped at the desired frame rate. (default = -1, no frame rate cap)
      • audioRendererType

        protected java.lang.String audioRendererType
        Sets the type of Audio Renderer to be used.

        Android MediaPlayer / SoundPool can be used on all supported Android platform versions (2.2+)
        OpenAL Soft uses an OpenSL backend and is only supported on Android versions 2.3+.

        Only use ANDROID_ static strings found in AppSettings

      • joystickEventsEnabled

        protected boolean joystickEventsEnabled
        If true Android Sensors are used as simulated Joysticks. Users can use the Android sensor feedback through the RawInputListener or by registering JoyAxisTriggers.
      • keyEventsEnabled

        protected boolean keyEventsEnabled
        If true KeyEvents are generated from TouchEvents
      • mouseEventsEnabled

        protected boolean mouseEventsEnabled
        If true MouseEvents are generated from TouchEvents
      • mouseEventsInvertX

        protected boolean mouseEventsInvertX
        Flip X axis
      • mouseEventsInvertY

        protected boolean mouseEventsInvertY
        Flip Y axis
      • finishOnAppStop

        protected boolean finishOnAppStop
        if true finish this activity when the jme app is stopped
      • handleExitHook

        protected boolean handleExitHook
        set to false if you don't want the harness to handle the exit hook
      • exitDialogTitle

        protected java.lang.String exitDialogTitle
        Title of the exit dialog, default is "Do you want to exit?"
      • exitDialogMessage

        protected java.lang.String exitDialogMessage
        Message of the exit dialog, default is "Use your home key to bring this app into the background or exit to terminate it."
      • screenFullScreen

        protected boolean screenFullScreen
        Set the screen window mode. If screenFullSize is true, then the notification bar and title bar are removed and the screen covers the entire display. If screenFullSize is false, then the notification bar remains visible if screenShowTitle is true while screenFullScreen is false, then the title bar is also displayed under the notification bar.
      • screenShowTitle

        protected boolean screenShowTitle
        if screenShowTitle is true while screenFullScreen is false, then the title bar is also displayed under the notification bar
      • splashPicID

        protected int splashPicID
        Splash Screen picture Resource ID. If a Splash Screen is desired, set splashPicID to the value of the Resource ID (i.e. R.drawable.picname). If splashPicID = 0, then no splash screen will be displayed.
      • view

        protected android.opengl.GLSurfaceView view
      • isGLThreadPaused

        protected boolean isGLThreadPaused
      • splashImageView

        protected android.widget.ImageView splashImageView
      • frameLayout

        protected android.widget.FrameLayout frameLayout
    • Constructor Detail

      • AndroidHarness

        public AndroidHarness()
    • Method Detail

      • onRetainNonConfigurationInstance

        public java.lang.Object onRetainNonConfigurationInstance()
        Overrides:
        onRetainNonConfigurationInstance in class android.app.Activity
      • onCreate

        public void onCreate​(android.os.Bundle savedInstanceState)
        Overrides:
        onCreate in class android.app.Activity
      • onRestart

        protected void onRestart()
        Overrides:
        onRestart in class android.app.Activity
      • onStart

        protected void onStart()
        Overrides:
        onStart in class android.app.Activity
      • onResume

        protected void onResume()
        Overrides:
        onResume in class android.app.Activity
      • onPause

        protected void onPause()
        Overrides:
        onPause in class android.app.Activity
      • onStop

        protected void onStop()
        Overrides:
        onStop in class android.app.Activity
      • onDestroy

        protected void onDestroy()
        Overrides:
        onDestroy in class android.app.Activity
      • getJmeApplication

        public com.jme3.app.Application getJmeApplication()
      • handleError

        public void handleError​(java.lang.String errorMsg,
                                java.lang.Throwable t)
        Called when an error has occurred. By default, will show an error message to the user and print the exception/error to the log.
        Specified by:
        handleError in interface com.jme3.system.SystemListener
      • onClick

        public void onClick​(android.content.DialogInterface dialog,
                            int whichButton)
        Called by the android alert dialog, terminate the activity and OpenGL rendering
        Specified by:
        onClick in interface android.content.DialogInterface.OnClickListener
        Parameters:
        dialog - ignored
        whichButton - the button index
      • onTouch

        public void onTouch​(java.lang.String name,
                            com.jme3.input.event.TouchEvent evt,
                            float tpf)
        Gets called by the InputManager on all touch/drag/scale events
        Specified by:
        onTouch in interface com.jme3.input.controls.TouchListener
      • layoutDisplay

        public void layoutDisplay()
      • removeSplashScreen

        public void removeSplashScreen()
      • initializeLogHandler

        protected void initializeLogHandler()
        Removes the standard Android log handler due to an issue with not logging entries lower than INFO level and adds a handler that produces JME formatted log messages.
      • initialize

        public void initialize()
        Specified by:
        initialize in interface com.jme3.system.SystemListener
      • reshape

        public void reshape​(int width,
                            int height)
        Specified by:
        reshape in interface com.jme3.system.SystemListener
      • rescale

        public void rescale​(float x,
                            float y)
        Specified by:
        rescale in interface com.jme3.system.SystemListener
      • update

        public void update()
        Specified by:
        update in interface com.jme3.system.SystemListener
      • requestClose

        public void requestClose​(boolean esc)
        Specified by:
        requestClose in interface com.jme3.system.SystemListener
      • destroy

        public void destroy()
        Specified by:
        destroy in interface com.jme3.system.SystemListener
      • gainFocus

        public void gainFocus()
        Specified by:
        gainFocus in interface com.jme3.system.SystemListener
      • loseFocus

        public void loseFocus()
        Specified by:
        loseFocus in interface com.jme3.system.SystemListener