2010年12月30日木曜日

【HTC Desire HD】 デザイア(Desire)HD、来年第1四半期にジンジャーブレッドにアップグレード








HTCはスマートフォンのDesire HDのオペレーティングシステム(OS)をAndroid 2.3(ジンジャーブレッド)に、来年第1四半期にアップグレードすると28日明らかにした。

ジンジャーブレッドは、Googleが今月初めに公開された最新のOSであり、前作の2.2バージョン(プロヨ)に比べ速度と高い効率性を持っている。

HTCの関係者は、"Android搭載のスマートフォンのアップグレードするかどうかが新たな話題として浮上した中で、素早く対処することにより、競争力を強化する"と明らかにした。

との記事がありました。

やはり「HTC」を選択したのは正しかったと思います。
どこよりも早いアップグレード!!

早くジンジャーブレッドを使ってみたいですね。

2010年12月28日火曜日

【android アプリ 開発】 Form Stuff 作成1 - ImageButton






■Form Stuff 作成1 - ImageButton

1. 次のようにEclipseから新しいプロジェクトを生成します。



2.  res -> layout -> main.xmlファイルのソースコードを修正します。

main.xmlを修正します。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
<ImageButton
    android:id="@+id/android_button"
    android:layout_width="100dip"
    android:layout_height="wrap_content"
    android:src="@drawable/android" />
  
</LinearLayout>


上のコードを見ると、LinearLayout の中に ImageButtonが配置されています。



3. ImageButtonを実装して見ます。

[ImageButtonで使用するイメージ]


を  res -> drawable-hdpi フォルダに追加します。




次はsrc -> my.HelloFormStuff -> HelloFormStuff.java ファイルを修正します。


package my.HelloFormStuff;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.Toast;
public class HelloFormStuff extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      
        final ImageButton button = (ImageButton) findViewById(R.id.android_button);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                // Perform action on clicks
                Toast.makeText(HelloFormStuff.this, "Beep Bop", Toast.LENGTH_SHORT).show();
            }
        });
    }
}


上のコードで必要なpackageは Ctrl + Shift + O を押すと自動追加されるが、 Ctrl+ Shift + O を押すと次のような選択画面が表示されます。
この時、上のOnClickListenerを選択してFinishを押下します。



次は Ctrl+F11 を押下して実行します。


ImageButtonを押すと、下の方に「Beep Bop」と文字が表示されるのが見れます。


次はソースコードを変更してみましょう。


Toast.makeText(HelloFormStuff.this, "こんにちは、アンドロイドです。", Toast.LENGTH_LONG).show();


出力する文字列を変更して、Toast.LENGTH_LONG に変更します。
Toast.LENGTH_LONG が Toast.LENGTH_SHORTより長く表示されます。

[ 実行結果 ]

【android アプリ 開発】 TimePicker 作成








■TimePicker 作成

TimePickerは時間が選択できるウィジェットです。

1.次のようにEclipseから新しいプロジェクトを生成します。


2.res -> layout -> main.xmlファイルのソースコードを修正します。


3.HelloTimePicker.javaを編集します。


package my.HelloTimePicker;

import java.util.Calendar;

import android.app.Activity;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;

public class HelloTimePicker extends Activity {
    /** Called when the activity is first created. */
private TextView mTimeDisplay;
private Button mPickTime;

private int mHour;
private int mMinute;

static final int TIME_DIALOG_ID = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    // capture our View elements
    mTimeDisplay = (TextView) findViewById(R.id.timeDisplay);
    mPickTime = (Button) findViewById(R.id.pickTime);

    // add a click listener to the button
    mPickTime.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            showDialog(TIME_DIALOG_ID);
        }
    });

    // get the current time
    final Calendar c = Calendar.getInstance();
    mHour = c.get(Calendar.HOUR_OF_DAY);
    mMinute = c.get(Calendar.MINUTE);

    // display the current date
    updateDisplay();
}
@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case TIME_DIALOG_ID:
        return new TimePickerDialog(this,
                mTimeSetListener, mHour, mMinute, false);
    }
    return null;
}
// updates the time we display in the TextView
private void updateDisplay() {
    mTimeDisplay.setText(
        new StringBuilder()
                .append(pad(mHour)).append(":")
                .append(pad(mMinute)));
}
// the callback received when the user "sets" the time in the dialog
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
    new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            mHour = hourOfDay;
            mMinute = minute;
            updateDisplay();
        }
    };
    
    private static String pad(int c) {
        if (c >= 10)
            return String.valueOf(c);
        else
            return "0" + String.valueOf(c);
    }    
}



4.Run -> Run で実行します。

[ 実行結果 ]

* 実行画面で "change the time'ボタンを押すと TimePickerが表示されます。
次は修正したソースコードと実行結果です。


@Override
protected Dialog onCreateDialog(int id) {
     switch (id) {
         case TIME_DIALOG_ID:
             return new TimePickerDialog(this,
                 mTimeSetListener, mHour, mMinute, true);   // false -> true に変更。 AM, PM 選択ボタンなし
     }
     return null;
}


[ 実行結果 ]

【android アプリ 開発】 DatePicker 作成








■DatePicker 作成

DatePickerは年月日が選択できるウィジェットです。

1. 次のようにEclipseから新しいプロジェクトを生成します。


2. res -> layout -> main.xmlファイルのソースコードを修正します。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView android:id="@+id/dateDisplay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""/>
    <Button android:id="@+id/pickDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Change the date"/>
</LinearLayout>


[ main.xml ]

3. HelloDatePicker.java を編集します。


package my.HelloDatePicker;

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

public class HelloDatePicker extends Activity {
private TextView mDateDisplay;
   private Button mPickDate;

   private int mYear;
   private int mMonth;
   private int mDay;

   static final int DATE_DIALOG_ID = 0;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       // capture our View elements
       mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
       mPickDate = (Button) findViewById(R.id.pickDate);

       // add a click listener to the button
       mPickDate.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               showDialog(DATE_DIALOG_ID);
           }
       });

       // get the current date
       final Calendar c = Calendar.getInstance();
       mYear = c.get(Calendar.YEAR);
       mMonth = c.get(Calendar.MONTH);
       mDay = c.get(Calendar.DAY_OF_MONTH);

       // display the current date
       updateDisplay();
   }
 
   @Override
   protected Dialog onCreateDialog(int id) {
       switch (id) {
       case DATE_DIALOG_ID:
           return new DatePickerDialog(this,
                       mDateSetListener,
                       mYear, mMonth, mDay);
       }
       return null;
   }
 
   private void updateDisplay() {
       mDateDisplay.setText(
           new StringBuilder()
                   // Month is 0 based so add 1
                   .append(mMonth + 1).append("-")
                   .append(mDay).append("-")
                   .append(mYear).append(" "));
   }
 
   private DatePickerDialog.OnDateSetListener mDateSetListener =
            new DatePickerDialog.OnDateSetListener() {

                public void onDateSet(DatePicker view, int year,
                                      int monthOfYear, int dayOfMonth) {
                    mYear = year;
                    mMonth = monthOfYear;
                    mDay = dayOfMonth;
                    updateDisplay();
                }
            };
  
}


Ctrl+ Shift + O で必要なpackageは自動追加されます。

4. Run -> Run で実行します。

[ 実行結果 ]


実行までは多少時間がかかる場合があります。
change the date ボタン押下すると、 DatePickerが表示されます。
次は日付がYYYY-MM-DD形式で表示されるように修正したコードと結果です。


 private void updateDisplay() {
         mDateDisplay.setText(
             new StringBuilder()
                     // Month is 0 based so add 1
               .append(mYear).append("-")    // 年度が先に出力されるように変更
                     .append(mMonth + 1).append("-")
                     .append(mDay)
                     );
     }


[ 実行結果 ]

2010年12月26日日曜日

【android アプリ 開発】 TableLayout 出力








■TableLayout 出力

TableLayoutは文字通りテーブル型のレイアウトを出力します。

1.次のように新しいプロジェクトを生成します。



2.res -> layout -> main.xmlファイルのソースコードを修正します。


<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1">
    <TableRow>
        <TextView
            android:layout_column="1"
            android:text="Open..."
            android:padding="3dip" />
        <TextView
            android:text="Ctrl-O"
            android:gravity="right"
            android:padding="3dip" />
    </TableRow>
    <TableRow>
        <TextView
            android:layout_column="1"
            android:text="Save..."
            android:padding="3dip" />
        <TextView
            android:text="Ctrl-S"
            android:gravity="right"
            android:padding="3dip" />
    </TableRow>
    <TableRow>
        <TextView
            android:layout_column="1"
            android:text="Save As..."
            android:padding="3dip" />
        <TextView
            android:text="Ctrl-Shift-S"
            android:gravity="right"
            android:padding="3dip" />
    </TableRow>
    <View
        android:layout_height="2dip"
        android:background="#FF909090" />
    <TableRow>
        <TextView
            android:text="X"
            android:padding="3dip" />
        <TextView
            android:text="Import..."
            android:padding="3dip" />
    </TableRow>
    <TableRow>
        <TextView
            android:text="X"
            android:padding="3dip" />
        <TextView
            android:text="Export..."
            android:padding="3dip" />
        <TextView
            android:text="Ctrl-E"
            android:gravity="right"
            android:padding="3dip" />
    </TableRow>
    <View
        android:layout_height="2dip"
        android:background="#FF909090" />
    <TableRow>
        <TextView
            android:layout_column="1"
            android:text="Quit"
            android:padding="3dip" />
    </TableRow>
</TableLayout>


[ 修正後main.xml]

3.メニューから Run -> Run を選択します。

[ 実行結果 ]

ソースコードを分析してみると…

<TableRow> はテーブルの行を意味する。
<TextView> は文字列を出力する。
<view>は水平の区分線を表示する。

次のように最後の行のQuitを出力する部分を変更してみましょう。


 <TableRow>
        <TextView
            android:layout_column="3"   =>  1 から3に変更
            android:text="Quit"
            android:padding="3dip"
            android:textColor="#FF0000"  => 文字色指定
            android:background="#cccccc" => 背景色指定
             />
    </TableRow>

[ 変更したコード ]

[ 実行結果 ]

【android アプリ 開発】 RelativeLayout 出力








■RelativeLayout 出力


RelativeLayoutはボタンやテキストボックス等の構成要素の位置を相対的に配置することができます。

1.次のように新しいプロジェクトを生成します。



2.res > layout > main.xml ファイルを開きます。


3.main.xml ファイルのソースコードを修正します。


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Type here:"/>
    <EditText
        android:id="@+id/entry"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/editbox_background"
        android:layout_below="@id/label"/>
    <Button
        android:id="@+id/ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/entry"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="10dip"
        android:text="OK" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/ok"
        android:layout_alignTop="@id/ok"
        android:text="Cancel" />
</RelativeLayout>



4.Run -> Run を選択して実行します。

[ RelativeLayout 実行結果画面 ]


<xml コードの説明>

android:id="@+id/label"  =>IDはlabel 。
android:text="Type here:"  => labelに表示されるテキスト。
android:layout_below="@id/label" => label の下に配置します。
android:layout_alignParentRight="true" => 親の右に合わせる。OKボタンはTextViewの右に合わせています。
android:layout_toLeftOf="@id/ok" => OKボタンの左に配置します。



次は名前と住所を入力するように修正したソースコードと結果です。


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"    
        android:text="名前と住所を入力したください。"/>
    <EditText
        android:id="@+id/entry"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         android:layout_below="@id/label"
        android:background="@android:drawable/editbox_background"
        />
    <EditText
        android:id="@+id/entry2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/entry"
        android:background="@android:drawable/editbox_background"
        />
    <Button
        android:id="@+id/ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/entry2"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="10dip"
        android:text="OK" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/ok"
        android:layout_alignTop="@id/ok"
        android:text="Cancel" />
</RelativeLayout>

[ソースコード]



[ 実行結果 ]

2010年12月25日土曜日

【android アプリ 開発】 LinearLayout 出力








■LinearLayout 出力

1.次のように新しいプロジェクトを生成します。


2.左のPackage Explorerから res -> layout -> main.xml ファイルを開きます。


3.左下の main.xml タブをクリックしてソースを開きます。


4.XMLコードを修正します。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1">
        <TextView
            android:text="red"
            android:gravity="center_horizontal"
            android:background="#aa0000"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"/>
        <TextView
            android:text="green"
            android:gravity="center_horizontal"
            android:background="#00aa00"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"/>
        <TextView
            android:text="blue"
            android:gravity="center_horizontal"
            android:background="#0000aa"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"/>
        <TextView
            android:text="yellow"
            android:gravity="center_horizontal"
            android:background="#aaaa00"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"/>
    </LinearLayout>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1">
        <TextView
            android:text="row one"
            android:textSize="15pt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
        <TextView
            android:text="row two"
            android:textSize="15pt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
        <TextView
            android:text="row three"
            android:textSize="15pt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
        <TextView
            android:text="row four"
            android:textSize="15pt"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
    </LinearLayout>
</LinearLayout>






5.メニューから Run -> Run を選択して、 Run As ウィンドウで Android Applicationをクリック後、OKを押下します。



6.結果画面です



LinearLayout   は main.xml ファイルにコーディングして出力したが、main.xmlがレイアウトを担当するxmlであることが分かります。
次は灰色を追加したソースコードと結果画面です。.

[ LinearLayout に灰色を追加したxml ]

[ 灰色が追加された結果画面]

【android アプリ 開発】 Hello Android 出力








■Hello Android 出力

1.Eclipseで新しいAndroidプロジェクトを作成します。

1) File -> New -> Project 選択します。


2) New Project ウィンドウでAndroid Projcet 選択後、Nextボタンをクリックします。


3) New Android Project ウィンドウで次のように入力してFinishボタンを押下します。



2.プロジェクトが生成されたら、左のPackage ExplorerからHelloAndroid.java をダブルクリックします。


HelloAndroid.java を開いて見ると、基本的なコードは自動生成されています。


3. 次のコードを追加します。



4.実行します

1) Run -> Run を選択します。


2) Run As ウィンドウで Android Applicationを選択して、OKを押下します。


3) もし、保存していなかったら、Yesを押下して保存します。



5. 結果画面です

2010年12月20日月曜日

【アンドロイド物語】Google、誰でもAndroidアプリを開発できるDIY開発ツール「App Inventor」一般公開









Googleが7月に非公開のプレリリースバージョンを披露した初心者向けのAndroidアプリケーション開発ツール『App Inventor』のパブリックベータ版として、過去15日に出した。

『App Inventor』は専門の開発者以外の人々がアンドロイドアプリを作成できるように設計されたWEBベースのソフトウェアだ。 プログラミング言語を使わなくても、マウス、GUI(グラフィカルユーザーインターフェース)を操作して'ドラッグ&ドロップ'ふうにアプリケーションを設計し、動作の順序を指定することができる。

グーグルは『App Inventor』を『携帯電話用アプリケーションを開発するための最も簡単な方法』と表現した。 『App Inventor』はGoogleアカウントのユーザーの誰もが接続して使うことができる。 もちろん、アプリケーションをテストして使用するには、Androidベースのスマートフォンを直接備えなければならない。

『App Inventor』での開発者は、画面上のコンポーネントを操作して作られたプログラムのソースコードをのぞき見ることができない。 つまりプログラミングを知らなくて良いよりもプログラミングを知ってみても意味がないという話だ。

ソースコードを見ることが出来ないので開発能力がある開発者も『App Inventor』で作成したプログラムを微調整することができない。

色々賛否世論だが、マーケットにアプリが溢れればアンドロイドフォンはもっと普及するだろう。

2010年12月19日日曜日

【アンドロイド物語】スマートフォーン(iPhoneとandroid)向けの公式PlayStationアプリ、欧州でリリース予定








Sony Online Entertainment(以下SOE)が、ヨーロッパPSブログを通じて、スマートフォーン(iPhoneとandroid)向けの公式PlayStationアプリをリリースすると発表しました。ですが、このアプリは噂のPSPフォンみたいにゲームのためのアプリではないですね。



PlayStation Networkのトロフィーや友達のステイタスをスマートフォン上でチェックしたり、プレイステーション 3(PS3)やPSPの最新ゲーム情報、SOEのニュースをチェックすることができます。

最初のバージョンはイギリス、フランス、ドイツ、スペイン、イタリア、オランダの計6ヶ国で利用可能になるが、利用可能地域は今後も拡大していくそうです。日本はないのか-.-;


このアプリはiOS 4搭載のiPhoneまたはiPod touch、Android 1.6以上の環境のアンドロイドフォンで動作します。


まだ未発表のもっと多くの機能が追加される予定だから、もしかしたら、ゲーム機能ついてくるのでしょうか。日本でも使えたらいいですね。

PlayStation公式ブログの記事はこちら(英文)

2010年12月15日水曜日

【アンドロイド物語】 ネクサスS(Nexus S)に搭載されたGoogle Maps for mobile 5.0








ネクサスS公式Youtubeサイトに新しいGoogle Mapsの動画が上がってきました。
やはりMap機能はさすがGoogleですね。
これがあればナビはいらないかも。

モバイル端末での3D機能はちょっと心配ですが、Snapdragon 1GHzであれば大丈夫ですかね。
とにかく正式発表(リリース)を楽しみに待ってます。

2010年12月14日火曜日

【アンドロイド物語】 Android2.3(Gingerbread)を搭載したンドロイドレファレンスフォンNexus-S発表登場








12月6日、Googleの最新モバイルOS-アンドロイド(Android)2.3(Gingerbread)が公開されました。
それと同時に最新レファレンスフォンになるNexusSも発表されました。

最初、バージョン3.0になると予想されたジンジャーブレッド(Gingerbread)が結局マイナーチェンジになったので、あまり変わってないんじゃないかとちょっと心配です。
でも、2.1⇒2.2も結構変わってたので今回はどうかと。。。

NexusSのデザインに関してはやはりサンスン製だからか、GALAXY S(ギャラクシー S)の兄弟みたいな感じです。




<仕様>

 CPU
 1GHz Cortex A8 (Hummingbird) processor
 メモリ
 4GB / 3GB / 1GB + 16GB iNAND
 ディスプレイ
 4.0" WVGA SUPER AMOLED (800x480)
 モバイルカメラ
 5.0 mega-pixel Camera + VGA Video Telephony Camera, 
 Auto Focus, Self shot
 ビデオ
 HD(720p@30fps) video playing, Video recording 480p@30fps
 mpeg4, H.264, H.263
 オーディオ
 MP3, AAC, AAC+, eAAC+, WMA
 通信方式
 2.5G (GSM/ GPRS/ EDGE) : 850 / 900 / 1800 / 1900 MHz
 3G (HSDPA 7.2Mbps, HSUPA 5.76Mbps) : 900 / 1700 / 2100 MHz
 外部接続機能
 Bluetooth technology v 2.1 + EDR
 USB v2.0 (High-Speed)
 Wi-Fi 802.11 b/g/n, DLNA
 サイズ
 63 x 123.9 x 10.9 mm
 バッテリー
 Lithium Ion (Li-Ion) (1500 mAH)
 その他
 Android Market for more applications and contents 
 NFC (Near Field Communications) capability  /  A-GPS    
 Gyroscope Sensor, Accelerometer, Digital compass, Proximity, Light
 プラットフォーム
 Android 2.3 / Gingerbread



Googleの紹介ページへ