Package com.jme3.app

Class AndroidHarness

java.lang.Object
android.content.Context
android.content.ContextWrapper
android.view.ContextThemeWrapper
android.app.Activity
com.jme3.app.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
    The jme3 application object
    protected String
    The application class to start
    protected String
    Sets the type of Audio Renderer to be used.
    protected OGLESContext
     
    protected int
    Sets the desired number of Alpha bits for the surfaceview.
    protected int
    Sets the desired RGB size for the surfaceview.
    protected int
    The number of depth bits specifies the precision of the depth buffer.
    protected int
    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
    Set the number of stencil bits.
    protected String
    Message of the exit dialog, default is "Use your home key to bring this app into the background or exit to terminate it."
    protected String
    Title of the exit dialog, default is "Do you want to exit?"
    protected boolean
    if true finish this activity when the jme app is stopped
    protected android.widget.FrameLayout
     
    protected int
    Set the desired frame rate.
    protected boolean
    set to false if you don't want the harness to handle the exit hook
    protected boolean
     
    protected boolean
    If true Android Sensors are used as simulated Joysticks.
    protected boolean
    If true KeyEvents are generated from TouchEvents
    protected static final Logger
     
    protected boolean
    If true MouseEvents are generated from TouchEvents
    protected boolean
    Flip X axis
    protected boolean
    Flip Y axis
    protected boolean
    Set the screen window mode.
    protected boolean
    if screenShowTitle is true while screenFullScreen is false, then the title bar is also displayed under the notification bar
    protected android.widget.ImageView
     
    protected int
    Splash Screen picture Resource ID.
    protected android.opengl.GLSurfaceView
     

    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
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    void
     
    com.jme3.app.Application
     
    void
    Called when an error has occurred.
    void
     
    protected void
    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
     
    void
     
    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
     
    protected void
     
    protected void
     
    protected void
     
     
    protected void
     
    protected void
     
    void
    onTouch(String name, com.jme3.input.event.TouchEvent evt, float tpf)
    Gets called by the InputManager on all touch/drag/scale events
    void
     
    void
    requestClose(boolean esc)
     
    void
    rescale(float x, float y)
     
    void
    reshape(int width, int height)
     
    void
     

    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 Details

    • logger

      protected static final Logger logger
    • appClass

      protected 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 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 String exitDialogTitle
      Title of the exit dialog, default is "Do you want to exit?"
    • exitDialogMessage

      protected 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.
    • ctx

      protected OGLESContext ctx
    • view

      protected android.opengl.GLSurfaceView view
    • isGLThreadPaused

      protected boolean isGLThreadPaused
    • splashImageView

      protected android.widget.ImageView splashImageView
    • frameLayout

      protected android.widget.FrameLayout frameLayout
  • Constructor Details

    • AndroidHarness

      public AndroidHarness()
  • Method Details

    • onRetainNonConfigurationInstance

      public 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(String errorMsg, 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(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