Разработка мобильных приложений под Android Чиркунов Кирилл cyril.chirkunov@computer.org vk.com/chirkunov.

Презентация:



Advertisements
Похожие презентации
ArtfulBits inc. aiMinesweeper. Первая в Украине игра для Android. Android custom components Anti-piracy движение Готовые решения для Android-разработчиков.
Advertisements

САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Основы SQL Запросы к базе данных. Что такое база данных SQL? SQL (Structured Query Language - «Структурированный язык запросов») - универсальный компьютерный.
Коллекции классов Лекция 12. С помощью коллекций вместо создания структур данных программист использует готовые структуры данных, не заботясь об их реализации.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Мобильная связь в приложениях для смартфона Лекция 5 Авторы: Березовская Ю.В., Латухина Е.А., Юфрякова О.А.
АССОЦИАТИВНЫЕ КОЛЛЕКЦИИ Лекция 6 1. Отличие от последовательных 2 В последовательной коллекции каждый элемент ассоциируется с номером, начиная с 0. В.
Язык SQL Операторы манипулирования данными. Операции манипулирования данными DELETE операция удаления записей INSERT операция добавления или ввода новых.
Работа с БД в Zend Лекция 4 1.Модель 2.Классы Zend_Db_Table и Zend_Config 3.Запросы 4.Свойства и методы таблицы.
БАЗЫ ДАННЫХ ЛЕКЦИЯ 12. тема: ОСНОВЫ ЯЗЫКА SQL Общие сведения SQL структурированный язык запросов (Structured Query Language)
PL/SQL Курсоры. Курсор – специальный элемент, связанный с SQL-оператором SELECT. Объявление курсора происходит в секции объявления базового блока. Работа.
Базы данных. Введение Базы данных обеспечивают хранение информации. Доступ к базе данных осуществляется через специальную программу - систему управления.
Saint Petersburg, 2012 Java Lecture 12 JSTL. JSP -> JSTL JSP – хорошо Что делать если хотим добавить условие? Итерирование по списку и вывод каждого элемента.
Кафедра ОСУ, Java 2004 Слайд 1 Наследование Наследование позволяет использовать существующий класс для определения новых классов, т.е. способствует.
Универсальность. Классы с родовыми параметрами. Под универсальностью (genericity) понимается способность класса объявлять используемые им типы как параметры.
Информатика ЕГЭ Уровень А5. Вариант 1 Определите значения переменных a, b, c после выполнения следующего фрагмента программы: a:=5; b:=1; a:=a+b; if a>10.
Annotated SQL Геннадий Дубина Android-разработчик, DataArt, Украина.
ПЛИСКО ВЯЧЕСЛАВ. Удобная работа с базой данных в PHP.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Транксрипт:

Разработка мобильных приложений под Android Чиркунов Кирилл vk.com/chirkunov

На прошлой лекции Лекция 5, слайд 1 Новосибирский государственный университет, 2012 Intents, Broadcast Intents, Broadcast Child Activities, Dialogs Child Activities, Dialogs Internet usage Internet usage Preferences & Settings Preferences & Settings Files Files

Сегодня Источники данных, SQLite Источники данных, SQLite Стандартные источники данных Стандартные источники данных Сервисы геолокации Сервисы геолокации Картографическая привязка, наложения Картографическая привязка, наложения Лекция 5, слайд 2 Новосибирский государственный университет, 2012

Лекция 5, слайд 3 Новосибирский государственный университет, 2012 Легковесная, свободная, мощная СУБД, поддерживающая SQL для хранения данных Отсутствие типизации для каждого столбца – значение типизируется отдельно для каждой строки Часть программного стэка платформы Android Каждая база данных считается частью приложения, которое её создало

Лекция 5, слайд 4 Новосибирский государственный университет, 2012 moveToFirs t – переместить курсор на первую строку в результате запроса moveToNex t – переместить курсор на следующую строку moveToPrevious – переместить на предыдующую строку getCount – возвратить количество строк в результирующем наборе данных getColumnIndexOrThrow – возвратить индекс столбца по имени getColumnName – возвратить имя колонки по индексу moveToPosition – перейти на указанную позицию в результате запроса getPosition – вернуть номер текущей строки Курсор (Cursor) в Android

