이제 껏 갤럭시 S와 S2를 진저브레드를 사용하여 개발을 하고 있었다.물론 주로 S3를 이용하여 작업을 했지만, 이들도 실제 테스트에서 빠지지 않았다.S2가 2대라서 1대는 ICS를 사용하고 한개는 진저브레드를 사용하고 있는 상황이다.개발용으로 사용하던 터라 S2 한대는 ICS로 업그래이드 하지 않았다.하지만, 이제 구글도 그렇고 우리나라 주요 메이져 개발사들도 진저브레드를 버리고, ICS이상에서만 동작하는 식으로 프로그래밍 환경을 바꾸고 있다.심지어는 구글은 구세대의 OS는 버리다시피한다는 느낌마저든다. 허니콤을 쓰는 장치는 주로 태블릿에 들어갔기에, 실제 ICS이상으로 사실상 갔지만, 외국의 개발사들의 경우 아직도 진저브래드를 지원하는 경우도 있다.이는 OPEN GLES 2.0를 전혀 문제 없이 지원..
안드로이드 카메라 NV21바로 shader에서 처리하기. 안드로이드에서 Preview데이터를 받으면 NV21이라는 규격으로 받아오게 된다.물론 다른 형태도 지원하지만 필자가 테스트해본 바로는 NV21를 그냥 사용하는 것이 가장 간단하다는 결론을 내렸다. NV21을 RGB로 만드는 것에는 이미지라는 큰 데이터를 다루기에 부하가 많이 걸려 부하를 줄이기 위한 여러가지 작업을 하던 중 NV21을 바로 이용하여 처리하는 방법이 떠올랐다..(머리가 나빠졌는지 이 간단한 걸 알아내는 데 이리 오래 걸리다니..) NV21은 YPlane + VUPlane으로 구성되어 있다.이 Plane을 각각 Plane를 Texture로 만든다..(2개의 Texture를 이용한다.)여기서 VUPlane은 YPlane의 1/4크기를 갖..
동영상이나 디지털인식장치(카메라 등등)을 사용할 때, 이미지의 정보가 RGB보다는 YUV색을 쓰는 경우가 많다. 이 YUV로 표현된 형태를 Texture등으로 만들어야 할 경우 RGB 색공간으로 변환하는 작업을 해야 하는 데, 이미지라는 상당히 큰 데이터를 다루는 문제라 실제 변환작업은 영상의 frame-rate를 떨어뜨릴 정도로 부하가 걸린다.이 변환작업만으로 완성된 결과가 나오면, 상관없을 정도지만, 이 것뿐만아니라 다른 작업또한 부하가 걸리니, 이 작업의 부하를 좀 줄일 필요가 있다. 실제 카메라등에서 넘어오는 데이터는 그 들만의 형태를 가지게 되는 데, 이 것을 변환하는 작업은 2부분으로 주로 나뉜다.1 ) 처음에는 color pixel의 배치가 순서대로 되어 있지 않으므로(보통 Y-U-V가 따로..
그리 어려운 개념은 아니지만, image의 stride는 늘 나를 괴롭힌다. image를 다룰 때마다 신경을 안 쓸 수가 없는 부분이며, 정확히 명시되어있지 않는 상황에서는 일일이 테스트를 거쳐 파악을 해야할 경우도 다반사다. stride는 이미지의 한 줄(row)의 크기를 나타내는 것으로 이미지의 width와는 다른 개념이다. 이미지를 메모리든 파일이든 저장된 형태를 결정짓는 부분이다. 한 픽셀이 RGB 3바이트로 구성된 이미지를 예를 들어 보자. 이미지의 크기가 3x3으로 가정하고 다음의 구조를 보자. RGB RGB RGB PPP RGB RGB RGB PPP RGB RGB RGB PPP P : padding 위의 이미지는 width값은 3[RGB]*3[byte per pixel]이지만, stride값..
카메라api를 이용하여 preview를 받아오는 중에.. NV21은 모든 기기에서 지원하고, setPreviewFormat을 쓰지 않을 경우에 NV21이 기본 값이다. 하지만 필자가 가지고 있는 기기들을 살펴본 결과 YV12형식을 대부분 지원(+1)하였다. NV21은 V와 U값이 1byte씩 교차하면서 저장되어 있는 데 반해, YV12는 전체V(V-Plane)와 전체U(U-Plane)이 따로 저장이 된다. 필자는 Preview를 OpenGLES에 Texture를 만들어야 했기 때문에, NV21보다는 YV12를 사용하기로 했다.(물론 NV21를 Y와U와 V로 분리하는 코드를 넣기로 했다. ) shader에서 YUV각각의 값을 RGB로 변환하는 코드를 두고, texture의 YUV위치를 vertext sha..
구버전의 카메라Api를 사용하여 Preview를 보이게 하는 과정에서, setPreviewCallback을 사용할 경우, 지속적으로 메모리를 할당하는 방식을 쓰기 때문에, 효율을 위해 setPreviewCallbackWithBuffer를 사용할 수 밖에 없다. 실제 setPreviewCallback만 사용할 경우 메모리할당이 지속적으로 일어나며, 메모리를 해제한다고 GC의 순간 멈춤 또한 지속적으로 발생한다.GC때문에 Logcat에는 GC가 동작에 따른 로그로 가득차기 일 수 있다. 효율적인 Preview를 위해 setPreviewCallBackWithBuffer를 사용해야 하는 데, 역시 예상대로 android개발은 삽질의 연속이다. 같은 코드를 사용하여 테스트를 한다고 해도, 어떤 기기에서는 상당히 ..
안드로이드 YV12 이 문서 오류가 있으니 수정되기 전까지 보지 마세요..ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 안드로이드의 카메라는 기본적으로 NV21방식을 쓴다 모든 안드로이드 기기의 카메라는 NV21로 촬영할 수있다. 아니면 기기에 들어갈 수 없다. 단, 구글이 정책을 바꾸면..헉~, 어찌 되건 NV21은 아마 거의 지원할 것이다. 언젠가 YUV_420_888가 기본이 될지도 모르겠다. 롤리팝부터는 YUV_420_888를 권장하기 때문에.... 필자가 테스트한 장치들의 경우 Camera Api(구버전)의 경우 NV21과 YV12를 지원하는 것으로 보였다. NV21은 다음의 구조를 가진다. 6x4픽셀크기의 이미지를 예를 들어 설명하면, 바이트순서는 다음과 같다( 16byte align stride 부분은 무시하고 보라..
안드로이드 장치에 장착된 카메라를 이용하는 프로그램을 연습 중이다.솔직히 필자의 경우 카메라를 사용할 일이 없어서 무심히 지나치던 부분인데, 일반 사용자들이 이렇게도 카메라를 이용하여 촬영을 많이 할 줄은 몰랐다.그래서 관심을 가지고 구글의 API문서를 정독을 시작했다. https://developer.android.com/guide/topics/media/camera.html : 킷캣까지.. 구글이 제공하는 일반적인 카메라 사용법https://developer.android.com/reference/android/hardware/Camera.html : 킷캣까지의 class 처음 위의 두 페이지에 들어가면 가장 눈에 띄는 것이 바로 이 문서들은 롤리팝부터는 Deprecated되었다는 것이다.글을 쓰고 ..
TextToSpeech를 이용하여 프로그래밍을 하고 있었다.TextToSpeech의 클래스를 랩핑하기 위한 작업을 위해 트래이닝에 들어갔다.전체를 Context로 묶고 시작하던 중에 난관에 부딛히고 말았다. 필자가 하고 싶었던 일은다름과 같은 static함수를 만들어 바로 소리로 출력하고 싶었다.(파일로 저장도 동일한 방법을 써야 한다.) public static function speak( Context context, String text, String utteranceId, [My Progress Callback]);이 함수는 자체적으로 TTS엔진을 초기화하고 소리로 출력을 하고 TTS엔진을 소멸하는 과정까지 한번에 처리하는 것이었다. 문제는 TextToSpeech instance를 생성하는 과정에..
TTS 설정에 관한 내용은 다음의 링크를 참고하세요. https://jamssoft.tistory.com/45 TTS 사용 / TTS 설정 #1 TTS(Text to speech)를 필자가 처음 본 것은 1989년도 였습니다. 영어만 되기 했지만, 지금 사용하는 TTS와 비교해보면, 어떻게, 그 옛날에 "어떻게 이 걸 만들어 낸 사람이 있으며, 어떻게 이 걸 만들 생각을 했.. jamssoft.tistory.com 안드로이드 TTS 프로그래밍 변경사항 : 너무 대충정리한 거라.. 올바르지 않는 부분이 많을 수 있다. API 4(DONUT) TTS지원시작 API 8(FROYO) areDefaultsEnforced : 사용자 설정을 변경하는 기능이 있었던 건 같은데.. API 13 NDK에서 지원시작.. A..
android { .... .... sourceSets { main.java.srcDirs += 'src/main/' } } build.gradle 파일의 android 부분에내용을 추가 한다. 여러개를 넣을경우 sourceSets { main { java.srcDirs = [ '/src/man', 'c:/myjavapack/classes' ] } } build.gradle file의위치는 app 밑에 있는 것이다.(최상위가 아니다.) 이렇게 하고 sync하면 자동으로 프로젝트에 추가 된다.
개인정보 취급 방침 JMusic은 어떠한 개인 정보도 수집하거나 요구하지 않습니다.
Change Logv1.1- Enhance stablity- Opus play back support - support Opus in ogg container only - metadata extraction is not supported- Enhance visualizer frame-rate- In player mode, volume button is separated to volume up and down buttons- In player mode, Text outline is added for white background - At song list, landscape mode added- In player mode, Landcape supported - Hardwae decoder support, ..
앱을 만드는 과정에서 그만 전화송수신 상태에서도 음악이 흘러나오는 황당한 버그가 있었다.자동으로 끊길거라 생각해던차라 전혀 이런 버그가 있을 거라는 상상을 하지 못했다.게다가 테스트를 통화가 끊긴 스마트기기를 주로 쓰다보니 완전히 상상도 못했던 치명적인 버그를 그만 한달이상 두고 말았다 이번에는 통화상태를 처리하는 코드를 만들어 보자. 당연히 Android OS가 처리를 해줘야 하는 문제라 통화상태에 대한 통화상태정보는 Broadcast되는 것을 처리하기만 하면 된다. Broadcast를 받기위해 어떤 Broadcast를 받을지를 지정한다.AndroidManifest.xml파일에 다음의 코드를 추가한다. 보면 바로 알 수 있게, 전화가 오는 것과 통화를 거는 것 두가지가 분리되어있다. 이제 Receive..
JMusic v1.1 released https://play.google.com/store/apps/details?id=com.tistory.jamssoft.jmusic JMusic 라이브 월페이퍼를 지원하는 음악플레이어JMusic - Player with WallPaper 설명 음악파일 내부의 이미지에 따라 배경화면이 변하는 플레이어 각종 화면효과 지원 간단한 음악플레이어로 mp3, flac, ogg파일을 지원합니다. 플레이어의 사용법은 어렵지 않습니다. 플레이어 화면상에 음악에 따른 FFT, SPECTRUM, Wave를 지원합니다. 라이브 배경화면으로 설정시 음악내부의 이미지를 이용하여 배경화면을 지정할 수 있습니다. 장치의 기본 이퀄라이저를 지원하며 사용자의 조정이 가능합니다. 홈화면 위젯을 지원하..
Admob을 지원하기 위해 Google play service를 V29[V30]로 업데이트를 하였다. 테스트를 하면서 안 것이 android 4버전이하[ICS도]에서는 Admob이 보이지를 않는 사태가 발생하였다.Logcat을 살펴 본 결과 This app is using a lightweight version of the Google Mobile Ads SDK that requires the latest Google Play services to be installed, but Google Play services is either missing or out of date 위와 같은 오류가 발생하여 보이지를 않았다. 바로 검색에 들어갔다. 검색을 하면서 최근에 발생한 문제라 못찾을 수도 있겠다고 생각했..
JMusic v1.0 released https://play.google.com/store/apps/details?id=com.tistory.jamssoft.jmusic JMusic 라이브 월페이퍼를 지원하는 음악플레이어JMusic - Player with WallPaper 설명 음악파일 내부의 이미지에 따라 배경화면이 변하는 플레이어 각종 화면효과 지원 간단한 음악플레이어로 mp3, flac, ogg파일을 지원합니다. 플레이어의 사용법은 어렵지 않습니다. 플레이어 화면상에 음악에 따른 FFT, SPECTRUM, Wave를 지원합니다. 라이브 배경화면으로 설정시 음악내부의 이미지를 이용하여 배경화면을 지정할 수 있습니다. 장치의 기본 이퀄라이저를 지원하며 사용자의 조정이 가능합니다. 홈화면 위젯을 지원하..
- Total
- Today
- Yesterday
- gpgpu
- 아끼는 법
- 금리
- Android
- 에어콘
- 전기세
- 공유 컨텍스트
- 재태크
- 재테크
- 사용료
- 경제보복
- 블로그
- ComputeShader
- choreographer
- 에어컨
- 적금
- 전기요금
- texture
- 컴퓨트셰이더
- 티스토리
- 애드핏
- 컴퓨트쉐이더
- 텍스처
- 애드센스
- 예금
- 안드로이드
- TTS
- OpenGLes
- OpenGL ES
- 전기료
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |