Материал: Драйвер стандартних пристроїв введення-виведення

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Драйвер стандартних пристроїв введення-виведення














Курсова робота

Драйвер стандартних пристроїв введення-виведення

Вступ

мобільний інтерфейс програмний драйвер

Ціллю курсової роботи є створення мобільного додатку зі зручним та простим у використанні інтерфейсом, який би міг редагувати та використовувати XML-файли та за даними з файлу відтворювати інформацію. Також редактор повинен використовувати карти і використовувати GPS модуль.

Практичне застосування даного програмного проекту можливе в сфері послуг.

1. Технічне завдання

За даними з карти ми відмічаємо об’єкт (магазін) де ми присваємо значення координат з GPS модуля і добавляємо назву. Далі нам потрібно зробити аудинтифікацію користувача (логін і пароль) щоб кожний користувач зміг скласти свій список покупок.

1.1 Функціональність

Програма має містити наступну функціональність:

·        Можливість завантаження / збереження даних у в форматі XML

·        Синтаксичний розбір і верифікація формату XML з відбудовою внутрішньої моделі даних, в разі помилок - формування виключення (Exception)

·        Інтерфейс користувача (на основі компонентів бібліотеки Android), який містить такі області:

o   Аудентифікацію користувача

o   Список покупок і його редагування

o   Список магазинів

o   Зображення магазинів на карті

·        Можливість збереження списку.

1.2 Вимоги до реалізації.

·        Мова програмування Java з використанням бібліотеки Android

·        Інтерфейс користувача має забезпечувати доступ до всієї функціональності програми;

2. Проектування інтерфейсу користувача

2.1    Мета

Розробити таку програму, яка дозволить спростити похід в магазин як для однієї людини, так і для всієї родини

.2      Модель інтерфейсу користувача

Призначення:

Головне вікно програми використовується для аудинтифікації і взаємодії користувача з програмою

Початковий опис прецеденту інтерфейсу користувача:

)        Прецедент починається коли користувач запускає програму.

)        Користувач може виконати одну з наступних дій:

·        Добавить і видалить покупку.

·        Добавить і видалити магазін.

·        Відмітити на карті обєкт.

·        Дізнатися по якій саме адресі знаходить даний обєкт.

·        Змінити графічне положення обєкта.

·        Побачіти на карті де знаходиться даний обєкт.

)        Прецедент закінчується коли користувач закінчує роботу з програмою.

2.3 Приклад зовнішнього вигляду програми

Програмний код

<? xml version= «1.0» encoding= «utf-8»?>

<manifest xmlns:android= «http://schemas.android.com/apk/res/android»= «com.team1»:versionCode= «1»:versionName= «1.0»>

<uses-permission android:name= «android.permission.INTERNET» />

<uses-permission android:name= «android.permission.ACCESS_FINE_LOCATION» />

<application android:icon= «@drawable/icon» android:label= «@string/app_name»>

<uses-library android:name= «com.google.android.maps» />

<activity android:name=».GSS»:label= «@string/app_name»>

</activity>

<activity android:name=».ShopsMap»>

</activity>

<activity android:name=».pokypki» android:label= «@string/app_name1»>

<intent-filter>

<action android:name= «android.intent.action.MAIN» />

<category android:name= «android.intent.category.LAUNCHER» />

</intent-filter>

</activity>

<activity android:name=».magazin» android:label= «@string/app_name2»>

</activity>

<activity android:name=».seting» android:label= «@string/app_name3»>

</activity>

</application>

<uses-permission android:name= «android.permission.GET_ACCOUNTS» />

<uses-permission android:name= «android.permission.READ_CONTACTS» />

<uses-permission android:name= «android.permission.WRITE_CONTACTS» />

</manifest>

<? xml version= «1.0» encoding= «utf-8»?>

<RelativeLayout xmlns:android= «http://schemas.android.com/apk/res/android»:layout_width= «fill_parent»:layout_height= «fill_parent»>

<TextView:id= «@+id/label1»:layout_width= «fill_parent»:layout_height= «wrap_content»:text= «Name:» />

<EditText:id= «@+id/entry1»:layout_width= «fill_parent»:layout_height= «wrap_content»:background= «@android:drawable/editbox_background»:layout_below= «@id/label1»/>

<TextView:id= «@+id/label2»:layout_width= «fill_parent»:layout_height= «wrap_content»:text= «Longtitude:»:layout_below= «@+id/entry1»/>

<EditText:id= «@+id/entry2»:layout_width= «fill_parent»:layout_height= «wrap_content»

android:background= «@android:drawable/editbox_background»:layout_below= «@id/label2»/>

<TextView:id= «@+id/label3»:layout_width= «fill_parent»:layout_height= «wrap_content»:text= «Laptitude:»:layout_below= «@+id/entry2»/>

<EditText:id= «@+id/entry3»:layout_width= «fill_parent»:layout_height= «wrap_content»:background= «@android:drawable/editbox_background»:layout_below= «@id/label3»/>

