<?xml version="1.0" encoding="UTF-8" ?>
<feed xml:lang="ja" xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0">
  <title type="text">androidsdk</title>
  <subtitle type="html">AndroidSDK</subtitle>
  <link rel="self" type="application/atom+xml" href="http://androidsdk.blog.shinobi.jp/atom"/>
  <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/"/>
  <updated>2007-11-13T21:25:10+09:00</updated>
  <author><name>No Name Ninja</name></author>
  <generator uri="//www.ninja.co.jp/blog/" version="0.9">忍者ブログ</generator>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
  <entry>
    <id>androidsdk.blog.shinobi.jp://entry/11</id>
    <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/android%20%E3%83%81%E3%83%A3%E3%83%AC%E3%83%B3%E3%82%B8%E3%80%80%E5%BF%9C%E5%8B%9F%E5%8F%97%E4%BB%98%E9%96%8B%E5%A7%8B%E3%81%A0%E3%83%BC" />
    <published>2008-01-08T22:04:37+09:00</published> 
    <updated>2008-01-08T22:04:37+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>Android チャレンジ　応募受付開始だー</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[総額１１億円。Google主催のプログラミングコンテスト。なにしろ夢があるじゃございませんか。<br />
参加方法は簡単<br />
１）Android SDKをダウンロード<br />
２）プログラムを作る<br />
３）http://code.google.com/android/adc-submit/index.html#individual[ここ]にアップロード<br />
これはもうやるしかない。<br />
http://googlejapan.blogspot.com/2007/11/android-android.html[日本語での解説]<br />
<br />
]]> 
    </content>
    <author>
            <name>No Name Ninja</name>
        </author>
  </entry>
  <entry>
    <id>androidsdk.blog.shinobi.jp://entry/10</id>
    <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/zaurus%E3%81%A7android_10" />
    <published>2007-12-07T23:54:00+09:00</published> 
    <updated>2007-12-07T23:54:00+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>ZaurusでAndroid</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[の続報っつーか、成功した人が出たようです。<br />
<a href="http://euedge.com/blog/2007/12/06/google-android-runs-on-sharp-zaurus-sl-c760/" target="_blank">http://euedge.com/blog/2007/12/06/google-android-runs-on-sharp-zaurus-sl-c760/</a><br />
]]> 
    </content>
    <author>
            <name>No Name Ninja</name>
        </author>
  </entry>
  <entry>
    <id>androidsdk.blog.shinobi.jp://entry/9</id>
    <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/zaurus%E3%81%A7android" />
    <published>2007-12-01T03:23:13+09:00</published> 
    <updated>2007-12-01T03:23:13+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>ZaurusでAndroid</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[ていう記事が載っていたのでのせておく。<br />
<br />
<a href="http://groups.google.com/group/android-developers/browse_thread/thread/277a73b32a02f26a/fb28a6ec007c52c4?lnk=gst&q=zaurus#fb28a6ec007c52c4" target="_blank">http://groups.google.com/group/android-developers/browse_thread/thread/277a73b32a02f26a/fb28a6ec007c52c4?lnk=gst&q=zaurus#fb28a6ec007c52c4</a>]]> 
    </content>
    <author>
            <name>No Name Ninja</name>
        </author>
  </entry>
  <entry>
    <id>androidsdk.blog.shinobi.jp://entry/8</id>
    <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/cannot%20create%20mapview" />
    <published>2007-11-23T18:21:14+09:00</published> 
    <updated>2007-11-23T18:21:14+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>Cannot create MapView</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<a href="http://groups.google.com/group/android-developers/browse_thread/thread/9b39b3e1fea12ef1/686f49edbc6e693a?lnk=raot" target="_blank">こちら</a><br />
<br />
AndroidにはxmlからUIを作る昨日がついているがMapViewを普通に設定するとだめで、Viewのカスタムコンポーネントとして設定してやらないとダメらしい。<br />
<br />
aaptがコンパイルするそうだが、詳細がわからん。まともなヘルプといえばaapt自体のヘルプくらいか<br />
<pre><br />
Android Asset Packaging Tool<br />
<br />
Usage:<br />
 aapt l[ist] [-v] file.{zip,jar,apk}<br />
   List contents of Zip-compatible archive.<br />
<br />
 aapt p[ackage] [-c][-f][-g][-s][-u][-m][-v][-x][-M AndroidManifest.xml] \<br />
        [-l locale1[,locale2,...]] [-d device1[,device2,...]] \<br />
        [-I base-package [-I base-package ...]] \<br />
        [-A asset-source-dir] [-P public-definitions-file] \<br />
        [-S resource-source-dir] \<br />
        file.{zip,jar,apk} [raw-files-dir [raw-files-dir] ...]<br />
        <br />
   Create or update the named Zip-compatible archive.  All files in raw-files-dir<br />
   will be added to the archive, as will selected directories in asset-root-dir<br />
   (which should contain a 'default' directory and some locale-specific<br />
   directories).  The named locales and vendors will be added, all others<br />
   will be excluded.<br />
<br />
 aapt c[ompile] [-m][-v][-x] [-M AndroidManifest.xml] [-J R-file-dir] \<br />
        [-A asset-source-dir] [-S resource-source-dir] \<br />
        [-I base-package [-I base-package ...]] \<br />
        [-P public-definitions-file] [-R resource-intermediates-dir] \<br />
        [raw-files-dir [raw-files-dir] ...]<br />
        <br />
   Compile binary resources from assets.  Scans through asset-root-dir<br />
   for all sources that need to be compiled to binary assets.<br />
   If the -J option is specified, the "R.java" files will be generated<br />
   in the indicated directory.  A class "R" will be generated in the<br />
   package specified by AndroidManifest.xml.<br />
<br />
 aapt d[elete] [-v] file.{zip,jar,apk} file1 [file2 ...]<br />
   Delete specified files from Zip-compatible archive.<br />
<br />
 aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]<br />
   Add specified files to Zip-compatible archive.<br />
<br />
 aapt v[ersion]<br />
   Print program version.<br />
