Как сделать руль для андроид

Используйте Android как джойстик или рулевое колесо на вашем компьютере

Любой человек, любящий играть в игры на персональном компьютере, наверняка имеет в своем арсенале рулевое колесо или же стандартный джойстик. А есть такие любители, поиграть, которые используют для игр WiiMote.

Но мы расскажем вам о способе, который еще надежнее и практичнее, к тому же он недавно появился. Ваш телефон также можно использовать в роли руля, джойстика, а с помощью гироскопа, можно даже использовать FPS навигацию/режим стрельбы.

С помощью Monect вы сможете на определенной дистанции управлять вашим ПК и даже играть в игры, применяя при этом устройство, работающее на ОС Android. Осуществить это можно с помощью Bluetooth или же Wi-Fi, которые имеются на любом таком устройстве. Monect позволяет использовать ваше устройство Android в качестве рулевого колеса, джойстика, работающих на акселерометре. А также сможете прицеливаться в различных 3D FPS шутерах, если в вашем девайсе есть гироскоп.

Ваш android девайс превратится, при помощи Monect, в мышь/клавиатуру/джойстик. Устройство, работающее на Android, естественно может использоваться в качестве беспроводной клавиатуры или мыши, как и множество иных идентичных приложений. Особенностью данного приложения выступает то, что оно имеет возможность использоваться в роли контроллера для разнообразных жанров игр: FPS, гонки, RPG и так далее. Monect использует абсолютно все датчики устройства работающего на ОС Android: гироскоп, акселерометр, G-сенсор и так далее, для обеспечения полноценной возможности играть, без лагов и задержек. К примеру, с помощью гироскопа можно осуществить режим FPS. А для того чтобы прицелиться или поиграть полноценно в гонки — G-сенсор.

Функции приложения Monect для android:

RaceMode — наслаждайтесь играми в гонки на ПК, такими как NFS, а также управляйте рулевым колесом, с помощью девайса, имеющего G-сенсор.

Джойстик — играйте в разнообразные приключенческие игры: Prince of persia, Street fighter и другие, благодаря полноценной имитации джойстика.

FPS mode — используйте гироскоп своего устройства для прицеливания, чувствуя при этом оружие в руках. Стоит отметить, что отлично поддерживается в Call of Duty!

TouchPad — это своеобразный симулятор сенсорной панели, который поддерживает различные жесты, прямо как на устройстве трекпад от Apple.

My Computer — просматривайте и используйте файлы, находящиеся на вашем ПК, прямо на своем девайсе.

Keyboards — а это симулятор цифровой и буквенной клавиатуры, а также функциональных клавиш.

Text transfer — вы сможете набрать текст, прямо на смартфоне, а после этого, при помощи одного нажатия, передать его на свой ПК.

PPT mode — с помощью этого режима, вы сможете присутствовать на совещании или на важной лекции.

Browser, Media Control — вы сможете легко управлять браузером, а также медиа-плеером.

Источник

Игровой контроллер для ПК на Android

Всем привет! В данной статье я хочу рассказать о том, как можно сделать из своего Adndroid смартфона игровой контроллер (в простонародье — джойстик) для обычного ПК, а именно руль.

Описание задачи

Поведение руля будет эмулироваться с помощью акселерометра. Для этого ведется непрерывное сканирование пространственных координат и эмпирическим путем подбираются границы для каждого направления движения. Исходя из этих данных в реальном времени генерируются сочетания игровых клавиш. Например: W — вперед, WA — вперед и влево и т. д.

Для доставки этих данных на ПК должен быть запущен сервер, который принимает входящие команды и эмулирует нажатия соответствующих клавиш. Сервер можно сделать однопоточным, чтобы подключался только один смартфон. Соединение будет осуществляться по Wi-Fi.

А теперь самое интересное…

Сервер

Сервер реализован на C++ под Windows. Основная его задача — непрерывно принимать входящие сообщения и нажимать клавиши. Ниже приведен основной и простой код для данной задачи:

Copy Source | Copy HTML

  1. while ( true ) <
  2. std::cout «Wait for connection. \n» ;
  3. try <
  4. socket = server.Accept();
  5. > catch ( const char *error ) <
  6. std::cout endl ;
  7. exit( 0 );
  8. >
  9. bool keepAlive = true;
  10. int timeout = 10000 ;
  11. setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool ));
  12. setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int ));
  13. std::cout «Connected!\n» ;
  14. while ( true ) <
  15. std: :string msg = socket->ReceiveLine();
  16. if ( msg.empty( ))
  17. break;
  18. processKeys( msg.c_str( ));
  19. >
  20. std::cout «Disconnected.\n\n\n» ;
  21. >

