Основы создания приложений и работы с базами данных мобильной системы android

Автор: Пользователь скрыл имя, 24 Октября 2013 в 09:18, курсовая работа

Краткое описание

Целью данного курсового проекта является изучение ОС Android и получения навыков программирования для этой системы, а так же работы с базами данных этой системы. В настоящее время в связи с широким распространением данной операционной мобильной системы растет востребованность к приложениям различной направленности. В связи с этим данная тема очень актуальна, так как в ней будут изложены и разобраны сведения, которые помогут разобраться во многих аспектах системы Android.

Оглавление

Введение……………………………………………………………………………2
Введение в Android……………………………………………….……….......3
. История создания ОС………………………………………..……….…...3
1.2. Основные сведения о системе Android…………………….…..….…….4
1.3. Базовые компоненты Android…………………………………….....…...6
2. Разработка приложений для Android……………………………..…….…….7
2.1. Основные виды приложений……………………………………….……7
2.2. Изучение структуры приложения на основе программы To-Do-List.…8
2.3. Файл AndroidManifest.xml………………………………………………..11
2.3.1. Описание файла…………………………………………..………11
2.3.2. Конфигурирование основных настроек файла…………………12
2.4. Класс Application в Android……………………………………………..14
2.5. Активности в Android……………………………………………………16
3. Работа с базами данных и источниками данных…………………………..19
3.1. Базы данных SQLite……………………………………………………..19
3.1.1. Вставка, удаление и обновление строк в таблицах SQLite……24
3.2. Источники данных Android и работа с ними………………………….25
3.2.1. Основные сведения и создание источника данных……………25
3.2.2. Использование источников данных…………………………….28
Заключение……………………………………………………………………….31
Литература………………………………………………………………………..32

Файлы: 1 файл

Курсовик.doc

— 246.50 Кб (Скачать)

 

Теперь можно перейти к написанию  программы. Приложение To-Do List буди управлять списком задач, используя стандартные графические элементы.  Открываем файл main.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">

<EditText

android:id="@+id/myEditText"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="New To Do Item"

/>

<ListView

android:id="@+id/myListView"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

 

 

Таким образом мы задаем какие элементы интерфейса будут отображаться на экране. В данном случае это будет панель для ввода текста и обычный  текст. LinearLayout отвечает за стиль разметки экрана приложение и расположения объектов интерфейса. Так же в представлениях мы создаем ID-идентификаторы (@+id/), чтобы затем ссылаться на него в программе.

После описания пользовательского  интерфейса откроем класс Активность в папке «src». В данном примере все изменения будут сделаны в  методе onCreate.

 

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// Загрузите свою разметку

setContentView(R.layout.main);

// Получите ссылки  на элементы пользовательского  интерфейса

final ListView myListView = (ListView) findViewById (R.id.myListView);

final EditText myEditText = (EditText) findViewById (R.id.myEditText);

}

 

Метод onCreate это – метод обработки событий. Он вызывается после запуска ли перезапуска деятельности. В нем инициализируются статические данные деятельности, а также задает макет методом setContentView(). С помощью этого метода мы можем загрузить разметку, созданную в формате XML,  в класс Активности. Используя метод finViewById() мы получаем ссылки на элементы ListView и EditText описанные в файле main.xml.

Теперь внутри того же метода onCreate создадим строковый массив ArrayList для хранения каждого элемента списка задач, привязать этот массив к элементу интерфейса ListView с помощью нового экземпляра ArrayAdapter.

 

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

final ListView myListView = (ListView) findViewById (R.id.myListView);

final EditText myEditText = (EditText) findViewById (R.id.myEditText);

// Создайте  массив для хранения списка  задач

final ArrayList<String> todoItems = new ArrayList<String>();

// Создайте ArrayAdapter, чтобы привязать массив к ListView

final ArrayAdapter<String> aa;

aa = new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_1, todoItems);

