大佬教程收集整理的这篇文章主要介绍了Android相机图像大小,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我使用我的Android设备的默认相机,它给我2048 x 1232像素作为图像大小.
现在,问题是,如何让我的应用程序给我相同的图像大小像默认的相机(这是2048 x 1232)当我拍照?
CameraActivity.java
public class CameraActivity extends Activity { private static final String TAG = "CameraDemo"; Preview preview; // <1> FrameLayout buttonClick; // <2> /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.camera); Toast.makeText(getBaseContext(),"Touch the screen to take picture.",Toast.LENGTH_SHORT).show(); preview = new Preview(this); // <3> ((FrameLayout) findViewById(R.id.preview)).addView(preview); // <4> //buttonClick = (Button) findViewById(R.id.buttonClick); buttonClick = (FrameLayout) findViewById(R.id.preview); buttonClick.setOnClickListener(new OnClickListener() { public void onClick(View v) { // <5> preview.camera.takePicture(shutterCallBACk,rawCallBACk,jpegCallBACk); } }); Log.d(tag,"onCreate'd"); } // Called when shutter is opened ShutterCallBACk shutterCallBACk = new ShutterCallBACk() { // <6> public void onShutter() { Log.d(tag,"onShutter'd"); } }; //Handles data for raw picture PictureCallBACk rawCallBACk = new PictureCallBACk() { // <7> public void onPictureTaken(byte[] data,Camera camera) { Log.d(tag,"onPictureTaken - raw"); } }; // Handles data for jpeg picture PictureCallBACk jpegCallBACk = new PictureCallBACk() { // <8> public void onPictureTaken(byte[] data,Camera camera) { FiLeoutputStream outStream = null; try { //Write to SD Card outStream = new FiLeoutputStream( String.format( Environment.getExternalStorageDirectory() + "/Engagia/AudienceImages/" + CameraActivity.this.sessionnumber + ".jpg",System.currentTimeMillis() )); // <9> outStream.write(data); outStream.close(); Toast.makeText(getBaseContext(),"Preview",Toast.LENGTH_SHORT).show(); Log.d(tag,"onPictureTaken - wrote bytes: " + data.length); } catch (FileNotFoundException E) { // <10> e.printStackTrace(); } catch (IOException E) { e.printStackTrace(); } finally { } Log.d(tag,"onPictureTaken - jpeg"); } }; }
Preview.java
package com.first.Engagia; import java.io.IOException; import android.content.Context; import android.hardware.Camera; import android.hardware.Camera.PreviewCallBACk; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; class Preview extends SurfaceView implements SurfaceHolder.CallBACk { // <1> private static final String TAG = "Preview"; SurfaceHolder mHolder; // <2> public Camera camera; // <3> Preview(Context context) { super(context); // Install a SurfaceHolder.CallBACk so we get notified when the // underlying surface is created and destroyed. mHolder = getHolder(); // <4> mHolder.addCallBACk(this); // <5> mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); // <6> } //Called once the holder is ready public void surfaceCreated(SurfaceHolder holder) { // <7> // The Surface has been created,acquire the camera and tell it where // to draw. camera = Camera.open(); // <8> try { camera.setPreviewDisplay(holder); // <9> camera.setPreviewCallBACk(new PreviewCallBACk() { // <10> // Called for each frame previewed public void onPreviewFrame(byte[] data,Camera camera) { // <11> Log.d(tag,"onPreviewFrame called at: " + System.currentTimeMillis()); Preview.this.invalidate(); // <12> } }); } catch (IOException E) { // <13> e.printStackTrace(); } } // Called when the holder is destroyed public void surfaceDestroyed(SurfaceHolder holder) { // <14> camera.stopPreview(); camera = null; } // Called when holder has changed public void surfaceChanged(SurfaceHolder holder,int format,int w,int h) { // <15> camera.startPreview(); } }@H_880_2@main.xml中:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://scheR_714_11845@as.android.com/apk/res/android" android:id="@+id/preview" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonClick" android:text="Click" android:layout_gravity="right|bottom" /> </FrameLayout>
http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setPictureSize(int,int)
一般来说首先你应该调用getSupportedPictureSizes()来确保你要求一个硬件支持的分辨率,但是听起来你已经知道了这些大小.
以上是大佬教程为你收集整理的Android相机图像大小全部内容,希望文章能够帮你解决Android相机图像大小所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。