私はAndroidで画像をキャプチャするために次のコードを使用しています:
String fileName = "image.jpeg";
//create parameters for Intent with filename
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,"Image captured by camera");
//imageUri is the current activity attribute, define and save it for later usage (also in onSaveInstanceState)
imageUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
//create new Intent
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, CAMERA_PIC_REQUEST);
画像をキャプチャした後、私は画像を取得するために次のコードを使用しています:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if( requestCode == CAMERA_PIC_REQUEST)
{
if(resultCode == Activity.RESULT_OK)
{
if(imageUri == null)
imageUri = data.getData();
String filePath = getPath(imageUri);
UploadContentToServer(filePath, "image.jpeg");
//getBytesFromFile(filePath);
}
}
}
ランドスケープモードのHTCを除くすべてのデバイスで正常に動作します。
アプリでポートレートモードを使用しています。しかし、HTCで横向きモードで画像をキャプチャすると、imageUriがnullになります。この問題を解決する方法は、HTCデバイスのみです。