2013年11月13日 星期三

[TQC+ Android]判斷地標所屬區域_308

1. 下載 google APIs 7 >> 專案右鍵 >> properties >> Android google APIs 7  >> AVD模擬器google APIs 開啟
2.  Application add (Users Liberary) 選 com.google.android.maps
3. 我們增加了android.permission.ACCESS_FINE_LOCATION的權限,主要是GPS的位置提供
除了FINE另外還有COARSE,可以透過其他的服務來取得位置(network: 3G or Wifi)

GDD03.java - Activity主體
package COM.TQC.GDD03;

import com.google.android.maps.GeoPoint;

import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;

public class GDD03 extends Activity implements LocationListener
{
  public String strLocationPrivider = "";
  public TextView mTextView01;
  LocationManager lm;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    lm = (LocationManager) getSystemService(LOCATION_SERVICE);
    
    mTextView01 = (TextView)findViewById(R.id.myTextView1);
    getLocationPrivider();
  }
  
  public void getLocationPrivider()
  {
    try
    {
      Criteria mCriteria01 = new Criteria();
      mCriteria01.setAccuracy(Criteria.ACCURACY_FINE);
      mCriteria01.setAltitudeRequired(false);
      mCriteria01.setBearingRequired(false);
      mCriteria01.setCostAllowed(true);
      mCriteria01.setPowerRequirement(Criteria.POWER_LOW);
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
  }

@Override
protected void onResume() {
 // TODO Auto-generated method stub
 super.onResume();
 strLocationPrivider = lm.getBestProvider(new Criteria(), true);
 lm.requestLocationUpdates(strLocationPrivider, 5000, 0, this);
 Location l = lm.getLastKnownLocation(strLocationPrivider);
 if(l != null )
  onLocationChanged(l);
}

@Override
public void onLocationChanged(Location location) {
 // TODO Auto-generated method stub
 double la = location.getLatitude()*1E6, lo= location.getLongitude()*1E6;
 GeoPoint gp = new GeoPoint((int)la, (int)lo);
 if(gp.getLatitudeE6()/1E6 <= 25.051578 && gp.getLatitudeE6()/1E6 >= 25.051201 
   && gp.getLongitudeE6()/1E6 >= 121.549197 && gp.getLongitudeE6()/1E6 <= 121.549666)
  mTextView01.setText(getString(R.string.str_inside));
 else
  mTextView01.setText(getString(R.string.str_outside));
}

@Override
public void onProviderDisabled(String provider) {
 // TODO Auto-generated method stub
 
}

@Override
public void onProviderEnabled(String provider) {
 // TODO Auto-generated method stub
 
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
 // TODO Auto-generated method stub
 
}
}

沒有留言:

張貼留言