2016-07-23 3 views
1

の値を削除します。 私はコードをデバッグすると私は場所を取得した後ことがわかり - アンドロイドスタジオが主な活動私はGPS /ネットワークの場所を取得した後、アンドロイドは位置の値を削除しようとしている

に値を返していない私は、コードには例外がないことがわかります。

メソッド 'getCurrentLocation'は、場所を返します。 私が見(右場所は、デバッグビューアにaccourding)GPS /ネットワークから位置を取得した後、そのこと 変数だけでも、ライン

'if (!isGpsEnable && !isNetworkEnable) {' 

と「場所」にはnullを返すようにコード'location'変数には適切なgpsの場所が含まれます。

コード:

public class TraceLocation implements LocationListener 
{ 
public Location getCurrentLocation(Context context) 
{ 
    Location location = null; 

    try { 

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

     Boolean isGpsEnable = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
     Boolean isNetworkEnable = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

     if (!isGpsEnable && !isNetworkEnable) { 
      // TODO !!! => no gps and no network !!! 
     } else if (context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
      if (isNetworkEnable) { 
       locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 10, this); 

       if (locationManager != null) { 
        location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
       } 
      } 

      if (isGpsEnable) { 
       locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, this); 

       if (locationManager != null) { 
        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
       } 
      } 
     } 
    } 
    catch(Exception e) 
    { 

    } 


    return location; 
} 

質問:

  • 私はときにメソッド結果にnullを取得しますなぜ私はアンドロイド6.0(マシュマロ)

    1. を使用してデバッグの戻り値がnullでないことがわかっても戻ってきます

    2. iは

      locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER、60000、10、これを)除去します。

 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, this); 

私も取得し、デバッグ上の場所はありません - なぜ?????

+0

あなたの質問は何ですか? :) あなたは何をしようとしているのですか?ちょっと助けが必要なのは何ですか?具体的にしてください。 :) – Imdad

答えて

1

あなたが提供した説明から、あなたはネイティブAndroidロケーションメカニズムによって必要とされるものを完全に実装していないようです。 Androidのロケーションプロバイダは非同期で動作するため、ロケーションのアップデートが生成されたときに通知されるリスナーを登録する必要があります。 getLastKnownLocation(String provider)メソッドhereを使用しない限り、システムの即時応答は期待できませんでした。

クラスにはimplements LocationListenerが含まれているため、onLocationChanged(Location location)などの一連のメソッドを実装する必要があります。 このようなメソッドは、場所が取得されたときに起動されるメソッドです。 locationオブジェクトの起源(ワイヤレスまたはGPS)およびその他のデータ(速度、精度など)を確認することができます。

hereの詳細については、公式ガイドをご覧ください。 デバッグ操作では、環境(GPSおよびワイヤレスネットワーク)から収集されたデータが処理されるため、システムの動作はそのような変数に依存します。

関連する問題