Управління вводом/виводом та сенсорною підсистемою в ОС Android

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Мережеві операційні системи

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра ЕОМ / ЗВІТ ДО ЛАБОРАТОРНОЇ РОБОТИ №3 з дисципліни: «Мережні операційні системи» на тему: «Управління вводом/виводом та сенсорною підсистемою в ОС Android» МЕТА РОБОТИ: Оволодіти навичками програмування і управління вводом/виводом й сенсорною підсистемою в ОС Android. 1. Завдання Створити тестову програму на основі програми-прототипу згідно заданого варіанту. Програма контролю дотиків до сенсорного екрану (SingleTouchTest.java та MultiTouchTest.java) Інтерфейс простої форми для вводу даних. 2. Перелік основних елементів інтерфейсу Android-пристрою Графічний інтерфейс користувача для Android програми побудований з використанням ієрархії View і ViewGroup об'єктів. View об'єкти, як правило - це UI віджети, такі як кнопки або текстові поля і ViewGroup, а також невидимі контейнери, які визначають, як будуть використовуватись child-елементи, наприклад, у сітці або вертикальному списку. Android надає XML-словник, який відповідає підкласам View і ViewGroup, тому ви можете визначити свій користувальницький інтерфейс в XML, використовуючи ієрархію елементів інтерфейсу користувача. / Рис.1. Ілюстрація того, як ViewGroup об'єкти утворюють філії в макеті і містять інші View об'єкти. Основними елементами інтерфейсу Android пристрою є: кнопки, списки, текстові поля вводу, текстові поля виводу, radio button, check button, progress bar, data picker, rating bar та інші. Платформа для інтерфейсу користувача Android заснована на обробці дотиків. Пристрої Android оснащуються сенсорними екранами, тому android додатки повинні добре підтримувати сенсорний ввід. У режимі сенсорного введення зазвичай немає фокусу і вибраного елемента, а при перемиканні на інші режими (наприклад: режим списку) і назад фокус і вибраний елемент можуть зникати і знову з'являтися. Винятком є ​​сфокусований режим сенсорного введення. Кнопки і віджети повинні бути досить великими, щоб їх можна було вибрати дотиками. 3. Лістинг тестової програми //MainActivity.java package com.example.pikaso_lab3; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.EditText; import android.widget.RadioGroup; public class MainActivity extends Activity { Lenengrad YuliaKogut = new Lenengrad(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Button save=(Button)findViewById(R.id.button2); // save.setOnClickListener(onSave); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void Button1_Click(View view) { try{ Class clazz = Class.forName("com.example.pikaso_lab3.AndroidBasicsStarter"); Intent intent = new Intent(this,clazz); startActivity(intent); } catch(ClassNotFoundException e){ e.printStackTrace(); } } public void Button2_Click(View view) { EditText name=(EditText)findViewById(R.id.editText1); EditText pass=(EditText)findViewById(R.id.editText2); YuliaKogut.setName(name.getText().toString()); YuliaKogut.setPass(pass.getText().toString()); RadioGroup types=(RadioGroup)findViewById(R.id.radioGroup1); switch (types.getCheckedRadioButtonId()) { case R.id.radio0: YuliaKogut.setRule("user"); break; case R.id.radio1: YuliaKogut.setRule("admin"); break; } //show message box AlertDialog alertDialog; alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setTitle("Лабораторна 3"); alertDialog.setMessage("Name: "+YuliaKogut.getName()+"\nPass: "+ YuliaKogut.getPass()+"\nRule :"+YuliaKogut.getRule()); alertDialog.show(); } } //activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="24dp" android:onClick="Button1_Click" android:text="Вибір тесту" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/button1" android:layout_marginTop="19dp" android:ems="10" android:inputType="textPersonName" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/editText1" android:ems="10" android:inputType="textPassword" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/editText1" android:layout_alignBottom="@+id/editText1" android:layout_alignParentLeft="true" android:layout_marginLeft="15dp" android:text="Логін" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/editText2" android:layout_alignRight="@+id/textView2" android:text="Пароль" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="Права" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button2" android:layout_centerHorizontal="true" android:layout_marginTop="24dp" android:text="Хомік Володимир" /> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText2" android:layout_alignRight="@+id/editText1" android:layout_alignTop="@+id/textView4" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="Користувач" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Адміністратор" /> </RadioGroup> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="@string/hello_world" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_alignRight="@+id/radioGroup1" android:layout_below="@+id/radioGroup1" android:layout_marginTop="35dp" android:onClick="Button2_Click" android:text="Зберегти" /> </RelativeLayout> //Lenengrad.java package com.example.pikaso_lab3; public class Lenengrad { private String name=""; private String pass=""; private String rule=""; public String getName() { return(name); } public void setName(String name) { this.name=name; } public String getPass() { return(pass); } public void setPass(String pass) { this.pass=pass; } public void setRule(String rule) { this.rule = rule; } public String getRule() { return (rule); } } //AndroidBasicsStarter.java package com.example.pikaso_lab3; import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; public class AndroidBasicsStarter extends ListActivity { String tests[] = { "SingleTouchTest", "MultiTouchTest" }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, tests)); } @Override protected void onListItemClick(ListView list, View view, int position, long id) { super.onListItemClick(list, view, position, id); String testName = tests[position]; try { Class clazz = Class .forName("com.example.pikaso_lab3." + testName); Intent intent = new Intent(this, clazz); startActivity(intent); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } //SingleTouchTest.java package com.example.pikaso_lab3; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.TextView; public class SingleTouchTest extends Activity implements OnTouchListener { StringBuilder builder = new StringBuilder(); TextView textView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); textView = new TextView(this); textView.setText("Touch and drag (one finger only)!"); textView.setOnTouchListener(this); setContentView(textView); } @Override public boolean onTouch(View v, MotionEvent event) { builder.setLength(0); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: builder.append("down, "); break; case MotionEvent.ACTION_MOVE: builder.append("move, "); break; case MotionEvent.ACTION_CANCEL: builder.append("cancle, "); break; case MotionEvent.ACTION_UP: builder.append("up, "); break; } builder.append(event.getX()); builder.append(", "); builder.append(event.getY()); String text = builder.toString(); Log.d("TouchTest", text); textView.setText(text); return true; } } //MultiTouchTest.java package com.example.pikaso_lab3; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.TextView; public class MultiTouchTest extends Activity implements OnTouchListener { StringBuilder builder = new StringBuilder(); TextView textView; float[] x = new float[10]; float[] y = new float[10]; boolean[] touched = new boolean[10]; private void updateTextView() { builder.setLength(0); for(int i = 0; i < 10; i++) { builder.append(touched[i]); builder.append(", "); builder.append(x[i]); builder.append(", "); builder.append(y[i]); builder.append("\n"); } textView.setText(builder.toString()); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); textView = new TextView(this); textView.setText("Touch and drag (multiple fingers supported)!"); textView.setOnTouchListener(this); setContentView(textView); } @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction() & MotionEvent.ACTION_MASK; int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK) >> MotionEvent.ACTION_POINTER_ID_SHIFT; int pointerId = event.getPointerId(pointerIndex); switch (action) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_POINTER_DOWN: touched[pointerId] = true; x[pointerId] = (int)event.getX(pointerIndex); y[pointerId] = (int)event.getY(pointerIndex); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: case MotionEvent.ACTION_CANCEL: touched[pointerId] = false; x[pointerId] = (int)event.getX(pointerIndex); y[pointerId] = (int)event.getY(pointerIndex); break; case MotionEvent.ACTION_MOVE: int pointerCount = event.getPointerCount(); for (int i = 0; i < pointerCount; i++) { pointerIndex = i; pointerId = event.getPointerId(pointerIndex); x[pointerId] = (int)event.getX(pointerIndex); y[pointerId] = (int)event.getY(pointerIndex); } break; } updateTextView(); return true; } } 4. Результати виконання тестової програми / Рис.2. Основне вікно створеної програми А - SingleTouchTest Б – MultiTouchTest ВИСНОВОК В даній лабораторній роботі я створив новий Android додаток, який викликає Activity для тестів, цим самим оволодів навичками роботи з Android Activity та Activity stack.
Антиботан аватар за замовчуванням

06.01.2014 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!