2016-04-26 12 views
2

Ich entwickle derzeit eine App in einer Schule/Prüfung Zweck. Ich benutze Android Studio 2.0 und ein OPO mit 5.1.1 und ein Nexus 7 mit 6.0.1!Benötigen Sie ein Android Studio/OSMDroid Guide für ein Schulprojekt

Ziel ist es, den Standort des Geräts auf einer Karte anzuzeigen und eine Route durch Wegpunkte (kulturelle Gebäude) zu verfolgen.

Ich habe kein Problem Anzeigen der Karte (ich bin in der Lage, es zu zentrieren auf meine Stadt und mit einem guten Zoom-Stufe)

Jetzt möchte ich den aktuellen Standort des Geräts angezeigt werden soll. begegne ich Probleme mit Berechtigungen ..

Mein Manifest:

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

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

    // AUTORISATIONS 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

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

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

Mein MainActivity.java:

package alpha.testmap; 

import android.Manifest; 
import android.app.Activity; 
import android.content.pm.PackageManager; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.support.v4.app.ActivityCompat; 

import org.osmdroid.api.IMapController; 
import org.osmdroid.tileprovider.tilesource.TileSourceFactory; 
import org.osmdroid.util.GeoPoint; 
import org.osmdroid.views.MapView; 

public class MainActivity extends Activity { 

private LocationManager mLocMgr; 



@Override public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(this, 
       new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 
//Can't find the class of this fonction --> REQUEST_LOCATION); 
    }else { 
     Location myLocation = LOCATION_SERVICE.FusedLocationApi.getLastLocaation(mGoogleApiClient); 
    } 

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(this, 
       new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
//Can't find the class of this fonction --> REQUEST_LOCATION); 
    } 

    setContentView(R.layout.activity_main); 

    MapView map = (MapView) findViewById(R.id.map); 
    map.setTileSource(TileSourceFactory.MAPNIK); 

    //Adding zoom ability 
    map.setBuiltInZoomControls(true); 
    map.setMultiTouchControls(true); 

    //Create a default point 
    IMapController mapController = map.getController(); 
    mapController.setZoom(16); 
    GeoPoint ptStart = new GeoPoint(47.215576, -1.549089); 
    mapController.setCenter(ptStart); 
    GeoPoint ptTourLu = new GeoPoint(47.21545, -1.54624); 
    //GPS 
    mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE); 
    mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 100, (LocationListener) this); 

} 

}

+0

Welches Problem haben Sie mit Berechtigungen konfrontiert? Bitte im Detail angeben. Als eine gute Regel im Leben, wann immer du jemandem dein Problem erklärst, betrachte die andere Person als ein Baby, das nichts weiß. Also bemühe dich, die andere Person verstehen zu lassen. – Skynet

+0

Ich versuche den Speicherort meines Geräts zu ermitteln. Wenn ich die Prüfung, ob die Erlaubnis erteilt werden oder nicht, der letzte Parameter der requestPermissions nicht kompiliert .. ActivityCompat.requestPermissions (this, new String [] {} Manifest.permission.ACCESS_COARSE_LOCATION, REQUEST_LOCATION) ; – tomytr96

+0

Überprüfen Sie das Beispiel Osmdroid-Projekt. Ihrem Code fehlt das wichtige MyLocationOverlay, das ein Symbol für Ihren Standort auf der Karte platziert. – spy

Antwort

0

Ihr Problem mit Berechtigungen ist aufgrund von Änderungen an Android gebracht 6.0, das erfordert, dass Sie zur Laufzeit die Berechtigung anfordern, anstatt wie zuvor bei der Installation anzufordern.

Sie können mehr here, unter dem "Manifest" Abschnitt lesen.

Verwandte Themen