忍者ブログ

アンドロイドのあれこれ

3日続いて連続にNFC関連の記事となります。今回は簡単なAndroid Beamの書き方を紹介します。

public class MainActivity extends Activity implements CreateNdefMessageCallback,
OnNdefPushCompleteCallback {

private static final int MESSAGE_SENT = 1;
private NfcAdapter mNfcAdapter;
private static Context mContext;

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

mContext = this.getApplicationContext();

mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
mNfcAdapter.setNdefPushMessageCallback(this, this);
mNfcAdapter.setOnNdefPushCompleteCallback(this, this);
}

@Override
public NdefMessage createNdefMessage(NfcEvent event) {
//Beamで送りたいメッセージ
String text = "Beam text";
NdefRecord[] record = new NdefRecord[]{ createMimeRecord(
"application/com.example.demobeam", text.getBytes())

/**
* 他のデバイスがAndroidアプリケーションレコード(AAR)を
* 受信したときに指定されたアプリケーションが実行されることが保証されています。
*/
//,NdefRecord.createApplicationRecord("com.example.demobeam")
};
NdefMessage msg = new NdefMessage(record);
return msg;
}

public NdefRecord createMimeRecord(String mimeType, byte[] payload) {
byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII"));
NdefRecord mimeRecord = new NdefRecord(
NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], payload);
return mimeRecord;
}

@Override
public void onResume() {
super.onResume();

//Beamのアクションを受け取ったとき
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
Intent intent = getIntent();
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(
NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage msg = (NdefMessage) rawMsgs[0];
//Beamのメッセージ
String receiveBeam = new String(msg.getRecords()[0].getPayload());
Toast.makeText(getApplicationContext(),
"received:" + receiveBeam,
Toast.LENGTH_LONG).show();
}
}

@Override
public void onNdefPushComplete(NfcEvent event) {
//Beam送信完了時のハンドラー
ndefPushHandler.obtainMessage(MESSAGE_SENT).sendToTarget();
}

private final static Handler ndefPushHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_SENT:
Toast.makeText(mContext,
"Beam sent.....",
Toast.LENGTH_LONG).show();
break;
}
}
};
}

・・・つづきはこちら

今日は、NFCタグの基本の情報を読み取る簡単なサンプルを紹介します。
読み取る情報はタグの、アクション、ID、TechListです。

NFCのパーミッションを追加するのを忘れずに
AndroidManifast.xml
    <uses-permission android:name="android.permission.NFC" />

・・・つづきはこちら

今日はNFCについての記事となります。あまりAndroidとは関係ないかもしれません。
僕はAndroidを通して初めてNFCというモノを知りました。きっかけはAndroid携帯端末で初めてNFCの対応されたNexus Sです。Android SDKでは2.3 API Level 9から対応されています。
実はそれがもっと僕たちの生活に身近なものでした。日本で暮らしている毎日はほとんどNFC規格に含まれている技術を使っています。NFCの、その可能性は今ではより幅広くなりつつあります。

今年はNFCの元年とも言えるでしょう(2011,2012,2013年がNFCの元年という意見もあります)。非接触通信またはICカード技術は生活の中で、Suica・PASMOで駅の改札でかざし、買い物での支払い、行きつけの店のポイントをためる、ホテルの鍵となどして、これまでは限られたところと場面しか使い道がありませんでした。今年に入って多くの開発者、一般の消費者にまで耳にするワードとなりました。

・・・つづきはこちら

去年のひとりAndroid Advent CalendarではAndroidアプリのデフォルトタイトルバーの代わりにレイアウトでタイトルを作るような記事を書きましたが、API level 11から追加されたActionBarならそんな必要はありません(端末のOSがAndroid 3.x以上)

Action Barについて
http://developer.android.com/guide/topics/ui/actionbar.html

今では普通にEclipse(ADTインストール済)から作成されたAndroidのプロジェクトはAction Barがすでに対応されています。
Action Barにアイコンやメニューアイテムなどを追加することもできます。

・・・つづきはこちら

PR
© Android Advent
powered by 忍者ツールズ / 忍者ブログ / [PR]