ようへい

2012年4月25日水曜日

4/24 Android ニュースひとまとめ

ゲームロフトは、iOS/Android用アプリ「SharkDash」において、リリース後、米国、フランス、英国、ドイツ、メキシコ、カナダのApp Storeにて優れたカスタマー評価(5ポイント中4.5ポイント)を得て、有料ゲームトップ5位内に入ったことを発表した。
iOS/Android「SharkDash」有料ゲームトップ5入りを達成|Gamer
http://www.gamer.ne.jp/news/201204240012/
アクションゲームかと思ったらパズルゲームだったんですね。
4/19に公開にしたばかりで、えらい高評価ですね。
余裕出来たらプレイしてみようかな。
SharkDash - Google Play の Android アプリ
https://play.google.com/store/apps/details?id=com.gameloft.android.ANMP.GloftSRHM
MVPenテクノロジーズ株式会社(代表取締役:ケイダー・ヨアブ、本社:東京都港区新橋6-9-2)は、米国EFUN社のnextbookシリーズのAndroidTM OS4.0搭載、タブレット端末7インチ「nextbook(ネクストブック)PREMIUM7」、8インチ「nextbook(ネクストブック)PREMIUM8」と9,7インチ「nextbook(ネクストブック)PREMIUM10の3機種を、MVPenオンラインショップ及びMVPenダイレクト楽天市場店、MVPenダイレクトYahoo!店、ビッダーズ、au oneショッピングモール、mixiモール等、同社運営のダイレクトショップでの販売を開始したことを発表しました。
AndroidタブレットPC nextbook、1万円台のAndroid OS4.0搭載 PREMIUMシリーズを発売 - CNET Japan
http://japan.cnet.com/release/30018612/
1万円台のICS搭載タブレットですか。
気になるスペックは以下。
【機能項目】
■CPU:Cortex A8 1GHz
■メモリー:512MB DDR3
■ハードディスク:Nand Flash 4GB(システム領域含む)
■液晶サイズ:8インチTFT
■液晶解像度:800x600
■タッチパネルタイプ:静電式
■スピーカー:あり
■マイク:あり
■フロントカメラ:あり(200万画素)
■無線LAN:WiFi 802.11b/g/n 対応
■Gセンサー:360°
■3D:未対応
■カラー:「黒色」
■内蔵バッテリー:5,000mAh
 (リチウムバッテリー、WEB閲覧が約5時間使用可能)
 ※ご利用の環境によって異なる場合もあります。
■本体サイズ:約220(W)×152(L) ×10(D)mm
■本体重量:約482g
■インターフェイス
 Mini USB×1/SDカード×1(16GBまで対応)/イヤホンジャック×1/HDMI×1
 リセット×1/DC in×1/

【ソフトウェア】
■OS:Google Android 4.0
■ファームウェア:アンドロイド 4.0
■言語表示:日本語に設定済
■入力方法:simejiアプリで日本語に対応
■アンドロイドマーケット:未対応
 
■標準ブラウザ:対応
■Flash   :未対応
■ビデオ:Video Player
■オーディオ:Audio Player
■電子ブック:Adobe Reader、PDF、EPUB、TXT、FB2、PDB、RTF等「対応」
■EMAIL:メール
■SNS:FACEBOOK、TWITTER「対応」

【対応フォーマット】
※全ての形式の再生を保証するものではありません。
■オーディオ再生:MP3、WAV、OGG、FLAC、APE、AAC等
■ビデオ再生:AVI、3GP、MP4、RM、RMVB、FLV、MKV、MOV、VOB、DAT、WMV等
■画像ビューア:JPEG、BMP、GIF、PNG等

【付属品】
 充電器100~240V×1個/USBコード×1本/化粧箱×1個/ポーチ入れ152(L) mm
