Android 안드로이드2015. 2. 20. 21:53












카메라와 플레시를 다루는 기본 구조를 만들었다.

같은 자리에서 근 1주일여 이상 머무르는 중이다.

바닥으로 내려가서 점검하며 올라가려는 생각에 만들었다.

이것으로 실마리를 찾아가는 단초가 되었으면한다.



package com.example.tstbselight; import java.io.IOException; import android.app.Activity; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.os.Bundle; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MnTstBaeLightActy extends Activity implements SurfaceHolder.Callback { private static final String TAG = MnTstBaeLightActy.class.getSimpleName(); Camera mCamera = null; Parameters mParameters = null; // add null!!! SurfaceView mSurfaceView; SurfaceHolder mSurfaceHolder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acty_mntstbaelight); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "onCreate()"); mSurfaceView = (SurfaceView)findViewById(R.id.surfaceView); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); mSurfaceHolder.addCallback(this); } @Override public void surfaceCreated(SurfaceHolder holder) { Log.d(TAG, "surfaceCreated()"); mCamera = Camera.open(); mParameters = mCamera.getParameters(); try { mCamera.setPreviewDisplay(mSurfaceHolder); } catch (IOException e) { e.printStackTrace(); } Log.d(TAG, "__ B4:setFlashMode():"); mParameters.setFlashMode(Parameters.FLASH_MODE_TORCH); Log.d(TAG, "__ B4:setParameters():"); mCamera.setParameters(mParameters); Log.d(TAG, "__ B4:startPreview():"); mCamera.startPreview(); Log.d(TAG, "__ A4:startPreview():"); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Log.d(TAG, "surfaceChanged()"); } @Override public void surfaceDestroyed(SurfaceHolder holder) { Log.d(TAG, "surfaceDestroyed()"); if (mCamera != null) { Log.d(TAG, "setFlashMode(Parameters.FLASH_MODE_OFF)"); mParameters.setFlashMode(Parameters.FLASH_MODE_OFF); Log.d(TAG, "setParameters(mParameters)"); mCamera.setParameters(mParameters); // mSurfaceHolder.removeCallback(this); Log.d(TAG, "stopPreview()"); mCamera.stopPreview(); Log.d(TAG, "release()"); mCamera.release(); Log.d(TAG, "A4:release()"); mCamera = null; } } @Override public void onDestroy() { Log.d(TAG, "onDestroy()"); super.onDestroy(); } }





Posted by 코드버무려
Android 안드로이드2014. 8. 31. 19:32











Activity 아닌 위칭에서 화면크기 구할 때 Context 객체를 넘겨받아

DisplayMetrics metrics = context.getResources().getDisplayMetrics();

mWidth = metrics.widthPixels;

mHeight = metrics.heightPixels;



************************************************************

리소스에 등록된 이미지를 읽고 bitmap에 연결하며 그 가로 세로 크기를 구한다

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

int w = bitmap.getWidth();

int h = bitmap.getHeight();



************************************************************

버튼 클릭으로 카메라 Preview를 등록하고 해제한다.


buttonStartCameraPreview.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

if(!previewing){

camera = Camera.open();

if (camera != null){

try {

camera.setPreviewDisplay(surfaceHolder);

camera.startPreview();

previewing = true;

} catch (IOException e) {

e.printStackTrace();

}

}

}

}});


buttonStopCameraPreview.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

if(camera != null && previewing){

camera.stopPreview();

camera.release();

camera = null;


previewing = false;

}

}});

Posted by 코드버무려