Class AndroidApplication

java.lang.Object
android.content.Context
android.content.ContextWrapper
android.view.ContextThemeWrapper
android.app.Activity
arc.backend.android.AndroidApplication
All Implemented Interfaces:
android.content.ComponentCallbacks, android.content.ComponentCallbacks2, android.view.KeyEvent.Callback, android.view.LayoutInflater.Factory, android.view.LayoutInflater.Factory2, android.view.View.OnCreateContextMenuListener, android.view.Window.Callback, Application, Disposable

public class AndroidApplication extends android.app.Activity implements Application
An implementation of the Application interface for Android. Create an Activity that derives from this class. In the Activity.onCreate(Bundle) method call the initialize(ApplicationListener) method specifying the configuration for the GLSurfaceView.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static interface 
    A listener for special Android events such onActivityResult(...).

    Nested classes/interfaces inherited from interface arc.Application

    Application.ApplicationType
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected Audio
     
    protected android.content.ClipboardManager
     
    protected final Seq<Runnable>
     
    protected AndroidFiles
     
    protected AndroidGraphics
     
    android.os.Handler
     
    protected boolean
     
    protected AndroidInput
     
    protected final Seq<ApplicationListener>
     
    static final int
     
    protected final Seq<Runnable>
     
    protected Settings
     
    protected boolean
     

    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_INCLUDE_CAPABILITIES, BIND_NOT_FOREGROUND, BIND_NOT_PERCEPTIBLE, BIND_WAIVE_PRIORITY, BIOMETRIC_SERVICE, 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, ROLE_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
    Adds an event listener for Android specific event such as onActivityResult(...).
    protected android.widget.FrameLayout.LayoutParams
     
    protected void
    createWakeLock(boolean use)
     
    void
    Schedule an exit from the application.
     
    Returns a list of all the application listeners used.
    long
     
     
    int
     
    protected void
    hideStatusBar(boolean hide)
     
    void
    This method has to be called in the Activity.onCreate(Bundle) method.
    void
    This method has to be called in the Activity.onCreate(Bundle) method.
    android.view.View
    This method has to be called in the Activity.onCreate(Bundle) method.
    android.view.View
    This method has to be called in the Activity.onCreate(Bundle) method.
    protected void
    onActivityResult(int requestCode, int resultCode, android.content.Intent data)
     
    void
    onConfigurationChanged(android.content.res.Configuration config)
     
    protected void
     
    protected void
     
    protected void
     
    void
    onWindowFocusChanged(boolean hasFocus)
     
    boolean
    Open a folder in the system's file browser.
    boolean
    Launches the default browser to display a URI.
    void
    post(Runnable runnable)
    Posts a runnable on the main loop thread.
    void
     
    void
    useImmersiveMode(boolean use)
     

    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, onApplyThemeResource, onAttachedToWindow, onAttachFragment, onBackPressed, onChildTitleChanged, onContentChanged, onContextItemSelected, onContextMenuClosed, onCreate, onCreate, onCreateContextMenu, onCreateDescription, onCreateDialog, onCreateDialog, onCreateNavigateUpTaskStack, onCreateOptionsMenu, onCreatePanelMenu, onCreatePanelView, onCreateThumbnail, onCreateView, onCreateView, onDetachedFromWindow, onEnterAnimationComplete, onGenericMotionEvent, onGetDirectActions, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyShortcut, onKeyUp, onLocalVoiceInteractionStarted, onLocalVoiceInteractionStopped, onLowMemory, onMenuItemSelected, onMenuOpened, onMultiWindowModeChanged, onMultiWindowModeChanged, onNavigateUp, onNavigateUpFromChild, onNewIntent, onOptionsItemSelected, onOptionsMenuClosed, onPanelClosed, onPerformDirectAction, onPictureInPictureModeChanged, onPictureInPictureModeChanged, onPostCreate, onPostCreate, onPostResume, onPrepareDialog, onPrepareDialog, onPrepareNavigateUpTaskStack, onPrepareOptionsMenu, onPreparePanel, onProvideAssistContent, onProvideAssistData, onProvideKeyboardShortcuts, onProvideReferrer, onRequestPermissionsResult, onRestart, onRestoreInstanceState, onRestoreInstanceState, onRetainNonConfigurationInstance, onSaveInstanceState, onSaveInstanceState, onSearchRequested, onSearchRequested, onStart, onStateNotSaved, onStop, onTitleChanged, onTopResumedActivityChanged, onTouchEvent, onTrackballEvent, onTrimMemory, onUserInteraction, onUserLeaveHint, onVisibleBehindCanceled, onWindowAttributesChanged, onWindowStartingActionMode, onWindowStartingActionMode, openContextMenu, openOptionsMenu, overridePendingTransition, postponeEnterTransition, recreate, registerActivityLifecycleCallbacks, 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, setInheritShowWhenLocked, 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, unregisterActivityLifecycleCallbacks, unregisterForContextMenu

    Methods inherited from class android.view.ContextThemeWrapper

    applyOverrideConfiguration, getAssets, getResources, getTheme, setTheme

    Methods inherited from class android.content.ContextWrapper

    bindIsolatedService, bindService, 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, getOpPackageName, 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, updateServiceGroup

    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 arc.util.Disposable

    isDisposed

    Methods inherited from interface android.view.Window.Callback

    onPointerCaptureChanged
  • Field Details

    • MINIMUM_SDK

      public static final int MINIMUM_SDK
      See Also:
    • listeners

      protected final Seq<ApplicationListener> listeners
    • runnables

      protected final Seq<Runnable> runnables
    • executedRunnables

      protected final Seq<Runnable> executedRunnables
    • handler

      public android.os.Handler handler
    • graphics

      protected AndroidGraphics graphics
    • input

      protected AndroidInput input
    • audio

      protected Audio audio
    • files

      protected AndroidFiles files
    • settings

      protected Settings settings
    • clipboard

      protected android.content.ClipboardManager clipboard
    • useImmersiveMode

      protected boolean useImmersiveMode
    • hideStatusBar

      protected boolean hideStatusBar
  • Constructor Details

    • AndroidApplication

      public AndroidApplication()
  • Method Details

    • initialize

      public void initialize(ApplicationListener listener)
      This method has to be called in the Activity.onCreate(Bundle) method. It sets up all the things necessary to get input, render via OpenGL and so on. Uses a default AndroidApplicationConfiguration.
      Parameters:
      listener - the ApplicationListener implementing the program logic
    • initialize

      public void initialize(ApplicationListener listener, AndroidApplicationConfiguration config)
      This method has to be called in the Activity.onCreate(Bundle) method. It sets up all the things necessary to get input, render via OpenGL and so on. You can configure other aspects of the application with the rest of the fields in the AndroidApplicationConfiguration instance.
      Parameters:
      listener - the ApplicationListener implementing the program logic
      config - the AndroidApplicationConfiguration, defining various settings of the application (use accelerometer, etc.).
    • initializeForView

      public android.view.View initializeForView(ApplicationListener listener)
      This method has to be called in the Activity.onCreate(Bundle) method. It sets up all the things necessary to get input, render via OpenGL and so on. Uses a default AndroidApplicationConfiguration.

      Note: you have to add the returned view to your layout!

      Parameters:
      listener - the ApplicationListener implementing the program logic
      Returns:
      the GLSurfaceView of the application
    • initializeForView

      public android.view.View initializeForView(ApplicationListener listener, AndroidApplicationConfiguration config)
      This method has to be called in the Activity.onCreate(Bundle) method. It sets up all the things necessary to get input, render via OpenGL and so on. You can configure other aspects of the application with the rest of the fields in the AndroidApplicationConfiguration instance.

      Note: you have to add the returned view to your layout!

      Parameters:
      listener - the ApplicationListener implementing the program logic
      config - the AndroidApplicationConfiguration, defining various settings of the application (use accelerometer, etc.).
      Returns:
      the GLSurfaceView of the application
    • createLayoutParams

      protected android.widget.FrameLayout.LayoutParams createLayoutParams()
    • createWakeLock

      protected void createWakeLock(boolean use)
    • hideStatusBar

      protected void hideStatusBar(boolean hide)
    • onWindowFocusChanged

      public void onWindowFocusChanged(boolean hasFocus)
      Specified by:
      onWindowFocusChanged in interface android.view.Window.Callback
      Overrides:
      onWindowFocusChanged in class android.app.Activity
    • useImmersiveMode

      public void useImmersiveMode(boolean use)
    • onPause

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

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

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

      public boolean openFolder(String file)
      Description copied from interface: Application
      Open a folder in the system's file browser.
      Specified by:
      openFolder in interface Application
      Returns:
      whether this operation was successful.
    • openURI

      public boolean openURI(String URI)
      Description copied from interface: Application
      Launches the default browser to display a URI. If the default browser is not able to handle the specified URI, the application registered for handling URIs of the specified type is invoked. The application is determined from the protocol and path of the URI. A best effort is made to open the given URI; however, since external applications are involved, no guarantee can be made as to whether the URI was actually opened. If it is known that the URI was not opened, false will be returned; otherwise, true will be returned.
      Specified by:
      openURI in interface Application
      Parameters:
      URI - the URI to be opened.
      Returns:
      false if it is known the uri was not opened, true otherwise.
    • getType

      public Application.ApplicationType getType()
      Specified by:
      getType in interface Application
      Returns:
      what Application.ApplicationType this application has, e.g. Android or Desktop
    • getVersion

      public int getVersion()
      Specified by:
      getVersion in interface Application
      Returns:
      the Android API level on Android, the major OS version on iOS (5, 6, 7, ..), or 0 on the desktop.
    • getNativeHeap

      public long getNativeHeap()
      Specified by:
      getNativeHeap in interface Application
      Returns:
      the Native heap memory use in bytes. Only valid on Android.
    • getClipboardText

      public String getClipboardText()
      Specified by:
      getClipboardText in interface Application
    • setClipboardText

      public void setClipboardText(String contents)
      Specified by:
      setClipboardText in interface Application
    • post

      public void post(Runnable runnable)
      Description copied from interface: Application
      Posts a runnable on the main loop thread.
      Specified by:
      post in interface Application
    • onConfigurationChanged

      public void onConfigurationChanged(android.content.res.Configuration config)
      Specified by:
      onConfigurationChanged in interface android.content.ComponentCallbacks
      Overrides:
      onConfigurationChanged in class android.app.Activity
    • exit

      public void exit()
      Description copied from interface: Application
      Schedule an exit from the application. On android, this will cause a call to pause() and dispose() some time in the future, it will not immediately finish your application. On iOS this should be avoided in production as it breaks Apples guidelines.
      Specified by:
      exit in interface Application
    • onActivityResult

      protected void onActivityResult(int requestCode, int resultCode, android.content.Intent data)
      Overrides:
      onActivityResult in class android.app.Activity
    • addResultListener

      public void addResultListener(Intc runner, AndroidApplication.AndroidEventListener listener)
      Adds an event listener for Android specific event such as onActivityResult(...).
    • getListeners

      public Seq<ApplicationListener> getListeners()
      Description copied from interface: Application
      Returns a list of all the application listeners used.
      Specified by:
      getListeners in interface Application