<span style="font-size:10px;">public class CameraPreview extends Activity {
//private Preview mPreview;
private ViewGroup.LayoutParams v;// = (ViewGroup.LayoutParams)i;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LogD("\nClass[CameraPreview] onCreate");
// Hide the window title.
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
Preview previewLayout = new Preview(this);
FrameLayout surLayout= (FrameLayout)findViewById(R.id.SurLayout);
surLayout.addView(previewLayout);
// addContentView(mPreview, v.height);
}
}
</span>
위는 java 파일 입니다.
package com.androidhuman.example.CameraPreview;
import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.ViewGroup;
import java.io.IOException;
import java.util.List;
/**
* Created by Psj on 15. 7. 20..
*/
class Preview extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
private Camera.Size mCameraSize;
private Camera.Parameters params;// = mCamera.getParameters();
private List<Camera.Size> list;// = params.getSupportedPreviewSizes();
private CameraSellSize cameraSellSize;
private int mDisplayWidth = 0;
private int mDisplayHeigth = 0;
//private String DebugString = null;
// public class controlWindowOnCreate extends Activity {
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
// }
// }
// #1
Preview(Context context) {
super(context);
//this.setId(R.id.surfaceactivity);
// controlWindowOnCreate onActivityCreate = new controlWindowOnCreate();
// onActivityCreate.onCreate(null);
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
LogD("\nClass[Preview] Preview");
}
// #3
public void surfaceCreated(SurfaceHolder holder) {
LogD("\nClass[Preview] surfaceCreated");
mCamera = Camera.open();
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
mCamera.release();
mCamera = null;
}
}
// #4
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
LogD("\nClass[Preview] surfaceChanged"
+ "\nwidthMeasureSpec = " + w + " heightMeasureSpec = " + h);
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
public void surfaceDestroyed(SurfaceHolder holder) {
LogD("\nClass[Preview] surfaceDestroyed");
mCamera.stopPreview();
mCamera = null;
}
public void toSurfaceChange(int w, int h){
LogD("\nClass[Preview] toSurfaceChange");
this.surfaceChanged(mHolder, 0, w, h);
}
public void LogD(String string){
String DebugString = null;
DebugString += string;
Log.d("tag", DebugString);
}
}
위는 custom 한 SurfaceView 입니다.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MainActivity"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/SurLayout"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_gravity="center" />
</FrameLayout>
위는 main.xml 입니다.
이렇게 했을때 프로그램이 실행중 종료되어 버립니다.
커스텀된 뷰에 버튼이 올라가 있는 xml 을 올리고자 합니다.
xml에는 플로텡버튼을 추가하려고 해서 만들어 보고 있습니다.
일주일도 넘게 삽질 중 입니다.
선배님들의 조언 부탁 드립니다.