Android 2011. 11. 1. 15:06
간단합니다. 


이렇게 하면 해당 텍스트 뷰에 패키지 명의 앱 이름을 뽑아 올 수 있습니다. 
posted by 젊은쎄오
:
Android 2011. 9. 1. 20:38

안드로이드 인트로 화면을 만드는 방법입니다.

인트로를 만들려면 introActivity와 메인 화면 두 개만 있으면 됩니다.

전체적인 방식은 인트로 화면을 앱 구동시 첫 화면으로 셋팅하고 , 인트로 화면에 들어서면

핸들러를 이용하여 딜레이를 줍니다, 이 시간동안 인트로 화면이 떠있겠죠, 그리고

fade in , fade out 애니메이션을 줘서 자연스럽게 메인화면으로 넘어가는 방식입니다.

우선 앱구동시 첫 화면을 인트로 화면으로 하기 위해선 , 매니페스트로 가서

 
메인액티비티에 있던 인텐트 필터 부분을 인트로 액티비티 안으로 가져옵니다. 이 인텐트 필터는 

보시듯 처음 런칭될때 메인이 되는 액티비티를 선택해주는 부분입니다.

그리고 인트로 액티비티 구성을 


그림과 같이 작성합니다, 위에서 부터 보면 타이틀바를 없애고 핸들러를 호출합니다. 딜레이를 4000을 줘서 대략

4초간 인트로화면이 떠있게 만든 후 인텐트로 다음 메인화면을 지정하고 overridePendingTransition 이란 함수를

이용하여 fade in, fade out 효과를 줍니다. 순서가 중요합니다,  저 순서가 아니면 애니메이션이 안먹거나

오류가 납니다. 그리고 아래 오버라이드 된 부분은 인트로중에 뒤로가기를 눌러 바탕화면으로 간다면

4000밀리세컨 초 이후에 메인화면이 갑자기 뜨는 당황스러운 상황이 발생되기에 미연에 방지를 하기위하여

인트로 중에 뒤로가기를 누른다면 핸들러를 끊어버려 아무일 없게 만드는 부분입니다.  


posted by 젊은쎄오
:
Android 2011. 9. 1. 20:20

------------------------------------------------------------------------------------ 
현재 이 글은 v1 때 배포키 방법입니다. 구글은 앞으로 v1의 방법으로 새 키를 발급하지 않으며

v2 방식으로 구글 맵을 사용하셔야 합니다. 
------------------------------------------------------------------------------------


안드로이드에서 구글맵을 사용할 때엔 구글 맵 키가 필요합니다. 

키는 크게 두가지로 개발자가 개발할 때 쓰는 디버그 키와, 실질적으로 마켓에 올릴 때 쓰는

배포키가 있습니다. 디버그 키 상태로 마켓에 올리면 그것을 받아서 깐 사람들은 맵이

안뜨고 격자가 뜨게됩니다.

우선 키스토어 키를 만들어야 합니다. 이 키는 개발자 자신이 만든 앱이란 것을 알리고 

마켓에 업데이트 할 때 구분하는 용도로도 사용되니 잃어 버리시면안됩니다.

apk를 뽑을 때 이 키스토어 파일을 참조하여 뽑는 형식입니다.

우선 키스토어를 생성하는 방법입니다. 프로젝트를 우클릭 한 후 Export를 눌러줍니다

 
그 다음 Android > Export Android Application 을 선택 합니다




다음은 프로젝트 이름 확인입니다. next 눌러줍니다

 



Create new keystore 를 체크 하신 후 키스토어를 보관할 경로와 키스토어 이름을 써줍니다.
패스워드와 패스워드 확인을 하신다음 next 를 눌러줍니다




이제 키의 정보입니다. 맨 위 Alias도 배포키 만드는데 사용되기 때문에 기억 하셔야 합니다. 
편의를 위해 저는 키스토어 이름과 같게 하였습니다.
비밀번호와 유효년도 , 국적 정도만 적어주시고 next 눌러줍니다




마지막으로 apk가 빠질 경로를 정해주시면 됩니다.



 

 이렇게 하면 개인 키가 완성 됩니다.  

이제 구글맵 배포용 키를 만드는 방법입니다.

윈도우는 도스, 맥은 터미널을 켭니다 . 

