NFCの利用可否
NFCアプリでは
端末のNFC搭載確認、
NFCが利用可能になっているか確認
非搭載ならもちろん使えないけど
搭載されていても、設定で無効になっていると使えない
これは、GPSとかBluetoothとかと同じ
NFC搭載されているか調べるには
NfcAdapterクラスのgetDefaultAdapter()を使えばいい
このgetDefaultAdapter()を使うことで
NFC搭載端末なら
NfcAdapterのインスタンスが生成されるけど
NFC非搭載端末ならnullが返ってくる
このため、返り値がnullなら
NFC非搭載端末と判断できる
ソースにすると
onCreate()の中へ記述するので
まずNFCインスタンス取得
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
この返り値で、搭載か非搭載か判断できる
次に、NFCが利用可能になっているか確認する
これは、NfcAdapter.isEnabled()を使う
これは、単純に返り値がtrueとなっていればNFCが利用可能となる
ソースにすると
//NFC搭載かチェック
if(mNfcAdapter != null){
//NFCが有効かチェック
if(!mNfcAdapter.isEnabled()){
//NFCが無効なことをtoastで表示
Toast.makeText(getApplicationContext(), getString(R.string.error_nfc_disable),Toast.LENGTH_SHORT).show();
}
//NFC非搭載なので、ユーザーに通知
}else{
Toast.makeText(getApplicationContext(),getString(R.string.error_nfc_nosupported),Toast.LENGTH_SHORT).show();
}
実際に配布するアプリにするなら
これらのアプリの利用可能の判定に加えて
アプリのメニュー内にNFC設定画面に誘導するようなリンクを追加するなどユーザビリティも意識すること
NFC設定画面については
Android 4.0以下ならACTION_WIRELESS_SETTING
というインテントアクションを
Android 4.1以上なら
ACTION_NFC_SETTING
というインテントアクションを使い
startActivity()を呼び出すことで
NFC機能の設定画面を起動できる
ソースにすると
if(Build.VERSION_SDK_INT >= Build.VERSION_CODES.JELLY_BEANS){
//Android 4.1以上なら、直接NFC設定画面を呼び出すIntent アクションを使う
startActivity(new Intent(Settings.ACTION_NFC_SETTINGS));
}else{
//Android 4.0以下ならwireless設定画面を呼び出すIntentアクションを使う
startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
}