Copy Source | Copy HTML

  1. void pressKeys( char key1, char key2 ) <
  2. // отжать предыдущие клавиши
  3. for ( std::map ::iterator it = scanCodes.begin( ) ; it != scanCodes.end(); it++ ) <
  4. char curKey = it->first;
  5. if ( curKey != key1 && curKey != key2 )
  6. upKey( curKey );
  7. >
  8. downKey( key1 );
  9. downKey( key2 );
  10. >
  11. void downKey( char key ) <
  12. keybd_event( VkKeyScan(key ), scanCodesКак сделать руль для андроид, 0 , 0 );
  13. >
  14. void upKey( char key ) <
  15. keybd_event( VkKeyScan(key ), scanCodesКак сделать руль для андроид, KEYEVENTF_KEYUP, 0 );
  16. >

Клиент

Copy Source | Copy HTML

  1. public class MainActivity extends Activity implements SensorEventListener <
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) <
  4. // .
  5. sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
  6. accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
  7. //.
  8. >
  9. @Override
  10. public void onSensorChanged(SensorEvent event ) <
  11. if ( event .sensor.getType() == Sensor.TYPE_ACCELEROMETER) <
  12. long curTime = System.currentTimeMillis();
  13. // считывание данных раз в 100 мс, иначе телефон загнется от сборщика мусора
  14. if (lastUpdate == — 1 || (curTime — lastUpdate) > 100 ) <
  15. lastUpdate = curTime;
  16. x = event .values[DATA_X];
  17. y = event .values[DATA_Y];
  18. z = event .values[DATA_Z];
  19. xLabel.setText(String.format( «X: %+2.5f» , x));
  20. yLabel.setText(String.format( «Y: %+2.5f» , y));
  21. zLabel.setText(String.format( «Z: %+2.5f» , z));
  22. try <
  23. sendKeys(); // анализ координат для отправки клавиш на сервер
  24. > catch (Exception e) <
  25. e.printStackTrace();
  26. >
  27. >
  28. >
  29. >
  30. >

Важный момент — считывать данные с акселерометра надо с определенным интервалом, иначе ваша программа моментально подвесится от непрерывных запросов к сенсору. Также при сворачивании надо отвязывать listener от акселерометра, чтобы ресурсы системы и батареи не тратились зря. Для этого в методах onResume и onPause делается следующее:

Copy Source | Copy HTML

  1. @Override
  2. protected void onResume() <
  3. super.onResume();
  4. sensorManager.registerListener( this , accelerometer, SENSOR_DELAY_NORMAL);
  5. >
  6. @Override
  7. protected void onPause() <
  8. super.onPause();
  9. sensorManager.unregisterListener( this );
  10. >

Код для генерации клавиш очень прост. Все границы определялись экспериментальным путем.

Copy Source | Copy HTML

  1. private String getKeys() <
  2. String keys = «» ;
  3. if (z > 7 . 5 )
  4. keys += «W» ;
  5. else
  6. keys += «S» ;
  7. if (y 3 )
  8. keys += «A» ;
  9. else if (y > 3 )
  10. keys += «D» ;
  11. return keys;
  12. >

Как это все работает

Испытывал я это все на Need For Speed Most Wanted. По ощущениям, конечно, не как настоящий руль, но играть можно.К сожалению, видео снять не получилось — в доме одна камера, и то на испытуемом телефоне. В ближайшее время обязательно выложу. Вот как это выглядит на ПК и на смартфоне:

Читайте также:  Will android run ios

Заключение

Пока главный недостаток в сервере — это глобальное нажатие клавиш, не зависящее от приложения. В дальнейшем будет чем заняться. Еще одна проблема с которой я столкнулся — постоянный разрыв соединения. Не нашел лучшего решения, чем постоянный реконнект при обрыве связи.

Источник

Используйте Android как джойстик или рулевое колесо на вашем компьютере

Если вы любите играть на компьютере, у вас уже, наверное, есть джойстик для игры или рулевое колесо для гонок. Некоторые энтузиасты даже подключили WiiMote к компьютеру и используют его для игр.

Мы расскажем вам о новом способе, который еще лучше и доступнее: использовать ваш телефон в качестве джойстика, рулевого колеса и, основанные на гироскопе, FPS навигацию/режим стрельбы.

Monect позволяет вам дистанционно управлять вашим компьютером и играть в игры, используя Android устройство через Wi-Fi или Bluetooth. С Monect ваше Android устройство становится джойстиком, рулевым колесом, работающим на акселерометре и даже устройством, позволяющим прицеливаться в 3D FPS шутере, работающем на гироскопе.

Monect превращает ваш телефон/планшет/фаблет в клавиатуру/мышь/джойстик все в одном. Android устройство может также выступать в качестве беспроводной мышки или клавиатуры, как и большинство других приложений подобного рода. Лучшей частью этого приложения является то, что оно может использоваться в качестве контроллера для различных типов игр, таких как гонки, FPS, RPG и другие. Приложение использует все датчики Android (акселерометр, G-сенсор, гироскоп и другие), чтобы обеспечить полноценную, без задержек игру. Например, FPS режим позволяет осуществлять датчик гироскоп, в процессе прицеливания, или в гоночном режиме используется G-сенсор для включения руля.

