목록Android (947)
투케이2K
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/upQ0c/btrmSxQTDL4/wdOzJKeyw2FKaAvXDP63W0/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [참고 사이트] https://developer.android.com/guide/topics/connectivity/nfc/hce?hl=ko 호스트 기반 카드 에뮬레이션 개요 | Android 개발자 | Android Developers 호스트 기반 카드 에뮬레이션 개요 NFC 기능을 제공하는 많은 Android 지원 기기에서 이미 NFC 카드 에뮬레이션을 지원하고 있습니다. 대체로 카드는 보안 요소라고 하는 기기의 별도 칩에 의해 에 developer.android.com
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vZfQS/btrmja8NJd4/ikhSCQ6bvOTkXpVvcKmMeK/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [방법 설명] // [파이어베이스 푸시 전송 주소] post 방식 : https://fcm.googleapis.com/fcm/send // [파이어베이스 전송 json 타입] { "data" : { "title" : "Push Test", "body" : "Talend API 푸시테스트", "sort" : 2 }, "to":"d2fBYJVLSV6mgiyThmeDN6:APA90_dS ... ", "Android": { "priority": "high" }, "priority": 10 } [소스 코드] // TODO [파이어베이스 푸시 알림 수신 처리 부분] @Override public void onMessageRe..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/828cj/btrmiULg0xd/X4pJYNflMEyH3khWWNDUR1/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // TODO [모바일 진동 발생 메소드] // [필요 퍼미션 : ] Handler mHandler = new Handler(Looper.getMainLooper()); public void PushCallVibrator(){ try { /** * [메시지를 수신받으면 진동 실행] * 1. 진동 권한을 획득해야한다. AndroidManifest.xml * 2. Vibrator 객체를 얻어서 진동시킨다 */ Vibrator mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); long[] pattern = {100, 1000, 100, 10..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/DCM5A/btrmgQXKqLI/KrvKI5rW6ruK3M1DmqnbY1/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // [핸들러 전역 변수 선언 실시 : getMainLooper] Handler mHandler = new Handler(Looper.getMainLooper()); // [일정 시간 후 작업 수행 핸들러 호출] mHandler.postDelayed(new Runnable() { @Override public void run() { // 작업 로직 } }, 1000); //1초뒤 실행 (작업 예약)
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bbyfOG/btrmace6cMK/q7eJz8By0xUmzTaVOndKxk/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // TODO [모바일 키 이벤트 발생 체크 부분] @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // [모바일 디바이스의 뒤로가기 키 이벤트가 발생한 경우] if (keyCode == KeyEvent.KEYCODE_BACK) { try { Log.i("---","---"); Log.w("//===========//","================================================"); Log.i("","\n"+"[A_Main >> onKeyDown() :: 백버튼 터치시 뒤로 가기 이벤트 실시]"); Log..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cfQprS/btrmadygpni/FVxJ5EavFpZarQ9DHEqUq1/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // TODO [안드로이드 액티비티 종료 상태 감지 : 생명주기] @Override public void onDestroy(){ /** [설 명] * 1. 앱 작업 목록 지우기 수행 시 super.onDestroy 수행 후 onDestroy에서 정의한 하위 로직은 수행을 안합니다 * 2. 해결 방법 : super.onDestroy 선언을 로직 수행 후 실행되도록 하위쪽으로 배치합니다 */ // [앱 종료 시 필요한 로직 및 초기화 코드 작성] // [하단에 super.onDestroy 선언] super.onDestroy(); }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cXOQ7V/btrlSwlbcKX/ecigeTpUoX1vFnI6Zd53e0/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // TODO [Hex String convert byte array : 사용 방법 : hexStringToByteArray("0123abcd")] public static byte[] hexStringToByteArray(String data) { byte[] temp = new byte[data.length() / 2]; for(int i = 0; i < data.length() / 2; ++i) { temp[i] = toByte(data.substring(i * 2, i * 2 + 2)); } return temp; } public static byte toByte(String hexStr) { byt..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cSwp1y/btrlwIS6we6/M01wzfAgKJ6dS3e9kExkJK/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // [SEARCH FAST] : [String 데이터 삽입 및 핸들러 호출] Message message = new Message(); Bundle data = new Bundle(); data.putString("data", “hello”); message.setData(data); ScheduleHandler.sendMessage(message); // 핸들러에 전송 // [SEARCH FAST] : [핸들러에서 String 데이터 받기 수행] Handler ScheduleHandler = new Handler() { public void handleMessage(Message msg) { // [인풋..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bAFKmA/btrliUNkclO/ZwJkE89ubcQZTz4Mk53za1/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] import android.util.Base64; import android.util.Log; import java.security.spec.AlgorithmParameterSpec; import java.security.spec.KeySpec; import java.util.Arrays; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; im..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AYCqv/btrk6Nf3vi3/FjbcP8mUH0M7uFuaEImoBK/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // TODO [팝업창 사용 정의 실시] AlertDialog.Builder builder; AlertDialog alertDialog; // alertDialog.dismiss(); // [팝업창 없앰 실시] 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 [버튼 이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cza0S5/btrkAWRUEPl/laEs5sIcZBDoftRpcDbayK/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] [결과 출력]
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EwvCE/btrj4n3w8xI/wQNEkaVQDjmLynAASJkd5K/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // [안드로이드 오레오 이상 버전인 경우 >> AppShortcuts 바로가기 메뉴 추가 [5개 까지 가능]] /** * [AppShortcuts 설명] * staitc AppShortcuts : AndroidManifest.xml 파일에 메타 태그 등록 및 xml 파일로 추가 * dynamic AppShortcuts : 코드로 동적으로 추가 실시 아이콘 생성 선택 * pinned AppShortcuts : 코드로 동적으로 추가 실시 및 아이콘 생성됨 */ /** * [AppShortcuts 속성 정리] * shortcutId : Shortcut의 고유한 ID (Shrotcut을 등록하거나 찾을 때 이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/biQHO2/btrj3NgZ5DA/hdusfJFrcsEvvnk0aCPdmk/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] //TODO [raw 폴더에 저장된 텍스트 파일 읽기 실시] public void readTxtFile() { String result = ""; // [안드로이드 프로젝트 raw 폴더에 저장된 텍스트 파일 읽기] InputStream txtResource = getApplicationContext().getResources().openRawResource(R.raw.test); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int len = 0; try { len = txtResource.read(); // 반복문을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CIRNQ/btrj10VZZVw/kd79Sb9xLZq7REvDsV63G0/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] /** ========= [필요한 퍼미션 및 라이브러리] ========= **/ //TODO [퍼미션] /** * * * */ //TODO [라이브러리] /** * allprojects > repositories > mavenCentral() 추가 * implementation("com.squareup.okhttp3:okhttp:4.9.0") * */ /** ========= [GET 방식 동기 HTTP 요청 - 쿼리 파라미터 전송] ========= **/ public class RequestSyncGetHttp extends Thread { private boolean responseFl..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/w9g6v/btrjQfXXSZR/B5FwIjK0uzkA1DMDkEkhHk/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] main_webview.setWebChromeClient(new WebChromeClient() { // 웹 브라우저 콘솔 로그 확인 @Override public boolean onConsoleMessage(ConsoleMessage consoleMessage) { Log.i("---","---"); Log.d("//===========//","================================================"); Log.i("","\n"+"[A_Main >> onConsoleMessage() :: 웹 브라우저 콘솔 로그 확인 실시]"); Log.i("","\n"+"[url :: ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Yhx00/btrjByrxvru/9BH3A1tthLJuGkwwvypKbK/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // TODO [정규식 수행 메소드 : C_Util.matchString("hello@1")] public static String matchString(String value) { /* [요약 설명] 1. 정규식 패턴 ^[a-z] : 영어 소문자 허용 2. 정규식 패턴 ^[A-Z] : 영어 대문자 허용 3. 정규식 패턴 ^[ㄱ-ㅎㅏ-ㅣ가-힣] : 한글 허용 4. 정규식 패턴 ^[ㄱ-ㅎㅏ-ㅣ가-힣] : 숫자 허용 5. 정규식 패턴 ^[ ] or ^[\\s] : 공백 허용 */ // 결과를 반환할 변수 선언 실시 String result = ""; // 정규식 패턴 형식 정의 String pattern =..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cb5bQy/btriZrexg4y/56KwWKbr86OJqUepbbSQQk/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드]
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dePE7z/btrhgj4iMoZ/HFQgwHHlugBjFKkpLd3iN1/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] /** * [카레라 후레쉬 켜기 , 끄기 설명] * 1. [퍼미션] : 사전 카메라 퍼미션을 사용자로부터 권한 인증을 받아야합니다 * * * * * * 2. [로직 정리] : * 퍼미션 권한 사용자로부터 허용 받기 * 카메라 후레쉬 (Flash) 기능을 지워하는지 체크 * 모바일 버전 (23) 마시멜로우 기준 카메라 ON , OFF 처리 실시 * */ CameraManager mCameraManager = null; Camera mCamera = null; boolean mCameraFlag = false; //TODO [ON = true / OFF = false] public void cameraFla..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cnMzPN/btrhjs6Y9f3/t8yiMTAZcBtECO8PiLYm81/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] // ============= [사전 선행 작업 필요 로직] ============= /* 1. 파이어베이스 콘솔에서 프로젝트 등록 실시 2. 파이어베이스 콘솔에 등록된 프로젝트 google-services.json 파일 복사 >> 3. google-services.json 파일 >> [Project] [app] 폴더에 삽입 실시 4. build gradle 에 의존성 부여 실시 (버전 별로 다를 수 있습니다) 5. 파이어베이스 연동 테스트 진행 (상단 tools 메뉴 >> Firebase 메뉴 선택 >> Cloud Messaging) 6. AndroidManifest.xml 파일에 메타 코드 및 서비스..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/OyH4v/btrhglmDmzz/1L3gPS5QOELgvC9a27jnSK/img.png)
[개발 환경 설정] 개발 툴 : AndroidStudio 개발 언어 : java [소스 코드] /** * [도즈 모드, 화이트 리스트 설명] * 1. [도즈 모드] : * 마시멜로우 (6.0, SDK 23) 이상 배터리 사용량 최적화를 위해 일정시간 이상 동안 * 화면이 꺼진 상태 및 움직임이 없는 상태 인 경우 앱 기능 사용 제한을 두는 것입니다 (일정 시간 제한은 제조사별 다름) * * * 2. [화이트 리스트] : * 간단히 설명해 배터리 최적화 정책에서 제외하는것입니다 * 화이트 리스트는 앱에서 활성 비활성, 사용자가 직접 활성 비활성하는 방법이 있습니다 * * * 3. [화이트 리스트 참고] : * 앱에서 직접 활성 및 비활성 설정 시 퍼미션 필요 : * 앱에서 직접 활성 및 비활성하는 ..