package net.miz_hi.smileessence.dialog; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import android.provider.MediaStore; import net.miz_hi.smileessence.command.MenuCommand; import net.miz_hi.smileessence.core.EnumRequestCode; import net.miz_hi.smileessence.system.MainActivitySystem; import net.miz_hi.smileessence.view.activity.MainActivity; import java.util.ArrayList; import java.util.List; public class SelectPictureDialog extends SimpleMenuDialog { public SelectPictureDialog(Activity activity) { super(activity); } @Override public List<MenuCommand> getMenuList() { List<MenuCommand> list = new ArrayList<MenuCommand>(); list.add(new MenuCommand() { @Override public void workOnUiThread() { startGallery(); } @Override public String getName() { return "画像を選択"; } }); list.add(new MenuCommand() { @Override public void workOnUiThread() { startCamera(); } @Override public String getName() { return "カメラを起動"; } }); return list; } private void startGallery() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); activity.startActivityForResult(intent, EnumRequestCode.PICTURE.ordinal()); } private void startCamera() { MainActivitySystem system = MainActivity.getInstance().system; ContentValues values = new ContentValues(); String filename = System.currentTimeMillis() + ".jpg"; // 必要な情報を詰める values.put(MediaStore.MediaColumns.TITLE, filename); values.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg"); // Uriを取得して覚えておく、Intentにも保存先として渡す system.tempFilePath = activity.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); // インテントの設定 Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, system.tempFilePath); activity.startActivityForResult(intent, EnumRequestCode.CAMERA.ordinal()); } }