<Button:id= «@+id/ok1»:layout_width= «wrap_content»:layout_height= «wrap_content»:layout_below= «@id/entry3»:layout_alignParentRight= «true»:layout_marginLeft= «10dip»:text= «OK» />

<Button:id= «@+id/cancel1»:layout_width= «wrap_content»:layout_height= «wrap_content»:layout_toLeftOf= «@id/ok1»:layout_alignTop= «@id/ok1»:text= «Cancel» />

</RelativeLayout>

<? xml version= «1.0» encoding= «utf-8»?>

<RelativeLayout xmlns:android= «http://schemas.android.com/apk/res/android»:layout_width= «fill_parent»:layout_height= «fill_parent»>

<TextView:id= «@+id/label»:layout_width= «fill_parent»:layout_height= «wrap_content»

android:text= «Name:» />

<EditText

android:id= «@+id/entry»:layout_width= «fill_parent»:layout_height= «wrap_content»:background= «@android:drawable/editbox_background»:layout_below= «@id/label»/>

<Button:id= «@+id/ok»:layout_width= «wrap_content»:layout_height= «wrap_content»:layout_below= «@id/entry»:layout_alignParentRight= «true»:layout_marginLeft= «10dip»:text= «OK» />

<Button:id= «@+id/cancel»:layout_width= «wrap_content»:layout_height= «wrap_content»:layout_toLeftOf= «@id/ok»:layout_alignTop= «@id/ok»:text= «Cancel» />

</RelativeLayout>

<? xml version= «1.0» encoding= «utf-8»?>

<LinearLayout xmlns:android= «http://schemas.android.com/apk/res/android»:orientation= «vertical»:layout_width= «fill_parent»:layout_height= «fill_parent»>

<LinearLayout:android= «http://schemas.android.com/apk/res/android»:layout_width= «fill_parent»:layout_height= «wrap_content»:orientation= «horizontal» >

<Button:id= «@+id/addContactButton»:layout_width= «wrap_content»:layout_height= «wrap_content»:layout_weight= «0.51»:text= «@string/allAccountsPlus» />

</LinearLayout>

<ListView android:layout_width= «fill_parent»:id= «@+id/contactList»:layout_height= «wrap_content»:layout_weight= «1»/>

<LinearLayout xmlns:android= «http://schemas.android.com/apk/res/android»

:orientation= «horizontal»:layout_width= «fill_parent»:layout_height= «wrap_content» android:weightSum= «3»>

<Button android:id= «@+id/addContactButton1»:text= «@string/addContactButtonLabel1»:layout_height= «wrap_content»:layout_width= «wrap_content»:layout_weight= «1»/>

<Button android:id= «@+id/addContactButton2»:text= «@string/addContactButtonLabel2»:layout_height= «wrap_content»:layout_width= «wrap_content»:layout_weight= «1»/>

<Button android:id= «@+id/addContactButton3»:text= «@string/addContactButtonLabel3»:layout_height= «wrap_content»:layout_width= «wrap_content»:layout_weight= «1»/>

</LinearLayout>

</LinearLayout>

<? xml version= «1.0» encoding= «utf-8»?>

<LinearLayout xmlns:android= «http://schemas.android.com/apk/res/android»:orientation= «vertical»:layout_width= «fill_parent»:layout_height= «fill_parent»>

<EditText android:layout_height= «wrap_content»:id= «@+id/editText1» android:text= «User»:layout_width= «fill_parent»></EditText>

<EditText android:layout_height= «wrap_content» android:id= «@+id/editText2» android:text= «Password» android:layout_width= «fill_parent»></EditText>

<ListView android:layout_width= «fill_parent»:id= «@+id/contactList»:layout_height= «wrap_content»:layout_weight= «1»/>

<LinearLayout xmlns:android= «http://schemas.android.com/apk/res/android»:orientation= «horizontal»:layout_width= «fill_parent»:layout_height= «wrap_content»>

<Button android:id= «@+id/addContactButton1»:text= «@string/addContactButtonLabel1»:layout_height= «wrap_content»:layout_width= «wrap_content»:layout_weight= «1»/>

<Button android:id= «@+id/addContactButton2»:text= «@string/addContactButtonLabel2»:layout_height= «wrap_content»:layout_width= «wrap_content»:layout_weight= «1»/>

<Button android:id= «@+id/addContactButton3»:text= «@string/addContactButtonLabel3»:layout_height= «wrap_content»:layout_width= «wrap_content»:layout_weight= «1»/>

</LinearLayout>

</LinearLayout>

<? xml version= «1.0» encoding= «utf-8»?>

<LinearLayout xmlns:android= «http://schemas.android.com/apk/res/android»:orientation= «vertical»:layout_width= «fill_parent»:layout_height= «fill_parent»>

<LinearLayout xmlns:android= «http://schemas.android.com/apk/res/android»:orientation= «horizontal»:layout_width= «fill_parent»:layout_height= «wrap_content»>

<Button android:id= «@+id/addContactButton»:text= «@string/allAccountsPlus»:layout_height= «wrap_content»:layout_width= «wrap_content»:layout_weight= «1»/>

