public class SMS_Service extends Service {
private final String LOGTAG = "SMS_Service";
String latLongString;
String addressString;
double altitude;
int LAC;
int mcc = 0;
int mnc = 0;
String pn_no;
Altitude_Details ld = new Altitude_Details();
@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}
@Override
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();
    Log.e(LOGTAG, "created");
}
@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    Log.e(LOGTAG, "destroyed");
}
@Override
public void onStart(Intent intent, int startId) {
    // TODO Auto-generated method stub
    super.onStart(intent, startId);
    Log.e(LOGTAG, "started");
    SmsManager sms = SmsManager.getDefault();
    // get phone number from shared preference
    SharedPreferences default1 = getSharedPreferences("Device",
            MODE_WORLD_WRITEABLE);
    pn_no = default1.getString("Phone_NO", "");
    Log.e("phone_no in sms service", pn_no);
    String From = intent.getStringExtra("From");
    String Msg = intent.getStringExtra("Msg"); // get message from intent
    Log.e("ON start:", "" + From);
    Log.e("ON start:", "" + Msg);
    String number = From.substring(7, 11);
    Log.e("ON start: SUBSTRING", "" + number);
    // check msg for Location keyword match or not
    if (Msg.equals("LOCATION") && pn_no.equals(number)) {
        Log.e("location:", "Location found");
        TelephonyManager tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        String networkOperator = tel.getNetworkOperator();
        // find MNC and MCC
        if (networkOperator != null) {
            mcc = Integer.parseInt(networkOperator.substring(0, 3));
            mnc = Integer.parseInt(networkOperator.substring(3));
            Log.e("MCC", "" + mcc);
            Log.e("MNC", "" + mnc);
        }
        // find LAC for GSM
        if (tel.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
            final GsmCellLocation location = (GsmCellLocation) tel
                    .getCellLocation();
            if (location != null) {
                LAC = location.getLac();
                Log.e("cell location", "LAC: " + location.getLac()
                        + " CID: " + location.getCid());
            }
        }
        LocationManager locationManager;
        String context = Context.LOCATION_SERVICE;
        locationManager = (LocationManager) getSystemService(context);
        String provider = LocationManager.GPS_PROVIDER;
        Location location = locationManager.getLastKnownLocation(provider);
        // update method return latest location
        updateWithNewLocation(location);
        // location change then listner called
        locationManager.requestLocationUpdates(provider, 2000, 10,
                locationListener);
        // send mcc,mnc,latitude,longitude,altitude,address,Link in message
        String Url = "http://itouchmap.com/latlong.html";
        sms.sendTextMessage(pn_no, null, "\nLocation:\n" + "MCC: " + mcc
                + "\nMNC: " + mnc + "\nLAC:" + LAC + latLongString
                + "\nAltitude:" + altitude + "feet"
                + "\nGo to Below site:\n" + Url, null, null);
        sms.sendTextMessage(pn_no, null, "\nAddress:\n" + addressString,
                null, null);
        // stop service automatically
        SMS_Service.this.stopSelf();
    }
    else {
        Log.e("loation:", "Location not found");
        SMS_Service.this.stopSelf();
    }
}
private final LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
        updateWithNewLocation(location);
    }
    public void onProviderDisabled(String provider) {
        updateWithNewLocation(null);
    }
    public void onProviderEnabled(String provider) {
    }
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
};
private void updateWithNewLocation(Location location) {
    // TODO Auto-generated method stub
    addressString = "\nno address found";
    // check location get or not from provider
    if (location != null) {
        // get latitude and longitude
        double latitude = location.getLatitude();
        double longitude = location.getLongitude();
        latLongString = "\nLat:" + latitude + "\nLong:" + longitude;
        Log.e("location", "" + latLongString);
        // get altitude from method
        altitude = ld.getElevationFromGoogleMaps(latitude, longitude);
        Log.e("Altitude", "" + altitude);
        // find address from latitude and longitude
        Geocoder gc = new Geocoder(this, Locale.getDefault());
        try {
            List<Address> addresses = gc.getFromLocation(latitude,
                    longitude, 1);
            StringBuilder sb = new StringBuilder();
            if (addresses.size() > 0) {
                Address address = addresses.get(0);
                for (int i = 0; i <= address.getMaxAddressLineIndex(); i++)
                    sb.append(address.getAddressLine(i)).append("\n");
            }
            addressString = sb.toString();
            Log.e("Address", "" + addressString);
        } catch (IOException e) {
        }
    } else {
        latLongString = "\n No location found";
        Log.e("location", "" + latLongString);
           }
     }
}
hey you can make the service and use this code to get altitude and latitude and decode this using class