RaceMode — играйте в гонки на компьютере, такие как NFS и управляйте рулевым колесом с помощью телефона, использующим G-сенсор

Читайте также:  Рейтинг звонилок для андроид 2021

Джойстик — имитация джойстика, так что вы сможете играть в приключенческие игры, такие как Street fighter, Prince of persia и т.д.

FPS mode — использование гироскопа для прицеливания, прямо как настоящее оружие в руках, превосходная поддержка для Call of Duty!

TouchPad — симулятор сенсорной панели на вашем телефоне с поддержкой жестов, как на трекпад от Apple

My Computer — изучайте компьютерные файлы на вашем телефоне

Keyboards — симулятор буквенной и цифровой клавиатуры, функциональных клавиш

Text transfer — наберите текст на телефоне и передайте его на компьютер с помощью одного нажатия

PPT mode — когда вы должны присутствовать на лекции или совещании, данный режим поможет вам осуществить это

Browser, Media Control — легко управляйте браузером и медиа-плеером

Monect можно бесплатно скачать из Google маркета, а клиент Windows сервера для компьютера нужно поискать.

Из этой статьи вы узнаете еще один способ, как превратить телефон в джойстик или мышь.

Источник

Статья удалена

Этот материал был удалён по просьбе автора.

Комментарий удален по просьбе пользователя

Вы ведь в курсе, что для Лабо подходит любой картон, а стоимость набора, в основном, состоит из игры/приложения.

Та не в курсе такие как он. Они же думают что продают именно картон и им по хрен что это не так.

Комментарий удален по просьбе пользователя

Если совсем честно, то у нинтенды кроме самих лабо есть доп набор картона для модификации. Так что картон они всё-таки продают ¯\_(ツ)_/¯

А если уж еще честнее, то выкройки для этого картона можно скачать на их сайте бесплатно)

Но официально в продаже они всё же имеются

Просто отдельно от игры? Не попадалось на глаза ни разу)

Этот набор не включает программу и очки VR! Необходим набор VR – стартовый набор+ бластер (продается отдельно), чтобы использовать этот дополнительный набор.

Вообще нигде не смотрел, если честно) Просто сами лабо видел, а таких мини-наборов нет.Но спасибо за ссылки, буду знать.

Как это работает? Почему там посередине дыра и не видно соединения? Будто бы фейк..

По-середине просто резинка, чтобы тянуть конструкцию с планшетом вниз (этакая отдача от «руля»). Полагаю, что основной механизм находится сзади.

Без магнитолы с шансоном — не зачет

Помню в 90х тоже такие рули делали сами. Только без планшетов. Сидишь и рулишь в своём прмдуманном мире. А со стороны у тебя глаза стеклянные будто ты скушал разного.

Экран то зачем крутить?

Так управление на повоторот поворотом планшета выбрано. Иначе на кнопки жать пришлось бы на экране. А как он это сделает с рулём?

Разве эти гироскопы не в джойкоинах стоят?

В айпаде нет джойконов.

Блин, все в комментах про свич толдонят, я и решил что тут это он.

2020 год. ёбаный стыд

Руководство автоваза готовит иск в суд, т.к. это их технология — делать из картона, гвоздей и изоленты — ладу калину

А что конвеер сборки из говна и палок уже закрыли?

остановили на время из за covid-19 ))

Здесь нужна картинка с троллейбусом из буханки.

Замысел и исполнение просто прекрасны. Я бы запатентовал даже. Это же прямо готовый прототип Лабо.

Отлетел бы от иска Нинтендо

Кто первый встал — того и тапки.:-) Нинтендо, при всем уважении, не может лепить иски за любые изделия из картона. Только за те, которые ими разработаны, запатентованы и продвигаются в продаже.

Читайте также:  Операционная система android технические характеристики

Играть с картоном — это территория Нинтендо.

Источник

Игровой контроллер для ПК на Android

Всем привет! В данной статье я хочу рассказать о том, как можно сделать из своего Adndroid смартфона игровой контроллер (в простонародье — джойстик) для обычного ПК, а именно руль.

Описание задачи

Поведение руля будет эмулироваться с помощью акселерометра. Для этого ведется непрерывное сканирование пространственных координат и эмпирическим путем подбираются границы для каждого направления движения. Исходя из этих данных в реальном времени генерируются сочетания игровых клавиш. Например: W — вперед, WA — вперед и влево и т. д.

Для доставки этих данных на ПК должен быть запущен сервер, который принимает входящие команды и эмулирует нажатия соответствующих клавиш. Сервер можно сделать однопоточным, чтобы подключался только один смартфон. Соединение будет осуществляться по Wi-Fi.