あまり見ないCPUですね。
メモリも512MBかぁ
あれ、アンドロイドマーケット:未対応って、Kindle Fireとかみたいに専用端末って事?
購入考えている人は要注意ですよ。
教育機関向けとかですかね。
 ページの戻る/進むやブックマークの表示/追加などの操作は「クイックコントロールメニュー」から行える。画面の左右の端にタッチすると、そこを中心とした扇形のクイックコントロールメニューが現れ、そのまま指をスライドさせることで各種操作を行う仕組み。メニューは7区画に分かれており、それぞれ割り当てる操作をカスタマイズ可能だ。「戻る」「進む」「ブックマーク」「ブックマークに追加」のほか、「更新」「新しいウィンドウ」「ウィンドウを閉じる」「あとで読む」「スピードダイヤルに追加」「検索」「クイックコントロール設定」という操作から好きなものを設定できる。
Androidアプリ「Yahoo!ブラウザー」無料公開、偽サイト警告や扇形メニュー -INTERNET Watch
http://internet.watch.impress.co.jp/docs/news/20120424_528753.html
操作性はなかなか良さそう。
起動速度、ページの表示速度、HTML5の対応状況等どうなんでしょうか?
私はYahoo!という時点であまり使う気にはなりませんけど。
エンジンはオリジナルなのかな?
詳細確認してみようと思います。
関連記事

2012年4月24日火曜日

Hello, Views (Google Map View編)

Google Map View | Android Developers
http://developer.android.com/intl/ja/resources/tutorials/views/hello-mapview.html 事前に Android SDK マネージャーでGoogle APIsをインストールしておきましょう。
また、Google Maps APIのAPI Keyが必要になります。取得していない場合は以下を参照し、取得しておきましょう。
Android Maps API Key 取得方法 - ログろいど
Google APIsをターゲットとした仮想デバイスが作られていない場合は、AVDで作成しておきます。

Part 1: Map Activityの作成

ビルドターゲットを、Google APIs、プラットフォームを2.3.3でHelloGoogleMapsというプロジェクトを作成します。
AndroidManifest.xmlを開き、以下のように変更します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.blogspot.logroid.helloGoogleMaps"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".HelloGoogleMapsActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <uses-library android:name="com.google.android.maps" />
    </application>
</manifest>
res/layout/main.xmlを開き、以下のように変更します。
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    android:apiKey="Google MapsのAPIキーを入力"
/>
HelloGoogleMapsActivity.javaを開き、以下のように変更します。
package jp.blogspot.logroid.helloGoogleMaps;

import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;

import android.os.Bundle;

public class HelloGoogleMapsActivity extends MapActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
    }

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}
Google APIsをターゲットとした仮想デバイスで実行します。

Part 2: オーバーレイアイテムの追加

src/パッケージ名で右クリックをして、新規->クラスをクリックします。
名前に、HelloItemizedOverlayを入力し、スーパークラスにcom.google.android.maps.ItemizedOverlayを入力します。
スーパークラスからのコンストラクターにチェックを入れ、完了をクリックします。
HelloItemizedOverlay.javaを開き、以下のように変更します。
package jp.blogspot.logroid.helloGoogleMaps;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

public class HelloItemizedOverlay extends ItemizedOverlay<OverlayItem> {
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    private Context mContext;

    public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
     super(boundCenterBottom(defaultMarker));
        mContext = context;
    }

    public void addOverlay(OverlayItem overlay) {
        mOverlays.add(overlay);
        populate();
    }

    @Override
    protected OverlayItem createItem(int i) {
        return mOverlays.get(i);
    }

    @Override
    public int size() {
        return mOverlays.size();
    }

    @Override
    protected boolean onTap(int index) {
        OverlayItem item = mOverlays.get(index);
        AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
        dialog.setTitle(item.getTitle());
        dialog.setMessage(item.getSnippet());
        dialog.show();
        return true;
    }
}
HelloGoogleMapsActivity.javaを開き、以下のように変更します。
package jp.blogspot.logroid.helloGoogleMaps;

import java.util.List;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

import android.graphics.drawable.Drawable;
import android.os.Bundle;

