반응형

안드로이드/개발관련(Kotlin) 37

안드로이드에서 공용키 암호화(RSA) 사용하기(Kotlin)

이번 글에서는 안드로이드에서 RSA암/복호화를 하는 방법에 대해서 알아보자. RSA는 대표적인 공용키 암호화 방식으로써, 암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 다른 것을 공용키, 비대칭키 암호화 방식이라고 한다. 여기서 모두에게 공개하는 키를 공용키라고 하고, 누구에게도 알리지 않고 나만 가지고 있는 키를 개인키라고한다. RSA알고리즘을 사용하기 위해선 이 둘을 한 쌍으로 하는 KeyPair가 반드시 필요하다. 그럼 일단 KeyPair를 만들어보도록 하자. val keygen = KeyPairGenerator.getInstance("RSA") keygen.initialize(2048, SecureRandom()) var keyPair = keygen.genKeyPair() KeyPair는..

안드로이드 Sha256 Hash화

이번 글에선 Sha256알고리즘을 사용해 메시지의 Hash값을 구하는 법에 대해 알아보도록 하자. fun getSign(input: String): String{ val hash: ByteArray try{ val md = MessageDigest.getInstance("SHA-256") md.update(input.toByteArray()) hash = md.digest() }catch (e: CloneNotSupportedException){ throw DigestException("couldn't make digest of patial content") } return Base64Utils.encode(hash) } Hash화는 매우 간단하게 짧은 코드로 끝낼 수 있다. 먼저 ByteArray변수인..

안드로이드에서 X.509 인증서, CRL 사용하기

이번 글에서는 안드로이드에서 X.509인증서와 CRL을 받아와서 사용해보도록 하자. X.509인증서와 CRL에 대한 내용은 생략하도록 하고, 두 데이터는 전달 받을 때 pem형식으로 받아온다. pem형식은 아래와 같이 되어있다. -----BEGIN CERTIFICATE----- MIIDizCCAnOgAwIBAgIUS8lUTmZGBA+IbTMGkCLVKT6RdMYwDQYJKoZIhvcNAQEL BQAwNjELMAkGA1UEBhMCa3IxEzARBgNVBAoMClN1d29uVW5pdi4xEjAQBgNVBAMM CXJvb3RjYVlTWTAeFw0yMTA2MDIyMjEzMDBaFw0yMjA2MDIyMjEzMDBaMDExCzAJ BgNVBAYTAmtyMRIwEAYDVQQKDAlTdXdvblVuaXYxDjAMBgN..

안드로이드 권한(Permisson) 요청

안드로이드를 통한 개발 시 특정 기능을 사용하기 위해선 Manifest파일에 권한을 선언해야 한다. 이번 글에서는 Manifest파일에 권한을 선언하는 방법, 위험 권한을 사용자에게 요청하는 방법 등에 대해 알아보자. 권한 등급 안드로이드에서의 권한은 일반 권한, 위험 권한, 서명 권한의 세 가지 보호 수준으로 나뉜다. 또한 각 수준마다 앱 사용 시 사용자에게 권한을 요청하여야만 해당 권한을 사용하는 기능이 제대로 동작할 수 있다. 일반 권한(Normal Permission) 일반 권한에는 인터넷(INTERNET), 블루투스 상태 확인(BLUETOOTH), 기기 간 근거리 통신 사용(NFC)등의 권한이 있으며, 앱 설치 시 사용자에게 권한 승인을 결정하는 팝업창을 보여준다. 권한 선언은 Manifest파..

안드로이드 View에 외곽선(테두리) 추가하는 법

안드로이드에서 디자인을 위해 View에 테두리를 넣는 법에 대해 알아보도록 하자. 흔히 말하는 '야매'로 해결하려면 다른 View를 하나 생성하여 두께를 1dp, 2dp 등으로 설정하여 해결할 수도 있지만, 이 방법은 조금 비효율적일 것이다. 그래서 테두리를 설정하기 위해 xml파일을 하나 만들어 View의 background로 설정할 것이다. 먼저, drawable폴더에 view_border.xml파일을 하나 만들어주도록 하자. 위의 코드를 보면, stroke에서 테두리의 두께와 색상을 설정할 수 있다. 위에선 3dp로 두께를 설정했고, solid에서 배경색을 지정할 수 있다. View의 background로 지정하는 것이기 때문에 배경색을 맞춰서 잘 지정해주어야 한다. 그리고 item에서 방향마다 두..

안드로이드 리스트에 View붙이기 (Header, Footer)

이번 글에선 ListView의 상단 또는 하단에 다른 View를 부착하는 법에 대해서 알아보도록 하자. ListView는 목록을 보여주기 위해서 사용되는 View이며 이 리스트에 대한 특징, 제목 등을 표현하기 위해 상단에 붙이는 것을 Header, 리스트를 다루기 위해 버튼 등을 하단에 붙이는 것을 Footer라고 한다. Xml파일 작성 먼저, Header와 Footer에 사용할 View의 리소스 파일을 작성한다. 화면 구성은 아래와 같이 해보도록 하자. Header를 위한 Layout파일부터 추가해보도록 하자. 다음으로 Footer를 위한 Layout파일을 추가하자. 다음으로 MainActiviy Layout에 ListVIew를 하나 추가한다. LIstView에 Header, Footer추가 이제 M..

안드로이드 버튼 클릭 시 퍼지는 effct주기(Ripple Effect)

안드로이드에선 기본적으로 버튼을 추가하면 클릭 시 해당 부분부터 퍼지는 이펙트가 내장되어있다. 하지만 버튼에 색상을 넣기 위해 background를 설정하면 이러한 이펙트가 사라지게 된다. 그래서 이번 글에선 이러한 퍼지는 이펙트를 직접 custom하여 버튼에 추가하는 방법을 알아보자. 일단 res/drawable폴더에 원하는 이름의 xml파일을하나 생성한다. 여기선 btn_effect.xml이라는 파일을 생성하도록 하겠다. 위와 같이 추가하고, 이를 적용시킬 버튼에 background로 설정해주도록 한다. . . 생략 . . . . 생략 . . 위에선 검은 배경에 회색 이펙트를 주어서 잘 안보이는데, 직접 색을 바꿔서 해보는걸 추천한다.

Geocoder를 사용해 주소를 좌표로 변경하는 방법(안드로이드, Koltin)

안드로이드에서 위치를 사용해 무언가 작업을 하려고 할 때 좌표를 주소로 바꾸는 경우도 필요하지만, 반대로 주소를 좌표로 바꾸는 경우도 필요하다. 이번 글에선 후자의 작업을 Geocoder를 사용해서 해결하는 법을 알아보도록 하자. private fun searchAddress(address: String){ lateinit var list: MutableList try{ list = Geocoder(context).getFromLocationName(addr, 5) }catch(e: IOException){ e.printStackTrace() Toast.makeText(context, "Error", Toast.LENGTH_SHORT).show() } if(list.size == 0){ Toast.mak..

GPS 튀는 현상 보정

졸업 프로젝트 진행하면서 GPS를 사용하는데 실제 테스트를 해보니 GPS위치가 튀어서 한번에 원래 자리에서 몇십미터씩 이동하는 경우가 있었다. 이런 경우를 해결하기 위한 방법을 생각해봤다. 먼저, 필자는 GPS위치를 구하기 위해 LocationManager의 GPS Provider를 사용한다. 그리고 이 GPS Provider에는 좌표값 외에 속도값도 존재하는데, 이 속도값을 사용하여 GPS 보정을 해준다. (속도값은 m/s로 계산된다) 방법은 다음과 같다. 1. 이전에 구한 GPS 위치를 저장해둔다. 2. 현재 GPS Provider에서 구한 속도값을 사용하여 이전 좌표에서 이동 가능한 최대 거리를 계산한다. 3. 현재 구한 좌표가 이 최대 거리를 넘어가서 측정되면 보정을 통해 이동 가능한 최대 거리로..

반응형