А теперь самое интересное…

Сервер

Сервер реализован на C++ под Windows. Основная его задача — непрерывно принимать входящие сообщения и нажимать клавиши. Ниже приведен основной и простой код для данной задачи:

Copy Source | Copy HTML

  1. while ( true ) <
  2. std::cout «Wait for connection. \n» ;
  3. try <
  4. socket = server.Accept();
  5. > catch ( const char *error ) <
  6. std::cout endl ;
  7. exit( 0 );
  8. >
  9. bool keepAlive = true;
  10. int timeout = 10000 ;
  11. setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool ));
  12. setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int ));
  13. std::cout «Connected!\n» ;
  14. while ( true ) <
  15. std: :string msg = socket->ReceiveLine();
  16. if ( msg.empty( ))
  17. break;
  18. processKeys( msg.c_str( ));
  19. >
  20. std::cout «Disconnected.\n\n\n» ;
  21. >

Copy Source | Copy HTML

  1. void pressKeys( char key1, char key2 ) <
  2. // отжать предыдущие клавиши
  3. for ( std::map ::iterator it = scanCodes.begin( ) ; it != scanCodes.end(); it++ ) <
  4. char curKey = it->first;
  5. if ( curKey != key1 && curKey != key2 )
  6. upKey( curKey );
  7. >
  8. downKey( key1 );
  9. downKey( key2 );
  10. >
  11. void downKey( char key ) <
  12. keybd_event( VkKeyScan(key ), scanCodesКак сделать руль для андроид, 0 , 0 );
  13. >
  14. void upKey( char key ) <
  15. keybd_event( VkKeyScan(key ), scanCodesКак сделать руль для андроид, KEYEVENTF_KEYUP, 0 );
  16. >

Клиент

Copy Source | Copy HTML

  1. public class MainActivity extends Activity implements SensorEventListener <
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) <
  4. // .
  5. sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
  6. accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
  7. //.
  8. >
  9. @Override
  10. public void onSensorChanged(SensorEvent event ) <
  11. if ( event .sensor.getType() == Sensor.TYPE_ACCELEROMETER) <
  12. long curTime = System.currentTimeMillis();
  13. // считывание данных раз в 100 мс, иначе телефон загнется от сборщика мусора
  14. if (lastUpdate == — 1 || (curTime — lastUpdate) > 100 ) <
  15. lastUpdate = curTime;
  16. x = event .values[DATA_X];
  17. y = event .values[DATA_Y];
  18. z = event .values[DATA_Z];
  19. xLabel.setText(String.format( «X: %+2.5f» , x));
  20. yLabel.setText(String.format( «Y: %+2.5f» , y));
  21. zLabel.setText(String.format( «Z: %+2.5f» , z));
  22. try <
  23. sendKeys(); // анализ координат для отправки клавиш на сервер
  24. > catch (Exception e) <
  25. e.printStackTrace();
  26. >
  27. >
  28. >
  29. >
  30. >

Важный момент — считывать данные с акселерометра надо с определенным интервалом, иначе ваша программа моментально подвесится от непрерывных запросов к сенсору. Также при сворачивании надо отвязывать listener от акселерометра, чтобы ресурсы системы и батареи не тратились зря. Для этого в методах onResume и onPause делается следующее:

Copy Source | Copy HTML

  1. @Override
  2. protected void onResume() <
  3. super.onResume();
  4. sensorManager.registerListener( this , accelerometer, SENSOR_DELAY_NORMAL);
  5. >
  6. @Override
  7. protected void onPause() <
  8. super.onPause();
  9. sensorManager.unregisterListener( this );
  10. >

Код для генерации клавиш очень прост. Все границы определялись экспериментальным путем.

Copy Source | Copy HTML

  1. private String getKeys() <
  2. String keys = «» ;
  3. if (z > 7 . 5 )
  4. keys += «W» ;
  5. else
  6. keys += «S» ;
  7. if (y 3 )
  8. keys += «A» ;
  9. else if (y > 3 )
  10. keys += «D» ;
  11. return keys;
  12. >

Как это все работает

Испытывал я это все на Need For Speed Most Wanted. По ощущениям, конечно, не как настоящий руль, но играть можно.К сожалению, видео снять не получилось — в доме одна камера, и то на испытуемом телефоне. В ближайшее время обязательно выложу. Вот как это выглядит на ПК и на смартфоне:

Заключение

Пока главный недостаток в сервере — это глобальное нажатие клавиш, не зависящее от приложения. В дальнейшем будет чем заняться. Еще одна проблема с которой я столкнулся — постоянный разрыв соединения. Не нашел лучшего решения, чем постоянный реконнект при обрыве связи.

Источник

Оцените статью