com.docomostar.device.felica
クラス Felica

Object
  上位を拡張 com.docomostar.device.felica.Felica

public final class Felica
extends Object
 [iアプリオプションAPI]

FeliCa 機能を制御する基本クラスです。

このAPIでは、便宜上、FeliCa 機能の利用形態を

に分類しており、open()を呼び出した後に、それぞれ
オンラインアクセスの場合:
getOnlineFelica()
オフラインアクセスの場合:
getOfflineFelica(int, int)
フリーエリアアクセスの場合:
getFreeArea()
アドホック通信の場合:
getAdhocDataTransfer()
を呼び出すことによって得られるオブジェクトを通じて、 目的とするアクセス・通信を実現することができます。 詳細は、それぞれのクラス・メソッドの説明を参照してください。
なお、外部 R/W からのアクセスを受け付けるために、 事前に何らかのメソッドを呼び出しておく必要はありません。 外部 R/W からは常にアクセスが可能です。 このためアプリケーション開発者は、 オンライン・オフライン・フリーエリアアクセスによるトランザクションと、 外部 R/W からのアクセスによるトランザクションを排他制御できないことに注意する必要があります。

FeliCa をオープンした状態で、発着信によりサスペンドした場合、 または、サスペンド中に発着信があった場合、 強制的に close() が呼ばれます。
ミニアプリ実行時の Selected 状態においては、上記に加えて、 FeliCa をオープンした状態で Widget View が非表示状態に遷移した場合にも、 強制的に close() が呼ばれます。 ミニアプリ実行時の Focused または Unfocused 状態においては、 FeliCa をオープンした状態でサスペンドした場合、 サスペンド理由に関わらず、強制的に close() が呼ばれます。

また、ネイティブのセキュリティ設定により FeliCa 機能がロックされている状態では、 FeliCa 機能を利用することはできません。 FeliCa をオープンした状態で、FeliCa 機能がロックされた場合は、 強制的に close() が呼ばれます。

アプリケーションが FeliCa IC チップの搬送波出力を開始している状態で、 発着信以外によりサスペンドした場合、 システムが強制的に搬送波を停止します。

導入されたバージョン:
Star-1.0

フィールドの概要
static int PRIVACY_SETTING_OFF
          プライバシ設定を表す定数の一つで、プライバシ設定がされていないことを表します(=1)。
static int PRIVACY_SETTING_ON
          プライバシ設定を表す定数の一つで、プライバシ設定がされていることを表します(=0)。
 
メソッドの概要
static boolean canRegisterNodes()
           このアプリケーションに関係するノード(システム・エリア・サービス)のうち、 未登録ノード分の登録可否を調べます。
static void close()
          FeliCa をクローズします。
static AdhocDataTransfer getAdhocDataTransfer()
           アドホック通信用に AdhocDataTransfer オブジェクトを取得します。
static int[] getBlockInformation(int systemCode, int nodeCode)
           このメソッドは、キャリア専用のトラステッドAPIです。
static FreeArea getFreeArea()
          フリーエリアアクセス用に、FreeAreaオブジェクトを取得します。
static int[][] getIssuedNodeList(int systemCode, int areaCode, int privacyType)
           このメソッドは、キャリア専用のトラステッドAPIです。
static int[] getLockedNodeList()
           このアプリケーションに関係するノード(エリア・サービス)のうち、 遠隔個別領域停止中のノードリストを取得します。
static int[] getLockedNodeList(int[] serviceId)
          このメソッドは、キャリア専用のトラステッドAPIです。
static OfflineFelica getOfflineFelica(int card, int systemCode)
           オフライン処理用に、OfflineFelicaオブジェクトを取得します。
static OnlineFelica getOnlineFelica()
           オンライン処理用に、OnlineFelicaオブジェクトを取得します。
static int[] getSystemCodeList()
           このメソッドは、キャリア専用のトラステッドAPIです。
static void open()
           FeliCa をオープンします。
static void reset()
          FeliCa をリセットします。
static void turnOffRFPower()
          搬送波の出力を停止します。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

PRIVACY_SETTING_ON

public static final int PRIVACY_SETTING_ON
プライバシ設定を表す定数の一つで、プライバシ設定がされていることを表します(=0)。

導入されたバージョン:
Star-2.0
関連項目:
定数フィールド値

PRIVACY_SETTING_OFF

public static final int PRIVACY_SETTING_OFF
プライバシ設定を表す定数の一つで、プライバシ設定がされていないことを表します(=1)。

導入されたバージョン:
Star-2.0
関連項目:
定数フィールド値
メソッドの詳細

open

public static void open()
                 throws FelicaException

FeliCa をオープンします。 このメソッドを呼び出すと、デバイス (FeliCa IC チップ) に電源が供給されます。 既にオープンした状態で呼び出した場合には何も行いません。

このメソッドを呼び出した時に、 FeliCa IC チップが既に搬送波検出によって起動されている場合、 例外 FelicaException(ID_OPEN_ERROR, TYPE_UNDEFINED_ERROR) が発生します。

