第1回 モバイルFeliCaでHello FeliCa


株式会社アメニクス
x-labチーム
2007/11/1

チップのフリー領域にデータを書き込む

- PR -

 次に、動作確認のできたソースファイル(HelloFeliCa.java)を基に、FeliCaチップのフリー領域へ読み書きを行うコードを実装します。JavaからFeliCaチップのフリー領域へのアクセス方法は非常に簡単です。

 FeliCaチップのフリー領域へアクセスするクラスは、com.nttdocomo.device.felicaパッケージに含まれています。FeliCaを含む各APIの詳細は、NTTドコモのWebサイトで公開されています。

 今回開発するiアプリの実装では、MainPanelクラスのインスタンス生成時にFeliCaチップのフリー領域の読み込みを行い、フリー領域にデータがなければ「Hello FeliCa」の文字をデータとしてフリー領域へ書き込んでいます。

import com.nttdocomo.ui.*;
import com.nttdocomo.device.felica.*;

public class HelloFeliCa extends IApplication {
  public void start() {
        Display.setCurrent((Frame)new MainPanel());
   }
}

class MainPanel extends Panel{
    private TextBox tbxHello = null;

    MainPanel() {
        setTitle("Start IApplication");
        // データがなければ[Hello FeliCa]を初期値にする
        String str = readFelica();
        if ("".equals(str)){
            writeFelica("Hello FeliCa");
            str = readFelica();
        }
        tbxHello = new TextBox("Hello FeliCa", 20, 1, TextBox.DISPLAY_ANY);
        add(tbxHello);
    }

     /**
      * フリー領域へ値を書き込む
      *
      * @param writeData
      */
     private void writeFelica (String writeData){
        try{
            Felica.open();
            FreeArea fa = Felica.getFreeArea();
            fa.write(new int[]{0}, writeData.getBytes());
        }catch (Exception e){
            e.printStackTrace();
        }finally{
            try{
                Felica.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

     /**
      * フリー領域のデータを読み込む
      */
     private String readFelica (){
     String readData = null;
     try{
            Felica.open();
            FreeArea fa = Felica.getFreeArea();
            readData = new String(fa.read(new int[]{0})).trim();
        }catch (Exception e){
            e.printStackTrace();
        }finally{
            try{
                Felica.close();
                e.printStackTrace();
            }
        }
        return readData;
    }
}
HelloFeliCa.java

 フリー領域の作法を知ろう

 FeliCaチップのフリー領域は3つの領域で構成されていて、iアプリ側でプログラムから利用することが可能です。今回のプログラムでは、利用するフリー領域(index=0)をプログラム内で明示的に指定しています。

 フリー領域は1アプリケーションにつき1つのフリー領域のみ利用することが可能です。1つのフリー領域を複数のアプリケーションで共有したり、1つのアプリケーションで複数のフリー領域を利用したりすることはできません。また、1つのフリー領域への書き込みは、64バイトまでの小さなデータしか書き込めないので注意しましょう。

 FeliCaチップにアクセスするためのコードを実装してビルドを行うと、DoJaから「FaliCaCPID」と「FeliCaPIN」の設定が必要だというメッセージがコンソールに出力されます。そのまま設定を行わずにiアプリを起動しても、SecurityException例外が発生してiアプリが正しく起動しません。

図2 「FaliCaCPID」と「FeliCaPIN」の設定が必要

2/3

Index
モバイルFeliCaでHello FeliCa
  Page1
モバイルFeliCa勝手アプリ開発のための下準備
いよいよ“Hello FeliCa”の世界へ
Page2
チップのフリー領域にデータを書き込む
フリー領域の作法を知ろう
  Page3
ADF設定でFaliCaCPIDとFeliCaPINを設定する
データファイルビューワでADFを確認する
いよいよ実機でHello FeliCa

関連記事
5分で絶対に分かるモバイルFeliCa
非接触ICに最適化された「FeliCa」の正体




 Smart&Social フォーラム トップページへ



Smart & Social フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Smart & Social 記事ランキング

本日 月間