Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра ЕОМ
/
Лабораторна робота №3
з предмету:
«Мережні операційні системи»
на тему:
«Управління вводом/виводом та сенсорною підсистемою в ОС Android»
Мета роботи: Оволодіти навичками програмування і управління вводом/виводом й сенсорною підсистемою в ОС Android.
Теоретичні відомості:
Принцип роботи сенсорного екрану. Є два типи сенсорного екрану:
Резистивні сенсорні екрани
Коли на екран натискають, панель і мембрана замикаються, і контролер за допомогою аналогово-цифрового перетворювача реєструє зміну опору і перетворює його в координати дотику. У загальних рисах алгоритм зчитування такий: На верхній електрод подається напруга +5, нижній заземляется. Лівий з правим з'єднуються накоротко і перевіряється напруга на них. Це напруга відповідає Y-координаті екрану. Аналогічно на лівий і правий електрод подається + 5В і «земля», з верхнього та нижнього зчитується X-координата.
/
Матричні сенсорні екрани
Конструкція аналогічна резистивной, але спрощена до межі. На скло нанесені горизонтальні провідники, на мембрану - вертикальні. При дотику до екрану провідники стикаються. Контролер визначає, які провідники замкнулися, і передає в мікропроцесор відповідні координати.
/
Перелік основних елементів інтерфейсу Android-пристрою.
Графічний інтерфейс користувача для Android програми побудований з використанням ієрархії View і ViewGroup об'єктів. View об'єкти, як правило - це UI віджети, такі як кнопки або текстові поля і ViewGroup, а також невидимі контейнери, які визначають, як будуть використовуватись child-елементи, наприклад, у сітці або вертикальному списку.
Android надає XML-словник, який відповідає підкласам View і ViewGroup, тому ви можете визначити свій користувальницький інтерфейс в XML, використовуючи ієрархію елементів інтерфейсу користувача.
Рисунок ілюструє, як ViewGroup об'єкти утворюють філії в макеті і містять інші View об'єкти.
Основними елементами інтерфейсу Android пристрою є: кнопки, списки, текстові поля вводу, текстові поля виводу, radio button, check button, progress bar, data picker, rating bar та інші.
Платформа для інтерфейсу користувача Android заснована на обробці дотиків. Пристрої Android оснащуються сенсорними екранами, тому android додатки повинні добре підтримувати сенсорний ввід. У режимі сенсорного введення зазвичай немає фокусу і вибраного елемента, а при перемиканні на інші режими (наприклад: режим списку) і назад фокус і вибраний елемент можуть зникати і знову з'являтися. Винятком є сфокусований режим сенсорного введення. Кнопки і віджети повинні бути досить великими, щоб їх можна було вибрати дотиками.
Лістинг тестової програми:
MainActivity.java
package ua.mos.lab3;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioGroup;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
LinearLayout llMain;
RadioGroup rgGravity;
EditText etName;
Button btnCreate;
Button btnClear;
int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
llMain = (LinearLayout) findViewById(R.id.llMain);
rgGravity = (RadioGroup) findViewById(R.id.rgGravity);
etName = (EditText) findViewById(R.id.etName);
btnCreate = (Button) findViewById(R.id.btnCreate);
btnCreate.setOnClickListener(this);
btnClear = (Button) findViewById(R.id.btnClear);
btnClear.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnCreate:
LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(
wrapContent, wrapContent);
int btnGravity = Gravity.LEFT;
switch (rgGravity.getCheckedRadioButtonId()) {
case R.id.rbLeft:
btnGravity = Gravity.LEFT;
break;
case R.id.rbCenter:
btnGravity = Gravity.CENTER_HORIZONTAL;
break;
case R.id.rbRight:
btnGravity = Gravity.RIGHT;
break;
}
lParams.gravity = btnGravity;
Button btnNew = new Button(this);
btnNew.setText(etName.getText().toString());
llMain.addView(btnNew, lParams);
break;
case R.id.btnClear:
llMain.removeAllViews();
Toast.makeText(this, "Видалено", Toast.LENGTH_SHORT).show();
break;
}
}
}
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">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Розміщення тексту:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<RadioGroup
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical"
android:id="@+id/rgGravity">
<RadioButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:checked="true"
android:text="Зліва"
android:id="@+id/rbLeft">
</RadioButton>
<RadioButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="По центрі"
android:id="@+id/rbCenter">
</RadioButton>
<RadioButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Зправа"
android:id="@+id/rbRight">
</RadioButton>
</RadioGroup>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Введіть текст:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fadeScrollbars="true" >
</EditText>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Додати"
android:id="@+id/btnCreate">
</Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Видалити"
android:id="@+id/btnClear">
</Button>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/llMain"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
Результати виконання програми:
/
Висновок: На цій лабораторні роботі я навичками програмування і управління вводом/виводом й сенсорною підсистемою в ОС Android.