Android:カメラからファイル名を取得していますか?
質問
見落としがちな問題に遭遇しました。
カメラの表面プレビューから写真を撮り、sd_card
に保存したい。これはほぼ完璧に動作します。ファイル名を割り当てましたが、filename
は使用しません。
これは私がやろうとしていることです:
Button imagecapture = (Button) findViewById(R.id.imagecapture);
imagecapture.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
String filename = null;
ImageCaptureCallback iccb = null;
try {
filename = timeStampFormat.format(new Date());
ContentValues values = new ContentValues();
values.put(Media.TITLE, filename);
values.put(Media.DESCRIPTION, "Image capture by camera");
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
iccb = new ImageCaptureCallback(getContentResolver().openOutputStream(uri));
} catch (Exception ex) {
ex.printStackTrace();
Log.e(getClass().getSimpleName(), ex.getMessage(), ex);
}
camera.takePicture(mShutterCallback, mPictureCallbackRaw, iccb);
com.froogloid.android.gspot.Park.imageFileName = filename;
}
});
ファイル名は使用しません(つまり、時間/日付のスタンプを要求します)。
解決
これは、ImageCaptureCallbackクラスを介してPictureCallbackを実装し、ファイル出力ストリームを介してファイルが書き込まれているonPictureTakenをオーバーライドすることで解決されました。必要なのは、ファイル出力ストリームを目的のファイル名に変更することだけです。
他のヒント
画像を保存しませんか?私のアプリでは、このコードは画像を保存します。変数<!> quot; filaname <!> quot; SDカードから画像を取得するには? sdcardからの画像を使用するには、変数に保存することをお勧めします。たとえば、<!> quot; fileUri <!> quot; uri.toStringの値、uri Uri.parse(fileUri)を使用してsdcardファイルから取得を終了します。
これが役立つことを願って/おそらく最善の方法ではありませんが、うまくいきました。
どうぞ:
これは、カメラキャプチャ画像のコールバックです。
public class ImageCaptureCallback implements PictureCallback {
private OutputStream filoutputStream;
public ImageCaptureCallback(OutputStream filoutputStream) {
this.filoutputStream = filoutputStream;
}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
try {
Log.v(getClass().getSimpleName(), "onPictureTaken=" + data + " length = " + data.length);
FileOutputStream buf = new FileOutputStream("/sdcard/dcim/Camera/" + CameraActivity.filename + ".jpg");
buf.write(data);
buf.flush();
buf.close();
// filoutputStream.write(data);
filoutputStream.flush();
filoutputStream.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
所属していません StackOverflow