package com.sgap.exam.camera2; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.zip.Inflater; import android.app.Activity; import android.app.AlertDialog; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.database.Cursor; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.FontMetrics; import android.graphics.Path.FillType; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.hardware.Camera; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore.Images.Media; import android.util.Log; import android.view.Display; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; // Camera의 SurfaceView를 가지고 논다.. public class CameraActivity extends Activity { private static final String TAG = "EXAMPLE===> "; private Display mDisplay; private static int DISPLAY_WITH; private static int DISPLAY_HEIGHT; private Camera camera; private SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyyMMddHHmmssSS"); private Uri targetResource = Media.EXTERNAL_CONTENT_URI; private CameraPreview mView; private SurfaceView mSurfaceView; private SurfaceHolder mSurfaceHolder; private DrawOnTop mOverlay; private Drawable mDrawable; private Resources mRes; public void onCreate(Bundle icicle) { //TAG = getClass().getSimpleName(); Log.d( TAG, "onCreate"); mDisplay = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); DISPLAY_WITH = mDisplay.getWidth(); DISPLAY_HEIGHT = mDisplay.getHeight(); LayoutInflater inflater = getLayoutInflater(); super.onCreate(icicle); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFormat(PixelFormat.TRANSLUCENT); mRes = getResources(); setContentView(R.layout.main); RelativeLayout container = (RelativeLayout)findViewById(R.id.container); mView = new CameraPreview(this); mView.getHolder().setFormat(PixelFormat.TRANSLUCENT); //mOverlay = (DrawOnTop)this.findViewById(R.id.overlay); mOverlay = new DrawOnTop(this); //[[ 버튼 추가... ImageView btn_list = new ImageView(this); btn_list.setBackgroundResource(R.drawable.selector_btn_list); View view1 = inflater.inflate(R.layout.arview_overlaybutton, null); View view2 = inflater.inflate(R.layout.arview_overlaybutton, null); ImageView btn2 = (ImageView)view2.findViewById(R.id.btn_icon); btn2.setBackgroundResource(R.drawable.ar_view_icon02); btn2.setOnClickListener(detailClickListener); ImageView btn22 = (ImageView)view2.findViewById(R.id.btn_icon2); btn22.setBackgroundResource(R.drawable.selector_cate02); btn22.setOnClickListener(detailClickListener); ImageView btn23 = (ImageView)view2.findViewById(R.id.btn_icon3); btn23.setBackgroundResource(R.drawable.selector_btn_del); View view3 = inflater.inflate(R.layout.arview_overlaybutton, null); ImageView btn3 = (ImageView)view3.findViewById(R.id.btn_icon); btn3.setBackgroundResource(R.drawable.ar_view_icon03); btn3.setOnClickListener(detailClickListener); ImageView btn32 = (ImageView)view3.findViewById(R.id.btn_icon2); btn32.setBackgroundResource(R.drawable.selector_cate03); btn32.setOnClickListener(detailClickListener); ImageView btn33 = (ImageView)view3.findViewById(R.id.btn_icon3); btn33.setBackgroundResource(R.drawable.selector_btn_del); View view4 = inflater.inflate(R.layout.arview_overlaybutton, null); ImageView btn4 = (ImageView)view4.findViewById(R.id.btn_icon); btn4.setBackgroundResource(R.drawable.ar_view_icon04); btn4.setOnClickListener(detailClickListener); ImageView btn42 = (ImageView)view4.findViewById(R.id.btn_icon2); btn42.setBackgroundResource(R.drawable.selector_cate04); btn42.setOnClickListener(detailClickListener); ImageView btn43 = (ImageView)view4.findViewById(R.id.btn_icon3); btn43.setBackgroundResource(R.drawable.selector_btn_del); View view5 = inflater.inflate(R.layout.arview_overlaybutton, null); ImageView btn5 = (ImageView)view5.findViewById(R.id.btn_icon); btn5.setBackgroundResource(R.drawable.ar_view_icon05); btn5.setOnClickListener(detailClickListener); ImageView btn52 = (ImageView)view5.findViewById(R.id.btn_icon2); btn52.setBackgroundResource(R.drawable.selector_cate05); btn52.setOnClickListener(detailClickListener); ImageView btn53 = (ImageView)view5.findViewById(R.id.btn_icon3); btn53.setBackgroundResource(R.drawable.selector_btn_del); View view6 = inflater.inflate(R.layout.arview_overlaybutton, null); ImageView btn6 = (ImageView)view6.findViewById(R.id.btn_icon); btn6.setBackgroundResource(R.drawable.ar_view_icon06); btn6.setOnClickListener(detailClickListener); btn6.setTag("의류"); ImageView btn62 = (ImageView)view6.findViewById(R.id.btn_icon2); btn62.setBackgroundResource(R.drawable.selector_cate06); btn62.setOnClickListener(detailClickListener); ImageView btn63 = (ImageView)view6.findViewById(R.id.btn_icon3); btn63.setBackgroundResource(R.drawable.selector_btn_del); RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams param1 = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams param2 = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams param3 = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams param4 = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams param5 = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams param6 = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); param.setMargins(10, 60, 0, 0); param1.setMargins(50, 130, 0, 0); param2.setMargins(20, 190, 0, 0); param3.setMargins(90, 230, 0, 0); param4.setMargins(130, 300, 0, 0); param5.setMargins(160, 420, 0, 0); param6.setMargins(20, 360, 0, 0); container.addView(btn_list, param); container.addView(view1, param1); container.addView(view2, param2); container.addView(view3, param3); container.addView(view4, param4); container.addView(view5, param5); container.addView(view6, param6); // addContentView(mOverlay, new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); mSurfaceView = (SurfaceView)this.findViewById(R.id.surface); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceHolder.addCallback(mView); mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); /*Button openSound = (Button)findViewById(R.id.openSound); openSound.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //Intent intent = new Intent(getBaseContext(), SoundRecordingSample.class); //startActivity(intent); } });*/ Button btn_camera = (Button)findViewById(R.id.btn_camera); btn_camera.setEnabled(false); Button btn_map = (Button)findViewById(R.id.btn_map); btn_map.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(getBaseContext(), MyMapViewActivity.class); // intent.putExtra("time", astrTime); // intent.putExtra("lat", astrLat); // intent.putExtra("lon", astrLon); startActivity(intent); } }); } private OnClickListener detailClickListener = new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(getBaseContext(), MyDetailActivity.class); startActivity(intent); } }; public boolean onCreateOptionsMenu(android.view.Menu menu) { MenuItem item = menu.add(0, 0, 0, "View Pictures"); item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(Intent.ACTION_VIEW, targetResource); startActivity(intent); return true; } }); return true; } protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } Camera.PictureCallback mPictureCallbackRaw = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera c) { camera.startPreview(); } }; Camera.ShutterCallback mShutterCallback = new Camera.ShutterCallback() { public void onShutter() { } }; protected void onResume() { Log.e(getClass().getSimpleName(), "onResume"); super.onResume(); } protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } protected void onStop() { super.onStop(); } public class DrawOnTop extends View { String str = "Surface위에 그립니다."; int v_width, v_height; private int new_X = 0; private int new_Y = 0; private boolean drawing; private float radius; private float initX; private float initY; public DrawOnTop(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.RED); paint.setTextSize(20); canvas.drawText("Surface위에 그립니다.", 10, 10, paint); } @Override public boolean onTouchEvent(MotionEvent event) { switch(event.getAction()){ case MotionEvent.ACTION_DOWN : initX = event.getX(); initY = event.getY(); radius = 1; drawing = true; break; case MotionEvent.ACTION_MOVE : float x = event.getX(); float y = event.getY(); radius = (float) Math.sqrt(Math.pow(x-initX, 2) + Math.pow(y-initY, 2)); return true; case MotionEvent.ACTION_UP : updateDrawableXY(event.getX(), event.getY()); drawing = false; return true; } invalidate(); return false; } private void updateDrawableXY(float _x, float _y){ new_X = (int)_x;// + moving_X; new_Y = (int)_y;// + moving_Y; } } }