Android Actionの使用例


Androidはアクションに基づいて機能を実現します.
package com.uwo.tools.aibum.local.utils;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;

import java.io.File;

/**
 * Created by SRain on 2015/12/11.
 * <p/>
 *   Action    
 * 1.  
 * 2.      
 * 3.    
 */
public class ActionUtils {

    public static final int GET_IMAGE_FROM_PHONE = 5002; //          
    public static final int CROP_IMAGE = 5003;  //        

    public static final int OPEN_CAMERA_IMAGE_URI = 5100; //       uri
    public static final int OPEN_CAMERA_IMAGE_PATH = 5101; //           
    public static final int OPEN_CAMERA_IMAGE_THUMB = 5102; //        
    public static final int OPEN_CAMERA_IMAGE_NO_RESULT = 5103; //       

    /**
     *         
     *       ,  Uri
     *
     * @param activity
     */
    public static void openCameraImage(final Activity activity) {
        ImageUriUtils.imageUriFromCamera = ImageUriUtils.createImagePathUri(activity);
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, ImageUriUtils.imageUriFromCamera);
        activity.startActivityForResult(intent, OPEN_CAMERA_IMAGE_URI);
    }

    /**
     *         
     *       ,          
     *
     * @param activity
     * @param path               
     */
    public static void openCameraImage(final Activity activity, String path) {
        File file = new File(path);
        if (!file.exists()) {
            file = new File(Environment.getExternalStorageDirectory(), path);
        }
        Uri uri = Uri.fromFile(file);
        ImageUriUtils.imageUriFromCamera = ImageUriUtils.createImagePathUri(activity);
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        activity.startActivityForResult(intent, OPEN_CAMERA_IMAGE_PATH);
    }

    /**
     *         
     *        ,         uri,           
     * <p/>
     *
     * @param activity
     * @return      onActivityResult          Bitmap bitmap = (Bitmap) data.getExtras().get("data");
     */
    public static void openCameraImageThumb(final Activity activity) {
        ImageUriUtils.imageUriFromCamera = ImageUriUtils.createImagePathUri(activity);
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        activity.startActivityForResult(intent, OPEN_CAMERA_IMAGE_THUMB);
    }

    /**
     *            
     */
    public static void openCameraImageNoResult(final Activity activity) {
        Intent intent = new Intent(); //     
        intent.setAction("android.media.action.STILL_IMAGE_CAMERA");
        activity.startActivity(intent);
    }

    /**
     *       
     *
     * @param activity
     */
    public static void openLocalImage(final Activity activity) {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        activity.startActivityForResult(intent, GET_IMAGE_FROM_PHONE);
    }

    /**
     *     
     *
     * @param activity
     * @param srcUri
     */
    public static void cropUriImage(Activity activity, Uri srcUri) {
        ImageUriUtils.cropImageUri = ImageUriUtils.createImagePathUri(activity);
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(srcUri, "image/*");
        intent.putExtra("crop", "true");

        ////////////////////////////////////////////////////////////////
        // 1.          ,         (            )
        ////////////////////////////////////////////////////////////////
        // 2.         (aspect) ,           ,      
        ////////////////////////////////////////////////////////////////
        // 3.         (output)         ,           
        ////////////////////////////////////////////////////////////////
        // 4.       (aspect)            (output)  ,  ,
        //          ,              ,           ,
        //                  ,         ,      
        ////////////////////////////////////////////////////////////////

        // aspectX aspectY          
//        intent.putExtra("aspectX", 1);
//        intent.putExtra("aspectY", 1);
        // outputX outputY            
//    intent.putExtra("outputX", 300);
//    intent.putExtra("outputY", 100);

        // return-data true ,     bitmap  ,            ,     false    
        // return-data false ,    bitmap,       MediaStore.EXTRA_OUTPUT    uri
        Log.e("srcUri", srcUri.toString());
        intent.putExtra(MediaStore.EXTRA_OUTPUT, ImageUriUtils.cropImageUri);
        Log.e("cropImageUri", ImageUriUtils.cropImageUri.toString());
        intent.putExtra("return-data", true);
        activity.startActivityForResult(intent, CROP_IMAGE);
    }
}