2012-05-03 45 views
1

我想检查设备是否从卫星获取数据。 如果我得到我目前的位置,然后我做一些事情。否则,如果我还没有任何坐标,我想为我留言。 我怎么知道,我是否已经获得坐标?检查GPS辅助功能

GeoPoint h = null; 
double latitude = 10, longitude = 10; 
public void onClick(View v) 
{ 
    switch (v.getId()) 
    { 
     case R.id.get_GPS: 
      final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
      if(isInternetOn() && manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) 
      { 
//I want here to check, if I get latitude and longitude values, which differ from 10 x 10, I go to my map, otherwise I say, that there's no information received from satellite. 
/* 
       h = new GeoPoint((int) (latitude * 1000000), (int) (longitude * 1000000)); 

       if(h.getLatitudeE6()==h.getLongitudeE6() && h.getLongitudeE6()==10000000) 
       { 
        Toast.makeText(this, "No information received from satellite yet.", Toast.LENGTH_LONG).show(); 
        break; 
       } 
       */ 
       Intent i = new Intent (this,getGPS.class); 
       startActivity(i); 
      } 
      else 
      { 
       if(!isInternetOn() && !manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) 
       { 
        buildAlertMessageNoGpsNoInternet(); 
        break; 
       } 

       if(!isInternetOn()) 
       { 
        buildAlertMessageNoInternet(); 
        break; 
       } 
       if(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) 
       { 
        buildAlertMessageNoGps(); 
        break; 
       } 
      } 

     break; 
     case R.id.about_button: 
     Intent j = new Intent(this, About.class); 
     startActivity(j); 
     break; 
     case R.id.exit_button: 
     this.moveTaskToBack(true); 
     break; 
    } 
} 

山姆,我得到空指针异常的 “如果”:

if(manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) 
      { 

       Location location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

       /*Here ->*/if(location.getTime() > ((Calendar.getInstance().getTimeInMillis()) - 10000)) 
       { 
        Intent i = new Intent (this, getGPS.class); 
        startActivity(i); 
       } 

       else 
       { 
        // Wait for new location 
        LocationListener locationListener = new myLocationListener(); 
        manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,locationListener); 
       } 
} 

logcat的

11月5日至5日:42:49.444:E/AndroidRuntime(300):java.lang中.NullPointerException

+1

请发布您尝试过的任何logcat错误,否则[位置和地图]上的开发人员指南(http://developer.android.com/guide/topics/location/index.html )是一个开始的好地方。 – Sam

+0

@Sam,没有错误得到。只要得到循环烤面包。 – azizbekian

+0

重新编辑该问题。 – azizbekian

回答

1

我会尝试沿着此线的东西:

public class Example extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     Location location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

     if(location.getTime() > Calendar.getInstance().getTimeInMillis() - 2 * 60 * 1000) { 
      // Do something with the recent location fix 
     } 
     else { 
      // Wait for new location 
      LocationListener locationListener = new myLocationListener(); 
      manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,locationListener); 
     } 
    } 

    private class myLocationListener implements LocationListener { 
     public void onLocationChanged(Location location) { 
      if (location != null) { 
       Log.v("Location Changed", location.getLatitude() + " " + location.getLongitude()); 
       // Do something with current location 
      } 
     } 

     // Must implement missing functions! 
    } 
} 

加成

如果位置是空在这里,可能意味着有出于某种原因没有最后已知的位置。简单修复:

if(location != null && location.getTime() > ((Calendar.getInstance().getTimeInMillis()) - 10000))