package eu.tpmusielak.securephoto.verification.geo; import android.content.Context; import android.graphics.drawable.Drawable; import android.telephony.TelephonyManager; import android.telephony.gsm.GsmCellLocation; import eu.tpmusielak.securephoto.verification.VerifierBinder; import eu.tpmusielak.securephoto.verification.VerifierWrapper; /** * Created by IntelliJ IDEA. * User: Tomasz P. Musielak * Date: 30/03/12 * Time: 18:45 */ public class CellularVerifierWrapper extends VerifierWrapper implements CellularDataProvider { private TelephonyManager telephonyManager; public CellularVerifierWrapper() { verifier = new CellularVerifier(this); } @Override public void register(VerifierBinder m) { super.register(m); telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); } @Override public Drawable getDrawable() { return context.getResources().getDrawable(R.drawable.ic_stat_basestation); } @Override public int getPreferenceID() { return R.xml.cell_prefs; } @Override public String getName() { return context.getResources().getString(R.string.cellular_verifier); } /** * Cellular data extraction inspired by: * <p/> * https://labs.ericsson.com/developer-community/blog/create-simple-cell-id-look-application-android */ @Override public CellularData getCellularData() { GsmCellLocation location = (GsmCellLocation) telephonyManager.getCellLocation(); if (location == null) { return new CellularData(0, 0, 0, 0, ""); } final int cid = location.getCid(); final int lac = location.getLac(); final String networkOperator = telephonyManager.getNetworkOperator(); final int mcc = Integer.parseInt(networkOperator.substring(0, 3)); final int mnc = Integer.parseInt(networkOperator.substring(3)); String simSerialNumber = telephonyManager.getSimSerialNumber(); simSerialNumber = simSerialNumber == null ? "N/A" : simSerialNumber; return new CellularData(cid, lac, mcc, mnc, simSerialNumber); } }