API 10 (Google API)을 사용해서 GPS 좌표를 화면에 찍기 위한 Sample 코드를 만들어 보고 있습니다..


그런데.. 자꾸.. 제가 만든 App.이 죽네요..


그래서 디버깅을 해보니..


String provider = mLocationManager.getBestProvider(criteria, true);


요기서 provider return값이 null 이여서 자꾸 죽네요.


원래 기대값은.. "gps", "network" 같은.. 게 나와야 하는것 같은데..


왜 이런걸까요...??


AVD를 만들때 GPS Support도 추가했고.. 세팅에서 GPS도 ON했고.. 시간도 연관이 있을 수 있다고 해서 Seoul로 설정했고..


도대체 왜 이런걸까요..? 4일째 이것만 디버깅 하고 있는데.. 도움 부탁드립니다~~




제 소스는 아래와 같습니다.. 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

package kr.ac.kaist.frescagps;


import java.util.Locale;


import android.app.Activity;

import android.content.Context;

import android.location.Criteria;

import android.location.Geocoder;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;


public class FrescaGPSActivity extends Activity implements LocationListener{

    /** Called when the activity is first created. */

    private LocationManager mLocationManager = null; 

    

    

    Geocoder mGeocoder;

    private Location mLocation = null;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

                

       mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

       mGeocoder = new Geocoder(this, Locale.KOREAN);

        

       Criteria criteria = new Criteria();

       criteria.setAccuracy(Criteria.NO_REQUIREMENT);

       criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);

       

       

       

       Button button_get_gps = (Button) findViewById(R.id.button1);

       

       button_get_gps.setOnClickListener(new OnClickListener()

       {

public void onClick(View v) {

// TODO Auto-generated method stub

EditText edittext_gpsinfo = (EditText) findViewById(R.id.editText1);

edittext_gpsinfo.setText("");

}      

       

       });

       

       String provider = mLocationManager.getBestProvider(criteria, false);

       

       if(provider != null)

       {

      Log.e("Fresca", "Man1");

      

           mLocationManager.requestLocationUpdates(provider, 1000, 5, this);

           

           mLocation = mLocationManager.getLastKnownLocation(provider);

           

           updateWithNewLocation(mLocation);       

       }

       else

       {

      updateWithNewLocation(mLocation);

       }

    }



private void updateWithNewLocation(Location location) {

        String mLatLonString;

        EditText mLocationText = (EditText) findViewById(R.id.editText1);

         

        if(location != null) {

            double lat = location.getLatitude();

            double lon = location.getLongitude();

            mLatLonString = "Latitude :" + lat + "\nLongitude :" + lon;

        } else {

            mLatLonString = "Can't find your location";

        }

         

        mLocationText.setText("Location : " + mLatLonString);

}



public void onLocationChanged(Location location) {

// TODO Auto-generated method stub

updateWithNewLocation(location);

}



public void onProviderDisabled(String provider) {

// TODO Auto-generated method stub

updateWithNewLocation(null);

}



public void onProviderEnabled(String provider) {

// TODO Auto-generated method stub

}



public void onStatusChanged(String provider, int status, Bundle extras) {

// TODO Auto-generated method stub

}

}


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


도와주십쇼~~~~~~