// Привяжите массив к ListView.

myListView.setAdapter(aa);

}

 

ArrayAdapter использует механизм обобщенных типов для привязки AdapterView к массиву объектов определенного класса. По умолчанию ArrayAdapter задействует метод toString для каждого объекта в массиве, чтобы создать и наполнить данными элементы TextView. Альтернативные конструкторы позволяют применять более сложную разметку. Также можно наследовать этот класс, чтобы

заменить экземпляры класса TextView на другие элементы.

Теперь необходимо сделать так, чтобы пользователи могли добавлять в список новые задачи. Создадим для элемента EditText обработчик onKeyListener, который отслеживает нажатие центральной клавиши на манипуляторе D-pad и заносит содержимое EditText в массив, оповещая об этом объект ArrayAdapter. Затем очистим поле ввода, чтобы пользователь мог добавить следующий пункт. Все это необходимо сделать в том же методе onCreate.

 

myEditText.setOnKeyListener(new OnKeyListener() {

public boolean onKey(View v, int keyCode, KeyEvent event) {

if (event.getAction() == KeyEvent.ACTION_DOWN)

if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){

todoItems.add(0, myEditText.getText().toString());

aa.notifyDataSetChanged();

myEditText.setText("");

return true;}

return false;

}

});

}

Теперь запускаем приложение с  помощью виртуального устройства. На экране должна отобразиться область  для ввода текста, а ниже задачи, которые мы вводил до этого.

 

2.3 Файл AndroidManifest.xml

 

2.3.1.Описание файла

 

Каждый проект Android должен содержать  специальный файл, называемый файлом манифеста. Из этого файла система получает настройки конфигурации приложения, включая идентификационную информацию, а также права, требуемые приложению для нормальной работы.

В системе этот файл служит для  установки и обновлению пакетов приложения, запуска деятельности приложения, управлением правами, предоставлению информации о приложении пользователю.

В редакторе ресурсов Eclipse данные этого файла распределяются по нескольким категориям. Это Манифест(Manifest), приложение(Application), права(Permissions), инструментарии(Instrumentation)  и AndroidManifest.xml.

На вкладке Manifest содержатся настройки всего пакета, включая имя пакета, информацию о версии приложения и минимально допустимой версии Android SDK. Также здесь можно задать аппаратные требования.

На вкладке Application  содержатся настройки всего приложения, включая метку приложения и значок, а также информацию о компонентах приложения, таких как деятельности, интент-фильтры, и другой функциональности приложения, включая конфигурацию провайдера услуг и контент-провайдера.

На вкладке Permissions описаны права, предоставляемые приложению. Здесь могут быть также указаны специальные права, которые требуются тприложению для работы.

На вкладке Instrumentation указываются классы инструментария для мониторинга за приложением. В поле Name вводится полное имя класса подкласса instrumentation вашего приложения, а в поле Target Package (Целевой пакет) вы указываете имя пакета, файл которого содержит <application> для контролируемого приложения.

Файл манифеста Android представляет собой XML-файл. Вы можете редактировать код XML вручную на вкладке AndroidManifest.xml редактора ресурсов.

 

 

 

2.3.2. Конфигурирование основных настроек файла

 

Большинство самых важных настроек приложения задаются атрибутами и дочерними тегами блоков <manifest> и <application>. Пакет приложения определяется в теге <manifest> файла манифеста Android с помощью атрибута package, например:

<manifest

xmlns:android=”http://schemas.android.com/apk/res/android”

package=”com.androidbook.droid1”

android:versionCode=”1”

android:versionName=”1.0”>

 

С помощью тега <uses-library> приложения могут взаимодействовать с другими библиотеками в дополнение к стандартным пакетам Android. Эта возможность доступна на вкладке Application редактора ресурсов.

Например:

<uses-library

android:name=”com.company.sharedutilities” />

 

