public class MainActivity extends AppCompatActivity {
int TAKE_PHOTO_CODE = 0;
public static int count = 0;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + "/Camera/";
File newdir = new File(dir);
newdir.mkdirs();
Button capture = (Button) findViewById(R.id.btnCapture);
capture.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
count++;
String file = dir + count + ".jpg";
File newfile = new File(file);
try {
newfile.createNewFile();
} catch (IOException e) {
}
Uri outputFileUri = Uri.fromFile(newfile);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}
});
//Help with the refresh please
// I have this application where you take pictures and are saved in gallery , but after taking them do not appear, I have to restart my device
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
Log.d("CameraDemo", "Pic saved");
}
}
}
1
A
ответ
0
Я использую следующую операцию, которая используется для отображения сделанного снимка, и где снятое изображение сохраняется в виде растрового изображения. вы можете использовать кнопку сохранения для сохранения ваших снимков в вашей папке.
String fileSavedPath;
Log.d("tag", "Utility.storage_path : " + Utility.storage_path);
File var4 = new File(Environment.getExternalStorageDirectory()
.toString() + File.separator + Utility.storage_path); //your path
var4.mkdirs();
String var2 = (new SimpleDateFormat("yyyyMMdd_HH_mm_ss"))
.format(new Date());
var4 = new File(var4, "Frame_" + var2 + ".png");
fileSavedPath = var4.getAbsolutePath();
if (var4.exists()) {
var4.delete();
}
try {
FileOutputStream var5 = new FileOutputStream(var4);
Utility.tempBitmap.compress(CompressFormat.JPEG, 80, var5); //convert your image in bitmap
var5.flush();
var5.close();
MediaScannerConnection.scanFile(ImageEditingActivity.this,
new String[] { fileSavedPath },
new String[] { "image/png" },
(OnScanCompletedListener) null);
/*
* Toast.makeText(ImageEditingActivity.this,
* "Collage is saved at " + fileSavedPath, 0).show();
*/
} catch (Exception var3) {
var3.printStackTrace();
ImageEditingActivity.this.runOnUiThread(new Runnable() {
public void run() {
/*
* Toast.makeText(ImageEditingActivity.this,
* "Some thing wrong happen", 0).show();
*/
}
});
}
0
Попробуйте ниже код, он работает для меня, это показывает изображения только после того, как мы не берем его в галерее, не нужно перезагрузить устройство:
private static final int REQUEST_CODE_CAMERA_PICTURE = 1001;
private static final String SCAN_DOCUMENTS_DIR = "Pic_Saved_Directory";
private String scanedImageAbsolutePath;
public void openScanActivity() {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
createDir();
File scanedImageFile = new File(Environment.getExternalStorageDirectory(), SCAN_DOCUMENTS_DIR +"/image_"+ System.currentTimeMillis()+".jpg");
scanedImageAbsolutePath = scanedImageFile.getAbsolutePath();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(scanedImageFile));
getActivity().startActivityFromFragment(this, intent, REQUEST_CODE_CAMERA_PICTURE);
}
private void createDir(){
File directory = new File(Environment.getExternalStorageDirectory(), SCAN_DOCUMENTS_DIR);
if (!directory.exists()) {
directory.mkdirs();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODE_CAMERA_PICTURE && resultCode == Activity.RESULT_OK) {
//image will be available on : scanedImageAbsolutePath
Toast.makeText(getActivity(), "Pic Saved", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Pic Not Saved", Toast.LENGTH_SHORT).show();
}
}
Кроме того, необходимо отметить следующее разрешение в вашем AndroidManifest
файле:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
+0
Спасибо, но не работает для меня:/ –
Я попробую поблагодарить вас –