Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание программного обеспечения для нательных компьютерных сетей и носимых систем. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
an) {
- Обработка результата голосовой команды:
```kotlin
val resultListener = object : VoiceInteractor.RequestResultListener {
override fun onComplete(result: VoiceInteractor.Request, success: Boole-
if (success) {
// Обработка успешного выполнения команды
} else {
// Обработка неудачного выполнения команды
}
}
}
```
Интеграция голосового и жестового управления обогащает пользователь­ский опыт, делая взаимодействие с носимыми устройствами более естествен­ным и удобным. При этом важно учитывать контекст использования и предо­ставлять пользователю понятные подсказки для успешного выполнения ко­манд.
Взаимодействие с пользователем через жесты и голосовые команды явля­ется важным аспектом разработки интерфейса для носимых устройств. Ниже представлены рекомендации и примеры кода для интеграции жестов и голосо­вого управления:
Использование библиотеки голосового распознавания:
// Создание интента для распознавания речи
val speechIntent = In­tent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
speechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
// Запуск активности распознавания речи
startActivityForResult(speechIntent, SPEECH_REQUEST_CODE)
```
101
- Обработка результатов распознавания:
```kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: In­tent?) {
super.onActivityResult(requestCode, resultC ode, data)
if (requestCode == SPEECH_REQUEST_CODE && resultCode == Ac­tivity.RESULT_OK) {
val matches = da­ta?.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)
val spokenText = matches ?. g et ( 0)
// Обработка распознанной речи
}
}
```
2. Жесты (Java/Android):
- Использование библиотеки жестов:
```java
// Импорт библиотеки жестов
import android.view.GestureDetector;
import android.view.MotionEvent;
// Инициализация детектора жестов
GestureDetector gestureDetector = new GestureDetector(context, new MyGestureListener());
// Обработка событий прикосновения
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
```
102
- Создание класса для обработки жестов:
```java
import android.view.GestureDetector. Si mpleOnGestureListener;
import android.widget.Toast;
public class MyGestureListener extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// Обработка жеста «мах»
if (velocityX > 0) {
Toast.makeText(context, «Жест вправо», Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, «Жест влево», Toast.LENGTH_SHORT).show();
}
return true;
}
}
```
3. Объединение голоса и жестов:
- Запуск распознавания голоса через жест:
```java
// При определенном жесте, например, долгом нажатии
gestureDetector.setOnDoubleTapListener(new GestureDetec­tor.OnDoubleTapListener() {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
103
// Запуск распознавания речи
startActivityForResult(speechIntent, SPEECH_REQUEST_CODE);
return true;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}
});
```
4. Работа с голосовыми командами в Wear OS:
- Использование VoiceInteractor:
```kotlin
val voiceInteractor = getSystem­Service(Context.VOICE_INTERACTION_SE RVICE) as VoiceInteractor
val prompt = VoiceInteractor.Prompt(«Скажите команду»)
// Запуск голосовой команды
voiceInteractor.startVoiceActivity(intent, prompt, resultListener)
```
- Обработка результата голосовой команды:
```kotlin
val resultListener = object : VoiceInteractor.RequestResultListener {
override fun onComplete(result: VoiceInteractor.Request, success: Boole­an) {
if (success) {
// Обработка успешного выполнения команды
} else {
// Обработка неудачного выполнения команды
}
}
}
```
104
Интеграция голосового и жестового управления обогащает пользователь­ский опыт, делая взаимодействие с носимыми устройствами более естествен­ным и удобным. При этом важно учитывать контекст использования и предо­ставлять пользователю понятные подсказки для успешного выполнения ко­манд.
Рис. 4.2. Реализованный голосовой интерфейс в Wear OS

4.4. Работа с уведомлениями и многозадачность в носимых приложениях

Работа с уведомлениями и обеспечение эффективной многозадачности являются ключевыми аспектами для создания удобных и функциональных но­симых приложений. Ниже представлены стратегии и примеры кода для обра­ботки уведомлений и обеспечения многозадачности в приложениях для носи­мых устройств [48].
1. Уведомления (Kotlin/Android):
- Создание уведомления:
```kotlin
// Создание канала уведомлений (для Android 8 и выше)
val channelId = «my_channel»
val channelName = «My Channel»
val importance = NotificationManager.IMPORTANCE_DEFAULT
val channel = NotificationChannel(channelId, channelName, importance)
notificationManager.createNotificationChannel(channel)
// Создание уведомления
val notificationBuilder = NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.drawable.notification_icon)
105
.setContentTitle(«Заголовок уведомления»)
.setContentText(«Текст уведомления»)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
// Отправка уведомления
notificationManager.notify(notific ationId, notificationBuilder.build( ))
```
- Обработка нажатия на уведомление:
```kotlin
// Создание интента для обработки нажатия на уведомление
val resultIntent = Intent(this, ResultActivity::class.java)
val resultPendingIntent = PendingIntent.getActivity(
this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
)
// Установка интента в уведомление
notificationBuilder.setContentIntent(resultPendingIntent)
```
2. Многозадачность (Java/Android):
- Запуск фоновых задач:
```java
// Использование AsyncTask для выполнения фоновой задачи
private class MyTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
// Фоновая задача
return «Результат выполнения задачи»;
}
@Override
106
protected void onPostExecute(String result) {
// Обработка результата в основном потоке
textView.setText(result);
}
}
// Запуск задачи
new MyTask().execute();
```
- Использование служб для фоновых операций:
```java
// Создание службы
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int fl ags, int startId) {
// Фоновая операция
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
// Запуск службы
Intent serviceIntent = new Intent(context, MyService.class);
context.startService(serviceIntent);
```
3. Работа с уведомлениями в Wear OS:
- Дополнительные возможности для уведомлений:
```kotlin
// Добавление действия в уведомление (например, кнопка)
107
val actionIntent = Intent(this, ActionActivity::class.java)
val actionPendingIntent = PendingIntent.getActivity(
this,
0,
actionIntent,
PendingIntent.FLAG_UPDATE_CURRENT
)
val action = NotificationCompat.Action.Builder(
R.drawable.ic_action,
«Действие»,
actionPendingIntent
).build()
// Добавление действия в уведомление
notificationBuilder.addAction(action)
```
- Группировка уведомлений:
```kotlin
// Создание группы уведомлений
val groupKey = «my_group»
notificationBuilder.setGroup(groupKey)
// Добавление уведомлений в группу
val summaryNotification = NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.drawable.notification_icon)
.setGroup(groupKey)
.setGroupSummary(true)
.build()
// Отправка группы и общего уведомления
notificationManager.notify(1, notific at ionB uilde r.bui ld( ))
notificationManager.notify(2, summaryN otifi ca ti on)
```
108
Работа с уведомлениями и обеспечение многозадачности в носимых при­ложениях требует внимания к деталям и учета специфики использования устройств. Грамотное управление уведомлениями и фоновыми задачами обес­печивает плавный и эффективный пользовательский опыт на носимых устрой­ствах.

4.5. Применение принципов доступности в дизайне интерфейса

Применение принципов доступности в дизайне интерфейса носимых устройств играет важную роль, так как оно направлено на создание удобного и доступного опыта для всех пользователей, включая людей с ограниченными возможностями. Вот несколько принципов и практических рекомендаций по учету доступности при проектировании интерфейсов для носимых устройств:
1. Размер элементов и дистанция между ними:
- Большие и четкие элементы: Используйте крупные кнопки, иконки и
тексты, чтобы облегчить их восприятие и касание.
2. Цвет и контрастность:
- Контрастные цвета: Обеспечьте достаточный контраст между текстом
и фоном для улучшения читаемости.
- Использование различных цветов: Избегайте зависимости от цвета как
основного средства передачи информации.
3. Голосовое управление и текстовые подсказки:
- Поддержка голосового управления: Интегрируйте голосовые команды
для выполнения основных функций.
- Текстовые подсказки: Предоставляйте текстовые подсказки для важ-
ных элементов интерфейса.
4. Адаптивный дизайн:
- Поддержка различных устройств: Учтите разнообразие форм факторов
и разрешений устройств, чтобы обеспечить единый и удобный пользователь­ский опыт.
5. Навигация и фокус:
- Ясная навигация: Обеспечьте легкую и интуитивную навигацию, осо-
бенно при использовании сенсорных жестов.
- Визуальное выделение фокуса: Подсвечивайте активный элемент, что-
бы пользователь мог легко определить свое текущее местоположение в интер­фейсе.
109
6. Регулировка яркости и шрифтов:
- Возможность настройки яркости: Предоставьте опцию регулировки
яркости экрана, особенно в условиях яркого света.
- Выбор размера шрифта: Позвольте пользователям настраивать размер
шрифта для лучшей читаемости.
7. Тестирование с реальными пользователями:
- Тестирование доступности: Вовлекайте пользователей с различными
потребностями в процесс тестирования для выявления проблем и получения обратной связи.
Примеры кода (Kotlin/Android) с учетом доступности:
```kotlin
// Пример использования контрастных цветов
textView.setTextColor(ContextCompat.getColor(context, an­droid.R.color.white))
textView.setBackgroundColor(ContextCompat.getColor(context, an­droid.R.color.black))
```kotlin
// Пример поддержки голосового управления
val speechRecognizer = SpeechRecognizer.createSpeechRecognizer(context)
val speechIntent = In­tent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
speechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
val recognitionListener = object : RecognitionListen er {
override fun onResults(results: Bundle?) {
val matches = re­sults?.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
val spokenText = matches?.get(0)
// Обработка распознанной речи
}
// Другие методы интерфейса RecognitionListener
}
110
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]