Realización de las ideas:
La vista previa SurfaceView ancho establecido no al alto valor a simple vista, por ejemplo 0.1dp, otros criterios personalizados es un paso cámaras!
Por supuesto, los artículos personalizados de la cámara en línea y más que ir, no puedo hacer la misma vieja historia, donde recomiendo un buen uso de las bibliotecas de terceros, tal vez mucha gente ya conoce y ha utilizado, no se utilizan los estudiantes pueden probar, a favor de la prueba es fácil de usar.
Preámbulos, la primera dirección de origen: https://github.com/CameraKit/camerakit-android
Aquí el uso brevemente:
1, añadir bibliotecas dependientes en Gradle en: la compilación 'com.wonderkiln: camerakit: 0.13.1'
2, el código de archivo de diseño:
<LinearLayout
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/btn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试"
android:layout_gravity="center_horizontal"/>
<com.wonderkiln.camerakit.CameraView
android:id="@+id/camera"
android:layout_width="0.1dp"
android:layout_height="0.1dp"
android:adjustViewBounds="true"
camerakit:ckFacing="front" />
</LinearLayout>
camerakit: ckFacing = "delante", representada por la cámara frontal, el resto de las propiedades ver la documentación oficial.
Nota: La anchura y la altura no se pueden ajustar a 0, de lo contrario no se puede tomar fotografías.
3, del código de Java
public class MainActivity extends BaseActivity {
@BindView(R.id.btn_test)
Button btnTest;
@BindView(R.id.camera)
CameraView cameraView;
@BindView(R.id.ll_content)
LinearLayout llContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
initView();
}
@Override
protected void onResume() {
super.onResume();
cameraView.start();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
cameraView.stop();
super.onPause();
}
private void initView() {
//设置回调
cameraView.addCameraKitListener(new CameraKitEventListener() {
@Override
public void onEvent(CameraKitEvent cameraKitEvent) {
}
@Override
public void onError(CameraKitError cameraKitError) {
}
@Override
public void onImage(CameraKitImage cameraKitImage) {
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageBitmap(cameraKitImage.getBitmap());
llContent.addView(imageView);
}
@Override
public void onVideo(CameraKitVideo cameraKitVideo) {
}
});
}
@OnClick(R.id.btn_test)
public void onViewClicked() {
//拍照
cameraView.captureImage();
}
}