본문 바로가기

코드리뷰81

안드로이드 앱 SNS 공유, 무료 아이콘 받기 앱을 홍보를 위한 SNS 공유를 해보자. 기본적인 공유 기능은 안드로이드 프레임워크에서 제공한다. 단지 그 기능을 호출할 수 있도록 버튼을 만들어 코드를 추가하면 된다. (1) 공유 버튼 이미지 추가 무료 아이콘을 제공하는 사이트에서 적당한 이미지를 검색해 내려받는다. 구글에서 "아이콘" 입력해 검색하면 무료 사이트가 나온다. www.flaticon.com 사이트가 유명하다. "share" 키워드로 검색하면 아래 아이콘이 수없이 나온다. 마음에 드는 것을 골라서 안드로이드 스튜디오에 카피해서 사용한다. (2) 공유하기 코드 추가 stackoverflow.com/에서 가져온 코드다. 앱 이름을 넣어주면 된다. 나머지는 안드로이드 프레임워크에서 팝업창을 띄우고 안드로이드 버전과 기기에 설치된 앱을 검색해 공.. 2020. 10. 24.
안드로이드 마사지 앱 게시하다 (Awesome Vibrator) 지난 포스팅에 안드로이드 마사지 앱 콘셉트에 대해 설명을 했다. 2020/10/04 - [코드리뷰/코틀린 리뷰] - 안드로이드 마사지 어플 만들기 (코틀린) Vibrator 기능 위주로 코틀린 코드를 설명했었는데, 여기에 디자인을 입히고 기능을 추가해 구글 플레이 스토어에 게시해 보았다. https://play.google.com/store/apps/details?id=com.guslang.vibrator Awesome Vibrator App Massager - Strong vibration - Google Play 앱 All vibrations are generated from the vibrator in your phone, turning your mobile device into a personal.. 2020. 10. 20.
안드로이드 애니메이션 만들기 / Lottie Animation 지난 포스팅에서 안드로이드 마사지 앱 개발 콘셉에 대해 간단하게 소개를 했다. 기능 구현을 목표로 기본 컨트롤로 화면을 구성을 했었는데, 보기 좋은 떡이 맛도 좋은 것처럼 애니메이션 효과를 추가해 보자. 애니메이션을 추가한 초기화면 앱 인트로에 애니메이션을 추가한 화면이다. 뭔가 재미있는 기능들이 숨어 있을 것 같은 궁금증을 생기게 하고 전제적인 UI 디자인과도 잘 맞는다. 버튼에 토글 기능을 추가해 하나의 버튼으로 마사지 진동 On/Off를 구현했다. Lottie 애니메이션 실행 화면 안드로이드 기본 라이브러리는 해당 기능이 제공되지 않으므로 오픈 소스 라이브러리를 추가한다. Gradle Scripts에 해당 라이브러리를 추가한다. 현재 최신 버전은 3.4.4이다. 버전 정보와 사용법은 아래에서 확인할.. 2020. 10. 9.
로또 931회 당첨결과 및 932회 당첨번호 예상! (안드로이드 로또 앱) Lotto & BMI 앱에서 추천한 로또가 모두 낙첨되었다. 2장을 샀는데, 각각 번호 하나씩은 맞았다. 다음 로또 932회 차에는 2개씩 맞는 걸 기대하며 Lotto & BMI 앱에서 추천한 번호를 구입했다. 구글 플레이 스토어에 로또앱이 많이 올라가 있다. 대박 난 앱들은 대부분 당첨확률을 획기적으로 높여주는 스페셜한 알고리즘이 들어가 있는 듯 광고를 하고 있다. 로또 확률상 큰 차이는 없을 것 같은데 말이다. 사람들이 조금이나마 행운을 바라는 심리를 이용한 마케팅이 아닌가 싶다. 그래도 내가 만든 앱인 Lotto & BMI에서 대박 1등이 한번 나왔으면 하는 바램이다. ^^ 로또 931회 당첨결과 Lotto & BMI 앱에서 추천한 "로또 932회차" 번호 키와 몸무게를 넣으면 BMI지수 및 로또 .. 2020. 10. 4.
안드로이드 마사지 어플 만들기 (코틀린) 최근 갤럭시 노트 10으로 기기를 바꿨는데, 다양한 진동 유형과 강도 설정이 가능했다. 이걸 응용해 마사지 어플로 만들어 보면 재미있을 거란 생각이 들어 만들어 보았다. 안드로이드 개발자 사이트와 티스토리 IT 블로그를 참조했다. 마사지 화면 디자인 토글 기능을 넣어서 버튼 하나만 만들었다. 추후에 진동 종류 선택이나 진동과 함께 나오는 뮤직 등을 선택할 수 있는 버튼을 추가해 확장해 나가면 좋을 듯하다 안드로이드 VIBRATE 사용 권한 추가 AndroidManifest.xml에 아래 코드를 추가해 권한을 설정한다. 마사지 진동 컨트롤 코드 작성 모바일 진동요청 처리는 아래 순서로 처리한다. 코틀린 코드로 작성했다. 시스템에서 Vibrator 서비스를 받아온다. 진동 유형, 진폭, 반복 여부를 설정한다.. 2020. 10. 4.
[실전 C언어 코딩 리뷰] - 문자열 복사하기[memcpy() vs strncpy()] C 개발할 때 memcpy와 strncpy 함수의 차이를 정확하게 모른 채 사용하는 경우가 많다. 둘 다 비슷한 결과를 출력되고 성능에도 큰 차이를 느끼지 못하기 때문이다. memcpy 함수가 메모리 자체를 빠른 속도로 복사하기 위해 만들었다면, strncpy 함수는 문자열 자체를 복사하기 위해 만들어졌다. 따라서 주로 이진 데이터는 memcpy 함수를 이용해 처리하고, 일반적인 문자열 처리는 strncpy 함수를 사용한다. memcpy는 레지스터를 사용하므로 처리 속도가 월등히 빠르고, 문자열 종료 문자인 null 여부를 확인하지 않고 정해진 길이 만큼 복사를 한다. 이 부분이 strncpy()와 다른 점이다. 따라서 memcpy 함수를 이용해 문자열을 복사할 경우 종료 문자가 제대로 붙었는지 반드시 .. 2020. 10. 3.
실전 C언어 코딩 리뷰 - 문자열 복사하기[strcpy() vs strncpy()] 자바나 C#계열 언어는 String 자료형이 있어서, 문자 A를 B에 복사한다면 "B = A" 이런 식으로 대입을 한다. 반면 C언어는 String 타입이란 게 없어서 이렇게 대입할 경우 원하는 결과가 나오지 않는다. C언어를 어렵게 생각하게 만드는 부분이기도 하다. 문자열 복사는 strcpy()나 strncpy() 함수를 이용한다. strcpy() 헤더 파일 : string.h #include // src, dest 문자열을 복사하고 문자열(dest)의 시작주소를 리턴한다. char* strcpy(char* dest, const char* src); 두 번째 인자로 전달받은 메모리 주소에 저장된 문자열을 첫 번째 인자로 전달받은 메모리 주소에 복사한다. 순서가 뒤에서 앞으로이다. 실전 예제 : strc.. 2020. 10. 1.
실전 C언어 코딩 리뷰 - 문자열 비교하기(strcmp vs strncmp) 자바나 C#계열 언어와 C언어의 가장 큰 차이점은 문자열 처리 방식이다. 처음 C를 접할 때 가장 이해하기 어려운 부분이기도 하다. C언어에서 문자열은 숫자를 비교하듯 변수 그 자체로 비교할 수 없다. 기본 함수인 strcmp()나 strncmp() 함수를 이용해야 한다. 헤더 파일 : string.h #include // str1, str2 : 비교 문자열 int strcmp(const char* str1, const char* str2); 포인터로 받는 두 개의 문자 str1과 str2를 비교한다. 각 문자열의 첫 번째부터 비교해서 두 문자가 다르거나, NULL을 만날 때까지 비교한다. [비교 결과 ] ▶ 일치 : 0 ▶ 불일치 : 0이 아닌 값 (str1이 크면 0보다 큰 값, 작으면 0보다 작은 .. 2020. 9. 30.
로또 931회 당첨번호 예상! (안드로이드 로또 앱) 앱 개발을 통해 돈을 벌 수 있을까? 안드로이드 앱을 개발해 소소한 광고비를 번다는 포스팅을 자주 볼 수 있다. "초보자 누구나 할 수 있음"이라는 지극히 평범하면서도 자극적인 문구를 보며, 한번 해볼까 하는 생각이 들었다. 안드로이드 앱은 자바나 코틀린이 주력 언어다. 자바는 익히 알려져서 더 설명할 게 없고 코틀린은 최근에 나온 핫한 언어다. 구글 안드로이드에서 적극 밀고 있다. 새로운 걸 해보자는 마음으로 코틀린으로 약 1달간 틈틈이 책과 인터넷 개발자 페이지를 통해 소스코드를 배우고 디버깅했다. 코틀린은 C언어와는 많이 달랐다. C가 절차적이고 명확한 대신에 개발자의 수고가 많이 든다면, 코틀린은 UI기반에 수많은 자동화된 인텔리 센스와 이벤트/콜백 중심의 언어였다. '어떻게든 짜기만 해, 그러면.. 2020. 9. 30.
안드로이드 코틀린 프래그먼트 만들기 간단한 프래그먼트 코드를 작성하고 프래그먼트 컨셉과 흐름을 파악해 보자 build.gradle에 프로그먼트 dependencies를 추가한다. (-> Sync Now) def nav_version = "2.3.0" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" 2.Fragment package 및 파일 생성 fragment용 패키지를 하나 생성하고 그 아래에 프래그먼트들을 생성한다. New->Fragment->Fragment (Blank) : fragment 간 이동 확인을 위해 m.. 2020. 9. 19.