package com.jt.classlibrary;
import java.util.List;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.provider.Settings.Secure;
import android.util.Log;
public class LocationService extends Service implements LocationListener
{
/ / Private LocationAsyncTask asyncTask = null;
/ / Private Timer asyncTimer = null;
private LocationManager lm = null;
/ / Private Location loc = null;
private int iAutoUpdateFrequency = 10000;
private MyBroadcastReceiver broadcast = null;
private ServiceBinder binder = new ServiceBinder ();
public class ServiceBinder extends Binder
{
public LocationService getService ()
{
return LocationService.this;
}
}
@ Override
public void onCreate ()
{
/ / TODO Auto-generated method stub
try
{
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences (this);
iAutoUpdateFrequency = pref.getInt ("AUTO_UPDATE_FREQUENCE", 10000);
}
catch (Exception ex)
{
Log.e ("error", "Get SharedPreferences Failed ---->" + ex.getMessage ());
}
try
{
broadcast = new MyBroadcastReceiver ();
IntentFilter intentFilter = new IntentFilter ();
intentFilter.addAction (ConstDef.ACTION_REQUIRE_LOCATION);
/ / IntentFilter.addAction (ConstDef.ACTION_UPMYLOCATION);
registerReceiver (broadcast, intentFilter);
}
catch (Exception ex)
{
Log.e ("error", "Register Broadcast Failed ---->" + ex.getMessage ());
}
try
{
lm = (LocationManager) getSystemService (Context.LOCATION_SERVICE);
/ * Try
{
if (! lm.isProviderEnabled (LocationManager.GPS_PROVIDER))
{
if (ConstDef.bOpenGPS)
{
/ / Secure.setLocationProviderEnabled (getContentResolver (), LocationManager.GPS_PROVIDER, true);
}
}
if (! lm.isProviderEnabled (LocationManager.NETWORK_PROVIDER))
{
if (ConstDef.bOpenNET)
{
/ / Secure.setLocationProviderEnabled (getContentResolver (), LocationManager.NETWORK_PROVIDER, true);
}
}
}
catch (Exception ex)
{
Log.e ("error", "Open GPS or NET Failed ---->" + ex.getMessage ());
} * /
/ * Listproviders = lm.getProviders (false);
for (int i = 0; i{
Log.i ("info", providers.get (i));
} * /
if (lm.isProviderEnabled (LocationManager.GPS_PROVIDER))
{
lm.requestLocationUpdates (LocationManager.GPS_PROVIDER, iAutoUpdateFrequency, 1, this);
}
else if (lm.isProviderEnabled (LocationManager.NETWORK_PROVIDER))
{
lm.requestLocationUpdates (LocationManager.NETWORK_PROVIDER, iAutoUpdateFrequency, 1, this);
}
/ / AsyncTimer = new Timer ();
}
catch (Exception ex)
{
Log.e ("error", "Set LocationManager Failed ---->" + ex.getMessage ());
}
Log.i ("info", "LocationService Create Success");
}
@ Override
public int onStartCommand (Intent intent, int flags, int startId) {
/ / TODO Auto-generated method stub
return START_STICKY;
}
@ Override
public void onDestroy () {
/ / TODO Auto-generated method stub
unregisterReceiver (broadcast);
lm.removeUpdates (this);
Log.i ("info", "Service Destroy");
}
@ Override
public boolean onUnbind (Intent intent) {
/ / TODO Auto-generated method stub
Log.i ("info", "Service Unbind");
return super.onUnbind (intent);
}
private class MyBroadcastReceiver extends BroadcastReceiver
{
@ Override
public void onReceive (Context context, Intent intent)
{
/ / TODO Auto-generated method stub
if (intent.getAction (). equals (ConstDef.ACTION_REQUIRE_LOCATION))
{
new LocationAsyncTask () execute ((Void []) null);.
}
else if (intent.getAction (). equals (ConstDef.ACTION_UPMYLOCATION))
{
}
}
}
private class LocationAsyncTask extends AsyncTask
{
@ Override
protected Location doInBackground (Void. .. params) {
/ / TODO Auto-generated method stub
Location result = null;
for (int i = 0; i <5; i + +)
{
if (lm.isProviderEnabled (LocationManager.GPS_PROVIDER))
{
result = lm.getLastKnownLocation (LocationManager.GPS_PROVIDER);
if (result == null)
{
if (lm.isProviderEnabled (LocationManager.NETWORK_PROVIDER))
{
result = lm.getLastKnownLocation (LocationManager.NETWORK_PROVIDER);
}
}
}
else if (lm.isProviderEnabled (LocationManager.NETWORK_PROVIDER))
{
result = lm.getLastKnownLocation (LocationManager.NETWORK_PROVIDER);
}
if (result! = null)
{
break;
}
}
return result;
}
@ Override
protected void onPostExecute (Location result)
{
/ / TODO Auto-generated method stub
Intent intent = new Intent ();
intent.setAction (ConstDef.ACTION_LOCATION_DONE);
if (result == null)
{
intent.putExtra ("longitude", -1.0);
intent.putExtra ("latitude", -1.0);
}
else
{
intent.putExtra ("longitude", result.getLongitude ());
intent.putExtra ("latitude", result.getLatitude ());
}
sendBroadcast (intent);
}
}
@ Override
public void onLocationChanged (Location location) {
/ / TODO Auto-generated method stub
if (location! = null)
{
Log.i ("info", "Check Location Changed");
Intent intent = new Intent ();
intent.setAction (ConstDef.ACTION_LOCATION_DONE);
intent.putExtra ("longitude", location.getLongitude ());
intent.putExtra ("latitude", location.getLatitude ());
sendBroadcast (intent);
}
}
@ Override
public void onStatusChanged (String provider, int status, Bundle extras) {
/ / TODO Auto-generated method stub
}
@ Override
public void onProviderEnabled (String provider) {
/ / TODO Auto-generated method stub
}
@ Override
public void onProviderDisabled (String provider) {
/ / TODO Auto-generated method stub
}
@ Override
public IBinder onBind (Intent intent) {
/ / TODO Auto-generated method stub
Log.i ("info", "Service Bind");
return binder;
}
}
lm.isProviderEnabled (LocationManager.NETWORK_PROVIDER) is always false, but I'm really open up the network, GPS can determine, who knows how true?
Reply:
lm = (LocationManager) getSystemService (Context.LOCATION_SERVICE);
I'm here on a direct throw an exception
Reply:
Landlord solved yet, I also encountered the same problem
Reply:
Samsung i9100 made no google service, so do not have that network components, so always returns false, I also want to present a solution! With seeking ah
No comments:
Post a Comment