<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RemoteDroid &#187; Android</title>
	<atom:link href="/blog/category/android/feed/" rel="self" type="application/rss+xml" />
	<link>https://remotedroid.net/blog</link>
	<description>Use Your Android Phone as a Remote Trackpad!</description>
	<lastBuildDate>Sun, 26 Feb 2012 06:19:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Android and https</title>
		<link>https://remotedroid.net/blog/2011/09/14/android-and-https/</link>
		<comments>https://remotedroid.net/blog/2011/09/14/android-and-https/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 20:34:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">https://remotedroid.net/blog/?p=58</guid>
		<description><![CDATA[I recently had to deal with using https with Apache&#8217;s http libraries. Not a simple task. If you just create a Uri with https in front of it, and your SSL certificate isn&#8217;t from a trusted authority, or if you&#8217;re using a self-signed certificate, you&#8217;re in for a world of hurt. There&#8217;s a lot of [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had to deal with using https with Apache&#8217;s http libraries. Not a simple task. If you just create a Uri with https in front of it, and your SSL certificate isn&#8217;t from a trusted authority, or if you&#8217;re using a self-signed certificate, you&#8217;re in for a world of hurt.</p>
<p>There&#8217;s a lot of solutions out there, and most of them involve trusting everyone, which isn&#8217;t so secure. The best solution I found is here:</p>
<p><a href="http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html">Crazy Bob: Trusting SSL Certificates</a></p>
<p>It&#8217;s reasonably secure, but in order to use it, you&#8217;ll need the 1.6 JDK. You don&#8217;t need the Android SDK to create the needed keystore.</p>
<p><b>[UPDATE]</b></p>
<p>That method works if you&#8217;re only going to one domain. All other domains stop working with that method. A better method can be found at this Stack Overflow question:</p>
<p><a href="http://stackoverflow.com/questions/2642777/trusting-all-certificates-using-httpclient-over-https/6378872#6378872">http://stackoverflow.com/questions/2642777/trusting-all-certificates-using-httpclient-over-https/6378872#6378872</a></p>
<p>The code here appends your KeyStores to Android&#8217;s list, which is a much better solution. You&#8217;ll still need the method for generating a keystore in the first link.</p>
]]></content:encoded>
			<wfw:commentRss>https://remotedroid.net/blog/2011/09/14/android-and-https/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slow Android autocomplete in Eclipse Helios</title>
		<link>https://remotedroid.net/blog/2011/01/21/slow-android-autocomplete-in-eclipse-helios/</link>
		<comments>https://remotedroid.net/blog/2011/01/21/slow-android-autocomplete-in-eclipse-helios/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 10:30:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">https://remotedroid.net/blog/?p=56</guid>
		<description><![CDATA[Eclipse Helios has been slow for me for awhile, and it finally annoyed me enough to try to google a solution. This guy found a good, relatively easy fix. Basically, you&#8217;re just downloading the Android source, and adding it to your Android SDK directory. Hit the link for full details.]]></description>
			<content:encoded><![CDATA[<p>Eclipse Helios has been slow for me for awhile, and it finally annoyed me enough to try to google a solution.</p>
<p><a href="http://envyandroid.com/archives/66/slow-android-autocomplete-eclipse-helios-36">This guy</a> found a good, relatively easy fix.</p>
<p>Basically, you&#8217;re just downloading the Android source, and adding it to your Android SDK directory. Hit the link for full details.</p>
]]></content:encoded>
			<wfw:commentRss>https://remotedroid.net/blog/2011/01/21/slow-android-autocomplete-in-eclipse-helios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Referencing drawables in HTML in Android&#8217;s WebView</title>
		<link>https://remotedroid.net/blog/2011/01/14/referencing-drawables-in-html-in-androids-webview/</link>
		<comments>https://remotedroid.net/blog/2011/01/14/referencing-drawables-in-html-in-androids-webview/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 14:52:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">https://remotedroid.net/blog/?p=54</guid>
		<description><![CDATA[Here&#8217;s another interesting Android quirk: So let&#8217;s say you have a webview that you want to populate with HTML from an arbitrary source, and you want to use an image in the res/drawable directory. You could try webview.loadData(html, &#8220;text/html&#8221;, &#8220;UTF-8&#8243;), and within the HTML, use &#60;img src=&#34;file:///android_res/drawable/icon.png&#34; /&#62; or something, but that won&#8217;t work. Instead, [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s another interesting Android quirk:</p>
<p>So let&#8217;s say you have a webview that you want to populate with HTML from an arbitrary source, and you want to use an image in the res/drawable directory. You could try webview.loadData(html, &#8220;text/html&#8221;, &#8220;UTF-8&#8243;), and within the HTML, use</p>
<p>&lt;img src=&quot;file:///android_res/drawable/icon.png&quot; /&gt;</p>
<p>or something, but that won&#8217;t work. Instead, this is what I had to do:</p>
<pre>
WebView webview = (WebView)this.findViewById(R.id.webview);
String html = "&lt;html&gt;&lt;head&gt;&lt;title&gt;TITLE!!!&lt;/title&gt;&lt;/head&gt;";
html += "&lt;body&gt;&lt;h1&gt;Image?&lt;/h1&gt;&lt;img src=&quot;icon.png&quot; /&gt;&lt;/body&gt;&lt;/html&gt;";
webview.loadDataWithBaseURL("file:///android_res/drawable/", html, "text/html", "UTF-8", null);
</pre>
<p>So basically, for some reason, you absolutely have to use loadDataWithBaseURL.</p>
<p>&#8211;</p>
<h5>UPDATE</h5>
<p>This only seems to work with 2.2 (API level <img src='/blog/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> and up.</p>
]]></content:encoded>
			<wfw:commentRss>https://remotedroid.net/blog/2011/01/14/referencing-drawables-in-html-in-androids-webview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Basic authentication with HttpClient on Android using https and PUT</title>
		<link>https://remotedroid.net/blog/2010/12/15/basic-authentication-with-httpclient-on-android-using-https-and-put/</link>
		<comments>https://remotedroid.net/blog/2010/12/15/basic-authentication-with-httpclient-on-android-using-https-and-put/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 09:46:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">https://remotedroid.net/blog/?p=52</guid>
		<description><![CDATA[&#8216;ve been beating my head against a wall for hours with this one. The examples I&#8217;d been using all returned HTTP 400 Bad Request, and Apache&#8217;s HttpClient is cryptic enough so that the reason for this wasn&#8217;t obvious. The reason for this response still isn&#8217;t obvious, but thanks to Kyle Lampe, I now have some [...]]]></description>
			<content:encoded><![CDATA[<p>&#8216;ve been beating my head against a wall for hours with this one. The examples I&#8217;d been using all returned HTTP 400 Bad Request, and Apache&#8217;s HttpClient is cryptic enough so that the reason for this wasn&#8217;t obvious. The reason for this response still isn&#8217;t obvious, but thanks to Kyle Lampe, I now have some code that actually works:</p>
<pre>
try {
    String data = "YOUR REQUEST BODY HERE";
    //
    CredentialsProvider credProvider = new BasicCredentialsProvider();
    credProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
        new UsernamePasswordCredentials("YOUR USER NAME HERE", "YOUR PASSWORD HERE"));
    //
    DefaultHttpClient http = new DefaultHttpClient();
    http.setCredentialsProvider(credProvider);
    //
    HttpPut put = new HttpPut("YOUR HTTPS URL HERE");
    try {
        put.setEntity(new StringEntity(data, "UTF8"));
    } catch (UnsupportedEncodingException e) {
        Log.e(TAG, "UnsupportedEncoding: ", e);
    }
    put.addHeader("Content-type","SET CONTENT TYPE HERE IF YOU NEED TO");
    HttpResponse response = http.execute(put);
    Log.d(TAG, "This is what we get back:"+response.getStatusLine().toString()+", "+response.getEntity().toString());
} catch (ClientProtocolException e) {
    //
    Log.d(TAG, "Client protocol exception", e);
} catch (IOException e) {
    //
    Log.d(TAG, "IOException", e);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>https://remotedroid.net/blog/2010/12/15/basic-authentication-with-httpclient-on-android-using-https-and-put/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Push notifications with Urban Airship on Android</title>
		<link>https://remotedroid.net/blog/2010/10/13/push-notifications-with-urban-airship-on-android/</link>
		<comments>https://remotedroid.net/blog/2010/10/13/push-notifications-with-urban-airship-on-android/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 12:05:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">https://remotedroid.net/blog/?p=50</guid>
		<description><![CDATA[So I&#8217;m testing out push notifications using Urban Airship&#8217;s system, and I&#8217;ve been ripping my hair out for the last day or so trying to get my app to respond to them. It turns out that the example code they have on their site doesn&#8217;t actually work. If you do everything exactly as they say, [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;m testing out push notifications using <a href="http://urbanairship.com/">Urban Airship&#8217;s</a> system, and I&#8217;ve been ripping my hair out for the last day or so trying to get my app to respond to them. It turns out that the example code they have on their site doesn&#8217;t actually work. If you do everything exactly as they say, you&#8217;ll either get a ActivityNotFoundException when the BroadcastReceiver tries to start your activity, or you&#8217;ll get an ANR, and a log trace that looks like this:</p>
<pre>
E/Bundle  ( 1101): readBundle: bad magic number
E/Bundle  ( 1101): readBundle: trace = java.lang.RuntimeException
E/Bundle  ( 1101): 	at android.os.Bundle.readFromParcelInner(Bundle.java:1580)
E/Bundle  ( 1101): 	at android.os.Bundle.<init>(Bundle.java:82)
E/Bundle  ( 1101): 	at android.os.Parcel.readBundle(Parcel.java:1381)
E/Bundle  ( 1101): 	at android.os.Parcel.readBundle(Parcel.java:1366)
E/Bundle  ( 1101): 	at android.content.Intent.readFromParcel(Intent.java:5479)
E/Bundle  ( 1101): 	at android.content.Intent.<init>(Intent.java:5453)
E/Bundle  ( 1101): 	at android.content.Intent$1.createFromParcel(Intent.java:5444)
E/Bundle  ( 1101): 	at android.content.Intent$1.createFromParcel(Intent.java:5446)
E/Bundle  ( 1101): 	at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:132)
E/Bundle  ( 1101): 	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1480)
E/Bundle  ( 1101): 	at android.os.Binder.execTransact(Binder.java:288)
E/Bundle  ( 1101): 	at dalvik.system.NativeStart.run(Native Method)
</pre>
<p>What&#8217;s happening is that you register a PushReceiver with the AirMail control panel app, which then creates and sends an intent to start your activity. The problem being, (I think) that the intent gets sent from the scope of the AirMail app, meaning it wont necessarily have access to your classes.</p>
<p>The way I finally got this to work is by using the setClassName(String, String) method of the intent to explicitly set the packagename and class name of the activity I wanted. Stick this in the onClick method of your PushReceiver:</p>
<pre>
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClassName("com.example", "com.example.YourActivity");
YourApplication.this.startActivity(i);
</pre>
]]></content:encoded>
			<wfw:commentRss>https://remotedroid.net/blog/2010/10/13/push-notifications-with-urban-airship-on-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google analytics drops metrics in Android if you send them too quickly</title>
		<link>https://remotedroid.net/blog/2010/09/14/google-analytics-drops-metrics-in-android-if-you-send-them-too-quickly/</link>
		<comments>https://remotedroid.net/blog/2010/09/14/google-analytics-drops-metrics-in-android-if-you-send-them-too-quickly/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 10:04:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">https://remotedroid.net/blog/?p=48</guid>
		<description><![CDATA[I just ran into this problem with the Google Analytics SDK for Android (v0.8). Basically, if you try to send too many pageviews too quickly, the tracker gets overwhelmed and forgets to track some of them. My solution was just to space things out a bit with Timers and TimerTasks. I have a small wrapper [...]]]></description>
			<content:encoded><![CDATA[<p>I just ran into this problem with the Google Analytics SDK for Android (v0.8). Basically, if you try to send too many pageviews too quickly, the tracker gets overwhelmed and forgets to track some of them.</p>
<p>My solution was just to space things out a bit with Timers and TimerTasks. I have a small wrapper around the analytics tracker, which has a timer, a static inner TimerTask class, and a long which is the soonest that a pageview should be sent. Whenever you want to send a pageview, you just call recordView, which looks like this:</p>
<pre>
public void recordView(String metric) {
        // The current time.
        long time = new Date().getTime();
        // We keep track of the next appropriate time to send a metric with sendTime. sendTime only gets updated
        // when we try to send something,
        if (this.sendTime > time) {
        	time = this.sendTime;
        }
        this.sendTimer.schedule(new TrackTask(this, metric), new Date(time));
        // I have sendInterval set to 2000, meaning pageviews are sent at a minimum, two seconds apart.
        this.sendTime = time + this.sendInterval;
}
</pre>
<p>Then, TrackTask looks like this:</p>
<pre>
protected static class TrackTask extends TimerTask {
    	//
    	private WeakReference<Metrics> ref;
    	private String metric;

    	public TrackTask(Metrics met, String metric) {
                // WeakReference to avoid memory leaks.
    		this.ref = new WeakReference<Metrics>(met);
    		this.metric = metric;
    	}

    	public void run() {
                // try catch block because our WeakReference has the possibility of being GCed out from under us.
    		try {
    			this.ref.get().tracker.trackPageView(this.metric);
    			this.ref.get().tracker.dispatch();
    		} catch (NullPointerException e) {
    		}
    	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>https://remotedroid.net/blog/2010/09/14/google-analytics-drops-metrics-in-android-if-you-send-them-too-quickly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting items in a ListView to show Alpha values</title>
		<link>https://remotedroid.net/blog/2010/09/07/getting-items-in-a-listview-to-show-alpha-values/</link>
		<comments>https://remotedroid.net/blog/2010/09/07/getting-items-in-a-listview-to-show-alpha-values/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 16:52:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">https://remotedroid.net/blog/?p=46</guid>
		<description><![CDATA[So I was trying to implement a ListView in Android the other day where the items would have varying levels of alpha transparency in the background. For some reason, every item&#8217;s background would go black whenever the ListView scrolled. (presumably for performance reasons.) Googling around yielded not much, but a co-worker had solved this problem [...]]]></description>
			<content:encoded><![CDATA[<p>So I was trying to implement a ListView in Android the other day where the items would have varying levels of alpha transparency in the background. For some reason, every item&#8217;s background would go black whenever the ListView scrolled. (presumably for performance reasons.) Googling around yielded not much, but a co-worker had solved this problem in a previous app. Looking through the layout file, I saw that the android:cacheColorHint was set in his layout, but not mine. Adding it solved the problem.</p>
<p>Basically, just adding android:cacheColorHint=&#8221;#00000000&#8243; to the ListView enabled transparency while scrolling.</p>
]]></content:encoded>
			<wfw:commentRss>https://remotedroid.net/blog/2010/09/07/getting-items-in-a-listview-to-show-alpha-values/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android memory leaks</title>
		<link>https://remotedroid.net/blog/2010/08/13/android-memory-leaks/</link>
		<comments>https://remotedroid.net/blog/2010/08/13/android-memory-leaks/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 01:34:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">https://remotedroid.net/blog/?p=44</guid>
		<description><![CDATA[Since I&#8217;ve been banging my head against this for the last 12 hours, I thought I&#8217;d post a solution here, so other people might stumble across it and benefit. I ran into two memory leaks in Android itself in WebView, and Typeface. Both are because of bugs in the OS, so if you&#8217;re encountering memory [...]]]></description>
			<content:encoded><![CDATA[<p>Since I&#8217;ve been banging my head against this for the last 12 hours, I thought I&#8217;d post a solution here, so other people might stumble across it and benefit.</p>
<p>I ran into two memory leaks in Android itself in <a href="http://developer.android.com/reference/android/webkit/WebView.html">WebView</a>, and <a href="http://developer.android.com/reference/android/graphics/Typeface.html">Typeface</a>. Both are because of bugs in the OS, so if you&#8217;re encountering memory leaks, and all your code looks pretty watertight, (Meaning you never pass Activities as a Context to a View, and you use WeakReferences for static inner classes) you might be hitting one of these.</p>
<p>The first bug for WebView is described <a href="http://code.google.com/p/android/issues/detail?id=5067">here.</a></p>
<p>The solution is just to call destroy() on your webview in the onDestroy() method of the containing activity, then set any references to that WebView to null, just in case. The app I&#8217;m working on is webview heavy, so this was causing some grief.</p>
<p>The second bug for Typeface is described <a href="http://code.google.com/p/android/issues/detail?id=9904">here.</a></p>
<p>The issue was that I was creating a new Typeface from assets in the onCreate method of my activity. Every time I did this, it was allocating around 700k of memory, which then never got released. Big, big problems. The solution in this case is to initialize the typeface object in a static class (You can subclass Application and stick it there if you want, but be aware that you can&#8217;t call getAssets() before the first activity gets it&#8217;s onCreate method called.) and then use that one instance for any TextViews you may have.</p>
<p>The only way I managed to figure out what was causing the leaks was to go into adb shell, and then use dumpsys meminfo. That showed me a whole lot of bad.</p>
]]></content:encoded>
			<wfw:commentRss>https://remotedroid.net/blog/2010/08/13/android-memory-leaks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RemoteDroid controls robot remotely</title>
		<link>https://remotedroid.net/blog/2010/06/04/remotedroid-controls-robot-remotely/</link>
		<comments>https://remotedroid.net/blog/2010/06/04/remotedroid-controls-robot-remotely/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 16:52:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">https://remotedroid.net/blog/?p=42</guid>
		<description><![CDATA[Android + Arduino wireless from Guus Baggermans on Vimeo. Well damn!]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12298295&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=12298295&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object>
<p><a href="http://vimeo.com/12298295">Android + Arduino wireless</a> from <a href="http://vimeo.com/user940779">Guus Baggermans</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Well damn!</p>
]]></content:encoded>
			<wfw:commentRss>https://remotedroid.net/blog/2010/06/04/remotedroid-controls-robot-remotely/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RemoteDroid gets multitouch gestures</title>
		<link>https://remotedroid.net/blog/2010/03/01/remotedroid-gets-multitouch-gestures/</link>
		<comments>https://remotedroid.net/blog/2010/03/01/remotedroid-gets-multitouch-gestures/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 19:03:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">https://remotedroid.net/blog/?p=40</guid>
		<description><![CDATA[Thanks to Nicolas Frenay, RemoteDroid now has some cool multitouch gestures. You can now use two fingers to scroll, just like a macbook, as well as clicking the onscreen mouse buttons, and dragging using the touchpad, just like you always wanted. He&#8217;s using reflection to find out if your phone supports multitouch, which means that [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to Nicolas Frenay, RemoteDroid now has some cool multitouch gestures. You can now use two fingers to scroll, just like a macbook, as well as clicking the onscreen mouse buttons, and dragging using the touchpad, just like you always wanted. He&#8217;s using reflection to find out if your phone supports multitouch, which means that 1.6 devices aren&#8217;t left totally out in the cold, and I don&#8217;t have to worry about maintaining two different branches.</p>
<p>One note for Nexus One users, the Nexus One apparently has some pretty serious <a href="http://www.youtube.com/watch?v=dsSUqkh8pcI">multitouch problems</a>, making click and drag a bit wonky. I&#8217;d advise sticking to tap-to-click and hold for dragging items around.</p>
<p>Another change is that I&#8217;ve removed the trackball as mouse functionality. Now clicking the trackball acts as a CTRL key, and moving the trackball acts as a scrollwhell, making it more like <a href="http://code.google.com/p/connectbot/">ConnectBot</a>, and making the user experience a little bit more consistent.</p>
<p>Lastly, I&#8217;ve added better support for the soft keyboard. All keys, except for the ones that don&#8217;t have direct analogues on your regular keyboard now work. (long-press keys still aren&#8217;t supported) In the future, because of differing physical keyboard layouts between devices, I&#8217;m going to try to get RemoteDroid to recognize which device you&#8217;re using, and change what it sends depending on that, but for now, at least the soft keyboard should be pretty consistent.</p>
]]></content:encoded>
			<wfw:commentRss>https://remotedroid.net/blog/2010/03/01/remotedroid-gets-multitouch-gestures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
