public class ReplyWithAddressService extends Service{
public static final String GOOGLE_GEOCODER = "http://maps.googleapis.com/maps/api/geocode/json?latlng=";
private String msgRecipient;
private LocationManager manager;
private MyLocationListener listener;
private static double latitude = -1;
private static double longitude = -1;
private String provider;
private String smsMessageString = "";
public static String filenames = "AntiTheft";
SharedPreferences pref;
String email;
@Override
public IBinder onBind(Intent intent){
return null;
}
@Override
public void onCreate(){
super.onCreate();
Log.d(this.getClass().getName(), "Service created");
pref = getSharedPreferences(filenames, 0);
manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
listener = new MyLocationListener();
if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
provider = LocationManager.GPS_PROVIDER;
}
else if (manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
provider = LocationManager.NETWORK_PROVIDER;
}
manager.requestLocationUpdates(provider, 0, 0, listener);
}
@Override
public void onStart(Intent intent, int startId){
super.onStart(intent, startId);
Log.d(this.getClass().getName(), "Service started");
//Extract Intent Data
msgRecipient = intent.getStringExtra("number");
String emailAddress = pref.getString("keyemail", "");
String contact1 = pref.getString("contact1", "");
String contact2 = pref.getString("contact2", "");
Log.d(this.getClass().getName(), "Number: " + msgRecipient);
ConnectivityManager cManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cManager.getActiveNetworkInfo();
//Get Location
if (ReplyWithAddressService.latitude == -1 || ReplyWithAddressService.longitude == -1){
Location location = manager.getLastKnownLocation(provider);
if (location != null){
ReplyWithAddressService.latitude = location.getLatitude();
ReplyWithAddressService.longitude = location.getLongitude();
if (info != null){
if (info.isConnected()){
String address = ReplyWithAddressService.getAddressFromGPSData(ReplyWithAddressService.latitude, ReplyWithAddressService.longitude);
smsMessageString += "Current Location: " + address + ".";
}
}
smsMessageString += "Link: http://maps.google.com/maps?q=" + ReplyWithAddressService.latitude + "+" + ReplyWithAddressService.longitude;
Log.d("Message", smsMessageString);
}
else{
smsMessageString = "Location Data is Not Available";
}
}
SmsManager sManager = SmsManager.getDefault();
String number = msgRecipient;
String contactNo1 = contact1;
String contactNo2 = contact2;
email = emailAddress;
//Send SMS message
sManager.sendTextMessage(number, null, smsMessageString, null, null);
sManager.sendTextMessage(contactNo1, null, smsMessageString, null, null);
sManager.sendTextMessage(contactNo2, null, smsMessageString, null, null);
try{
sendMail();
} catch(MessagingException e){
e.printStackTrace();
}
stopSelf(startId);
}
I am developing a location tracker mobile apps and once the lost mobile phone retrieves the location, it will send the current location to a predefined email address and mobile phone numbers. It has no problem if my phone is connected to Wi-Fi, but when I turn off the Wi-Fi, I am not able to receive the location information via my email, I just want to know how can I do to check is there any Wi-Fi connected in my mobile, if yes, then Wi-Fi is preferred and if not, enable the mobile network automatically in order to send out the email message. My purpose is to make sure the email can be sent out under any condition (no matter Wi-Fi present or not)... Hope someone can help me, thanks...