
故事是這樣的
這是一個再簡單不過的功能
有個頭像 > 點他 > 問你要上傳照片或拍照 > 更新頭像
但是...
安卓有些手機拍照之後角度會有點不太一樣
 
 
 
那也就算了
每個人看事情的角度本來就不一樣
那我讀取它的角度再去轉可以吧?
拿到的exif不是null就是直接例外FileNotFoundException
詳細問題連結,如果能給小弟一點提示,那就功德無量
好吧
該做的事情還是要做
我們先來把基本的功能講完
| Android | iOS | 
|---|---|
| ImageView | UIImageView | 
| Bitmap | UIImage | 

 
    public void changeAvatar(View view)
    {
        Dialog dialog = new AlertDialog.Builder(this)
            .setTitle("請選擇頭像來源")
            .setPositiveButton("相機", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE),kCameraIntentRequestCode);
                }
            })
            .setNegativeButton("相簿", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Intent intent = new Intent(Intent.ACTION_PICK);
                    intent.setType("image/*");
                    startActivityForResult(intent,kAlbumIntentRequestCode);
                }
            })
            .setNeutralButton("檔案", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                    intent.setType("*/*");
                    startActivityForResult(Intent.createChooser(intent, "Select Picture"), kFileIntentRequestCode);
                }
            })
            .create();
        dialog.show();
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode != Activity.RESULT_OK || data == null)
        {
            return;
        }
        switch (requestCode)
        {
            case kCameraIntentRequestCode:
            {
                Bitmap bitmap = (Bitmap)data.getExtras().get("data");
                imageView.setImageBitmap(bitmap);
                break;
            }
            case kAlbumIntentRequestCode:
            case kFileIntentRequestCode:
            {
                ContentResolver contentResolver = this.getContentResolver();
                try
                {
                    Bitmap bmp = MediaStore.Images.Media.getBitmap(contentResolver,data.getData());
                    imageView.setImageBitmap(bmp); imageView.setImageBitmap(rotateBitmapByDegree(bmp,getBitmapDegree(data.getData().getPath())));
                }
                catch (FileNotFoundException e)
                {
                    e.printStackTrace();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
                break;
            }
        }
    }
人家安卓模擬器連這個都幫你想好了⚠️⚠️⚠️
不只能拍
還可以移動鏡頭

補充個跟image完全沒關係的東西
 
 
 
可以去 https://github.com/mark33699/IDLA 看一下順便給顆⭐️
如果你喜歡我的影片別忘了按讚分享加訂閱,開啟紅色的小鈴鐺,我們明天見~