> For the complete documentation index, see [llms.txt](https://developer.tokeninc.com/token-developer-portal-1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.tokeninc.com/token-developer-portal-1/payment-service/new-device-integrations/t1-pro.md).

# T1 PRO

### Manifest.xml Configurations

```html
<manifest ... >
    ...
    <application ... >
        ...
        <meta-data android:name="app_name" android:value="BNK_ID_COMPANYNAME" /> 
        <meta-data android:name="app_model_type" android:value="T1PRO" /> // For T1 Pro devices
        <meta-data android:name="app_version" android:value="51000110" /> // Change Android  Version major/minor/build into integer. We kindly request this change. Version no must start with 510. Example: 51000110.
     </application>
...
```

### Device Info <a href="#device-info" id="device-info"></a>

**void getFiscalId(DeviceInfoResponseHandler deviceInfoResponseHandler)**

The `getFiscalId` function retrieves the fiscal ID from the service.

```kotlin
deviceInfo.getFiscalId(object: DeviceInfoResponseHandler {
    override fun onSuccess(result: String) {
        Log.i("Fiscal ID", result)

    }
    override fun onFail(errMessage: String) {
        Log.i("Error Message", errMessage)
    }
});
```

**Note:** The Fiscal ID will be in the format **AY**.....

### Important Considerations <a href="#important-considerations" id="important-considerations"></a>

#### Device Name <a href="#device-name" id="device-name"></a>

Device name will be "**T1PRO**".

When the device model information is obtained using the `Build.MODEL` field, it returns the value **`T1PRO`** for the corresponding device.

### UI Components V2&#x20;

{% file src="/files/qJEuTtaD2Ec8ZSB2HA8q" %}

**NOTE:** `uicomponents_v2.aar` will be used only on **T1Pro** devices for now.&#x20;

If your projects share the same codebase, `uicomponents_v2.aar` should be used only for **T1Pro** devices. This can be implemented using product flavors.

#### Required Changes for UI Components V2 Migration

**1-) Set Theme**

**NOTE:** You need to set the theme in the `onCreate()` method of all your Activities. Please note that `ThemeManager` is not available in `uicomponents_v1`&#x20;

{% tabs %}
{% tab title="Java" %}

```java
ThemeManager.INSTANCE.applyDeviceTheme(getTheme());
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
ThemeManager.applyDeviceTheme(this.theme) 
```

{% endtab %}
{% endtabs %}

**2-) EditTextInputType.Date**

To use the date input feature, you need to update the RecyclerView version in your `build.gradle` file. A version of `1.2.1` or later is sufficient.

```kts
implementation("androidx.recyclerview:recyclerview:1.2.1")
```

<div align="left"><figure><img src="/files/KkDgdtosJLQl1HnEuUHw" alt="" width="170"><figcaption><p>EditTextInputType.Date</p></figcaption></figure></div>

#### UI Components V2 Screens

#### ListMenuFragment           &#x20;

<div align="left"><figure><img src="/files/KyfHn1ZPmAEX3fJLHDxH" alt="" width="173"><figcaption><p> List Menu Fragment</p></figcaption></figure> <figure><img src="/files/f2gTL8UW9NSg41d2O9fk" alt="" width="173"><figcaption><p> ListMenuFragment <br>Sublist</p></figcaption></figure></div>

#### InputListFragment

<div align="left"><figure><img src="/files/2Fw1UWaXbT0MEplBM2Ha" alt="" width="173"><figcaption><p>InputListFragment</p></figcaption></figure></div>

#### Confirmation Dialog

Dialog types: ***Confirmed***, ***Warning***, ***Error***, ***Info***, ***Declined***, ***Connecting***, ***Downloading***, ***Uploading***, ***Processing***, ***Progress***, ***None***

<div align="left"><figure><img src="/files/GNyaUshwghqzqxtCysy1" alt="" width="197"><figcaption><p>Confirmed</p></figcaption></figure> <figure><img src="/files/QAUke4XX0GhLai02tHgn" alt="" width="197"><figcaption><p>Warning</p></figcaption></figure> <figure><img src="/files/R71XxqlEwqmgWoc650Gk" alt="" width="197"><figcaption><p>Error</p></figcaption></figure> <figure><img src="/files/cOjl8kEuNm36c1zZKNfp" alt="" width="197"><figcaption><p>Declined</p></figcaption></figure></div>

<div align="left"><figure><img src="/files/Ek46VaE4qTM1ukuUWsYF" alt="" width="166"><figcaption><p>Connecting</p></figcaption></figure> <figure><img src="/files/IoIb49XRVSe3Y4S5Q1rE" alt="" width="166"><figcaption><p>Downloading</p></figcaption></figure></div>

#### InformationDialog

Dialog types: ***Confirmed***, ***Warning***, ***Error***, ***Info***, ***Declined***, ***Connecting***, ***Downloading***, ***Uploading***, ***Processing***, ***Progress***, ***None***

<div align="left"><figure><img src="/files/e4gonoQuIPocF3w2BerT" alt="" width="194"><figcaption><p>Confirmed</p></figcaption></figure> <figure><img src="/files/1PpTMhYuAE7TTy83wrLJ" alt="" width="194"><figcaption><p>Warning</p></figcaption></figure> <figure><img src="/files/TAe9bKWE3L7iN6JLILQd" alt="" width="194"><figcaption><p>Error</p></figcaption></figure> <figure><img src="/files/lXl4oyReBGMR7qLfeHsx" alt="" width="194"><figcaption><p>Declined</p></figcaption></figure></div>

<div align="left"><figure><img src="/files/fdO00Z1TA7oZxLHTPF9N" alt="" width="171"><figcaption><p>Progress</p></figcaption></figure></div>

#### QR Screen

```kts
 val qrScreen330 = QrScreen330.newInstance(
     amountStr,
     "",
     getStrings(R.string.waiting_for_qr_code_to_read),
     qrString
  )
```

<div align="left"><figure><img src="/files/iIESr2JDtDhr3w9vq3l2" alt="" width="170"><figcaption><p>QrScreen</p></figcaption></figure></div>

### Printer Service

{% file src="/files/AmPwfeQNGdEDXRoeL1Bq" %}

Our new printer library provides three APIs. Their descriptions and usage examples are provided below.

#### void printBitmap(String name, int verticalMargin)

{% embed url="<https://developer.tokeninc.com/token-developer-portal-1/payment-service/system-and-security-services/printer-service#void-printbitmap-string-name-int-verticalmargin>" %}

#### void printAdditionalLogo(byte\[] bitmapData, int margin)

You can print your monochrome logo as a `bitmapArray` using this API. This is the recommended approach.

```kotlin
styledString.printAdditionalLogo(byteArray,0)
```

#### void printAdditionalLogo(int resID, int margin)

The static logos you place in the **raw** folder will be printed using this method. The logos must be monochrome. This is the recommended approach.

```
styledString.printAdditionalLogo(R.raw.logo,0)
```
