2016-04-04 17 views
0

'u etkinleştirdikten sonra bile FusedLocationApi kullanarak konumu bulamıyor GPS ve FusedLocationApi konumunu kullanarak cep telefonunun yerini bulmaya çalışıyorum. GPS'i etkinleştirdikten sonra bile konum ayrıntılarını alamıyorum. Aşağıda takip ettiğim adımlar. Lütfen bana yardım et.android: GPS

Adım 1: -

Eklendi benim gradle

compile 'com.google.android.gms:play-services-location:8.1.0' 

Adım 2 satır: -

MainActivity Dosya

package com.developer.kamalasekar.locationfinder; 

import android.location.Location; 

import android.os.Bundle; 

import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.widget.TextView; 
import android.widget.Toast; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.location.LocationRequest; 
import com.google.android.gms.location.LocationServices; 

public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

    private static final String TAG = "MainActivity"; 
    private TextView mLatitudeTextView; 
    private TextView mLongitudeTextView; 
    private GoogleApiClient mGoogleApiClient; 
    private Location mLocation; 
    private LocationRequest mLocationRequest; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mLatitudeTextView = (TextView) findViewById((R.id.latitude_textview)); 
     mLongitudeTextView = (TextView) findViewById((R.id.longitude_textview)); 

     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(LocationServices.API) 
       .build(); 
    } 

    @Override 
    public void onConnected(Bundle bundle) { 
     mLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 

     if (mLocation != null) { 
      mLatitudeTextView.setText(String.valueOf(mLocation.getLatitude())); 
      mLongitudeTextView.setText(String.valueOf(mLocation.getLongitude())); 
     } else { 
      Toast.makeText(this, "Location not Detected", Toast.LENGTH_SHORT).show(); 
     } 
     LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 




    } 

    @Override 
    public void onConnectionSuspended(int i) { 
     Log.i(TAG, "Connection Suspended"); 
     mGoogleApiClient.connect(); 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 
     Log.i(TAG, "Connection failed. Error: " + connectionResult.getErrorCode()); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     mGoogleApiClient.connect(); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     if (mGoogleApiClient.isConnected()) { 
      mGoogleApiClient.disconnect(); 
     } 
    } 
} 

Adım 3: -

Activit yMain

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity"> 

    <TextView 
     android:id="@+id/latitude" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:text="Latitude:" 
     android:textSize="18sp" /> 
    <TextView 
     android:id="@+id/latitude_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/latitude" 
     android:layout_marginLeft="10dp" 
     android:layout_toRightOf="@+id/latitude" 
     android:textSize="16sp" /> 
    <TextView 
     android:id="@+id/longitude" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:text="Longitude:" 
     android:layout_marginTop="24dp" 
     android:textSize="18sp" /> 
    <TextView 
     android:id="@+id/longitude_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/longitude" 
     android:layout_marginLeft="10dp" 
     android:layout_toRightOf="@+id/longitude" 
     android:textSize="16sp"/> 

</RelativeLayout> 

Adım 4: - Eklendi benim Bildiri dosyasının

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.developer.kamalasekar.locationfinder"> 


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

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 

     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     </application> 

</manifest> 
+0

"LocationServices.FusedLocationApi.requestLocationUpdates" – user2450263

cevap

0

yeri bulunamadı zaman onConnected size return null olabilir LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); ararsanız ihtimali vardır çizgiler. Ancak aynı çizgiyi birkaç saniye sonra tekrar çalıştırırsanız (1/2 sn. Gps etkin) sonra mutlaka kesin olarak konum alırsınız.

@Override 
public void onConnected(Bundle bundle) { 
    mLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
    if (mLocation != null) { 
     //your stuff 
    } else { 
     handler.sendEmptyMessageDelayed(1, 2000); 
    } 
} 

int count; 
android.os.Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     if (count < 2) { 
      mLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
      if (mLocation == null){ 
       handler.sendEmptyMessageDelayed(1, 2000); 
      }else{ 
       //your stuff 
      } 
      count++; 
     } else{ 
      Log.i("MyTag","location not found"); 
     } 
    } 
}; 

veya Android: Location Updates with the FusedLocationApi
ziyaret edebilir veya LocationListener ayarlayarak user2450263 mesaja @ takip edebilirsiniz.

Happy_Coding;

+0

için geri bildirimi nereden alırsınız? –