首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

照相保存以及移动窗口

2012-09-12 
拍照保存以及移动窗口public class CameraPreview extends Activity{private Preview mPreview@Overridep

拍照保存以及移动窗口

public class CameraPreview extends Activity  {private Preview mPreview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// Hide the window title.requestWindowFeature(Window.FEATURE_NO_TITLE);// Create our Preview view and set it as the content of our activity.mPreview = new Preview(this,this);setContentView(mPreview);mPreview.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(!mPreview.onProgress)mPreview.onClick();}});}}// ----------------------------------class Preview extends SurfaceView implements SurfaceHolder.Callback {SurfaceHolder mHolder;Camera mCamera;Context CON; Activity ACT;public boolean onProgress=false;Preview(Context context,Activity activity) {super(context);CON=context;ACT=activity;// Install a SurfaceHolder.Callback so we get notified when the// underlying surface is created and destroyed.mHolder = getHolder();mHolder.addCallback(this);mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);}public void surfaceCreated(SurfaceHolder holder) {// The Surface has been created, acquire the camera and tell it where// to draw.mCamera = Camera.open();try {mCamera.setPreviewDisplay(holder);} catch (IOException exception) {mCamera.release();mCamera = null;// TODO: add more exception handling logic here}}public void surfaceDestroyed(SurfaceHolder holder) {// Surface will be destroyed when we return, so stop the preview.// Because the CameraDevice object is not a shared resource, it's very// important to release it when the activity is paused.mCamera.stopPreview();mCamera.release();mCamera = null;}private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {final double ASPECT_TOLERANCE = 0.05;double targetRatio = (double) w / h;if (sizes == null)return null;Size optimalSize = null;double minDiff = Double.MAX_VALUE;int targetHeight = h;// Try to find an size match aspect ratio and sizefor (Size size : sizes) {double ratio = (double) size.width / size.height;if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE)continue;if (Math.abs(size.height - targetHeight) < minDiff) {optimalSize = size;minDiff = Math.abs(size.height - targetHeight);}}// Cannot find the one match the aspect ratio, ignore the requirementif (optimalSize == null) {minDiff = Double.MAX_VALUE;for (Size size : sizes) {if (Math.abs(size.height - targetHeight) < minDiff) {optimalSize = size;minDiff = Math.abs(size.height - targetHeight);}}}return optimalSize;}Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {public void onPictureTaken(byte[] imageData, Camera c) {onProgress=true;if (imageData != null) {Intent mIntent = new Intent();try {FileOutputStream out = new FileOutputStream("/sdcard/Deltio1.jpg");Bitmap e = BitmapFactory.decodeByteArray(imageData, 0,imageData.length);e.compress(Bitmap.CompressFormat.JPEG, 65, out);out.close();Intent i = new Intent(ACT, MediaSend.class);ACT.startActivity(i); } catch (Exception e) {Toast.makeText(CON,"Πρ?βλημα στην αποθ?κευση.Βεβαιωθε?τε ?τι ?χετε sdcard εγκατεστημ?νη",Toast.LENGTH_LONG).show();ACT.finish();}// FileUtilities.StoreByteImage(mContext, imageData,// 50, "ImageName");SystemClock.sleep(2000);mCamera.startPreview();onProgress=false;// setResult(FOTO_MODE,mIntent);// finish();}}};public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {// Now that the size is known, set up the camera parameters and begin// the preview.Camera.Parameters parameters = mCamera.getParameters();//List<Size> sizes = parameters.getSupportedPreviewSizes();//Size optimalSize = getOptimalPreviewSize(sizes, w, h);//parameters.setPreviewSize(optimalSize.width, optimalSize.height);parameters.setPreviewSize(w, h);//mCamera.setParameters(parameters);mCamera.startPreview();}public void onClick() {if(!onProgress){onProgress=true;mCamera.takePicture(null, mPictureCallback, mPictureCallback);    }}}<!-- Page not cached by WP Super Cache. No closing HTML tag. Check your theme. -->

?2.

public class CameraPreview extends Activity {?protected static final String TAG = "CameraPreview";?private Preview mPreview;??@Override?protected void onCreate(Bundle savedInstanceState) {?? ? super.onCreate(savedInstanceState);??? ? // Hide the window title.?? ? requestWindowFeature(Window.FEATURE_NO_TITLE);??? ? // Create our Preview view and set it as the content of our activity.?? ? mPreview = new Preview(this);?? ? mPreview.setId(100);?? ? RelativeLayout mainLayout = new RelativeLayout(this);?? ? RelativeLayout.LayoutParams mainLp = new RelativeLayout.LayoutParams(640, 480);?? ? mainLp.leftMargin = 20;??? ? mainLayout.addView(mPreview, mainLp);??? ? Button btn = new Button(this);?? ? btn.setOnClickListener(new OnClickListener(){??? ? ? ? public void onClick(View v) {?? ? ? ? ? ? RelativeLayout.LayoutParams nLp = (LayoutParams) mPreview.getLayoutParams();?? ? ? ? ? ? nLp.leftMargin += 10;?? ? ? ? ? ? Log.v(TAG,"nLp.leftMargin: " + nLp.leftMargin);?? ? ? ? ? ? mPreview.setLayoutParams(nLp);?? ? ? ? }??? ? });?? ? btn.setText("Click me!");??? ? RelativeLayout.LayoutParams btnLp = new RelativeLayout.LayoutParams(?? ? ? ? ? ? RelativeLayout.LayoutParams.WRAP_CONTENT,?? ? ? ? ? ? RelativeLayout.LayoutParams.WRAP_CONTENT);?? ? btnLp.addRule(RelativeLayout.BELOW, mPreview.getId());??? ? mainLayout.addView(btn ,btnLp);?? ? setContentView(mainLayout);?}?

}

热点排行