Open ErmaIsabel opened 11 years ago
I have a dobut iam successfully run a android native code for SurfaceView Over a camera Now i want it to Convert to Phonegap is It Possible.Please give Your Valuble comments Below Iam Giving the native Code...Plz Help Thanks
MainActivity
package com.example.testcamera; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.content.pm.ActivityInfo; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.PixelFormat; import android.hardware.Camera; import android.hardware.Camera.PictureCallback; import android.hardware.Camera.ShutterCallback; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.Display; import android.view.LayoutInflater; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RelativeLayout.LayoutParams; public class MainActivity extends Activity implements SurfaceHolder.Callback { private Camera camera = null; private SurfaceView cameraSurfaceView = null; private SurfaceHolder cameraSurfaceHolder = null; private boolean previewing = false; private Display display = null; private static int wid = 0, hgt = 0; private LayoutInflater layoutInflater = null; private View cameraViewControl = null; private LayoutParams layoutParamsControl = null; private Button btnCapture = null; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo. SCREEN_ORIENTATION_LANDSCAPE); display = getWindowManager().getDefaultDisplay(); wid = display.getWidth(); hgt = display.getHeight(); getWindow().setFormat(PixelFormat.TRANSLUCENT); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main); cameraSurfaceView = (SurfaceView) findViewById(R.id.cameraSurfaceView); cameraSurfaceHolder = cameraSurfaceView.getHolder(); cameraSurfaceHolder.addCallback(this); cameraSurfaceHolder.setType(SurfaceHolder. SURFACE_TYPE_PUSH_BUFFERS); layoutInflater = LayoutInflater.from(getBaseContext()); layoutParamsControl = new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); cameraViewControl = layoutInflater.inflate (R.layout.overlay, null); this.addContentView(cameraViewControl, layoutParamsControl); cameraViewControl = layoutInflater.inflate (R.layout.vampireimage, null); this.addContentView(cameraViewControl, layoutParamsControl); btnCapture = (Button)findViewById(R.id.btnCapture); btnCapture.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub camera.takePicture(cameraShutterCallback, cameraPictureCallbackRaw, cameraPictureCallbackJpeg); } }); } ShutterCallback cameraShutterCallback = new ShutterCallback() { @Override public void onShutter() { // TODO Auto-generated method stub } }; PictureCallback cameraPictureCallbackRaw = new PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { // TODO Auto-generated method stub } }; PictureCallback cameraPictureCallbackJpeg = new PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { // TODO Auto-generated method stub Bitmap cameraBitmap = BitmapFactory.decodeByteArray (data, 0, data.length); wid = cameraBitmap.getWidth(); hgt = cameraBitmap.getHeight(); Bitmap newImage = Bitmap.createBitmap (wid, hgt, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(newImage); canvas.drawBitmap(cameraBitmap, 0f, 0f, null); File storagePath = new File(Environment. getExternalStorageDirectory() + "/Vampire Photos/"); storagePath.mkdirs(); File myImage = new File(storagePath, Long.toString(System.currentTimeMillis()) + ".jpg"); try { FileOutputStream out = new FileOutputStream(myImage); newImage.compress(Bitmap.CompressFormat.JPEG, 80, out); out.flush(); out.close(); } catch(FileNotFoundException e) { Log.d("In Saving File", e + ""); } catch(IOException e) { Log.d("In Saving File", e + ""); } camera.startPreview(); newImage.recycle(); newImage = null; cameraBitmap.recycle(); cameraBitmap = null; } }; @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub if(previewing) { camera.stopPreview(); previewing = false; } try { Camera.Parameters parameters = camera.getParameters(); parameters.setPreviewSize(360,420); parameters.setRotation(90); camera.setParameters(parameters); camera.setPreviewDisplay(cameraSurfaceHolder); camera.startPreview(); previewing = true; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub try { camera = Camera.open(); } catch(RuntimeException e) { } } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub camera.stopPreview(); camera.release(); camera = null; previewing = false; } }
LAYOUTS
Main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <SurfaceView android:id="@+id/cameraSurfaceView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/frame"/> </LinearLayout>
Overlay.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="right"> <Button android:id="@+id/btnCapture" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10px" android:background="@drawable/click" android:gravity="center_vertical" /> </LinearLayout>
I have a dobut iam successfully run a android native code for SurfaceView Over a camera Now i want it to Convert to Phonegap is It Possible.Please give Your Valuble comments Below Iam Giving the native Code...Plz Help Thanks
MainActivity
LAYOUTS
Main.xml
Overlay.xml