From SDK version:

  • IDKit Android SDK version 3.0.9
  • ANSI&ISO Android SDK version 2.0.5
  • Segmentation Android SDK version 1.7.0 
  • IFace Android SDK version 2.7.0

there are three ways of getting HW ID. Every Android device should provide you either with IMEI or Serial Number according to this article.

NOTE: MAC address based HWID was the only way in older versions of above mentioned SDKs.

1. Serial number based HW ID - returned by IEngine_GetHardwareId function

2. IMEI based HW ID - returned by IEngine_GetHardwareId function if no serial number is found. You can also find the IMEI of your device in Settings->About phone->Status or by entering a special code *#06# using the device's keypad according to note that you have to add letter 'M' before the IMEI number and then add it to CRM license generator. For example if the IMEI=123456789012345 then the Hardware ID=M123456789012345. You also have to add following permission to application's manifest file in order to use IMEI as Hardware ID:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

3. MAC address based HW ID - MAC address based HW ID is not returned by function 
IEngine_GetHardwareId, please see this issue Get mac address on android device to find out how to get the MAC address.

IEngine_GetHardwareId function in C++ (method getHardwareId() in Java) is used to get the Hardware ID in IDKit SDK only. For other SDKs there are following functions to get he Hardware ID:
  • ANSI&ISO SDK - IEngine_GetHwid in C++, method getHardwareId() in Java
  • Segmentation SDK - ISegLib_GetHwid in C++,  method getHardwareId() in Java
  • IFace SDK - IFACE_Get_HardwareId