3dphotoshoot

diff src/android/MainActivity.java @ 4:38377f54527a

having a whack at the camera api... at least the java crap compiles, we'll try calling it later
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 19 May 2015 06:05:51 +0300
parents 9df99687a2ff
children e31e23ead56f
line diff
     1.1 --- a/src/android/MainActivity.java	Fri May 15 05:15:47 2015 +0300
     1.2 +++ b/src/android/MainActivity.java	Tue May 19 06:05:51 2015 +0300
     1.3 @@ -2,99 +2,68 @@
     1.4  
     1.5  import android.app.NativeActivity;
     1.6  import android.util.Log;
     1.7 +import static android.opengl.GLES20.*;
     1.8 +import android.hardware.Camera;
     1.9 +import android.hardware.Camera.CameraInfo;
    1.10 +import android.graphics.SurfaceTexture;
    1.11  /*
    1.12  import android.os.Bundle;
    1.13  import android.content.Context;
    1.14 -import android.hardware.Camera;
    1.15 -import android.hardware.Camera.CameraInfo;
    1.16  import android.hardware.camera2.*;
    1.17  */
    1.18  
    1.19  public class MainActivity extends NativeActivity {
    1.20  	private static String tag = "photoshoot3d";
    1.21  
    1.22 -	public static int foo(String s, int n)
    1.23 +	public static void foo()
    1.24  	{
    1.25 -		Log.i(tag, s + ": " + n);
    1.26 -		return 42;
    1.27 +		glClearColor(0.2f, 1.0f, 0.3f, 1.0f);
    1.28  	}
    1.29  
    1.30 -	/*
    1.31  	// old camera api (fallback)
    1.32 -	private Camera cam;
    1.33 +	private static Camera cam;
    1.34  
    1.35 -	// camera2 api (sdk version >= 21)
    1.36 -	private CameraManager cman;
    1.37 -	private CameraDevice cam2;
    1.38 -	private CameraCaptureSession cam_session;
    1.39 +	public static int start_video(int texid)
    1.40 +	{
    1.41 +		int num_cams = Camera.getNumberOfCameras();
    1.42 +		Log.i(tag, "Found " + num_cams + " cameras");
    1.43  
    1.44 -	@Override
    1.45 -	protected void onCreate(Bundle state)
    1.46 -	{
    1.47 -		super.onCreate(state);
    1.48 +		for(int i=0; i<num_cams; i++) {
    1.49 +			CameraInfo info = new CameraInfo();
    1.50 +			Camera.getCameraInfo(i, info);
    1.51  
    1.52 -		if(android.os.Build.VERSION.SDK_INT >= 21) {
    1.53 -			Log.i(tag, "Using the new camera API");
    1.54 +			String facing_str = info.facing == CameraInfo.CAMERA_FACING_FRONT ? "front" : "back";
    1.55  
    1.56 -			cman = (CameraManager)getSystemService(Context.CAMERA_SERVICE);
    1.57 -
    1.58 -			try {
    1.59 -				String [] clist = cman.getCameraIdList();
    1.60 -				Log.i(tag, "Found " + clist.length + " cameras");
    1.61 -
    1.62 -				for(int i=0; i<clist.length; i++) {
    1.63 -					Log.i(tag, "camera[" + i + "]: " + clist[i]);
    1.64 -				}
    1.65 -			}
    1.66 -			catch(CameraAccessException e) {
    1.67 -				Log.e(tag, "camera access exception");
    1.68 -			}
    1.69 -
    1.70 -		} else {
    1.71 -			// fallback to the old Camera API
    1.72 -			Log.i(tag, "Using the old camera API");
    1.73 -
    1.74 -			int num_cams = Camera.getNumberOfCameras();
    1.75 -			Log.i(tag, "Found " + num_cams + " cameras");
    1.76 -
    1.77 -			for(int i=0; i<num_cams; i++) {
    1.78 -				CameraInfo info = new CameraInfo();
    1.79 -				Camera.getCameraInfo(i, info);
    1.80 -
    1.81 -				String facing_str = info.facing == CameraInfo.CAMERA_FACING_FRONT ? "front" : "back";
    1.82 -
    1.83 -				Log.i(tag, "camera[" + i + "]: " + facing_str);
    1.84 -			}
    1.85 +			Log.i(tag, "camera[" + i + "]: " + facing_str);
    1.86  		}
    1.87  
    1.88 -		start_video();
    1.89 +		SurfaceTexture surftex = new SurfaceTexture(texid);
    1.90 +		surftex.setOnFrameAvailableListener(new FrameHandler());
    1.91 +
    1.92 +		cam = Camera.open();
    1.93 +		try {
    1.94 +			cam.setPreviewTexture(surftex);
    1.95 +		}
    1.96 +		catch(java.io.IOException e) {
    1.97 +			Log.e(tag, "failed to set preview texture");
    1.98 +			cam = null;
    1.99 +			return -1;
   1.100 +		}
   1.101 +		cam.startPreview();
   1.102 +
   1.103 +		return 0;
   1.104  	}
   1.105  
   1.106 -	public void start_video()
   1.107 +	public static void stop_video()
   1.108  	{
   1.109 -		cam = Camera.open();
   1.110 -
   1.111 -		CamPreview preview = new CamPreview(this, cam);
   1.112 -
   1.113 +		cam.stopPreview();
   1.114 +		cam = null;
   1.115  	}
   1.116 -	*/
   1.117  }
   1.118  
   1.119 -/*
   1.120 -class CamPreview extends ViewGroup implements SurfaceHolder.Callback {
   1.121 -	SurfaceView surf_view;
   1.122 -	SurfaceHolder surf_holder;
   1.123 -
   1.124 -	CamPreview(Context ctx)
   1.125 +class FrameHandler implements SurfaceTexture.OnFrameAvailableListener {
   1.126 +	public void onFrameAvailable(SurfaceTexture stex)
   1.127  	{
   1.128 -		super(ctx);
   1.129 -
   1.130 -		surf_view = new SurfaceView(ctx);
   1.131 -		addView(surf_view);
   1.132 -
   1.133 -		surf_holder = surf_view.getHolder();
   1.134 -		surf_holder.addCallback(this);
   1.135 -		surf_holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
   1.136 +		stex.updateTexImage();
   1.137  	}
   1.138  }
   1.139 -*/