2

私のアプリはGPSCellular networkまたはを使用して現在の場所を見つける必要がありますWiFiGPS

LocationManager locationmanager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locationlistener = new mylocationlistener();
locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationlistener);

ここで、mylocationlistener()関数は次のようになります

private class mylocationlistener implements LocationListener {
  @Override
  public void onLocationChanged(Location location) {
      if (location != null) {
      Toast.makeText(LocationActivity.this,"latitude: "+
          location.getLatitude() + "longitude: " + location.getLongitude(),
          Toast.LENGTH_LONG).show();
      }
  }

正常に動作しています。cellulerネットワークを使用して、変更が必要な上記のコードで現在の場所を見つけることができますlocationmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationlistener);

それは大丈夫ですが、私の挑戦は

  1. GPSをアクティブにするには、GPS信号の強度を確認する必要があります。GPS信号の強度が低いと、バッテリーが消耗するため、GPSをアクティブにできません。
  2. GPS信号が弱い場合は、セルラーネットワークまたはWiFiで現在地を確認する必要があります。

だから、私の質問は、電源を入れずにGPS信号強度を決定する方法があるかどうGPSかです。どんな助けでもよろしくお願いします。

4

1 に答える 1

2

いいえ、オンになっていないセンサーの信号強度を判断することはできません。

衛星と携帯電話などのGPSユニットとの間の信号の強さを判断するには、2つがGPS信号を送受信する必要があります。これには、当然、携帯電話のGPSがオンになっている必要があります。

これは、WiFiをオンにしないと利用可能な近くのWiFiネットワークを一覧表示できないという論理と同じです。

簡単にオンにしてから、使用しない場合はオフにするのが最善の方法です。

GPSを使用するかどうかを判断する最も簡単な方法は、GPSをオンにしてから、LocationManagerのgetBestProviderメソッドを使用することです。最適なプロバイダーがGPSでない場合は、もう一度オフにします。getGpsStatusメソッドを使用して、衛星の最大数や修正の受信にかかった時間などのメトリックを含むGpsStatusオブジェクトを取得することもできます。

GPSを有効/無効にする方法については、TaskerのようにプログラムでGPSを有効にするを参照してください。残念ながら、プログラムで実行できるのは2.3より前の電話でのみであり、エクスプロイトを介してのみ実行できます。「正しい」方法は、ユーザーにそれを有効または無効にするように促すことです。

于 2012-07-17T02:13:47.910 に答える