# Android SDK

### Install Using **Android Studio**

1. Open the Project Structure dialog (`File > Project Structure...`).
2. Choose `Dependencies` from the left pane, then the main module (e.g. `app`).
3. Click the `+` button in the `Declared Dependencies` pane, and choose `1 Library Dependency` from the popup menu to open the `Add Library Dependency` dialog.
4. In the `Add Library Dependency` dialog, type `xyz.spindl` under Step 1 and press the `Search` button.
5. Choose the `xyz.spindl` | `sdk` result from the results table, and the highest version available.
6. Make sure `implementation` is selected under Step 2, and press `OK`.

### Initialize SDK

Setup a Spindl instance, e.g. in `MainActivity`:

```kotlin
class MainActivity : ComponentActivity() {
    private lateinit var spindl: Spindl

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val apiKey = getString(R.string.spindlApiKey)
        lifecycleScope.launch {
            spindl = Spindl(context = applicationContext, lifecycleOwner = this@MainActivity)
            spindl.initialize(apiKey = apiKey)
        }
    ...
```

### Track Events

Track events with the `track` method:

* `name` is required
* `properties` are optional

```kotlin
val properties = JsonObject()
properties.addProperty("prop1Key", "prop1Value")

spindl.track("eventName", properties)
```

### Identify Users

Once customers enter their customer ID (such as email) and/or wallet information (e.g., after logging in), connect that to the analytics by calling the `identify` method:

```kotlin
spindl.identify(walletAddress = wallet, customerUserId = userId)
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.spindl.xyz/spindl/techncial/android-sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
