Разработка приложения под Android-платформу "Расписание городского транспорта г. Гомеля"
Городские информационные системы и мобильные интерфейсы, их значение для развития туризма. Основные концепции информационной визуализации, используемые в ГИС. Средства разработки и описание проекта приложения для операционной системы Google Android.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 08.06.2013 |
Размер файла | 3,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
В этом каталоге размещаются все графические файлы, используемые в приложении: иконки, маркеры объектов, кнопки и т.д.
Подкаталог res/values/
В данной папке хранятся общие константы для всего приложения: текст используемый элементами управления. Например:
<string name="app_name">TMap</string>
Файлы деятельностей
Каждый файл деятельности содержит класс, в который добавляется код, реализующий логику работы приложения в данной деятельности. В каждом из таких классов обязательно определяется метод обратного вызова onCreate(), который вызывается системой для прорисовывания окна деятельности на экране устройства.
В файле MainActivity.java задается функциональность главного окна программы: определяются действия, происходящие по нажатию кнопок, а именно запуск активити, соответствующих кнопкам.
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);
}
});
Также проверяется, включен ли 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, которое помогало бы туристам и жителям города Гомеля передвигаться на общественном транспорте. Основной идеей было создание специализированной активной карты с послойной организацией географических данных на данной карте. Разработан прототип программы, реализующий нашу идею. Программа представляет собой "электронный помощник" туриста, а также жителя города, используя который он может с легкостью передвигаться по городу и заранее знать, когда расписание городского транспорта. На следующем этапе необходимы консультации со специалистами в области туризма и аккуратное опробование на реальных пользователях.
Следует отметить, что данный прототип нуждается в развитии. Перечислим некоторые идеи для дальнейшей доработки нашей системы:
· Создание локальной карты города, с которой можно работать без подключения к интернету;
· Добавление возможности редактирования и сохранения информации о транспортных средствах и остановок в базе данных;
· Расширение базы данных транспортных средства и остановок;
· Расширение файла связи адресов и географических координат;
· Добавление маршрутов для пользователей;
· Локализация программы на различные языки
Список использованных источников
1. Ципилева, Т.А. Геоинформационные системы.
2. Научно-техническая фирма Трисофт - Режим доступа: http://www.trisoftrus.com/ - Дата доступа: 05.03.2013.
3. Геоинформационная система ObjectLand - Режим доступа: http://www.objectland.ru/ - Дата доступа: 11.02.2013.
4. Голощапов, А.Л. Google Android. Программирование для мобильных устройств.
5. Reto Meier Professional Android™ 2 Application development.
6. Android Application Development / Rick Rogers, John Lombardo, Zigurd Mednieks, and Blake Meike.
7. Chris Haseman Android Essentials
8. Варакин, М.В. Разработка мобильных приложений под Android: учебное пособие / М.В. Варакин; Центр компьютерного обучение "Специалист" при МГТУ им. Н.Э. Баумана - Москва, 2012 - 128с.
Приложение
Файл 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.tmap.activities;
import android.net.Uri;
import android.os.Bundle;
import com.tmap.DirectionPathOverlay;
import com.tmap.HelloItemizedOverlay;
import com.tmap.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.tmap.activities.MapsActivity;
import com.tmap.providers.StageProvider;
import com.tmap.providers.TransportProvider;
import com.tmap.providers.RouteProvider;
import com.tmap.providers.ObjectViewProvider;
import com.tmap.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);}}
Размещено на Allbest.ru
Подобные документы
Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.
курсовая работа [167,8 K], добавлен 18.01.2017Характеристика работы операционной системы Android, используемой для мобильных телефонов. Создание Android проекта в среда разработки Eclipse. Общая структура и функции файла манифест. Компоненты Android приложения. Способы осуществления разметки.
курсовая работа [1,0 M], добавлен 15.11.2012Структура и архитектура платформы Android. Основные достоинства и недостатки операционной системы Android. Среда разработки Eclipse, платформа Java. Подготовка среды разработки. Вкладка "Погода", "Курс валют", "Новости". Просмотр полной новости.
дипломная работа [1,0 M], добавлен 11.07.2014Средства разработки развивающих и обучающих игр и используемой программы. Среда выполнения и Dalvik. Разработка приложения для платформы Android. Графический интерфейс и обработка касаний экрана. Разработка экранов приложения и их взаимодействия.
дипломная работа [2,1 M], добавлен 18.01.2016Преимущества операционной системы Android. Проектирование интерфейса приложений. Визуальные редакторы и средства кроссплатформенной разработки. Оптимизация игрового процесса, выбор фреймворка и библиотек. Классификация и характеристика игр по жанрам.
дипломная работа [2,6 M], добавлен 10.07.2017Общая схема работы приложения Android. Разработка обучающего приложения для операционной системы Android, назначение которого - развитие речи посредством произнесения скороговорок. Описание компонентов разработанного приложения, его тестирование.
дипломная работа [1,2 M], добавлен 04.02.2016Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.
дипломная работа [2,7 M], добавлен 03.04.2015Архитектура операционной системы Android, набор библиотек для обеспечения базового функционала приложений и виртуальная машина Dalvik. Объектно-ориентированный язык программирования Java как инструмент разработки мобильных приложений для ОС Android.
дипломная работа [1,6 M], добавлен 08.07.2015Разработка программного обеспечения для платформы Android версии 2.3: информационное приложения для поклонников футбольной команды, с возможностью просмотра событий, статистики и иной информации о команде и ее успехах. Листинг JsonDataManager.java.
дипломная работа [4,1 M], добавлен 24.04.2013Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.
курсовая работа [987,1 K], добавлен 27.06.2019