블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday



인텐트(Intent)는 몇 줄 안되는 코드만으로 웹브라우저를 띄운다거나, 전화를 한다거나 할 수 있다. 왜 이렇게 가능하냐면, 인텐트는 안드로이드 플랫폼간에 메세지 또는 값과 같은 데이터를 주고 받을 수 있는 것이다. 다시말해 이를 이용하면 앱간에 필요한 요청을해서 실행하거나 할 수 있다는 이야기이다. 

1. 웹브라우저를 띄우는 인텐트 

// 인텐트를 이용해 디바이스 브라우저에서 해당 URL연결 함.

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.naver.com"));

                                         

// 해당 인텐트를 시작한다.

startActivity(browserIntent);

[소스 1 – 웹브라우저를 띄우는 인텐트]



2. 전화를 거는 인텐트

// 인텐트를 이용해 전화걸기 화면으로 이동함

Intent callIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:010-1234-5678"));

                                         

// 해당 인텐트를 시작한다.

startActivity(callIntent);                                

[소스 2 – 전화 걸기를 띄우는 인텐트]


카카오톡 모바일 API형태도 인텐트를 이용해서 카카오앱에 내용을 전달하는 것이다. 





Posted by happydong
, |



 어떤 개발을 하던 사용자의 이벤트를 받아서 처리하는 것이 대부분 일 것이다. 처음 안드로이드를 공부하는 중인데간단하게 버튼 사용 법에 대해서 샘플 코드를 작성하면서 알아 보겠다.

 
프로젝트를 생성하면 아래 그림과 같이 생길 것 이다



[그림 1 - 샘플 프로젝트 구성 내용]



그럼 activity_main.xml 파일은 View를 처리하는 역할을 하고, MainActivity.javaController의 역활을 한다고 생각하면 된다. 그럼 activity_main.xml에서 간단하게 버튼 하나를 올려보자.



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/LinearLayout1"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

 

    <Button

        android:id="@+id/startBtn"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/hello_world" />

 

</LinearLayout>

[코그 1 - activity_main.xml 소스코드]


버튼(Button) 속성은 대충 보면 어떤걸 의미하지는 알 수 있을 것이다. 따로 설명은 하지 않겠다.
주요하게 id를 지정할 때 "@+id/"로 하는 것은 잘 기억해두자. 안드로이드 같은 경우 ‘@’기호로 ID를 찾기 때문에 “@+id/” ID를 추가 한다고 생각하면 될 것이다. 이렇게 정의 하게 되면 이 내용은 R.java파일에 기록이 된다. 그럼 .java파일에서 해당 Object를 찾을 수 있다.



           @Override

           protected void onCreate(Bundle savedInstanceState) {

                     super.onCreate(savedInstanceState);

                     setContentView(R.layout.activity_main);

                    

                     // View 있는 id 버튼 이벤트를 정의합니다.

                     Button startBtn = (Button)findViewById(R.id.startBtn);

                    

                     // OnClickListener를 이용해 버튼 이벤트 처리

                     startBtn.setOnClickListener(new OnClickListener() {

                               

                                @Override

                                public void onClick(View v) {

                                          // Toast 메세지창이 잠깐 나왔다 들어가는 것이다.

                                          // 이는 makeText()함수와 show()함수를 이용해 메세지를 보여줄수 있다.

                                          Toast.makeText(getApplicationContext(), "시작 버튼이 눌렀어요.", Toast.LENGTH_LONG).show();

 

                                }

                     });

                    

           }

[소스 2 – MainActivity.java 소스코드]


[소스 2]View에서 선언한 Button의 인스턴스를 생성한 후 해당 이벤트를 정의하는 코드이다. findViewById 함수를 이용해서 View에서 선언한 Button의 인스턴스를 만든다. 그리고 OnClickListener를 이용해서 버튼의 이벤트를 정의한다.  Toast를 이용해서 잠깐 나타났다 사라지는 메시지창을 이용해서 메시지를 간단하게 띄운다. 위 소스를 쓰다 보면
OnClickListener
Toast를 작성할 때 에러가 날 것이다. 이는 import가 안되서 그러는데 코드를 다 작성한 후 ctrl + Shift + o(영문)를 누루면 자동으로 필요한 내용이 import된다. 위 코드 까지 넣고 실행해 보면, 메시지가 잘 뜨는 것을 볼 수 있을 것이다.

여기서 중요한 것 findViewById함수를 이용해 객체 찾아 인스턴스 생성하기, OnClickListener를 이용해 버튼 이벤트 정의하기 정도가 되겠다.









Posted by happydong
, |



안드로이드 예제를 보면서 공부하고 있는데... 남들 다되는 소스가 내가 하면 안된다. 어떻게 안되느냐 하면, layout에서 @+id/{id}를 다들 지정해 주는데, java파일에 오면 R.id.{id}가 안나오는 것이다. 이상하다 싶어 알아보니, 리소스파일에 대문자로된 파일이 있으면 에러가 나는 것!! 그래서 R.java파일이 갱신이 안되는 것!!!

이걸로 30분 허비했음....;;;;


결론은 그냥 파일 넣을 때 소문자로 넣자!!


Posted by happydong
, |