Затем можно изменить имя и код версии приложения. Имя представляет собой информацию о версии, используемой для отслеживания сборок приложения. Атрибут android:versionName тега <manifest> хранит строковое значение для отслеживания номера сборки приложения. Код версии позволяет платформе Android программно обновлять приложения. Значение атрибута android:versionCode тега <manifest> может быть целое число, используемое платформой Android.

Приложения Android могут быть скомпилированы для совместимости с несколькими различными версиями SDK. В теге <uses-sdk> указывается минимально допустимая версия Android SDK для обеспечения нормальной работы приложения на мобильном телефоне. Атрибут android:minSdkVersion этого тега представляет минимально допустимую версию SDK в виде целого числа.

Атрибут android:label тега <application> хранит строку, представляющую имя

приложения. Можно определить это имя в виде фиксированной строки, как в

следующем примере:

<application

android:label=”My application name”>

Или как вариант, в атрибуте android: label можно указать ссылку на строковый ресурс:

<application

android:label=”@string/app_name”>

В этом случае, имя приложения будет  хранить строковый ресурс app_name в файле

strings.xml.

Атрибут android:icon тега <application> хранит ссылку на строковый ресурс,

представляющий собой значок приложения. Пример:

<application

android:icon=”@drawable/icon”>

 

Можно задать описание приложения. Значение атрибута android:description тега <application> строка, содержащая краткое описание приложения. Система Android использует это описание для отображения информации о приложении.  Можно также указать в этом атрибуте ссылку на строковый ресурс:

<application

android:label=”My application name”

android:description=”@string/app_desc”>

 

В AndroidManifest.xml можно задать значение, которое разрешает или запрещает отладку приложения отладчиком. Для этого атрибуту android:debuggable тега <application> присваивается булево значение. Невозможно проводить отладку приложения, если значение этого атрибута не равно true.

Каждая деятельность перед использованием должна быть регистрирована в файле манифеста Android. Каждый раз необходимо обновлять файл манифеста при добавлении новой деятельности к приложению.

Деятельность представляет собой определенную задачу для вычисления, часто связанную с определенным экраном. Она может быть запущена различными способами с помощью интентов (объектов использующихся для отправки асинхронных сообщений внутри приложения или между приложениями). Каждая деятельность может иметь свою собственную метку (имя) и значок, но по умолчанию метка и значок приложению уже назначены.

Регистрация деятельности производится в разделе Application Nodes вкладки Application. Каждая новая деятельность обладает собственным тегом <activity> в получившемся XML- файле. Например, в следующем фрагменте кода XML происходит определение класса деятельности DroidActivity:

 

<activity

            android:name=”.DroidActivity” />

 

С помощью интент-фильтра возможно определить деятельность как основную точку входа приложения. Интент-фильтр запуска деятельности по умолчанию должен быть сконфигурирован в теге <intent-filter> с типом действия MAIN и категорией LAUNCHER. DroidActivity как основную точку запуска приложения:

 

 

 

<activity

android:name=”.DroidActivity”

android:label=”@string/app_name”>

<intent-filter>

<action

android:name=”android.intent.action.MAIN” />

<category

android:name=”android.intent.category.LAUNCHER” />

</intent-filter>

</activity>

 

Таким образом, тег <intent-filter> покатывает системе Android что все запросы

запуска приложения должны направляться деятельности DroidActivity.

Для приложений, требующих доступа  к совместно используемых или  привилегированным ресурсам на мобильном телефоне, должны быть объявлены определенные права в файле манифеста Android. Такой принцип обеспечения безопасности гарантирует, что никакие приложение не может изменить свое поведение во время выполнения или выполнить какие-либо операции без разрешении пользователем.

Приложения Android могут получить доступ к собственным файлам и базам данных без наличия специальных прав. Однако, если приложению необходимо полнить доступ к совместно используемым или особым ресурсам, права, разрешающие такие действия,  должны быть указаны в теге <uses-permission> файла манифеста Android. Управлять правами возможно на вкладке Permissions в редакторе ресурсов файла манифеста Android.

 

 

