NFCの利用可否

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));
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です