public virtual File newFile(string fileName) { File.__\u003Cclinit\u003E(); File file = new File(this.folder, fileName); file.createNewFile(); return file; }
public static bool ToFile(string filePath, Table table, TableContainType tableContainType) { FileInfo _csvfilesave = new FileInfo(filePath); if (!Directory.Exists(_csvfilesave.DirectoryName)) { Directory.CreateDirectory(_csvfilesave.DirectoryName); } java.io.File outputFile = new java.io.File(filePath); BufferedWriter bufferedWriter = null; try { var fileWriter = new OutputStreamWriter(new FileOutputStream(outputFile.getAbsoluteFile()), "UTF-8"); bufferedWriter = new BufferedWriter(fileWriter); outputFile.createNewFile(); technology.tabula.writers.Writer writer = null; switch (tableContainType) { case TableContainType.CSV: writer = new CSVWriter(); break; case TableContainType.Json: writer = new JSONWriter(); break; case TableContainType.TSV: writer = new TSVWriter(); break; default: writer = new JSONWriter(); break; } writer.write(bufferedWriter, table); } catch { return(false); } return(true); }
public static File InternalTakePicture(int num = 0) { var DIRECTORY_DCIM = global::android.os.Environment.DIRECTORY_DCIM; var path = global::android.os.Environment.getExternalStoragePublicDirectory(DIRECTORY_DCIM).getAbsolutePath(); path += "/Camera"; //var SAVE_PATH = android.os.Environment.getExternalStoragePublicDirectory( // android.os.Environment.DIRECTORY_PICTURES //) + "/"; var n = DateTime.Now; var f = new File(path + "/shot" + n.Ticks + ".jpg"); //I/System.Console(31472): enter TakePicture //W/CameraService( 128): CameraService::connect X (pid 31472) rejected (existing client). //I/System.Console(31472): error takePicture { Message = Fail to connect to camera service, StackTrace = java.lang.RuntimeException: Fail to connect to camera service //I/System.Console(31472): at android.hardware.Camera.native_setup(Native Method) //I/System.Console(31472): at android.hardware.Camera.<init>(Camera.java:340) //I/System.Console(31472): at android.hardware.Camera.open(Camera.java:302) var camera = android.hardware.Camera.open(num); // W/CameraService( 128): CameraService::connect X (pid 2499) rejected (existing client). //D/dalvikvm( 2499): GC_CONCURRENT freed 873K, 12% free 7525K/8544K, paused 4ms+4ms, total 59ms //D/dalvikvm( 2499): WAIT_FOR_CONCURRENT_GC blocked 14ms //I/System.Console( 2499): error takePicture { Message = Fail to connect to camera service, StackTrace = java.lang.RuntimeException: Fail to connect to camera service //I/System.Console( 2499): at android.hardware.Camera.native_setup(Native Method) //I/System.Console( 2499): at android.hardware.Camera.<init>(Camera.java:340) //I/System.Console( 2499): at android.hardware.Camera.open(Camera.java:302) //I/System.Console( 2499): at CameraExperiment.foo.InternalTakePicture(foo.java:65) var p = camera.getParameters(); p.setRotation(0); //camera.stopFaceDetection(); var s = p.getSupportedPictureSizes(); var min = default(android.hardware.Camera.Size); for (int i = 0; i < s.size(); i++) { var size = (android.hardware.Camera.Size)s.get(i); // I/System.Console( 6058): before takePicture { f = /mnt/sdcard/Pictures/shot.jpg } //I/System.Console( 6058): { size = android.hardware.Camera$Size@4fde180 } System.Console.WriteLine(new { size.width, size.height }); if (min == null) min = size; else if (min.width > size.width) min = size; } System.Console.WriteLine("before setPictureSize "); p.setPictureSize(min.width, min.height); //E/CameraHardwareSec( 84): android::status_t android::CameraHardwareSec::setSceneModeParameter(const android::CameraParameters&): unmatched focus_mode(continuous-picture) //E/CameraHardwareSec( 84): virtual android::status_t android::CameraHardwareSec::setParameters(const android::CameraParameters&): Failed to setting scene mode var focusModes = p.getSupportedFocusModes(); var NextFocus = android.hardware.Camera.Parameters.FOCUS_MODE_FIXED; for (int i = 0; i < focusModes.size(); i++) { var focusMode = (string)focusModes.get(i); if (focusMode == android.hardware.Camera.Parameters.FOCUS_MODE_INFINITY) NextFocus = android.hardware.Camera.Parameters.FOCUS_MODE_INFINITY; System.Console.WriteLine(new { focusMode }); } // I/System.Console(31232): before setPictureSize //I/System.Console(31232): { focusMode = fixed } //I/System.Console(31232): before setFocusMode //E/NvOmxCameraSettingsParser( 128): Failed substring capabilities check, unsupported parameter: 'infinity', original: fixed //E/NvOmxCameraSettingsParser( 128): extractChanges: Invalid parameter! //E/NvOmxCamera( 128): setParameters: Invalid parameters //I/System.Console(31232): error takePicture { Message = setParameters failed, StackTrace = java.lang.RuntimeException: setParameters failed // { focusMode = auto } // { focusMode = infinity } // { focusMode = macro } // before setFocusMode //9): android::status_t android::CameraHardwareSec::setSceneModeParameter(const android::CameraParameters&): unmatched focus_mode(fixed) //9): virtual android::status_t android::CameraHardwareSec::setParameters(const android::CameraParameters&): Failed to setting scene mode // error takePicture { Message = setParameters failed, StackTrace = java.lang.RuntimeException: setParameters failed // at android.hardware.Camera.native_setParameters(Native Method) // at android.hardware.Camera.setParameters(Camera.java:950) // at CameraExperiment.foo.InternalTakePicture(foo.java:105) // E/SecCamera( 84): ERR(int android::fimc_v4l2_s_ctrl(int, unsigned int, unsigned int)):VIDIOC_S_CTRL(id = 0x800005b (91), value = 0) failed ret = -1 //E/SecCamera( 84): ERR(int android::SecCamera::setFaceDetect(int)):Fail on V4L2_CID_CAMERA_FACE_DETECTION //E/SecCamera( 84): ERR(int android::fimc_v4l2_s_ctrl(int, unsigned int, unsigned int)):VIDIOC_S_CTRL(id = 0x8000063 (99), value = 6) failed ret = -1 //E/SecCamera( 84): ERR(int android::SecCamera::setFocusMode(int)):Fail on V4L2_CID_CAMERA_FOCUS_MODE //E/CameraHardwareSec( 84): android::status_t android::CameraHardwareSec::setSceneModeParameter(const android::CameraParameters&): mSecCamera->setFocusMode(6) fail //E/CameraHardwareSec( 84): virtual android::status_t android::CameraHardwareSec::setParameters(const android::CameraParameters&): Failed to setting scene mode //E/SecCamera( 84): ERR(int android::fimc_v4l2_s_ctrl(int, unsigned int, unsigned int)):VIDIOC_S_CTRL(id = 0x800006c (108), value = 1) failed ret = -1 //E/SecCamera( 84): ERR(int android::SecCamera::setBatchReflection()):Fail on V4L2_CID_CAMERA_BATCH_REFLECTION //E/CameraHardwareSec( 84): ERR(virtual android::status_t android::CameraHardwareSec::setParameters(const android::CameraParameters&)):Fail on mSecCamera->setBatchCmd System.Console.WriteLine("before setFocusMode " + new { NextFocus }); //p.setFocusMode(android.hardware.Camera.Parameters.FOCUS_MODE_INFINITY); p.setFocusMode(NextFocus); // E/SecCamera( 84): ERR(int android::fimc_poll(pollfd*)):No data in 10 secs.. //I/ShotSingle( 84): CAMERA_MSG_COMPRESSED_IMAGE camera.setParameters(p); // http://stackoverflow.com/questions/9744790/android-possible-to-camera-capture-without-a-preview var b = new EventWaitHandle(false, EventResetMode.ManualReset); System.Console.WriteLine("before startPreview "); Action done = delegate { }; try { // #5 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() (ScriptCoreLib.Android.ThreadLocalContextReference.CurrentContext as Activity).With( aa => { aa.runOnUiThread( new f { y = delegate { try { // D/Camera ( 2464): app passed NULL surface System.Console.WriteLine("before getHolder "); // the nexus 7 and droid x both don't support the passing of a dummy surfaceview to a camera object. Your response that all camera things must created in the activity is false. I was able to instantiate a camera within a thread by passing it a view just fine. // here, the unused surface view and holder var dummy = new SurfaceView(ScriptCoreLib.Android.ThreadLocalContextReference.CurrentContext); // missing for android 2.2 //dummy.setScaleX(0f); //dummy.setScaleY(0f); var h = dummy.getHolder(); // http://developer.android.com/reference/android/view/SurfaceHolder.html#SURFACE_TYPE_PUSH_BUFFERS var SURFACE_TYPE_PUSH_BUFFERS = 0x00000003; h.setType(SURFACE_TYPE_PUSH_BUFFERS); h.addCallback( new XSurfaceHolder_Callback { yield_surfaceCreated = delegate { System.Console.WriteLine("at yield_surfaceCreated "); try { camera.setPreviewDisplay(h); camera.startPreview(); System.Console.WriteLine("after startPreview "); b.Set(); } catch { throw; } } } ); //h.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); aa.addContentView(dummy, new android.widget.LinearLayout.LayoutParams( android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT ) ); done = delegate { aa.runOnUiThread( new f { y = delegate { // https://groups.google.com/forum/?fromgroups#!topic/android-developers/liph4z9LnFA // how to Orphanize?? dummy.setVisibility(View.GONE); } } ); }; } catch { throw; } } } ); } ); } catch { throw; } b.WaitOne(); //camera.@lock(); var a = new EventWaitHandle(false, EventResetMode.ManualReset); //var b = new EventWaitHandle(false, EventResetMode.ManualReset); // E/SecCamera( 84): ERR(int android::fimc_v4l2_s_ctrl(int, unsigned int, unsigned int)):VIDIOC_S_CTRL(id = 0x800005d (93), value = 1) failed ret = -1 //E/SecCamera( 84): ERR(int android::SecCamera::setAutofocus()):Fail on V4L2_CID_CAMERA_SET_AUTO_FOCUS //E/CameraHardwareSec( 84): ERR(int android::CameraHardwareSec::autoFocusThread()):Fail on mSecCamera->setAutofocus() //System.Console.WriteLine("before autoFocus " + new { f }); //// //camera.autoFocus( // new XAutoFocus // { // yield = delegate // { // System.Console.WriteLine("at autoFocus " + new { f }); // https://github.com/mozilla-b2g/android-device-crespo/blob/master/libcamera/SecCamera.cpp // E/SecCamera( 84): ERR(int android::fimc_poll(pollfd*)):No data in 10 secs.. //I/ShotSingle( 84): CAMERA_MSG_COMPRESSED_IMAGE //D/dalvikvm( 6608): GC_FOR_MALLOC freed 607K, 58% free 2856K/6727K, external 2013K/2108K, paused 18ms //I/dalvikvm-heap( 6608): Grow heap (frag case) to 7.847MB for 614416-byte allocation //D/dalvikvm( 6608): GC_FOR_MALLOC freed 46K, 54% free 3410K/7367K, external 2013K/2108K, paused 13ms //I/System.Console( 6608): enter XCameraPictureCallback { Length = 0 } //I/System.Console( 6608): exit XCameraPictureCallback //for (int i = 0; i < 11; i++) //{ // System.Console.WriteLine("warming up camera machine... " + i); // Thread.Sleep(1000); //} // http://stackoverflow.com/questions/15279911/using-camera-without-preview-or-surface-in-android // http://handycodeworks.com/?p=19 // you are required to call startPreview() first before calling takePicture() System.Console.WriteLine("before takePicture " + new { f }); camera.setErrorCallback( new XErrorCallback { yield = (err, c) => { System.Console.WriteLine(new { err }); } } ); // preview ready? var at_setPreviewCallback = new EventWaitHandle(false, EventResetMode.ManualReset); System.Console.WriteLine("before setPreviewCallback "); // is this of any use? camera.setOneShotPreviewCallback( new XCameraPreviewCallback { yield = delegate { at_setPreviewCallback.Set(); } } ); at_setPreviewCallback.WaitOne(); System.Console.WriteLine("after setPreviewCallback "); Thread.Sleep(150); camera.takePicture( null, null, new XCameraPictureCallback { yield = (data, c) => { System.Console.WriteLine("enter XCameraPictureCallback " + new { data.Length }); if (data.Length > 0) { var bmp = BitmapFactory.decodeByteArray(data, 0, data.Length); File directory = new File(path); directory.mkdirs(); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.JPEG, 100, bytes); try { f.createNewFile(); FileOutputStream fo = new FileOutputStream(f); fo.write(bytes.toByteArray()); } catch { throw; } } System.Console.WriteLine("exit XCameraPictureCallback"); camera.release(); done(); //[javac] V:\src\CameraExperiment\ApplicationWebService___c__DisplayClass2.java:54: cannot find symbol //[javac] symbol : method Set() //[javac] location: class ScriptCoreLibJava.BCLImplementation.System.Threading.__AutoResetEvent //[javac] this.a.Set(); //[javac] ^ a.Set(); } } ); // I/System.Console( 6264): before takePicture { f = /mnt/sdcard/Pictures/shot.jpg } //I/System.Console( 6264): { width = 2560, height = 1920 } //I/System.Console( 6264): { width = 2560, height = 1536 } //I/System.Console( 6264): { width = 2048, height = 1536 } //I/System.Console( 6264): { width = 2048, height = 1232 } //I/System.Console( 6264): { width = 1600, height = 1200 } //I/System.Console( 6264): { width = 1600, height = 960 } //I/System.Console( 6264): { width = 800, height = 480 } //I/System.Console( 6264): { width = 640, height = 480 } //I/ShotSingle( 84): ShotSingle::takePicture start //I/ShotSingle( 84): ShotSingle::takePicture end //I/System.Console( 6264): after takePicture // } // } //); System.Console.WriteLine("will wait for takePicture to complete ... " + new { f }); a.WaitOne(); return f; }
protected override void onCreate(Bundle savedInstanceState) { base.onCreate(savedInstanceState); var sv = new ScrollView(this); var ll = new LinearLayout(this); //ll.setOrientation(LinearLayout.VERTICAL); sv.addView(ll); var b = new Button(this); ll.addView(b); var p = new Preview(this); b.WithText("take a picture"); p.oncamera = camera => b.AtClick( v => { camera.takePicture(null, null, new takePicture_handler { handler = data => { b.WithText("at click"); try { // http://stackoverflow.com/questions/11874273/android-nexus-7-jelly-bean-startpreview-takepicture-calling-getcamerastereomode //E/NvOmxCamera( 126): OMX_ERRORTYPE android::NvOmxCamera::getCameraStereoMode(NvxComponent*, NvOmxCameraUserStereoMode&): Error: invalid NVX mode 0. //E/NvOmxCamera( 126): OMX_ERRORTYPE android::NvOmxCamera::getCameraStereoModeAndCaptureInfo(NvxComponent*, NvOmxCameraUserStereoMode&, NVX_STEREOCAPTUREINFO&): getCameraStereoMode failed with 0x00000000 //D/NvOsDebugPrintf( 126): NvMMLiteJPEGEncSetAttribute: Incorrect value 0 for stereo capture type //E/NvOmxCameraSettings( 126): OMX_ERRORTYPE android::programStereoInfo(OMX_HANDLETYPE, const NVX_STEREOCAPTUREINFO&, android::NvxWrappers*): pNvxWrappers->OMX_SetConfigIL failed with 0x80001005 //D/NvOsDebugPrintf( 126): Tryproc: INBuffer-Values of Width and Height 1280 960 //D/dalvikvm(29535): GC_FOR_ALLOC freed 6686K, 52% free 7716K/15943K, paused 25ms, total 27ms var SAVE_PATH = android.os.Environment.getExternalStoragePublicDirectory( android.os.Environment.DIRECTORY_PICTURES ); SAVE_PATH.mkdirs(); var bmp = android.graphics.BitmapFactory.decodeByteArray(data, 0, data.Length); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bmp.compress(android.graphics.Bitmap.CompressFormat.JPEG, 100, bytes); File f = new File(SAVE_PATH.ToString() + "/hello2.jpg"); f.createNewFile(); FileOutputStream fo = new FileOutputStream(f); fo.write(bytes.toByteArray()); Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_VIEW); var imgUri = android.net.Uri.fromFile(f); intent.setDataAndType(imgUri, "image/*"); b.WithText("done!"); startActivity(intent); } // Error 1 The type caught or thrown must be derived from System.Exception y:\jsc.svn\examples\java\android\AndroidCameraActivity\AndroidCameraActivity\ApplicationActivity.cs 154 52 AndroidCameraActivity catch (Exception ex) { b.WithText("saving.. error! " + ex.Message); //throw; } } } ); } ); this.setContentView(p); this.addContentView(sv, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); }