我正在尝试在我的应用中拍摄图像,然后将该图像返回到imageview。它会拍摄图像,但不会将图像返回到我的ImageView
这就是我所做的:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
View rootView = inflater.inflate(R.layout.fragment_images, container, false);
imagev = (ImageView) rootView.findViewById(R.id.MyImages);
imagev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
timeStamp = new SimpleDateFormat("ddMMMyyyy_HH:mm:ss").format(new Date());
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My Taken Images");
imagesFolder.mkdirs();
image = new File(imagesFolder.getPath(), "Image_" + timeStamp + ".jpg");
fileUri = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(imageIntent, TAKE_PICTURE);
}
});
return rootView;
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PICTURE && resultCode == RESULT_OK) {
imageview = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(String.valueOf(fileUri), 512, 384);
ExifInterface exif = null;
try {
exif = new ExifInterface(filep);
} catch (IOException e) {
e.printStackTrace();
}
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);
if (orientation != -1) {
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
default:
rotate = 0;
break;
}
}
Matrix matrix = new Matrix();
matrix.postRotate(rotate);
imagev.setImageBitmap(imageview);
}
}
}
}
我在这里做错了什么? 请帮忙!
由于
答案 0 :(得分:0)
这里至少有三两个问题。
您未获得结果的原因是您将无效值传递给decodeFile()
。 decodeFile()
走了一条路;你正在传递一个file:///
字符串。从image
抓住onCreateView()
,或在getPath()
上使用Uri
,以获取该文件的路径。
此外:
设置Matrix
时遇到很多麻烦,然后似乎永远不会使用它。
在 onCreateView()
开始活动很奇怪。