{"id":908,"date":"2023-08-27T00:39:06","date_gmt":"2023-06-04T08:07:39","guid":{"rendered":"https:\/\/www.silicloud.com\/ja\/blog\/index.php\/2023\/11\/30\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/"},"modified":"2025-08-01T03:27:08","modified_gmt":"2025-07-31T18:27:08","slug":"android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/","title":{"rendered":"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3002"},"content":{"rendered":"<p>\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001\u30ab\u30e1\u30e9\u307e\u305f\u306f\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u9078\u629e\u3057\u3001\u305d\u308c\u3092ImageView\u306b\u8868\u793a\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3057\u307e\u3059\u3002\u6ce8\u610f: \u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306f\u3001Android Nougat\u4ee5\u524d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u307e\u3059\u3002\u6700\u65b0\u306e\u52d5\u4f5c\u4f8b\u306b\u3064\u3044\u3066\u306f\u3001[\u66f4\u65b0\u3055\u308c\u305f\u8a18\u4e8b](http:\/\/Note: Google\u306fAndroid\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u30d0\u30fc\u30b8\u30e7\u30f3\u304b\u3089\u5916\u308c\u307e\u3057\u305f\u3002Android Q\u306fAndroid 10\u306b\u540d\u524d\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306fGoogle\u304c\u3053\u308c\u3092\u884c\u3046\u524d\u306b\u66f8\u304b\u308c\u305f\u3082\u306e\u306a\u306e\u3067\u3001\u8a18\u4e8b\u5185\u306e\u4e00\u90e8\u306b\u306fAndroid Q\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002)\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>\u30a2\u30f3\u30c9\u30ed\u30a4\u30c9\u753b\u50cf\u30ad\u30e3\u30d7\u30c1\u30e3\u306e\u6982\u8981<\/h3>\n<p>Android Marshmallow\u304c\u958b\u59cb\u3055\u308c\u305f\u3053\u3068\u306b\u3088\u308a\u3001\u30e9\u30f3\u30bf\u30a4\u30e0\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u3092\u524d\u9762\u306b\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6b21\u306e\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u3092Android Manifest.xml\u30d5\u30a1\u30a4\u30eb\u306eapplication\u30bf\u30b0\u306e\u4e0a\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code>&lt;uses-feature\r\n        android:name=\"android.hardware.camera\"\r\n        android:required=\"false\" \/&gt;\r\n    &lt;uses-feature\r\n        android:name=\"android.hardware.camera.autofocus\"\r\n        android:required=\"false\" \/&gt;\r\n    &lt;uses-feature\r\n        android:name=\"android.hardware.camera.flash\"\r\n        android:required=\"false\" \/&gt;\r\n\r\n    &lt;uses-permission android:name=\"android.permission.CAMERA\" \/&gt;\r\n    &lt;uses-permission android:name=\"ANDROID.PERMISSION.READ_EXTERNAL_STORAGE\"\/&gt;\r\n<\/code><\/pre>\n<p>Android.hardware.camera\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001Play\u30b9\u30c8\u30a2\u306f\u30ab\u30e1\u30e9\u306e\u306a\u3044\u30c7\u30d0\u30a4\u30b9\u306b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u691c\u51fa\u3057\u3001\u9632\u6b62\u3057\u307e\u3059\u3002Intent\u306f\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4ed6\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u59d4\u4efb\u3059\u308b\u6a19\u6e96\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002\u30cd\u30a4\u30c6\u30a3\u30d6\u30ab\u30e1\u30e9\u3092\u8d77\u52d5\u3059\u308b\u305f\u3081\u306b\u306f\u3001Intent\u306b\u306fandroid.provider.MediaStore.ACTION_IMAGE_CAPTURE\u304c\u5fc5\u8981\u3067\u3059\u3002\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u9078\u629e\u3059\u308b\u306b\u306f\u3001Intent\u306b\u306f\u4ee5\u4e0b\u306e\u5f15\u6570\u304c\u5fc5\u8981\u3067\u3059\uff1aIntent.ACTION_GET_CONTENT\u3002\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001\u30ab\u30e1\u30e9\u307e\u305f\u306f\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u9078\u629e\u3057\u3001\u753b\u50cf\u3092\u5186\u5f62\u306e\u30a4\u30e1\u30fc\u30b8\u30d3\u30e5\u30fc\u3068\u901a\u5e38\u306e\u30a4\u30e1\u30fc\u30b8\u30d3\u30e5\u30fc\u306b\u8868\u793a\u3059\u308b\u753b\u50cf\u30d4\u30c3\u30ab\u30fc\u3092\u547c\u3073\u51fa\u3057\u307e\u3059\u3002build.gradle\u30d5\u30a1\u30a4\u30eb\u306b\u4ee5\u4e0b\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002compile &#8216;de.hdodenhof:circleimageview:2.1.0&#8217;<\/p>\n<h3>Android\u306e\u30a4\u30e1\u30fc\u30b8\u30ad\u30e3\u30d7\u30c1\u30e3\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u9020<\/h3>\n<h3>Android\u3067\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3059\u308b\u30b3\u30fc\u30c9<\/h3>\n<p>activity_main.xml\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u306f\u3001FAB\u30dc\u30bf\u30f3\u306e\u30a2\u30a4\u30b3\u30f3\u304c@android:drawable\/ic_menu_camera\u306b\u5909\u66f4\u3055\u308c\u308b\u3053\u3068\u3092\u9664\u3044\u3066\u3001\u540c\u3058\u307e\u307e\u3067\u3059\u3002content_main.xml\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;RelativeLayout xmlns:android=\"https:\/\/schemas.android.com\/apk\/res\/android\"\r\n    xmlns:app=\"https:\/\/schemas.android.com\/apk\/res-auto\"\r\n    xmlns:tools=\"https:\/\/schemas.android.com\/tools\"\r\n    android:id=\"@+id\/content_main\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"match_parent\"\r\n    android:paddingBottom=\"@dimen\/activity_vertical_margin\"\r\n    android:paddingLeft=\"@dimen\/activity_horizontal_margin\"\r\n    android:paddingRight=\"@dimen\/activity_horizontal_margin\"\r\n    android:paddingTop=\"@dimen\/activity_vertical_margin\"\r\n    android:background=\"#000000\"\r\n    app:layout_behavior=\"@string\/appbar_scrolling_view_behavior\"\r\n    tools:context=\"com.scdev.imagepicker.MainActivity\"\r\n    tools:showIn=\"@layout\/activity_main\"&gt;\r\n\r\n\r\n    &lt;RelativeLayout\r\n        android:layout_width=\"250dp\"\r\n        android:layout_height=\"250dp\"\r\n        android:layout_centerHorizontal=\"true\"\r\n        android:layout_centerVertical=\"true\"\r\n        android:background=\"@drawable\/image_border\"\r\n        android:clickable=\"true\"\r\n        android:orientation=\"vertical\"&gt;\r\n\r\n\r\n        &lt;ImageView\r\n            android:id=\"@+id\/imageView\"\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"match_parent\"\r\n            android:adjustViewBounds=\"true\"\r\n            android:scaleType=\"centerCrop\" \/&gt;\r\n\r\n    &lt;\/RelativeLayout&gt;\r\n\r\n    &lt;de.hdodenhof.circleimageview.CircleImageView\r\n        android:id=\"@+id\/img_profile\"\r\n        android:layout_width=\"100dp\"\r\n        android:layout_height=\"100dp\"\r\n        android:layout_gravity=\"center_horizontal\"\r\n        android:src=\"@drawable\/profile\"\r\n        app:civ_border_width=\"5dp\"\r\n        app:civ_border_color=\"#FFFFFF\"\r\n        android:layout_alignParentBottom=\"true\"\r\n        android:layout_centerHorizontal=\"true\" \/&gt;\r\n\r\n&lt;\/RelativeLayout&gt;\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0b\u306fMainActivity.java\u306e\u30b3\u30fc\u30c9\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>public class MainActivity extends AppCompatActivity {\r\n\r\n    Bitmap myBitmap;\r\n    Uri picUri;\r\n\r\n\r\n    private ArrayList permissionsToRequest;\r\n    private ArrayList permissionsRejected = new ArrayList();\r\n    private ArrayList permissions = new ArrayList();\r\n\r\n    private final static int ALL_PERMISSIONS_RESULT = 107;\r\n\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_main);\r\n        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);\r\n        setSupportActionBar(toolbar);\r\n\r\n        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);\r\n        fab.setOnClickListener(new View.OnClickListener() {\r\n            @Override\r\n            public void onClick(View view) {\r\n                startActivityForResult(getPickImageChooserIntent(), 200);\r\n            }\r\n        });\r\n\r\n\r\n        permissions.add(CAMERA);\r\n        permissionsToRequest = findUnAskedPermissions(permissions);\r\n        \/\/get the permissions we have asked for before but are not granted..\r\n        \/\/we will store this in a global list to access later.\r\n\r\n\r\n        if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) {\r\n\r\n\r\n            if (permissionsToRequest.size() &gt; 0)\r\n                requestPermissions(permissionsToRequest.toArray(new String[permissionsToRequest.size()]), ALL_PERMISSIONS_RESULT);\r\n        }\r\n\r\n    }\r\n\r\n    @Override\r\n    public boolean onCreateOptionsMenu(Menu menu) {\r\n        \/\/ Inflate the menu; this adds items to the action bar if it is present.\r\n        getMenuInflater().inflate(R.menu.menu_main, menu);\r\n        return true;\r\n    }\r\n\r\n    @Override\r\n    public boolean onOptionsItemSelected(MenuItem item) {\r\n        \/\/ Handle action bar item clicks here. The action bar will\r\n        \/\/ automatically handle clicks on the Home\/Up button, so long\r\n        \/\/ as you specify a parent activity in AndroidManifest.xml.\r\n        int id = item.getItemId();\r\n\r\n        \/\/noinspection SimplifiableIfStatement\r\n        if (id == R.id.action_settings) {\r\n            return true;\r\n        }\r\n\r\n        return super.onOptionsItemSelected(item);\r\n    }\r\n\r\n\r\n    \/**\r\n     * Create a chooser intent to select the source to get image from.&lt;br \/&gt;\r\n     * The source can be camera's (ACTION_IMAGE_CAPTURE) or gallery's (ACTION_GET_CONTENT).&lt;br \/&gt;\r\n     * All possible sources are added to the intent chooser.\r\n     *\/\r\n    public Intent getPickImageChooserIntent() {\r\n\r\n        \/\/ Determine Uri of camera image to save.\r\n        Uri outputFileUri = getCaptureImageOutputUri();\r\n\r\n        List allIntents = new ArrayList();\r\n        PackageManager packageManager = getPackageManager();\r\n\r\n        \/\/ collect all camera intents\r\n        Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);\r\n        List listCam = packageManager.queryIntentActivities(captureIntent, 0);\r\n        for (ResolveInfo res : listCam) {\r\n            Intent intent = new Intent(captureIntent);\r\n            intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));\r\n            intent.setPackage(res.activityInfo.packageName);\r\n            if (outputFileUri != null) {\r\n                intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);\r\n            }\r\n            allIntents.add(intent);\r\n        }\r\n\r\n        \/\/ collect all gallery intents\r\n        Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT);\r\n        galleryIntent.setType(\"image\/*\");\r\n        List listGallery = packageManager.queryIntentActivities(galleryIntent, 0);\r\n        for (ResolveInfo res : listGallery) {\r\n            Intent intent = new Intent(galleryIntent);\r\n            intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));\r\n            intent.setPackage(res.activityInfo.packageName);\r\n            allIntents.add(intent);\r\n        }\r\n\r\n        \/\/ the main intent is the last in the list (fucking android) so pickup the useless one\r\n        Intent mainIntent = allIntents.get(allIntents.size() - 1);\r\n        for (Intent intent : allIntents) {\r\n            if (intent.getComponent().getClassName().equals(\"com.android.documentsui.DocumentsActivity\")) {\r\n                mainIntent = intent;\r\n                break;\r\n            }\r\n        }\r\n        allIntents.remove(mainIntent);\r\n\r\n        \/\/ Create a chooser from the main intent\r\n        Intent chooserIntent = Intent.createChooser(mainIntent, \"Select source\");\r\n\r\n        \/\/ Add all other intents\r\n        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, allIntents.toArray(new Parcelable[allIntents.size()]));\r\n\r\n        return chooserIntent;\r\n    }\r\n\r\n\r\n    \/**\r\n     * Get URI to image received from capture by camera.\r\n     *\/\r\n    private Uri getCaptureImageOutputUri() {\r\n        Uri outputFileUri = null;\r\n        File getImage = getExternalCacheDir();\r\n        if (getImage != null) {\r\n            outputFileUri = Uri.fromFile(new File(getImage.getPath(), \"profile.png\"));\r\n        }\r\n        return outputFileUri;\r\n    }\r\n\r\n    @Override\r\n    protected void onActivityResult(int requestCode, int resultCode, Intent data) {\r\n\r\n        Bitmap bitmap;\r\n        if (resultCode == Activity.RESULT_OK) {\r\n\r\n            ImageView imageView = (ImageView) findViewById(R.id.imageView);\r\n\r\n            if (getPickImageResultUri(data) != null) {\r\n                picUri = getPickImageResultUri(data);\r\n\r\n                try {\r\n                    myBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), picUri);\r\n                    myBitmap = rotateImageIfRequired(myBitmap, picUri);\r\n                    myBitmap = getResizedBitmap(myBitmap, 500);\r\n\r\n                    CircleImageView croppedImageView = (CircleImageView) findViewById(R.id.img_profile);\r\n                    croppedImageView.setImageBitmap(myBitmap);\r\n                    imageView.setImageBitmap(myBitmap);\r\n\r\n                } catch (IOException e) {\r\n                    e.printStackTrace();\r\n                }\r\n\r\n\r\n            } else {\r\n\r\n\r\n                bitmap = (Bitmap) data.getExtras().get(\"data\");\r\n\r\n                myBitmap = bitmap;\r\n                CircleImageView croppedImageView = (CircleImageView) findViewById(R.id.img_profile);\r\n                if (croppedImageView != null) {\r\n                    croppedImageView.setImageBitmap(myBitmap);\r\n                }\r\n\r\n                imageView.setImageBitmap(myBitmap);\r\n\r\n            }\r\n\r\n        }\r\n\r\n    }\r\n\r\n    private static Bitmap rotateImageIfRequired(Bitmap img, Uri selectedImage) throws IOException {\r\n\r\n        ExifInterface ei = new ExifInterface(selectedImage.getPath());\r\n        int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);\r\n\r\n        switch (orientation) {\r\n            case ExifInterface.ORIENTATION_ROTATE_90:\r\n                return rotateImage(img, 90);\r\n            case ExifInterface.ORIENTATION_ROTATE_180:\r\n                return rotateImage(img, 180);\r\n            case ExifInterface.ORIENTATION_ROTATE_270:\r\n                return rotateImage(img, 270);\r\n            default:\r\n                return img;\r\n        }\r\n    }\r\n\r\n    private static Bitmap rotateImage(Bitmap img, int degree) {\r\n        Matrix matrix = new Matrix();\r\n        matrix.postRotate(degree);\r\n        Bitmap rotatedImg = Bitmap.createBitmap(img, 0, 0, img.getWidth(), img.getHeight(), matrix, true);\r\n        img.recycle();\r\n        return rotatedImg;\r\n    }\r\n\r\n    public Bitmap getResizedBitmap(Bitmap image, int maxSize) {\r\n        int width = image.getWidth();\r\n        int height = image.getHeight();\r\n\r\n        float bitmapRatio = (float) width \/ (float) height;\r\n        if (bitmapRatio &gt; 0) {\r\n            width = maxSize;\r\n            height = (int) (width \/ bitmapRatio);\r\n        } else {\r\n            height = maxSize;\r\n            width = (int) (height * bitmapRatio);\r\n        }\r\n        return Bitmap.createScaledBitmap(image, width, height, true);\r\n    }\r\n\r\n\r\n    \/**\r\n     * Get the URI of the selected image from {@link #getPickImageChooserIntent()}.&lt;br \/&gt;\r\n     * Will return the correct URI for camera and gallery image.\r\n     *\r\n     * @param data the returned data of the activity result\r\n     *\/\r\n    public Uri getPickImageResultUri(Intent data) {\r\n        boolean isCamera = true;\r\n        if (data != null) {\r\n            String action = data.getAction();\r\n            isCamera = action != null &amp;&amp; action.equals(MediaStore.ACTION_IMAGE_CAPTURE);\r\n        }\r\n\r\n\r\n        return isCamera ? getCaptureImageOutputUri() : data.getData();\r\n    }\r\n\r\n    @Override\r\n    protected void onSaveInstanceState(Bundle outState) {\r\n        super.onSaveInstanceState(outState);\r\n\r\n        \/\/ save file url in bundle as it will be null on scren orientation\r\n        \/\/ changes\r\n        outState.putParcelable(\"pic_uri\", picUri);\r\n    }\r\n\r\n    @Override\r\n    protected void onRestoreInstanceState(Bundle savedInstanceState) {\r\n        super.onRestoreInstanceState(savedInstanceState);\r\n\r\n        \/\/ get the file url\r\n        picUri = savedInstanceState.getParcelable(\"pic_uri\");\r\n    }\r\n\r\n    private ArrayList findUnAskedPermissions(ArrayList wanted) {\r\n        ArrayList result = new ArrayList();\r\n\r\n        for (String perm : wanted) {\r\n            if (!hasPermission(perm)) {\r\n                result.add(perm);\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    private boolean hasPermission(String permission) {\r\n        if (canMakeSmores()) {\r\n            if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) {\r\n                return (checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED);\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n\r\n    private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {\r\n        new AlertDialog.Builder(this)\r\n                .setMessage(message)\r\n                .setPositiveButton(\"OK\", okListener)\r\n                .setNegativeButton(\"Cancel\", null)\r\n                .create()\r\n                .show();\r\n    }\r\n\r\n    private boolean canMakeSmores() {\r\n        return (Build.VERSION.SDK_INT &gt; Build.VERSION_CODES.LOLLIPOP_MR1);\r\n    }\r\n\r\n    @TargetApi(Build.VERSION_CODES.M)\r\n    @Override\r\n    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {\r\n\r\n        switch (requestCode) {\r\n\r\n            case ALL_PERMISSIONS_RESULT:\r\n                for (String perms : permissionsToRequest) {\r\n                    if (hasPermission(perms)) {\r\n\r\n                    } else {\r\n\r\n                        permissionsRejected.add(perms);\r\n                    }\r\n                }\r\n\r\n                if (permissionsRejected.size() &gt; 0) {\r\n\r\n\r\n                    if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) {\r\n                        if (shouldShowRequestPermissionRationale(permissionsRejected.get(0))) {\r\n                            showMessageOKCancel(\"These permissions are mandatory for the application. Please allow access.\",\r\n                                    new DialogInterface.OnClickListener() {\r\n                                        @Override\r\n                                        public void onClick(DialogInterface dialog, int which) {\r\n                                            if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) {\r\n\r\n                                                \/\/Log.d(\"API123\", \"permisionrejected \" + permissionsRejected.size());\r\n\r\n                                                requestPermissions(permissionsRejected.toArray(new String[permissionsRejected.size()]), ALL_PERMISSIONS_RESULT);\r\n                                            }\r\n                                        }\r\n                                    });\r\n                            return;\r\n                        }\r\n                    }\r\n\r\n                }\r\n\r\n                break;\r\n        }\r\n\r\n    }\r\n}\r\n\r\n<\/code><\/pre>\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u304b\u3089\u306f\u3001\u591a\u304f\u306e\u63a8\u8ad6\u304c\u5c0e\u304b\u308c\u308b\u3002<\/p>\n<ul class=\"post-ul\">\n<li>We need to ask for the Camera runtime permissions when the user starts the activity.<\/li>\n<li>As we are starting the intent to get some result back, we need to call startActivityForResult with the relevant arguments<\/li>\n<li>Instead of using a dialog to separately call the Intents for Camera and Gallery, we\u2019ve used a method getPickImageChooserIntent() that creates a single chooser intent for all the camera and gallery intents(note the documents intent). Intent.EXTRA_INITIAL_INTENTS is used to add the multiple application intents at one place<\/li>\n<li>For the camera intent, MediaStore.EXTRA_OUTPUT is passed as an extra to specify the image storage path. Without this you\u2019ll be returned only a small resolution image.<\/li>\n<li>The URI path for the image returned by camera is fetched inside the method getCaptureImageOutputUri().<\/li>\n<li>The onActivityResult essentially returns a URI to the image. Some devices do return the bitmap as data.getExtras().get(&#8220;data&#8221;);.<\/li>\n<li>When an image is clicked, the camera screen while returning restarts the activity thereby causing the URI stored from the method getCaptureImageOutputUri() to become null. Hence it\u2019s essential that we store and restore that URI using onSaveInstanceState() and onRestoreInstanceState().<\/li>\n<li>The bitmap is retrieved from the URI in the following line of code. myBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), picUri);<\/li>\n<li>Devices like Samsung galaxy are known to capture the image in landscape orientation. Retrieving the image and displaying as it is can cause it to be displayed in the wrong orientation. Hence we\u2019ve called the method rotateImageIfRequired(myBitmap, picUri);<\/li>\n<li>ExifInterface is a class for reading and writing Exif tags in a JPEG file or a RAW image file.<\/li>\n<li>In the end we call the method getResizedBitmap() to scale the bitmap by width or height(whichever is larger) and set the image to the image view using setImageBitmap.<\/li>\n<\/ul>\n<p>\u4ee5\u4e0b\u306b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u52d5\u4f5c\u7d50\u679c\u3092\u793a\u3057\u307e\u3059\u3002\u6ce8\uff1a\u30ab\u30e1\u30e9\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3057\u3066\u8868\u793a\u3059\u308b\u306b\u306f\u3001\u5f53\u7136\u306a\u304c\u3089\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u306b\u3066\u3001\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306f\u7d42\u4e86\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30ea\u30f3\u30af\u304b\u3089\u3001\u753b\u50cf\u30ad\u30e3\u30d7\u30c1\u30e3\u306e\u305f\u3081\u306eAndroid\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>Android\u306e\u30ab\u30e1\u30e9\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001\u30ab\u30e1\u30e9\u307e\u305f\u306f\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u9078\u629e\u3057\u3001\u305d\u308c\u3092ImageView\u306b\u8868\u793a\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3057\u307e\u3059\u3002\u6ce8\u610f: \u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u306f\u3001Android Nougat\u4ee5\u524d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u307e\u3059\u3002\u6700 [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[26,61],"class_list":["post-908","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-26","tag-61"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3002 - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/ja\/blog\/android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3002\" \/>\n<meta property=\"og:description\" content=\"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/ja\/blog\/android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-04T08:07:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T18:27:08+00:00\" \/>\n<meta name=\"author\" content=\"\u685c, \u6625\u6a39\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u685c, \u6625\u6a39\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"33\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/\",\"name\":\"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3002 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\"},\"datePublished\":\"2023-06-04T08:07:39+00:00\",\"dateModified\":\"2025-07-31T18:27:08+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/ff22288af1a5455571aff7586b0fb341\"},\"description\":\"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/ja\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3002\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/ff22288af1a5455571aff7586b0fb341\",\"name\":\"\u685c, \u6625\u6a39\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cee48863f3d4fd7fef222498f3e71b82312aee42b7257a2dbde56394ca4e19de?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cee48863f3d4fd7fef222498f3e71b82312aee42b7257a2dbde56394ca4e19de?s=96&d=mm&r=g\",\"caption\":\"\u685c, \u6625\u6a39\"},\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/author\/sakuraharuki\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3002 - Blog - Silicon Cloud","description":"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/ja\/blog\/android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\/","og_locale":"ja_JP","og_type":"article","og_title":"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3002","og_description":"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","og_url":"https:\/\/www.silicloud.com\/ja\/blog\/android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-06-04T08:07:39+00:00","article_modified_time":"2025-07-31T18:27:08+00:00","author":"\u685c, \u6625\u6a39","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"\u685c, \u6625\u6a39","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"33\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/","url":"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/","name":"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3002 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website"},"datePublished":"2023-06-04T08:07:39+00:00","dateModified":"2025-07-31T18:27:08+00:00","author":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/ff22288af1a5455571aff7586b0fb341"},"description":"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/ja\/blog\/"},{"@type":"ListItem","position":2,"name":"Android\u306e\u30ab\u30e1\u30e9\u3068\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u753b\u50cf\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3059\u308b\u3002"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website","url":"https:\/\/www.silicloud.com\/ja\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/ff22288af1a5455571aff7586b0fb341","name":"\u685c, \u6625\u6a39","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cee48863f3d4fd7fef222498f3e71b82312aee42b7257a2dbde56394ca4e19de?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cee48863f3d4fd7fef222498f3e71b82312aee42b7257a2dbde56394ca4e19de?s=96&d=mm&r=g","caption":"\u685c, \u6625\u6a39"},"url":"https:\/\/www.silicloud.com\/ja\/blog\/author\/sakuraharuki\/"},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/android%e3%81%ae%e3%82%ab%e3%83%a1%e3%83%a9%e3%81%a8%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc%e3%81%8b%e3%82%89%e7%94%bb%e5%83%8f%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%83%bc\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/comments?post=908"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/908\/revisions"}],"predecessor-version":[{"id":46517,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/908\/revisions\/46517"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/media?parent=908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/categories?post=908"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/tags?post=908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}