返信ありがとうございます。
指定した保存先にアウトカメラの画像が保存されないか
らです。
逆のパターンでもだめでした。
インだけの場合は保存することができました。
長くなってしまうのですが、
ソースは以下です。
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();
}
}
};
}
見づらくて申し訳ありません。