<?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>Roger Kind Kristiansen</title>
	<atom:link href="http://www.kind-kristiansen.no/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kind-kristiansen.no</link>
	<description></description>
	<lastBuildDate>Fri, 29 Jun 2012 21:39:44 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Urettmessig tilleggsavgift på bompassering? En telefon kan lønne seg.</title>
		<link>http://www.kind-kristiansen.no/2011/tilleggsavgift-pa-bompassering/</link>
		<comments>http://www.kind-kristiansen.no/2011/tilleggsavgift-pa-bompassering/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 10:38:39 +0000</pubDate>
		<dc:creator>Roger Kind Kristiansen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kind-kristiansen.no/?p=343</guid>
		<description><![CDATA[Vi fikk nylig en faktura i posten fra Østfold Bompengeselskap AS (en del av Bro- og tunnelselskapet AS), pålydende 320 kroner. 20 kroner for bompassering, og 300 i &#8220;tilleggsavgift&#8221; (les: bot) for ikke å ha betalt. Det var bare et par problemer: Vi betaler for oss når vi passerer bomstasjoner med myntinnkast, og forsikrer oss &#8230; </p><p><a class="more-link block-button" href="http://www.kind-kristiansen.no/2011/tilleggsavgift-pa-bompassering/">Continue reading &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>Vi fikk nylig en faktura i posten fra Østfold Bompengeselskap AS (en del av Bro- og tunnelselskapet AS), pålydende 320 kroner. 20 kroner for bompassering, og 300 i &#8220;tilleggsavgift&#8221; (les: bot) for ikke å ha betalt. Det var bare et par problemer:</p>
<ul>
<li>Vi betaler for oss når vi passerer bomstasjoner med myntinnkast, og forsikrer oss om at lyset er grønt før vi kjører.</li>
<li>Vi bor og jobber i Oslo, og følte oss ganske sikre på at vi ikke passerte en bomstasjon i Moss klokken 06:12 denne morgenen.</li>
<li>Den aktuelle morgenen var over <b>3 måneder</b> før fakturaen ble sendt ut.</li>
</ul>
<p>Tilfeldigvis var omstendighetene slik at vi husker å ha passert (og betalt) denne bomringen på ettermiddag/kveld to dager etter den angivelige snikingen. Helt tilfeldig kunne vel ikke tilleggsavgiften være, når det dreier seg om en bomring vi så godt som aldri passerer?</p>
<p>Selv om utallige frustrerte innlegg på nettet tilsier at en klage på tilleggsavgift for bompassering er fånyttes, tok vi en telefon for å i det minste se hva de hadde av bevis. Og bevis fantes ikke, i alle fall ikke mot oss. I følge selskapet var bildet de satt på av et helt annet skilt, og de frafalt kravet på stedet. Kjekt, men ikke spesielt tillitsvekkende.</p>
<p>Noe sier meg at en god andel av mottakerne av denne typen tilleggsavgifter ser det som så usannsynlig at de kommer noen vei med klagen sin at de betaler uavhengig av skyld. Jeg skriver dette i håp om at noen i det minste tar den ene telefonen for å sjekke om bildet de sitter på er av ens eget skilt.</p>
 <p><a href="http://www.kind-kristiansen.no/?flattrss_redirect&amp;id=343&amp;md5=feadb3c52a395ec4bff5db7ee5b77e34" title="Flattr" target="_blank"><img src="http://www.kind-kristiansen.no/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.kind-kristiansen.no/2011/tilleggsavgift-pa-bompassering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=rogerkk&amp;popout=1&amp;url=http%3A%2F%2Fwww.kind-kristiansen.no%2F2011%2Ftilleggsavgift-pa-bompassering%2F&amp;language=no_NO&amp;category=text&amp;title=Urettmessig+tilleggsavgift+p%C3%A5+bompassering%3F+En+telefon+kan+l%C3%B8nne+seg.&amp;description=Vi+fikk+nylig+en+faktura+i+posten+fra+%C3%98stfold+Bompengeselskap+AS+%28en+del+av+Bro-+og+tunnelselskapet+AS%29%2C+p%C3%A5lydende+320+kroner.+20+kroner+for+bompassering%2C+og+300+i+%26%238220%3Btilleggsavgift%26%238221%3B+%28les%3A...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>A couple of new Android apps</title>
		<link>http://www.kind-kristiansen.no/2011/a-couple-of-new-android-apps/</link>
		<comments>http://www.kind-kristiansen.no/2011/a-couple-of-new-android-apps/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 19:13:19 +0000</pubDate>
		<dc:creator>Roger Kind Kristiansen</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.kind-kristiansen.no/?p=330</guid>
		<description><![CDATA[Over the last couple of weeks, I&#8217;ve created a couple of small apps for fun, to scratch my own itch, and to experiment a little with Android Market. Check them out: Headphone Action Small utility for starting an app of your choice whenever your headphones are plugged into your device. My first paid app, to &#8230; </p><p><a class="more-link block-button" href="http://www.kind-kristiansen.no/2011/a-couple-of-new-android-apps/">Continue reading &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>Over the last couple of weeks, I&#8217;ve created a couple of small apps for fun, to scratch my own itch, and to experiment a little with Android Market. Check them out:</p>
<h2>Headphone Action</h2>
<p>Small utility for starting an app of your choice whenever your headphones are plugged into your device. My first paid app, to see how that all works. Market has a cap on how low you can set the price, so it&#8217;s priced about the minimum price for all countries (rounded off a bit where possible). <a href="http://market.android.com/details?id=no.rkkc.headphoneaction2">Go to Headphone Action on Android Market</a></p>
<h2>Næringsinnhold</h2>
<p>Norwegian-only app, with nutritional info for over 1000 common Norwegian food items and drinks. It&#8217;s a free app, and the first I&#8217;ve made with ads (by AdMob), to check out how that works. Let&#8217;s just say I&#8217;m not browsing the yellow pages for Ferrari dealerships just yet. I&#8217;ve tried to keep the ads non-intrusive in coloring and in the categories of ads that are displayed, which results in ads only showing about 1/3 of the time. This bit is up for a bit of experimentation. <a href="https://market.android.com/details?id=no.rkkc.naeringsinnhold">Go to Næringsinnhold on Android Market.</a></p>
<p>Now.. what to make next?</p>
 <p><a href="http://www.kind-kristiansen.no/?flattrss_redirect&amp;id=330&amp;md5=ecee6ccfcc3438f30273922a517682c7" title="Flattr" target="_blank"><img src="http://www.kind-kristiansen.no/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.kind-kristiansen.no/2011/a-couple-of-new-android-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=rogerkk&amp;popout=1&amp;url=http%3A%2F%2Fwww.kind-kristiansen.no%2F2011%2Fa-couple-of-new-android-apps%2F&amp;language=no_NO&amp;category=text&amp;title=A+couple+of+new+Android+apps&amp;description=Over+the+last+couple+of+weeks%2C+I%26%238217%3Bve+created+a+couple+of+small+apps+for+fun%2C+to+scratch+my+own+itch%2C+and+to+experiment+a+little+with+Android+Market.+Check+them...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Android: Handling longpress/longclick on map (revisited)</title>
		<link>http://www.kind-kristiansen.no/2011/android-handling-longpresslongclick-on-map-revisited/</link>
		<comments>http://www.kind-kristiansen.no/2011/android-handling-longpresslongclick-on-map-revisited/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 07:37:27 +0000</pubDate>
		<dc:creator>Roger Kind Kristiansen</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.kind-kristiansen.no/?p=255</guid>
		<description><![CDATA[I&#8217;ve prevously written about my attempts to capture longpress/longclick on a map (see this post). As I wrote in that post: &#8220;While working on my MapActivity based Android app, I wanted to be able to show a context menu when the user longpressed any point on the map (not necessarily a marker in an overlay) &#8230; </p><p><a class="more-link block-button" href="http://www.kind-kristiansen.no/2011/android-handling-longpresslongclick-on-map-revisited/">Continue reading &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve prevously written about my attempts to capture longpress/longclick on a map (see <a href="http://www.kind-kristiansen.no/2010/handling-longpresslongclick-in-mapactivity/">this</a> post). As I wrote in that post:</p>
<p>&#8220;While working on my MapActivity based Android app, I wanted to be able to show a context menu when the user longpressed any point on the map (not necessarily a marker in an overlay) and perform some action related to that point. I wrongly assumed that there would be some simple method to override for this, like onLongPress(). &#8221;</p>
<p>The solution I outlined in the previous post never did feel quite right. It was a bit of a mess and it could be difficult to follow what was really happening. I recently improved this design in an app of mine, and here&#8217;s the lowdown:</p>
<p>The main steps are as follows:</p>
<ul>
<li>Subclass <code>MapView</code> and define the <code>OnLongpressListener</code>.</li>
<li>In your layout file, set up the new <code>MapView</code> subclass.</li>
<li>Define an instance of your new <code>OnLongpressListener</code> in your <code>MapActivity</code>.</li>
</ul>
<p>The first point is the most important, this is the core of the solution:  Subclassing <code>MapView</code> and adding our custom <code>OnLongpressListener</code>. I hope the code comments make it clear enough what is going on:</p>
<pre class="brush: java; title: ; notranslate">
public class MyCustomMapView extends MapView {
        
        // Define the interface we will interact with from our Map
	public interface OnLongpressListener {
	    public void onLongpress(MapView view, GeoPoint longpressLocation);
	}
	
	/**
	 * Time in ms before the OnLongpressListener is triggered.
	 */
	static final int LONGPRESS_THRESHOLD = 500;
	
	/**
	 * Keep a record of the center of the map, to know if the map
	 * has been panned. 
	 */
	private GeoPoint lastMapCenter;
	
	private Timer longpressTimer = new Timer();
	private MyCustomMapView.OnLongpressListener longpressListener;

	
	public MyCustomMapView(Context context, String apiKey) {
	    super(context, apiKey);
	}

	public MyCustomMapView(Context context, AttributeSet attrs) {
	    super(context, attrs);
	}

	public MyCustomMapView(Context context, AttributeSet attrs, int defStyle) {
	    super(context, attrs, defStyle);
	}

	public void setOnLongpressListener(MyCustomMapView.OnLongpressListener listener) {
		longpressListener = listener;
	}

	/**
	 * This method is called every time user touches the map,
	 * drags a finger on the map, or removes finger from the map.
	 */
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		handleLongpress(event);
		
		return super.onTouchEvent(event);
	}

	/**
	 * This method takes MotionEvents and decides whether or not
	 * a longpress has been detected. This is the meat of the
	 * OnLongpressListener.
	 * 
	 * The Timer class executes a TimerTask after a given time,
	 * and we start the timer when a finger touches the screen.
	 * 
	 * We then listen for map movements or the finger being
	 * removed from the screen. If any of these events occur
	 * before the TimerTask is executed, it gets cancelled. Else
	 * the listener is fired.
	 *  
	 * @param event
	 */
	private void handleLongpress(final MotionEvent event) {
		
		if (event.getAction() == MotionEvent.ACTION_DOWN) {
			// Finger has touched screen.
			longpressTimer = new Timer();
			longpressTimer.schedule(new TimerTask() {
				@Override
				public void run() {
					GeoPoint longpressLocation = getProjection().fromPixels((int)event.getX(), 
							(int)event.getY());
					
					/*
					 * Fire the listener. We pass the map location
					 * of the longpress as well, in case it is needed
					 * by the caller.
					 */
					longpressListener.onLongpress(MyCustomMapView.this, longpressLocation);
				}
				
			}, LONGPRESS_THRESHOLD);
			
			lastMapCenter = getMapCenter();
		}
		
		if (event.getAction() == MotionEvent.ACTION_MOVE) {
				
			if (!getMapCenter().equals(lastMapCenter)) {
				// User is panning the map, this is no longpress
				longpressTimer.cancel();
			}
			
			lastMapCenter = getMapCenter();
		}
		
		if (event.getAction() == MotionEvent.ACTION_UP) {
			// User has removed finger from map.
			longpressTimer.cancel();
		}

	        if (event.getPointerCount() &gt; 1) {
                        // This is a multitouch event, probably zooming.
	        	longpressTimer.cancel();
	        }
	}
}
</pre>
<p>The layout file will look somewhat like the following:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
	android:layout_width=&quot;fill_parent&quot;
	android:layout_height=&quot;fill_parent&quot;&gt;
	&lt;com.example.MyCustomMapView android:id=&quot;@+id/mapview&quot;
		android:layout_width=&quot;fill_parent&quot;
		android:layout_height=&quot;fill_parent&quot;
		android:apiKey=&quot;&lt;YOUR API KEY HERE&gt;&quot;
		android:clickable=&quot;true&quot;/&gt;
&lt;/RelativeLayout&gt;
</pre>
<p>Make note of the <code>android:clickable</code> attribute. As you might know, this must be set to be able to pan, zoom or in other ways interact with your map.</p>
<p>The final piece is adding your onLongpressListener in your <code>MapActivity</code>. For the sake of the example, let&#8217;s say the previous layout file is named <em>res/layout/map.xml</em>. The necessary code for your <code>MapActivity</code> will look something like this (I only include the parts relevant for this example:</p>
<pre class="brush: java; title: ; notranslate">
public class Map extends MapActivity {
    private MyCustomMapView mapView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.map);
        mapView = (MyCustomMapView)findViewById(R.id.mapview);

        mapView.setOnLongpressListener(new MyCustomMapView.OnLongpressListener() {
	    public void onLongpress(final MapView view, final GeoPoint longpressLocation) {
	        runOnUiThread(new Runnable() {
		    public void run() {
		        // Insert your longpress action here
		    }
		});
	    }
	});
}
</pre>
<p>To actually have your longpress open up a context menu, you need to perform some additional setup of the context menu itself. I&#8217;ve avoided including this, to make the example clearer. Any tutorial on setting up context menus should be able to guide you in the right direction.</p>
<p>If something is unclear in the examples, or you have trouble getting stuff working, just add a comment and I&#8217;ll try to help you out.</p>
 <p><a href="http://www.kind-kristiansen.no/?flattrss_redirect&amp;id=255&amp;md5=72d5d592406f1429986f60c7af8100c6" title="Flattr" target="_blank"><img src="http://www.kind-kristiansen.no/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.kind-kristiansen.no/2011/android-handling-longpresslongclick-on-map-revisited/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=rogerkk&amp;popout=1&amp;url=http%3A%2F%2Fwww.kind-kristiansen.no%2F2011%2Fandroid-handling-longpresslongclick-on-map-revisited%2F&amp;language=no_NO&amp;category=text&amp;title=Android%3A+Handling+longpress%2Flongclick+on+map+%28revisited%29&amp;description=I%26%238217%3Bve+prevously+written+about+my+attempts+to+capture+longpress%2Flongclick+on+a+map+%28see+this+post%29.+As+I+wrote+in+that+post%3A+%26%238220%3BWhile+working+on+my+MapActivity+based+Android+app%2C+I...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Android: Adding desktop shortcut support to your app</title>
		<link>http://www.kind-kristiansen.no/2010/android-adding-desktop-shortcut-support-to-your-app/</link>
		<comments>http://www.kind-kristiansen.no/2010/android-adding-desktop-shortcut-support-to-your-app/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 09:00:13 +0000</pubDate>
		<dc:creator>Roger Kind Kristiansen</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.kind-kristiansen.no/?p=192</guid>
		<description><![CDATA[So you have an app with quite a bit of functionality, but you would like to offer your users some way of performing often used actions or go directly to an often used activity besides the one triggered by your apps launcher. Android offers desktop shortcuts (if you don&#8217;t know about them, try long-pressing your &#8230; </p><p><a class="more-link block-button" href="http://www.kind-kristiansen.no/2010/android-adding-desktop-shortcut-support-to-your-app/">Continue reading &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>So you have an app with quite a bit of functionality, but you would like to offer your users some way of performing often used actions or go directly to an often used activity besides the one triggered by your apps launcher. Android offers desktop shortcuts (if you don&#8217;t know about them, try long-pressing your Android desktop) for this situation, but how do you actually implement support for this in your app?</p>
<p>I was not able to find any straight forward documentation or how-to on this subject, so hopefully this writeup will be helpful to someone.</p>
<p>The short story is that you need a specially crafted activity which must:</p>
<ul>
<li>Be defined in your AndroidManifest.xml with an intent filter with the action android.intent.action.CREATE_SHORTCUT.
 </li>
<li>Return a result, an Intent, containing your actual shortcut. The shortcut itself is represented by another Intent.
</li>
</ul>
<p>So let&#8217;s take this step by step:</p>
<h3>1. Creating the activity</h3>
<p>Nothing special here. When adding your shortcut from your Android desktop this Activity will get started and act as any other Activity. Just create the activity and override onCreate(). </p>
<h3>2. Configuring the manifest</h3>
<p>Add your activity like any other, to the &lt;application&gt; section. Add the following intent filter inside the definition of that activity:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;code&gt;
            &lt;intent -filter&gt;
                &lt;action android:name=&quot;android.intent.action.CREATE_SHORTCUT&quot;/&gt;
                &lt;category android:name=&quot;android.intent.category.DEFAULT&quot;/&gt;
            &lt;/intent&gt;
&lt;/code&gt;
</pre>
<p>Already you should be able to see your activity show up among the other shortcuts if you longpress your Android desktop and select &#8220;Shortcuts&#8221; from the menu that pops up.</p>
<h3>3. Implement your shortcut activity&#8217;s onCreate() to return the shortcut.</h3>
<p>This activity can do pretty much anything you want. You can for example have it pop up a list of actions to choose from. I&#8217;ll explain the simplest possible version here, for clarity.</p>
<p>The trick here is that you should use the result of your activity to return the shortcut you wish to add to the users Android desktop. The result is set using setResult() (see Activity API docs for details), which returns an Intent. The Intent should containt the following:</p>
<ul>
<li>Another intent, which is the actual shortcut itself. This intent will be triggered when the user presses your shortcut icon.</li>
<li>The actual name of your shortcut, as you want it displayed on the users desktop</li>
<li>An icon resource to be displayed on the desktop.
</li>
</ul>
<p>The Activity will then look somewhat like this:</p>
<pre class="brush: java; title: ; notranslate">
public class ShortcutActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// The meat of our shortcut
		Intent shortcutIntent = new Intent(&quot;com.test.yourapp.SOME_INTENT&quot;);
		ShorthcutIconResource iconResource = Intent.ShortcutIconResource.fromContext(this, R.drawable.launcher_icon);
        
        // The result we are passing back from this activity
        Intent intent = new Intent();
        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, &quot;Shortcut Test&quot;);
        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
        setResult(RESULT_OK, intent);
        
        finish(); // Must call finish for result to be returned immediately
	}

}
</pre>
<p>And that&#8217;s it. If you followed these steps you should now have a fully functional Android desktop shortcut.</p>
 <p><a href="http://www.kind-kristiansen.no/?flattrss_redirect&amp;id=192&amp;md5=dd87b59ec8a7fbef30e92fb8ceb218f0" title="Flattr" target="_blank"><img src="http://www.kind-kristiansen.no/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.kind-kristiansen.no/2010/android-adding-desktop-shortcut-support-to-your-app/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=rogerkk&amp;popout=1&amp;url=http%3A%2F%2Fwww.kind-kristiansen.no%2F2010%2Fandroid-adding-desktop-shortcut-support-to-your-app%2F&amp;language=en_GB&amp;category=text&amp;title=Android%3A+Adding+desktop+shortcut+support+to+your+app&amp;description=So+you+have+an+app+with+quite+a+bit+of+functionality%2C+but+you+would+like+to+offer+your+users+some+way+of+performing+often+used+actions+or+go+directly+to...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Favoritt-apps til Android</title>
		<link>http://www.kind-kristiansen.no/2010/favoritt-apps-til-android/</link>
		<comments>http://www.kind-kristiansen.no/2010/favoritt-apps-til-android/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 20:12:09 +0000</pubDate>
		<dc:creator>Roger Kind Kristiansen</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.kind-kristiansen.no/?p=150</guid>
		<description><![CDATA[En liten oppsummering av mine mest brukte Android-apps. Jeg vil oppdatere denne artikkelen etterhvert. Locale Dette er for meg en av de virkelige killer-appene til Android. Dette er det gamle profil-systemet du er vant til fra andre telefoner, på steroider; Du kan få telefonen til å reagere på situasjoner som endringer i batteristatus, hvem som &#8230; </p><p><a class="more-link block-button" href="http://www.kind-kristiansen.no/2010/favoritt-apps-til-android/">Continue reading &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>En liten oppsummering av mine mest brukte Android-apps. Jeg vil oppdatere denne artikkelen etterhvert.</p>
<h2>Locale</h2>
<p>Dette er for meg en av de virkelige killer-appene til Android. Dette er det gamle profil-systemet du er vant til fra andre telefoner, på steroider; Du kan få telefonen til å reagere på situasjoner som endringer i batteristatus, hvem som ringer deg, telefonorientering, tidspunkt og lokasjon(!). Min telefon er satt opp til å automatisk gjøre ting som:</p>
<ul>
<li>Skru på WiFi og bluetooth når jeg spaserer inn på jobben om morgenen, i tillegg til å skru volumet helt ned for ikke å irritere kolleger med ringing fra innkommende samtaler. Lysstyrken på skjermen skrus også helt ned for å spare batteri. Displayet synes helt fint innendørs uansett.</li>
<li>Skru volumet helt ned når jeg befinner meg på en av de lokale kinoene, kontorer der jeg regelmessig deltar i møter, og andre steder der en ringende telefon vil være irriterende eller pinlig.</li>
<li>Skru av volum og vibrasjon dersom 1) det er en ukedag, 2) telefonen er koblet til laderen og 3) klokken er mellom 23 og 7.30. Hva kan jeg si, jeg verdsetter nattesøvnen. :)</li>
<li>Ved hjelp av huskeliste-appen <a href="http://weloveastrid.com">Astrid</a> og Astrid&#8217;s Locale plug-in kan jeg få en varsling med oppgaver med en spesifikk tagg når jeg befinner meg i nærheten av en lokasjon &#8211; som f.eks Ikea eller Clas Ohlson.
</li>
</ul>
<p><a href="http://www.twofortyfouram.com">Locale</a> er stivt priset, med en prislapp på $10.99, men for meg var det verdt det.</p>
<p>Mer info <a href="https://market.android.com/details?id=com.twofortyfouram.locale">her</a>.</p>
<h2>1881 Mobilsøk</h2>
<p>For meg er det beste med denne appen at den viser hvem som ringer når du ikke har nummeret i kontaktlisten. Den kan også benyttes for manuelle oppslag i 1881. Appen ser dog ut til å ha en del utfordringer med stabiliteten om dagen. Mer <a href="https://market.android.com/details?id=com.ms1881">her</a>. Gule Sider har en tilsvarende app, men denne ble etterhvert så full av bugs og (for meg) lite nyttig funksjonalitet.</p>
<h2>Waze</h2>
<p>Et alternativ til navigering i Google Maps. Den har en sosial del som bla. lar deg dele trafikkstatus med andre brukere. Mer <a href="https://market.android.com/details?id=com.waze">her</a>.</p>
<h2>Trafikanten</h2>
<p>Bor du i Oslo og kjører kollektivt er dette en må-ha. Mer <a href="https://market.android.com/details?id=com.neuron.trafikanten">her</a>.</p>
<h2>My Tracks</h2>
<p>Registrerer treningsdata ved hjelp av GPS-en og lar deg dele dataene med andre via Google Docs. Mer <a href="https://market.android.com/details?id=com.google.android.maps.mytracks">her</a>.</p>
<h2>NetCounter</h2>
<p>Holder styr på hvor mye datatrafikk telefonen din forbruker, og kan gi advarsler om du nærmer deg grenser du har konfigurert inn. Kjekt for oss som ikke har en mobilplan med ubegrenset mobiltrafikk. <a href="https://market.android.com/details?id=net.jaqpot.netcounter">her</a>.</p>
<h2>Spotify</h2>
<p>Trenger jeg si mer? Mer <a href="https://market.android.com/details?id=com.spotify.mobile.android.ui">her</a>.</p>
<h2>Thinking Space</h2>
<p>Super mind mapping-app. Mer <a href="https://market.android.com/details?id=net.thinkingspace">her</a> .</p>
<h2>Remember The Milk</h2>
<p>Huskelisteapplikasjon som fungerer suverent for GTD. Krever dog at du er betalende kunde. Mer <a href="https://market.android.com/details?id=com.rememberthemilk.MobileRTM">her</a>.</p>
<h2>SqueezeControl</h2>
<p>Med denne kan man benytte telefonen som kontroller for <a href="http://www.logitech.com/no-no/speakers-audio/wireless-music-systems">Logitechs SqueezeBox-serie</a>. Mer <a href="https://market.android.com/details?id=com.squeezecontrol">her</a>.</p>
<h2>Chrome to Phone</h2>
<p>Lar deg enkelt sende lenker, kart, tekst og telefonnummer direkte fra PC til telefonen. Plugins som benytter denne appen finnes til både Chrome og Firefox. Mer <a href="https://market.android.com/details?id=com.google.android.apps.chrometophone">her</a>. </p>
<h2>ACast</h2>
<p>Podcast-avspiller og RSS-leser. Mer <a href="https://market.android.com/details?id=com.mathias.android.acast">her</a>.</p>
<hr />
<h1>Advarsel: Skamløs egenreklame!</h1>
<p>Putter disse i en egen seksjon, da de ikke bare er nyttige, men laget av meg.</p>
<h3>Bysyklist Oslo</h3>
<p>Finner ledige låser eller bysykler i Oslo. Dette er faktisk en av appene jeg har aller mest nytte av gjennom sommerhalvåret. Mer <a href="https://market.android.com/details?id=no.rkkc.bysykkel">her</a>.</p>
<h3>Næringsinnhold</h3>
<p>Lar deg raskt slå opp næringsinnholdet i over 1000 matvarer. Mer <a href="https://market.android.com/details?id=no.rkkc.naeringsinnhold">her</a></p>
<h3>Headphone Action</h3>
<p>Starter en valgfri app (f.eks Spotify?) når du plugger i hodetelefonene. Mer <a href="https://market.android.com/details?id=no.rkkc.headphoneaction2">her</a></p>
 <p><a href="http://www.kind-kristiansen.no/?flattrss_redirect&amp;id=150&amp;md5=334f8a70ef3906f65aba17182ac87e85" title="Flattr" target="_blank"><img src="http://www.kind-kristiansen.no/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.kind-kristiansen.no/2010/favoritt-apps-til-android/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=rogerkk&amp;popout=1&amp;url=http%3A%2F%2Fwww.kind-kristiansen.no%2F2010%2Ffavoritt-apps-til-android%2F&amp;language=no_NO&amp;category=text&amp;title=Favoritt-apps+til+Android&amp;description=En+liten+oppsummering+av+mine+mest+brukte+Android-apps.+Jeg+vil+oppdatere+denne+artikkelen+etterhvert.+Locale+Dette+er+for+meg+en+av+de+virkelige+killer-appene+til+Android.+Dette+er+det+gamle...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Android: Map tiles not loading &#8211; and possible fixes</title>
		<link>http://www.kind-kristiansen.no/2010/android-map-tiles-not-loading-and-possible-fixes/</link>
		<comments>http://www.kind-kristiansen.no/2010/android-map-tiles-not-loading-and-possible-fixes/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 10:12:25 +0000</pubDate>
		<dc:creator>Roger Kind Kristiansen</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.kind-kristiansen.no/?p=142</guid>
		<description><![CDATA[I have encountered two reasons for the Google Maps tiles not loading. One is rather common, and the other one only seem to affect some phones. Read on for the details.]]></description>
				<content:encoded><![CDATA[<p>I have encountered two reasons for the Google Maps tiles not loading. One is rather common, and the other one only seem to affect some phones:</p>
<ul>
<li> Missing/wrong Google Maps API key </li>
<li> Permissions placed after application tag in the AndroidManifest.xml</li>
</ul>
<h2>Missing/wrong Google Maps API key</h2>
<p>Usage of the Google Maps API key is properly documented many places, like in <a href="http://mobiforge.com/developing/story/using-google-maps-android">tutorials</a>, <a href="http://developer.android.com/guide/topics/location/index.html">the official Android developer site</a> and <a href="http://code.google.com/intl/no/android/add-ons/google-apis/maps-overview.html">the Google API project pages</a>.</p>
<h2>Wrong placement of permissions in the AndroidManifest.xml</h2>
<p>The part about wrong placement of the permissions in the manifest file bit me when trying to get my map based app working on the Sony Ericsson Xperia X10 mini pro. The app was working like a charm in every configuration I tried, except on this little beauty. The configurations I tried included:</p>
<ul>
<li> HTC Desire running 2.1</li>
<li>T-Mobile G1 running 1.6</li>
<li> Various emulators running 1.5, 1.6, 2.1 and 2.2 with various screen sizes. Also one that matched the x10 mini pro screen size.</li>
<li> Of course the X10 mini pro running 1.6</li>
</ul>
<p>I had defined my permissions below the application definition, and after a while I moved the  tags above the  tag, and this fixed it. </p>
<p>So this is not OK on the X10 mini pro (AndroidManifest.xml):</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
      package=&quot;com.test.myapp&quot; android:versionCode=&quot;1&quot; android:versionName=&quot;1.0&quot;&gt;
    &lt;application android:label=&quot;@string/app_name&quot; android:icon=&quot;@drawable/launcher_icon&quot;&gt;
    	&lt;uses-library android:name=&quot;com.google.android.maps&quot; /&gt;
        &lt;activity android:label=&quot;@string/app_name&quot;
                  android:alwaysRetainTaskState=&quot;true&quot; android:name=&quot;.views.Map&quot;&gt;
            &lt;intent-filter&gt;
                &lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;
                &lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&gt;
            &lt;/intent-filter&gt;
        &lt;/activity&gt;
    &lt;/application&gt;

   &lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;&gt;&lt;/uses&gt;      
&lt;/manifest&gt; 
</pre>
<p>While this works:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
      package=&quot;com.test.myapp&quot; android:versionCode=&quot;1&quot; android:versionName=&quot;1.0&quot;&gt;

    &lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;&gt;&lt;/uses&gt;

    &lt;application android:label=&quot;@string/app_name&quot; android:icon=&quot;@drawable/launcher_icon&quot;&gt;
    	&lt;uses-library android:name=&quot;com.google.android.maps&quot; /&gt;
        &lt;activity android:label=&quot;@string/app_name&quot;
                  android:alwaysRetainTaskState=&quot;true&quot; android:name=&quot;.views.Map&quot;&gt;
            &lt;intent-filter&gt;
                &lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;
                &lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&gt;
            &lt;/intent-filter&gt;
        &lt;/activity&gt;
    &lt;/application&gt;
&lt;/manifest&gt; 
</pre>
<p>If someone can tell me why defining permissions below the application tag works on most set-ups, but not on the X10 mini, please enlighten me.</p>
 <p><a href="http://www.kind-kristiansen.no/?flattrss_redirect&amp;id=142&amp;md5=ad5983505a1ff8bf89f6496c772cc61b" title="Flattr" target="_blank"><img src="http://www.kind-kristiansen.no/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.kind-kristiansen.no/2010/android-map-tiles-not-loading-and-possible-fixes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=rogerkk&amp;popout=1&amp;url=http%3A%2F%2Fwww.kind-kristiansen.no%2F2010%2Fandroid-map-tiles-not-loading-and-possible-fixes%2F&amp;language=no_NO&amp;category=text&amp;title=Android%3A+Map+tiles+not+loading+%26%238211%3B+and+possible+fixes&amp;description=I+have+encountered+two+reasons+for+the+Google+Maps+tiles+not+loading.+One+is+rather+common%2C+and+the+other+one+only+seem+to+affect+some+phones%3A+Missing%2Fwrong+Google+Maps+API...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Flattr: Mikrobetaling (mikrodonasjon) for nettinnhold</title>
		<link>http://www.kind-kristiansen.no/2010/flattr-mikrobetaling-mikrodonasjon-for-nettinnhold/</link>
		<comments>http://www.kind-kristiansen.no/2010/flattr-mikrobetaling-mikrodonasjon-for-nettinnhold/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 23:32:45 +0000</pubDate>
		<dc:creator>Roger Kind Kristiansen</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.kind-kristiansen.no/?p=130</guid>
		<description><![CDATA[Flattr er et ferskt system (i beta fra mars 2010) for mikrodonasjoner, som tar sikte på å gjøre det mye enklere å donere småpenger til innholdsprodusenter.]]></description>
				<content:encoded><![CDATA[<p>Flattr er et ferskt system (i beta fra mars 2010) for mikrodonasjoner, som tar sikte på å gjøre det mye enklere å donere småpenger til innholdsprodusenter. Kort fortalt fungerer det slik:</p>
<ol>
<li>Du setter inn en fast sum hver måned</li>
<li>I løpet av måneden klikker du på flattr-knappene til de tingene du mener har gjort seg fortjent til en økonomisk påskjønnelse</li>
<li>Ved månedens utløp blir din sum delt likt mellom alle tingene du har flattret i løpet av måneden</li>
</ol>
<p>Foreløpig bærer Flattr preg av at det fortsatt befinner seg på betastadiet; brukermassen er ikke er all verden og utvalget av ting som kan flattres/blir flattret er deretter. Det bedrer seg dog fortløpende. Er dette måten å tjene penger på nettinhold i fremtiden?</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='620' height='379' src='http://www.youtube.com/embed/9zrMlEEWBgY?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>Flattr er i åpen beta, men er du utålmodig (og tidlig ute med å lese denne posten), kan du forsøke en av disse invitasjonskodene:</p>
<p>288a1a706ac7a139b<br />
0dd1624666273b5c3<br />
66a27863d0a49c785</p>
 <p><a href="http://www.kind-kristiansen.no/?flattrss_redirect&amp;id=130&amp;md5=ca7129dfc54c511603a408e547def331" title="Flattr" target="_blank"><img src="http://www.kind-kristiansen.no/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.kind-kristiansen.no/2010/flattr-mikrobetaling-mikrodonasjon-for-nettinnhold/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=rogerkk&amp;popout=1&amp;url=http%3A%2F%2Fwww.kind-kristiansen.no%2F2010%2Fflattr-mikrobetaling-mikrodonasjon-for-nettinnhold%2F&amp;language=no_NO&amp;category=text&amp;title=Flattr%3A+Mikrobetaling+%28mikrodonasjon%29+for+nettinnhold&amp;description=Flattr+er+et+ferskt+system+%28i+beta+fra+mars+2010%29+for+mikrodonasjoner%2C+som+tar+sikte+p%C3%A5+%C3%A5+gj%C3%B8re+det+mye+enklere+%C3%A5+donere+sm%C3%A5penger+til+innholdsprodusenter.+Kort+fortalt+fungerer+det...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Handling longpress/longclick in MapActivity</title>
		<link>http://www.kind-kristiansen.no/2010/handling-longpresslongclick-in-mapactivity/</link>
		<comments>http://www.kind-kristiansen.no/2010/handling-longpresslongclick-in-mapactivity/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 23:11:53 +0000</pubDate>
		<dc:creator>Roger Kind Kristiansen</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.kind-kristiansen.no/?p=99</guid>
		<description><![CDATA[While working on my MapActivity based Android app, I wanted to be able to show a context menu when the user longpressed any point on the map (not necessarily a marker in an overlay) and perform some action related to that point. I wrongly assumed that there would be some simple method to override for this, like onLongPress(). Therefore I set out to find another solution, and here it is.]]></description>
				<content:encoded><![CDATA[<div style="width: 95%; border-style: solid; border-color: red; padding: 10px;">You might be interested to know that I have written a new post on this same topic, with a solution that is cleaner and works better to boot. You can find it <a href="http://www.kind-kristiansen.no/2011/android-handling-longpresslongclick-on-map-revisited/">here</a>.</div>
<p>While working on my MapActivity based Android app, I wanted to be able to show a context menu when the user longpressed any point on the map (not necessarily a marker in an overlay) and perform some action related to that point. I wrongly assumed that there would be some simple method to override for this, like onLongPress(). Therefore I set out to find another solution, and here it is. It&#8217;s not perfect, but it works really well in my app, and I hope others might find this useful as well.</p>
<h2>Stuff that didn&#8217;t work</h2>
<ul>
<li>Simply overriding onCreateContextMenu() in the MapActivity. This would not yield a context menu upon longpress on the map.</li>
<li>setOnLongClickListener() in the MapView to catch a longpress/longclick, and then manually call MapView.showContextMenu() to display the menu. The listener never caught an event.</li>
</ul>
<p>I also briefly looked at the <a href="http://code.google.com/p/mapview-overlay-manager/">mapview-overlay-manager</a> library, which might work for you.  It will, among many other things, give you an onLongPress() event. I figured this to be overkill for solving my problem.</p>
<h2>My solution</h2>
<p>I ended up overriding MapActivity.dispatchTouchEvent(MotionEvent event), which processes all touch events to the activity. When overriding this method, we need to take care of the following elements to handle longpresses:</p>
<ol>
<li>If the finger has just touched the screen, we start checking how long it is held. We need to do this in a separate thread, or else the UI will lock up. If the checks in the following point do not kick in within a given threshold, we have a longpress and call the desired code, In my case this was to show the context menu.</li>
<li>If some motion event that can not be part of a longpress has been performed, cancel the check in pt.2. These events are:
<ul>
<li>Finger has been removed from screen</li>
<li>Finger has moved more than a given threshold since the<br />
previous event</li>
</ul>
<p>Here is the complete MapActivity, handling all this:</p>
<h2>The code</h2>
<p>Although I admit not being a very experienced Java programmer, this is not my actual implementation, but a simplified example to show which elements needs to be in place for this to work. Horizontal scrollbar at the bottom.</p>
<pre class="brush: java; title: ; notranslate">
import android.os.Bundle;
import android.os.Looper;
import android.view.MotionEvent;

import com.google.android.maps.MapActivity;

public class Map extends MapActivity {
	private boolean isPotentialLongPress;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

	@Override
	public boolean dispatchTouchEvent(MotionEvent event) {
		handleLongPress(event);
		return super.dispatchTouchEvent(event);
	}

	private void handleLongPress(MotionEvent event) {
		if (event.getAction() == MotionEvent.ACTION_DOWN) {
			// A new touch has been detected

			new Thread(new Runnable() {
				public void run() {
					Looper.prepare();
					if (isLongPressDetected()) {
						// We have a longpress! Perform your action here
					}
				}
			}).start();
		} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
			/*
			 * Only MotionEvent.ACTION_MOVE could potentially be regarded as
			 * part of a longpress, as this event is trigged by the finger
			 * moving slightly on the device screen. Any other events causes us
			 * to cancel this events status as a potential longpress.
			 */
			if (event.getHistorySize() &lt; 1)
				return; // First call, no history

			// Get difference in position since previous move event
			float diffX = event.getX()
					- event.getHistoricalX(event.getHistorySize() - 1);
			float diffY = event.getY()
					- event.getHistoricalY(event.getHistorySize() - 1);

			/* If position has moved substatially, this is not a long press but
			   probably a drag action */
			if (Math.abs(diffX) &gt; 0.5f || Math.abs(diffY) &gt; 0.5f) {
				isPotentialLongPress = false;
			}
		} else {
			// This motion is something else, and thus not part of a longpress
			isPotentialLongPress = false;
		}
	}

	/**
	 * Loops for an amount of time while checking if the state of the
	 * isPotentialLongPress variable has changed. If it has, this is regarded as
	 * if the longpress has been canceled. Else it is regarded as a longpress.
	 */
	public boolean isLongPressDetected() {
		isPotentialLongPress = true;
		try {
			for (int i = 0; i &lt; (50); i++) {
				Thread.sleep(10);
				if (!isPotentialLongPress) {
					return false;
				}
			}
			return true;
		} catch (InterruptedException e) {
			return false;
		} finally {
			isPotentialLongPress = false;
		}
	}

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}

}
</pre>
<p>If you have a better way of doing this, I&#8217;d love to hear from you.</li>
</ol>
 <p><a href="http://www.kind-kristiansen.no/?flattrss_redirect&amp;id=99&amp;md5=b97706cb791ece3413be15b5135e4e78" title="Flattr" target="_blank"><img src="http://www.kind-kristiansen.no/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.kind-kristiansen.no/2010/handling-longpresslongclick-in-mapactivity/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=rogerkk&amp;popout=1&amp;url=http%3A%2F%2Fwww.kind-kristiansen.no%2F2010%2Fhandling-longpresslongclick-in-mapactivity%2F&amp;language=en_GB&amp;category=text&amp;title=Handling+longpress%2Flongclick+in+MapActivity&amp;description=You+might+be+interested+to+know+that+I+have+written+a+new+post+on+this+same+topic%2C+with+a+solution+that+is+cleaner+and+works+better+to+boot.+You+can...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Bysyklist Oslo &#8211; en bysykkel-app for Android</title>
		<link>http://www.kind-kristiansen.no/2010/bysykkel-app-for-android/</link>
		<comments>http://www.kind-kristiansen.no/2010/bysykkel-app-for-android/#comments</comments>
		<pubDate>Sat, 15 May 2010 23:31:51 +0000</pubDate>
		<dc:creator>Roger Kind Kristiansen</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[bysykkel]]></category>
		<category><![CDATA[clearchannel]]></category>
		<category><![CDATA[oslo]]></category>

		<guid isPermaLink="false">http://www.kind-kristiansen.no/?p=29</guid>
		<description><![CDATA[I frustrasjon over å ofte bruke mer tid på å finne parkering til bysykkelen enn jeg brukte på å faktisk komme meg fra A til B, utviklet jeg i fjor en bysykkel-app for Android-baserte telefoner. I år har jeg pusset litt på denne og lagt den ut på Android Market.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.kind-kristiansen.no/wp-content/uploads/2010/05/launcher_icon.png"><img class="size-full wp-image-56 alignright" title="Ikon av Alexey Novoselov" src="http://www.kind-kristiansen.no/wp-content/uploads/2010/05/launcher_icon.png" alt="" width="72" height="72" /></a>I frustrasjon over å ofte bruke mer tid på å finne parkering til bysykkelen enn jeg brukte på å faktisk komme meg fra A til B, utviklet jeg i fjor en bysykkel-app for Android-baserte telefoner. I år har jeg pusset litt på denne og lagt den ut på Android Market i håp om at den kan være til nytte for andre enn meg. Appen heter &#8220;<a title="Bysyklist Oslo på Android Market" href="http://market.android.com/details?id=no.rkkc.bysykkel">Bysyklist Oslo</a>&#8220;.</p>
<h3>Fri programvare</h3>
<p>Koden er frigitt under GPL-lisens, og befinner seg på <a href="http://gitorious.org/bysyklist">Gitorious</a>.</p>
 <p><a href="http://www.kind-kristiansen.no/?flattrss_redirect&amp;id=29&amp;md5=d5340fdd363f6c4582257cfe0994affa" title="Flattr" target="_blank"><img src="http://www.kind-kristiansen.no/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.kind-kristiansen.no/2010/bysykkel-app-for-android/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=rogerkk&amp;popout=1&amp;url=http%3A%2F%2Fwww.kind-kristiansen.no%2F2010%2Fbysykkel-app-for-android%2F&amp;language=no_NO&amp;category=software&amp;title=Bysyklist+Oslo+%26%238211%3B+en+bysykkel-app+for+Android&amp;description=I+frustrasjon+over+%C3%A5+ofte+bruke+mer+tid+p%C3%A5+%C3%A5+finne+parkering+til+bysykkelen+enn+jeg+brukte+p%C3%A5+%C3%A5+faktisk+komme+meg+fra+A+til+B%2C+utviklet+jeg+i+fjor...&amp;tags=Android%2Cbysykkel%2Cclearchannel%2Coslo%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>