우선 키가 있는 폴더 경로로 가야합니다. cd 명령어를 이용하여 키스토어가 있는 폴더로 이동합니다. 

맥은 pwd 명령어를 치시면 현재 경로를 알 수 있습니다. 

이동 후에 

keytool –list –alias 아까만든Alias –keystore 아까만든키스토어

ex)  keytool –list –alias bottari –keystore bottari.keystore


이렇게 쳐주시면 비밀번호 넣으라는 칸이 나옵니다. 아까 만들때 썼던 비밀번호를 치시면됩니다

알고 가실점은 비밀번호화면에서는 커서가 움직이지않습니다.

그냥 오타없이 쭉치시고 엔터 눌러주심됩니다.

그럼 아래 그림처럼 배포키를 얻을 수 있는 코드가 나옵니다.



그 코드를 복사 하시고 아래 Url로 이동하시고 

http://code.google.com/intl/ko/android/maps-api-signup.html


해당 네모에 그 코드를 넣습니다. 그리고 Generate API Key 버튼을 누르시면 구글 이메일 로그인을 해야합니다. 

로그인 하셨다면 다음 페이지가 나옵니다. 




위에 사용자키가 실질적인 구글맵 배포용 키입니다. 그 키를 복사하셔서 프로젝트에 맵뷰를 사용하는

xml로 가서 


이렇게 넣어주시면 됩니다. 

그러고 다시 맨위로 가시어 Export를 하신 후 Create new keystore가 아닌 Using Existing Keystore 체크 후 

아까 만드신 키스토어를 참조하여 APK를 뽑으시면 이제 마켓에 올려도 맵이 뜨게 됩니다 .

추가 정보는 여기서 확인 하실 수 있습니다 

http://cuteelfluv.cafe24.com/xe/etc/5446


 


posted by 젊은쎄오
:
Android 2011. 8. 26. 17:01



이렇게 EditText에서 긁은 텍스트의 렝쓰를 140 으로 걸면 영문이던 한글이던 140글자가 

넘으면 트윗이 안됩니다.
 

posted by 젊은쎄오
:
Android 2011. 8. 24. 20:00
트위터 관련 작업을 하다보니 트윗을 할 때 텍스트 외에 이미지나 위도 경도를 이용하여 위치를 

실어 보내야 하는 경우가 생겼습니다. 

우선 http://jeehun.egloos.com/4000125 이곳에 twitter4j를 연동 시키는 방법이 있습니다.

저도 이것을 토대로 작업을 하였습니다. 

우선 글씨를 트윗하는 방법은 updateStatus() 를 이용하면 되는데요 , 트위터 객체를 만들어 

Twitter twitter = factory.getInstance();
twitter.updateStatus("트윗 할 텍스트");

라고 써주시면 글씨가 올라가집니다.

이제 이미지 인데요 , 이미지도 마찬가지로 같은 방식으로 올리나 트윗픽을 이용하여 이미지를

올려야 합니다. 트윗픽은 제약이 있는데 현재 핸드폰안에 있는 이미지만 첨부가 됩니다.

다시말해 파싱받은 이미지 url은 바로 올리지 못하고 다운받아서 파일로 저장을 하고 그 패스를

받아서 올려야 합니다.

 


저는 다운 받는 매소드를 이렇게 뺐는데요, 저장 되어질 파일이름 스트링 변수와, 실질적인 이미지인 

이미지 url 을 파라미터로 받아서, sd카드에 저장시키도록 하였습니다, 저렇게하면 저 경로에 파라미터로 들어온

파일이름으로 저장이 되어집니다. 그리고 아래 onDelete 매소드를 호출하면 언제든지 저장된 이미지 파일은 

지워지구요, sd카드에 쓰려면 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

이 퍼미션 추가 해주셔야 합니다.

다시 본론으로 가서 이렇게 이미지를 받아서 그 패스를  

 

이런 식으로 is 에 넣습니다. 

path 에 들어가는 Environment.getExternalStorageDirectory().getAbsolutePath(); 이것은 현재 폰의 sd카드 경로를 

알아내는 함수입니다.


그러고 이렇게 이미지와 텍스트를 올리게 되는데 strResult 로 들어가는 upload는 트윗픽을 타고들어가 이미지를