<br />
 Modifiers:<br />
   -d  one or more device assets to include, separated by commas<br />
   -c  compile resources from assets<br />
   -f  force overwrite of existing files<br />
   -g  only write generated assets; do not package source assets<br />
   -j  specify a jar or zip file containing classes to include<br />
   -l  one or more locale assets to include, separated by commas<br />
   -m  make package directories under location specified by -J<br />
   -s  sync existing packages (update + remove deleted files)<br />
   -u  update existing packages (add new, replace older)<br />
   -v  verbose output<br />
   -x  create extending (non-application) resource IDs<br />
   -z  require localization of resource attributes marked with localization="suggested"<br />
   -A  additional directory in which to find raw asset files<br />
   -I  add an existing package to base include set<br />
   -J  specify where to output R.java resource constant definitions<br />
   -M  specify full path to AndroidManifest.xml to include in zip<br />
   -P  specify where to output public resource definitions<br />
   -R  specify directory containing generated resource files (in or output)<br />
   -S  additional directory in which to find resource source assets<br />
   -0  don't compress files we're adding<br />
</pre>]]> 
    </content>
    <author>
            <name>No Name Ninja</name>
        </author>
  </entry>
  <entry>
    <id>androidsdk.blog.shinobi.jp://entry/7</id>
    <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/android%20sdk%20doja%E3%81%8B%E3%82%89%E3%81%AE%E7%A7%BB%E6%A4%8D%E6%96%B9%E9%87%9D" />
    <published>2007-11-20T00:35:37+09:00</published> 
    <updated>2007-11-20T00:35:37+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>Android SDK DoJaからの移植方針</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[まだ暫定的なものだが<br />
IApplication = Activity <br />
Canvas/Panel = View <br />
Graphics = Canvas <br />
image = bitmap <br />
って感じだろうか。<br />
Graphics.カラー変換関係はColorで転用できそうだ。<br />
<br />
ごちょごちょやりつつただいまTetrisをAndroid化中]]> 
    </content>
    <author>
            <name>No Name Ninja</name>
        </author>
  </entry>
  <entry>
    <id>androidsdk.blog.shinobi.jp://entry/6</id>
    <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/android%20sdk%20%20-only%20the%20original%20thread%20that%20created%20a%20view%20hierarchy%20can%20touch%20its%20views-" />
    <published>2007-11-20T00:19:56+09:00</published> 
    <updated>2007-11-20T00:19:56+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>Android SDK  &quot;Only the original thread that created a view hierarchy can touch its views&quot;</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[　DoJaなんかだとCanvasとかIApplicationをRunnableにしてメインループをそこにおいて描画なんてのをやるんだけど、IApplication=Activity Canvas=Viewで同じことやろうとすると上のメッセージがでる。どうもこういうことらしい<br />
<br />
http://code.google.com/android/reference/android/view/View.html<br />
<br />
The basic cycle of a view is as follows:<br />
An event comes in and is dispatched to the appropriate view. The view handles the event and notifies any listeners.<br />
If in the course of processing the event, the view's bounds may need to be changed, the view will call requestLayout().<br />
Similarly, if in the course of processing the event the view's appearance may need to be changed, the view will call invalidate().<br />
If either requestLayout() or invalidate() were called, the framework will take care of measuring, laying out, and drawing the tree as appropriate.<br />
Note: The entire view tree is single threaded. You must always be on the UI thread when calling any method on any view. If you are doing work on other threads and want to update the state of a view from that thread, you should use a Handler.<br />
<br />
こちらも同様のアドヴァイスが。いちはやくDoJaから(?)の移植をしておられる。<br />
<a href="http://castor.s26.xrea.com/blog/2007/11/17" target="_blank">http://castor.s26.xrea.com/blog/2007/11/17</a><br />
]]> 
    </content>
    <author>
            <name>No Name Ninja</name>
        </author>
  </entry>
  <entry>
    <id>androidsdk.blog.shinobi.jp://entry/5</id>
    <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/android%20sdk%20applet%E3%81%8B%E3%82%89%E3%81%AE%E7%A7%BB%E6%A4%8D" />
    <published>2007-11-16T23:39:12+09:00</published> 
    <updated>2007-11-16T23:39:12+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>Android SDK Appletからの移植</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[無数のボールが跳ね回るアプレットのソースが公開されているので、そちらの移植を乱暴にやりつつ、泥縄式におぼえていきたい。<br />
<a href="http://homepage.mac.com/catincat/java/physics/mass/" target="_blank">http://homepage.mac.com/catincat/java/physics/mass/</a><br />
<a href="http://homepage.mac.com/catincat/java/physics/mass/MassiveBall.java" target="_blank">http://homepage.mac.com/catincat/java/physics/mass/MassiveBall.java</a><br />
<br />
まず<br />
Applet = View<br />
Color = 存在しないので新しく作る<br />
Graphics = Canvas<br />
Image = Bitmap<br />
という感じで置き換えて乱暴にコードを削った。<br />
マウス処理はちょっと後回しにしておいて<br />
repaint() = invalidate()<br />
Graphics.setcolor() = Paint.setARGB()<br />
とかやった<br />
もとのアプレットはメイン処理をデーモンスレッドで走らせててそこでrepaintしていたが、同じ様にやると<br />
Only the original thread that created a view hierarchy can touch its views <br />
といって怒られた。とりあえず早い所結果が見たいので<br />
<a href="http://code.google.com/android/samples/ApiDemos/src/com/google/android/samples/graphics/GLView1.html" target="_blank">http://code.google.com/android/samples/ApiDemos/src/com/google/android/samples/graphics/GLView1.html</a><br />
ここのメッセージハンドラの処理を見て、スレッドじゃなくタイマー処理で再描画を呼び出すことにした。<br />
<br />
ものすごーくラフで、いろいろ整理してないけどとりあえずボールが沢山出て動く、ってところまでいけたのがこれ。<br />
<br />
<a href="//androidsdk.blog.shinobi.jp/File/b969c161.jpg" target="_blank"><img src="//androidsdk.blog.shinobi.jp/Img/1195262618/" border="0" alt="androidsample" /></a><br />
<br />
sample source<br />
<pre><br />
package com.andor.ball;<br />
<br />
import android.app.Activity;<br />
import android.os.Bundle;<br />
<br />
import android.content.Context;<br />
import android.graphics.Bitmap;<br />
import android.graphics.Canvas;<br />
import android.graphics.Paint;<br />
import android.graphics.Rect;<br />
import android.os.Bundle;<br />
import android.view.MotionEvent;<br />
import android.view.View;<br />
import android.os.Handler;<br />
import android.os.Message;<br />
import android.os.SystemClock;<br />
<br />
public class AndroBall extends Activity {<br />
    /** Called when the activity is first created. */<br />
    @Override<br />
    public void onCreate(Bundle icicle) {<br />
        super.onCreate(icicle);<br />
        setContentView(new MassiveBall(this));<br />
    }<br />
<br />
}<br />
<br />
<br />
class MassiveBall extends SimulationApplet {<br />
    static final double _r_max=16,_r_mid=12,_r_min=6;<br />
    Ball[] _largeBalls=new Ball[20];<br />
    Ball[] _smallBalls=new Ball[30];<br />
    Ball[] _allBalls=new Ball[_largeBalls.length+_smallBalls.length];<br />
    Grid _grid;<br />
    Ball _seizedBall;<br />
    public void run(){<br />
    	<br />
    }<br />
<br />
   public MassiveBall(Context context) {<br />
	   super(context);<br />
       int i=0;<br />
       int j;<br />
       int c;<br />
       c= _largeBalls.length;<br />
       for (j=0;j<c;j++,i++) <br />
           _allBalls[i]=_largeBalls[j]=createBall(_r_max,_r_mid);<br />
<br />
       c= _smallBalls.length;<br />
       for (j=0;j<c;j++,i++) <br />
           _allBalls[i]=_smallBalls[j]=createBall(_r_mid,_r_min);<br />
       <br />
       _grid=new Grid(_width,_height,_r_mid,10);<br />
<br />
   }<br />
<br />
   protected void onSizeChanged(int w, int h, int oldw, int oldh) {<br />
        super.onSizeChanged(w,h,oldw,oldh);<br />
    }<br />
<br />
	<br />
    private Ball createBall(double in_r_max,double in_r_min) {<br />
        float d1,d2,d3;<br />
        d1 = (float)Math.random();<br />
        d2 = (float)Math.random();<br />
        d3 = (float)Math.random();<br />
        int i1,i2,i3;<br />
        i1 = (int)(Math.random()*255);<br />
        i2 = (int)(Math.random()*255);<br />
        i3 = (int)(Math.random()*255);<br />
    	double r=d1*(in_r_max-in_r_min)+in_r_min;<br />
        double d = r*2;<br />
        double x=d2*(_width-d)+r;<br />
        double y=d3*(_height-d)+r;<br />
        Color color=new Color(i1,i2,i3);<br />
        return new Ball(x,y,r,color);<br />
    }<br />
<br />
    protected synchronized void run(double in_dt) {<br />
    	if (_smallBalls == null){<br />
    		return;<br />
    	}<br />
    	if (_largeBalls == null){<br />
    		return;<br />
    	}<br />
    	if (_grid == null){<br />
    		return;<br />
    	}<br />
<br />
    	_grid.clear();<br />
        int i;<br />
        int c;<br />
        <br />
        c = _smallBalls.length;<br />
        for (i=0;i<c;i++) <br />
            _grid.add(_smallBalls[i],_smallBalls[i].x,_smallBalls[i].y);<br />
<br />
        _grid.apply(new Grid.Operator() {<br />
            public void matchObjects(Object a,Object b) {<br />
                if (((Ball)a).id<((Ball)b).id)<br />
                    ((Ball)a).collide((Ball)b);<br />
            }<br />
        });<br />
        <br />
        <br />
        c = _largeBalls.length;<br />
        for (i=0;i<c;i++) {<br />
            for (int j=0;j<i;j++)<br />
                _largeBalls[i].collide(_largeBalls[j]);<br />
            for (int j=0;j<_smallBalls.length;j++)<br />
                _largeBalls[i].collide(_smallBalls[j]);<br />
        }<br />
<br />
        c = _allBalls.length;<br />
        for (i=0;i<c;i++) {<br />
            _allBalls[i].fall(in_dt);<br />
            _allBalls[i].bound(_width,_height);<br />
            _allBalls[i].move(in_dt);<br />
        }<br />
        if (_seizedBall!=null) {<br />
            _seizedBall.u+=in_dt*2*((_mouse_x-_seizedBall.x)/_ft-_seizedBall.u)/_ft;<br />
            _seizedBall.v+=in_dt*2*((_mouse_y-_seizedBall.y)/_ft-_seizedBall.v)/_ft;<br />
        }<br />
    }<br />
    <br />
    public void mousePressed(int x,int y) {<br />
        for (int i=0;i<_allBalls.length;i++) {<br />
            Ball b=_allBalls[i];<br />
            double dx=b.x-x;<br />
            double dy=b.y-y;<br />
            if (dx*dx+dy*dy<b.r*b.r) _seizedBall=b;<br />
        }<br />
    }<br />
    <br />
    public void mouseReleased(int x,int y) {<br />
        _seizedBall=null;<br />
    }<br />
    <br />
    protected void paintOffscreen(Canvas g) {<br />
    	int i;<br />
    	int c;<br />
    	int x,y,w,h;<br />
    	Color color;<br />
    	if (_allBalls == null){<br />
    		return;<br />
    	}<br />
    	c =_allBalls.length;<br />
       	Paint paint = new Paint();<br />
    	for (i=0;i<c;i++) {<br />
            Ball b=_allBalls[i];<br />
        	x = (int)(b.x-b.r);<br />
           	y = (int)(b.y-b.r);<br />
           	w = (int)b.r;<br />
           	color=b.color;<br />
           	paint.setARGB(255, color.r, color.g, color.b);<br />
            g.drawCircle(x, y, w, paint);<br />
        }<br />
    }<br />
}<br />
<br />
class Color{<br />
	public int r,g,b;<br />
	public Color(int in_r,int in_g,int in_b){<br />
		r = in_r;<br />
		g = in_g;<br />
		b = in_b;<br />
	}<br />
}<br />
<br />
abstract class SimulationApplet extends View implements Runnable,MouseListener {<br />
    public static final double _ft=0.1;<br />
    private static final double _dt=0.01;<br />
    <br />
    private Bitmap _image;<br />
    protected int _width = 320;<br />
    protected int _height = 240;<br />
    protected int _mouse_x,_mouse_y;<br />
    protected boolean _mouse_down;<br />
    <br />
    Canvas _canvas;<br />
    private Rect _rect = new Rect();<br />
    private Paint _paint;<br />
    AndroBall _parent;<br />
<br />
    private long            _nextTime;<br />
    private boolean         is_animate;    <br />
    <br />
    public SimulationApplet(Context c) {<br />
        super(c);<br />
        is_animate = false;<br />
        _paint = new Paint();<br />
        _paint.setAntiAlias(true);<br />
        _paint.setARGB(255, 255, 255, 255);    	<br />
    }<br />
<br />
    protected void onAttachedToWindow() {<br />
        is_animate = true;<br />
        Message msg = mHandler.obtainMessage(INVALIDATE);<br />
        _nextTime = SystemClock.uptimeMillis();<br />
        mHandler.sendMessageAtTime(msg, _nextTime);<br />
        super.onAttachedToWindow();<br />
    }	<br />
<br />
    protected void onDetachedFromWindow() {<br />
        is_animate = false;<br />
        super.onDetachedFromWindow();<br />
    }<br />
    <br />
    private static final int INVALIDATE = 1;<br />
    private final Handler mHandler = new Handler() {<br />
        @Override<br />
                public void handleMessage(Message msg) {<br />
            if (is_animate && msg.what == INVALIDATE) {<br />
            	run(_dt);<br />
            	invalidate();<br />
                msg = obtainMessage(INVALIDATE);<br />
                long current = SystemClock.uptimeMillis();<br />
                if (_nextTime < current) {<br />
                    _nextTime = current + 5;<br />
                }<br />
                sendMessageAtTime(msg, _nextTime);<br />
                _nextTime += 5;<br />
            }<br />
        }<br />
    };	    <br />
    <br />
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {<br />
        int curW = _image != null ? _image.width() : 0;<br />
        int curH = _image != null ? _image.height() : 0;<br />
        if (curW >= w && curH >= h) {<br />
            return;<br />
        }<br />
        if (curW < w) curW = w;<br />
        if (curH < h) curH = h;<br />
        _width=curW;<br />
        _height=curH;<br />
        Bitmap newBitmap = Bitmap.createBitmap(curW, curH, false);<br />
        Canvas newCanvas = new Canvas();<br />
        newCanvas.setDevice(newBitmap);<br />
        if (_image != null) {<br />
            newCanvas.drawBitmap(_image, 0, 0, null);<br />
        }<br />
        _image = newBitmap;<br />
        _canvas = newCanvas;<br />
    }<br />
    <br />
    protected abstract void run(double dt);<br />
<br />
    public boolean onMotionEvent(MotionEvent event) {<br />
        int action = event.getAction();<br />
        _mouse_x = (int)event.getX();<br />
        _mouse_y = (int)event.getY();<br />
        <br />
        if ((action == MotionEvent.ACTION_DOWN) || (action == MotionEvent.ACTION_MOVE)){<br />
	        _mouse_down=true;<br />
	        mousePressed(_mouse_x,_mouse_y);<br />
        }else{<br />
	        _mouse_down=false;<br />
	        mouseReleased(_mouse_x,_mouse_y);<br />
        }<br />
        return true;<br />
    }<br />
    protected void onDraw(Canvas canvas) {<br />
    	if ((_rect != null) && (_paint != null)){<br />
	    	_rect.set(0, 0,<br />
	                _width,_height);<br />
	    	_canvas.drawRect(_rect, _paint);<br />
	    	paintOffscreen(_canvas);<br />
    	}<br />
    	if (_image != null) {<br />
        	canvas.drawBitmap(_image, 0, 0, null);<br />
        }<br />
    }<br />
    protected abstract void paintOffscreen(Canvas canvas);<br />
}<br />
class Ball {<br />
    private static final double _elasticity=0.8;<br />
    private static final double _gravity=200;<br />
    private static final double _bounce=0.7;<br />
    private static int _number=0;<br />
    <br />
    public double x,y;<br />
    public double u,v;<br />
    public double r,m;<br />
    public final double d;<br />
    public int id;<br />
    public Color color;<br />
<br />
    public Ball(double x,double y,double r,Color color) {<br />
        this.x=x;<br />
        this.y=y;<br />
        this.r=r;<br />
        this.d = r*2;<br />
        this.color=color;<br />
        m=Math.PI*r*r;<br />
        id=_number++;<br />
    }<br />
    <br />
    public void fall(double dt) {<br />
        v+=dt*_gravity;<br />
    }<br />
    <br />
    public void move(double dt) {<br />
        x+=dt*u;<br />
        y+=dt*v;<br />
    }<br />
    <br />
    public void collide(Ball b) {<br />
        double dx=b.x-x;<br />
        double dy=b.y-y;<br />
        double dr=Math.sqrt(dx*dx+dy*dy);<br />
        if (dr<b.r+r) {<br />
            dx/=dr;<br />
            dy/=dr;<br />
            double dw=(b.u-u)*dx+(b.v-v)*dy;<br />
            if (dw<0) {<br />
                double fw=dw*(1+_elasticity)/(b.m+m);<br />
                u+=fw*dx*b.m;<br />
                v+=fw*dy*b.m;<br />
                b.u+=-fw*dx*m;<br />
                b.v+=-fw*dy*m;<br />
            }<br />
            double fr=_bounce*(dr-b.r-r)/(b.m+m);<br />
            x+=fr*dx*b.m;<br />
            y+=fr*dy*b.m;<br />
            b.x+=-fr*dx*m;<br />
            b.y+=-fr*dy*m;<br />
        }<br />
    }<br />
    <br />
    public void bound(double width,double height) {<br />
        if (x<r) {<br />
            if (u<0) u*=-_elasticity;<br />
            x+=_bounce*(r-x);<br />
        }<br />
        if (x>width-r) {<br />
            if (u>0) u*=-_elasticity;<br />
            x+=_bounce*(width-r-x);<br />
        }<br />
        if (y<r) {<br />
            if (v<0) v*=-_elasticity;<br />
            y+=_bounce*(r-y);<br />
        }<br />
        if (y>height-r) {<br />
            if (v>0) v*=-_elasticity;<br />
            y+=_bounce*(height-r-y);<br />
        }<br />
    }<br />
}<br />
<br />
class Grid {<br />
    private double _width,_height,_delta;<br />
    private int _cols,_rows,_capacity;<br />
    private Object[][][] _cells;<br />
    private int[][] _counts;<br />
    <br />
    public Grid(double width,double height,double delta,int capacity) {<br />
        this._width=width;<br />
        this._height=height;<br />
        this._delta=delta;<br />
        this._capacity=capacity;<br />
        _cols=(int)Math.ceil(width/delta);<br />
        _rows=(int)Math.ceil(height/delta);<br />
        _cells=new Object[_cols][_rows][capacity];<br />
        _counts=new int[_cols][_rows];<br />
    }<br />
    <br />
    public void clear() {<br />
    	int c,c2;<br />
    	int i,j;<br />
    	c = _cols;<br />
    	c2 = _rows;<br />
    	for (i=0;i<c;i++)<br />
            for (j=0;j<c2;j++)<br />
                _counts[i][j]=0;<br />
    }<br />
    <br />
    public void add(Object obj,double x,double y) {<br />
        int i=(int)(x/_delta);<br />
        int j=(int)(y/_delta);<br />
        if (i<0) i=0;<br />
        if (i>=_cols) i=_cols-1;<br />
        if (j<0) j=0;<br />
        if (j>=_rows) j=_rows-1;<br />
        if (_counts[i][j]<_capacity)<br />
            _cells[i][j][_counts[i][j]++]=obj;<br />
    }<br />
    <br />
    public void apply(Operator op) {<br />
        for (int i=0;i<_cols;i++) {<br />
            int i2min=Math.max(0,i-1);<br />
            int i2max=Math.min(i+1,_cols-1);<br />
            for (int j=0;j<_rows;j++) {<br />
                int j2min=Math.max(0,j-1);<br />
                int j2max=Math.min(j+1,_rows-1);<br />
                for (int k=0;k<_counts[i][j];k++) <br />
                    for (int i2=i2min;i2<=i2max;i2++)<br />
                        for (int j2=j2min;j2<=j2max;j2++)<br />
                            for (int k2=0;k2<_counts[i2][j2];k2++)<br />
                                op.matchObjects(<br />
                                    _cells[i][j][k],<br />
                                    _cells[i2][j2][k2]);<br />
            }<br />
        }<br />
    }<br />
    <br />
    public interface Operator {<br />
        void matchObjects(Object a,Object b);<br />
    }<br />
<br />
    <br />
}<br />
<br />
interface MouseListener {<br />
	void mousePressed(int _mouse_x,int _mouse_y);<br />
	void mouseReleased(int x,int y);<br />
}<br />
</pre><br />
    <br />
]]> 
    </content>
    <author>
            <name>No Name Ninja</name>
        </author>
  </entry>
  <entry>
    <id>androidsdk.blog.shinobi.jp://entry/4</id>
    <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/android%20sdk%20%E6%8F%8F%E7%94%BB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%20" />
    <published>2007-11-15T20:53:42+09:00</published> 
    <updated>2007-11-15T20:53:42+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>Android SDK 描画について </title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<br />
　The Canvas class holds the "draw" calls. To draw something, you need 4 basic <br />
components: A Bitmap to hold the pixels, a Canvas to host the draw calls <br />
(writing into the bitmap), a drawing primitive (e.g. Rect, Path, text, <br />
Bitmap), and a paint (to describe the colors and styles for the drawing). <br />
<br />
http://code.google.com/android/reference/android/graphics/Canvas.html <br />
<br />
WindowsAPIの描画の感じににてるのかな。 <br />
<br />
The Paint class holds the style and color information about how to draw <br />
geometries, text and bitmaps.]]> 
    </content>
    <author>
            <name>No Name Ninja</name>
        </author>
  </entry>
  <entry>
    <id>androidsdk.blog.shinobi.jp://entry/3</id>
    <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/android%20sdk%E3%81%A8opengl%20message-handler%E3%81%95%E3%82%8F%E3%82%8A" />
    <published>2007-11-14T20:29:36+09:00</published> 
    <updated>2007-11-14T20:29:36+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>Android SDKとOpenGL Message/Handlerさわり</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[次に試してみたのがカラーキューブ<br />
<br />
http://code.google.com/android/samples/ApiDemos/src/com/google/android/samples/graphics/GLView1.html<br />
<br />
OpenGLが使える模様。<br />
<br />
アニメーションのためのタイマー処理はは以下のハンドラがやってくれている。<br />
<br />
    private final Handler mHandler = new Handler() {<br />
        @Override<br />
                public void handleMessage(Message msg) {<br />
            if (mAnimate && msg.what == INVALIDATE) {<br />
                invalidate();<br />
                msg = obtainMessage(INVALIDATE);<br />
                long current = SystemClock.uptimeMillis();<br />
                if (mNextTime < current) {<br />
                    mNextTime = current + 20;<br />
                }<br />
                sendMessageAtTime(msg, mNextTime);<br />
                mNextTime += 20;<br />
            }<br />
        }<br />
    };<br />
<br />
    protected void onAttachedToWindow() {<br />
        mAnimate = true;<br />
        Message msg = mHandler.obtainMessage(INVALIDATE);<br />
        mNextTime = SystemClock.uptimeMillis();<br />
        mHandler.sendMessageAtTime(msg, mNextTime);<br />
        super.onAttachedToWindow();<br />
    }<br />
　なんかこのての処理既視感があるな。COCOAってこんなんじゃなかったっけ。それ以前にJavaのなにがしかでもこういうのあんのかな。まあいいや慣れだ慣れ。<br />
役にたつかもしれないからメッセージとハンドラにリンクはっとこう<br />
http://code.google.com/android/reference/android/os/Message.html<br />
http://code.google.com/android/reference/android/os/Handler.html<br />
<br />
<br />
Windowsのエミュレータが動かないのは原因が分からん。Linuxも検証まだ。明日はデバッガまわりをいじる予定。<br />
]]> 
    </content>
    <author>
            <name>No Name Ninja</name>
        </author>
  </entry>
  <entry>
    <id>androidsdk.blog.shinobi.jp://entry/2</id>
    <link rel="alternate" type="text/html" href="http://androidsdk.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/android%20sdk%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%BD%E3%83%BC%E3%82%B9%E3%80%80%E3%81%8A%E7%B5%B5%E6%8F%8F%E3%81%8D%E3%82%BD%E3%83%95%E3%83%88" />
    <published>2007-11-14T07:14:19+09:00</published> 
    <updated>2007-11-14T07:14:19+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>Android SDKサンプルソース　お絵描きソフト</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<br />
お絵描きソフト <br />
http://code.google.com/android/samples/ApiDemos/src/com/google/android/samples/graphics/TouchPaint.html<br />
<br />
これによると、押す強さと押した範囲がとれるようだ。（実装依存というやつだが）。 <br />
残念ながらエミュレータではとれないみたいだけど、ソースはこんな感じになってる <br />
public boolean onMotionEvent(MotionEvent event) { <br />
int action = event.getAction(); <br />
mCurDown = action == MotionEvent.ACTION_DOWN <br />
|| action == MotionEvent.ACTION_MOVE; <br />
mCurX = (int)event.getX(); <br />
mCurY = (int)event.getY(); <br />
mCurPressure = event.getPressure(); <br />
mCurSize = event.getSize(); <br />
mCurWidth = (int)(mCurSize*(getWidth()/3)); <br />
if (mCurWidth < 1) mCurWidth = 1; <br />
if (mCurDown && mBitmap != null) { <br />
int pressureLevel = (int)(mCurPressure*255); <br />
mPaint.setARGB(pressureLevel, 255, 255, 255); <br />
mCanvas.drawCircle(mCurX, mCurY, mCurWidth, mPaint); <br />
mRect.set(mCurX-mCurWidth-2, mCurY-mCurWidth-2, <br />
mCurX+mCurWidth+2, mCurY+mCurWidth+2); <br />
invalidate(mRect); <br />
} <br />
return true; <br />
} <br />
<br />
リファレンス見てもとれそうな感じで書いてある。 <br />
http://code.google.com/android/reference/android/view/MotionEvent.html#getPressure() <br />
押したサイズもとれるようにはなっている <br />
http://code.google.com/android/reference/android/view/MotionEvent.html#getSize() <br />
<br />
ここらへんは実際の端末で対応するかどうかだから、別途public final long getDownTime()とかで書く必要もあるんだろうな <br />
<br />
<p>さあリンク集だ</p><br />
キーパッドからの入力に応じて画面上のボールが動く<br />
<a href="http://rio1218.blog26.fc2.com/blog-entry-33.html" rel="nofollow">http://rio1218.blog26.fc2.com/blog-entry-33.html</a><br />
<a href="http://rio1218.blog26.fc2.com/blog-entry-34.html" rel="nofollow">http://rio1218.blog26.fc2.com/blog-entry-34.html</a><br />
任意のビューをアラートダイアログに表示<br />
<a href="http://www.javadrive.jp/android/alertdialog/index5.html" rel="nofollow">http://www.javadrive.jp/android/alertdialog/index5.html</a><br />
メインループとキー情報がとれて三角形が動く<br />
<a href="http://castor.s26.xrea.com/blog/tech/android" rel="nofollow">http://castor.s26.xrea.com/blog/tech/android</a><br />
<a href="http://castor.s26.xrea.com/blog/2007/11/17" rel="nofollow">http://castor.s26.xrea.com/blog/2007/11/17</a><br />
ボタンクリック時の処理を設定したアラートダイアログを表示<br />
<a href="http://www.javadrive.jp/android/alertdialog/index3.html" rel="nofollow">http://www.javadrive.jp/android/alertdialog/index3.html</a><br />
<span class="noexists">ImageButton<a href="http://shakuji.orz.hm/wiki/p/?cmd=edit&amp;page=ImageButton&amp;refer=Android%20SDK%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%BD%E3%83%BC%E3%82%B9%E3%80%80%E3%81%8A%E7%B5%B5%E6%8F%8F%E3%81%8D%E3%82%BD%E3%83%95%E3%83%88">?</a></span>を作る<br />
<a href="http://d.hatena.ne.jp/s_welt/20071114" rel="nofollow">http://d.hatena.ne.jp/s_welt/20071114</a><br />
地図アプリ<br />
<a href="http://www.atmarkit.co.jp/fjava/column/koyama/koyama09_5.html" rel="nofollow">http://www.atmarkit.co.jp/fjava/column/koyama/koyama09_5.html</a><br />
AndroidのOpenGL ESでのマウスピッキング<br />
<a href="http://chephes.cocolog-nifty.com/blog/android/index.html" rel="nofollow">http://chephes.cocolog-nifty.com/blog/android/index.html</a><br />
<span class="noexists">ContentProvider<a href="http://shakuji.orz.hm/wiki/p/?cmd=edit&amp;page=ContentProvider&amp;refer=Android%20SDK%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%BD%E3%83%BC%E3%82%B9%E3%80%80%E3%81%8A%E7%B5%B5%E6%8F%8F%E3%81%8D%E3%82%BD%E3%83%95%E3%83%88">?</a></span> を使って コンタクトリストのデータを取得する<br />
<a href="http://www.plants-web.jp/flashmind/blog/2007/11/android_contentprovider.html" rel="nofollow">http://www.plants-web.jp/flashmind/blog/2007/11/android_contentprovider.html</a><br />
Android SDKとOpenGL Message/Handlerさわり<br />
<a href="http://androidsdk.blog.shinobi.jp/Entry/3/" rel="nofollow">http://androidsdk.blog.shinobi.jp/Entry/3/</a><br />
Androidアプリでクロック機能を実装するためのヒント<br />
<a href="http://kousei-inc.com/portal/index.php?%E5%8B%9D%E6%89%8B%E3%81%ABAndroid%E3%83%96%E3%83%AD%E3%82%B0" rel="nofollow">http://kousei-inc.com/portal/index.php?%E5%8B%9D%E6%89%8B%E3%81%ABAndroid%E3%83%96%E3%83%AD%E3%82%B0</a><br />
チャット形式で様々な事にトライ　必見<br />
<a href="http://www.lingr.com/room/Androider-ja/archives/2007/11/23" rel="nofollow">http://www.lingr.com/room/Androider-ja/archives/2007/11/23</a><br />
AndroidでTwitterクライアント<br />
<a href="http://www.adamrocker.com/blog/173/android_twitter_client.html" rel="nofollow">http://www.adamrocker.com/blog/173/android_twitter_client.html</a><br />
AndroidでWebページサムネイル<br />
<a href="http://chephes.cocolog-nifty.com/blog/2007/11/androidweb_476f.html" rel="nofollow">http://chephes.cocolog-nifty.com/blog/2007/11/androidweb_476f.html</a><br />
Bug LabsのモジュラーなデバイスでGoogleのAndroidが走るらしい<br />
<a href="http://blog.browncat.org/2007/11/bug_labsgoogleandroid.html" rel="nofollow">http://blog.browncat.org/2007/11/bug_labsgoogleandroid.html</a><br />
動画ファイル再生<br />
<a href="http://kazhik.net/tech/2007/12/android-1.html" rel="nofollow">http://kazhik.net/tech/2007/12/android-1.html</a><br />
ダイヤラ<br />
<a href="http://sadko.mobi/callfreq/index.html" rel="nofollow">http://sadko.mobi/callfreq/index.html</a><br />
RSSリーダ<br />
<a href="http://code.google.com/p/android-feed-reader/" rel="nofollow">http://code.google.com/p/android-feed-reader/</a><br />
ブロック崩し<br />
<a href="http://chephes.cocolog-nifty.com/blog/2007/11/android_07e5.html" rel="nofollow">http://chephes.cocolog-nifty.com/blog/2007/11/android_07e5.html</a></p><br />
<p>リンク紹介系<br />
<a href="http://androidsdk.blog.shinobi.jp/Entry/2/" rel="nofollow">http://androidsdk.blog.shinobi.jp/Entry/2/</a><br />
<a href="http://nozaki.com/2007/11/29/1655/" rel="nofollow">http://nozaki.com/2007/11/29/1655/</a><br />
<a href="http://www.blogmura.com/profile/196683.html" rel="nofollow">http://www.blogmura.com/profile/196683.html</a><br />
<a href="http://www.kanshin.com/keyword/1271169" rel="nofollow">http://www.kanshin.com/keyword/1271169</a><br />
<a href="http://nozaki.com/2007/11/29/1655/?view=tra" rel="nofollow">http://nozaki.com/2007/11/29/1655/?view=tra</a></p><br />
<p>RSS系<br />
<a href="http://buzzurl.jp/user/tsupo/keyword/Java?mode=rss" rel="nofollow">http://buzzurl.jp/user/tsupo/keyword/Java?mode=rss</a><br />
<a href="http://www.namaan.net/rss/WebView/" rel="nofollow">http://www.namaan.net/rss/WebView/</a><br />
<a href="http://www41.atwiki.jp/tako2lab/rss" rel="nofollow">http://www41.atwiki.jp/tako2lab/rss</a></p><br />
<p>手取り足取り教える系<br />
<a href="http://www.edita.jp/web2/one/web26533397.html" rel="nofollow">http://www.edita.jp/web2/one/web26533397.html</a><br />
<a href="http://www.edita.jp/bestation/one/bestation6007187.html" rel="nofollow">http://www.edita.jp/bestation/one/bestation6007187.html</a><br />
<a href="http://blog.goo.ne.jp/xmldtp/e/53d99581f0294d4f37cb9dfe56bd6b3d" rel="nofollow">http://blog.goo.ne.jp/xmldtp/e/53d99581f0294d4f37cb9dfe56bd6b3d</a><br />
<a href="http://www.atmarkit.co.jp/fjava/column/koyama/koyama09_3.html" rel="nofollow">http://www.atmarkit.co.jp/fjava/column/koyama/koyama09_3.html</a><br />
<a href="http://codezine.jp/a/article/aid/1925.aspx" rel="nofollow">http://codezine.jp/a/article/aid/1925.aspx</a><br />
<a href="http://www.saturn.dti.ne.jp/~npaka/android/" rel="nofollow">http://www.saturn.dti.ne.jp/~npaka/android/</a><br />
<a href="http://blog.makotokw.com/2007/11/25/eclipseandroidapidemo/" rel="nofollow">http://blog.makotokw.com/2007/11/25/eclipseandroidapidemo/</a><br />
<a href="http://tokyo-ltd.at.webry.info/" rel="nofollow">http://tokyo-ltd.at.webry.info/</a><br />
<a href="http://blog.flup.jp/2007/11/29/android_intro_2/" rel="nofollow">http://blog.flup.jp/2007/11/29/android_intro_2/</a></p><br />
<p>日本語翻訳系<br />
<a href="http://tsudoe.com/pukiwiki/?%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB" rel="nofollow">http://tsudoe.com/pukiwiki/?%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB</a><br />
<a href="http://www.android-ja.net/modules/xpwiki/?tutorial" rel="nofollow">http://www.android-ja.net/modules/xpwiki/?tutorial</a><br />
<a href="http://www.muo.jp/android/toolbox/apis/opengl.html" rel="nofollow">http://www.muo.jp/android/toolbox/apis/opengl.html</a><br />
<a href="http://www.muo.jp/android/devel/data/databases.html" rel="nofollow">http://www.muo.jp/android/devel/data/databases.html</a><br />
<a href="http://tsudoe.com/pukiwiki/index.php?FrontPage" rel="nofollow">http://tsudoe.com/pukiwiki/index.php?FrontPage</a><br />
<a href="http://www.android-ja.net/modules/xpwiki/?tutorial-exercise2" rel="nofollow">http://www.android-ja.net/modules/xpwiki/?tutorial-exercise2</a></p><br />
<p>素人悩みながら始めてる系<br />
<a href="http://memo333.cocolog-nifty.com/blog/android_4/index.html" rel="nofollow">http://memo333.cocolog-nifty.com/blog/android_4/index.html</a><br />
<a href="http://memo333.cocolog-nifty.com/blog/2007/11/index.html" rel="nofollow">http://memo333.cocolog-nifty.com/blog/2007/11/index.html</a></p><br />
<p>日記とか<br />
<a href="http://adinnovator.typepad.com/ad_innovator/2007/11/googletvandroid.html" rel="nofollow">http://adinnovator.typepad.com/ad_innovator/2007/11/googletvandroid.html</a><br />
<a href="http://saekiyoshiyasu.org/pyb/pyblosxom.cgi/hardware/mobile/" rel="nofollow">http://saekiyoshiyasu.org/pyb/pyblosxom.cgi/hardware/mobile/</a><br />
<a href="http://kiyonari.vox.com/library/post/android%E6%90%BA%E5%B8%AF%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB.html" rel="nofollow">http://kiyonari.vox.com/library/post/android%E6%90%BA%E5%B8%AF%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB.html</a><br />
<a href="http://b.hatena.ne.jp/keyword/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%BD%E3%83%BC%E3%82%B9?sort=eid" rel="nofollow">http://b.hatena.ne.jp/keyword/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%BD%E3%83%BC%E3%82%B9?sort=eid</a><br />
<a href="http://blog.livedoor.jp/arabian_tower/index.rdf" rel="nofollow">http://blog.livedoor.jp/arabian_tower/index.rdf</a><br />
<a href="http://uiengineda.blogs.com/uiengine_/2007/11/googleandroid-s.html" rel="nofollow">http://uiengineda.blogs.com/uiengine_/2007/11/googleandroid-s.html</a><br />
<a href="http://wassr.jp/user/haoyayoi/statuses/IvRbqtNkBw" rel="nofollow">http://wassr.jp/user/haoyayoi/statuses/IvRbqtNkBw</a><br />
<a href="http://www29.atwiki.jp/android/ref/11.html" rel="nofollow">http://www29.atwiki.jp/android/ref/11.html</a><br />
<a href="http://mute0.cocolog-nifty.com/blog/2007/11/google_android.html" rel="nofollow">http://mute0.cocolog-nifty.com/blog/2007/11/google_android.html</a><br />
<a href="http://journal.mycom.co.jp/news/2007/11/13/005/index.html" rel="nofollow">http://journal.mycom.co.jp/news/2007/11/13/005/index.html</a><br />
<a href="http://www29.atwiki.jp/android/ref/11.html?sort=deserial" rel="nofollow">http://www29.atwiki.jp/android/ref/11.html?sort=deserial</a><br />
<a href="http://blog.so-net.ne.jp/studio-dejavu/archive/c30365919" rel="nofollow">http://blog.so-net.ne.jp/studio-dejavu/archive/c30365919</a><br />
<a href="http://www.in-vitro.jp/blog/index.cgi/2007/11/" rel="nofollow">http://www.in-vitro.jp/blog/index.cgi/2007/11/</a><br />
<a href="http://taggy.jp/user/news/detail/15636451" rel="nofollow">http://taggy.jp/user/news/detail/15636451</a><br />
<a href="http://www.nkozawa.com/blog/archives/category/programing/" rel="nofollow">http://www.nkozawa.com/blog/archives/category/programing/</a><br />
<a href="http://builder.japan.zdnet.com/news/story/0,3800079086,20363554,00.htm" rel="nofollow">http://builder.japan.zdnet.com/news/story/0,3800079086,20363554,00.htm</a><br />
<a href="http://blog.livedoor.jp/vine_user/archives/51183134.html" rel="nofollow">http://blog.livedoor.jp/vine_user/archives/51183134.html</a><br />
<a href="http://k-tai.impress.co.jp/cda/article/news_toppage/37176.html" rel="nofollow">http://k-tai.impress.co.jp/cda/article/news_toppage/37176.html</a><br />
<a href="http://blog.lab4frog.com/blog/2007/11/android.html" rel="nofollow">http://blog.lab4frog.com/blog/2007/11/android.html</a><br />
<a href="http://www.901am.jp/archives/2007/google-announces-10-million-android-developer-challenge.html" rel="nofollow">http://www.901am.jp/archives/2007/google-announces-10-million-android-developer-challenge.html</a><br />
<a href="http://v.japan.cnet.com/blog/story/0,2000071498,000269c-0000021009o,00.htm" rel="nofollow">http://v.japan.cnet.com/blog/story/0,2000071498,000269c-0000021009o,00.htm</a><br />
<a href="http://www.sprasia.com/blog/gon/20071113114739.html?SprasiaSession=atbdp0r1b5rnum60tlcda3sns6" rel="nofollow">http://www.sprasia.com/blog/gon/20071113114739.html?SprasiaSession=atbdp0r1b5rnum60tlcda3sns6</a><br />
<a href="http://gihyo.jp/dev/clip/01/orangenews/vol42/0001" rel="nofollow">http://gihyo.jp/dev/clip/01/orangenews/vol42/0001</a><br />
<a href="http://ameblo.jp/satopy/entry-10055333262.html" rel="nofollow">http://ameblo.jp/satopy/entry-10055333262.html</a><br />
<a href="http://internet.watch.impress.co.jp/cda/news/2007/11/13/17495.html" rel="nofollow">http://internet.watch.impress.co.jp/cda/news/2007/11/13/17495.html</a><br />
<a href="http://it.nikkei.co.jp/rd/rd.aspr?s=IT&amp;g=fa&amp;n=RS2036036906112007" rel="nofollow">http://it.nikkei.co.jp/rd/rd.aspr?s=IT&amp;g=fa&amp;n=RS2036036906112007</a><br />
http://androidzaurus.seesaa.net/<br />
]]> 
    </content>
    <author>
            <name>No Name Ninja</name>
        </author>
  </entry>
</feed>