Разработка информационных систем на базе мобильных интерфейсов
Основные концепции информационной визуализации, используемые в городских информационных системах. Разработка туристической карты города Гомеля для мобильных устройств на платформе Android. Обработка графической информации менеджером поверхностей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 28.05.2013 |
Размер файла | 2,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
button_map.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent mapsActivity = new Intent(MainActivity.this,MapsActivity.class);
startActivity(mapsActivity);
}
});
Также проверяется, включен ли gps приемник на устройстве, если gps выключен, то программа предлагает его включить, т.к. это необходимое условие для работы приложения.
Файл MapsActivity.java описывает функционал для работы с картой:
Отображение карты (получение контроля над картой, определение вида отображения карты, добавление кнопок масштабирования, загрузка слоев)
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
myMapView = (MapView) findViewById(R.id.mapView);
mapController = myMapView.getController();
myMapView.setStreetView(true);
myMapView.setBuiltInZoomControls(true);
mapOverlays = myMapView.getOverlays();
mapController.setCenter(START_POINT);
mapController.setZoom(12);
MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = myMapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
Создание всплывающего меню в процедуре onCreateOptionsMenu(Menu menu). Создание обработчика событий выбора пункта меню onOptionsItemSelected(MenuItem Item).
Создание всплывающих диалогов поиска и добавления объектов на карту.
Процедура добавления объектов на карту AddGroup(Uri uri, Drawable drawable)
Процедура добавления точки на карту isAddLocationPoint(double netlat, double netlng, String name)
Процедуры вызова диалогов поиска CallSearchAddressDialog(), CallSearchCoordDialog()
В файле ObjectsEditorActivity.java описывается функциональность окна poi:
Создается список объектов
Создание обработчика событий выбора элементов, а именно переходы на новые активити содержащие списки объектов данной группы.
В файле StageViewActivity.java описывается функциональность окна stage:
Создается список объектов, данные о которых берутся из соответствующей базы данных
Создание обработчика событий выбора элементов списка
Процедура добавления объекта на карту CallViewOnMap()
Процедура отображения диалога с информацией об объекте CallObjectInfoDialog().
Вспомогательные файлы для работы с базой данных
Рассмотрим структуру данных файлов на примере ObjectDbHelper.java. Класс ObjectDbHelper, расширяющий класс SQLiteOpenHelper представляет таблицу object базы данных. В нем объявлена структура таблицы и в методе onCreate() производится создание таблицы и заполнение её текстовыми данными при первом запуске приложения на устройстве.
public void onCreate(SQLiteDatabase db){
db.execSQL("CREATE TABLE " + TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, "+ NAME + " TEXT, " + ADDRESS + " TEXT, " + LAT + " TEXT, " + LON + " TEXT);");
ContentValues values = new ContentValues();
values.put(NAME, "универмаг «Гомель»");
values.put(LAT, " 52.43921");
values.put(LON, "31.003246 ");
db.insert(TABLE_NAME, NAME, values);
Провайдеры
Рассмотрим структуру провайдера на примере файла класса провайдера ObjectViewProvider.java.
Класс ObjectViewProvider данного файла расширяющий базовый класс ContentProvider представляет логику доступа к содержимому базы данных object.
В методе обратного вызова onCreate() который вызывается системой при создании экземпляра ContentProvider, инициализируется объект SQLiteDatabase.
private SQLiteDatabase db;
…
@Override
public boolean onCreate() {
db = (new ObjectDbHelper(getContext())).getWritableDatabase();
return (db == null) ? false : true;
}
Метод query(Uri url, String[] projection,
String selection, String[] selectionArgs, String sort)
Реализуется запрос к бд.
Метод insert(Uri url, ContentValues inValues) используется для вставки данных и возвращает клиенту контент-провайдера Uri вставляемой строки.
Метод update(Uri url, ContentValues values,
String where, String[] whereArgs) реализует модификацию данных, а метод delete(Uri url, String where, string[] whereArgs) - удаление данных.
Заключение
Подведем итоги нашей работы. Была поставлена задача создания приложения для мобильных устройств, работающих на платформе Android, которое помогало бы туристам и жителям города Гомеля передвигаться на общественном транспорте. Основной идеей было создание специализированной активной карты с послойной организацией географических данных на данной карте. Разработан прототип программы, реализующий нашу идею. Программа представляет собой «электронный помощник» туриста, а также жителя города, используя который он может с легкостью передвигаться по городу и заранее знать, когда расписание городского транспорта. На следующем этапе необходимы консультации со специалистами в области туризма и аккуратное опробование на реальных пользователях.
Следует отметить, что данный прототип нуждается в развитии. Перечислим некоторые идеи для дальнейшей доработки нашей системы:
Создание локальной карты города, с которой можно работать без подключения к интернету;
Добавление возможности редактирования и сохранения информации о транспортных средствах и остановок в базе данных;
Расширение базы данных транспортных средства и остановок;
Расширение файла связи адресов и географических координат;
Добавление маршрутов для пользователей;
Локализация программы на различные языки;
информационный мобильный интерфейс карта
Литература
Ципилева Т.А. - Геоинформационные системы.
http://www.dataplus.ru/ - ООО "ДАТА+" - распространение в России и других странах СНГ передовых геоинформационных технологий ESRI.
http://www.trisoftrus.com/ - Научно-техническая фирма Трисофт
http://www.objectland.ru/ - Геоинформационная система ObjectLand
Голощапов А.Л. - Google Android. Программирование для мобильных устройств
Reto Meier - Professional Android™ 2 Application development
Rick Rogers, John Lombardo, Zigurd Mednieks, and Blake Meike - Android Application Development
Chris Haseman - Android Essentials
Приложение
Файл AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.touristmap" android:versionCode="1" android:versionName="1.0.">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<provider android:name=".providers.ObjectViewProvider"
android:authorities="com.tmap.ObjectViewProvider">
</provider>
<provider android:name=".providers.StageProvider"
android:authorities="com.tmap.StageProvider">
</provider>
<provider android:name=".providers.transportProvider"
android:authorities="com.touristmap.transportProvider">
</provider>
<provider android:name=".providers.routeProvider"
android:authorities="com.tmap.routeProvider">
</provider>
<uses-library android:name="com.google.android.maps" />
<activity android:name=".activities.MainActivity"
android:label="TMap MainMenu"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activities.MapsActivity"
android:label="Map" />
<activity android:name=".activities.ObjectsEditorActivity"
android:label="Objects">
</activity>
<activity android:name=".activities.StageViewActivity"
android:label="@string/title_view">
</activity>
<activity android:name=".activities.ViewObjectOnMapActivity"
android:label="@string/title_view">
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
Файл MainActivity.java
package com.tmap.activities;
import com.tmap.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("GPS выключен")
.setCancelable(false)
.setPositiveButton("Настройки GPS", new DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog, final int id) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 1);
}
})
.setNegativeButton("Отмена", new DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog, final int id) {
finish();
}
});
final AlertDialog alert = builder.create();
alert.show();
}
final Button button_map = (Button) findViewById (R.id.button_map);
button_map.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent mapsActivity = new Intent(MainActivity.this,MapsActivity.class);
startActivity(mapsActivity);
}
});
final Button button_settings = (Button) findViewById (R.id.button_poi);
button_settings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent objectsEditorActivity = new Intent(MainActivity.this,ObjectsEditorActivity.class);
startActivity(objectsEditorActivity);
}
});
final Button button_exit = (Button) findViewById (R.id.button_exit);
button_exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
Файл map.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="0GJi6BBZP0bHZdweHL03Lq1vTlpaVxMqpoZrqMQ"
/>
</LinearLayout>
Файл MapsActivity.java
package com.touristmap.activities;
import android.net.Uri;
import android.os.Bundle;
import com.touristmap.DirectionPathOverlay;
import com.touristmap.HelloItemizedOverlay;
import com.touristmap.MyPositionOverlay;
import com.tmap.ObjectDbHelper;
import com.tmap.R;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import com.touristmap.activities.MapsActivity;
import com.touristmap.providers.StageProvider;
import com.touristmap.providers.TransportProvider;
import com.touristmap.providers.RouteProvider;
import com.touristmap.providers.ObjectViewProvider;
import com.touristmap.providers.TemplesProvider;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;
public class MapsActivity extends MapActivity {
MapController mapController;
MyPositionOverlay positionOverlay;
private String[] street;
private int[] house;
private double[] lath;
private double[] lonh;
private int sizeSTR=-1;
private String streetIsc="ленина";
private int houseIsc = 47;
private double latIsc=0;
private double lonIsc=0;
public static final int IDM_SETTINGS = 101;
public static final int IDM_ADD_OBJ = 102;
public static final int IDM_ADD_ROUTE = 103;
public static final int IDM_PATH_TEST = 104;
public static final int IDM_SEARCH = 105;
public static final int IDM_EXIT = 106;
private final static int IDD_OBJECTS = 0;
private final static int IDD_ADD_TOURIST_ROUTE = 1;
private final static int IDD_COLLECT_ROUTE=2;
final CharSequence[] mObjects = { "Stage", "Transport", "Route" };
final boolean[] mCheckedObjItems = { false, false, false };
final boolean[] mCheckedPathItems = { false, false, false };
final CharSequence[] mRouteObj = { "Авторемонтный завод", "7", "Мик. Кленковский - Вокзал" };
final boolean[] mCheckedRouteObjItems = { false, false, false};
private static final String[] mCoord = new String[] { ObjectDbHelper._ID,
ObjectDbHelper.NAME, ObjectDbHelper.LAT, ObjectDbHelper.LON };
public static String NLAT = "nlat";
public static String NLNG = "nlng";
List<Overlay> mapOverlays;
HelloItemizedOverlay itemizedOverlay;
MapView myMapView;
double lat;
double lng;
private double[] latiC;
private double[] longC;
private String[] nameC;
Drawable stage;
Drawable transport;
Drawable route;
String path = "/mnt/sdcard/OutCoord.txt";
String coord = "/mnt/sdcard/coord.txt";
String in = "/mnt/sdcard/in.txt";
String out = "/mnt/sdcard/out.txt";
String out_coord = "/mnt/sdcard/OutCoord.txt";
private int[][] A;
private int s, t;
private int size = -1;
int[] d;
private Stack<Integer> st;
private Stack<Integer> st1;
private int stackSize = 0;
public LinkedList<Integer> l = new LinkedList<Integer>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
myMapView = (MapView) findViewById(R.id.mapView);
mapController = myMapView.getController();
myMapView.setStreetView(true);
myMapView.setBuiltInZoomControls(true);
mapOverlays = myMapView.getOverlays();
mapController.setCenter(START_POINT);
mapController.setZoom(12);
// Добавляем маркер своего местоположения
positionOverlay = new MyPositionOverlay();
List<Overlay> overlays = myMapView.getOverlays();
overlays.add(positionOverlay);
stage = getResources().getDrawable(R.drawable.h_stage);
museams = getResources().getDrawable(R.drawable.h_transport);
transport = getResources().getDrawable(R.drawable.h_route);
route =
LocationManager locationManager;
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager) getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
updateWithNewLocation(location);
locationManager.requestLocationUpdates(provider, 1500, 3,
locationListener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, IDM_SETTINGS, Menu.NONE, "POI")
.setAlphabeticShortcut('p');
menu.add(Menu.NONE, IDM_ADD_OBJ, Menu.NONE, "Add objects")
.setAlphabeticShortcut('a');
menu.add(Menu.NONE, IDM_ADD_ROUTE, Menu.NONE, "Route")
.setAlphabeticShortcut('r');
menu.add(Menu.NONE, IDM_SEARCH, Menu.NONE, "Search")
.setAlphabeticShortcut('s');
menu.add(Menu.NONE, IDM_EXIT, Menu.NONE, "Exit").setAlphabeticShortcut(
'x');
return (super.onCreateOptionsMenu(menu));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case IDM_SETTINGS:
Intent objectsEditorActivity = new Intent(MapsActivity.this, ObjectsEditorActivity.class);
startActivity(objectsEditorActivity);
item.setChecked(true);
break;
case IDM_ADD_OBJ:
showDialog(IDD_OBJECTS);
item.setChecked(true);
break;
case IDM_SEARCH:
LayoutInflater inflater = LayoutInflater.from(this);
View root = inflater.inflate(R.layout.search_menu2, null);
final Button button_addr = (Button) root.findViewById(R.id.button_addr);
final Button button_coord = (Button) root.findViewById(R.id.button_coord);
button_addr.setText("Search by stage");
AlertDialog.Builder menu = new AlertDialog.Builder(this);
menu.setView(root);
menu.show();
button_addr.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CallSearchAddressDialog();
};
});
button_coord.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CallSearchCoordDialog();
};
});
item.setChecked(true);
break;
case IDM_EXIT:
System.exit(0);
break;
default:
return false;
}
return true;
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case IDD_OBJECTS:
AlertDialog.Builder builderObj = new AlertDialog.Builder(this);
builderObj.setTitle("Add objects");
builderObj.setMultiChoiceItems(mObjects, mCheckedObjItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
mCheckedObjItems[which] = isChecked;
}
});
builderObj.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
if (!mapOverlays.isEmpty()) {
mapOverlays.clear();
} else {
if (mCheckedObjItems[0]) {
addGroup(ObjectViewProvider.CONTENT_URI, theatres);
}
if (mCheckedObjItems[1]) {
addGroup(StageProvider.CONTENT_URI, museams);
}
if (mCheckedObjItems[2]) {
addGroup(TransportProvider.CONTENT_URI, monuments);
}
if (mCheckedObjItems[3]) {
addGroup(RouteProvider.CONTENT_URI, interestObjects);
}
if (mCheckedObjItems[4]) {
}
}
});
builderObj.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
Toast.makeText(getApplicationContext(), "Dialog cancel", Toast.LENGTH_SHORT).show();
}
});
builderObj.setCancelable(false);
return builderObj.create();
// Процедура Добавления объекта на карту
private void addGroup(Uri uri, Drawable drawable) {
Cursor cursor = managedQuery(uri, mCoord, "_ID", null, null);
int count = cursor.getCount();
latiC = new double[count];
longC = new double[count];
nameC = new String[count];
for (int i = 0; i < count; i++) {
latiC[i] = -1;
longC[i] = -1;
nameC[i] = "";
}
for (int i = 0; i < count; i++) {
cursor.moveToPosition(i);
lat = Double.parseDouble(cursor.getString(2));
lng = Double.parseDouble(cursor.getString(3));
latiC[i] = lat;
longC[i] = lng;
nameC[i] = cursor.getString(1);
}
double nl, nlg;
itemizedOverlay = new HelloItemizedOverlay(this, drawable);
try {
for (int i = 0; i < count; i++) {
nl = latiC[i];
nlg = longC[i];
String name = nameC[i];
isAddLocationPoint(nl, nlg, name);
}
} catch (NullPointerException e) {
e.printStackTrace();
}
}
// Процедура добавления точки на карту
public void isAddLocationPoint(double netlat, double netlng, String name) {
GeoPoint point = new GeoPoint((int) (netlat * 1E6),
(int) (netlng * 1E6));
String coord = "Широта: " + netlat + "\nДолгота: " + netlng;
// Создаем точку и текст появляющийся при нажатии
OverlayItem overlayitem = new OverlayItem(point, name, coord);
// Положение карты при запуске в точке point
mapController.animateTo(point);
mapController.setZoom(13);
// Добавляем точку на карту
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
}
//Процедура поиска по остановкам
private void CallSearchAddressDialog() {
LayoutInflater inflater = LayoutInflater.from(this);
View root = inflater.inflate(R.layout.search_address, null);
final EditText textStreet = (EditText)root.findViewById(R.id.street);
final EditText textHouse = (EditText)root.findViewById(R.id.house);
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setView(root);
b.setTitle("Search by Stage");
b.setPositiveButton(
"Ок", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String street = textStreet.getText().toString();
int house = Integer.parseInt(textHouse.getText().toString());
ReadInTxtSearch();
searchadress(st, n);
if (latIsc!=0 & lonIsc !=0 ){
String text = "Широта: " + latIsc + "\nДолгота: "
+ lonIsc;
Toast.makeText(getBaseContext(), text, Toast.LENGTH_SHORT).show();
itemizedOverlay = new HelloItemizedOverlay(null, getResources().getDrawable(R.drawable.androidmarker));
isAddLocationPoint(latIsc, lonIsc, "Искомая точка");
}
else {
String ErrMsg = "wrong!";
Toast.makeText(getBaseContext(), ErrMsg, Toast.LENGTH_SHORT).show();
}
}
});
b.setNegativeButton(
"Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {}
});
b.show();
}
private void CallSearchCoordDialog() {
LayoutInflater inflater = LayoutInflater.from(this);
View root = inflater.inflate(R.layout.search_coord, null);
final EditText textLatitude = (EditText)root.findViewById(R.id.latitude);
final EditText textLongitude = (EditText)root.findViewById(R.id.longitude);
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setView(root);
b.setTitle("Search by coordinates");
b.setPositiveButton(
"Ок", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String sslat = textLatitude.getText().toString();
String sslon = textLongitude.getText().toString();
double slat = Double.parseDouble(sslat);
double slon = Double.parseDouble(sslon);
Drawable SearchCoord = getResources().getDrawable(R.drawable.androidmarker);
itemizedOverlay = new HelloItemizedOverlay( null, SearchCoord);
isAddLocationPoint (slat,slon,"искомая точка");
}
});
b.setNegativeButton(
"Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {}
});
b.show();
}
//Процедура считывания данных для поиска
private void ReadInTxtSearch()
{
try
{
BufferedReader ibr = new BufferedReader(
new InputStreamReader(
new FileInputStream("/mnt/sdcard/insearch.txt"),"windows-1251"));
String str;
Scanner scanner;
String[] vr;
sizeSTR=Integer.parseInt(ibr.readLine());
street = new String [sizeSTR];
house = new int [sizeSTR];
lath = new double [sizeSTR];
lonh = new double [sizeSTR];
vr = new String [4];
int a;
for(int i = 0; i<sizeSTR; i++)
{
lath[i]=-1000;
lonh[i]=-1000;
street[i]=" ";
house[i]=-1;
}
for(int i = 0; i<sizeSTR; i++)
{
for (int j=0;j<4;j++)
{
vr[j]="";
}
a=0;
str=ibr.readLine();
scanner = new Scanner(str);
while (scanner.hasNext())
{
vr[a]=scanner.next();
a=a+1;
}
street[i]=vr[0];
house[i]=Integer.parseInt(vr[1]);
lath[i]=Double.parseDouble(vr[2]);
lonh[i]=Double.parseDouble(vr[3]);
}
ibr.close();
}
catch(IOException ae){}
};
private void searchadress(String stIsc, int nIsc)
{
streetIsc = streetIsc.toLowerCase();
int fl=0, ch=0;
while ((fl==0) & (ch<sizeSTR))
{
if ((streetIsc.equals(st [ch])) & (nIsc == house[ch]))
{
latIsc = lath[ch];
lonIsc = lonh[ch];
fl=1;
}
ch=ch+1;
}
}}
Файл ObjectsEditorActivity.java
package com.tmap.activities;
import com.tmap.R;
import android.os.Bundle;
import android.app.ListActivity;
import android.content.Intent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ObjectsEditorActivity extends ListActivity {
/** Called when the activity is first created. */
private int mId = -1;
String[] mObjectsClass = { "Stage", "Transport", "Route" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.objects);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, mObjectsClass));
}
public void onListItemClick(ListView parent, View v, int position, long id) {
mId = position;
switch (mId) {
case 0: {
Intent intent = new Intent();
intent.setClass(this, StageViewActivity.class);
startActivity(intent);
}
break;
case 1: {
Intent intent = new Intent();
intent.setClass(this, TransportViewActivity.class);
startActivity(intent);
}
break;
case 2: {
Intent intent = new Intent();
intent.setClass(this, RouteViewActivity.class);
startActivity(intent);
}
break;
case 3: {
Intent intent = new Intent();
intent.setClass(this,
break;
}
}
}
Файл StageViewActivity.java
package com.tmap.activities;
import com.tmap.ObjectDbHelper;
import com.tmap.R;
import com.tmap.providers.ObjectViewProvider;
import android.os.Bundle;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import android.content.Intent;
public class StageViewActivity extends ListActivity {
private Cursor mCursor;
private ListAdapter mAdapter;
private String netlat;
private String netlng;
double lat;
double lng;
private static final String[] mContent = new String[] { ObjectDbHelper._ID,
ObjectDbHelper.NAME, ObjectDbHelper.ADDRESS };
private static final String[] displayContent = new String[] {
ObjectDbHelper.NAME, ObjectDbHelper.ADDRESS };
int[] displayViews = new int[] { R.id.ObjectName, R.id.ObjectAddress };
private int infId;
private static final String[] mCoord = new String[] { ObjectDbHelper._ID,
ObjectDbHelper.LAT, ObjectDbHelper.LON };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCursor = managedQuery(ObjectViewProvider.CONTENT_URI, mContent, null,
null, null);
mAdapter = new SimpleCursorAdapter(this, R.layout.object_view, mCursor,
displayContent, displayViews);
setListAdapter(mAdapter);
}
public void onListItemClick(ListView parent, View v, int position, long id) {
infId = position;
Cursor cursor = managedQuery(ObjectViewProvider.CONTENT_URI, mCoord,
"_ID", null, null);
cursor.moveToPosition(position);
String text = "Широта: " + cursor.getString(1) + "\nДолгота: "
+ cursor.getString(2);
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
netlat = cursor.getString(1);
netlng = cursor.getString(2);
LayoutInflater inflater = LayoutInflater.from(this);
View root = inflater.inflate(R.layout.object_menu, null);
final Button button_add = (Button) root.findViewById(R.id.button_add);
final Button button_info = (Button) root.findViewById(R.id.button_info);
final Button button_route = (Button) root.findViewById(R.id.button_route);
button_add.setText("Add on Map");
button_info.setText("Information");
button_route.setText("Construct a route");
AlertDialog.Builder menu = new AlertDialog.Builder(this);
menu.setView(root);
menu.show();
button_info.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CallObjectInfoDialog();
};
});
button_add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CallViewOnMap();
};
});
button_route.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
};
});
}
private void CallViewOnMap(){
Intent intent = new Intent();
intent.setClass(this, ViewObjectOnMapActivity.class);
intent.putExtra(MapsActivity.NLAT, netlat);
intent.putExtra(MapsActivity.NLNG, netlng);
startActivity(intent);
finish();
}
private void CallObjectInfoDialog() {
LayoutInflater inflater = LayoutInflater.from(this);
View root = inflater.inflate(R.layout.object_info, null);
final TextView textName = (TextView) root.findViewById(R.id.name);
final TextView textPhone = (TextView) root.findViewById(R.id.address);
mCursor.moveToPosition(infId);
textName.setText(mCursor.getString(1));
textPhone.setText(mCursor.getString(2));
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setView(root);
b.show();
}
}
Файл ObjectViewProvider.java
package com. tmap.providers;
import java.util.HashMap;
import com.touristmap.ObjectDbHelper;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.text.TextUtils;
public class ObjectViewProvider extends ContentProvider {
public static final String DB_OBJECTS = "objects.db";
public static final Uri CONTENT_URI = Uri.parse("content://com.touristmap.ObjectViewProvider/object");
public static final int URI_CODE = 1;
public static final int URI_CODE_ID = 2;
private static final UriMatcher mUriMatcher;
private static HashMap<String, String> mObjectMap;
private SQLiteDatabase db;
static {
mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
mUriMatcher.addURI("com.tmap.ObjectViewProvider",
ObjectDbHelper.TABLE_NAME, URI_CODE);
mUriMatcher.addURI("com.tmap.ObjectViewProvider",
ObjectDbHelper.TABLE_NAME + "/#", URI_CODE_ID);
mObjectMap = new HashMap<String, String>();
mObjectMap.put(ObjectDbHelper._ID, ObjectDbHelper._ID);
mObjectMap.put(ObjectDbHelper.NAME, ObjectDbHelper.NAME);
mObjectMap.put(ObjectDbHelper.ADDRESS, ObjectDbHelper.ADDRESS);
mObjectMap.put(ObjectDbHelper.LAT, ObjectDbHelper.LAT);
mObjectMap.put(ObjectDbHelper.LON, ObjectDbHelper.LON);
}
public String getDbName() {
return(DB_OBJECTS);
}
@Override
public boolean onCreate() {
db = (new ObjectDbHelper(getContext())).getWritableDatabase();
return (db == null) ? false : true;
}
@Override
public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs, String sort) {
String orderBy;
if (TextUtils.isEmpty(sort)) {
orderBy = ObjectDbHelper.NAME;
}
else {
orderBy = sort;
}
Cursor c = db.query(ObjectDbHelper.TABLE_NAME, projection, selection, selectionArgs, null, null, orderBy);
c.setNotificationUri(getContext().getContentResolver(), url);
return c;
}
@Override
public Uri insert(Uri url, ContentValues inValues) {
ContentValues values = new ContentValues(inValues);
long rowId = db.insert(ObjectDbHelper.TABLE_NAME, ObjectDbHelper.NAME, values);
if (rowId > 0) {
Uri uri = ContentUris.withAppendedId(CONTENT_URI, rowId);
getContext().getContentResolver().notifyChange(uri, null);
return uri;
}
else {
throw new SQLException("Failed to insert row into " + url);
}
}
@Override
public int delete(Uri url, String where, String[] whereArgs) {
int retVal = db.delete(ObjectDbHelper.TABLE_NAME, where, whereArgs);
getContext().getContentResolver().notifyChange(url, null);
return retVal;
}
@Override
public int update(Uri url, ContentValues values,
String where, String[] whereArgs) {
int retVal = db.update(ObjectDbHelper.TABLE_NAME, values, where, whereArgs);
getContext().getContentResolver().notifyChange(url, null);
return retVal;
}
@Override
public String getType(Uri uri) {
return null;
}
}
Файл ObjectDbHelper.java
package com.tmap;
//музеи
import com.tmap.providers.ObjectViewProvider;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
public class ObjectDbHelper extends SQLiteOpenHelper implements BaseColumns{
public static final String TABLE_NAME="object";
public static final
LAT="latitude";
public static final String NAME="name";
public static final String ADDRESS="address";
public static final String LON="longitude";
private SQLiteDatabase db;
private final Context mCtx;
private ObjectDbHelper mDbHelper;
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public ObjectDbHelper (Context ctx){
super(ctx, ObjectViewProvider.DB_OBJECTS, null, 1);
this.mCtx = ctx;
}
public ObjectDbHelper open() throws SQLException {
mDbHelper = new ObjectDbHelper(mCtx);
db = mDbHelper.getWritableDatabase();
return this;
}
public void close() {
mDbHelper.close();
}
//Поиск запросом LIKE
public Cursor fetchRecordsByQuery(String query) {
return db.query(true, TABLE_NAME, new String[] { _ID,
NAME }, NAME + " LIKE" + "'%" + query + "%'", null,
null, null, null, null);}}
Размещено на http://www.allbest.ru
Подобные документы
Разработка городских систем на базе мобильных интерфейсов. Методики геокодирования в информационных системах, ориентированных на определенную группу пользователей. Прототипная реализация туристической карты для мобильных устройств на платформе Android.
дипломная работа [4,3 M], добавлен 05.12.2013Разработка клиент-серверного игрового приложения на примере игры в шашки для мобильных устройств на базе операционной системы Android. Обзор мобильных платформ. Экраны приложения и их взаимодействие. Графический интерфейс, руководство пользователя.
курсовая работа [2,6 M], добавлен 15.06.2013Обзор особенностей операционной платформы для мобильных телефонов, смартфонов и коммуникаторов. История обновлений и модифицированные версии. Прошивка устройств. Приборы на платформе Android. Изучение основных достоинств операционной системы Android 4.2.
реферат [885,8 K], добавлен 19.10.2015Обзор современных мобильных операционных систем для смартфонов, планшетов, КПК или других мобильных устройств. Symbian OS. Android. IOS. Windows Phone. Blackberry OS. Tizen. Firefox OS. Ubuntu Phone OS. Sailfish OS. Их история, преимущества и недостатки.
реферат [38,6 K], добавлен 06.05.2016Анализ популярных игровых приложений. Жанр – аркады с геймплеем Runner. Получение продукта, ориентированного на людей, использующих мобильные устройства на базе Android, и предназначенный для развлечения пользователей. Визуальная составляющая приложения.
дипломная работа [742,7 K], добавлен 10.07.2017Анализ игровых жанров для мобильных устройств и целевой аудитории. Разработка концепции игрового приложения, основной механики, меню и интерфейса игры. Описание переменных скриптов. Реализация выбора цели и стрельбы. Настройка работоспособности игры.
дипломная работа [1,4 M], добавлен 19.01.2017Структура и архитектура платформы Android. Основные достоинства и недостатки операционной системы Android. Среда разработки Eclipse, платформа Java. Подготовка среды разработки. Вкладка "Погода", "Курс валют", "Новости". Просмотр полной новости.
дипломная работа [1,0 M], добавлен 11.07.2014Анализ популярности мобильных операционных систем в мире и России. Разработка структурно-функциональной модели. Реализация серверной и клиентской частей программы. Алгоритм поиска события в мобильном приложении. Тестирование программного обеспечения.
дипломная работа [748,3 K], добавлен 10.07.2017Классификация информационных систем. Использование баз данных в информационных системах. Проектирование и реализация информационной системы средствами MS Access. Анализ входной информации предметной области и выделение основных информационных объектов.
курсовая работа [2,5 M], добавлен 09.08.2012Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.
курсовая работа [987,1 K], добавлен 27.06.2019