티스토리 뷰

public class MainActivity extends AppCompatActivity {
ImageView imageView;

File outputFile;
FrameLayout container;

CameraSurfaceView cameraView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

imageView = (ImageView) findViewById(R.id.imageView);
container = (FrameLayout) findViewById(R.id.container);

cameraView = new CameraSurfaceView(this);
container.addView(cameraView);

File storageDir = Environment.getExternalStorageDirectory();
outputFile = new File(storageDir, "output.jpg");
}

public void onButton1Clicked(View v) {

cameraView.capture(new android.hardware.Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, android.hardware.Camera camera) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
BitmapFactory.decodeByteArray(data,0,data.length,options);
}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1001) {
// 카메라앱 화면에서 받음
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap bitmap = BitmapFactory.decodeFile(outputFile.getAbsolutePath(), options);
imageView.setImageBitmap(bitmap);
}
}

class CameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder holder;
android.hardware.Camera camera = null;

CameraSurfaceView(Context context) {
super(context);
Init(context);
}

CameraSurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
Init(context);
}

private void Init(Context context) {
holder = getHolder();
holder.addCallback(this);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
camera = android.hardware.Camera.open();
camera.setPreviewDisplay(holder);
} catch (Exception e){
e.printStackTrace();
}
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
camera.startPreview();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
camera.startPreview();
camera.release();
camera = null;
}
public boolean capture(android.hardware.Camera.PictureCallback callback){
if(camera != null){
camera.takePicture(null,null,callback);
return true;
} else{
return false;
}
}
}//기본이 두개가 필요
}


'3학년 2학기 > Android stdio' 카테고리의 다른 글

색상 선택하기  (0) 2016.11.13
title bar 없애기  (0) 2016.11.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/10   »
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
글 보관함