Работа с базой данных (SQLiteDatabase) Лекция 5, слайд 5 Новосибирский государственный университет, 2012 openOrCreateDatabase (string DatabaseName, int contextMode, DatabaseErrorHandler handler ) – создать или открыть уже существующую базу данных execSQL(String SQL ) – выполнить директиву SQL (например, создание или удаление таблицы) beginTransaction/endTransaction – работа с транзакциями insert(String table, String nullColumnHack, ContentValues values) – вставка строк в таблицу delete(String table, String whereClause, String [] whereArgs) – удаление строк из таблицы update(String table, ContentValues values, String whereClause, String[] whereArgs) – обновление строк query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) – выборка строк из таблицы table на основе указанного условия selection и др.

ContentResolver – работа с источниками данных Лекция 5, слайд 6 getContentResolver – получить экзепляр CR из активности приложения Insert(Uri uri, ContentValues values) – вставка значений для источника данных, заданного URI. Возвращает уникальный идентификатор вставленной строки значений bulkInsert(Uri uri, ContentValues[] valueArray) – вставка массива строк-значений по заданному URI. Не гарантируется атомарность вставки. Возвращается число добавленных строк. delete(Uri uri, String where, String[ ] whereArgs) - удалить запись из источника данных с заданным uri в соответствии с условием where update(Uri uri, ContentValues values,String where, String[] whereArgs) – обновить строки источника данных в соответствии с условием и вернуть количество измененных строк openInputStream(Uri uri) / openOutputStream(Uri uri, String mode) – работа с файлами query (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) – запрос на выборку к источнику данных. Возвращает курсор. Так же есть возможность выполнения асинхронных операций для больших массивов данных

Лекция 5, слайд 7 Новосибирский государственный университет, 2012 Демонстрации TaskList Earthquake Viewer

Лекция 5, слайд 8 Новосибирский государственный университет, 2012 Стандартные источники данных BrowserCallLogContactsContract MediaStoreSettingsUserDictionary

Location Providers Новосибирский государственный университет, 2012 Лекция 5, слайд 9 GPS_PROVIDER NETWORK_PROVIDER PASSIVE_PROVIDER Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_COARSE|FINE); criteria.setPowerRequirement(Criteria.POWER_LOW|MEDIUM|HIGH); criteria.setAltitudeRequired(false|true); criteria.setBearingRequired(false|true); criteria.setSpeedRequired(false|true); criteria.setCostAllowed(true|false);

GetBestProvider Лекция 5, слайд 10 Новосибирский государственный университет, 2012 ЭнергопотреблениеТочность Возможность возвращать маршрут, скорость и высоту над уровнем моря Если указанным критериям соответствует сразу несколько источников, возвратиться тот, у кого больше всего совпадений. Если же совпадений нет, то объект Criteria начинает по очереди игнорировать следующие параметры, пока источник не будет найден

Другие методы получения Location Providers Лекция 5, слайд 11 Новосибирский государственный университет, 2012 LocationManager.GetProviders ( Criteria criteria ) LocationManager.GetProvider ( Criteria criteria )

Отслеживание передвижений Лекция 5, слайд 12 Новосибирский государственный университет, 2012 String provider = LocationManager.GPS_PROVIDER; int t = 5000; // milliseconds int distance = 5; // meters LocationListener myLocationListener = new LocationListener() { public void onLocationChanged(Location location) { // Update application based on new location. } public void onProviderDisabled(String provider){ // Update application if provider disabled. } public void onProviderEnabled(String provider){ // Update application if provider enabled. } public void onStatusChanged(String provider, int status, Bundle extras){ // Update application if provider hardware status changed. } }; locationManager.requestLocationUpdates(provider, t, distance, myLocationListener);

Оповещения о близости нахождения Лекция 5, слайд 13 Новосибирский государственный университет, 2012 String locService = Context.LOCATION_SERVICE; LocationManager lm = getSystemService(locService); double lat = 73.14; double lng = 0.51; float radius = 100f; long expiration = -1; Intent intent = new Intent(MY_ALERT); PendingIntent pIntent = PendingIntent.getBroadcast(this, -1, intent, 0); locationManager.addProximityAlert(lat, lng, radius, expiration, pIntent); Manifest.xml :

