1. Overview
This chapter mainly talks about the relevant knowledge points of Android camera Camera, which mainly includes three aspects: the Android boot system camera generation thumbnail image, the Android boot system camera generation original image, and Android custom camera, etc.
2. Android boots the system camera
Core code:
package ; import ; import ; import ; import ; import ; import ; import ; import .; import ; import ; import ; import ; import ; import ; import ; public class MainActivity extends AppCompatActivity { private static int REQ_1 = 1; private static int REQ_2 = 2; private ImageView image_iv; private String mFilePath; @Override protected void onCreate(Bundle savedInstanceState) { (savedInstanceState); setContentView(.activity_main); image_iv = (ImageView) findViewById(.image_iv); mFilePath = ().getPath(); mFilePath = mFilePath +"/" + ()+".jpg"; } public void startCamera1(View view){ //Implicit Intent Call Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(it, REQ_1); } public void startCamera2(View view){ //Implicit Intent Call Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uri photoUri = (new File(mFilePath)); (MediaStore.EXTRA_OUTPUT, photoUri); startActivityForResult(it, REQ_2); } public void customCamera(View view){ Intent it = new Intent(, ); startActivity(it); } /** * * @param requestCode * @param resultCode * @param data //Thumbnail */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { (requestCode, resultCode, data); if(resultCode == RESULT_OK){ if(requestCode == REQ_1){//Thumbnail Bundle bundle = (); Bitmap bmp = (Bitmap) ("data"); image_iv.setImageBitmap(bmp); }else if(requestCode == REQ_2){//Original picture FileInputStream fis = null; try { fis = new FileInputStream(mFilePath); Bitmap bitmap = (fis); image_iv.setImageBitmap(bitmap); } catch (FileNotFoundException e) { (); }finally { try { (); } catch (IOException e) { (); } } } } } }
3. Android custom camera
1. Customize the camera steps:
Create a camera
Create a SurfaceView
Associate the camera with the SurfaceView
Adjust the camera display effect
Customize the camera preview interface
2. Core code:
Custom camera
package ; import ; import ; import ; import ; import .; import ; import ; import ; import ; import ; import ; import ; import ; /** * Description: * User: chenzheng * Date: 2016/12/27 0027 * Time: 13:43 */ public class CustomCameraActivity extends AppCompatActivity implements { private SurfaceView mPreview; private Camera mCamera; private SurfaceHolder mHolder; private mPictureCallback = new () { @Override public void onPictureTaken(byte[] data, Camera camera) { File tempFile = new File("/sdcard/"); try { FileOutputStream fos = new FileOutputStream(tempFile); (data); (); Intent it = new Intent(, ); ("picPath", ()); startActivity(it); finish(); } catch (FileNotFoundException e) { (); } catch (IOException e) { (); } } }; @Override public void onCreate(Bundle savedInstanceState) { (savedInstanceState); setContentView(.activity_custom_camera); mPreview = (SurfaceView) (); mHolder = (); (this); //Click on autofocus (new () { @Override public void onClick(View v) { (null);; } }); } /** * Photograph * @param view */ public void capture(View view){ parameters = (); (); (800,400); (.FOCUS_MODE_AUTO);//Autofocus (new () { @Override public void onAutoFocus(boolean success, Camera camera) { //Focus accurate photos if(success){ (null, null, mPictureCallback); } } }); } /** * Get the camera object * @return */ private Camera getCamera(){ mCamera = (); return mCamera; } /** * Start previewing the camera contents */ private void setStartPreview(Camera camera, SurfaceHolder holder){ try { (holder); (90);//Set the camera preview to 90 degrees perpendicular screen (); } catch (IOException e) { (); } } /** * Free up camera resources */ private void releaseCamera(){ if(mCamera!=null){ (null); (); (); mCamera = null; } } @Override protected void onResume() { (); if (mCamera==null){ mCamera = getCamera(); if(mHolder!=null){ setStartPreview(mCamera, mHolder); } } } @Override protected void onPause() { (); releaseCamera(); } @Override public void surfaceCreated(SurfaceHolder holder) { setStartPreview(mCamera, mHolder); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { (); setStartPreview(mCamera, mHolder); } @Override public void surfaceDestroyed(SurfaceHolder holder) { releaseCamera(); } }
Generate image result page
package ; import ; import ; import ; import ; import .; import ; import ; import ; import ; /** * Description: * User: chenzheng * Date: 2016/12/30 0030 * Time: 13:27 */ public class CaptureResultActivity extends AppCompatActivity { private String picPath; private ImageView result_iv; @Override public void onCreate(Bundle savedInstanceState) { (savedInstanceState); setContentView(.activity_capture_result); picPath = getIntent().getStringExtra("picPath"); result_iv = (ImageView) findViewById(.result_iv); try { FileInputStream fis = new FileInputStream(picPath); Bitmap bitmap = (fis); Matrix matrix = new Matrix(); (90);//Rotate the 90-degree matrix bitmap = (bitmap, 0, 0, (), (), matrix, true); result_iv.setImageBitmap(bitmap); } catch (FileNotFoundException e) { (); } } }
4. Download the project source code
http://xiazai./201701/yuanma/AndroidCamera().rar
The above is all the content of this article. I hope it will be helpful to everyone's study and I hope everyone will support me more.