CameraCaptureActivity

Shows the camera preview on screen while simultaneously recording it to a .mp4 file.

Every time we receive a frame from the camera, we need to:

  • Render the frame to the SurfaceView, on GLSurfaceView's renderer thread.

  • Render the frame to the mediacodec's input surface, on the encoder thread, if recording is enabled.

At any given time there are four things in motion:

  1. The UI thread, embodied by this Activity. We must respect -- or work around -- the app lifecycle changes. In particular, we need to release and reacquire the Camera so that, if the user switches away from us, we're not preventing another app from using the camera.

  2. The Camera, which will busily generate preview frames once we hand it a SurfaceTexture. We'll get notifications on the main UI thread unless we define a Looper on the thread where the SurfaceTexture is created (the GLSurfaceView renderer thread).

  3. The video encoder thread, embodied by TextureMovieEncoder. This needs to share the Camera preview external texture with the GLSurfaceView renderer, which means the EGLContext in this thread must be created with a reference to the renderer thread's context in hand.

  4. The GLSurfaceView renderer thread, embodied by CameraSurfaceRenderer. The thread is created for us by GLSurfaceView. We don't get callbacks for pause/resume or thread startup/shutdown, though we could generate messages from the Activity for most of these things. The EGLContext created on this thread must be shared with the video encoder, and must be used to create a SurfaceTexture that is used by the Camera. As the creator of the SurfaceTexture, it must also be the one to call updateTexImage(). The renderer thread is thus at the center of a multi-thread nexus, which is a bit awkward since it's the thread we have the least control over.

GLSurfaceView is fairly painful here. Ideally we'd create the video encoder, create an EGLContext for it, and pass that into GLSurfaceView to share. The API doesn't allow this, so we have to do it the other way around. When GLSurfaceView gets torn down (say, because we rotated the device), the EGLContext gets tossed, which means that when it comes back we have to re-create the EGLContext used by the video encoder. (And, no, the "preserve EGLContext on pause" feature doesn't help.)

We could simplify this quite a bit by using TextureView instead of GLSurfaceView, but that comes with a performance hit. We could also have the renderer thread drive the video encoder directly, allowing them to work from a single EGLContext, but it's useful to decouple the operations, and it's generally unwise to perform disk I/O on the thread that renders your UI.

We want to access Camera from the UI thread (setup, teardown) and the renderer thread (configure SurfaceTexture, start preview), but the API says you can only access the object from a single thread. So we need to pick one thread to own it, and the other thread has to access it remotely. Some things are simpler if we let the renderer thread manage it, but we'd really like to be sure that Camera is released before we leave onPause(), which means we need to make a synchronous call from the UI thread into the renderer thread, which we don't really have full control over. It's less scary to have the UI thread own Camera and have the renderer call back into the UI thread through the standard Handler mechanism.

(The [

  • camera docs](http://developer.android.com/training/camera/cameradirect.html#TaskOpenCamera) recommend accessing the camera from a non-UI thread to avoid bogging the UI thread down. Since the GLSurfaceView-managed renderer thread isn't a great choice, we might want to create a dedicated camera thread. Not doing that here.)

With three threads working simultaneously (plus Camera causing periodic events as frames arrive) we have to be very careful when communicating state changes. In general we want to send a message to the thread, rather than directly accessing state in the object.

 

To exercise the API a bit, the video encoder is required to survive Activity restarts. In the current implementation it stops recording but doesn't stop time from advancing, so you'll see a pause in the video. (We could adjust the timer to make it seamless, or output a "paused" message and hold on that in the recording, or leave the Camera running so it continues to generate preview frames while the Activity is paused.) The video encoder object is managed as a static property of the Activity.

Constructors

Link copied to clipboard
constructor()

Types

Link copied to clipboard
object Companion
Link copied to clipboard
inner class VideoRecordingTimer(millis: Long) : CountDownTimer

Properties

Link copied to clipboard
Link copied to clipboard
@get:NonNull
open override val lifecycle: Lifecycle
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
@get:NonNull
open override val viewModelStore: ViewModelStore

Functions

Link copied to clipboard
open override fun addContentView(p0: View, p1: ViewGroup.LayoutParams)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun bestShot(bestShot: BestShot)

Called up when the detector had the best shot.

Link copied to clipboard
open override fun bindIsolatedService(p0: Intent, p1: Int, p2: String, p3: Executor, p4: ServiceConnection): Boolean
Link copied to clipboard
open override fun bindService(p0: Intent, p1: ServiceConnection, p2: Int): Boolean
open override fun bindService(p0: Intent, p1: Int, p2: Executor, p3: ServiceConnection): Boolean
Link copied to clipboard
open override fun bindServiceAsUser(p0: Intent, p1: ServiceConnection, p2: Int, p3: UserHandle): Boolean
Link copied to clipboard
open override fun checkCallingOrSelfPermission(p0: String): Int
Link copied to clipboard
open override fun checkCallingOrSelfUriPermission(p0: Uri, p1: Int): Int
Link copied to clipboard
Link copied to clipboard
open override fun checkCallingPermission(p0: String): Int
Link copied to clipboard
open override fun checkCallingUriPermission(p0: Uri, p1: Int): Int
Link copied to clipboard
open override fun checkCallingUriPermissions(p0: MutableList<Uri>, p1: Int): IntArray
Link copied to clipboard
open override fun checkPermission(p0: String, p1: Int, p2: Int): Int
Link copied to clipboard
open override fun checkSelfPermission(p0: String): Int
Link copied to clipboard
open override fun checkUriPermission(p0: Uri, p1: Int, p2: Int, p3: Int): Int
open override fun checkUriPermission(p0: Uri?, p1: String?, p2: String?, p3: Int, p4: Int, p5: Int): Int
Link copied to clipboard
open override fun checkUriPermissions(p0: MutableList<Uri>, p1: Int, p2: Int, p3: Int): IntArray
Link copied to clipboard
open override fun clearWallpaper()
Link copied to clipboard
open fun closeContextMenu()
Link copied to clipboard
open fun closeOptionsMenu()
Link copied to clipboard
open override fun createAttributionContext(p0: String?): Context
Link copied to clipboard
Link copied to clipboard
open override fun createContext(p0: ContextParams): Context
Link copied to clipboard
open override fun createContextForSplit(p0: String): Context
Link copied to clipboard
open override fun createDisplayContext(p0: Display): Context
Link copied to clipboard
open override fun createPackageContext(p0: String, p1: Int): Context
Link copied to clipboard
Link copied to clipboard
open override fun createWindowContext(p0: Int, p1: Bundle?): Context
open override fun createWindowContext(p0: Display, p1: Int, p2: Bundle?): Context
Link copied to clipboard
open override fun databaseList(): Array<String>
Link copied to clipboard
open override fun deleteDatabase(p0: String): Boolean
Link copied to clipboard
open override fun deleteFile(p0: String): Boolean
Link copied to clipboard
open override fun deleteSharedPreferences(p0: String): Boolean
Link copied to clipboard
open override fun detection(detection: Rect, origImageSize: Size)

Called up when a face is found on the transmitted image.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun dispatchKeyEvent(p0: KeyEvent): Boolean
Link copied to clipboard
open override fun dispatchKeyShortcutEvent(p0: KeyEvent): Boolean
Link copied to clipboard
open override fun dispatchTouchEvent(p0: MotionEvent): Boolean
Link copied to clipboard
Link copied to clipboard
open override fun dump(@NonNull p0: String, @Nullable p1: FileDescriptor?, @NonNull p2: PrintWriter, @Nullable p3: Array<String>?)
Link copied to clipboard
Link copied to clipboard
open override fun enforceCallingOrSelfPermission(p0: String, p1: String?)
Link copied to clipboard
open override fun enforceCallingOrSelfUriPermission(p0: Uri, p1: Int, p2: String)
Link copied to clipboard
open override fun enforceCallingPermission(p0: String, p1: String?)
Link copied to clipboard
open override fun enforceCallingUriPermission(p0: Uri, p1: Int, p2: String)
Link copied to clipboard
open override fun enforcePermission(p0: String, p1: Int, p2: Int, p3: String?)
Link copied to clipboard
open override fun enforceUriPermission(p0: Uri, p1: Int, p2: Int, p3: Int, p4: String)
open override fun enforceUriPermission(p0: Uri?, p1: String?, p2: String?, p3: Int, p4: Int, p5: Int, p6: String?)
Link copied to clipboard
open override fun error(error: DetectionError)

Called up when an error occurs in the process of the best shot detector work.

Link copied to clipboard
open override fun faceFound()

found one face

Link copied to clipboard
open override fun fileList(): Array<String>
Link copied to clipboard
open fun <T : View> findViewById(p0: Int): T
Link copied to clipboard
open fun finish()
Link copied to clipboard
open fun finishActivity(p0: Int)
Link copied to clipboard
Link copied to clipboard
open fun finishAffinity()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getActionBar(): ActionBar?
Link copied to clipboard
Link copied to clipboard
open override fun getApplicationContext(): Context
Link copied to clipboard
open override fun getApplicationInfo(): ApplicationInfo
Link copied to clipboard
open override fun getAssets(): AssetManager
Link copied to clipboard
Link copied to clipboard
open override fun getAttributionTag(): String?
Link copied to clipboard
Link copied to clipboard
open override fun getCacheDir(): File
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun getClassLoader(): ClassLoader
Link copied to clipboard
open override fun getCodeCacheDir(): File
Link copied to clipboard
fun getColor(p0: Int): Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun getContentResolver(): ContentResolver
Link copied to clipboard
Link copied to clipboard
open fun getCurrentFocus(): View?
Link copied to clipboard
open override fun getDatabasePath(p0: String): File
Link copied to clipboard
open override fun getDataDir(): File
Link copied to clipboard
open override fun getDir(p0: String, p1: Int): File
Link copied to clipboard
open override fun getDisplay(): Display?
Link copied to clipboard
Link copied to clipboard
open override fun getExternalCacheDir(): File?
Link copied to clipboard
open override fun getExternalCacheDirs(): Array<File>
Link copied to clipboard
open override fun getExternalFilesDir(p0: String?): File?
Link copied to clipboard
open override fun getExternalFilesDirs(p0: String): Array<File>
Link copied to clipboard
open override fun getExternalMediaDirs(): Array<File>
Link copied to clipboard
open override fun getFilesDir(): File
Link copied to clipboard
open override fun getFileStreamPath(p0: String): File
Link copied to clipboard
Link copied to clipboard
open fun getIntent(): Intent
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun getMainExecutor(): Executor
Link copied to clipboard
open override fun getMainLooper(): Looper
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun getNoBackupFilesDir(): File
Link copied to clipboard
open override fun getObbDir(): File
Link copied to clipboard
open override fun getObbDirs(): Array<File>
Link copied to clipboard
open override fun getOpPackageName(): String
Link copied to clipboard
open override fun getPackageCodePath(): String
Link copied to clipboard
open override fun getPackageManager(): PackageManager
Link copied to clipboard
open override fun getPackageName(): String
Link copied to clipboard
open override fun getPackageResourcePath(): String
Link copied to clipboard
open override fun getParams(): ContextParams?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getReferrer(): Uri?
Link copied to clipboard
Link copied to clipboard
open override fun getResources(): Resources
Link copied to clipboard
Link copied to clipboard
open override fun getSharedPreferences(p0: String, p1: Int): SharedPreferences
Link copied to clipboard
Link copied to clipboard
fun getString(p0: Int): String
fun getString(p0: Int, vararg p1: Any): String
Link copied to clipboard
open override fun getSystemService(p0: String): Any
fun <T : Any> getSystemService(p0: Class<T>): T
Link copied to clipboard
open override fun getSystemServiceName(p0: Class<*>): String?
Link copied to clipboard
open fun getTaskId(): Int
Link copied to clipboard
Link copied to clipboard
open override fun getTheme(): Resources.Theme
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun getWallpaper(): Drawable
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getWindow(): Window
Link copied to clipboard
Link copied to clipboard
open override fun grantUriPermission(p0: String, p1: Uri, p2: Int)
Link copied to clipboard
Link copied to clipboard
open override fun interactionEnd(type: Int)

Called when interaction ended

Link copied to clipboard
open override fun interactionStart(type: Int)

Called when interaction started

Link copied to clipboard
open override fun interactionTimeout()
Link copied to clipboard
open override fun invalidateMenu()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun isDestroyed(): Boolean
Link copied to clipboard
open override fun isDeviceProtectedStorage(): Boolean
Link copied to clipboard
open fun isFinishing(): Boolean
Link copied to clipboard
open fun isImmersive(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun isRestricted(): Boolean
Link copied to clipboard
open fun isTaskRoot(): Boolean
Link copied to clipboard
open override fun isUiContext(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun livenessCheckStarted()
Link copied to clipboard
fun managedQuery(p0: Uri, p1: Array<String>, p2: String, p3: Array<String>, p4: String): Cursor
Link copied to clipboard
open override fun moveDatabaseFrom(p0: Context, p1: String): Boolean
Link copied to clipboard
open override fun moveSharedPreferencesFrom(p0: Context, p1: String): Boolean
Link copied to clipboard
Link copied to clipboard
open fun navigateUpTo(p0: Intent): Boolean
Link copied to clipboard
Link copied to clipboard
open override fun offlineLivenessCheckFailed()

offline liveness check estimation resulted in 'not live'

Link copied to clipboard
open override fun onActionModeFinished(p0: ActionMode)
Link copied to clipboard
open override fun onActionModeStarted(p0: ActionMode)
Link copied to clipboard
open fun onActivityReenter(p0: Int, p1: Intent)
Link copied to clipboard
open override fun onAttachedToWindow()
Link copied to clipboard
Link copied to clipboard
open override fun onBackPressed()
Link copied to clipboard
Link copied to clipboard
open override fun onContentChanged()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun onCreate(p0: Bundle?, p1: PersistableBundle?)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun onCreatePanelMenu(p0: Int, @NonNull p1: Menu): Boolean
Link copied to clipboard
open override fun onCreatePanelView(p0: Int): View?
Link copied to clipboard
Link copied to clipboard
open override fun onCreateView(@NonNull p0: String, @NonNull p1: Context, @NonNull p2: AttributeSet): View?
open override fun onCreateView(@Nullable p0: View?, @NonNull p1: String, @NonNull p2: Context, @NonNull p3: AttributeSet): View?
Link copied to clipboard
open override fun onDetachedFromWindow()
Link copied to clipboard
Link copied to clipboard
open override fun onFrameAvailable(st: SurfaceTexture)
Link copied to clipboard
Link copied to clipboard
open override fun onKeyDown(p0: Int, p1: KeyEvent): Boolean
Link copied to clipboard
open override fun onKeyLongPress(p0: Int, p1: KeyEvent): Boolean
Link copied to clipboard
open override fun onKeyMultiple(p0: Int, p1: Int, p2: KeyEvent): Boolean
Link copied to clipboard
open fun onKeyShortcut(p0: Int, p1: KeyEvent): Boolean
Link copied to clipboard
open override fun onKeyUp(p0: Int, p1: KeyEvent): Boolean
Link copied to clipboard
open override fun onlineLivenessCheckFailed()

online liveness check estimation resulted in 'not live'

Link copied to clipboard

online liveness request not succeeded at all

Link copied to clipboard
open override fun onLowMemory()
Link copied to clipboard
open override fun onMenuItemSelected(p0: Int, @NonNull p1: MenuItem): Boolean
Link copied to clipboard
open override fun onMenuOpened(p0: Int, p1: Menu): Boolean
Link copied to clipboard
Link copied to clipboard
open fun onNavigateUp(): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun onPanelClosed(p0: Int, @NonNull p1: Menu)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun onPreparePanel(p0: Int, @Nullable p1: View?, @NonNull p2: Menu): Boolean
Link copied to clipboard
fun onPreviewFirstFrame(data: ByteArray?, camera: Camera)
Link copied to clipboard
open override fun onPreviewFrame(data: ByteArray, camera: Camera)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun onSearchRequested(): Boolean
open override fun onSearchRequested(p0: SearchEvent?): Boolean
Link copied to clipboard
open override fun onStateNotSaved()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun onTrimMemory(p0: Int)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun onWindowFocusChanged(p0: Boolean)
Link copied to clipboard
open fun openContextMenu(p0: View)
Link copied to clipboard
open override fun openFileInput(p0: String): FileInputStream
Link copied to clipboard
open override fun openFileOutput(p0: String, p1: Int): FileOutputStream
Link copied to clipboard
open fun openOptionsMenu()
Link copied to clipboard
open fun overridePendingTransition(p0: Int, p1: Int)
open fun overridePendingTransition(p0: Int, p1: Int, p2: Int)
Link copied to clipboard
open override fun peekAvailableContext(): Context?
Link copied to clipboard
open override fun peekWallpaper(): Drawable
Link copied to clipboard
Link copied to clipboard
open fun recreate()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun registerReceiver(p0: BroadcastReceiver?, p1: IntentFilter): Intent?
open override fun registerReceiver(p0: BroadcastReceiver?, p1: IntentFilter, p2: Int): Intent?
open override fun registerReceiver(p0: BroadcastReceiver?, p1: IntentFilter, p2: String?, p3: Handler?): Intent?
open override fun registerReceiver(p0: BroadcastReceiver?, p1: IntentFilter, p2: String?, p3: Handler?, p4: Int): Intent?
Link copied to clipboard
Link copied to clipboard
fun removeDialog(p0: Int)
Link copied to clipboard
open override fun removeMenuProvider(@NonNull p0: MenuProvider)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun removeStickyBroadcast(p0: Intent)
Link copied to clipboard
open override fun removeStickyBroadcastAsUser(p0: Intent, p1: UserHandle)
Link copied to clipboard
open override fun reportFullyDrawn()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun <T : View> requireViewById(p0: Int): T & Any
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun revokeUriPermission(p0: Uri, p1: Int)
open override fun revokeUriPermission(p0: String, p1: Uri, p2: Int)
Link copied to clipboard
Link copied to clipboard
open override fun sendBroadcast(p0: Intent)
open override fun sendBroadcast(p0: Intent, p1: String?)
Link copied to clipboard
open override fun sendBroadcastAsUser(p0: Intent, p1: UserHandle)
open override fun sendBroadcastAsUser(p0: Intent, p1: UserHandle, p2: String?)
Link copied to clipboard
open override fun sendOrderedBroadcast(p0: Intent, p1: String?)
open override fun sendOrderedBroadcast(p0: Intent, p1: String?, p2: BroadcastReceiver?, p3: Handler?, p4: Int, p5: String?, p6: Bundle?)
open override fun sendOrderedBroadcast(p0: Intent, p1: String?, p2: String?, p3: BroadcastReceiver?, p4: Handler?, p5: Int, p6: String?, p7: Bundle?)
open fun sendOrderedBroadcast(p0: Intent, p1: Int, p2: String?, p3: String?, p4: BroadcastReceiver?, p5: Handler?, p6: String?, p7: Bundle?, p8: Bundle?)
Link copied to clipboard
open override fun sendOrderedBroadcastAsUser(p0: Intent, p1: UserHandle, p2: String?, p3: BroadcastReceiver?, p4: Handler?, p5: Int, p6: String?, p7: Bundle?)
Link copied to clipboard
open override fun sendStickyBroadcast(p0: Intent)
open override fun sendStickyBroadcast(p0: Intent, p1: Bundle?)
Link copied to clipboard
open override fun sendStickyBroadcastAsUser(p0: Intent, p1: UserHandle)
Link copied to clipboard
open override fun sendStickyOrderedBroadcast(p0: Intent, p1: BroadcastReceiver?, p2: Handler?, p3: Int, p4: String?, p5: Bundle?)
Link copied to clipboard
open override fun sendStickyOrderedBroadcastAsUser(p0: Intent, p1: UserHandle, p2: BroadcastReceiver?, p3: Handler?, p4: Int, p5: String?, p6: Bundle?)
Link copied to clipboard
open fun setActionBar(p0: Toolbar?)
Link copied to clipboard
open override fun setContentView(p0: View)
open override fun setContentView(@LayoutRes p0: Int)
open override fun setContentView(p0: View, p1: ViewGroup.LayoutParams)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun setImmersive(p0: Boolean)
Link copied to clipboard
Link copied to clipboard
open fun setIntent(p0: Intent)
Link copied to clipboard
open fun setLocusContext(p0: LocusId?, p1: Bundle?)
Link copied to clipboard
Link copied to clipboard
fun setProgress(p0: Int)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun setResult(p0: Int)
fun setResult(p0: Int, p1: Intent)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun setTheme(p0: Int)
open fun setTheme(p0: Resources.Theme?)
Link copied to clipboard
open fun setTitle(p0: CharSequence)
open fun setTitle(p0: Int)
Link copied to clipboard
open fun setTitleColor(p0: Int)
Link copied to clipboard
Link copied to clipboard
open fun setTurnScreenOn(p0: Boolean)
Link copied to clipboard
open fun setVisible(p0: Boolean)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun setWallpaper(p0: Bitmap)
open override fun setWallpaper(p0: InputStream)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun showAssist(p0: Bundle): Boolean
Link copied to clipboard
fun showDialog(p0: Int)
fun showDialog(p0: Int, p1: Bundle): Boolean
Link copied to clipboard
Link copied to clipboard
open override fun startActivities(p0: Array<Intent>)
open override fun startActivities(p0: Array<Intent>, p1: Bundle?)
Link copied to clipboard
open override fun startActivity(p0: Intent)
open override fun startActivity(p0: Intent, p1: Bundle?)
Link copied to clipboard
open override fun startActivityForResult(p0: Intent, p1: Int)
open override fun startActivityForResult(p0: Intent, p1: Int, @Nullable p2: Bundle?)
Link copied to clipboard
open fun startActivityFromChild(p0: Activity, p1: Intent, p2: Int)
open fun startActivityFromChild(p0: Activity, p1: Intent, p2: Int, p3: Bundle?)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun startInstrumentation(p0: ComponentName, p1: String?, p2: Bundle?): Boolean
Link copied to clipboard
open override fun startIntentSender(p0: IntentSender, p1: Intent?, p2: Int, p3: Int, p4: Int)
open override fun startIntentSender(p0: IntentSender, p1: Intent?, p2: Int, p3: Int, p4: Int, p5: Bundle?)
Link copied to clipboard
open override fun startIntentSenderForResult(p0: IntentSender, p1: Int, @Nullable p2: Intent?, p3: Int, p4: Int, p5: Int)
open override fun startIntentSenderForResult(p0: IntentSender, p1: Int, @Nullable p2: Intent?, p3: Int, p4: Int, p5: Int, @Nullable p6: Bundle?)
Link copied to clipboard
open fun startIntentSenderFromChild(p0: Activity, p1: IntentSender, p2: Int, p3: Intent, p4: Int, p5: Int, p6: Int)
open fun startIntentSenderFromChild(p0: Activity, p1: IntentSender, p2: Int, p3: Intent, p4: Int, p5: Int, p6: Int, p7: Bundle?)
Link copied to clipboard
open fun startIntentSenderFromFragment(@NonNull p0: Fragment, p1: IntentSender, p2: Int, @Nullable p3: Intent?, p4: Int, p5: Int, p6: Int, @Nullable p7: Bundle?)
Link copied to clipboard
Link copied to clipboard
open fun startLockTask()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun startSearch(p0: String?, p1: Boolean, p2: Bundle?, p3: Boolean)
Link copied to clipboard
open override fun startService(p0: Intent): ComponentName?
Link copied to clipboard
Link copied to clipboard
open fun stopLockTask()
Link copied to clipboard
Link copied to clipboard
open override fun stopService(p0: Intent): Boolean
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun takeKeyEvents(p0: Boolean)
Link copied to clipboard
open fun triggerSearch(p0: String, p1: Bundle?)
Link copied to clipboard
open override fun unbindService(p0: ServiceConnection)
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun unregisterReceiver(p0: BroadcastReceiver)
Link copied to clipboard
open override fun updateServiceGroup(p0: ServiceConnection, p1: Int, p2: Int)