iPhone に UIImagePickerController があり、ユーザーがデバイスに保存されている画像にアクセスできるように、Android SDK にも同様のコントロールがありますか?
ありがとう。
iPhone に UIImagePickerController があり、ユーザーがデバイスに保存されている画像にアクセスできるように、Android SDK にも同様のコントロールがありますか?
ありがとう。
を使用startActivityForResult
して、完了させたいアクションを説明するインテントと、アクションを実行するデータソースを渡すことができます。
幸いなことに、Androidには、物を選ぶためのアクションと、ローカルデバイス上の画像または
SDカード上の画像用の画像Intent.ACTION__PICK
を含むデータソースが含ま
れています。android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI
startActivityForResult
次のように、選択アクションとユーザーに選択させたい画像を渡すように呼び出します。
startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);
次に、オーバーライドonActivityResult
して、選択を行ったユーザーをリッスンします。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SELECT_IMAGE)
if (resultCode == Activity.RESULT_OK) {
Uri selectedImage = data.getData();
// TODO Do something with the select image URI
}
}
画像のURIを取得したら、それを使用して画像にアクセスし、必要な操作を行うことができます。
次のこともできます。
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1);
これにより、すべてのストレージから画像が選択されます。
Retoからの回答を更新しただけです。これを行うと、画像をスケーリングできます。
private String getPath(Uri uri) {
String[] data = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(context, uri, data, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}