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 젊은쎄오
: