1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/FengyunTHU-keyboard

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Блютузная клавиатура v0.2-alpha

Описание

Android Studio разработанный эмулятор Bluetooth клавиатуры

Способ сборки

  1. Разработка:
    • Система: Windows11 23H2
    • Java: java version "1.8.0_371" Java(TM) SE Runtime Environment (build 1.8.0_371-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode)
    • Android studio: Android Studio Iguana | 2023.2.1 Patch 2 Build #AI-232.10300.40.2321.11668458, built on April 4, 2024 Runtime version: 17.0.9+0--11185874 amd64
    • Минимальная версия Android SDK: SDK28, то есть API28, но рекомендуется использовать более высокую версию
    • Версия ADB для отладки: Android Debug Bridge version 1.0.41 Version 34.0.4-10411341
    • Тестируемые версии API Android: API33->Android 13, API34->Android 14
  2. Способ сборки: открыть Android studio и выполнить build apk для создания APK установочного пакета. При импорте проекта должны автоматически синхронизироваться зависимости.
  3. Внимание: необходимо настроить среду Java + Android SDK. Можно использовать Logcat для анализа логов, для этого требуется включить USB-отладку на устройстве. #### Техническое описание
  4. Бэкенд (структура файлов не изменилась):
    • Путь: MyApplication\app\src\main\java\com\example\myapplication
    • Способ сборки: используется технология Webview Android для создания фронтенда, взаимодействия с бэкендом, язык - java;
    • Основные технологии: используется библиотека BluetoothHidDevice Android, доступная с API28. Подробные вопросы можно найти в блоге CSDN Эмуляция Bluetooth клавиатуры на Android и Windows; - Описание файлов (в некоторых файлах есть объявленные, но неиспользуемые методы):
      • MainActivity.javaосновной файл. Включает инициализацию webview страницы и методы жизненного цикла onCreate();
      • callBluetooth.javaфайл для работы с Bluetooth. Реализует инициализацию и регистрацию Bluetooth HID сервиса, инициирование Bluetooth соединения, отправку информации о клавиатуре, а также ряд обратных вызовов. Ожидается реализация активного сканирования Bluetooth и отображения списка устройств, но пока не реализовано. Также поддерживается подключение по MAC адресу, в будущем планируется упрощение ввода MAC адреса. В настоящее время реализовано распознавание и подключение к уже сопряжённым устройствам, поддерживается ввод по клику. Код для сканирования Bluetooth завершён, но содержит ошибку, то есть состояние уже сопряжённых устройств не обновляется. Улучшена пользовательская интерфейсная оболочка; улучшена логика отправки отчётов, добавлена поддержка комбинаций клавиш;
      • HidConfig.javaфайл конфигурации HID. С помощью правильных дескрипторов можно успешно зарегистрироваться как устройство HID-клавиатуры и быть распознанным подключенным устройством. Это включает в себя имя устройства, поставщика, ID и т. д. Текущие дескрипторы имеют проблемы совместимости; дескрипторы, которые работают правильно на Android и Windows, отличаются, и оптимизация продолжается.Можно использовать разные дескрипторы для разных платформ, возможно, в будущем будет реализована функция смены дескрипторов. В файле определены многие дескрипторы, функция смены дескрипторов добавлена, после замены дескрипторов необходимо повторно инициализировать устройство;
      • JavaScriptInterfaces. javaнабор JavaScript-интерфейсов для фронтенда. Основная функция — изменение изображения клавиатуры и информации о клавишах. Идея автоматического распознавания клавиш отменена, добавлена функция установки фона, можно задать фон клавиатуры; добавлена функция режима обрезки изображений, поддерживающая выбор изображений из галереи для установки; поддерживается регулировка прозрачности;
      • KeyMap. javaопределение байтов, соответствующих каждому клавишу при передаче через HID. Существуют проблемы, некоторые клавиатуры не передают данные правильно. Оптимизированы настройки байтов, убраны ненужные множества сдвигов, теперь можно передавать комбинации клавиш напрямую;
      • Vibrators. javaреализация вибрации устройства. Вибрация при нажатии клавиш улучшает ощущения, однако некоторые устройства не поддерживают линейную вибрацию.
    • Некоторые конфигурационные файлы:
      • MyApplication/app/src/main/AndroidManifest. xmlфайл с объявлениями прав
      • MyApplication/app/src/main/res/layout/activity_main. xmlфайл с описанием UI - E:\MyApplication\app\src\main\res\drawableнекоторые файлы с цветовыми схемами
      • E:\MyApplication\app\src\main\res\layoutнекоторые файлы с описанием разметки, в основном для UI подключения Mac и нижнего уведомления о сканировании устройств
    • Планировалось добавить поддержку других HID-устройств, таких как тачпады, мыши и графические планшеты, однако времени на это не хватило. В настоящее время планируется открыть некоторые API (ещё не завершено), чтобы облегчить интеграцию функций в будущем.
  5. Фронтенд - Технологии: построение с использованием HTML+CSS+JavaScript; - Файлы расположены в MyApplication/app/src/main/assets; - index.html — основная страница, папки css, js, img, data, html содержат стили, JavaScript-скрипты, изображения, данные инициализации клавиш, а также подстраницы; - bluetooth.js, temp.js, test_touch.js — не используются; - В настоящее время достигнута начальная оптимизация фронтенда. Используются события touchstart и touchend для реализации многоточечного касания, а также добавлена функциональность долгого нажатия и комбинации клавиш; поддержка комбинации клавиш реализована.Внешний вид интерфейса был улучшен, включая цвета и размеры, а также оптимизированы анимации; - Нажатие на настройки в верхнем левом углу разворачивает меню, в настоящее время функции отзыва клавиш + восстановления по умолчанию еще не реализованы. Удален отзыв клавиш, добавлен настройки описателя, поддерживается изменение описателя; Добавлен touchbar, улучшена верхняя часть интерфейса, добавлены текстовые сообщения и опции погоды; - стили двух кнопок в нижнем левом углу еще не оптимизированы. Нажатие на левую кнопку вызывает настройки клавиш, нажатие на правую кнопку удаляет метки. В настоящее время не решен вопрос многоугольных клавиш, поэтому при нажатии на левую кнопку появляется красная рамка внизу. Стили оптимизированы, и теперь это является переключаемым вариантом;
  6. в настоящее время не реализован механизм обработки исключений В настоящее время механизм обработки исключений значительно улучшен, включая обработку ошибок при нажатии на кнопки в интерфейсе и превышение прав доступа на сервере;
  7. локальное сохранение еще не реализовано.
  8. Источник идеи и цели дизайна: это мое собственное представление о легком и удобном клавиатурном решении. После покупки Bluetooth-клавиатуры я решил адаптировать Android-устройства под Bluetooth-клавиатуру.Одна из целей — сделать устройство легкодоступным и всегда иметь возможность ввода текста без необходимости использования сложных методов (например, в системе "Банан"). Вторая цель — начать свой путь в открытом исходном коде, сразу открыть репозиторий и поддержать идею открытого кода; на сайте есть примеры, но большинство из них устарели. Вторая цель — создать оригинальный проект-инструмент для конкурса по дизайну программного обеспечения;
  9. Распределение обязанностей: независимый разработчик (работа независимого разработчика очень сложна).

