on
199. (AndroidStudio/android/java) NFC HCE 카드 에뮬레이터 통신 수행...
199. (AndroidStudio/android/java) NFC HCE 카드 에뮬레이터 통신 수행...
728x90
반응형
[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : java
[요약 소스코드]
/** [액티비티 실행 준비 메소드] **/ @Override public void onResume(){ super.onResume(); Log.d("---","---"); Log.d("//===========//","================================================"); Log.d("","
"+"[A_Nfc > onResume() 메소드 : 액티비티 실행 준비]"); Log.d("//===========//","================================================"); Log.d("---","---"); //TODO [NFC 지원 여부 및 활성 상태 확인 >> 서비스 호출] try { // [0 = NFC 지원안하는 기기 / 1 = NFC 지원 및 기능 비활성 상태 / 2 = NFC 지원 및 기능 활성 상태] if(getNfcEnable() == 2){ Toast.makeText(getApplication(), "NFC 동작을 수행합니다.",Toast.LENGTH_SHORT).show(); //TODO [NFC HCE 통신 지원 서비스 호출] Intent A_Nfc_Service = new Intent(getApplication(), A_Nfc_Service.class); A_Nfc_Service.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); startService(A_Nfc_Service); overridePendingTransition(0,0); } } catch (Exception e){ e.printStackTrace(); } } /** [NFC 활성 상태 확인 코드] **/ public int getNfcEnable(){ // AndroidManifest.xml 파일 퍼미션 // // 리턴 결과 변수 선언 실시 // [0 = NFC 지원안하는 기기 / 1 = NFC 지원 및 기능 비활성 상태 / 2 = NFC 지원 및 기능 활성 상태] int result = 0; // NFC 활성 상태 확인 실시 try { NfcAdapter nfcAdapter = null; nfcAdapter = NfcAdapter.getDefaultAdapter(getApplication()); if(nfcAdapter == null){ //TODO NFC를 지원하지 않는 기기인지 확인 Log.d("---","---"); Log.e("//===========//","================================================"); Log.d("","
"+"[A_Nfc > NFC 지원 기기 확인 : 지원하지 않는 모바일 기기]"); Log.e("//===========//","================================================"); Log.d("---","---"); result = 0; //TODO [Alert 팝업창 알림 실시] getAlertDialog("[알림]", "NFC 기능을 지원하지 않는 단말기입니다.", "확인", "취소", ""); } else { //TODO NFC가 켜져있는지 확인 [NFC 지원 기기] Log.d("---","---"); Log.w("//===========//","================================================"); Log.d("","
"+"[A_Nfc > NFC 지원 기기 확인 : 지원하는 모바일 기기]"); Log.w("//===========//","================================================"); Log.d("---","---"); if(nfcAdapter.isEnabled() == true){ Log.d("---","---"); Log.w("//===========//","================================================"); Log.d("","
"+"[A_Nfc > NFC 기능 활성 확인 : 활성 상태]"); Log.w("//===========//","================================================"); Log.d("---","---"); result = 2; } else { Log.d("---","---"); Log.e("//===========//","================================================"); Log.d("","
"+"[A_Nfc > NFC 기능 활성 확인 : 비활성 상태]"); Log.e("//===========//","================================================"); Log.d("---","---"); result = 1; //TODO [Alert 팝업창 알림 실시] getAlertDialog("[알림]", "NFC 기능이 비활성 상태입니다.
NFC 기본 모드를 활성화해주세요.", "설정", "취소", ""); } } } catch (Exception e){ e.printStackTrace(); } // 결과 리턴 실시 return result; } /** [Alert 팝업창 호출 메소드 정의] **/ public void getAlertDialog(String header, String content, String ok, String no, String normal){ //TODO [타이틀 및 내용 표시] final String Tittle = String.valueOf(header); final String Message = String.valueOf(content); //TODO [버튼 이름 정의] String buttonYes = String.valueOf(ok); String buttonNo = String.valueOf(no); String buttonNature = String.valueOf(normal); try { //TODO [AlertDialog 팝업창 생성] new AlertDialog.Builder(A_Nfc.this) .setTitle(Tittle) //[팝업창 타이틀 지정] //.setIcon(R.drawable.tk_app_icon) //[팝업창 아이콘 지정] .setMessage(Message) //[팝업창 내용 지정] .setCancelable(false) //[외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정] .setPositiveButton(buttonYes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub if(Message.contains("NFC") && Message.contains("비활성")){ //TODO [NFC 설정 인텐트 이동 실시] Intent intent = new Intent(Settings.ACTION_NFC_SETTINGS); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); startActivity(intent); overridePendingTransition(0, 0); } } }) .setNegativeButton(buttonNo, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }) .setNeutralButton(buttonNature, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }) .show(); } catch (Exception e){ Toast.makeText(getApplicationContext(), Tittle+"
"+Message,Toast.LENGTH_SHORT).show(); e.printStackTrace(); } }
[NFC HCE 서비스 주요 로직]
[첨부 파일]
nfc hce 통신 소스코드.txt 0.02MB
728x90
반응형
from http://kkh0977.tistory.com/1280 by ccl(A) rewrite - 2021-10-04 11:27:47