我是Android新手。我正在測試一個Android應用程序(在互聯網上搜索後創建),該應用程序在主要活動中創建一個Intent按鈕,啓動設備的攝像頭並將拍攝的照片返回到主佈局中的ImageView。 我的問題是,雖然在模擬器上測試過程成功完成(在保存照片後圖片顯示在ImageView上),但在測試三星平板電腦2(GT-P7510)與Android時發生了同樣的情況版本4.0.4,但是當我試圖運行在三星S4智能手機(GT-I9500)與版本5.0.1它保存圖片,但照片是未顯示ImageView在主要佈局。onActivityResult完成後照片未顯示在主要活動上
有人有同樣的問題嗎?
我讀過它可能是OnCreate上的一些問題,但無法解決它。
下面是代碼的一部分。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_call_camera);
photoImage = (ImageView) findViewById(R.id.photo_image);
callCameraButton = (Button)
findViewById(R.id.button_callcamera);
photoImage.setVisibility(View.VISIBLE);
callCameraButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = Uri.fromFile(getOutputPhotoFile());
i.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
archivo = fileUri.getEncodedPath();
startActivityForResult(i, CAPTURE_IMAGE_ACTIVITY_REQ);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQ) {
if (resultCode == RESULT_OK) {
Uri photoUri = null;
if (data == null) {
// A known bug here! The image should have saved in fileUri
Toast.makeText(this, "Image saved successfully",
Toast.LENGTH_LONG).show();
photoUri = fileUri;
} else {
photoUri = data.getData();
Toast.makeText(this, "Image saved successfully in: " + data.getData(),
Toast.LENGTH_LONG).show();
}
showPhoto(archivo);
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Cancelled", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Callout for image capture failed!",
Toast.LENGTH_LONG).show();
}
}
}
private void showPhoto(String photoUri) {
File imageFile = new File (photoUri);
if (imageFile.exists()){
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
BitmapDrawable drawable = new BitmapDrawable(this.getResources(), bitmap);
photoImage.setScaleType(ImageView.ScaleType.FIT_CENTER);
photoImage.setImageDrawable(drawable);
}
}
你不需要這個showPhoto(String uri)方法。 您可以使用ImageView.setImageURI方法,該方法使用從成功意圖獲取的URI。 這裏是鏈接http://developer.android.com/reference/android/widget/ImageView.html#setImageURI(android.net.Uri) –
謝謝尼古拉。我已經嘗試過,但也沒有工作。 – Cloio
我發現的是,由於S4攝像頭拍攝的照片數量龐大,這就是ImageView上沒有顯示的原因。我發現下一個鏈接的解決方案http://stackoverflow.com/questions/29932060/imageview-will-not-load-via-setimageuri-when-ran-on-samsung-galaxy-s4-only(謝謝AJ9! )爲我工作。唯一的問題是現在圖像旋轉90度,並且如果選擇肖像始終顯示在橫向。 – Cloio