2. 2. 자마린 안드로이드(Xamarin.Android)
2.1 HelloWorld 따라하기
Xamarin.Android를 이용하여 전화번호를 입력 받은 후 폰의 전화걸기 앱을 호출하여 전화거
는 기능을 구현해 보자. (실습시 전화걸기가 권한/보안 오류로 인해 작동하지 않는다면 설정
-> 애플리케이션 관리 -> 애플리케이션 관리자를 실행하여 해당 앱을 선택하고 권
한 -> 전화를 선택하여 권한을 주도록 하자)
실습환경 (Visual Studio 2015)
Visual Studio 2015를 실행하여 파일 -> 새로만들기 -> 프로젝트를 클릭 후 좌측 템플릿에서
Android -> 비어있는 앱(Blank App)을 선택하고 프로젝트 이름을 “Android_Hello”라고 입력을
하자.
3. 프로젝트가 생성되면 우측 솔루션 탐색기의 Resources -> Layout 아래의 Main.axml을
더블 클릭하면 폰화면이 나타난다, 이 파일이 스크린의 Layout 파일이다.
4. 화면 좌측에 도구상자(ToolBox)가 보이지 않으면 보기메뉴 -> 도구상자를 클릭해서 좌측
에 위치시킨 후 Text(Large)를 드래그 해서 폰화면의 상단 가운데 위치 시키고 우측하단 속성
창에서 Text 속성을 " Enter a Phone Number : ” 로 입력하자.
5. 툴박스(ToolBox)에서 Plain Text 위젯을 선택 후 Text(Large) 박스 아래에 위치 시키고 id 속
성을 “@+id/PhoneNumberText”로 설정하자.
6. 도구상자에서 Button을 선택해서 Plain Text 아래에 위치시키고 id 속성을
“@+id/CallButton”, Text 속성을 “Make a Call”로 설정하자.
7. “make a Call“ 버튼과 연관된 기능을 구현하는데 솔루션 탐색기에서 MainActivity.cs 파일을
오픈하자 MainActivity의 OnCreate 메소드에서 전화걸기 버튼의 기능을 구현한다.
[MainActivity.cs]
using System;
using Android.App;
using Android.Content;
using Android.Widget;
using Android.OS;
using Android.Text;
namespace Android_Hello
{
// Label은 응용프로그램의 스크린 최상단에 디스플레이되는 텍스트이니
필요하다면 수정을 하면 된다.
[Activity(Label = "Xamarin Android", MainLauncher = true, Icon =
"@drawable/icon")]
8. //액티비티는 사용자인터페이스의 기본단위이며 보통 하나의 화면이다.
//ActivityManager에 의해 관리되며 Activity 클래스를 상속받아
만든다.
//하나이상의 뷰,레이아웃,이벤트로 구성되며 한개이상의 액티비티를
모아 App을 구성한다.
//런처에 의해 호출되며 다른 액티비티 호출가능하고, 종료하는것도
가능하다.
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// 로드된 UI로 부터 컨트롤 참조를 얻음
// 전화번호 입력창
EditText phoneNumberText =
FindViewById<EditText>(Resource.Id.PhoneNumberText);
//전화걸기 버튼
Button callButton =
FindViewById<Button>(Resource.Id.CallButton);
//전화걸기 버튼 비활성화
callButton.Enabled = false;
//phoneNumberText에 값이 들어올 때만 callButton 활성화
phoneNumberText.TextChanged += (object sender,
TextChangedEventArgs e) =>
{
if (!string.IsNullOrWhiteSpace(phoneNumberText.Text))
callButton.Enabled = true;
else
callButton.Enabled = false;
};
//전화걸기 버튼 이벤트 처리
callButton.Click += (object sender, EventArgs e) =>
{
//Make a Call 버튼 클릭시 전화를 건다.
var callDialog = new AlertDialog.Builder(this);
9. callDialog.SetMessage("Call " + phoneNumberText + "?");
//"Call"을 클릭하는 경우
// 전화걸기 위한 인텐트 생성
callDialog.SetNeutralButton("Call", delegate
{
// 인텐트는 액티비티의 전환이 일어날 때 호출하거나
메시지를 전달하는 매개체
// 암시적 인텐트 : 전환될 곳을 직접 지정하지 않고
액션을 적어서 사용한다.
// 명시적 인텐트 : 전환될 액티비티를 직접 적어서
표현하는 방법을 사용한다.
var callIntent = new Intent(Intent.ActionCall);
callIntent.SetData(Android.Net.Uri.Parse("tel:" +
phoneNumberText));
StartActivity(callIntent);
});
//Cancel을 클릭하는 경우
callDialog.SetNegativeButton("Cancel", delegate { });
};
}
}
}
Application에 전화거는 기능을 활성화 시키자. Android Manifest안에 권한과 관련된 부분을
정의해야 하는데 솔루션 탐색기에서 Properties를 더블클릭하고 좌측 Android Manifest를
선택 후 하단의 Permission중 CALL_PHONE permission을 활성화 하자.
10. 모든 변경사항을 저장(Ctrl+Shift+S)하고 빌드하자.(Build > Rebuild Solution)
MainActivity.cs의 Label은 응용프로그램의 스크린 최상단에 디스플레이되는 텍스트이니 필요
하다면 수정을 하면 된다.
[Activity(Label = "Xamarin Android", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity {
응용프로그램의 아이콘을 설정할 수 있는데
https://developer.xamarin.com/guides/android/getting_started/hello,android/Resources/Xamari
nAppIconsAndLaunchImages.zip 에서 아이콘 ZIP파일을 다운받아 적당히 압축을 풀자. 프로
젝트의 Resources -> drawable 존재하는 Icon.png 파일을 먼저 삭제후 압축푼 경로 아래
Androiddrawable 폴더의 Icon.png를 다시 선택해 주면 되는데 솔루션 탐색기 ->
Ressources -> drawable 에서 마우스 우측버튼 -> 추가 -> 기존항목을 선택 후 압축 푼 경로
의 Androiddrawable 아래의 Icon.png 파일을 선택하면 아이콘이 등록된다.
11. 앞에서 다운 받은 파일의 Androiddrawable* 폴더들을 프로젝트로 복사하면 되는데
drawable 폴더를 제외한 모든 폴더를 복사 후 프로젝트의 Resources 아래에 붙여넣자.
12. 다음은 Android Manifest안에 아이콘을 등록하면 되는데 솔루션 탐색기의 Properties 더블클
릭 -> 왼쪽에서 Android Manifest를 선택 후 나타나는 화면의 Application Icon 메뉴에서
@drawble/Icon을 선택하자.
13. 이제 에뮬레이터, 또는 안드로이드폰으로 테스트를 해보자.
Properties를 더블클릭 후 좌측 Application 에서 API LEVEL 23(mashimallow)로 설정하고 이뮬
레이터를 실행했다. 상단의 실행단추를 눌러 실행하자.
14.
15.
16. [에뮬레이터 실행화면]
폰으로 테스트 하기 위해서는 휴대폰을 USB로 연결 후 폰에서 USB 디버깅을 활성화 해야
되는데 휴대폰 상단 설정을 클릭하고 더보기 -> 개발자옵션 ->USB 디버깅을 체크하자. 또는
갤럭시 S4이후, 안드로이드4.2 젤리빈 이후의 폰들은 개발자 옵션이 비활성화 되어있으므로
설정 -> 디바이스 정보 -> 빌드번호 를 7번 클릭하면 “개발자 모드가 실행되었습니다” 라는
메시지가 나오면서 개발자 모드가 활성화 된다. 개발자 모드를 활성화하면 USB 디버깅도 같