简体   繁体   English

需要针对学校项目的Android Studio / OSMDroid指南

[英]Need a Android Studio/OSMDroid Guide for a school project

I'm currently developping an App in a school/exam purpose. 我目前正在为学校/考试目的开发应用程序。 I'm using Android Studio 2.0 and an OPO with 5.1.1 on it and a Nexus 7 with 6.0.1 ! 我正在使用Android Studio 2.0和带有5.1.1的OPO,以及带有6.0.1的Nexus 7!

The goal is to display the location of the device on a map, and to trace a route passing by waypoints (cultural buildings). 目的是在地图上显示设备的位置,并跟踪经过航点(文化建筑)的路线。

I have no problem displaying the map (I'm able to center it on my city and with a good zoom level) 我可以毫无问题地显示地图(我可以将其居中并具有良好的缩放级别)

Now I want to display the current location of the device. 现在,我想显示设备的当前位置。 I encounter problems with permissions.. 我遇到权限问题。

My 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>

My MainActivity.java: 我的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);

}

} }

Your problem with permissions is due to changes brought to Android 6.0 that requires you to ask permission at runtime instead of requesting at install like before. 您的权限问题是由于Android 6.0带来的更改所致,该更改要求您在运行时而不是像以前那样在安装时请求权限。

You can read more here , under the "Manifest" section. 你可以阅读更多在这里 ,在“清单”部分。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM