МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
Національний університет «Львівська політехніка»
Кафедра ЕОМ
Лабораторний практикум з дисципліни
«Мережні операційні системи»
Лабораторна робота № 6
Використання сервісу Google Maps та засобів
позиціонування в ОС Android.
Львів - 2011
Мета: оволодіти навичками роботи з програмним інтерфейсом засобів позиціонування в ОС Android.
Порядок налаштування середовища розробки для роботи з засобами позиціонування та сервісом Google Maps.
Для налаштування сервісу Google Maps необхідно
отримати debug-key для використання карт
Для отримання debug-key, треба знайти ваше сховище ключів, для налагодження.
По-замовчуванню, шлях буде виглядати приблизно так:
C: \ Documents and Settings \ <user> \. Android \ debug.keystore
Потім відкриваємо командний рядок, переходимо в каталог, куди встановлена Java і пишемо:
keytool-list-alias androiddebugkey
-keystore <шлях_до_ключа >. keystore
-storepass android
-keypass android
де <шлях_до_ключа >. - свій шлях до debug.keystore
Після чого в тому ж вікні буде виведений md5-ключ після «Certificate fingerprint (MD5)».
Йдемо за посиланням і реєструємо код.
Google згенерує з код для layout і вбудованим кодом, беремо його і вставляємо до себе в layout.
А в маніфесті прописати між тегами <application> </ application> вставити: <uses-library android:name="com.google.android.maps" />
Лістинг тестової програми.
package lab6.pack;
import java.util.List;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.location.Location;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
public class Lab6Activity extends MapActivity {
private List<Overlay> mapOverlays;
private MapView mapView;
private Projection projection;
private Spinner spinner;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapView);
mapView.setBuiltInZoomControls(true);
String[] items = new String[] {"V", "I", "IV","Головний_корпус","Home"};
spinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mapOverlays = mapView.getOverlays();
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
projection = mapView.getProjection();
mapOverlays.clear();
mapOverlays.add(new MyOverlay(spinner.getSelectedItemPosition()));
mapView.invalidate();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
class MyOverlay extends Overlay{
public int index=0;
private GeoPoint myPos = new GeoPoint(49825740,24012739);
private GeoPoint[]points = new GeoPoint[5];
public MyOverlay(int index){
points[0]=new GeoPoint(49835059,24008533);
points[1]=new GeoPoint(49835349,24010341);
points[2]=new GeoPoint(49836263,24011017);
points[3]=new GeoPoint(49835391,24014429);
points[4]=new GeoPoint(48917168,24709805);
this.index=index;
}
public void draw(Canvas canvas, MapView mapv, boolean shadow){
super.draw(canvas, mapv, shadow);
Paint mPaint = new Paint();
mPaint.setDither(true);
mPaint.setColor(Color.BLUE);
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(2);
Point p1 = new Point();
Point p2 = new Point();
Path path = new Path();
projection.toPixels(myPos, p1);
projection.toPixels(points[index], p2);
path.moveTo(p2.x, p2.y);
path.lineTo(p1.x,p1.y);
canvas.drawPath(path, mPaint);
//float distance;
Location locationA = new Location("point A");
locationA.setLatitude(p1.x);
locationA.setLongitude(p1.y);
Location locationB = new Location("point B");
locationB.setLatitude(p2.x);
locationB.setLongitude(p2.y);
//TextView tv = (TextView)findViewById(R.id.textView1);
//tv.setText(Double.toString(distance));
}
}
}
Результати виконання тестової програми.
Висновок: на даній лабораторній роботі, я оволодів навичками роботи з програмним інтерфейсом засобів позиціонування в ОС Android