回答内容
回答を評価する
(0ポイント)
|
返信ありがとうございます。
指定した保存先にアウトカメラの画像が保存されないか らです。 逆のパターンでもだめでした。
インだけの場合は保存することができました。
長くなってしまうのですが、 ソースは以下です。
public boolean onTouchEvent(MotionEvent event) { //タッチイベント取得 if(event.getAction() == MotionEvent.ACTION_DOWN) { Log.d(TAG, "CameraView::onTouchEvent()"); TakePicture(); //撮影 } return true; } public void TakePicture() { Log.d(TAG, "CameraView::takePicture()"); if(_nReady != 0) { _nReady = 0; if(true) { //オートフォーカス撮影 _Camera.autoFocus(_pfnAutoFocusCallback); }} else { //即撮影 _Camera.takePicture(_pfnShutterCallback, _pfnRawPictureCallback,mPictureListener); } } private Camera.AutoFocusCallback _pfnAutoFocusCallback = new AutoFocusCallback(); private final class AutoFocusCallback implements Camera.AutoFocusCallback { public void onAutoFocus(boolean success, Camera camera) { Log.d(TAG, "CameraView::onAutoFocus()"); camera.autoFocus(null); camera.takePicture(_pfnShutterCallback, _pfnRawPictureCallback,new JpgPictureCallback()); if(N == 1);{ SwitchCamera1(); } TakePicture(); }; } public void SwitchCamera1() { if (_Camera != null) { _Camera.stopPreview(); try { _Camera.setPreviewDisplay(null); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } _Camera.release(); _Camera = null; } // カメラを切り替え _Camera = Camera .open(CameraInfo.CAMERA_FACING_FRONT); try { _Camera.setPreviewDisplay(_SurfaceHolder); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // プレビュー再開 _Camera.startPreview(); _nReady = 0; } private ShutterCallback _pfnShutterCallback = new ShutterCallback(); private final class ShutterCallback implements android.hardware.Camera.ShutterCallback { public void onShutter() { Log.d(TAG, "CameraView::onShutter()"); } }; private RawPictureCallback _pfnRawPictureCallback = new RawPictureCallback(); private final class RawPictureCallback implements PictureCallback { public void onPictureTaken(byte [] rawData, android.hardware.Camera camera) { Log.d(TAG, "CameraView::onRawPictureTaken()"); }; } private final class JpgPictureCallback implements PictureCallback { public void onPictureTaken(byte [] data, android.hardware.Camera camera) { Log.d(TAG, "CameraView::onJpgPictureTaken()"); String strFolder; String strFile; strFolder = Environment.getExternalStorageDirectory()+"/DCIM/C amera/"; //保存ファイル名 strFile = strFolder + "test" + _nShotNo + ".jpg"; try { FileOutputStream cFile = new FileOutputStream(strFile); cFile.write(data); cFile.close(); long nDate; ContentValues values = new ContentValues(); nDate = System.currentTimeMillis(); values.put(Images.Media.MIME_TYPE,"image/jpeg"); //必須 values.put(Images.Media.DATA,strFile); values.put(Images.Media.SIZE,new File(strFile).length()); values.put(Images.Media.DATE_ADDED,nDate); values.put(Images.Media.DATE_TAKEN,nDate); values.put(Images.Media.DATE_MODIFIED,nDate); ContentResolver contentResolver = getContext().getContentResolver(); contentResolver.insert(Media.EXTERNAL_CONTENT_URI, values); } catch(Exception e) { Log.e(TAG, "CameraView::onJpgPictureTaken() : Fail to save image file."); } _nShotNo++; camera.startPreview(); _nReady = 1; }; }; private Camera.PictureCallback mPictureListener =new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { if (data != null) { FileOutputStream foStream = null; File file = new File(Environment.getExternalStorageDirectory().get Path() + "/cmr/"); if(!file.exists()){ file.mkdir(); } String imgName = Environment.getExternalStorageDirectory().getPath( ) + "/cmr/" + System.currentTimeMillis() +".jpg"; try { foStream = new FileOutputStream(imgName); foStream.write(data); foStream.close(); ContentValues values = new ContentValues(); ContentResolver contentResolver = context.getContentResolver(); values.put(Images.Media.MIME_TYPE, "image/jpeg"); values.put("_data", imgName); try { contentResolver.insert(MediaStore.Images.Media.EXT ERNAL_CONTENT_URI, values); }catch(Exception e){ Toast.makeText(context, "再起動後に画像が認識 されます。", Toast.LENGTH_SHORT).show(); e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } bool = true; camera.startPreview(); _nReady = 1; }else{ Toast.makeText(context, "データが取得できませ んでした。", Toast.LENGTH_SHORT).show(); bool = true; camera.startPreview(); } } }; }
見づらくて申し訳ありません。
|