DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Управління геоконтекстними сервісами в ОС Android

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2018
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Мережеві операційні системи
Група:
КН-31
Коротко про документ

Про що ця робота

У звіті розглядається створення мобільного додатку для ОС Android з використанням геоконтекстних сервісів та Google Maps. Наведено лістинг програми для визначення відстані до корпусів Львівської політехніки.

У роботі розглядаються

  • ОС Android
  • Геоконтекстні сервіси
  • Google Maps API
  • Мобільна розробка
  • Визначення координат
  • Java
  • Мережні операційні системи

Зміст і розділи

  1. Мета роботи
  2. Послідовність виконання роботи
  3. Варіанти завдань
  4. Лістинг тестової програми
  5. Висновок
Для кого:Студенти технічних спеціальностей та викладачі дисципліни Мережні операційні системи.
Викладачі:Пищак І. І.

Ключові поняття

AndroidGoogle MapsLocationManagerLatLngMarkerOptionsPolylineOptionsMainActivityGPSгеолокаціярозробка

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” / Звіт До Лабораторної роботи №6 З дисципліни: «Мережні операційні системи» На тему: «Управління геоконтекстними сервісами в ОС Android» Мета роботи: Оволодіти навичками роботи з програмним інтерфейсом геоконтекстних сервісів в ОС Android. Послідовність виконання роботи: 1. Ознайомитись з загальними відомостями про роботу з засобами позиціонування та сервісом Google Maps в ОС Android. 2. Створити тестову програму на основі прикладів тестових програм (див.1.5) згідно заданого варіанту. 3. Відлагодити та дослідити роботу тестової програми на емуляторі. 4. Знайти відповіді на контрольні запитання. 5. Скласти та захистити звіт з лабораторної роботи. Варіанти завдань: Тестова програма, яка визначає біжучу відстань між користувачем та заданим корпусом Львівської політехніки (номер корпусу користувач вибирає зі списку) та відображає її у вигляді відрізку прямої лінії на карті. Лістинг тестової програми: MainActivity.java package com.university.lab6alter; import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.location.LocationManager; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.support.v4.app.FragmentActivity; import android.os.Bundle; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; import com.google.android.gms.maps.model.PolylineOptions; import android.location.Location; import android.app.AlertDialog; import android.view.Menu; import android.view.MenuItem; import static java.lang.String.format; public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback { String name; double lat, lng; private GoogleMap mMap; boolean isMarkerPlaced = false; Location location; SupportMapFragment mapFrag; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // Obtain the SupportMapFragment and get notified when the map is ready to be used. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); getSupportActionBar().setTitle("Map Location Activity"); mapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFrag.getMapAsync(this); } @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } mMap.setMyLocationEnabled(true); mMap.setBuildingsEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.gk: lat = 49.83511; lng = 24.01446; name = "Головний корпус"; mMap.clear(); mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng)).title(name)); isMarkerPlaced = true; break; case R.id.k1: lat = 49.83533; lng = 24.01004; name = "Корпус №1"; mMap.clear(); mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng)).title(name)); isMarkerPlaced = true; break; case R.id.k5: lat = 49.835; lng = 24.00824; name = "Корпус №5"; mMap.clear(); mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng)).title(name)); isMarkerPlaced = true; break; case R.id.way: if (isMarkerPlaced) { LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // getting GPS status boolean isGPSEnabled = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); // getting network status boolean isNetworkEnabled = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return true; } if (isNetworkEnabled) { location = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); } if (isGPSEnabled) { location = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); } LatLng source = new LatLng(mMap.getMyLocation().getLatitude(), mMap.getMyLocation().getLongitude()); LatLng dest = new LatLng(lat, lng); PolylineOptions polylineOptions = new PolylineOptions(); polylineOptions.add(source, dest); mMap.clear(); mMap.addPolyline(polylineOptions); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(source, 10)); float[] results = new float[1]; Location.distanceBetween(location.getLatitude(), location.getLongitude(), lat, lng, results); mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng)).title(name + " distance " + String.valueOf(results[0]) + " m")); } else { AlertDialog alertDialog; alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setTitle("Warning"); alertDialog.setMessage("Виберіть спочатку навчальний корпус"); alertDialog.show(); } break; default: return super.onOptionsItemSelected(item); } return true; } } Manifest: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.maps"> <!-- The ACCESS_COARSE/FINE_LOCATION permissions are not required to use Google Maps Android API v2, but you must specify either coarse or fine location permissions for the 'MyLocation' functionality. --> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <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"> <!-- The API key for Google Maps-based APIs is defined as a string resource. (See the file "res/values/google_maps_api.xml"). Note that the API key is linked to the encryption key used to sign the APK. You need a different API key for each encryption key, including the release key that is used to sign the APK for publishing. You can define the keys for the debug and release targets in src/debug/ and src/release/. --> <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_maps_key" /> <activity android:name=".MapsActivity" android:label="@string/title_activity_maps"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> main.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/gk" app:showAsAction="never" android:title="Головний корпус" /> <item android:id="@+id/k1" app:showAsAction="never" android:title="Перший корпус" /> <item android:id="@+id/k5" app:showAsAction="never" android:title="П'ятий корпус" /> <item android:id="@+id/way" app:showAsAction="never" android:title="Прокласти маршут" /> </menu> Результати виконання програми: / Висновок: На цій лабораторні роботі я оволодів навичками роботи з програмним інтерфейсом геоконтекстних сервісів в ОС Android.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!