例外:
UnsupportedOperationException -
FeliCa機能をサポートしていない場合に発生します。
IllegalStateException -
Bluetooth 通信中(一度でも Bluetooth.getInstance() 呼び出しが成功した後の状態)に呼び出された場合に発生します。
IllegalStateException -
UART 通信中 (Connector.open() によって UART 通信を行うコネクションをオブジェクトを取得し、 かつ、そのコネクションがクローズされていない状態) に呼び出された場合に発生します。
SecurityException -
ネイティブのセキュリティ設定により FeliCa 機能がロックされている場合に発生します。
FelicaException -
(ID_OPEN_ERROR, TYPE_UNDEFINED_ERROR)
外部R/Wから使用中など、FeliCaのオープンに失敗した場合に発生します。以下の場合にも発生します。
  • 遠隔個別領域停止処理/解除処理実施中により、FeliCa のオープンに失敗した場合
  • ミニアプリ実行時における以下の場合
    • 他のミニアプリが既に FeliCa IC チップをオープン中の場合
    • ADF に FeliCaCPID キー指定のある他のミニアプリがアプリ起動時の CPID チェック中である場合

close

public static void close()
                  throws FelicaException
FeliCa をクローズします。 このメソッドを呼び出すと、デバイス (FeliCa IC チップ) の電源が切断されます。 既に FeliCa がクローズされている場合や、 FeliCa がオープンされていない場合には何も行いません。 オンライン通信中である場合は、 サーバーに通知することなくデバイスの電源が切断されます。

例外:
UnsupportedOperationException -
FeliCa機能をサポートしていない場合に発生します。
FelicaException -
(ID_CLOSE_ERROR, TYPE_UNDEFINED_ERROR)
FeliCaのクローズに失敗した場合に発生します。

getOnlineFelica

public static OnlineFelica getOnlineFelica()

オンライン処理用に、OnlineFelicaオブジェクトを取得します。 このメソッドを複数回呼び出しても、常に同じインスタンスが返ります。

なお、パーミッションとしてFeliCaオンライン機能の利用が許可されていない場合には、 このメソッドを呼び出した時点でセキュリティ違反として強制終了されます。

戻り値:
OnlineFelica オブジェクトを返します。
例外:
UnsupportedOperationException -
FeliCa機能をサポートしていない場合に発生します。
DeviceException -
(ILLEGAL_STATE)
FeliCaがオープンされていない場合に発生します。

getOfflineFelica

public static OfflineFelica getOfflineFelica(int card,
                                             int systemCode)
                                      throws FelicaException,
                                             java.io.IOException

オフライン処理用に、OfflineFelicaオブジェクトを取得します。 このメソッドを呼び出すと、 下記の設定にて、 指定されたカードに対してポーリングを行います。 同じカードの異なるシステムへの ポーリングに成功すると、そのカード内で システム切り替えが発生しPINの解除情報がクリアされます。

内部カード 外部カード
タイムアウト値500[ms] 250[ms]
リトライ数0 0

このメソッドは、引数の組合せに関係なくポーリングを行います。 ポーリングの成功結果によって取得したIDmが、 それまでに取得したことのないIDmである場合は、新規にインスタンスを生成し返します。 既に取得済みのIDmである場合は、その時と同じインスタンスを返します。

処理対象カードについて:
処理対象カードにおいて、外部カードをサポートします。 引数 card に 外部カード(OfflineFelica.CARD_EXTERNAL)を指定可能です。
システムコードについて:
管理システムのシステムコードは指定できません。 処理対象カードが内部カードである場合には、 フリーエリアのシステムコードも指定できません。 従って、以下の場合には例外 IllegalArgumentException が発生します。 なお、処理対象カードが外部カードである場合には、 フリーエリアのシステムコードを指定することができます。
  • 引数 systemCode に管理システムのシステムコードが指定された場合
  • 引数 card に 内部カード が指定された場合に、 引数 systemCode にフリーエリアのシステムコードが指定された場合
パーミッションについて:
以下の場合には、このメソッドを呼び出した時点でセキュリティ違反として強制終了されます。
  • パーミッションとしてFeliCaオフライン機能の利用、FeliCaリーダ/ライタ機能の利用のいずれも許可されていない場合
  • 引数 card に 内部カード が指定された場合に、 パーミッションとしてFeliCaオフライン機能の利用が許可されていない場合
  • 引数 card に 外部カード が指定された場合に、 パーミッションとしてFeliCaリーダ/ライタ機能の利用が許可されていない場合

パラメータ:
card - 処理対象カード (OfflineFelica.CARD_INTERNAL、 またはOfflineFelica.CARD_EXTERNAL)。
systemCode - システムコード。 0 以上 216 - 1 以下の値が指定できます。
戻り値:
引数 card に 内部カード が指定された場合には OfflineFelica オブジェクトを、 外部カード が指定された場合には ThruRWOfflineFelica オブジェクトを返します。 ただし、引数 systemCode にワイルドカードが指定された場合、 以下の条件を満たしたときには null を返します。
  • ポーリングの成功結果によって取得したシステムコードが管理システムのシステムコードである場合
  • 引数 card に 内部カード が指定された場合に、 ポーリングの成功結果によって取得したシステムコードがフリーエリアのシステムコードである場合
例外:
UnsupportedOperationException -
FeliCa機能をサポートしていない場合に発生します。
DeviceException -
(ILLEGAL_STATE)
FeliCaがオープンされていない場合に発生します。
DeviceException -
(ILLEGAL_STATE)
オンライン処理が既に開始されている場合に発生します。
IllegalArgumentException -
引数 card に不正な値 (上述の処理対象カード以外)が指定された場合に発生します。
IllegalArgumentException -
引数 systemCode に負の値、 または 216 以上の値が指定された場合に発生します。
IllegalArgumentException -
引数 systemCode に管理システムのシステムコードが指定された場合に発生します。
IllegalArgumentException -
引数 card に内部カードが指定された場合、かつ、 引数 systemCode にフリーエリアのシステムコードが指定された場合に発生します。