마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

GPS소스 위치제공자 없다고 나타납니다.

0 추천
private LocationManager locManager;
 Geocoder geoCoder;
 private Location myLocation = null;
 double latPoint = 0;
 double lngPoint = 0;
 float speed = 0;
 String gps1 = "";// 위도
 String gps2 = "";// 경도
 String gps3 = "";// 주소
// 위치정보 객체
 LocationManager lm = null;
 // 위치정보 장치 이름
 String provider = null;

 void getGPS() {

  /** 위치정보 객체를 생성한다. */
  lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

  /** 현재 사용가능한 위치 정보 장치 검색 */
  // 위치정보 하드웨어 목록
  Criteria c = new Criteria();
  // 최적의 하드웨어 이름을 리턴받는다.
  provider = lm.getBestProvider(c, true);

  // 최적의 값이 없거나, 해당 장치가 사용가능한 상태가 아니라면,
  // 모든 장치 리스트에서 사용가능한 항목 얻기
  if (provider == null || !lm.isProviderEnabled(provider)) {
   // 모든 장치 목록
   List<String> list = lm.getAllProviders();

   for (int i = 0; i < list.size(); i++) {
    // 장치 이름 하나 얻기
    String temp = list.get(i);

    // 사용 가능 여부 검사
    if (lm.isProviderEnabled(temp)) {
     provider = temp;
     break;
    }
   }
  }// (end if)위치정보 검색 끝

  /** 마지막으로 조회했던 위치 얻기 */
  Location location = lm.getLastKnownLocation(provider);

  if (location == null) {
   Toast.makeText(this, "사용가능한 위치 정보 제공자가 없습니다.", Toast.LENGTH_SHORT)
     .show();
  } else {
   // 최종 위치에서 부터 이어서 GPS 시작...
   onLocationChanged(location);

  }
 }

 /** 이 화면이 불릴 때, 일시정지 해제 처리 */
 @Override
 public void onResume() {
  // Activity LifrCycle 관련 메서드는 무조건 상위 메서드 호출 필요
  super.onResume();

  // 위치정보 객체에 이벤트 연결
   //lm.requestLocationUpdates(provider, 500, 1, this);
 }

 /** 위치가 변했을 경우 호출된다. */
 @Override
 public void onLocationChanged(Location location) {
  // 위도, 경도
  double lat = location.getLatitude();
  double lng = location.getLongitude();

  /*
   * // String이외의 데이터 형을 String으로 변환하는 메서드
   * tv1.setText(String.valueOf(lat)); // String이외의 데이터 형을 String으로 변화하는
   * 꼼수~!! tv2.setText(lng +"");
   */

  // String이외의 데이터 형을 String으로 변환하는 메서드
  Log.i("", String.valueOf(lat) + " / " + String.valueOf(lng));

  Log.i("", "주소" + getAddress(lat, lng));
  gps1 = String.valueOf(lat);
  gps2 = String.valueOf(lng);
  gps3 = getAddress(lat, lng);

  // String이외의 데이터 형을 String으로 변화하는 꼼수~!!

 }

 @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

 }

 /** 위도와 경도 기반으로 주소를 리턴하는 메서드 */
 public String getAddress(double lat, double lng) {
  String address = null;

  // 위치정보를 활용하기 위한 구글 API 객체
  Geocoder geocoder = new Geocoder(this, Locale.getDefault());

  // 주소 목록을 담기 위한 HashMap
  List<Address> list = null;

  try {
   list = geocoder.getFromLocation(lat, lng, 1);
  } catch (Exception e) {
   e.printStackTrace();
  }

  if (list == null) {
   Log.e("getAddress", "주소 데이터 얻기 실패");
   return null;
  }

  if (list.size() > 0) {
   Address addr = list.get(0);
   address = addr.getCountryName() + " " + addr.getPostalCode() + " "
     + addr.getLocality() + " " + addr.getThoroughfare() + " "
     + addr.getFeatureName();
  }

  return address;

 }

 

gps 정보만 소스 담아놨어요  임포트는 첨부 안했어요

 

질문요점은 휴대폰 usb 연결후 실행했을때 첫화면에서 gps위치제공자가 없다고 나오는데 왜그런가요?

도뇽 (120 포인트) 님이 2014년 10월 17일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...