Я новичок в андроиде. Теперь я выполняю функцию захвата изображения, используя:
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
Проблема заключается в том, что после того, как я закрою свою фотографию, новое снятое фото не отображается на странице изображения.
Кто-нибудь знает, где есть код, который может помочь мне обновить мой Android или любой шаг, который мне нужно сделать, чтобы моя страница отображения изображений могла быть обновлена после того, как я захвачу новую фотографию?
Любая помощь будет очень признательна и вам большое спасибо.
Обновленный ответ: я использую это, возможно, это может помочь другим:
mScanner = new MediaScannerConnection(
Camera.this,
new MediaScannerConnection.MediaScannerConnectionClient() {
public void onMediaScannerConnected() {
mScanner.scanFile(outputFileUri.getPath(), null /* mimeType */);
}
public void onScanCompleted(String path, Uri uri) {
//we can use the uri, to get the newly added image, but it will return path to full sized image
//e.g. content://media/external/images/media/7
//we can also update this path by replacing media by thumbnail to get the thumbnail
//because thumbnail path would be like content://media/external/images/thumbnail/7
//But the thumbnail is created after some delay by Android OS
//So you may not get the thumbnail. This is why I started new UI thread
//and it'll only run after the current thread completed.
if (path.equals(outputFileUri.getPath())) {
mScanner.disconnect();
//we need to create new UI thread because, we can't update our mail thread from here
//Both the thread will run one by one, see documentation of android
Camera.this
.runOnUiThread(new Runnable() {
public void run() {
}
});
}
}
});
mScanner.connect();
Салли, ты имел в виду, что после того, как вы сделаете фотографию, вы не видите ее в галерее или файловом менеджере, когда смотрите на каталог, в котором вы знаете файл?
Если это так, вам нужно запустить медиа-сканер следующим образом:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
... где uri - это uri фотографии, поскольку вы уже знаете это, хотя вместо этого вы можете использовать uri каталога, если это проще (хотя оно медленнее - возможно, очень медленно, если каталог содержит много файлов или вложенных каталогов),
вы должны сделать снимок с помощью нижеприведенного кода ::
Calendar cal = Calendar.getInstance();
File file = new File(Environment.getExternalStorageDirectory(),(cal.getTimeInMillis()+".jpg"));
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
selectedImageUri = Uri.fromFile(file);
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, selectedImageUri);
startActivityForResult(i, CAMERA_RESULT);
и по результату деятельности вы можете использовать этот код:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case CAMERA_RESULT:
if (resultCode == RESULT_OK) {
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContext().getContentResolver(), selectedImageUri);
imageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
}
}
Вы можете обновить свою деятельность с помощью:
Intent myIntent = getIntent();
finish();
startActivity(myIntent);