Геокодировщик Лекция 5, слайд 14 Новосибирский государственный университет, 2012 Manifest.xml : List addresses = null; Geocoder gc = new Geocoder(this, Locale.getDefault()); try { addresses = gc.getFromLocation(latitude, longitude, 10); } catch (IOException e) {} Прямое кодирование Geocoder fwdGeocoder = new Geocoder(this, Locale.Default); String streetAddress = " Pirogova st., 2, Novosibirsk, Novosibirskaya oblast', Russia, "; List locations = null; try { locations = fwdGeocoder.getFromLocationName(streetAddress, 10); } catch (IOException e) {} Обратное кодирование

Некоторые классы для работы с картами Лекция 5, слайд 16 Новосибирский государственный университет, 2012 MapView Элемент управления картами MapActivity Базовый класс, при наследовании которого создается новая Активность Overlay Класс требуется для добавления аннотаций к карте MapController Используется для управления картой, в том числе для указания местоположения и масштаба MyLocationOverlay Специальное наложение, которое может быть применено для показа текущего местоположения ItemizedOverlays и OverlayItems Позволяют создавать слой меток, которые будут отображаться с помощью объектов Drawable и соответствующего текста

Использование картографии Лекция 5, слайд 17 Новосибирский государственный университет, 2012 Получить ключ для Map API: В манифесте указать: В разметке Activity указать:

Демо Лекция 5, слайд 18 Новосибирский государственный университет, 2012 Earthquake Viewer with Overlays

Наложения Лекция 5, слайд 19 Новосибирский государственный университет, 2012 import android.graphics.Canvas; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; public class MyOverlay extends Overlay public void draw(Canvas canvas, MapView mapView, boolean shadow) { if (shadow == false) { [... Draw annotations on main map layer... ] } else { [... Draw annotations on the shadow layer... ] public boolean onTap(GeoPoint point, MapView mapView) { // Return true if screen tap is handled by this overlay return false; }

Проекции Projection projection = mapView.getProjection(); Point myPoint = new Point(); В координаты экрана projection.toPixels(geoPoint, myPoint); В географические координаты projection.fromPixels(myPoint.x, myPoint.y); Лекция 5, слайд 20 Новосибирский государственный университет, 2012

Управление наложениями Лекция 5, слайд 21 Новосибирский государственный университет, 2012 List overlays = mapView.getOverlays(); MyOverlay myoverlay = new MyOverlay(); overlays.add(myOverlay); mapView.postInvalidate(); … overlays.remove(myOverlay);

Отрисовка наложения Лекция 5, слайд 22 Новосибирский государственный университет, public void draw(Canvas canvas, MapView mapView, boolean shadow) { Projection projection = mapView.getProjection(); Double lat = *1E6; Double lng = *1E6; GeoPoint geoPoint = new GeoPoint(lat.intValue(), lng.intValue()); if (shadow == false) { Point myPoint = new Point(); projection.toPixels(geoPoint, myPoint); // Create and setup your paint brush Paint paint = new Paint(); paint.setARGB(250, 255, 0, 0); paint.setAntiAlias(true); paint.setFakeBoldText(true); // Create the circle int rad = 5; RectF oval = new RectF(myPoint.x-rad, myPoint.y-rad, myPoint.x+rad, myPoint.y+rad); // Draw on the canvas canvas.drawOval(oval, paint); canvas.drawText("Red Circle", myPoint.x+rad, myPoint.y, paint); }

Другие overlays Лекция 5, слайд 23 Новосибирский государственный университет, 2012 MyLocationOverlay enableCompass enableMyLocation ItemizedOverlay createItem(int index) siize()

Добавление Views Лекция 5, слайд 24 Новосибирский государственный университет, 2012 EditText editText1 = new EditText(getApplicationContext()); editText1.setText("Screen Pinned"); MapView.LayoutParams screenLP; screenLP = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT, x, y, MapView.LayoutParams.TOP_LEFT); mapView.addView(editText1, screenLP); Double lat = *1E6; Double lng = *1E6; GeoPoint geoPoint = new GeoPoint(lat.intValue(), lng.intValue()); MapView.LayoutParams geoLP; geoLP = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT, geoPoint, MapView.LayoutParams.TOP_LEFT); EditText editText2 = new EditText(getApplicationContext()); editText2.setText("Location Pinned"); mapView.addView(editText2, geoLP); Помещение представления на форму карты Закрепление представления за географическим местоположением

На следующей лекции Лекция 5, слайд 25 Новосибирский государственный университет, 2012 Фоновые сервисы Ненавязчивые уведомления Сигнализация Виджеты LiveDesktop & Search

Лекция 5, слайд 26 Новосибирский государственный университет, 2012