2013-04-01 5 views
1

Наконец-то я разработал свое приложение, в котором я могу управлять компьютерной мышью с помощью моего телефона Android. Я использую сенсорный экран для управления мышью.Как сопоставить экранные координаты моего телефона на экране компьютера?

Проблема в том, что курсор мыши перемещается только в пределах определенного региона, ограниченного размером экрана телефона. Я хочу, чтобы можно было перемещать курсор повсюду? Нужно ли мне какое-то сопоставление?

Это, как я посылаю мои COORDS от телефона:

public boolean onTouchEvent(MotionEvent evt) 
{ 
    String coords = Math.round(evt.getX()) + ", " + Math.round(evt.getY()); 

    Log.d(TAG, coords); 

    msgIO.sendMessage(soc, coords); 

    return true; 
} 

Для уточнения: сказать экран телефона ограничен 300x700 и экран ПК 1080x720. Теперь, если я использую сенсорный экран телефона для отправки координат, он будет перемещать курсор мыши только на стороне ПК в прямоугольнике 300x700. Я хочу переместить его в прямоугольник 1080x720.

+0

Gotta предоставить больше информации, чем если хотите. Как вы объясните, как вы сейчас это делаете? – dcow

+0

Слишком плохо, что вам нужно разработать приложение для этого, есть проект с открытым исходным кодом, который делает именно это (написанное сотрудником Google), и это позволяет перемещать курсор по всему экрану вашего компьютера. –

+0

Я знаю, что есть приложение. Я хочу попробовать сам понять понятия. – infinitloop

ответ

1

Думаю, вы можете решить это по математике.

Вам необходимо отправить 4 параметра на ПК.

String coords = Phone_Touched_X; 
coords += ", " 
coords += Phone_Touched_Y 
coords += ", " 
coords += Phone_Screen_X 
coords += ", " 
coords += Phone_Screen_Y 

На стороне ПК:

Position_X = PC_Screen_X * Phone_Touched_X/Phone_Screen_X; 
Position_Y = PC_Screen_Y * Phone_Touched_Y/Phone_Screen_Y; 

Пример:

Вы коснулись 200,200 на экране 300x700 телефона. Отправьте его на компьютер 1080x720.

Position_X = 1080 * 200/300 = 720 
Position_Y = 720 * 200/700 = 205 

Обратите внимание, что вам также необходимо учитывать, если вы используете телефон в портретном режиме. В этом случае вы должны передать 700x300 вместо 300x700.

Position_X = 1080 * 200/700 = 308 
Position_Y = 720 * 200/300 = 480 
Смежные вопросы