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 http://www.phonearena.com/news/How-to-find-a-phones-IMEI-number_id62867Please 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.

NOTE:
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