所以我有点坚持这个。 起初我使用了一个简单的意图来捕捉照片,并在使用位图的图像视图中显示它可以节省额外的内容。 保存这个以便我可以将它上传到firebase存储是很困难的。 香港专业教育学院在Android开发人员的培训课上简单地拍照。香港专业教育学院环顾四周,认为我可能还需要使用媒体分数进行扫描,但实际的照片已在画廊中找到
我可以创建一个文件,但它是0bytes 在图库应用程序中,我实际上可以看到拍摄的照片,但在文件管理器和桌面浏览器中,我只能看到一个空文件。我真的不想使用相机api。
此外,一旦我拍摄照片,使用意图拍摄照片的应用程序崩溃,然后继续我的应用程序。在文件提供程序之前它会工作并返回一个位图 谢谢你的期待。
createfilepath方法中的任何代码冗余都是我在试验android 我认为问题是相机应用程序崩溃,但它发生在所有的caera应用程序我有我的代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" path="Android/data/com.example.testing.app/files/Pictures" />
</paths>
</resources>
public void newImage(){
if(pic.resolveActivity(getActivity().getPackageManager())!=null) {
File photoFile = createFilePath();
if(photoFile!=null){
Log.d("abc", "newImage: "+photoFile.toString());
Uri photoURI = FileProvider.getUriForFile(getActivity(),"com.example.testing.app.fileprovider",photoFile);
Log.d("abc", "newImage: "+photoURI.toString());
pic.putExtra(MediaStore.EXTRA_OUTPUT,photoURI);
startActivityForResult(pic,1);
}
}
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("test", "onActivityResult: ");
if(requestCode==1&&resultCode==RESULT_OK){
// galleryAddPic();
Bundle extra= data.getExtras();
bit =(Bitmap) extra.get("data");
Log.d("abc", "onActivityResult: "+extra.get(MediaStore.EXTRA_OUTPUT).toString());
picture.setImageBitmap(bit);
}
}
public File createFilePath(){
File filepath= getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
Log.d(TAG, "createFilePath: "+ filepath.toString());
File filepath2 = new File(filepath.getAbsolutePath());
File filepath3=null;
try {
filepath3 = File.createTempFile("temp", ".jpg", filepath4);
Log.d(TAG, "createFilePath: ");
return filepath3;
// nCurrentPhotoPath = filepath3.getAbsolutePath();
}catch(IOException e){
e.printStackTrace();
Log.d(TAG, "createFilePath: ");
}
return filepath3;
}
清单中的EDIT提供程序
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.testing.app.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths"/>
</provider>
功能和权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature android:name="android.hardware.Camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera2" android:required="false"/>
<uses-feature android:name="android.hardware.location.gps"/>
答案 0 :(得分:0)
解决方法是删除文件提供程序并获取意图返回的位图,并使用onactivity使用此答案中提供的代码 code
答案 1 :(得分:0)
extra.get("data")
是缩略图,
您的真实图片位于您创建的文件photoFile