public class HelloGoogleMapsActivity extends MapActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);

        List<Overlay> mapOverlays = mapView.getOverlays();
        Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
        HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, this);

        GeoPoint point = new GeoPoint(19240000,-99120000);
        OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!");

        itemizedoverlay.addOverlay(overlayitem);
        mapOverlays.add(itemizedoverlay);
    }

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}
Google APIsをターゲットとした仮想デバイスで実行します。
HelloGoogleMapsActivity.javaを開き、以下のように変更します。
package jp.blogspot.logroid.helloGoogleMaps;

import java.util.List;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

import android.graphics.drawable.Drawable;
import android.os.Bundle;

public class HelloGoogleMapsActivity extends MapActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);

        List<Overlay> mapOverlays = mapView.getOverlays();
        Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
        HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, this);

        GeoPoint point = new GeoPoint(19240000,-99120000);
        OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!");

        GeoPoint point2 = new GeoPoint(35410000, 139460000);
        OverlayItem overlayitem2 = new OverlayItem(point2, "Sekai, konichiwa!", "I'm in Japan!");

        itemizedoverlay.addOverlay(overlayitem);
        itemizedoverlay.addOverlay(overlayitem2);
        mapOverlays.add(itemizedoverlay);
    }

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}
Google APIsをターゲットとした仮想デバイスで実行します。
今回出てきたキーワードについて解説。
MapView
マップを表示するビュー
setBuiltInZoomControls
ズームの許可
GeoPoint
経度、緯度のクラス
OverlayItem
地図上にアイテムを表示する
引数として、アイテムがタップされた際のバルーンに表示するタイトル、メッセージを受ける
isRouteDisplayed
MapActivityを継承した場合必須となるメソッド
ルート表示を行うかというフラグを返すために実装する
関連記事

2012年4月23日月曜日

4/23 Android ニュースひとまとめ

Android端末向けアプリが本日配信開始!

『ラグナロクオンライン ギルドマスターズ』がAndroid(TM) OS搭載機種で楽しめるアプリが、本日より待望の配信開始!
Android用に画面レイアウトやデータを最適化しつつ、Webブラウザ版と同じゲームデータへアクセスできるため、外出先ではスマートフォンで、家ではパソコンでといった様にTPOにあわせていつでも気軽にギルド育成を楽しむことが可能です!

既に『ラグナロクオンライン ギルドマスターズ』を楽しんでいる方はもちろん、対応機種をお持ちで『ラグナロクオンラインギルドマスターズ』未プレイの方も、是非この機会にお試しください!!
『ROGM』Android端末向けアプリ本日配信開始! | ゲームその他 | オンラインゲーム情報はSgame(エスゲーム)
http://www.sgame.jp/news/9/10417
ラグナロクのシュミレーションゲームがマーケットで公開されたようです。
ラグナロクはPC版、Android版共にプレイ経験ありますが、Android版はラグが酷くてアンインストールしました。
シュミレーションゲームであればラグが気にならないかな。
後日プレイしてみようと思います。
ROGM - Google Play の Android アプリ
https://play.google.com/store/apps/details?id=jp.gungho.rogm
関連記事

Hello, Views (Gallery編)

Gallery | Android Developers
http://developer.android.com/intl/ja/resources/tutorials/views/hello-gallery.html 水平方向にスクロールしてビューを表示するレイアウトのようです。 今回は、写真のギャラリーを作成します。 HelloGalleryというプロジェクトを作成します。 チュートリアルのページから画像をダウンロードして、res/drawable/配下に保存します。 res/layout/main.xmlを開き、以下のように変更します。
<?xml version="1.0" encoding="utf-8"?>
<Gallery xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gallery"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
/>
HelloGalleryActivity.javaを開き、以下のように変更します。
package jp.blogspot.logroid.helloGallery;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Gallery;
import android.widget.Toast;

public class HelloGalleryActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Gallery gallery = (Gallery) findViewById(R.id.gallery);
        gallery.setAdapter(new ImageAdapter(this));

        gallery.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(@SuppressWarnings("rawtypes") AdapterView parent, View v, int position, long id) {
                Toast.makeText(HelloGalleryActivity.this, "" + position, Toast.LENGTH_SHORT).show();
            }
        });
    }
}
res/values/にattrs.xmlを作成し、以下のように変更します。
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="default_gallery">
        <attr name="android:galleryItemBackground" />
    </declare-styleable>
</resources>
HelloGalleryActivity.javaを開き、以下のように変更します。
package jp.blogspot.logroid.helloGallery;

import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;

public class HelloGalleryActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Gallery gallery = (Gallery) findViewById(R.id.gallery);
        gallery.setAdapter(new ImageAdapter(this));

        gallery.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(@SuppressWarnings("rawtypes") AdapterView parent, View v, int position, long id) {
                Toast.makeText(HelloGalleryActivity.this, "" + position, Toast.LENGTH_SHORT).show();
            }
        });
    }

    public class ImageAdapter extends BaseAdapter {
        int mGalleryItemBackground;
        private Context mContext;

        private Integer[] mImageIds = {
                R.drawable.sample_1,
                R.drawable.sample_2,
                R.drawable.sample_3,
                R.drawable.sample_4,
                R.drawable.sample_5,
                R.drawable.sample_6,
                R.drawable.sample_7
        };

        public ImageAdapter(Context c) {
            mContext = c;
            TypedArray a = obtainStyledAttributes(R.styleable.default_gallery);
            mGalleryItemBackground = a.getResourceId(
                    R.styleable.default_gallery_android_galleryItemBackground, 0);
            a.recycle();
        }

        public int getCount() {
            return mImageIds.length;
        }

        public Object getItem(int position) {
            return position;
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView i = new ImageView(mContext);

            i.setImageResource(mImageIds[position]);
            i.setLayoutParams(new Gallery.LayoutParams(150, 100));
            i.setScaleType(ImageView.ScaleType.FIT_XY);
            i.setBackgroundResource(mGalleryItemBackground);

            return i;
        }
    }
}
実行します。
今回出てきたキーワードについて解説。
setImageResource
表示する画像のリソースIDを指定
リソースIDは、R.drawable.hogeで取得できる
setBackgroundResource
背景として表示するリソースIDを指定
obtainStyledAttributes
レイアウトスタイルを取得
getResourceId
リソースIDの取得
recycle
TypedArrayの破棄
関連記事

2012年4月22日日曜日

Hello, Views (AutoComplete編)

Auto Complete | Android Developers
http://developer.android.com/intl/ja/resources/tutorials/views/hello-autocomplete.html テキストビューでのオートコンプリートのチュートリアルです。 HelloAutoCompleteというプロジェクトを作成します。 res/layout/にlist_item.xmlを作成し、以下のように変更します。
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:textSize="16sp"
    android:textColor="#000">

</TextView>
res/layout/main.xmlを開き、以下のように変更します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/country" />
    <AutoCompleteTextView android:id="@+id/autocomplete_country"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"/>

</LinearLayout>
res/values/strings.xmlを開き、以下のように変更します。
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, HelloAutoCompleteActivity!</string>
    <string name="app_name">HelloAutoComplete</string>
    <string name="country">Country</string>