올리고 트윗픽용 단축 url을 리턴받습니다, 마지막 줄에 보시면 트윗 할 텍스트에 한 칸 띄고 이미지 url이 

붙어 올라가는 것이죠. 
 



이렇게 텍스트 옆에 url이 붙습니다. 


이제 마지막 위치를 올리는 부분인데요, 한 줄로 끝나지만 알아내는데 엄청 고생했습니다.. 


이렇게 하면 됩니다, lat 과 lng 에 double  형으로 위도 경도를 넣어 주시면 됩니다.



이렇게 위치값이 실려 올라갑니다 , 

추가로 status = twitter.updateStatus(new StatusUpdate(Tweet).location(new GeoLocation(lat,lng))); 지도올리는 

부분에서 저 Tweet  은 String으로  트윗 할 메시지를 나타냅니다. 이미지 쪽을 보시면 트윗 할 메시지 + 이미지패스를

해서 올린걸 이용하면 저 Tweet에 트윗 할 메시지 + 이미지 패스를 넣어주시면 ,

글, 이미지, 위치 값 세개가 모두 올라가게 됩니다.

 



 보시면 우측에 이미지와 위치가 포함된 타임라인임을 알 수 있습니다 .




posted by 젊은쎄오
:
Android 2011. 8. 23. 22:46
twitter4j 를 쓰다가 오류가 났던 부분이 몇가지 있었습니다. 

그 중에 하나는 

The screen name / password combination seems to be invalid.Relevant discussions can be on the Internet at:

이것 인데 이건  http://dev.twitter.com/  여기서 인증 절차를 거쳐 받을 수 있는 

Consumer key , Consumer secret key 를 제대로 삽입을 안하셔서 그렇다고 합니다. 


제가 겪었던 문제는 

-1
Relevant discussions can be on the Internet at:

이 오류 였는데 트윗픽을 이용하여 이미지를 올릴 때 발생하였습니다. 처음은 올라가는데 그 다음은

익셉션을 일으키며 안되고 그 다음 올릴 때는 또 되고 그런식으로 되고 안되고를 반복하는 요상한

오류였습니다. http://ekwang.tistory.com/35 여기서 알게 되었는데 twitter4j 2.1.0 버젼부터

생겨난 일종의 버그였습니다.

아직 미해결 된 버그로 ,, 어떻게 할 방법이 없더군요, 

원인은 대략 처음 이미지 삽입요청 할 때 서버와 connection 되는데 이를 계속 유지하고 있어서

새로 올리려고 새로 connection을 요청하면 익셉션을 발생시키는 것이었습니다.

두번째 올릴 때 익셉션이 발생하면서 서버와의 연결이 끊어지는지 세번째 이미지를 올릴 때는 잘

올라 갔던 것입니다. 

제가 올리는 방식은 


이런 식인데 꼭 익셉션을 strResult = upload.upload("boddari.jpg", is, TweetText); 이 줄에서 뿌리더군요.. 

inputstream 에대해 잘 몰라서 is이 문제인줄알고 하루를 다 썼는데 원인은 위에 말씀드렸다시피..ㅠㅠ

무튼 제가 해결한 방법은,

이미지를 다 올린 시점에  
strResult = upload.upload("boddari.jpg", is, TweetText);

이걸 한번 더 써줬습니다.

그렇게 하여 이미지를 올린 후 한 번 더 호출하는 척을 하여 서버와의 연결을 익셉션을 발생시켜

끊어버리고 마무리하게 하였습니다.

사실 잘 모르겠습니다. 딱봐도 저게 해결방법은 아닌데 .. 내부적으로 익셉션은 발생하지만 겉으론

잘되는 그런 방법입니다.

그 외에는 라이브러리가 제대로 추가가 안되어서 오류가 나거나 빠르게 반복적으로 테스트하여

트위터 측에서 막아버리는 것이 있는데 그 목록은 여기 있습니다. 






posted by 젊은쎄오
:
Android 2011. 8. 22. 11:24
리스트 뷰를 사용하다 보면 Activity를 상속받을 때도 있고 ListActivity를 상속 받을 때도 있습니다. 

그냥 Activity를 상속 받은 곳이라면 해당 xml 에 ListView 의 id를 android:id="@+id/아무거나"

이런식으로 리스트뷰를 구분할 수 있는 임의의 아이디를 생성하여 사용할 수 있지만,

ListActivity 를 상속받은 곳이라면 이 아이디가 android:id="@android:id/list"   로 잡아주셔야 합니다. 

@는 참조를 의미하는데 @android는 안드로이드 패키지를 참조한다는 뜻으로  

@+id/list 이런식으로 아이디를 새로 만든다는 뜻이 아닌

기존에 있는 android.jar 파일의 list 아이디를 사용한다는 의미 입니다 .

사용방법도 다른데요 ,

android:id="@+id/ListView"  는 소스에서 R.id.ListView  이렇게 찾아 사용하지만 

android:id="android:id/list" 는  android.R.id.list 이렇게 써주어야만 연결이 됩니다.
posted by 젊은쎄오
:
Android 2011. 8. 18. 12:13
리소스를 찾을 수 없다는 오류는 여러가지 이유가 있지만 흔히 xml의 경로중에 id를 못찾는다거나

리소스가 없다거나의 이유가 대부분이 더군요, 제가 하려던건 단지 텍스트뷰에 1이라는 숫자를

넣는 거였는데 ,, 따로 리소스를 사용하지도 않는데 말이죠

setText(1);  이거였습니다 ,

알아보니 스트링 형식으로 넣어야 하더군요

setText("1");

이러면 됩니다 -_-;  

참고로 다른 형을 스트링으로 변환하는 방법은 setText(String.valueOf(변환할변수));

이렇게 사용하시면 됩니다. 
posted by 젊은쎄오
:
Android 2011. 8. 12. 00:15
안드로이드 TextView는 글씨를 다루는 뷰인 만큼 폰트를 교체 할 수 있습니다 .

안드로이드에서는 네가지의 기본 폰트를 제공하고, 추가로 폰트를 추가하면 해당 폰트를

사용 할 수 있는데요, 먼저 기본폰트는 narmal , sans, serif, monospace 네가지로


이런 폰트 모양입니다. 폰트 적용은 간단한데요 xml의 TextView에서 

android:typeface= "normal" 이런식으로 추가해 주시면 됩니다. 


이제 다른 폰트를 다운받아 적용시키는 방법인데요 , 
        




위에 Frutiger55Roman 이라는 이름의 폰트가 있습니다 , 이걸 프로젝트의 assets 폴더에 넣어주시고



소스 상에서 추가를 해주여야 합니다. 간단한 테스트 이므로 저는 onCreate에 추가를 하였습니다.



두번째 줄이 핵심입니다, 뒤에 확장자까지 써주셔야하는거 잊지마시구요 . 저렇게 등록을 해주면 


이런 추가된 폰트로 글씨가 나타나게 됩니다 ! 
 
posted by 젊은쎄오
:
Android 2011. 8. 4. 13:04

코딩을 하다 보면 갑자기 R.java에 오류가 날 때가 있습니다. 

 
R.java 파일은 개발자가 코딩하는 부분이 아니라

src 의  자바 파일들과 res의 xml 등을 이어주는 자동으로 생성되는 연결고리 파일입니다.

그러기에 더더욱 오류가 나면 난감해지죠, 이건 코드처럼 수정할 수 도 없고 근본적인

원인을 해결해야 자동으로 반영이 되니까요,




1. drawable 폴더 내의 이미지 이름에 대문자가 들어가면 안된다.  
( Background.png , backGround.png  모두 안됨)

2. drawable 폴더 내의 이미지 이름이 숫자로 시작하면 안된다. 
( 10month.png 등등 안됨)

3. drawable 폴더 내의 이미지 이름이 기호로 시작되면 안된다.
( +btn.png, $money.png 등 안됨)

4. drawable 폴더 내에 xml파일 외에 이미지 확장자가 아닌 파일이 들어있을 때  
( 워드나 hwp 등 다른 확장자 모두 안됨) 

 
오류가 나고 계신다면 drawable 폴더를 한 번 확인해보시면 됩니다. 

수정하셨다면 세이브해도 res 폴더는 갱신이 좀 더디더군요,

그래서 ,  이클립스 메뉴 > Project > Clean 을 눌러주시면 바로 갱신을 하여 반영합니다.

하면서 알게되는 것은 계속 추가 하겠습니다.   다른거 알고 계시면 저도 가르쳐주세요 !

posted by 젊은쎄오
: