Logo
Api reference

NGHeadlessActivity

NGHeadlessActivity

Overview

The NGHeadlessActivity class extends ComponentActivity and provides essential methods for handling the lifecycle and interactions of a SoftPOS transaction activity. This includes managing the UI state, handling NFC operations, and providing themes and UI components.

Methods

provideTheme

Override to provide the theme color for the activity.

Returns

TypeDescription
ThemeProviderThe custom theme provider.

Usage

import android.graphics.Color
import com.neurogine.softpos.sdk.headless.NGHeadlessActivity
import com.neurogine.softpos.sdk.headless.ui.ThemeProvider

class ClientHeadlessImpl : NGHeadlessActivity() {
    override fun provideTheme(): ThemeProvider = CustomThemeProvider
}

object CustomThemeProvider : ThemeProvider() {
    override fun provideColors(darkTheme: Boolean): HeadlessColors = if (darkTheme) {
        HeadlessColorsDark().copy(
            primary = Color.CYAN,
            primaryForeground = Color.BLACK,
            secondary = Color.BLUE,
            secondaryForeground = Color.BLACK,
            approval = Color.GREEN,
            approvalForeground = Color.WHITE,
            error = Color.RED,
            errorForeground = Color.WHITE
        )
    } else {
        HeadlessColorsLight().copy(
            primary = Color.CYAN,
        )
    }
}

provideUi

Provides the UI components for the activity.

Returns

TypeDescription
UiProviderThe custom UI provider.

Usage

override fun provideUi(): UiProvider = CustomUiProvider()

You can provide the UI with Compose or as an inflated traditional XML view, for more details, see:

Companion Object

contract

Creates an activity result contract for starting the NGHeadlessActivity.

Parameters

NameTypeRequiredDescription
clsClass<out NGHeadlessActivity>RequiredThe class of your custom NGHeadlessActivity.

Returns

TypeDescription
ActivityResultContract<NGPoiRequest, NGWrappedResult<Transaction>>The activity result contract for the request NGPoiRequest and wrapped response NGWrappedResult<Transaction>.

Usage

val contract = NGHeadlessActivity.contract(MyHeadlessActivity::class.java)
val launcher = registerForActivityResult(contract) { result ->
    when (result) {
        is NGWrappedResult.Success -> {
            // Handle success
            val transaction = result.value
        }
        is NGWrappedResult.Failure -> {
            // Handle failure
            val errorCode = result.code
            val errorMessage = result.message
        }
    }
}

// Start the activity with a NGPoiRequest
val poiRequest = NGPoiRequest.ActionNew(/* initialize with appropriate parameters */)
launcher.launch(poiRequest)

On this page