개발자 포럼

필독사항1 :  
필독사항2 :  

소스: android.zip


안드로이드폰에서 쿨에스엠에스 문자 보내는 방법을 간단하게 알아보겠습니다.


먼저 CoolSms라는 프로젝트명으로 프로젝트를 생성합니다.


    android create project \
       
--package com.diensoft.CoolSms \
       
--activity CoolSms \
       
--target 6 \
       
--path CoolSms


생성된 프로젝트에서 res/layout/main.xml 파일을 열어서 Send 버턴을 추가해 줍니다.

- main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, CoolSms"
/>
    <Button android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send"
/>
</LinearLayout>


CTM-Java 모듈의 SMS.java 파일을 src/com/diensoft/CoolSms 디렉토리에 복사해 넣고 다음과 같이 패키지를 지정해주는 코드를 추가합니다.
- SMS.java
/**
* vi:set ts=4 sw=4 expandtab fileencoding=utf8:
* @version 2.3
* @author wiley
* @copyright (C) 2008-2010 D&SOFT
* @link http://open.coolsms.co.kr
**/
package com.diensoft.CoolSms;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
import java.net.Socket;
import java.net.InetSocketAddress;
..... 이하 생략 .....



src/com/diensoft/CoolSms/CoolSms.java 파일을 열어서 다음과 같이 연두색 배경의 코드들을 추가해 줍니다. 파일 인코딩은 한글입력을 위해서 UTF-8 으로 저장합니다.


- CoolSms.java

package com.diensoft.CoolSms;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import java.io.IOException;
public class CoolSms extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// set button listener
final Button btnSend = (Button)findViewById(R.id.send);
btnSend.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
SMS sms = new SMS();
sms.appversion("Android/1.0");
sms.charset("utf8");
sms.setuser("coolsms-id", "coolsms-password");

SmsMessagePdu pdu = new SmsMessagePdu();
pdu.type = "SMS";
pdu.destinationAddress = "01012345678";
pdu.scAddress = "0200000000";
pdu.text = "문자내용을 80바이트 내로 입력하세요.";
sms.add(pdu);

try {
sms.connect();
sms.send();
sms.disconnect();
} catch (IOException e) {
System.out.println(e.toString());
}
sms.printr();
sms.emptyall();
}
});
}
}


이제 CoolSms 프로젝트 홈디렉토리로 와서 ant debug 명령으로 빌드해 봅니다. 그러면 개발환경에 따라서 UTF-8인코딩으로 입력된 한글로 인해서 아래와 같은 컴파일 오류가 발생할 수 있습니다.
    [javac]                                                                   ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";
[javac] ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";
[javac] ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";
[javac] ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";
[javac] ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";
[javac] ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";
[javac] ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";
[javac] ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";
[javac] ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";
[javac] ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";
[javac] ^
[javac] C:\Projects\android\CoolSms\src\com\diensoft\CoolSms\CoolSms.java:31: warning: unmappable character for encoding ascii
[javac] pdu.text = "??????????????? 80????????? ?????? ???????????????.";


이런 경우 android-sdk가 설치된 디렉토리에서 tools/ant/ant_rules_r3.xml 파일(윈도의 경우 C:\android-sdk-windows\tools\ant\ant_rules_r3.xml)을 열어서 아래와 같이 인코딩을 ascii 에서 utf8 으로 고쳐준 후 다시 빌드합니다.


                .... 생략 ....

                <javac encoding="utf8" target="1.5" debug="true" extdirs=""
                        destdir="${out.classes.absolute.dir}"
                        bootclasspathref="android.target.classpath"
                        verbose="${verbose}"
                        classpath="${extensible.classpath}"
                        classpathref="android.libraries.jars">
                    <src path="${source.absolute.dir}" />
                    <src path="${gen.absolute.dir}" />
                    <src refid="android.libraries.src" />
                    <classpath>
                        <fileset dir="${external.libs.absolute.dir}" includes="*.jar" />
                        <fileset dir="${extensible.libs.classpath}" includes="*.jar" />
                    </classpath>
                </javac>
                .... 생략 ....


빌드가 성공적으로 끝나면 bin 디렉토리로 이동하여 adb를 사용하여 avd(Android Virtual Device)에 업로드하여 실행합니다.


    adb install CoolSms-debug.apk


- AVD에서 실행된 화면 [Send] 버튼을 클릭하면 SMS가 발송됩니다.
android-coolsms.jpg


소스: android.zip

List of Articles