AudioRecord 와 AudioTrack의 채널

컴퓨터/Android 2014. 8. 7. 12:28

이번에 프로젝트를 위해 필요한 음성녹음을 위해 AudioRecord을 통한 녹음과 AudioTrack으로 재생을 시도했습니다.

구글링을 통해 구한 소스를 조금 제것에 맞게 수정해서 테스트용으로 실행하려는데 

Front channels must be present in multichannel configurations 라는 에러를 뱉더군요

구글링을 해도 나오는건 안드로이드 자체 소스밖에 없고... 그냥 안드로이드 소스를 읽다보니 별거 아니였습니다. 

AudioRecord의 Channel은 Front든 Right든 Mono든 IN으로 해주셔야하고

AudioTrack의 Channel은 OUT으로 해주셔아 하는겁니다.

이런 간단한것때문에 한시간 정도 삽질했다는게 안타깝네요. 다른분들은 이러한일로 삽질하지 마시기 바랍니다 ㅠㅠ!

설정

트랙백

댓글

PagerSlidingTabStrip에서 탭안에 Fragment의 생명주기

컴퓨터/Android 2014. 7. 2. 20:04

PageSlidingTabStrip을 사용하여 탭을 구성하던 도중 첫번째 프래그먼트가 두번째 프래그먼트에서 막 생성되고 그렇게 꼬이는 현상이 발생하였습니다.

안드로이드 Fragment 생명주기에 대한 이해가 부족해서 생긴 현상인데요. 기본적으로 Tab은 양옆에 탭만 Fragment를 살려두고 그 나머지 탭의 Fragment는 모두 DestoryView 해버립니다. 예를 들어서 1번탭에서 3번탭으로 가면 1번탭의 Fragment는 Destroy됩니다. 그리고 2번으로 가면 다시 CreateView가 호출됩니다. 

개발할 때 참고하시기 바랍니다. 이것때문이 4시간정도 삽질했네요 ㅠㅠ

설정

트랙백

댓글

플랫플랫한 디자인의 Card UI Library

컴퓨터/Android 2014. 7. 1. 22:08


이런 안드로이드 라이브러리 개발자분이 정말 대단하다고 생각됩니다... ㅜ 요즘 여러가지 Card UI들을 만나보실 수 있습니다.


깃허브 주소 : https://github.com/gabrielemariotti/cardslib

설정

트랙백

댓글

[ MySQL ] 기본 명령어 정리

컴퓨터/서버 셋팅 2014. 7. 1. 10:01

계정 생성

GRANT ALL PRIVILEGES ON [데이터베이스.테이블] TO '[계정]'@[호스트]IDENTIFIED BY '[비밀번호]';


권한 확인

SHOW GRANT FOR '[계정]'@[호스트];


권한 삭제

REVOKE ALL PRIVILEGES ON [데이터베이스.테이블] TO '[계정]'@[호스트] IDENTIFIED BY '[비밀번호]';


계정 삭제

DROP USER '[계정]'@[호스트];


데이터베이스 추가

CREATE DATABASE '[데이터베이스명]';

'컴퓨터 > 서버 셋팅' 카테고리의 다른 글

[Ubuntu] 서버 설치 후 셋팅들  (0) 2014.06.28

설정

트랙백

댓글

슬라이더도 같이 자연스럽게 스와이프 되는 PagerSlidingTabStrip

컴퓨터/Android 2014. 7. 1. 02:13

카카오톡이나 페이스북 같이 자연스러운 애니메이션과 함께 스와이프 하고 싶을때 사용할 수 있습니다. 기본 ActionBar Tab보다 커스텀 시 훨씬 이쁩니다.



깃허브 주소 : https://github.com/astuetz/PagerSlidingTabStrip


설정

트랙백

댓글

[Ubuntu] 서버 설치 후 셋팅들

컴퓨터/서버 셋팅 2014. 6. 28. 17:20

- 한글 설정

- apt-get update & apt-get upgrade 패키지 목록 최신으로 받아오기

- APM 설치

1. 아파치 서버 설치

sudo apt-get install apache2


2. MySQL 인증 모듈 설치

sudo apt-get install libapache2-mod-auth-mysql


3. MySQL 서버/클라이언트 설치

sudo apt-get install mysql-server mysql-client


4. PHP 설치

sudo apt-get install php5 php5-cli curl memcached php5-curl php5-gd php5-memcache php5-mysql php-apc php5-xsl php5-imap libssh2-php libapache2-mod-php5 php5-gd php5-xmlrpc php5-intl


5. 아파치 서버 재시작

sudo /etc/init.d/apache2 restart


6. 작동 상태 확인 (Check to see if it works)

sudo netstat -nltp

올바르게 작동된다면 apache 옆에 "LISTEN" 이라는 문구가 뜹니다

그러면 웹 브라우저에서 서버주소로 접속해봅시다.

7. Apache 셋팅 : http://s2junn.tistory.com/56


- vimrc 설정

vim을 사용하신다면 vimrc를 설정하시면 훨씬 더 편하게 사용하실 수 있습니다. 제 vimrc를 공유합니다. (vim플러그인도 깔려있기 때문에 오류가 날 수 있습니다. 플러그인 부분을 지우고 사용하세요!)

.vimrc


- Vim 플러그인 관리(Vundle) : http://blog.skyserv.kr/15

- Java 설치 : http://theeye.pe.kr/archives/2105

- 계정생성시 자동으로 생성되는 폴더 & 파일 설정

계정생성시 자동으로 public_html이나 vimrc를 홈디렉토리에 만들어 주기 위해서는 /etc/skel 에다가 그런것들을 만들어 주시면 됩니다.

'컴퓨터 > 서버 셋팅' 카테고리의 다른 글

[ MySQL ] 기본 명령어 정리  (0) 2014.07.01

설정

트랙백

댓글

Python Library Requests를 소개합니다.

컴퓨터/Python 2014. 5. 27. 10:25

Python은 urllib를 통해 네트워크 접속이 가능하지만 프록시나 세션 설정을 위해서는 CookieJar나 Handler를 설정해줘야 합니다. 이러한 번거로움을 없애기 위해서

Requests 라이브러리를 사용해봅시다.

자세한 내용은 QuickStart 와 Documents를 참조합니다.

Link : http://docs.python-requests.org/en/latest/

'컴퓨터 > Python' 카테고리의 다른 글

파이썬 랜덤 IP 주소 생성 코드  (0) 2013.06.23

설정

트랙백

댓글

단어 암기 프로그램 Memorizing World - Beta 0.1v

컴퓨터/개발 프로그램 2013. 8. 8. 04:09



단어 암기 프로그램 Memorizing World 입니다.

Java 프로그램이므로 jdk를 꼭 설치하셔야 합니다...!!


사용법은 간단합니다. setFile에서 준비해두신 엑셀파일을 불러오시면 됩니다.



첫번째 줄에는 영어를 , 두번째 줄에는 한글을 쓰시면 됩니다.

수정해야 할 사항이나 불편한점이나 추가해야할만한 사항들은 댓글러 적어주세여!


MemorizingWorld.zip




설정

트랙백

댓글

파이썬 랜덤 IP 주소 생성 코드

컴퓨터/Python 2013. 6. 23. 16:38

 

'.'.join(map(lambda x: str(random.randrange(1,256)), range(4)))


'컴퓨터 > Python' 카테고리의 다른 글

Python Library Requests를 소개합니다.  (0) 2014.05.27

설정

트랙백

댓글

헷갈리는 포인터와 배열 확실하게 잡자

컴퓨터/C언어 2012. 12. 17. 01:13

포인터 너무 난해하죠..? 저는 C언어를 공부하면서 처음으로 고비를 느낀게 포인터에서였는데요... 처음엔 이걸 도대체 왜 쓰는거야? 이런 생각도 많이 했는데 지금 보면 포인터는 정말 대단하고 좋은놈이에요 !

우리도 한번 포인터의 매력에 빠져볼까요?


포인터 ? 그거 * 아니야 ?

네 *이 맞습니다. 

int a = 10;

int * ptr = &a;

이런 선언이 있다면 여기서 *과 &이 의미하는건 뭘까요? 일단 익숙한 &부터 볼까요? 어디서 많이 본것같은이놈은 바로 scanf 에서 입력을 받을 때 사용하는 놈이었죠? 그 때 &은 주소값을 의미한다고 배웠습니다. 그러면 ptr은 a의 주소값을 담고있다 라고 생각할 수 있겠네요. 그런데 a는 int형이죠? 그래서 앞에 int를 쓰고 주소값을 담고 있다는 뜻으로 * 을 쓰는거죠 ! 이제 위의 문장이 어느정도 이해는 가시나요?


포인터 도대체 왜 쓰는거야 ?

이놈의 포인터... 대체 왜쓰는 걸까요? 이유야 정말 많습니다... 함수부분에서 call by value와 call by reference를 배우셨나요? 안 배우셨으면 한번 읽어보세요 ~


· call by value

- 함수의 매개변수를 복사해서 사용 ... 실제 메인함수에서 전달한 매개변수에 영향을 끼치지못함

· call by reference

- 함수의 매개변수를 포인터 즉 주소값으로 사용 ... 포인터로 간접접근해서 메인함수에 영향을 미침


외에도 포인터를 사용하는 이유를 열거해 보자면

- 함수로부터 하나 이상의 값을 리턴 하기 위하여 

- 한 함수에서 다른 함수로 배열이나 문자열을 편리하게 보내기 위하여 

- 배열을 쉽게 다루기 위하여 

- 메모리에 있는 정보를 쉽게 다루기 위하여 

- 복잡한 자료 구조를 효율적으로 처리하기 위해 

- 호출하는 함수의 매개 변수의 값을 호출당하는 함수에서 변경하기 위하여 

- 배열로 생성할 수 없는 데이터를 생성하기 위해 

- 메모리 공간을 효율적으로 사용하기 위해

등등 진짜 셀수 없이 많습니다. 포인터의 필요성은 자료구조와 알고리즘을 배우다 보시면 느끼시게 될 겁니다. ㅎㅎ


설정

트랙백

댓글