我一直在努力想弄清楚如何使用Android設備拍攝照片,並將該照片上傳到Parse.com。我明顯做錯了事,因爲我所得到的只是縮略圖。拍攝照片並將完整圖像上傳至Parse.com?
我一直在搜索谷歌,並且遇到了一些非常混亂/令人費解的做我以後(我認爲?)的方式,但我認爲如果獲得縮略圖非常簡單,爲什麼要獲取完整的形象是如此不同或困難?
編輯:我認爲主要問題是,當我看着onActivityResult中的變量fileUri爲null。這在某些設備上似乎很常見。我使用的是舊的Droid和運行Galaxy S5的genymotion模擬器。也許這是我的問題?
這裏是我的代碼:
public void takePhoto() {
// Check Camera
if (getApplicationContext().getPackageManager().hasSystemFeature(
PackageManager.FEATURE_CAMERA)) {
// Open default camera
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
// start the image capture Intent
startActivityForResult(intent, 100);
} else {
Toast.makeText(getApplication(), "Camera not supported", Toast.LENGTH_LONG).show();
}
}
而該部分工作正常,和這裏的onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
byte[] image_byte_array;
if (data != null) {
if (requestCode == 100 && resultCode == RESULT_OK) {
Toast.makeText(getApplicationContext(), "Saving File...", Toast.LENGTH_LONG).show();
Bitmap photo = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);
image_byte_array = stream.toByteArray();
ParseFile photo = new ParseFile("photo.jpg", image_byte_array);
ParseObject parseObject = new ParseObject("Items");
parseObject.put("photo", photo);
parseObject.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
Toast.makeText(getApplicationContext(), "Error: " + e.toString(), Toast.LENGTH_LONG).show();
} else {
}
}
});
photo.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
Toast.makeText(getApplicationContext(), "Error: " + e.toString(), Toast.LENGTH_LONG).show();
} else {
Log.i("ParseFile", "--- File is Saved ---");
}
}
});
} else {
finish();
}
}
}
上面的代碼工作完全正常,但正如前面所提到的,它只是創建和上傳一個小的5k縮略圖jpg圖形。我想要完整的圖像。我意識到在上傳之前我必須將其縮小,但是一旦我找出如何獲取主圖像,我會繼續努力。
我有相應的清單條目READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE。另外,一旦完成上傳,我甚至不需要該圖像。
我錯過了什麼?