</resources>
res/values/にarray.xmlを作成し、以下のように変更します。
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="countries_array">
        <item>Afghanistan</item>
        <item>Albania</item>
        <item>Algeria</item>
        <item>American Samoa</item>
        <item>Andorra</item>
        <item>Angola</item>
        <item>Anguilla</item>
        <item>Antarctica</item>
        <item>Antigua and Barbuda</item>
        <item>Argentina</item>
        <item>Armenia</item>
        <item>Aruba</item>
        <item>Australia</item>
        <item>Austria</item>
        <item>Azerbaijan</item>
        <item>Bahrain</item>
        <item>Bangladesh</item>
        <item>Barbados</item>
        <item>Belarus</item>
        <item>Belgium</item>
        <item>Belize</item>
        <item>Benin</item>
        <item>Bermuda</item>
        <item>Bhutan</item>
        <item>Bolivia</item>
        <item>Bosnia and Herzegovina</item>
        <item>Botswana</item>
        <item>Bouvet Island</item>
        <item>Brazil</item>
        <item>British Indian Ocean Territory</item>
        <item>British Virgin Islands</item>
        <item>Brunei</item>
        <item>Bulgaria</item>
        <item>Burkina Faso</item>
        <item>Burundi</item>
        <item>Cote d\'Ivoire</item>
        <item>Cambodia</item>
        <item>Cameroon</item>
        <item>Canada</item>
        <item>Cape Verde</item>
        <item>Cayman Islands</item>
        <item>Central African Republic</item>
        <item>Chad</item>
        <item>Chile</item>
        <item>China</item>
        <item>Christmas Island</item>
        <item>Cocos (Keeling) Islands</item>
        <item>Colombia</item>
        <item>Comoros</item>
        <item>Congo</item>
        <item>Cook Islands</item>
        <item>Costa Rica</item>
        <item>Croatia</item>
        <item>Cuba</item>
        <item>Cyprus</item>
        <item>Czech Republic</item>
        <item>Democratic Republic of the Congo</item>
        <item>Denmark</item>
        <item>Djibouti</item>
        <item>Dominica</item>
        <item>Dominican Republic</item>
        <item>East Timor</item>
        <item>Ecuador</item>
        <item>Egypt</item>
        <item>El Salvador</item>
        <item>Equatorial Guinea</item>
        <item>Eritrea</item>
        <item>Estonia</item>
        <item>Ethiopia</item>
        <item>Faeroe Islands</item>
        <item>Falkland Islands</item>
        <item>Fiji</item>
        <item>Finland</item>
        <item>Former Yugoslav Republic of Macedonia</item>
        <item>France</item>
        <item>French Guiana</item>
        <item>French Polynesia</item>
        <item>French Southern Territories</item>
        <item>Gabon</item>
        <item>Georgia</item>
        <item>Germany</item>
        <item>Ghana</item>
        <item>Gibraltar</item>
        <item>Greece</item>
        <item>Greenland</item>
        <item>Grenada</item>
        <item>Guadeloupe</item>
        <item>Guam</item>
        <item>Guatemala</item>
        <item>Guinea</item>
        <item>Guinea-Bissau</item>
        <item>Guyana</item>
        <item>Haiti</item>
        <item>Heard Island and McDonald Islands</item>
        <item>Honduras</item>
        <item>Hong Kong</item>
        <item>Hungary</item>
        <item>Iceland</item>
        <item>India</item>
        <item>Indonesia</item>
        <item>Iran</item>
        <item>Iraq</item>
        <item>Ireland</item>
        <item>Israel</item>
        <item>Italy</item>
        <item>Jamaica</item>
        <item>Japan</item>
        <item>Jordan</item>
        <item>Kazakhstan</item>
        <item>Kenya</item>
        <item>Kiribati</item>
        <item>Kuwait</item>
        <item>Kyrgyzstan</item>
        <item>Laos</item>
        <item>Latvia</item>
        <item>Lebanon</item>
        <item>Lesotho</item>
        <item>Liberia</item>
        <item>Libya</item>
        <item>Liechtenstein</item>
        <item>Lithuania</item>
        <item>Luxembourg</item>
        <item>Macau</item>
        <item>Madagascar</item>
        <item>Malawi</item>
        <item>Malaysia</item>
        <item>Maldives</item>
        <item>Mali</item>
        <item>Malta</item>
        <item>Marshall Islands</item>
        <item>Martinique</item>
        <item>Mauritania</item>
        <item>Mauritius</item>
        <item>Mayotte</item>
        <item>Mexico</item>
        <item>Micronesia</item>
        <item>Moldova</item>
        <item>Monaco</item>
        <item>Mongolia</item>
        <item>Montserrat</item>
        <item>Morocco</item>
        <item>Mozambique</item>
        <item>Myanmar</item>
        <item>Namibia</item>
        <item>Nauru</item>
        <item>Nepal</item>
        <item>Netherlands</item>
        <item>Netherlands Antilles</item>
        <item>New Caledonia</item>
        <item>New Zealand</item>
        <item>Nicaragua</item>
        <item>Niger</item>
        <item>Nigeria</item>
        <item>Niue</item>
        <item>Norfolk Island</item>
        <item>North Korea</item>
        <item>Northern Marianas</item>
        <item>Norway</item>
        <item>Oman</item>
        <item>Pakistan</item>
        <item>Palau</item>
        <item>Panama</item>
        <item>Papua New Guinea</item>
        <item>Paraguay</item>
        <item>Peru</item>
        <item>Philippines</item>
        <item>Pitcairn Islands</item>
        <item>Poland</item>
        <item>Portugal</item>
        <item>Puerto Rico</item>
        <item>Qatar</item>
        <item>Reunion</item>
        <item>Romania</item>
        <item>Russia</item>
        <item>Rwanda</item>
        <item>Sqo Tome and Principe</item>
        <item>Saint Helena</item>
        <item>Saint Kitts and Nevis</item>
        <item>Saint Lucia</item>
        <item>Saint Pierre and Miquelon</item>
        <item>Saint Vincent and the Grenadines</item>
        <item>Samoa</item>
        <item>San Marino</item>
        <item>Saudi Arabia</item>
        <item>Senegal</item>
        <item>Seychelles</item>
        <item>Sierra Leone</item>
        <item>Singapore</item>
        <item>Slovakia</item>
        <item>Slovenia</item>
        <item>Solomon Islands</item>
        <item>Somalia</item>
        <item>South Africa</item>
        <item>South Georgia and the South Sandwich Islands</item>
        <item>South Korea</item>
        <item>Spain</item>
        <item>Sri Lanka</item>
        <item>Sudan</item>
        <item>Suriname</item>
        <item>Svalbard and Jan Mayen</item>
        <item>Swaziland</item>
        <item>Sweden</item>
        <item>Switzerland</item>
        <item>Syria</item>
        <item>Taiwan</item>
        <item>Tajikistan</item>
        <item>Tanzania</item>
        <item>Thailand</item>
        <item>The Bahamas</item>
        <item>The Gambia</item>
        <item>Togo</item>
        <item>Tokelau</item>
        <item>Tonga</item>
        <item>Trinidad and Tobago</item>
        <item>Tunisia</item>
        <item>Turkey</item>
        <item>Turkmenistan</item>
        <item>Turks and Caicos Islands</item>
        <item>Tuvalu</item>
        <item>Virgin Islands</item>
        <item>Uganda</item>
        <item>Ukraine</item>
        <item>United Arab Emirates</item>
        <item>United Kingdom</item>
        <item>United States</item>
        <item>United States Minor Outlying Islands</item>
        <item>Uruguay</item>
        <item>Uzbekistan</item>
        <item>Vanuatu</item>
        <item>Vatican City</item>
        <item>Venezuela</item>
        <item>Vietnam</item>
        <item>Wallis and Futuna</item>
        <item>Western Sahara</item>
        <item>Yemen</item>
        <item>Yugoslavia</item>
        <item>Zambia</item>
        <item>Zimbabwe</item>
    </string-array>
</resources>
HelloAutoCompleteActivity.javaを開き、以下のように変更します。
package jp.blogspot.logroid.helloAutoComplete;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class HelloAutoCompleteActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
        String[] countries = getResources().getStringArray(R.array.countries_array);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, countries);
        textView.setAdapter(adapter);
    }
}
実行します。
今回出てきたキーワードについて解説。
AutoCompleteTextView
オートコンプリートを行うテキストビュー
setAdapterでArrayAdapterを指定すると、オートコンプリートを実装できる
関連記事