Инструкция по использованию

  1. Используйте Readme_XXX.md для поддержки различных языков, например Readme_en.md // еще не добавлено, Readme_zh.md;
  2. При запуске приложения необходимо включить Bluetooth на Android-устройстве и подключить его к другому устройству;
  3. Нажатие на изображение настроек в верхнем левом углу разворачивает меню. Нажатие на "изменить клавиатуру" позволяет изменить изображение клавиатуры (фон), после изменения необходимо импортировать соответствующий файл клавиатуры;
  4. Поддерживаемые форматы изображений (фон): - традиционные форматы растровых изображений: .png, .jpeg, .bmp; - векторные форматы (рекомендуется): .svg(.xml); - другие форматы изображений: .gif, .webp, .heif;
  5. Функция импорта клавиш удалена. Переключиться на прозрачную клавиатуру, которую вы нарисовали, с файлом svg.svg`. Клавиши имеют квадратную форму для удобства управления и оптимизации нажатий.
  6. Внимание: функция изменения изображения клавиатуры и импорта информации о клавишах не была протестирована, рекомендуется не использовать.
  7. Нажатие на солнце в правом верхнем углу позволяет переключаться между светлым и тёмным режимами.
  8. Нажатие на кнопку в левом нижнем углу позволяет создавать и удалять метки клавиш.
  9. Подключение по Bluetooth:
    1. Нажмите на изображение Bluetooth в центре для разворачивания кнопок. Нажмите на кнопку init для инициализации, убедитесь, что Bluetooth включен. Если при инициализации появится запрос на разрешение, соглашайтесь и повторите инициализацию.
    2. Нажмите на кнопку connect для ввода MAC-адреса Bluetooth устройства. После ввода нажмите на кнопку OK для подключения. Если устройство не было ранее сопряжено, сопрягите его перед подключением.
    3. Нажмите на изображение Bluetooth для скрытия кнопок.
    4. Нажмите на соответствующую клавишу для отправки информации о нажатии.
    5. Улучшено меню touchbar:
      1. Нажмите на фиолетовый блок в левом нижнем углу для разворачивания. Нажмите на touchbar для отображения меню touchbar в верхней части экрана, при этом исчезнут другие элементы.
      2. Нажмите на настройки для открытия настроек. Нажмите на изображение Bluetooth для разворачивания двух кнопок (самостоятельно нарисованных), с текстовыми подсказками.Нажмите на изображение солнца или луны для переключения между светлым и тёмным режимами.
      3. Нажмите на круглое изображение облака для обновления погоды. После обновления нажмите на изображение погоды для повторного обновления (используется мой собственный API, поэтому не рекомендуется слишком часто обновлять).
      4. Нажмите на текст в центре для установки текста. Нажмите вне текстового поля для закрытия и восстановления (кажется, есть проблема с размером шрифта, но я сделал все возможное для оптимизации, увы).
  10. Левый нижний блок серого цвета отображает информацию о подключении, которую можно прокручивать вверх и вниз (не более 50 строк).
  11. Если возникает проблема с подключением к службе HID или отправкой отчетов, обратитесь к Android-симулятор Bluetooth-клавиатуры — адаптация для Android и Windows. Возможно, проблема связана с драйвером или описателем HID.
  12. Если приложение вылетает, возможно, ваш производитель телефона заблокировал API HID.
  13. Добавлена функция настройки клавиш. Нажмите на кнопку "Настройка клавиш" в нижней части для входа в режим настройки. В этом режиме долгое нажатие на буквенную клавишу позволяет менять буквы, отображается плавающее окно с выбором. После выбора новой клавиши SVG-элемент будет обновлен.Нажмите на кнопку "Восстановить по умолчанию" в настройках для возврата к исходному изображению клавиатуры и настройкам области клавиш.
  14. Добавлена функция смены описателя. Если один описатель не работает, нажмите на кнопку "Настройки" -> "Смена описателя" для выбора сохраненных описателей. Последний выбранный описатель будет отмечен синим цветом. По умолчанию используется описатель 5. После замены необходимо выполнить повторную инициализацию. Android и Windows часто имеют разные описания адаптации, что может потребовать переключения;
  15. Оптимизировано получение MAC-адреса. Можно запустить сканирование Bluetooth, при этом появляется всплывающее окно (не отформатированное). Нажав на подключённое устройство, можно продолжить. Обратите внимание, что уже сопряжённые устройства могут отображаться как отключённые Bluetooth, даже если Bluetooth включен. Просто нажмите на устройство. После нажатия появляется всплывающее окно для подтверждения;
  16. Схема: ! [PIC](. /app/src/main/assets/img/成品1. png)
  17. Схема: ! [PIC](. /app/src/main/assets/img/成品2. png)
  18. В связи с трудностями и сложностью адаптации, на мобильных устройствах с небольшим экраном могут возникать проблемы с адаптацией, такие как смещение клавиш. Рекомендуется использовать планшеты размером более 10.5 дюймов для тестирования.(Примечание: смещение означает, что после открытия Touch Bar и последующего закрытия есть вероятность смещения клавиш. Если не использовать Touch Bar или если она открыта и не закрыта, клавиатура все равно будет работать)**#### История разработки
  19. Разработка симулятора Bluetooth-клавиатуры всегда была моей мечтой, а соревнование стало стимулом;
  20. 2024/2/24: Программа выдала ошибку на Android;
  21. 2024/2/28: В коде содержится множество Log.d(TAG, "String") для вывода информации о логах для устранения ошибок;
  22. Использование нативных возможностей Android для построения обусловлено недостаточными правами Bluetooth API в веб-технологиях;
  23. Наиболее затратным по времени было изучение документации по библиотекам;
  24. Когда именно требовалось Bluetooth, Bluetooth на компьютере сломался 😢, пришлось обратиться к одноклассникам...! pic2
  25. Размышления: отладка аппаратного обеспечения действительно сложнее, чем чисто программное обеспечение. Чувствуется, что это действительно сложнее, чем чистый Unity или мини-приложение или веб-страница и требует больше умственных усилий.
  26. В связи с ограниченным временем и энергией независимого разработчика, данный документ может содержать недостатки, просим понимания;
  27. Видеодемонстрация, представленная для подачи, включает в себя тестирование ввода отдельных клавиш, модификаторов (Shift/Ctrl/Alt), комбинаций (Ctrl+C/V) и т. д., используя удаленный рабочий стол (зеркальное отображение телефона); В связи с тем, что Bluetooth на моем компьютере сломался, тестирование проводилось на компьютере одноклассника, модель которого указана ниже:

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Android Studio Развернуть Свернуть
Java и 5 других языков
MIT
Отмена

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/FengyunTHU-keyboard.git
git@api.gitlife.ru:oschina-mirror/FengyunTHU-keyboard.git
oschina-mirror
FengyunTHU-keyboard
FengyunTHU-keyboard
master