카메라에서 사진을 찍고 싶지만 사진을 찍으려는 새로운 의도는 시작하고 싶지 않지만 카메라를 열고 싶습니다. 내 레이아웃 내부에서 다음 사진을 찍으려면 버튼을 클릭하십시오.Android : 카메라를 시작하지 않고 레이아웃에서 사진 찍기
그래서 그것은 또한 내가 토큰 사진이 잘립니다 것을 좋아, 내가 이것에 대해 어떤 능숙를 발견하지 않았기 때문에 그것을 할 수 있습니까?
카메라에서 사진을 찍고 싶지만 사진을 찍으려는 새로운 의도는 시작하고 싶지 않지만 카메라를 열고 싶습니다. 내 레이아웃 내부에서 다음 사진을 찍으려면 버튼을 클릭하십시오.Android : 카메라를 시작하지 않고 레이아웃에서 사진 찍기
그래서 그것은 또한 내가 토큰 사진이 잘립니다 것을 좋아, 내가 이것에 대해 어떤 능숙를 발견하지 않았기 때문에 그것을 할 수 있습니까?
Google 데모 of Camera2 Api. 그것은 당신을 도울 것입니다. 링크 : https://github.com/googlesamples/android-Camera2Basic
카메라 런타임 권한을 얻어야합니다. 그런 다음 카메라 API에 직접 액세스 할 수 있습니다.
합니다 (official documentation에서) 레이아웃 구조에서 미리보기 이미지가 표시됩니다 예를 들어이 SurfaceView
:
/** A basic Camera preview class */
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
public CameraPreview(Context context, Camera camera) {
super(context);
mCamera = camera;
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
mHolder = getHolder();
mHolder.addCallback(this);
// deprecated setting, but required on Android versions prior to 3.0
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
// The Surface has been created, now tell the camera where to draw the preview.
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
Log.d(TAG, "Error setting camera preview: " + e.getMessage());
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
// empty. Take care of releasing the Camera preview in your activity.
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// If your preview can change or rotate, take care of those events here.
// Make sure to stop the preview before resizing or reformatting it.
if (mHolder.getSurface() == null){
// preview surface does not exist
return;
}
// stop preview before making changes
try {
mCamera.stopPreview();
} catch (Exception e){
// ignore: tried to stop a non-existent preview
}
// set preview size and make any resize, rotate or
// reformatting changes here
// start preview with new settings
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
} catch (Exception e){
Log.d(TAG, "Error starting camera preview: " + e.getMessage());
}
}
}
당신이 코드로
Camera
인스턴스를 얻을 :
/** A safe way to get an instance of the Camera object. */
public static Camera getCameraInstance(){
Camera c = null;
try {
c = Camera.open(); // attempt to get a Camera instance
}
catch (Exception e){
// Camera is not available (in use or does not exist)
}
return c; // returns null if camera is unavailable
}
그리고 당신이 그것을 표시를 Activity
에서 다음과 같이 표시됩니다.
public class CameraActivity extends Activity {
private Camera mCamera;
private CameraPreview mPreview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create an instance of Camera
mCamera = getCameraInstance();
// Create our Preview view and set it as the content of our activity.
mPreview = new CameraPreview(this, mCamera);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(mPreview);
}
}
official documentation을 참조하십시오.
make imageView를 클릭하면 문제가 해결됩니다. –
맞춤 카메라보기 : http://stackoverflow.com/questions/8543244/custom-camera-android. circle 서페이스보기 : http://stackoverflow.com/questions/31443911/creating-circle-in-surfaceview-on-button-click-android 거의 모든 것이 이미 StackOverflow에 있습니다. 그냥 그것을 검색하십시오. –
당신은 원하는 모양으로 표면보기를 디자인 할 수 있도록 의상 카메라를 만들어야합니다. – Nivedh