├── .classpath ├── .gitignore ├── .project ├── AndroidManifest.xml ├── README.md ├── default.properties ├── gen └── org │ └── example │ └── touch │ └── R.java ├── proguard.cfg ├── project.properties ├── res ├── drawable-hdpi │ └── icon.png ├── drawable-ldpi │ └── icon.png ├── drawable-mdpi │ └── icon.png ├── layout │ ├── control.xml │ └── main.xml └── values │ └── strings.xml └── src └── org └── tayloredapps └── remoteclient ├── AppDelegate.java ├── ClientListener.java ├── ClientThread.java ├── Controller.java └── Touch.java /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | bin/* 2 | .settings/* 3 | gen/* 4 | .classpath 5 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Touch 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 13 | 14 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Remote Desktop Controller v1.5 2 | 3 | Copyright 2010 Justin Taylor 4 | This software can be distributed under the terms of the 5 | GNU General Public License. 6 | 7 | This project was created for Android devices running 2.1 and higher. 8 | 9 | The Remote Desktop controller can control the mouse and keyboard of a dekstop 10 | computer from an Android device. There are two pieces of software needed for 11 | this to run properly. The DesktopRemoteServer which runs on the users desktop 12 | machine, and the Touchapp which runs on the user's Android device 13 | 14 | ## Deliverables 15 | What's that? You just want to use the app!?! You don't want to mess with the 16 | hassle of eclipse? In that case just download 17 | http://central.tayloredapps.org/server.jar and run it on any desktop that has 18 | JRE installed. Then mosy on over and download 19 | http://central.tayloredapps.org/Android-remote-client.apk to your android 20 | device. 21 | 22 | ## Remote Desktop Server 23 | https://github.com/justin-taylor/Remote-Desktop-Server 24 | This project must be imported into the eclipse workspace for the android 25 | application to be ran. 26 | 27 | ## Android Remote Client 28 | The Android app that send messages over wifi to the receiving server. The app is 29 | divided into three classes. 30 | 31 | 2. Touch 32 | This view allows the user to adjust the settings of he app. The 33 | first setting is the port that the messages are sent over. This 34 | must match the port set from the server UI on the DekstopRemoteServer. 35 | There is also a setting to control mouse sensitivity. 36 | 37 | 2. Controller 38 | This view is shown after the settings in touch are accepted. Listners 39 | receive user interactions, such as taps, movement and keyboard 40 | interactions, and are then translated into messages to be sent over the 41 | UDP socket established in the AppDelegate (See section 2.C). 42 | 43 | 2. AppDelegate 44 | The AppDelegate bridges the gap between the Touch view (2.A) and the 45 | Controller view (2.B). The settings from the Touch view are used to 46 | create a UDP socket that will send messages from the Controller view 47 | to the receiveing DesktopRemoteServer (1). If there is a connection 48 | issue this class will close the Controller view and present the touch 49 | view displaying and message about the issue. 50 | 51 | ## Known Bugs 52 | 53 | * Key Board Support: 54 | Not all Keys on the Android Keyboard are supported. 55 | Not entirely sure why. Some keys return the same 56 | key code in the onKey method Controller.java 57 | 58 | * Sever Connection Test: 59 | There should be a way to ensure server connectivity 60 | before switching to the Controller view. Currently 61 | a test message is sent to the server and listens for 62 | a message back (similar to a ping request), however 63 | the connection takes a couple of tries before connecting. 64 | -------------------------------------------------------------------------------- /default.properties: -------------------------------------------------------------------------------- 1 | # Project target. 2 | target=android-8 3 | -------------------------------------------------------------------------------- /gen/org/example/touch/R.java: -------------------------------------------------------------------------------- 1 | /* AUTO-GENERATED FILE. DO NOT MODIFY. 2 | * 3 | * This class was automatically generated by the 4 | * aapt tool from the resource data it found. It 5 | * should not be modified by hand. 6 | */ 7 | 8 | package org.example.touch; 9 | 10 | public final class R { 11 | public static final class attr { 12 | } 13 | public static final class drawable { 14 | public static final int icon=0x7f020000; 15 | } 16 | public static final class id { 17 | public static final int Button01=0x7f050015; 18 | public static final int Button02=0x7f050016; 19 | public static final int ButtonGroup=0x7f050002; 20 | public static final int EditText01=0x7f05000c; 21 | public static final int EditText02=0x7f05000e; 22 | public static final int EditText03=0x7f050013; 23 | public static final int KeyBoard=0x7f050005; 24 | public static final int LeftClickButton=0x7f050003; 25 | public static final int LinearLayout01=0x7f050006; 26 | public static final int RightClickButton=0x7f050004; 27 | public static final int ScreenCapture=0x7f050010; 28 | public static final int SeekBar01=0x7f05000a; 29 | public static final int TextView01=0x7f05000b; 30 | public static final int TextView02=0x7f05000d; 31 | public static final int TextView03=0x7f050009; 32 | public static final int TouchPad=0x7f050000; 33 | public static final int checkBox1=0x7f05000f; 34 | public static final int devicePort=0x7f050011; 35 | public static final int framerate=0x7f050012; 36 | public static final int keyboardbutton=0x7f050001; 37 | public static final int linearLayout1=0x7f050008; 38 | public static final int screenRatio=0x7f050014; 39 | public static final int scrollView1=0x7f050007; 40 | } 41 | public static final class layout { 42 | public static final int control=0x7f030000; 43 | public static final int main=0x7f030001; 44 | } 45 | public static final class string { 46 | public static final int app_name=0x7f040001; 47 | public static final int buttonHandler=0x7f040002; 48 | public static final int hello=0x7f040000; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /proguard.cfg: -------------------------------------------------------------------------------- 1 | -optimizationpasses 5 2 | -dontusemixedcaseclassnames 3 | -dontskipnonpubliclibraryclasses 4 | -dontpreverify 5 | -verbose 6 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 7 | 8 | -keep public class * extends android.app.Activity 9 | -keep public class * extends android.app.Application 10 | -keep public class * extends android.app.Service 11 | -keep public class * extends android.content.BroadcastReceiver 12 | -keep public class * extends android.content.ContentProvider 13 | -keep public class com.android.vending.licensing.ILicensingService 14 | 15 | -keepclasseswithmembernames class * { 16 | native ; 17 | } 18 | 19 | -keepclasseswithmembernames class * { 20 | public (android.content.Context, android.util.AttributeSet); 21 | } 22 | 23 | -keepclasseswithmembernames class * { 24 | public (android.content.Context, android.util.AttributeSet, int); 25 | } 26 | 27 | -keepclassmembers enum * { 28 | public static **[] values(); 29 | public static ** valueOf(java.lang.String); 30 | } 31 | 32 | -keep class * implements android.os.Parcelable { 33 | public static final android.os.Parcelable$Creator *; 34 | } 35 | -------------------------------------------------------------------------------- /project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system use, 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | 10 | # Project target. 11 | target=android-14 12 | -------------------------------------------------------------------------------- /res/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justin-taylor/Android-remote-client/85c6cc5c4e48c21a9da7bff512939fdc1862f015/res/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /res/drawable-ldpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justin-taylor/Android-remote-client/85c6cc5c4e48c21a9da7bff512939fdc1862f015/res/drawable-ldpi/icon.png -------------------------------------------------------------------------------- /res/drawable-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justin-taylor/Android-remote-client/85c6cc5c4e48c21a9da7bff512939fdc1862f015/res/drawable-mdpi/icon.png -------------------------------------------------------------------------------- /res/layout/control.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 18 | 19 | 26 | 27 | 28 | 34 | 35 | 40 | 41 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /res/layout/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 20 | 21 | 28 | 29 | 36 | 37 | 38 | 41 | 42 | 43 | 44 | 45 | 52 | 53 | 59 | 60 | 66 | 67 | 76 | 77 | 78 | 79 | 88 | 89 | 90 | 95 | 96 | 97 | 106 | 107 | 108 | 109 | 118 | 119 | 120 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 141 | 142 | 154 |