2.4.  Класс Application в Android

 

Класс Application – это базовый класс приложения Android. При запуске вначале создается экземпляр этого класс, а потом уже необходимые деятельности.

При самостоятельной реализации класса Application  появляются возможности самостоятельно контролировать приложение, передавать объекты между программными компонентами, контролировать ресурсы, которые используются в нескольких компонентах одного приложения.

При создании процессора программы создается экземпляр класса Application, который описывается и регистрируется в манифесте. Таким образом получается, что этот класс по природе своей Синглтон ( у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Существенно то, что можно пользоваться именно экземпляром класса, так как при этом во многих случаях становится доступной более широкая функциональность.) и должен регистрироваться соответствующим образом, предоставляя доступ к методам и свойствам. Ниже в листинге показан каркас для наследования класса Application и реализации его в качестве синглтона:

 

import android.app.Application;

import android.content.res.Configuration;

 

public class MyApplication extends Application {

private static MyApplication singleton;

// Возвращает экземпляр данного класса

public static MyApplication getInstance() {

return singleton;

}

@Override

public final void onCreate() {

super.onCreate();

singleton = this;

}

}

Создав новый класс Application, нужно зарегистрировать его внутри

тега <application> в манифесте:

 

<application android:icon="@drawable/icon"

         android:name="MyApplication">

[... Вложенные в манифест теги ...]

</application>

 

При запуске приложения создается экземпляр вашей реализации класса

Application. Добавляйте новые свойства для хранения программного состояния и глобальных ресурсов, чтобы иметь возможность получить к ним доступ из компонентов приложения:

 

MyObject value = MyApplication.getInstance().getGlobalStateValue();

MyApplication.getInstance().setGlobalStateValue(myObjectValue);

 

Такой подход особенно эффективен при  передаче объектов между слабосвязанными  частями вашей программы, а также  для контроля за общими ресурсами и состоянием приложения.

Класс Application содержит методы отвечающие за создание и завершение работы приложения, поведение программы при нехватке памяти и изменениях конфигурации. Метод onCreate вызывается при создании приложения, переопределяется для инициализации синглтона программы и создания и инициализации свойств, в которых хранятся состояния приложения или общие    ресурсы. Метод onTerminate может быть вызван при преждевременном завершении работы объекта Application. Хотя если работа приложения прерывается ядром, чтобы освободить ресурсы для других программ, процесс завершится без предупреждения и без вызова метода onTerminate из объекта Application. Метод onLowMemory предоставляет возможность хорошо оптимизированным приложениям освобождать дополнительную память, когда система работает в условиях ограниченных ресурсов. Как правило, вызывается в ситуациях, когда фоновые процессы уже закрыты, а памяти для приложений, находящихся на переднем плане, все еще не хватает. Так как в отличие от объектов Activity приложение не перезапускается при изменения конфигурации необходимо переопределять метод onConfigurationChanged.

Переопределение методов, связанных  с жизненным циклом приложения:

 

public class MyApplication extends Application {

private static MyApplication singleton;

// Возвращает экземпляр данного класса

public static MyApplication getInstance() {

return singleton;

}

@Override

public final void onCreate() {

super.onCreate();

singleton = this;

}

@Override

public final void onTerminate() {

super.onTerminate();

}

@Override

public final void onLowMemory() {

super.onLowMemory();

}

@Override

public final void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

}

 

}

 

2.5. Активности  в Android

 

При создании экранов с графическим интерфейсом наследуется класс Activity и используются Представления для взаимодействия с пользователем. Каждая Активность — экран (по аналогии с Формой), который приложение может показывать пользователям. Чем сложнее приложение, тем больше экранов нужно.

Информация о работе Основы создания приложений и работы с базами данных мобильной системы android