Разработка приложения под 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.