2009-11-23 5 views
3

우리는 GPS를 사용하여 코드를 감지 할 수 있습니다. wifi를 통해 위치를 감지하고 싶습니까?WIFI를 사용하여 안드로이드 탐지 locatoin

어떻게 할 수 있습니까? 나는 simulataniously WIFI를 사용하여 다른 탐지 GPS를 사용하여 하나의 탐지 locaiton을 실행하는 두 스레드 싶어요.

답변

2

해당 페이지에서 this link과 "public static final String NETWORK_PROVIDER"를 확인하십시오.

또한이 오픈 소스 프로젝트는 GPS와 네트워크 위치를 모두 사용한다고 생각합니다 : Link. 다행히도 좋은 예입니다. ?

+0

gReporter에 대한 링크가 지금 아마도 그는 상업을했다 – Mawg

+0

이 gReporter처럼 보이는 :-(깨진 여기 지금 : https://github.com/n8fr8/georeport-android – Theo

0
public class FastMainActivity extends Activity { 

    Button searchBtn = null; 
    Intent locatorService = null; 
    AlertDialog alertDialog = null; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     searchBtn = (Button) findViewById(R.id.searchBtn); 

     searchBtn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       if (!startService()) { 
        CreateAlert("Error!", "Service Cannot be started"); 
       } else { 
        Toast.makeText(FastMainActivity.this, "Service Started", 
          Toast.LENGTH_LONG).show(); 
       } 

      } 
     }); 

    } 

    public boolean stopService() { 
     if (this.locatorService != null) { 
      this.locatorService = null; 
     } 
     return true; 
    } 

    public boolean startService() { 
     try { 
      // this.locatorService= new 
      // Intent(FastMainActivity.this,LocatorService.class); 
      // startService(this.locatorService); 

      FetchCordinates fetchCordinates = new FetchCordinates(); 
      fetchCordinates.execute(); 
      return true; 
     } catch (Exception error) { 
      return false; 
     } 

    } 

    public AlertDialog CreateAlert(String title, String message) { 
     AlertDialog alert = new AlertDialog.Builder(this).create(); 

     alert.setTitle(title); 

     alert.setMessage(message); 

     return alert; 

    } 

    public class FetchCordinates extends AsyncTask<String, Integer, String> { 
     ProgressDialog progDailog = null; 

     public double lati = 0.0; 
     public double longi = 0.0; 

     public LocationManager mLocationManager; 
     public VeggsterLocationListener mVeggsterLocationListener; 

     @Override 
     protected void onPreExecute() { 
      mVeggsterLocationListener = new VeggsterLocationListener(); 
      mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

      mLocationManager.requestLocationUpdates(
        LocationManager.NETWORK_PROVIDER, 0, 0, 
        mVeggsterLocationListener); 

      progDailog = new ProgressDialog(FastMainActivity.this); 
      progDailog.setOnCancelListener(new OnCancelListener() { 
       @Override 
       public void onCancel(DialogInterface dialog) { 
        FetchCordinates.this.cancel(true); 
       } 
      }); 
      progDailog.setMessage("Loading..."); 
      progDailog.setIndeterminate(true); 
      progDailog.setCancelable(true); 
      progDailog.show(); 

     } 

     @Override 
     protected void onCancelled(){ 
      System.out.println("Cancelled by user!"); 
      progDialog.dismiss(); 
      mLocationManager.removeUpdates(mVeggsterLocationListener); 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      progDailog.dismiss(); 

      Toast.makeText(FastMainActivity.this, 
        "LATITUDE :" + lati + " LONGITUDE :" + longi, 
        Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      // TODO Auto-generated method stub 

      while (this.lati == 0.0) { 

      } 
      return null; 
     } 

     public class VeggsterLocationListener implements LocationListener { 

      @Override 
      public void onLocationChanged(Location location) { 

       int lat = (int) location.getLatitude(); // * 1E6); 
       int log = (int) location.getLongitude(); // * 1E6); 
       int acc = (int) (location.getAccuracy()); 

       String info = location.getProvider(); 
       try { 

        // LocatorService.myLatitude=location.getLatitude(); 

        // LocatorService.myLongitude=location.getLongitude(); 

        lati = location.getLatitude(); 
        longi = location.getLongitude(); 

       } catch (Exception e) { 
        // progDailog.dismiss(); 
        // Toast.makeText(getApplicationContext(),"Unable to get Location" 
        // , Toast.LENGTH_LONG).show(); 
       } 

      } 

      @Override 
      public void onProviderDisabled(String provider) { 
       Log.i("OnProviderDisabled", "OnProviderDisabled"); 
      } 

      @Override 
      public void onProviderEnabled(String provider) { 
       Log.i("onProviderEnabled", "onProviderEnabled"); 
      } 

      @Override 
      public void onStatusChanged(String provider, int status, 
        Bundle extras) { 
       Log.i("onStatusChanged", "onStatusChanged"); 

      } 

     } 

    } 

}