2017-08-26 5 views
1

Ich versuche, eine App zu schreiben, die den aktuellen Standort erhält und den Breiten- und Längengrad in Echtzeit anzeigt. Wenn ich diese App starte, scheint der GPS nicht nach einem Ort zu suchen und versucht, eine Reparatur zu bekommen. Ich weiß nicht, warum das passiert. Habe ich etwas verpasst? Wenn ich die Karten-App öffne, wird der Ort sofort repariert. Aber in meiner App sucht das GPS nicht nach einem oder zumindest in der Benachrichtigungsleiste, es zeigt nichts wie "Suche nach GPS", was normalerweise in der Karten-App angezeigt wird.Fused Location funktioniert nicht Android

Meine Haupttätigkeit:

package com.example.android.location1; 

import android.Manifest; 
import android.content.pm.PackageManager; 
import android.location.Location; 
import android.os.Build; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 

import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.location.LocationListener; 
import com.google.android.gms.location.LocationRequest; 
import com.google.android.gms.location.LocationServices; 

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

private final String LOG_TAG = "TestApp"; 
private TextView txtOutput; 
private GoogleApiClient mGoogleApiClient; 
private LocationRequest mLocationRequest; 
private static final int REQUEST_PERMISSION = 1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mGoogleApiClient = new GoogleApiClient.Builder(this).addApi(LocationServices.API).addConnectionCallbacks(this).build(); 
    txtOutput = (TextView) findViewById(R.id.txtOutput); 
} 

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

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

@Override 
public void onConnected(Bundle bundle){ 
    mLocationRequest = LocationRequest.create(); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
    mLocationRequest.setInterval(1000).setMaxWaitTime(2000); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) 
      requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSION); 
    } 
    LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 
} 

@Override 
public void onConnectionSuspended(int i){ 
    Log.i(LOG_TAG, "GoogleApiClient connection has been suspended."); 
} 

@Override 
public void onLocationChanged(Location location){ 
    Log.i(LOG_TAG, location.toString()); 
    txtOutput.setText(String.valueOf(location.getLatitude()) + ", " + String.valueOf(location.getLongitude())); 
} 

}

Meine Manifest-Datei:

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

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

    <uses-feature android:name="android.hardware.location.gps"/> 
    <uses-feature android:name="android.hardware.location.network"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     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> 

ich das auf Android 6 und 7 getestet habe in einem von ihnen nicht. Jede Hilfe wäre willkommen.

Antwort

-1

Erwerben Sie einen Verweis auf das System Location Manager

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

dann die locationupdates registrieren und an den Hörer anschließen, die Sie bereits

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3, 1, locationListener); 

Lesen Sie mehr über die requestlocationsUpdates Methode auf, wie oft etc eingebaut wurden haben Sie, was Ihr Standort ist. https://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates

+0

Nein Ihre Lösung hat das Problem nicht gelöst. Das Problem besteht immer noch. – speedster01

+0

folgendermaßen vor https://developers.google.com/android/guides/setup Überprüfen Sie, ob Ihre mGoogleApiClient und im Monitor-Log und dass die onConnected() -Methode in Ihrer Callback-GoogleApiClient.ConnectionCallbacks ausgeführt wird verbunden authentifiziert wird – typecode

+0

Ich habe den von Ihnen bereitgestellten Link nur verwendet, um die Funktionen zunächst einzurichten. Ich überprüfte; Der Google Client wird verbunden und die Methode onConnected() wird ebenfalls ausgeführt. Die locationChanged() -Methode wird ebenfalls aufgerufen. Nur dass es immer wieder derselbe Ort ist. Der Standort scheint sich nicht zu ändern, außer dass das GPS-Symbol nicht im Benachrichtigungsmenü angezeigt wird. – speedster01

Verwandte Themen