이번 시간에는 7강 멀티미디어의 첫번째 강의인 '사진 찍어 저장하기' 리뷰입니다.
개념을 알아보면서 실습한 내용을 덧붙여 알아보도록 하겠습니다!
멀티미디어는 음악 파일 재생, 동영상 재생, 사진찍기 등 여러 기능을 포함합니다.
이번 시간에는 사람들이 가장 많이 사용하는 기능인 사진찍기를 구현하는 법을 알아보도록 할게요.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="43dp"
android:layout_marginTop="38dp"
android:text="사진찍기" />
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="-3dp"
android:layout_marginTop="101dp"
app:srcCompat="@mipmap/ic_launcher" />
</RelativeLayout>
MainActivity.java
package com.example.mycapture;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.File;
public class MainActivity extends AppCompatActivity {
ImageView imageView;
File file;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//SD카드의 폴더 참조
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard, "capture.jpg");
imageView = (ImageView) findViewById(R.id.imageView);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
capture();
}
});
}
public void capture(){
if(Build.VERSION.SDK_INT>=24){
try{
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
builder.detectFileUriExposure();
}catch(Exception e){}
}
// 사진 앱 실행
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, 101);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 101 && resultCode == Activity.RESULT_OK){
// 객체를 1/8 사이즈로 만듦
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
// 비트맵 객체 생성성
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), options);
imageView.setImageBitmap(bitmap);
}
}
}
AndroidManifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
저장소를 이용하기 위한 권한을 추가해줍니다.
초기 화면입니다. 버전 문제 때문에 사진 찍기를 누르면 자꾸 앱이 꺼집니다..
이 부분은 보완해서 업데이트 해놓도록 하겠습니다.
'안드로이드' 카테고리의 다른 글
[Android] 7. 멀티미디어 - 음악 재생하기 (0) | 2019.09.06 |
---|---|
[Android] 6. 데이터베이스 - 인터넷 연결상태 확인하기 (0) | 2019.08.15 |
[Android] 6. 데이터베이스 - 헬퍼 사용하기 (0) | 2019.08.15 |
[Android] 6. 데이터베이스 - 데이터 추가하고 조회하기 (0) | 2019.08.10 |
[Android] 6. 데이터베이스 - 데이터베이스 이해하기 (0) | 2019.08.10 |
댓글