안드로이드 FFmpeg Ip 카메라 Rtsp 연결
안드로이드 FFmpeg Ip 카메라 Rtsp 연결 지난 글에서 안드로이드에서 FFmpeg를 사용하기 다운받고 NDK 빌드하는 과정까지 정리를 해봤었는데요. 오늘은 그것들을 이용해서 ffmpeg 타입의 IP 카메라에 RTSP로 접근해서 카메라를 열어보겠습니다. [참고]1. ffmpeg android build2. NDK jni 환경 구축 상대적으로 복잡했던 지난 글들과는 다르게 오늘은 아주 간단하게 마무리가 될 거 같네요. 이게 전부입니다. 일단 앱을 실행할 때 안드로이드 폰 화면 전체를 사용하기 위한 설정을 한 후 SurfaceView를 상속하고 SurfaceHolder.Callback을 구현한 RtspPlayView라는 클래스에 Context와 rtsp url 주소를 넘겨서 또 그것들을 지난 글에서 작..
android NDK jni 사용을 위한 External Tools 설정 및 NDK빌드
android jni 사용을 위한 External Tools 설정하기 이 글은 다른 안드로이드 선배님들의 글을 참고해서 FFmpeg를 빌드하고 JNI를 사용하기 위한 환경을 만들면서 정리해 놓는 초보의 부족한 노트 정리이기 때문에 틀린 내용도 있을 수 있고 부족한 부분이 많으니.... 혹시 이 글을 보시는 분들이 있다면 이해 부탁드리면서... FFmpeg 다운 및 안드로이드 빌드 지난번 글에서는 FFMPEG 형식의 IP Camera를 볼 수 있는 앱을 만들기 위한 준비과정으로 NDK와 FFMPEG를 다운받고 안드로이드 빌드를 진행했었는데요. 오늘은 안드로이드 프로젝트를 생성하고 JNI 형식에 맞는 C언어 헤더 파일을 만들 External Tools를 셋팅 한 후 jni 폴더를 만들고 라이브러리를 불러올 ..
안드로이드 IP Camera Rtsp 접근을 위한 FFmpeg 빌드
안드로이드 FFmpeg 빌드 이번 예제의 시작은 집안에 굴러다니던 아주 오래된 IP Camera에서부터 시작되었습니다.^^ 취미로 안드로이드 공부를 하고 있던 어느 날 서랍을 정리하고 있는데 예전에 한참 유행했던 IP 카메라가 하나 나오더라고요. 보통 밖에서 집안의 상황을 볼 때 사용했던 녀석인데 그동안 저도 모르게 무슨 수난을 겪었는지 이 모양이 됐네요.ㅎ 뼈대만 앙상하게 남아있지만 4~5년 전에는 나름대로 괜찮았던 LW130W라는 모델의 IP Camera입니다. 여하튼 그렇게 우연히 발견된 이 IP Camera를 스마트폰에서 볼 수 있는 안드로이드 앱을 하나 만들어보고 싶어지더라고요. 물론 이 카메라를 볼 수 있는 전용 App이 있습니다. 하지만 호기심이 발동해서 직접 한 번 만들어보고 싶어졌고.....
안드로이드 위험권한 체크
안드로이드 위험 권한 안드로이드 버전 '마시멜로우(API23)'부터는 앱을 이용할 때 필요한 사용자의 권한이 분류가 되었다. 단순하게 개발자가 Manifests에 적으면 되는 일반 권한(Normal Permission)과 사용자로부터 반드시 승락을 받아야 하는 위험 권한(Dangerous Permission)으로 분류가 된 것인데 물론 위험 권한도 매니페스트에 넣어줘야 하는 건 마찬가지다. 차이가 있다면 일반 권한은 앱을 스토어에서 설치할 때 처음 한 번만 승락하면 되는 권한이고 위험 권한은 앱을 설치한 후 실행할 때 사용자에게 다시 한 번 물어봐서 승락을 얻어야 하는 것으로 Dangerous Permission은 개인 정보와 관련된 것들에 접근하는 경우에 필요로 하는데 다음과 같은 것들이 있다. 위치(..
안드로이드 스튜디오 코딩 프로젝트 생성하기
안드로이드 스튜디오 코딩 프로젝트 생성하기 그동안 주먹구구식으로 잠깐씩 봐왔던 안드로이드 코딩 이었는데 체계 없이 이것저것 공부하다 보니 안 그래도 얄팍한 지식이 여기저기 분산되어 있는 느낌이다. 그래서 작은 프로젝트를 하나 만들어보면서 체계적으로 정리를 해보려고 하는데 그마저도 시간이 지나면 잊혀질듯해서 이 블로그에 노트식으로 그 과정을 정리해놓으려고 한다. 공부하면서 만들어볼 프로젝트는 비콘과 관련된 내용인데 어디까지 진도가 나갈지는 모르겠지만 최대한 정리를 해보기로 하고 오늘은 프로젝트부터 만들어본다. ▲안드로이드 스튜디오를 실행 한 후 [File > New > New Project...]를 순서대로 선택해서 프로젝트를 생성한다. ▲Application name과 company domain 그리고 ..
phpmyadmin Database 만들기
안드로이드 앱에서 서버의 Database에 데이터를 전송하는 예제를 공부하면서 만들어보고 있는데요. 지난 글에서는 안드로이드 앱의 화면 구성을 해봤습니다. 화면 구성이라고 해봐야 단순하게 ID와 Password를 설정해서 회원가입을 하고 그 데이터를 기반으로 로그인을 하기 위한 단순한 구조였었는데요. 안드로이드 서버 연동 위한 화면 구성 이렇게 만든 앱에서 서버로 데이터를 보내면 그 내용을 저장할 서버의 공간이 필요하겠죠? 오늘은 PhpMyAdmin에서 Database를 만들고 Table을 만드는 과정을 정리하도록 하겠습니다. (지난 글을 보신 분들은 알겠지만 저는 이미 윈도우 컴퓨터에 가상머신을 설치하고 리눅스 서버를 구축해 놓은 상태이고요. 초보가 공부하면서 정리하는 글이니 가볍게 봐주세요.^^) ▲..
안드로이드 서버 연동 예제 화면 구성
이런저런 안드로이드 앱을 만들어보면서 공부를 하고 있는데 이번에는 서버와 연동하는 [회원가입] 예제를 만들어보면서 정리를 해보려고 합니다. 이 글은 누군가에게 정보를 제공한다는 의미보다는 제가 나중에 다시 참고하기 위해서 정리하는 글이라서 많이 부족한 점 이해 부탁드리고 참고하실 분들은 대충 다른 사람이 정리해 놓은 노트 보듯이 가볍게 봐주시면 감사하겠습니다. 현재 저는 윈도우에 VMware 가상머신을 설치해서 우분투 리눅스를 설치하고 아파치와 PHP 등으로 서버를 구축해 놓은 상태인데요. 그 과정은 아래 글 참고하시고... 리눅스 서버 구축 이번 글부터는 안드로이드와 서버를 연동해서 회원가입 및 로그인하는 과정을 정리해보려고 합니다. 예제는 아주 간단한데요. 안드로이드 폰에서 아이디와 비밀번호를 설정해..
android fragment google map touch event 안될 때
android 공부를 하면서 구글맵을 이용해서 앱을 하나 만들어보려고 했습니다. App은 화면에 보이는 구글맵을 터치하면 그곳의 '위도'와 '경도'를 받아서 주소로 변환을 하고 [위도], [경도], [주소]를 서버로 전송하는 녀석인데요. 중간에 문제가 좀 있어서 한참을 삽질했는데 다음에 같은 실수를 반복하지 않기 위해서 간단하게 정리를 해놓으려고 합니다. 앱의 구조는 대충 이렇게 만들어서 구글맵의 아무곳이나 손가락으로 터치를 하면... 그곳의 위도(Latitude)와 경도(Longitude)를 받아와서 주소로 변환을 하고 [전송] 버튼을 누르면 서버로 전송하도록 하는 내용입니다. 그런데... 처음에는 구글맵을 아무리 터치를 해도 값을 읽어오지를 못하더라고요. 그래서 한참 해결방법을 찾아 헤맸는데... 레..
android studion "some file crunching failed see logs for details" 오류 해결
취미로 android 공부를 하다가 한 번씩 오류를 만나면 주변에 도움을 청할 곳도 없어서 한참을 혼자 헤매는 경우가 종종 있고 럴 때면 온라인상에서 많은 분들의 경험을 둘러보면서 도움을 받곤 하는데요. 어제도 예상치 못한 오류를 만나서 고생하다가 혹시 똑같은 상황으로 고생하시는 저 같은 초보 분들께 조금이나마 도움이 되실까 해서 해결 방법을 정리해보려고 합니다. ▲ 어제 제가 만났던 녀석은 "some file crunching failed see logs for details"였습니다. 아직 기초적인 내용만 공부하고 있고 안드로이드 스튜디오가 익숙하지 않은 저에겐 처음 만나본 오류였고 해결 방법을 찾기 위해서 여기저기 찾아보니 저와 똑같은 상황으로 고생했던 분들이 꽤 있더군요. 그래서 그 해결 방법들을..
안드로이드 어플 만들기 기초 android LayoutInflater 개념 정리
안드로이드 어플 만들기 기초 android LayoutInflater android 앱 만들기 과정에서 사용되는 View나 위젯들은 액티비티와 함께 화면을 구성하는 레이아웃 xml 파일에서 태그로 감싸져서 만들어지는데 이것들이 실제로 화면에 보이고 작동하기 위해서는 메모리에 올라가서 객체가 되어야 한다. 그리고 이렇게 xml 파일의 내용을 메모리에 올려서 객체로 만드는 역할을 하는 게 LayoutInflater이며 그 과정을 '레이아웃 인플레이션'이라고 한다. 그리고 프로젝트를 생성하는 과정에서 만들어지는 레이아웃 파일인 activity_main.xml의 요소는 앱이 실행되면서 MainActivity.java의 onCreate() 안에 있는 setContentView()에 의해서 내부적으로 인플레이션이 ..
Android FrameLayout 예제 만들어보기
Android FrameLayout 예제 이번 글에서는 안드로이드 프레임 레이아웃을 활용해서 View를 전환하는 예제를 만들어보려고 하는데요. (초보가 취미로 안드로이드 공부하면서 노트 정리하듯이 작성하는 글이니 허접해도 이해 부탁드립니다.^^) 프레임 레이아웃은 가장 단순한 레이아웃으로.... 하나의 레이아웃에 하나의 View만을 보여주기 때문에 여러 개를 쌓아놓고 바꿔가면서 하나만 보이게 하면 화면을 전환하는 효과를 만들수 있습니다. 예를 들어 FrameLayout에 여러 개의 ImageView를 중첩해서 올려놓고 그중 하나씩만 보이게 할 수 있습니다. 이번에 만들어볼 예제에서는 FrameLayout에 각각 다른 그림을 넣은 ImageView 두 개를 올리고 버튼을 하나 배치한 후 클릭할 때마다 그림..
안드로이드 스튜디오 강좌 안드로이드 프로젝트 생성
안드로이드 스튜디오 강좌 안드로이드 프로젝트 생성 취미로 안드로이드 프로그래밍 책을 보기 위해서 오랜만에 다시 펴들었는데요. 예전에 잠깐 공부할 때도 안드로이드 스튜디오가 있었지만 그때는 익숙한 이클립스를 사용했었거든요. 그런데 이제는 지원되는 여러 가지 개발 환경 때문에 안드로이드 스튜디오를 필수로 사용하지 않으면 힘들 거 같더군요. 그래서 이클립스는 잊어버리고 안드로이드 스튜디오에 빨리 적응하기 위해서 매일 시간을 내서 조금씩 만져보고 있는데요. 공부하면서 하나씩 노트 정리한다는 생각으로 블로그 포스팅을 시작해보려고 하고요. 그 첫 번째로 안드로이드 프로젝트를 생성하는 과정을 살펴보려고 합니다. 혹시 이 글을 보게 되시는 분들께서는..... 초보가 공부하면서 노트 정리하는 글이니까 허접해도 이해 부탁..
android studio emulator position 에뮬레이터 시작 위치 변경
안드로이드 스튜디오 에뮬레이터 시작 위치 변경하기 이번 글을 제목으로 찾아서 보고 계시는 분들은 저처럼 안드로이드 스튜디오에서 코딩하고 에뮬레이터(Emulator)에서 앱을 실행하는 과정에서 짜증 나는 상황이 있어서겠죠? 저는 코딩한 후 대부분 스마트폰에서 실행을 해보지만 부득이하게 에뮬레이터를 사용해서 할 때도 있거든요. 그런데 안드로이드 스튜디오의 에뮬레이터 시작 위치(position)가 아래 그림처럼 모니터의 위쪽에 붙어서 이동도 안되고.... 짜증 나는 경우가 있어서 이 녀석의 위치를 변경해서 사용하거든요. 혹시 저처럼 Emulator의 위치를 바꿔서 시작하도록 하기 위해서 이 글을 보고 계신다면 잘 오셨습니다. ㅎㅎ 아주 간단하게 android studio emulator의 시작 위치(posit..
android Touch ACTION Event
지난 글에서 onTouchEvent 메서드를 이용해서 화면을 터치했을 때 이벤트가 발생한 곳의 좌표를 구해서 화면에 출력해보면서 기본 개념을 정리했었는데요. 이번 글에서는 Touch ACTION 중 몇 가지를 응용해서 간단한 앱을 만들면서 액션 이벤트에 대해서 알아보겠습니다. 손가락으로 화면을 터치했을 때와 움직일 때 그리고 손가락을 떼었을 때 발생하는 이벤트를 이용해볼 텐데요. 앱을 실행하면 작은 아이콘 하나를 (0,0)의 위치에 나타나도록 하고 화면의 아무 곳이나 클릭하면 그곳으로 옮겨지도록 하며 누른 상태로 끌고 다니면 손가락 끝에 따라다니도록 할 거구요. 손가락을 떼었을 때는 처음 자리(0,0)으로 돌아가도록 하는 내용입니다. 여기서 사용하는 ACTION 상수는 DOWN, MOVE, UP이며 이것..
안드로이드 앱 만들기 onTouchEvent와 invalidate
android onTouchEvent 우리가 사용하는 스마트폰을 조작할 때는 99% 화면 터치로 이루어진다고 해도 과언이 아닐 것이다. 어떤 아이콘이나 버튼을 클릭하기 위해서 손가락으로 스마트폰은 터치하면 안드로이드는 터치한 곳의 좌표와 함께 화면을 단지 터치만 한 건지, 누르고 있는지, 누르고 있다가 떼는지 등 각종 움직임을 인식하게 되는데 이번 글에서는 그중 가장 기본이 되는 터치했을 때 발생하는 이벤트의 좌표를 화면에 출력하는 프로그래밍을 통해서 기본 개념들을 정리해보려고 한다. 안드로이드에서 화면 터치 이벤트를 처리하는 방법은 두 가지가 있지만 이번 글에서는 하나의 뷰에서 사용하기에 좋은 onTouchEvent를 오버라이딩 해서 사용할 것이다. onTouchListener를 등록해서 처리할 수도 ..
안드로이드 스튜디오 핸드폰 연결
안드로이드 스튜디오 핸드폰 연결 지난 글에서 컴퓨터에 android studio를 설치해봤는데 이제부터 하나씩 공부하면서 정리를 해볼까 한다. 그 첫 번째로 Hello World를 출력하는 프로그램을 실제 핸드폰에 연결해서 실행하는 과정을 정리해보려고 하는데.... 안드로이드 스튜디오에서 제공하는 가상머신(AVD)으로도 충분히 결과를 확인할 수 있지만 성능이 조금 부족한 컴퓨터에서는 속도가 너무 느리기 때문에 답답한 분들도 있을 것이다. 그럴 때는 이 글처럼 본인의 안드로이드 핸드폰을 컴퓨터와 연결해서 결과를 확인할 수 있는데 안드로이드 스튜디오에서 프로젝트를 생성하고 실제 핸드폰과 연결해서 실행하는 과정을 정리해본다. 메뉴 중에서 [File > New > New Project]를 순서대로 선택하고.....