Я вызываю намерение MediaStore.ACTION_IMAGE_CAPTURE с дополнительным MediaStore.EXTRA_OUTPUT, чтобы оно сохраняло изображение в этот файл.
В onActivityResult я могу проверить, что изображение сохраняется в предполагаемомфайл, который является правильным.Странная вещь в том, что в любом случае изображение также сохраняется в файле с именем что-то вроде "/sdcard/Pictures/Camera/1298041488657.jpg" (время эпохи, когда было снято изображение).
У меня естьпроверил исходный код приложения камеры (ветка froyo-release), и я почти уверен, что путь к коду верен и мне не нужно сохранять изображение, но я нуб и неполностью уверен.AFAIK, процесс сохранения изображения начинается с этого обратного вызова (мои комментарии):
private final class JpegPictureCallback implements PictureCallback {
...
public void onPictureTaken(...){
...
// This is where the image is passed back to the invoking activity.
mImageCapture.storeImage(jpegData, camera, mLocation);
...
public void storeImage(final byte[] data,
android.hardware.Camera camera, Location loc) {
if (!mIsImageCaptureIntent) { // Am i an intent?
int degree = storeImage(data, loc); // THIS SHOULD NOT
BE CALLED WITHIN THE CAPTURE INTENT!!
.......
// An finally:
private int storeImage(byte[] data, Location loc) {
try {
long dateTaken = System.currentTimeMillis();
String title = createName(dateTaken);
String filename = title + ".jpg"; // Eureka,
timestamp filename!
...
Итак, я получаю правильные данные, но они также сохраняются в "storeImage (data, loc);"вызов метода, который не должен вызываться ...
Не было бы проблемы, если бы я мог получить вновь созданное имя файла из данных результата намерения, но я не могу.Когда я узнал об этом, я обнаружил около 20 файлов изображений из моих тестов, которые я не знал, которые были на моей SDCard:)
Я получаю такое поведение как с Nexus One с Froyo и моим Huawei U8110с эклером.
Может ли кто-нибудь просветить меня?
Большое спасибо.