2012-05-03 10 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; 
    } 
} 

サム、私は "もし" にNULLポインタ例外を取得:

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

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

+1

[所在地と地図](http://developer.android.com/guide/topics/location/index.htmlに、あなたはどのlogcatエラーで試してみましたがどのようなそうでない開発者ガイドを投稿してください)は始めるのに最適な場所です。 – 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! 
    } 
} 

追加

場所は、おそらく何らかの理由のための最後の既知の場所が存在しないことを意味し、ここでnullの場合。簡単な修正:

if(location != null && location.getTime() > ((Calendar.getInstance().getTimeInMillis()) - 10000)) 
関連する問題