Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемРодион Парышев
1 Разработка мобильных приложений под Android Чиркунов Кирилл vk.com/chirkunov
2 На прошлой лекции Лекция 5, слайд 1 Новосибирский государственный университет, 2012 Intents, Broadcast Intents, Broadcast Child Activities, Dialogs Child Activities, Dialogs Internet usage Internet usage Preferences & Settings Preferences & Settings Files Files
3 Сегодня Источники данных, SQLite Источники данных, SQLite Стандартные источники данных Стандартные источники данных Сервисы геолокации Сервисы геолокации Картографическая привязка, наложения Картографическая привязка, наложения Лекция 5, слайд 2 Новосибирский государственный университет, 2012
4 Лекция 5, слайд 3 Новосибирский государственный университет, 2012 Легковесная, свободная, мощная СУБД, поддерживающая SQL для хранения данных Отсутствие типизации для каждого столбца – значение типизируется отдельно для каждой строки Часть программного стэка платформы Android Каждая база данных считается частью приложения, которое её создало
5 Лекция 5, слайд 4 Новосибирский государственный университет, 2012 moveToFirs t – переместить курсор на первую строку в результате запроса moveToNex t – переместить курсор на следующую строку moveToPrevious – переместить на предыдующую строку getCount – возвратить количество строк в результирующем наборе данных getColumnIndexOrThrow – возвратить индекс столбца по имени getColumnName – возвратить имя колонки по индексу moveToPosition – перейти на указанную позицию в результате запроса getPosition – вернуть номер текущей строки Курсор (Cursor) в Android
6 Работа с базой данных (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 и др.
7 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) – запрос на выборку к источнику данных. Возвращает курсор. Так же есть возможность выполнения асинхронных операций для больших массивов данных
8 Лекция 5, слайд 7 Новосибирский государственный университет, 2012 Демонстрации TaskList Earthquake Viewer
9 Лекция 5, слайд 8 Новосибирский государственный университет, 2012 Стандартные источники данных BrowserCallLogContactsContract MediaStoreSettingsUserDictionary
10 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);
11 GetBestProvider Лекция 5, слайд 10 Новосибирский государственный университет, 2012 ЭнергопотреблениеТочность Возможность возвращать маршрут, скорость и высоту над уровнем моря Если указанным критериям соответствует сразу несколько источников, возвратиться тот, у кого больше всего совпадений. Если же совпадений нет, то объект Criteria начинает по очереди игнорировать следующие параметры, пока источник не будет найден
12 Другие методы получения Location Providers Лекция 5, слайд 11 Новосибирский государственный университет, 2012 LocationManager.GetProviders ( Criteria criteria ) LocationManager.GetProvider ( Criteria criteria )
13 Отслеживание передвижений Лекция 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);
14 Оповещения о близости нахождения Лекция 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 :
15 Геокодировщик Лекция 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) {} Обратное кодирование
16 Некоторые классы для работы с картами Лекция 5, слайд 16 Новосибирский государственный университет, 2012 MapView Элемент управления картами MapActivity Базовый класс, при наследовании которого создается новая Активность Overlay Класс требуется для добавления аннотаций к карте MapController Используется для управления картой, в том числе для указания местоположения и масштаба MyLocationOverlay Специальное наложение, которое может быть применено для показа текущего местоположения ItemizedOverlays и OverlayItems Позволяют создавать слой меток, которые будут отображаться с помощью объектов Drawable и соответствующего текста
17 Использование картографии Лекция 5, слайд 17 Новосибирский государственный университет, 2012 Получить ключ для Map API: В манифесте указать: В разметке Activity указать:
18 Демо Лекция 5, слайд 18 Новосибирский государственный университет, 2012 Earthquake Viewer with Overlays
19 Наложения Лекция 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; }
20 Проекции Projection projection = mapView.getProjection(); Point myPoint = new Point(); В координаты экрана projection.toPixels(geoPoint, myPoint); В географические координаты projection.fromPixels(myPoint.x, myPoint.y); Лекция 5, слайд 20 Новосибирский государственный университет, 2012
21 Управление наложениями Лекция 5, слайд 21 Новосибирский государственный университет, 2012 List overlays = mapView.getOverlays(); MyOverlay myoverlay = new MyOverlay(); overlays.add(myOverlay); mapView.postInvalidate(); … overlays.remove(myOverlay);
22 Отрисовка наложения Лекция 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); }
23 Другие overlays Лекция 5, слайд 23 Новосибирский государственный университет, 2012 MyLocationOverlay enableCompass enableMyLocation ItemizedOverlay createItem(int index) siize()
24 Добавление 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); Помещение представления на форму карты Закрепление представления за географическим местоположением
25 На следующей лекции Лекция 5, слайд 25 Новосибирский государственный университет, 2012 Фоновые сервисы Ненавязчивые уведомления Сигнализация Виджеты LiveDesktop & Search
26 Лекция 5, слайд 26 Новосибирский государственный университет, 2012
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.