Я следовал всему до точки с этого официального Android сайта.
Я сохранил путь createTempFile()
в currentImagePath
в своем коде. Печать, которая показывает путь. Однако, похоже, что по этому пути нет данных.
Мой лог c предназначен для копирования данных с этого пути в постоянный путь.
btnTakePic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
captureImage(v);
/*try {
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}*/
//System.out.println(currentImagePath);
File from = new File(currentImagePath);
File storageFileDir = getFilesDir();
byte[] bArray = new byte[(int) from.length()];
try{
fi = new FileInputStream(from);
fi.read(bArray);
fi.close();
}catch(IOException ioExp){
ioExp.printStackTrace();
}
File picStorageDir = new File(storageFileDir,"myPics");
perStorageDir = picStorageDir;
if(!picStorageDir.isDirectory())
{
picStorageDir.mkdirs();
}
System.out.println(perStorageDir.getAbsolutePath());
System.out.println("From length: "+from.length());
try {
String[] t = currentImagePath.split("/"); // this is just to get image name
File temp = new File(picStorageDir,t[t.length-1]); // this is to set file with image name
ff = new FileOutputStream(temp);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
ff.write(bArray);
} catch (IOException e) {
e.printStackTrace();
}
});
Ниже приведен метод captureImage()
public void captureImage(View view)
{
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(cameraIntent.resolveActivity(getPackageManager())!=null)
{
File imageFile = null;
try {
imageFile = getImageFile();
} catch (IOException e) {
e.printStackTrace();
}
if(imageFile!=null)
{
Uri imageUri = FileProvider.getUriForFile(this, "com.example.android.fileprovider", imageFile);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(cameraIntent, IMAGE_REQUEST);
}
System.out.println("imageFile length:"+imageFile.length());
}
}
Это вывод журнала
2020-04-30 14:19:32.646 31226-31226/com.example.ccalculator I/System.out: currImPath: /storage/emulated/0/Android/data/com.example.ccalculator/files/Pictures/jpg_20200430_1419032_793088582.jpg
2020-04-30 14:19:32.657 31226-31226/com.example.ccalculator I/System.out: imageFile length:0
2020-04-30 14:19:32.657 31226-31226/com.example.ccalculator I/System.out: /storage/emulated/0/Android/data/com.example.ccalculator/files/Pictures/jpg_20200430_1419032_793088582.jpg
2020-04-30 14:19:32.658 31226-31226/com.example.ccalculator I/System.out: permanent storage dir: /data/user/0/com.example.ccalculator/files/myPics
2020-04-30 14:19:32.658 31226-31226/com.example.ccalculator I/System.out: From length: 0
На данный момент мне еще предстоит захватить изображение из приложения. Поэтому я подумал, может быть, когда я получу изображение, данные будут сохранены по соответствующим путям. Я попытался добавить Thread.sleep(1000);
, но даже это не помогает.