Android рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдЧреЗрдо рдХрдВрдЯреНрд░реЛрд▓рд░

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ Adndroid рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЗрдо рдХрдВрдЯреНрд░реЛрд▓рд░ (рдЖрдо рд▓реЛрдЧреЛрдВ рдореЗрдВ - рдПрдХ рдЬреЙрдпрд╕реНрдЯрд┐рдХ) рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╕реНрдЯреАрдпрд░рд┐рдВрдЧ рд╡реНрд╣реАрд▓ рд╣реИ ред



рдХрд╛рд░реНрдп рд╡рд┐рд╡рд░рдг



рдПрдХреНрд╕реАрд▓реЗрд░реЛрдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреАрдпрд░рд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдВрджреЛрд▓рди рдХреА рдкреНрд░рддреНрдпреЗрдХ рджрд┐рд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдПрдХ рд╕рддрдд рд╕реНрдХреИрдирд┐рдВрдЧ рдФрд░ рдЕрдиреБрднрд╡рдЬрдиреНрдп рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рд╕реАрдорд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЦреЗрд▓ рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдбрдмреНрд▓реНрдпреВ - рдлреЙрд░рд╡рд░реНрдб, рдбрдмреНрд▓реНрдпреВрдП - рдлреЙрд░рд╡рд░реНрдб рдФрд░ рд▓реЗрдлреНрдЯ, рдЖрджрд┐ред



рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдкреАрд╕реА рддрдХ рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░реНрд╡рд░ рд░рдирд┐рдВрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реА рдХрдорд╛рдВрдб рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реА рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдорд╛рд░реНрдЯрдлрд╝реЛрди рдЬреБрдбрд╝рд╛ рд░рд╣реЗред рдХрдиреЗрдХреНрд╢рди рд╡рд╛рдИ-рдлрд╛рдИ рдХреЗ рдЬрд░рд┐рдП рд╣реЛрдЧрд╛ред



рдФрд░ рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк ...



рд╕рд░реНрд╡рд░



рд╕рд░реНрд╡рд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд C ++ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдФрд░ рдкреНрд░реЗрд╕ рдХреАрдЬрд╝ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдореВрд▓ рдФрд░ рд╕рд░рд▓ рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  1. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  2. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  3. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  4. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  5. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  6. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  7. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  8. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  9. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  10. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  11. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  12. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  13. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  14. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  15. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  16. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  17. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  18. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  19. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  20. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }



  21. Copy Source | Copy HTML while ( true ) { std::cout << "Wait for connection...\n" ; try { socket = server.Accept(); } catch ( const char *error ) { std::cout << error << std:: endl ; exit( 0 ); } bool keepAlive = true; int timeout = 10000 ; setsockopt( server.getSocket( ), SOL_SOCKET, SO_KEEPALIVE, ( char* )&keepAlive, size of( bool )); setsockopt( server.getSocket( ), SOL_SOCKET, SO_RCVTIMEO, ( char* )&timeout, size of( int )); std::cout << "Connected!\n" ; while ( true ) { std: :string msg = socket->ReceiveLine(); if ( msg.empty( )) break; processKeys( msg.c_str( )); } std::cout << "Disconnected.\n\n\n" ; }







рдХреАрд╕реНрдЯреНрд░реЛрдХ:



Copy Source | Copy HTML



  1. рд╢реВрдиреНрдп рдкреНрд░реЗрд╕рдХреЗрдп ( рдЪрд╛рд░ рдХреА 1, рдЪрд╛рд░ рдХреА 2 ) {
  2. // рдкрд┐рдЫрд▓реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдПрдВ
  3. for ( std :: map <char, int> :: iterator it = scanCodes.begin ( ); рдпрд╣? = scanCodes.end (); рдпрд╣ ++) {
  4. char curKey = it-> рдкрд╣рд▓реЗ;
  5. рдЕрдЧрд░ ( curKey! = key1 && curKey! = key2 )
  6. upKey ( curKey );
  7. }
  8. downKey (рдХреА 1 );
  9. рдбрд╛рдЙрдирдХреЗрдп (рдХреА 2 );
  10. }
  11. рд╢реВрдиреНрдп рдбрд╛рдЙрдирдХреЗ ( рдЪрд╛рд░ рдХреА ) {
  12. keybd_event ( VkKeyScan (рдХреБрдВрдЬреА ), рд╕реНрдХреИрдирдХреЛрдб [рдХреБрдВрдЬреА], 0 , 0 );
  13. }
  14. рд╢реВрдиреНрдп upKey ( рдЪрд╛рд░ рдкреНрд░рдореБрдЦ ) {
  15. keybd_event ( VkKeyScan (рдХреБрдВрдЬреА ), рд╕реНрдХреИрдирдХреЛрдб [рдХреБрдВрдЬреА], KEYEVENTF_KEYUP, 0 );
  16. }




рдЧреНрд░рд╛рд╣рдХ



рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдХрд╛рд░реНрдп рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдФрд░ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди рднреЗрдЬрдирд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдПрдХ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдХрд╛рдо рдлреЛрди рдХреЗ рд╕реНрдерд╛рдирд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

Copy Source | Copy HTML



  1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ MainActivity рдЧрддрд┐рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ SensorEventListener {
  2. @Override
  3. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп onCreate (рдмрдВрдбрд▓ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛
  4. // ...
  5. SensManager = (SensorManager) getSystemService (SENSOR_SERVICE);
  6. рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ = SensManager.getDefaultSensor (Sensor.TYPE_ACCELEROMETER);
  7. // ...
  8. }
  9. @Override
  10. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп onSororChanged (рд╕реЗрдВрд╕рд░ рдЗрд╡реЗрдВрдЯ ) {
  11. рдЕрдЧрд░ ( рдШрдЯрдирд╛ред sensor.getType () == Sensor.TYPE_ACCELEROMETER) {
  12. long curTime = System.currentTimeMillis ();
  13. // рдкреНрд░рддреНрдпреЗрдХ 100 рдПрдордПрд╕ рдбреЗрдЯрд╛ рдкрдврд╝реЗрдВ, рдЕрдиреНрдпрдерд╛ рдлреЛрди рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рд╕реЗ рдЭреБрдХ рдЬрд╛рдПрдЧрд╛
  14. if (lastUpdate == - 1 || (curTime - lastUpdate)> 100 ) {11
  15. lastUpdate = curTime;
  16. x = рдШрдЯрдирд╛ .values тАЛтАЛ[DATA_X];
  17. y = рдШрдЯрдирд╛ .values тАЛтАЛ[DATA_Y];
  18. z = рдШрдЯрдирд╛ .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. рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
  23. sendKeys (); // рд╕рд░реНрд╡рд░ рдХреА рдЪрд╛рдмрд┐рдпрд╛рдБ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
  24. } рдкрдХрдбрд╝ (рдЕрдкрд╡рд╛рдж рдИ) {
  25. e.printStackTrace ();
  26. }
  27. }
  28. }
  29. }
  30. }




рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рддреБрд░рдВрдд рд╕реЗрдВрд╕рд░ рдХреЗ рдирд┐рд░рдВрддрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдирд┐рд▓рдВрдмрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рддрд╣, рдЖрдкрдХреЛ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рд╕реЗ рд╢реНрд░реЛрддрд╛ рдХреЛ рдЦреЛрд▓рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рдФрд░ рдмреИрдЯрд░реА рдмрд░реНрдмрд╛рдж рди рд╣реЛрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, onResume рдФрд░ onPause рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░реЗрдВ:



Copy Source | Copy HTML



  1. @Override
  2. рд╕рдВрд░рдХреНрд╖рд┐рдд рд╢реВрдиреНрдп рдкрд░ () {
  3. super.onResume ();
  4. SensManager.registerListener ( рдпрд╣ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░, SENSOR_DELAY_NORMAL);
  5. }
  6. @Override
  7. рд╕рдВрд░рдХреНрд╖рд┐рдд рд╢реВрдиреНрдп рдЪрд╛рд▓реВ () {
  8. super.onPause ();
  9. SensManager.unregisterListener ( рдпрд╣ );
  10. }




рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд╕рднреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

Copy Source | Copy HTML



  1. рдирд┐рдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ getKeys () {
  2. рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреАрдЬрд╝ = "" ;
  3. рдЕрдЧрд░ (z> 7.5 )
  4. рдЪрд╛рдмрд┐рдпрд╛рдБ + = "рдбрдмреНрд▓реНрдпреВ" ;
  5. рдЕрдиреНрдпрдерд╛
  6. рдЪрд╛рдмрд┐рдпрд╛рдБ + = "рдПрд╕" ;
  7. рдЕрдЧрд░ (y <- 3 )
  8. рдЪрд╛рдмрд┐рдпрд╛рдБ + = "рдП" ;
  9. рдФрд░ рдЕрдЧрд░ (y> 3 )
  10. рдЪрд╛рдмрд┐рдпрд╛рдБ + = "рдбреА" ;
  11. рд╡рд╛рдкрд╕реА рдХреБрдВрдЬреА;
  12. }


рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ



рдореИрдВрдиреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдиреАрдб рдлреЙрд░ рд╕реНрдкреАрдб рдореЛрд╕реНрдЯ рд╡рд╛рдВрдЯреЗрдб рдкрд░ рдЕрдиреБрднрд╡ рдХреАред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ, рдЕрд╕рд▓реА рд╕реНрдЯреАрдпрд░рд┐рдВрдЧ рд╡реНрд╣реАрд▓ рдХреА рддрд░рд╣ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡реАрдбрд┐рдпреЛ рдХреЛ рд╢реВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдШрд░ рдореЗрдВ рдПрдХ рдХреИрдорд░рд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдлреЛрди рдкрд░ред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред рдпрд╣рд╛рдБ рдпрд╣ рдкреАрд╕реА рдФрд░ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдкрд░ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:



рдЫрд╡рд┐



рдЫрд╡рд┐



рдирд┐рд╖реНрдХрд░реНрд╖



рдЕрдм рддрдХ, рд╕рд░реНрд╡рд░ рдореЗрдВ рдореБрдЦреНрдп рджреЛрд╖ рд╡реИрд╢реНрд╡рд┐рдХ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рд╣реИ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЬрд┐рд╕рдХрд╛ рдореБрдЭреЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ рд╡рд╣ рд╣реИ рдирд┐рд░рдВрддрд░ рд╡рд┐рдпреЛрдЧред рдЬрдм рдХрдиреЗрдХреНрд╢рди рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛рддрд╛рд░ рдкреБрди: рд╕рдВрдпреЛрдЬрди рд╕реЗ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред



рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ?



рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ:

github.com/eburke/android_game_examples/blob/9d65f96aff5d60a2e765d8db894b7eb3fd02c315/GameExamples/src/com/stuffthathappens/games/Accel.java



рдореБрдЦреНрдп рдкреНрд░реЗрд╕ рдЕрдиреБрдХрд░рдг:

www.codeproject.com/kb/system/keyboard.aspx



рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд - рд╕реНрд░реЛрдд:

dl.dropbox.com/u/5636452/game_controller.zip



All Articles