2016.5.13

Migaro. Technical Report ダウンロードソース

Migaro. Technical Report セレクション1
i Magazine 2016 夏 掲載
・・・・・・・・・・・・・・・・・・・・・・・・・・・

AndroidアプリケーションでNFCを活用する法
・・・・・・・・・・・・・・・・・・・・・・・・・・・

(1)ソースプログラム1

NFCタグ読取処理例(Android)

・・・・・・・・・・・・・・・・・・・・・・・・・・・

procedure TMainForm.FormActivate(Sender: TObject);
var
Intent: JIntent;
TagParcel: JParcelable;
Tag: JTag;
begin
Intent := SharedActivity.getIntent;
//インテントが有効かチェック if Intent <> nil then
begin //NFCのアクションを選別
if TJNfcAdapter.JavaClass.ACTION_NDEF_DISCOVERED.equals(Intent.getAction) or
TJNfcAdapter.JavaClass.ACTION_TECH_DISCOVERED.equals(Intent.getAction) or
TJNfcAdapter.JavaClass.ACTION_TAG_DISCOVERED.equals(Intent.getAction) then
begin
  TagParcel := Intent.getParcelableExtra(TJNfcAdapter.JavaClass.EXTRA_TAG);
if TagParcel <> nil then
begin
   Tag := TJTag.Wrap((TagParcel as ILocalObject).GetObjectID);
end;
InfoLabel.Text := ‘’;  //タグの読み込み情報を書き出し
NFCTagIdLabel.Text := HandleNfcTag(Tag,
procedure (const Msg: string)
begin
InfoLabel.Text := InfoLabel.Text + Msg + LineFeed;
end);
end;
end;
end;

・・・・・・・・・・・・・・・・・・・・・・・・・・・

(2)ソースプログラム2
NFCタグ書込処理例(Android)

・・・・・・・・・・・・・・・・・・・・・・・・・・・

procedure TMainForm.TagWriteButtonClick(Sender: TObject);
var
NfcAdapter: JNfcAdapter;
TagParcel: JParcelable;
Tag: JTag;
Intent: JIntent;
begin //NFCアダプターをハンドリング
NfcAdapter := TJNfcAdapter.JavaClass.getDefaultAdapter(SharedActivityContext);
if (NfcAdapter <> nil) and NfcAdapter.isEnabled then
begin
  //インテントを取得
Intent := SharedActivity.getIntent;
TagParcel := Intent.getParcelableExtra(TJNfcAdapter.JavaClass.EXTRA_TAG);
if TagParcel <> nil then
begin
Tag := TJTag.Wrap((TagParcel as ILocalObject).GetObjectID);
  //タグに情報書き込み
if not WriteTagText(TagWriteEdit.Text, Tag) then
raise Exception.Create(‘Error connecting to tag’);
end;
end
else
raise Exception.Create(‘NFC is not available’);
end;

・・・・・・・・・・・・・・・・・・・・・・・・・・・