We are trying to reward with some kind of a coupon which can be redeemed at a physical store, whenever a new installation is done on a device. We did some trials on this and verify that it is a new device based on IMEI & IMSI. But we found people do it on some emulators where these IDs can be manipulated and mimicking a new device. How can this be avoided?
We are currently using like this
    TelephonyManager m_telephonyManager = (TelephonyManager) context.getSystemService(serviceName);
    String IMEI, IMSI;
    IMEI = m_telephonyManager.getDeviceId();
    IMSI = m_telephonyManager.getSubscriberId();
    return IMEI + ":" + IMSI;
I am sure there is a way since the ad networks which drive installs correctly attribute it only once per device.