</LinearLayout>

<ListView android:layout_width= «fill_parent»

android:id= «@+id/contactList»

android:layout_height= «wrap_content»:layout_weight= «1»/>

<LinearLayout xmlns:android= «http://schemas.android.com/apk/res/android»:orientation= «horizontal»:layout_width= «fill_parent»:layout_height= «wrap_content»>

<Button android:id= «@+id/addContactButton1»:text= «@string/addContactButtonLabel1»:layout_height= «wrap_content»:layout_width= «wrap_content»:layout_weight= «1»/>

<Button android:id= «@+id/addContactButton2»:text= «@string/addContactButtonLabel2»:layout_height= «wrap_content»:layout_width= «wrap_content»:layout_weight= «1»/>

<Button android:id= «@+id/addContactButton3»:text= «@string/addContactButtonLabel3»:layout_height= «wrap_content»:layout_width= «wrap_content»:layout_weight= «1»/>

</LinearLayout>

</LinearLayout>

<? xml version= «1.0» encoding= «utf-8»?>

<LinearLayout:android= «http://schemas.android.com/apk/res/android»:layout_width= «fill_parent»:layout_height= «fill_parent»>

<com.google.android.maps. MapView:android= «http://schemas.android.com/apk/res/android»:id= «@+id/mapview»:layout_width= «fill_parent»:layout_height= «fill_parent»:clickable= «true»:apiKey= «0tzlgC_A9yCyQDmKwgGyFyoSsLtqWDMDCpQlp2Q»

/>

</LinearLayout>

<? xml version= «1.0» encoding= «utf-8»?>

<LinearLayout xmlns:android= «http://schemas.android.com/apk/res/android»:layout_width= «fill_parent»:layout_height= «fill_parent»:orientation= «horizontal» >

<Button:id= «@+id/button_main1»:layout_width= «wrap_content»:layout_height= «wrap_content»:layout_weight= «0.70»:padding= «10dp»:text= «Shop» />

<Button:id= «@+id/button_main»:layout_width= «168dp»:layout_height= «wrap_content»:padding= «10dp»:text= «Purchase» />

</LinearLayout>

<? xml version= «1.0» encoding= «utf-8»?>

<resources>

<string name= «accountSpinnerLabel»>Account</string>

<string name= «addContactButtonLabel1»>Purchase</string>

<string name= «addContactButtonLabel2»>Shop</string>

<string name= «addContactButtonLabel3»>User</string>

<string name= «allAccountsPlus»>+</string>

<string name= «app_name»>Purchase</string>

<string name= «app_name1»>Purchase</string>

<string name= «app_name2»>Shop</string>

<string name= «app_name3»>User</string>

</resources>

package com.team1;

import android.app. Dialog;

import android.content. Context;

import android.view. View;

import android.view. View. OnClickListener;

import android.widget. Button;

import android.widget. TextView;

public class AddPurchaseDialor extends Dialog implements OnClickListener {okButton;cancelButton;

public AddPurchaseDialor (Context context) {

super(context);(R.layout.add_purches_dialog);= (Button) findViewById (R.id.ok);.setOnClickListener(this);= (Button) findViewById (R.id.cancel);.setOnClickListener(this);

}

@Override

public void onClick (View v) {

if (v == okButton)

{textView = (TextView) findViewById (R.id.entry);.getText();();

return;

}

if (v == cancelButton)

dismiss();

}

}

package com.team1;

import com.team1.R;

import android.app. Activity;

import android.content. Intent;

import android.os. Bundle;

import android.view. View;

import android.view. View. OnClickListener;

import android.widget. Button;

public class seting extends Activity {

public void onCreate (Bundle savedValues) {

super.onCreate(savedValues);(R.layout.seting);

// Capture our button from layoutbutton = (Button) findViewById (R.id.addContactButton1);

// Register the onClick listener with the implementation above.setOnClickListener (new OnClickListener() {

@Override

public void onClick (View v) {

// TODO Auto-generated method stubintent_pokypki = new Intent (seting.this, pokypki.class);(intent_pokypki);

}

});

// Capture our button from layoutbutton1 = (Button) findViewById (R.id.addContactButton2);

// Register the onClick listener with the implementation above.setOnClickListener (new OnClickListener() {

@Override

public void onClick (View v) {intent_magazin = new Intent (seting.this, magazin.class);

startActivity (intent_magazin);

}

});

}

}

package com.team1;

import java.util. ArrayList;

import java.util. List;

import android.app. AlertDialog;

import android.content. Context;

import android.content. Intent;

import android.graphics.drawable. Drawable;

import android.location. Location;

import android.location. LocationListener;

import android.location. LocationManager;

import android.os. Bundle;

import android.view. MotionEvent;

import android.widget. Toast;

import com.google.android.maps. GeoPoint;

import com.google.android.maps. ItemizedOverlay;

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;

public class ShopsMap extends MapActivity {

Источник: https://www.bibliofond.ru/view.aspx?id=896849