2016-07-08 6 views
0

私は、ローカルデバイスの場所を見つけてそれを別のデバイスの場所と比較する必要のあるアプリケーションを作成しています。 Google Playサービスの場所のAPIを使用してデバイスの場所を確認しようとしていますが、接続に時間がかかるようです。私はまだそれが接続されて見ていない。それは本当に遅いか、何かが正しく設定されていません。接続時にこれらのapiは通常かなり速いですか?ここで タイムリーにデバイスの場所を見つける方法

は私が持っているものです。

public class LocationHandler implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener 
{ 
    private Activity currActivity = null; 
    private GoogleApiClient mGoogleApiClient = null; 

    public LocationHandler(Activity act) 
    { 
     currActivity = act; 
    } 

    public void Setup() 
    { 
     if (mGoogleApiClient == null) 
     { 
      mGoogleApiClient = new GoogleApiClient.Builder(currActivity) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(LocationServices.API) 
       .build(); 
      mGoogleApiClient.connect(); 
     } 
    } 

    @Override 
    public void onConnected(@Nullable Bundle bundle) 
    { 
     Toast.makeText(currActivity, "Connected to service.", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onConnectionSuspended(int i) 
    { 

    } 

    @Override 
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) 
    { 

    } 
} 

私は、次の権限があります。この中で

compile 'com.google.android.gms:play-services:9.2.0' 

答えて

1

:私もbuild.gradleにこれを追加した

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_GPS" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

をlocationManagerを使用する場合:

public class LocationHandler implements implements LocationListener{ 
LocationManager mLocationManager; 

    public void Setup(){ 
    mLocationManager = (LocationManager) getApplicationContext() 
      .getSystemService(LOCATION_SERVICE); 
    mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
      500, 10, this); 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
    //do something with your location 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) {} 

    @Override 
    public void onProviderEnabled(String provider) {} 

    @Override 
    public void onProviderDisabled(String provider) {} 
    } 
} 

このアプローチは簡単で、Google Playサービスをスキップすることができます。

+0

私はLocationManagerを試しましたが、それも決して接続しませんでした。あなたはそれが普通どれくらい速いか知っていますか?私が読んだことから、GPSプロバイダーはデバイスを見つけるのに1〜3分かかり、それは長すぎます。ネットワークプロバイダの方がずっと良いことは聞いていない。 – saboehnke

+0

GPSプロバイダはウォームアップに1〜3分かかることがあります。だからあなたがあなたのアプリを起動し、それを有効にしてから待つときに場所が無効になっているなら。あなたがGPSに設定されているとそれがオンになっている場合は、GPS信号を取得することができる場所にいる場合は数秒でピックアップします。あなたはGPSの場所を取得できる場所で実際のデバイスを使用していますか?また、すべてのプロバイダを有効にして、設定のGPSの代わりに高精度モードでデバイスを使用することもできます。 – maddesa

+0

あなたは、自分の携帯電話での位置追跡が既にオンになっている場合は、その位置を見つけるのに1秒かかるでしょうか?私はいつも私の電話のためにそれを持っているので、私はそれを接続することはできません。私はLocationManagerの実装を再試行し、それが私のために何をするかを見て、私は更新します。 – saboehnke

関連する問題