2011-03-10 8 views
0

나는 이전에이 질문을했으며 몇 가지 대답을 들었지만 해결책이 없었습니다. 누군가 내가이 문제를 해결하기 위해해야 ​​할 일을 이해하도록 도와 줄 수 있습니까? 앱을 시작하기 전에 GPS를 활성화하지 않으면 내 앱이 강제 종료됩니다. 나는 안드로이드 프로그램을 프로그래밍하는 법을 배우고 있으며, 일부 대답은 이해하지 못한다. 어떤 코드가 문제를 일으키는 지와 문제를 해결하기 위해해야 ​​할 일을 지적 해주길 바란다. 더 많은 정보가 필요하면, 내가 필요한 것을 알려주십시오. 그리고 심각하게, 도와 주셔서 감사합니다 과이 '초보자.GPS가 활성화되어 있지 않으면 응용 프로그램이 닫힙니다.

public class GlenrochieMain extends Activity 
{ 
    //called when activity is first created 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // shows main layout 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    //GPS Functionality 

    LocationManager locationManager; 
    String context = Context.LOCATION_SERVICE; 
    locationManager = (LocationManager)getSystemService(context); 

    //Criteria for GPS 
    Criteria criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 
    criteria.setAltitudeRequired(false); 
    criteria.setBearingRequired(false); 
    criteria.setCostAllowed(true); 
    criteria.setPowerRequirement(Criteria.POWER_LOW); 
    String provider = locationManager.getBestProvider(criteria, true);  

    Location location = locationManager.getLastKnownLocation(provider); 
    updateWithNewLocation(location); 

    //updates location every 5second+5meters 
    locationManager.requestLocationUpdates(provider, 5000, 5, 
      locationListener); 
    } 

private final LocationListener locationListener = new LocationListener() { 
    public void onLocationChanged(Location location) { 
     updateWithNewLocation(location); 
    } 

    public void onProviderDisabled(String provider){ 
     updateWithNewLocation(null); 
    } 

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

    private void updateWithNewLocation(Location location) { 
    String latLongString; 
    TextView myLocationText; 
    myLocationText = (TextView)findViewById(R.id.myLocationText); 
    if (location != null) { 
     double lat = location.getLatitude(); 
     double lng = location.getLongitude(); 
     latLongString = "Lat:" + lat + "\nLong:" + lng; 
    } else { 
     latLongString = "No location found"; 
    } 
    myLocationText.setText("Your Current Position is:\n" + 
          latLongString); 
    } 










} 

답변

0

작동하지 않는 GPS에 대해서는 예외를 찾아야합니다. Exception catching을 수행하는 것은 대부분의 프로그래밍 언어의 안정성을 위해 매우 중요합니다.

+0

아픈 것이 나에게 설명해 주시면 이해할 수 있습니다. Vinay는 그가 말하고자하는 것에 대한 작은 예를 제시했으며, 그가 말하는 것을 완전히 이해합니다. 내 시각적 학습 ... 하하 – Kal

0

GPS 서비스가 활성화되어 있는지 확인하는 것이 좋습니다. 그렇다면 requestLocationUpdates를 호출하십시오. 샘플 코드는 다음과 같습니다 : 둘째

final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    // request updates here.. 
} 

, 당신은, 그래서 오직 GPS이를 제공 할 수있다 "Criteria.ACCURACY_FINE"을 찾고 있습니다. "LocationManager.GPS_PROVIDER"로 대체 할 수 있습니다.

또한 GPS는 저전력이 아닙니다.

+0

내 코드에서 어떻게 보이는지 보여 줄 수 있습니까? 나는 내가 가지고있는 것을 대체하거나 재 작성하지 않기를 바랬다. – Kal

+0

@Kal, 먼저 귀하의 요구 사항을 알려주십시오. 저전력 또는 고정밀도가 필요하십니까? 그것에 따라 몇 줄을 바꿔야합니다. – Vinay

관련 문제