스마트폰, 최고의 한글 입력기는?
다른 스마트폰은 어떤지 모르겠습니다만, T옴니아2에서는 한글 입력기로 "모아키", "천지인" 두 가지를 제공하고 있습니다. 두 입력기 모두 QWERTY 키보드와는 달리 핸드폰의 키보드에서처럼 글쇠의 개수를 줄이고 크기를 키워 작은 화면에서도 불편 없이 글을 입력할 수 있도록 구성되어 있습니다. 뿐만 아니라 스마트폰은 일반 핸드폰과 달리 다른 한글 입력기를 설치해 사용할 수 있습니다. 이렇게 글쇠를 줄인 입력기를 사용하다 보면 다시금 한글의 위대함에 놀랍니다. 컴퓨터를 이용한 전산 작업에는 영문이 편하다고 합니다만, 모바일 기기에서 입력은 영문보다 한글이 더 편합니다. 더욱이 한문이나 일어를 입력한다고 생각한다면? 끔찍하지 않나요? 휴대폰때부터 유명한 "천지인" 이렇게 유명한 "천지인"이지만 자주 사용하지 않아서 어떤 점이 장점인지 솔직히 모르겠습니다.
이 정도로 예상됩니다만, 몇 번 사용해 보고는 단점이 더 눈에 많이 띄었습니다.
흠.... 아무리 친해지려고 노력해도 잘 안 되네요. 편리한 "모아키"
그래도 단점이 없는 것은 아니어서 정리해 본다면,
모아키에 대한 칭찬 말씀을 자주 봅니다. 한번 익숙해지면 다른 입력기는 불편해서 사용하지 못한다는 것이죠. 복잡한 모음일 경우 힘들기는 하지만 전체적으로 보았을 때, 매우 훌륭한 입력기임에 틀림없습니다. QWERTY 키보드같은 FingerKeyboard MyMits 사이트에서 우연히 Fingerkeyboard를 보게 되었는데 QWERTY 자판과 비슷하네요. 그러면서도 한글 입력에 치중할 수 있도록 적당히 글쇠가 생략되어 있습니다.
보시면 아시겠습니다만, 모음을 모아 입력하는 것이 아니라 글쇠가 따로 준비되어 있기 때문에 모음 입력이 빠릅니다. 또 Shift 키를 배치하여 쌍자음을 컴퓨터에서처럼 입력할 수 있습니다.
그러나 글쇠가 많다 보니 글쇠가 크지 않다는 점이 단점입니다.
"모아키"에 이미 익숙해지셨다면 자음과 모음이 너무 떨어져 있어서 불편하다는 생각을 하실지 모르겠습니다. 저도 얼마간 사용해 보다가 포기하고 말았습니다. 대신에 모아키를 사용하지 않으셨고, 양손으로 키 입력을 사용하시는 분이라면 매우 적합한 입력기가 아닐까 싶습니다. 최고의 한글 입력기, 이지한글 먼저 말씀드리지만, 최고라는 표현은 저의 주관적인 생각입니다. 이지한글은 이미 LG핸드폰에서 익숙한 한글 입력기입니다. 제가 삼성보다 LG 핸드폰을 선호하는 이유는 바로 "이지한글" 때문이었습니다. 한번 손에 익숙해지면 정말 편하죠. 12개의 키로 매우 빠르게 한글을 입력할 수 있습니다.
이렇게 편리한 이지한글을 제가 사용하는 T옴니아2에서 사용하면 얼마나 좋을까 하는 생각을 자주 했습니다. 그런데 있군요. 은디아예님께서 TouchKeySip 이라는 프로그램을 이용하여 공개하신 토탈키보드 1.62 입니다. 12개의 글쇠만으로도 훌륭한 이지한글이, 넓은 터치 패널을 만나 더 많아진 글쇠로 더욱 강력해 졌습니다.
이 글을 통해 훌륭한 입력기를 제공해주신 은디아예님께 감사의 말씀을 올립니다. 현재 은디아예님께서 만들어 주신 토탈 키보드를 메인 입력기로 사용하고 있습니다. TouchKeySip으로 더 다양한 입력기 은디아예님께서 사용하신 TouchKeySip를 이용하여 전혀 다른 모습의 한글 입력기를 보았습니다. 한글 자판을 보시면 아시겠습니다만, 자음만 보이죠. 그리고 천지인처럼 모음을 만들어 주는 가로와 세로 획 그리고 점이 보입니다만, 이 버튼은 자주 사용하지 않습니다. 그럼 어떻게 모음을 입력하나요? 바로 자음을 누른 후에 자음 주변 아홉 개의 버튼 중 어느 곳으로 끌기를 하느냐에 따라 모음이 결정됩니다.
즉, 모아키에서처럼 "ㄱ" 키를 누른 후에 왼쪽 버튼까지 가서 놓으면 "가"가 됩니다. 위쪽으로 이동하면 "고"가 되고요. 아직 오래 사용하지를 못해서 낮이 많이 섭니다만 정말 대단한 프로그램이 아닐 수 없습니다. 이런 산뜻한 아이디어를 보면 너무 즐겁네요.
TouchKeySip 덕분에 더욱 다양한 한글 입력기가 나오고 있습니다. 그것도 프로그래머가 아니라 프로그램과는 관련이 없는 분도 자기가 원하는 입력기를 만들 수 있다는 것이죠. 그리고 서로 정보를 공개하고 다시 피드백을 나누어서 더욱 편한 한글 입력기를 만들어 내고 있습니다. 며칠 더 사용해 보고 정말 편리한지 확인해서 다시 글을 올리겠습니다. 이외에도 더 편리한 한글 입력기를 기대하며 몇 가지 한글 입력기를 말씀드렸습니다만, 이외에도 더 편리한 입력기가 만들어지고 연구되고 있습니다. 최근에는 아이폰에서 멀티 터치가 되는 것을 이용하여 두 손가락을 이용하는 입력기도 있습니다. 하드웨어의 발전으로 더욱 다양한 방법이 나올 수 있다는 것을 보여 주는 예라 하겠습니다. 이렇게 편한 입력기가 많이 나와 있습니다만, 욕심이 끝이 없어서 계속 더 편한 방법을 찾게 되네요. 앞으로 스마트폰의 활용은 더욱 커질 것이므로 어떤 입력기가 나올지 흥미롭습니다. |
한글이 포함된 파일에서 한글이 깨지지 않게 하려면??삼존
http://www.androidpub.com/13273612011.02.26 23:38:52 2062앱개발 질문한글이 포함된 파일에서 파일을 읽어 올때 한글이 깨지지 않게 하려면 어떠한 방법으로 해야하는지 아시는 분 정보 부탁드립니다이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1327361&act=trackback&key=328
2011.02.27 06:19:33 한남인코딩 문제같네요...
2011.02.27 15:17:38 삼존해결했습니다.
파일을 읽을때 byte 로 읽지 않고 char로 읽은후 string으로 변환하면 한글이 안깨집니다.
<예제>
FileInputStream fis= new FileInputStream(file);
Reader in = new InputStreamReader(fis, "EUC-KR");
char[] data = new char[fis.available()];
in.read(data);
String fileContent = new String(data);
http://www.androidpub.com/13292922011.02.28 01:13:01 3932앱개발 질문
우선 cmd 로 sqlite 3 를 이용하여 DB 에 접속하여 한글 데이터를 insert 하였습니다.
그리고나서 에뮬레이터로 확인을 하여보니 한글이 깨져있습니다. 자꾸 삽질하고있습니다.
에뮬레이터 사진 첨부하였습니다. 왜그런걸까요?
(cmd 창에서 chcp 설정모두하였고, 이클립스도 utf-8 로 설정하였습니다)
1.bmp (847.7KB)(20)
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1329292&act=trackback&key=512
2011.02.28 09:10:00 백혼utf-8을 위한 cmd 창 모드 변경시 chcp 65001 을 입력하셔야 하는데요.
그럴 경우, 한글입력이 되지 않습니다.
기본적으로 cmd 를 다른 값으로 chcp 설정을 하였을 경우 utf-8 이 아니기 때문에, db 에 저장되는 utf-8 과 호환이 되지 않습니다.
아무래도 한글 입력은 application 을 통해서 하셔야 할듯하네요.
application 을 통해 입력 할 경우, chcp 65001 을 입력하시고 cmd 에서 확인하시면 에뮬에서도, cmd 에서도 정상적으로 한글이 출력됩니다.
2011.02.28 10:57:29 퐝충firefox의 sqlite manager로 입력하셔서 sqlite파일을 만드시는게 좋으실듯 한데요..
--------------------------------------------------------------------------------
안드로이드 개발 질문/답변 (글 수 37)
전체보기 앱개발 질문 플랫폼 질문 기타 질문 자주하는 질문 한글주소->좌표 변환 방법을 아시나요?레제포스
http://www.androidpub.com/13419332011.03.03 22:13:28 2951앱개발 질문안녕하세요.
질문 올리겠습니다.
경기도 안성시 금광면 내우리 180-4 이런 한글 주소가 있다고 할때
이걸 좌표값으로 바꿀 방법이 없을까요?
역 지오 코딩을 쓰면 된다고 하긴 하는데
도무지 이해를 할수가 없네요.
예제의 경우는 다 영어로 seoul 이런식으로 검색된것만 있어서요.
초보자를 위해 자세하게 조언 부탁드립니다.이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1341933&act=trackback&key=0be
2011.03.16 23:04:09 GPS119.netgps119.net운영자입니다.
네이버api를 이용하면 주소검색이 가능합니다.(주소좌표변환기능)
http://dev.naver.com/openapi/apis/map/xxxxjavascript/reference#Geocode
아래 사이트에 가시면 주소/상호 검색이 가능합니다.물론, 한글가능하구요.
http://www.gps119.net/gps119/find_trans.php
<?xml version="1.0" encoding="euc-kr" ?>
- <geocode xmlns="naver:openapi">
- <userquery>
- <![CDATA[ 경기도성남시정자1동25-1
]]>
</userquery>
<total>1</total>
- <item>
- <point>
<x>321036</x>
<y>529727</y>
</point>
- <address>
- <![CDATA[ 경기도 성남시분당구 정자1동 25-1
]]>
</address>
- <addrdetail>
- <sido>
- <![CDATA[ 경기도
]]>
- <sigugun>
- <![CDATA[ 성남시 분당구
]]>
- <dongmyun>
- <![CDATA[ 정자1동
]]>
- <rest>
- <![CDATA[ 25-1
]]>
</rest>
</dongmyun>
</sigugun>
</sido>
</addrdetail>
</item>
</geocode>
http://dev.naver.com/openapi/apis/map/xxxxjavascript/reference#Geocode
<?xml version="1.0" encoding="utf-8"?><!--/* **** Copyright 2008, The Android Open Source Project**** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at **** http://www.apache.org/licenses/LICENSE-2.0 **** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License.*/--><com.example.android.softkeyboard.LatinKeyboardView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyboard" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" />
한글 입력기 개발자님들 도움 요청합니다.입력기개발자
http://www.androidpub.com/13561492011.03.09 16:12:44 2866앱개발 질문안녕하세요.
이번에 안드로이드 프로그래밍에 입문하려고 하는 신참입니다.^^
첫 어플로, 한글 입력기를 개발하려고 하는데,
마땅히 책을 찾아봐도, 한글 입력기를 예제로 두는 책을 못찾겠네요.
[ 저의 상황 ]
C++개발만 약 2년 정도 해봤구요. (UI쪽)
자바는 학부시절 CS 전공과정에 편입된 수업으로 들어보기만 한 수준입니다.
(기초만 배워둔 상태로, 이클립스 및 라이브러리는 써보지 않았습니다.)
참고로, ndk를 사용하지 않고, sdk로 한글 입력기를 만들어보려고 합니다.
이 상태에서 다음과 같은 질문 몇가지만 부탁드려볼게요.
1. 과연, 첫 어플로 한글 입력기 제작이 적합한 수준인지 알고 싶습니다. (알고리즘적인 난이도는 제외하고, 기술적인 부분만 가정.)
2. 한글 입력기를 개발하려면, [자바기초/이클립스] 이외에 어떤 지식이 선행되어야 하는지 알고싶습니다.
3. 저에게 적합할만 한, 안드로이드 입문용 책 추천 부탁드립니다.^^;
제가 무리한 목표를 잡은걸까요?...
선배님들의 조언 부탁드립니다. ^^이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1356149&act=trackback&key=868
2011.03.09 16:31:11 해보면안다!제가 이럴다할 실력과 경험을 가진건 아니지만...^^;;
안드로이드 키보드 (Inputmethod IME)는 일반 App들과는 다른 라이프사이클을 가지고 있습니다.
안드로이드 프레임웍쪽도 공부하시려고 하신다면 괜찮지만,
어플리케이션 제작을 공부하신다면, 키보드 보다는 다른 간단한 App 제작하셔서 선행학습하시는게 좋을 것 같습니다..
책은 칸드로이드에서 배포하는 pdf 파일과 프로안드로이드(빨간책,리토마이어) 추천 드립니다.
2011.03.09 16:33:58 겐도http://developer.android.com/resources/samples/SoftKeyboard/index.html
그냥 만들어 보고 싶으신 거라면 뭐든지 상관없죠.
2011.03.09 17:09:23 입력기개발자두 선배님들의 답변 정말 감사드립니다^^
해보면안다! 님, 라이프사이클(LC)이라함은.. 뜻대로 수명주기를 말씀하시는거라면... 제가 계속(반영구적) 쓰려고 합니다. 반짝사용이 아닌..
겐도님, 알려주신 링크 잘 보았고, 이클립스에 해당 소스파일들을 만들어서 export 시키면되는건가요? ㅇ_ㅇ; 정말 초짜적인 질문이라 참...
우선 개발 환경부터 구축해놔야겠네요.
이클립스를 깔면 java (JRE였나;)를 따로 설치 안해도되는건지도 궁금하네요. 죄송합니다 ㅠ_ㅠ
2011.03.09 17:26:16 겐도http://developer.android.com/resources/samples/get.html
다른 페이지들도 보세요.
그리고 Eclipse를 실행하려면 먼저 java가 필요합니다.
http://wiki.eclipse.org/FAQ_Where_do_I_get_and_install_Eclipse%3F
2011.03.09 18:09:49 입력기개발자정말 큰 도움이 되었습니다. 친절한 답변 감사해요^^
말뿐이지만.. 좋은 하루 보내세요^^;
2011.03.09 17:11:03 입력기개발자댓글 달아놓고 다시 읽어보니, 말 흘리기나 하고, 죄송합니다.ㅠ_ㅠ 생각하면서 써서;; 제가 너무 무례했네요. 양해부탁드립니다.
전체보기 앱개발 질문 플랫폼 질문 기타 질문 자주하는 질문 번호 분류 제목
로그캣 한글이 됐다 안됐다 그래요 ㅠㅠ안들만쉐
http://www.androidpub.com/13564912011.03.09 18:13:38 2102기타 질문
ADT업글하고 분명히 나왔는데 언제부터 다시 안나와요 ㅠㅠ
무슨 설정을 건드린걸까요?? 아시는분 알려주세요 ㅠ
이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1356491&act=trackback&key=6a0
2011.03.10 17:48:39 유마저도 많이 헤맨 부분인데요. DDMS .. 왼쪽 상단에 Devices 부분에서 해당 에뮬이나 기기를 선택해주세요.
2011.03.10 18:08:33 시나브러한글 확인하실때는 cmd /u 로 들어가셔서 adb logcat 명령어로 보시는게 편하실꺼예요.
한글 인코딩 방식 질문입니다.성난물개
http://www.androidpub.com/13724022011.03.16 19:50:43 3132앱개발 질문 안드로이드 로직
ex) emp_No = empNo.getText().toString();
emp_Pw = password.getText().toString();
emp_Phone = phone.getText().toString();
deptNo = dept.getText().toString();
1. emp_Gr = grade.getText().toString();
2.String emp_Gr = URLEncoder.encode(grade.getText().toString());
1.emp_Na = name.getText().toString();
2.String emp_Na = URLEncoder.encode(name.getText().toString());
try {
String url = "http://webback2/member.jsp?emp_no=" + emp_No + "&emp_password=" + emp_Pw
+ "&emp_phone=" + emp_Phone + "&dept_no=" + deptNo + "&emp_grade=" + emp_Gr + "&emp_name=" + emp_Na;
HttpGet httpMethod = new HttpGet(url);
1번과 2번의 방식으로 값을 한글로 url의 주소로 jsp페이지 전송할 경우
jsp로직
ex) String emp_grade = request.getParameter("emp_grade");
형태로 값을 받고 오라클에 저장하니 한글이 깨짐이 나타났습니다.
제가 디코딩을 잘못해서 그런건가요? 아니면 안드로이드에서 한글 인코딩을 잘못한것인가요 ?
고수님을 조언 부탁드리겠습니다.
이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1372402&act=trackback&key=abe
2011.03.16 21:02:48 비니키우스DB쪽 확인하세요
2011.03.16 23:44:17 GPS119.net저는 mysql과 php를 사용했는데...
비니키우스님처럼 db를 먼저 한글 지원하게 수정하셔야합니다.(오라클은.....자세히는 모르겠네요)
그리고, 수취쪽에서 출력 형태로 한글이 정상 적으로 인코딩 되었는지 확인하여합니다.
php에서는 URLencode, URLdecode 가 있습니다.
아래 사이트에 가보시면 도움이 되실련지....
http://www.androidpub.com/637303
한글깨짐현상입니다. 이름 이런식으로 뜨는 것을 해결 못 하겠습니다.사과짜응
http://www.androidpub.com/13911372011.03.24 07:30:41 4164앱개발 질문서버는 UTF-8형식이고
xml 파일을 되돌려줍니다.
InputStream is;
is = openConnectionCheckRedirects(http);
InputStreamReader tmp = new InputStreamReader(is,"UTF-8");
BufferedReader reader = new BufferedReader(tmp);
StringBuilder builder = new StringBuilder();
String str;
while((str=reader.readLine())!=null){
builder.append(str+"\n");
}
String myResult = builder.toString();
이런식으로 받으면 결과가 myResult에 이렇게 저장됩니다.
<?xml version="1.0" encoding="UTF-8" ?>
<errors>
<error key="name">이름을 입력해 주시기 바랍니다.</error>
<error key="password">비밀번호를 입력해 주시기 바랍니다.</error>
<error key="email">이메일을 입력해 주시기 바랍니다.</error>
<error key="rrn">주민등록번호를 입력해 주시기 바랍니다.</error>
<error key="phone">주 전화번호를 입력해 주시기 바랍니다.</error>
<error key="join1Agree">회원정보 제공 동의 여부를 선택해 주시기 바랍니다.</error>
<error key="passwordChk">비밀번호 확인을 입력해 주시기 바랍니다.</error>
</errors>
이걸 한글로 변환시키기 위해
String myResult2 = new String(myResult.getBytes("EUC-KR"),"UTF-8");
String myResult3 = new String(myResult.getBytes("UTF-8"),"EUC-KR");
String myResult4 = new String(myResult.getBytes("UTF-8"),"UTF-8");
String myResult5 = new String(myResult.getBytes("EUC-KR"),"EUC-KR");
이런 식으로 다해봤지만 다 같은 결과가 나오네요...
네이버나 구글에 저 결과("회원정보 제공 동의 여부를 선택해 주시기 바랍니다 이런 것)를 넣으면 한글로 검색이 뜹니다.
뭔가 변환방법이 있는 것은 확실한데, 잘 모르겠어서 난감합니다.
혹시 아시는 분 있으면 도움 부탁드리겠습니다. ㅠㅠ
이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1391137&act=trackback&key=565
2011.03.24 09:42:20 hacky받아오신 xml을 HTML형식으로 변환하시고 Layout에 WebView를 추가,
코드상에서 WebView.loadDataWithBaseURL메소드를 이용해서 출력해보세요~
2011.03.24 09:49:55 사과짜응답변 감사드립니다~!
확인해보겠습니다.
2011.03.24 09:42:55 sjangcommons-lang library 를 추가하시고 String myResult6 = StringEscapeUtils.unescapeXml(myResult); 하시면 될거예요.
http://commons.apache.org/lang/
2011.03.24 09:50:47 사과짜응답변 감사드립니다~!
확인해보겠습니다~
자바 문자열을 한글 조합형으로 변환minjunis
http://www.androidpub.com/14057122011.03.29 22:38:14 1560앱개발 질문String 객체에 있는 문자열을 한글 조합형으로 변환하고 싶은데
자료가 많이 없네요 ㅠㅠ
String str = "안녕하세요";
이런 문자열을 한글 조합형 코드로 변환해야 됩니다 조언 꼭 부탁드립니다!
"안녕하세요"-> 한글 조합형 코드로 B4 65 91 77 D0 61 AD 41 B6 61 이렇게 변환되게 하고 싶습니다.
http://www.androidpub.com/14079272011.03.30 14:31:34 3571앱개발 질문안녕하세여. 이클립스 초보여서 질문드립니다.
import한 안드로이드 프로젝트가 한글이 계속 깨집니다.
이거 Window -> Preferences -> General -> Content Types 에 들어가서
UTF-8으로 바꿔도 한글 계속깨지게되나여 import는여?
이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1407927&act=trackback&key=b02
2011.03.30 15:57:16 SMS깨지는 프로젝트나 파일 우클릭 맨밑에 프로퍼티스 드가셔서 utf-8로 변경해보세염
폰에서 입력한 한글을 PC에서 나오게 하려면?바야바
http://www.androidpub.com/14096912011.03.31 08:06:44 1872앱개발 질문
안드로이드용 온라인 게임을 만들고 있습니다.
서버는 PC로 개발하고 있어서, 안드로이드와 PC 사이에 코드상의 문제가 발생합니다.
안드로이드는 UTF-8을 쓰는걸로 알고 있는데요.
이걸 PC에서 제대로 보이게 하려면 어떻게 변환해서 전송해야 할까요?
이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1409691&act=trackback&key=858
2011.03.31 09:55:24 Nicky디비에 저장할떄 문제인가요?
초기 설계할시에 UTF8로 통일해서 개발하시면 가장 수월합니다.
안된다 하면 변환툴을 사용하시는 수밖엔 없죠 ...
2011.03.31 16:28:58 바야바자문자답입니다. OutputStreamWriter(), InputStreamReader()를 사용한게 잘못였네요. 여기저기 뒤지다가 InputStream, OutputStream을 쓰니까 완벽하게 해결되었습니다. 스마트폰<->PC서버의 소켓 통신을 고민하시는 분들 참고하시길.....Nicky님 답변 감사합니다.
cursor.getString() 한글은 못 읽나요?5hj5g3jj431sd
http://www.androidpub.com/16021172011.06.16 09:20:56 1013앱개발 질문안녕하세요.
DB Table 필드 중 아래와 같이 한글이 섞인 데이타가 있습니다.
"kim.taeho@gmail.com源?쒗샇"
이것을 cursor.getString함수를 써서 불러온다음에 toast로 뿌려봤는데 아무것도 출력이 되지 않아요.(한글깨짐이 아닌 아예출력이 안되요..) 인덱스를 잘못 참조한것도 아니고요...
출력되는 것들은 영어와 숫자로만 된 거만 출력되고 한글이 포함되어 있는거는 아무런 문자열도 없어요.
한글이 포함되어 있는 데이터도 getString함수를 써서 불러오는 방법 알수 있을까요?
참고로 안드로이드는 에뮬에서 테스트했고요 에뮬 언어는 영어로 되어있습니다..
그리고 한글이 포함되어 있는거는 getString으로 불러올 때 null을 리턴하더라구요..
왜 한글이 포함되어 있는것은 null을 리턴하는 것일까요?
이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1602117&act=trackback&key=c77
2011.06.16 09:42:39 replica한글 잘 됩니다.
에뮬이라 그런게 아닐까요..
2011.06.16 13:00:26 zgundam에뮬이라도 한글 잘 출력하구요..Toast에서 출력이 안되는건 한글이 깨져서 그런게 아닐까 하는 생각을 조심스레 해봅니다..
도스창에서 adb shell로 들어간뒤 sqlite를 직접 실행해서 쿼리문을 날렸을때 한글이 깨져 나온다면 한글이 깨져서 들어가는 것이구요..
(단 이렇게 할려면 커맨드창에서 한글이 출력되게끔 조치는 해주셔야 합니다..그건 구글링 하시면 방법이 있습니다)
아니면 최신버전의 adt까지 업그레이드 하셨으면 로그캣에서도 한글 출력이 지원되기 때문에 getString한 결과를 로그캣에 찍어도 한글이 잘 나옵니다..그러니 그걸로 확인해보셔도 되구요..
아니면 테이블에 넣기 전에 관련값을 로그캣에 찍어보세요..그 시점에서 한글이 깨진다면 한글이 깨져서 insert가 된겁니다..
사용자가 화면상에서 입력한 값이 아닌 네트워크 상에서 받거나 파일을 읽어오는 과정에서 한글이 깨질수도 있습니다..
그러니 일단 테이블에 insert 하기 전에 관련 값을 로그캣에 찍어보세요..
2011.06.16 14:13:29 5hj5g3jj431sd일단 getString으로 얻어올 때 해당 값이 null인 것을 확인 하였습니다. ..
얻어올려고 하는 DB는 EMAIL( native)의 DB입니다.
해당 DB에 Insert하는 애는 native 어플인 email이 합니다.
저는 native email이 저장한 값을 읽는 것입니다.(제가 제작 중인 app은 system app입니다.)
java에서 php로 보낸 한글이 인식이 안되내요..히츠가야
http://www.androidpub.com/15779162011.06.04 21:37:48 931앱개발 질문APM을 사용하여 간단한 개발을 하고 있는 학생입니다.
에뮬레이터에서 숫자나 영문을 입력하면 php를 통하여 db에 insert가 확실하게되는데요.
한글을 입력하면 한글 갯수대로 ->-> 이런 화살표만 출려되네요; ( ex> 가나다라 = ->->->->)
php에서 바로 한글을 사용하여 insert하면 db에 한글로 잘 들어갑니다만..
java에서 php로 넘어가는 변수에 저장되어있는 한글을 php에서 인식하지 못하는듯합니다.
아무래도 java와 php사이에 인코딩 디코딩 문제인것 같은데.
어느 부분을 어떻게 건드려야 할지 모르겠네요;. ㅠ 조언 부탁드립니다-
밑에 코드에서는 addr1 이 부분만을 테스트해보는 코드입니다.
try {
addr1 = new String(addr.getBytes("utf-8"),"utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
try {
String a = sendData(name,addr1,phone);
tv.setText(a);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
private String sendData(String name, String addr, String phone) throws ClientProtocolException, IOException{
HttpPost request = makeHttpPost(name,addr,phone,IP주소);
DefaultHttpClient client = new DefaultHttpClient();
String html="";
try{
HttpResponse response = client.execute(request);
String line=null;
BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent(),"utf-8"));
while((line=br.readLine())!=null){
html+=line;
}
br.close();
}catch(Exception e){}
return html;
}
private HttpPost makeHttpPost(String $name, String $addr,String $phone, String $url){
HttpPost request = new HttpPost($url);
Vector<NameValuePair> nameValue = new Vector<NameValuePair>();
nameValue.add(new BasicNameValuePair("name",$name));
nameValue.add(new BasicNameValuePair("addr", $addr));
nameValue.add(new BasicNameValuePair("phone", $phone));
request.setEntity(makeEntity(nameValue));
return request;
}
private HttpEntity makeEntity(Vector<NameValuePair> $nameValue){
HttpEntity result = null;
try{
result = new UrlEncodedFormEntity($nameValue);
} catch(UnsupportedEncodingException e){
e.printStackTrace();
}
return result;
}
관련된 php입니다.
<?php
$name = $_REQUEST['name'];
$addr = $_REQUEST['addr'];
$phone = $_REQUEST['phone'];
$link = mysqli_connect('localhost','root',패스워드,데이터베이스');
@mysqli_query($link,"set NAMES utf8");
mysqli_query($link,"INSERT INTO shop(name,address,phone) VALUES ('나나','$addr','$phone')");
echo "$addr";
mysqli_close($link);
?>
여기서 '나나'라고 한글로 적혀진 부분은 db에 확실하게 한글로 insert됩니다.
echo부분은 어떤 값이 들어가는지 확인하기위해서 쓴거라.. 안보셔도 되요~
이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1577916&act=trackback&key=4e9
2011.06.05 00:41:26 드로이java.net.URLencorder 로 한번 해보세요
한글 키보드 질문이요!!forapp
파일첨부시 한글 파일명 첨부 관련 문제입니다.낭만폭풍
http://www.androidpub.com/15729962011.06.02 13:42:08 1051앱개발 질문startActivityForResult(intent) 를 사용해서
파일 탐색기를 열어서 파일 첨부를 하는 액티비티인데요
대충 코드는 이렇습니다.
String filename = intent.getDataToString().replace("file://","") // file:// 가 앞에 붙으면 경로를 찾을 수 없어서 변환처리.
requestPart.addPart(file); // 위의 String 을 사용해서 file객체를 생성하여 request에 추가.
해서 이 Request 객체를 서버로 보내는건데요
이게
[ 일반적인 영문으로된 경로, 영문 이름으로 된 파일 ]
같은 경우에는 정상적으로 잘 전송이 됩니다.
하지만
[ mp3 파일, 경로나 파일명에 한글, 공백이 있는 파일 ]
같은 경우에는 파일 경로를 찾을 수 없다는 메시지가 출력되는군요.
로그를 찍어보니 String 생성 과정에서 나온 값이
한글만 /mnt/sdcard/&7^65%6/asdf.jpg 뭐 이런식으로 특수문자랑 숫자가 섞여서 다 깨져버립니다...
mp3파일이야 mediastore 사용하면 되니까 상관없지만
일반 파일같은경우 문제가 되네요....
이번 허니컴에서 mediastore.files 가 추가된걸로 아는데
현재 개발환경은 프로요입니다. 타겟도 프로요로 잡았구요
저 깨진 값을 현존하는 대부분의 인코딩 포맷으로 돌려보니 3개 말고는 다 위와같은 값이 나왔습니다.
그나마도 나머지 3개는 이상한 한자나 외계어가 나오구요... 인코딩 문제는 아닌듯합니다....
많은 답변 기다리겠습니다 (__)
2011.06.02 14:07:26 낭만폭풍자답입니다.
Uri.decode(string);
http://www.androidpub.com/15692592011.06.01 00:39:03 1201앱개발 질문
한글입력을 위해 '한글키보드.apk'를 설치한 적이 있습니다.
에뮬레이터를 삭제했다가 새로운 에뮬레이터를 만들고 실행하는데 한글키보드가 보이지 않습니다.
혹시 삭제가 됐을까 싶어서 다음과 같이 설치를 다시 해봤습니다.
adb -s emulator -5554 install HangulKeyboard.apk
오류가 나더군요.
오류가 난 부분은 캡쳐해서 파일을 첨부했습니다.
한글키보드를 꼭 써야하는데 다시 지우고 설치해야 하나요..?
방법을 아시는 분 있으면 꼭 좀 도와주세요!! ( 삭제시키는 방법도 잘 모른답니다...ㅠ )
이 게시물을...
오류.hwp (89.0KB)(7)
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1569259&act=trackback&key=eb0
2011.06.01 16:13:19 낵교
1. 에뮬레이터를 띄우세요.
2. adb devices 를 치면 에뮬레이터가 잡혀있는지 확인하세요.
3. 에뮬레이터가 실행중으로 잡혀있으면, adb install HangulKeyboard.apk 하셔서 설치하세요.
4. 끝~ 참고로 오류라고 올리신거봤는데 오류내용이 아니라. 명령어가 잘못되서 뜨는 내용뿐인것 같네요.
한글이 깨져서 나와요
치클
http://www.androidpub.com/15634312011.05.29 14:30:45 840앱개발 질문리스트뷰가 있는 액티비티를 두개 만들고 onItemClickListener로 인텐트 시켰는데요
앞에 액티비티에선 한글이 제대로 나오는 데 그 중 하나를 클릭해서 다음 액티비티로 넘어가면 한글이 깨져서 나오네요..
preferences에서 utf-8로 지정해줬는데도 안돼네요..ㅜㅜ
어떻게 방법 없나요..ㅜㅜ
내일 졸업 작품 최종 발표인데 갑자기 이런 상황이 발생해서 죽겠어요 ㅜㅜ
AutoCompleteTextView 에서 한글 초성검색vanilla
http://www.androidpub.com/15482192011.05.22 17:43:28 1632앱개발 질문AutoCompleteTextView 에서 한글 초성검색하려고 합니다.
전체 리스트를 한바퀴 돌면서 초성만 뽑아서
지금 입력한 초성과 같으면 따로 빼내어서 배열로 만들어 놓는거 까지는 했는데요...
그걸 dropdown 으로 보여줘야 하는데... 어떻게 해야 할지;;
AutoCompleteTextView 자체가 한글같은경우는 완성되어야 보여주는거라서..그부분이 문제인거같기도하구요..
AutoCompleteTextView 를 상속해서 새로운걸 만들어야 할까요??
좀 도와주세요..부탁드립니다;
이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1548219&act=trackback&key=e83
2011.05.25 11:05:28 vanilla자답입니다..
AutoCompleteTextView 를 상속받아서..하나 만들어야 되네요..
@Override
public boolean enoughToFilter()
{
return true;
}
@Override
protected void performFiltering(CharSequence text,int keyCode)
{
}
@Override
public void onFilterComplete(int count)
{
}
상속 소스 안에 이렇게 Override 해주고
메인코드단에서는 텍스트변경될때 showDropDown() 해주면..되네용..
휴유웅.. 개발하면할수록..안드로보이가 제 기를 빨아먹는 느낌입니다...;ㅇㅅㅇ;;;
2011.06.17 12:29:44 중견수
같은 문제로 고민중이었는데 자답 감사합니다
큰 도움이 돼었네요 ^^
http://www.androidpub.com/14909142011.04.28 20:11:44 3063앱개발 질문한글 인코딩이 제대로 되지 않는듯 하여 이렇게 질문드립니다.
안드로이드에서 웹서버에 접속해서 결과값을 받았는데. 한글값이 정상적으로 보여지지 않습니다.
1. 웹서버 소스 : (php Source )
$rtn = userDupCheck($connect,$p_userid, $login_pass1);
$rtnStr = "<meta charset=\"euc-kr\">";
$rtnStr .= userWordList($connect,$p_userid);
$rtnStr .= "</meta>";
echo $rtnStr;
==> 해당 php 를 실행시키면 결과
<meta charset="euc-kr">
<words>
<word id="1" value="k1" value="테스트1"/>
<word id="3" value="k2" value="테스트2"/>
</words>
</meta>
해당내용으로 안드로이드 넘어갑니다.
2. 안드로이드
안드로이드 에서 결과값을 뿌려보면 "테스트1" 값이 이상한 깨진 문자로 보여집니다.
왜깨지는지 모르겠습니다.
HttpClient client = new DefaultHttpClient() ;
ResponseHandler<String> reshandler = new BasicResponseHandler() ;
String result = client.execute( request, reshandler ) ;
result.getBytes("EUC-KR") ==> 인코딩하여 메세지를 뿌려보았는데 이상한 깨진 문자 나타나요.
인코딩 Type : iso-8859-1, utf-8 도 해봤는데 안되는데. 어떻게 해야 할런지요.
Log.w 로 메시지를 뿌려 Encoding Data를 뿌려 보았습니다.
이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1490914&act=trackback&key=2b3
2011.04.28 20:30:15 상고맹이로그캣은 한글이 깨지는데, 그문제 아닌가요?
2011.04.28 20:34:47 kellie72Eclipse 안에서 쓴 문자나 string.xml에서 읽은 한글은 로그캣에 잘 보이는데요. 그럼 로그캣문제가 아닌거 아닌가요 ?
그래서 안드로이드에 EditText를 만들어서 넣어 봤는데 . 그래도 깨지는군요.
그럼 . 인코딩 문제인거 아닌가요???
2011.04.29 11:10:20 바다룡
URLEncoder.encode("한글데이타", "UTF-8")
http://www.androidpub.com/14899282011.04.28 15:04:53 1773앱개발 질문앱을 등록하면 이렇게 한글명이 깨져서 나오네요.
검색할때 이름을 먼저 체크할텐데 이렇게 뜨면 검색에 안걸릴 것 같아요.
다른 분들도 한글명인 경우 이렇게 등록되나요?
제대로 명칭이 보인다면 어떻게 해결하는지도 알려주세요.
이 게시물을...
test.png (11.0KB)(0)
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1489928&act=trackback&key=bc4
2011.04.28 15:09:05 바야바저도 그렇습니다만, 대부분 다 그러실걸요? 별 문제 안될걸로 보입니다.
2011.04.28 15:30:07 제이킴등록하실 때 랭귀지 선택에 한글 추가하시고 영어 삭제 하셨나요?
2011.04.29 09:14:27 내맘대로_네. 한글만 있어요. 마켓에서는 한글명으로 제대로 보이는데 등록시에만 저렇게 뜨네요. 검색어로 한글만 입력하면 검색 결과가 이상하게 나와서 저 문제가 아닐까 하는 노파심에...
webview에서 한글출력시 LoadData와 LoadDataWithBaseUrl의 결과가 다릅니다 왜일까요?마니산
http://www.androidpub.com/14216682011.04.05 11:31:59 3982앱개발 질문webview에서 한글출력시 LoadData와 LoadDataWithBaseUrl의 결과가 다릅니다
String encoding = "euc-kr";
String mimeType = "text/html";
String baseUrl='www.myhome.net';
String summary =
"<html><head>" +
"<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" +
"</head><body>" +"한글데이타"+
"</body></html>";
WebView.loadData(summary, mimeType, encoding);->'한글데이타'라고 제대로 나옴
WebView.loadDataWithBaseURL(baseUrl, summary, mimeType,encoding,baseUrl);
->아래와같이 깨져서 나옵니다
무슨 이유일까요
그리고 loadDataWithBaseURL에서 따로 처리해야할 무엇이 있습니까?
이 게시물을...
hangeul2.jpg (2.9KB)(2)
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1421668&act=trackback&key=319
2011.04.05 11:40:39 tjvkfkd입력 인코딩은 UTF-8인데 출력 인코딩을 EUC-KR 로 잡으니 깨지는거 같네요
2011.04.05 12:24:50 마니산그렇군요 양쪽을 다 utf-8로 맞추니 한글이 나오는군요
BaseUrl의 웹서버에서 설정한 encoding이 euc-kr로 되어있어서 그것을 그대로 놔두고 하려니 문제가 생겼네요
감사합니다
http://www.androidpub.com/14506172011.04.15 05:34:26 4471앱개발 질문환경은 우분투 10.10이고 이클립스에서 실행시킵니다.
서버와 클라이언터(안드로이드 폰)가 통신은 되는데 이클립스 콘솔창에 한글이 깨져 나오네요..
이클립스 preference에서 utf-8로 설정은 해줬습니다.
혹시 리눅스 환경에서 설정해줄것이 더 있나 해서 질문드립니다.
그리고 jsp 웹 상에서는 값이 안나오는데.. 휴 뭐가 문젠지 모르겠네요.
부탁드립니다. (--)(__)
jsp 부분.
<html>
<head>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<?xml version="1.0" encoding="utf-8" ?>
<title></title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String Id = request.getParameter("id");
String Favorite_List = request.getParameter("value");
System.out.println("This is server test.");
System.out.println("Id =" + Id);
System.out.println("Value =" + Favorite_List);
%>
</body>
</html>
Android 부분
try{
String postURL = "~~~/TestApplicationServer/sessionTest.jsp";
String PostIDandFavoriteList = URLEncoder.encode("id", "UTF-8") +
"=" + URLEncoder.encode(myPhoneNumber, "UTF-8");
PostIDandFavoriteList += "&" + URLEncoder.encode("value", "UTF-8") +
"=" + URLEncoder.encode(FavoriteList.favorite_list.toString(), "UTF-8");
URL addressURL = new URL(postURL);
HttpURLConnection conn = (HttpURLConnection) addressURL.openConnection();
//conn.setRequestProperty("Content-Type", "application/x-www.form-urlencoded");
//conn.setRequestMethod("POST");
conn.setDoOutput(true);
OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
osw.write(PostIDandFavoriteList);
osw.flush();
BufferedReader read = new BufferedReader(new InputStreamReader(conn.getInputStream(), "cp949"));
String line;
if((line = read.readLine())!=null)
{
Toast t = Toast.makeText(
getApplicationContext(),
"Succese Registration " + "\n" + "\n"
+ line,
Toast.LENGTH_LONG);
t.show();
}
osw.close();
read.close();
}
catch(Exception e)
{
e.printStackTrace();
}
이 게시물을...
목록
엮인글 주소 : http://www.androidpub.com/index.php?document_srl=1450617&act=trackback&key=f5a
2011.04.15 14:35:29 굴다리서버쪽은 잘 모르겠고... 안드로이드 쪽 전에 제가 썼던 방법을 알려드리자면...
위의 소스에서
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded;charset=UTF-8");
추가해 주고
OutputStreamWriter 대신에 PrintWriter를 써서 해결했던 기억이 있네요...
이렇게 사용하면 디비 내용이 전부 출력되는데
where 절을 넣어서 BADDRESS="식당" 인 것만 출력하려면 어떻게 해야하나요>??
구조를 싹 바꿔야 하는건가요?
01.
private
SimpleCursorAdapter adapter;
02.
private
Cursor cursor;
03.
private
void
init(){
04.
cursor = managedQuery(Hongik.buildings.CONTENT_URI,
null
,
null
,
null
,
null
);
05.
String[] from =
new
String[]{Hongik.buildings.BNAME, Hongik.buildings.BADDRESS};
06.
int
[] to =
new
int
[]{R.id.row_bname, R.id.row_baddress};
07.
adapter =
new
SimpleCursorAdapter(
this
, R.layout.hongik_row, cursor, from, to);
08.
setListAdapter(adapter);
09.
}
10.
@Override
11.
public
void
onCreate(Bundle savedInstanceState) {
12.
super
.onCreate(savedInstanceState);
13.
setContentView(R.layout.hongik_main);
14.
registerForContextMenu(getListView());
15.
}
노트패드처럼 내용을 입력하면 DB에 저장되고 이것을 listView로 볼 수 있는 구조입니다.
입력하는 페이지에서 EditText 개수를 2개에서 7개로 늘렸습니다.
2개였을 때는 잘 수행되다가 7개로 추가하는 과정에서 다음과 같은 에러가 났습니다.
error code 19 <============ 문제가 뭘 까요?
06-13 11:53:22.721: ERROR/Database(3407): Error inserting dinner=ghg lunch=ghg date=gyu snack=yu breakfast=ghg
06-13 11:53:22.721: ERROR/Database(3407): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
06-13 11:53:22.721: ERROR/Database(3407): at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
06-13 11:53:22.721: ERROR/Database(3407): at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:55)
06-13 11:53:22.721: ERROR/Database(3407): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1549)
06-13 11:53:22.721: ERROR/Database(3407): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
06-13 11:53:22.721: ERROR/Database(3407): at com.corea.DietDiary6.DiaryDbAdapter.createDiary(DiaryDbAdapter.java:87)
06-13 11:53:22.721: ERROR/Database(3407): at com.corea.DietDiary6.Diary.onActivityResult(Diary.java:147)
06-13 11:53:22.721: ERROR/Database(3407): at android.app.Activity.dispatchActivityResult(Activity.java:3890)
06-13 11:53:22.721: ERROR/Database(3407): at android.app.ActivityThread.deliverResults(ActivityThread.java:3511)
06-13 11:53:22.721: ERROR/Database(3407): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557)
06-13 11:53:22.721: ERROR/Database(3407): at android.app.ActivityThread.access$2800(ActivityThread.java:125)
06-13 11:53:22.721: ERROR/Database(3407): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)
06-13 11:53:22.721: ERROR/Database(3407): at android.os.Handler.dispatchMessage(Handler.java:99)
06-13 11:53:22.721: ERROR/Database(3407): at android.os.Looper.loop(Looper.java:123)
06-13 11:53:22.721: ERROR/Database(3407): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-13 11:53:22.721: ERROR/Database(3407): at java.lang.reflect.Method.invokeNative(Native Method)
06-13 11:53:22.721: ERROR/Database(3407): at java.lang.reflect.Method.invoke(Method.java:521)
06-13 11:53:22.721: ERROR/Database(3407): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-13 11:53:22.721: ERROR/Database(3407): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-13 11:53:22.721: ERROR/Database(3407): at dalvik.system.NativeStart.main(Native Method)
음 그 에러코드는 제약사항 위반(또는 sqlite method 사용시 일반 쿼리문과의 다른 문법적 차이에서 오는 경우도 있습니다.) 해당하는데 , 코드없이 딱히 무엇에 해당하는지 알기는 힘들군요..
입력하는 페이지가 2개였다가 7개로 추가하는 과정에서 이같은 에러가 났다고 하셨는데.. 그것을 바탕으로 조심스럽게 유추해보면 db의 primary키가 중복되서 나오는 경우도 종종 있거든요.
컴파일해서 에뮬이나 디바이스에서 태스트를 한번하게되면 databas파일이 data폴더 하위에 생기는데(root권한이 없으면 탐색기로 확인 불가, 에뮬에서는 가능)....
그 파일에 7개로 추가해서 다시 빌드할 때 전에 있던 db파일을 리셋시키지 않고(아마 dbhelper를 열때 매개변수로 파일 입출력마냥 제어하는 속성이나 매개변수가 있었던듯... ), 그에 덧붙여서 릴레이션을 추가하면 그런 경우가 발생할 수 있거든요.
그런문제인 경우에는 어플리케이션을 data폴더 포함 모두 삭제하시고 다시 빌드하시던가, 아니면 위에 말했던 방식을 찾아서 db를 open하시면 될 것 같네요.
사실 로딩이 필요없는 부분인데, 그럴 듯한 연출을 위해 어플리케이션 처음 시작 시 로딩화면을 보여 준뒤 어떤 작업을 하고 싶습니다.
대충 A 라는 액티비티로 시작한다고하면
A-> B 에서 B를 4초간 보여준 뒤, A 에서 특정 조건에 따라 C로 바로 넘어가거나 , A의 나머지 부분을 실행합니다.
지금은 구현을
A 액티비티의 onCreate에 맨 처음에 startActivity(new Intent(Danger.this, splash.class)); 를 호출하고
splash 액티비티는
public class splash extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initialize();
}
private void initialize()
{
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
finish();
}
};
handler.sendEmptyMessageDelayed(0, 3000);
}
}
이런 구성입니다.
난관에 봉착하였는데, 그것은 앞서 말한 특정 조건에 부합하지 않아 A의 액티비티를 수행하게 될 때는 3초간 잘 로딩을 하는데
C 로 넘어가는 케이스에는 이 splash 가 잘 작동하지 않더라구요... 게다가 더 큰 문제는
나중에 C 액티비티를 종료(finish()) 하고나서 A로 돌아가지 않고 바로 꺼지는 것을 원해서 A에서 C를 호출 할 때 finish()를 했는데 이렇게 하니까 제대로 종료가 되지 않고 C가 종료되면서 A로 돌아오고 다시 Splash 를 하게 되더라구요 .... 이런상황 어떻게 대처해야하나 감이 오질 않아 질문드립니다.
이러한 문제들이 자주 발생하기도 하고, 의외로 난해한 면이 있습니다. 어느분이 비슷한 문제에 댓글을 다시는 걸 봤는데.. 격하게 공감하는 문장 중 하나가
' 액티비티 라이프 사이클에 의존해서 여러층의 액티비티 스택을 관리하지 말아라!?' 라는 것이었습니다.
관련 게시글은 액티비티 생성주기 등등으로 게시판 검색해보시면 좀 나올 것 같구요.
본론으로 돌아가서 첫번째 문제같은 경우는 접근 방식을 좀 바꾸시면 쉽게 해결하실 수 있을 겁니다.
case 1 : A -> B(4초 로딩) -> A 나머지부분
case 2 : A -> B(4초 로딩) -> C
위를 원하시는 것 같은데..
case1의 경우 B(splash)의 경우 구현코드를 보면 3초 delaymessage를 통해서 handle받으면 바로 finsih()를 하여 A로 돌아가도록 구현되 있습니다.
이와 마찬가지로 case2의 경우도 특정 조건에 해당하면 finish()가아닌 C로 인텐트를 하도록 구현해야합니다.
A 에서 반드시 조건을 검색해야한다면.. 그 조건의 결과를 변수로 담아서 putExtra로 넘겨주시고
B의 public void handleMessage(Message msg) 안에서 인텐트로 넘어온 조건값을 get으로 받아 인텐트로 C로 가던지 finish로 A로 가던지 분기시켜야 합니다.
두번째 문제의 경우 해결 방법은 activity or package task(네이버에서 android launchmode로 검색해보세요~) 를 사용하시거나 액티비티 라이프 사이클을 이용해 startActivityForResult(스펠링 맞나 ㅡㅡ;;;) 를 사용하시거나 액티비티 관리자 클래스를 하나만들어 액티비티마다 boolean값을 주어져 관리 하는 방법이 있습니다만...
더 이상의 액티비티가 없다는 가정하에 가장 쉬운방법을 말씀드리면. a와 b에서 인텐트시 context를 넘겨주시고 c에서 모두 받습니다.
C에서 OnBackPressed() 를 오버라이드하시고 받아온 context를 그 안에다가
(Activity)context.finsih() // a에서받아온 context와 b에서 받아온 context 모두 이런식으로 종료
finsih() // c 자기 자신 종료..
위처럼 하시면됩니다..
하지만 위의 방법은 매우 비효율적이고 C를 보여줄 때 a와 b자체가 stack에서 사라지는게 좋기때문에 launchmode를 사용하시거나,
복잡한 액티비티 스택구조의 경우에는 manager class를 하나 따로 두어 static boolean으로 관리를 하시는걸 추천드립니다..
1.
XMLOutputFactory factory = XMLOutputFactory.newInstance();
2.
XMLStreamWriter writer = factory.createXMLStreamWriter(System.out);
1.
writer.writeStartDocument(
"1.0"
);
1.
writer.writeStartElement(
"catalog"
);
1.
writer.writeStartElement(
"book"
);
1.
writer.writeAttribute(
"id"
,
"1"
);
1.
writer.writeStartElement(
"code"
);
2.
writer.writeCharacters(
"I01"
);
3.
writer.writeEndElement();
1.
writer.writeStartElement(
"title"
);
2.
writer.writeCharacters(
"This is the title"
);
3.
writer.writeEndElement();
1.
writer.writeStartElement(
"price"
);
2.
writer.writeCharacters(
"$2.95"
);
3.
writer.writeEndElement();
1.
writer.writeEndDocument();
1.
writer.
flush
();
2.
writer.close();
이방법으로 xml 파일 생성하고.
String filename = "text.xml";
XMLInputFactory factory = XMLInputFactory.newInstance();
System.out.println("FACTORY: " + factory);
XMLEventReader r = factory.createXMLEventReader(filename,new FileInputStream(filename));
while (r.hasNext()) {
XMLEvent e = r.nextEvent();
System.out.println(e.toString());
}
}
public static final String getEventTypeString(int eventType) {
switch (eventType) {
case XMLEvent.START_ELEMENT:
return "START_ELEMENT";
case XMLEvent.END_ELEMENT:
return "END_ELEMENT";
case XMLEvent.PROCESSING_INSTRUCTION:
return "PROCESSING_INSTRUCTION";
case XMLEvent.CHARACTERS:
return "CHARACTERS";
case XMLEvent.COMMENT:
return "COMMENT";
case XMLEvent.START_DOCUMENT:
return "START_DOCUMENT";
case XMLEvent.END_DOCUMENT:
return "END_DOCUMENT";
case XMLEvent.ENTITY_REFERENCE:
return "ENTITY_REFERENCE";
case XMLEvent.ATTRIBUTE:
return "ATTRIBUTE";
case XMLEvent.DTD:
return "DTD";
case XMLEvent.CDATA:
return "CDATA";
case XMLEvent.SPACE:
return "SPACE";
}
return "UNKNOWN_EVENT_TYPE " + "," + eventType;
}
이런방법으로 xml parse 서가 가능하나요?
java에서는 이렇게 해서 깔끔하고 좋던데.. 안드로이드에서는 안되나요 이런방법?
안녕하세요~초보개발자 꾸준한 노력만이 입니다~
미디어 DB를 통해 썸네일 이미지를 그리드뷰로 뿌리고 이미지 선택시
해당이미지를 볼수 있도록 구현하였습니다.
WebView를 이용하여 멀티터치를 구현했습니다만...한가지 문제가 발생했습니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:id="@+id/detailimg_web"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:scrollbars="none"
android:clickable="false"
android:focusable="false"></WebView>
</RelativeLayout>
위 xml에서 보시면 RelativeLayout안에 WebView를 위치시키고 width와 height를 wrap_content로 하였고
WebView의 위치를 부모의 중심(android:layout_centerInParent="true")에 오도록 설정하였습니다.
소스코드를 보면
public class DetailImage extends Activity {
WebView mWeb;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detailimage);
mWeb = (WebView) findViewById(R.id.detailimg_web);
mWeb.setBackgroundColor(Color.BLACK);
mWeb.setFocusable(false);
WebSettings set = mWeb.getSettings();
set.setSupportZoom(true);
set.setBuiltInZoomControls(true);
set.setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
Intent intent = getIntent();
String path = intent.getStringExtra("path");
File file = new File(path);
mWeb.loadUrl("file://" + file.getAbsolutePath());
}
}
이런식으로 파일 경로를 인텐트로 전달받아 보여주게 됩니다.
실제 구현되는 화면을 보면 줌컨트롤러의 위치를 봤을때
<1>은 최초 실행시 화면으로 WebView가 뷰그룹의 center에 위치하고 있다
<2>는 최소배율로 축소했을때인데 최초 실행시 Width와 Heigth를 유지하고 있다.
<3>은 화면을 벗어나도록 확대했을때인데 뷰그룹의 Width와 Height와 같아진 것으로 보임
<4>는 다시 화면보다 이미지가 작도록 축소를 하자 <3>의 Width와 Heigtht를 유지하고 있는 것으로 보입니다.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
이렇게 WebView를 셋팅되어 있어 이미지 크기만큼 WebView의 크기도 변할줄 알았는데 위와 같은 현상이 나타나서
어찌할줄 모르고 있습니다 ㅜㅜ
구현하고 싶은것은 이미지가 가운데 위치하면서 멀티터치에 의해서 확대/축소되도록 하고 싶습니다.
이런 현상이 왜 일어나는지도 궁금하고 제가 원하는 데로 구현도 하도록 하려면 어떻게 해야 하는지
안드로이드 선배님들께 조언을 구합니다~ 꾸벅↓
<1> <2>
<3> <4>
부모의 중심으로 정열 하신뒤에 아래 옵션은 왜 주셨는지요? 제가 직접 테스팅을 안해봤지만 중복 옵션때문에 저런식으로 되는 것 같다는 생각이 듭니다만... android:layout_gravity="center_vertical|center_horizontal"
먼저 답변 감사합니다.
그부분은 제가 수정해놓고 잘못올린거 같네요
android:layout_gravity="center_vertical|center_horizontal" 옵션이 없어도 마찬가지입니다.
서버에서 PNG포맷의 이미지를 가져와서
SD카드에 JPG포맷으로 저장하려고 합니다.
InputStream is = conn.getInputStream();
Bitmap bmp = BitmapFactory.decodeStream(is);
Matrix matrix = new Matrix();
Bitmap reBmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
reBmp.compress(CompressFormat.JPEG, 100, fStream);
fStream.close();
위와같이 정말 직설적으로 짰더니..
Bitmap bmp = BitmapFactory.decodeStream(is);
여기서 아웃오브메모리 뱉고 죽어버리네요;;
단독 실행할때는 죽지 않고 돌아가지만 얘말고 다른 메모리 먹는 애가 같이 돌때 문제가 되요 ㅠㅠ
비트맵 디코딩 과정을 거치지 않고 바로 변환해서 파일로 쓰는 방법은 없을까요??
안녕하세요.
현재 제가 Call log에 sms랑 mms가 같이 나오게 하고 있는데요.
listactivity에 서로다른 위치에 있는 table을 합쳐서 listActivity에 뿌려주고 싶습니다.
smsmms.db의 table과 contacts.db의 table을 조인이 가능한가요?
(system app)
1.
cursor = managedQuery(Hongik.buildings.CONTENT_URI,
null
,
null
,
null
,
null
);
1.
이부분을
1.
cursor = managedQuery(Hongik.buildings.CONTENT_URI,
null
,
"where='검색칼럼'"
,
null
,
null
);
자문자답입니다.
주의할 점은 큰 따옴표로 묶어주고
검색칼럼을 작은 따옴표로 묶어줘야 합니다.
뭐..숫자라면 작은 따옴표는 빼야겠군요.
큰 따옴표에 가려서 작은 따옴표를 빼먹는 바람에 한참 고생했네요.
DB질문좀용 ㅠㅠ
SQLite 로 디비 만들어서
InsertDB라는 함수 만들고 그안에 인서트문 써서 디비에 입력하게 해놧는데요
onCreate에 InsertDB 불러오기해서
사용하려했는데 이렇게하니까 어플 킬때마다 디비에 입력되는거같습니다.
한번만 입력되게 하는방법 잇나용??ㅠㅠ
간단한 질문
인터넷 검색하고 해도 없어서 질문합니다.
검색창을 만들었는데요
edittext랑 버튼이 있는데
edittext에 아무입력이 없이 버튼을 누르면
검색은 되지않고 '입력값이 없습니다' 이렇게 해주고 싶은데 어떻게 해야하나요?
if를 써야할거같긴한데.....돌덩이 열심히 굴려도 잘안되네요..
edittext검색해보니 대부분 xml에서 문자제한 숫자제한 등 이런거만 있어서 이렇게 도움을 구하려고 올려봅니다..
혹은 아무 입력이 없을때 검색기능이 실행되지 않도록은 어떻게 해야 하는지 ... 도와주세요..ㅠ ㅠ
버튼을 눌렀을 때 EditText의 내용을 얻어옵니다.
예를 들어서
String receivedText = editText.getText().getString();
이라고 했을 때
if (receivedText == null || receivedText.equals("") { 처리 }
하시면 되겠습니다.
P.S. receivedText.length() == 0 이라는 조건도 될 듯 싶습니다~
개발할때 에뮬로 하세요? 폰으로 하세요?
에뮬은 너무 느리고요.....
폰으로 할려니 usb로 연결하고 기존앱 지우고 새로 코드 고친거 다시 설치하고 하면서 할려니 너무 번거롭네요....
폰으로 테스트 할때.. 코드 수정할때마다 간편하게 폰으로 테스트 하는 방법은 없나요?
저같은 경우는 그냥 배치파일로 만들어서 삭제하고 그냥 합니다만.....
아니면 머리수많큼 단말을 구해서 쓰던가요.....
배치파일 좀 알려주실수 있나요?
폰으로 개발하면 코드 수정후 실행하면 기존께 삭제되고 새로 실행한 버전이 깔려서 테스트가 되지않나요?
(물론 마켓에서 다운받은건 지우고 첨설치를 이클립스 등으로 한상태에서 ... )
별도록 삭제하고 할필요 없을텐데요 ^^;;;;;;;;;; 폰마다 다른가요 ^^;;;;
사이닝된 어플이 아니면 그냥 이클립스에서 실행만 해도 단말기에서 실행되는데요? 에뮬보단 단말이 훨씬 반응도 좋고, 실제 동작이기도 해서 단말에서 직접 개발합니다.