안녕하세요 ! 초보개발자 입니다.
이 블로그는 개인 공부 정리용 블로그 입니다.
혹 잘못된 내용이 있다면 지적 부탁드리겠습니다.
그리고 질문주신다면 최대한 아는선에서 답변드리도록 하겠습니다.
그럼 시작하도록 하겠습니다.
오늘은 간단히 안드로이드내에 내장되어 있는 카메라로 사진을 찍어서 이미지뷰에 보이도록 해보겠습니다.
먼저 화면은 카메라를 실행할 버튼 하나와 카메라로 찍은 사진을 보여줄 이미지 뷰로 구성 되어 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="400dp"> <ImageView android:id="@+id/view" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> <LinearLayout android:layout_marginTop="40dp" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" > <Button android:id="@+id/camera" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="카메라" /> </LinearLayout> </LinearLayout> | cs |
xml 화면 입니다 .
간단하죠 ? 카메라를 실행할 버튼과 카메라 버튼 위쪽에 보이지는 않지만 우리가 찍은 이미지를 보여 줄 이미지 뷰가 있습니다.
소스를 보도록 하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | package com.example.donghyun.cameratest; import android.content.Intent; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button Button_Camera; ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button_Camera = (Button)findViewById(R.id.camera); imageView = (ImageView)findViewById(R.id.view); Button_Camera.setOnClickListener(this); } @Override public void onClick(View view) { Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(i,0); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { imageView.setImageURI(data.getData()); } } | cs |
먼저 카메라를 불러오기 위해서는 Intent 라는 녀석을 사용 하여야 합니다.
인텐트에 대해서는 나중에 자세하게 알아보기로 하고 일단 지금은 카메라를 불러오도록 해보겠습니다. 코드는 다음과 같습니다.
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
사진을 찍어서 사진을 가지고 와야하기 때문에 onActivityResult를 사용합니다. intent 의 결과값을 onActivityResult에서 사용 할 수 있습니다.
data.getData()를 통해 방금 찍은 사진의 Uri를 가지고 올 수 있습니다. 그것을 이용하여 imageView에 나타 낼 수 있습니다.
아 그리고 매니페스트에 다음과 같은 코드를 추가해 주셔야 합니다.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
실행 화면 입니다.
사진을 찍어서 이미지뷰에 출력하였더니 화면이 돌아갔습니다. 이부분은 이미지를 따로 처리해 주어야 합니다. 그 부분은 지금 수준에서는 복잡하기 때문에 나중에 다시 언급하도록 하겠습니다.
오늘은 여기서 마치도록 하겠습니다. 수고 하셨습니다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드] 인텐트(Intent) 이용하기(1) - 다른 액티비티로 이동 (1) | 2017.05.05 |
---|---|
[안드로이드] 레이아웃 인플레이션(Layout Inflation) (2) | 2017.05.04 |
[안드로이드] SharedPreferences를 이용한 자동로그인 기능 구현 (106) | 2017.05.02 |
[안드로이드] ScrollView(스크롤 뷰) (1) | 2017.04.29 |
[안드로이드] 레이아웃(3) - TableLayout (1) | 2017.04.28 |