2020년 7월 18일 토요일

자마린.안드로이드 HelloWorld\

자마린.안드로이드 HelloWorld
2. Xamarin.Android
2.1 Hello Android(Xamarin.Android Application) 예제
n Xamarin.Android를 이용하여 전화번호를 입력받은 후 폰의 전화걸기 앱을 호출하여 전화거는 기능을 구현해 보자.
n Visual Studio를 실행하여 파일 -> 새로만들기 -> 프로젝트를 클릭 후 좌측 템플릿에서 Android -> 비어있는 앱(Blank App)을 선택하고 프로젝트 이름을 “Android_Hello”라고 입력을 하자.
n 프로젝트가 생성되면 우측 솔루션 탐색기의 Resources -> Layout 아래의 activity_main을 더블 클릭하면 폰화면이 나타나는데 이 파일이 스크린의 Layout 파일이다.
n 화면 좌측에 도구상자(ToolBox)가 보이지 않으면 보기메뉴 -> 도구상자를 클릭해서 좌측에 위치시킨 후 Text(Large)를 드래그 해서 폰화면의 상단 가운데 위치 시키고 우측하단 속성창에서 Text 속성을 " Enter a Phone Number : ” 로 입력하자.
n 툴박스(ToolBox)에서 Plain Text 위젯을 선택 후 Text(Large) 박스 아래에 위치 시키고 id 속성을 “@+id/PhoneNumberText”로 설정하자. (드래그해서 위치 시킬 때 마우스 커서가 화살표 모양이 될 때 컨트롤을 놓아야 한다.)
n 도구상자에서 Button을 선택해서 Plain Text 아래에 위치시키고 id 속성을 “@+id/CallButton”, Text 속성을 “Make a Call”로 설정하자.
n “Make a Call“ 버튼과 연관된 기능을 구현하는데 솔루션 탐색기에서 MainActivity.cs 파일을오픈하고 OnCreate 메소드에서 전화걸기 버튼의 기능을 구현하자.
[MainActivity.cs]
using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Widget;
using Android.Content;
namespace Android_Hello
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
EditText phoneNumberText =
FindViewById<EditText>(Resource.Id.PhoneNumberText);
//전화걸기 버튼
Button callButton = FindViewById<Button>(Resource.Id.CallButton);
callButton.Enabled = false;
phoneNumberText.TextChanged +=
(object sender, TextChangedEventArgs e) =>
{
callButton.Enabled = !string.IsNullOrWhiteSpace(phoneNumberText.Text) ? true : false;
};
callButton.Click += (object sender, EventArgs e) =>
{
//Make a Call 버튼 클릭시 전화를 건다.
var callDialog = new Android.App.AlertDialog.Builder(this);
callDialog.SetMessage("Call " + phoneNumberText.Text + "?");
//"Call"을 클릭하는 경우
// 전화걸기 위한 인텐트 생성
callDialog.SetNeutralButton("Call", delegate
{
// 인텐트는 액티비티의 전환이 일어날 때 호출하거나 메시지를 전달하는 매개체
// 암시적 인텐트 : 전환될 곳을 직접 지정하지 않고 액션을 적어서 사용한다.
// 명시적 인텐트 : 전환될 액티비티를 직접 적어서 표현하는 방법을 사용한다.
var callIntent = new Intent(Intent.ActionCall);
callIntent.SetData(Android.Net.Uri.Parse("tel:" + phoneNumberText.Text));
StartActivity(callIntent);
});
//Cancel을 클릭하는 경우
callDialog.SetNegativeButton("Cancel", delegate { });
callDialog.Show();
};
}
}
}
n Application에 전화거는 기능을 활성화 시키자. Android Manifest안에 권한과 관련된 부분을 정의해야 하는데, 솔루션 탐색기에서 Properties를 더블클릭하고 좌측 Android Manifest를 선택 후 하단의 Permission중 “CALL_PHONE” permission을 활성화 하자.
n 애플리케이션 이름을 지정하자. 기본적으로 프로젝트명으로 되어 있는데 “First Xamarin.Android App”으로 변경하자. (Resources/values/strings.xml)
n 모든 변경사항을 저장(Ctrl+Shift+S)하고 빌드하자.(Build > Rebuild Solution)
n MainActivity.cs의 Label은 응용프로그램의 스크린 최상단에 디스플레이되는 텍스트, 응용프로그램의 이름이니 필요하다면 수정을 하면 된다.
[Activity(Label = "Xamarin Android", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity {
n 실습시 전화걸기가 권한/보안 오류로 인해 작동하지 않는다면 설정 -> 애플리케이션 관리 -> 애플리케이션 관리자를 실행하여 해당 앱을 선택하고 권한 -> 전화를 선택하여 권한을 주도록 하자.
n 에뮬레이터, 또는 안드로이드폰으로 테스트를 해보자.
실제 폰에서 테스트 하길 권고하며 USB 연결을 했는데도 상단에 본인의 “휴대폰 모델명”이 보이지 않으면 개인의 폰에 맞는 USB Driver를 설치 후 다시 USB를 연결하자.
Properties를 더블클릭 후 좌측 Application 에서 API LEVEL 23(mashimallow)로 설정하고 이뮬레이터를 실행했다. 상단의 실행단추를 눌러 실행하자.
n 폰으로 테스트 하기 위해서는 휴대폰을 USB로 연결 후 폰에서 USB 디버깅을 활성화 해야 되는데 휴대폰 상단 설정을 클릭하고 더보기 -> 개발자옵션 ->USB 디버깅을 체크하자. 또는 갤럭시 S4이후, 안드로이드4.2 젤리빈 이후의 폰들은 개발자 옵션이 비활성화 되어있으므로 설정 -> 디바이스 정보 -> 빌드번호 를 7번 클릭하면 “개발자 모드가 실행되었습니다” 라는 메시지가 나오면서 개발자 모드가 활성화 된다. 개발자 모드를 활성화하면 USB 디버깅도 같이 활성화 하자.
2.2 Hello Xamarin Android 구조?
n Properties : 응용프로그램 이름, 버전, 접근권한과 같이 Xamarin.Android Application 요구사항들을 설명하는 AndroidManifest.xml을 포함하고 있으며, 자기자신 어셈블리를 서술하는 AssemblyInfo.cs 파일도 제공한다.
n 참조 : 응용프로그램이 참조하는 내부, 외부 어셈블리(.DLL)을 지정한다. References 디렉터리를 확장하면 System, System.Core 및 System.Xml과 같은 .NET 어셈블리에 대한 참조는 물론 Xamarin의 Mono.Android 어셈블리에 대한 참조가 표시된다.
n Assets : 글꼴, 로컬 데이터 파일 및 텍스트 파일을 비롯하여 응용 프로그램이 실행해야하는 파일이 들어 있으며 여기에 포함 된 파일은 생성 된 Assets 클래스를 통해 액세스 할 수 있습니다.
n Resources : 문자열, 이미지 및 레이아웃과 같은 응용 프로그램 자원을 포함하며 생성 된 Resource 클래스를 통해 코드에서 이러한 리소스에 액세스 할 수 있다.

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...