안드로이드를 통해 터미널 내 이미지 가져오기

9492 단어 Android

컨텐트


터미널 내의 그림을 가져오려면 단추를 누르십시오.
이미지를 완성하다.

Layout


이미지 선택 버튼과 가져온 이미지를 표시할 ImageView를 준비합니다.
activty_main.xml
    <Button
        android:id="@+id/button2"
        android:text="get image"
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/image_view"
        android:scaleType="fitStart"
        android:adjustViewBounds="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

Activity


버튼을 눌렀을 때 문서를 열 수 있는 텐트를 만들고 이미지 폴더의 읽기를 설정합니다.
결과 이미지를 가져오려면 startActivityForesult에서 시작합니다.
두 번째 매개변수에 ID를 추가합니다.(반환 시 판정에 사용)
MainActivity.java(1)
public class MainActivity extends AppCompatActivity {
    private static final int RESULT_PICK_IMAGEFILE = 1000;
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        imageView = (ImageView)findViewById(R.id.image_view);

        findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                intent.addCategory(Intent.CATEGORY_OPENABLE);
                intent.setType("image/*");
                startActivityForResult(intent, RESULT_PICK_IMAGEFILE);
            }
        });

    }
startActivityForesult 종료 후 onActivityResult가 호출됨
결과 코드, 호출 시 ID, 결과를 전달합니다.
결과 코드(resultCode)에 정상 종료 [RESULT OK], 취소 [RESULT CANCELED] 포함
호출 시 ID에는 startActivityForResult의 두 번째 매개변수가 포함되어 있습니다.
내용에 이미지 경로가 포함되어 있습니다.
이미지 경로에서 Bitmap을 생성하여 Layout의 ImageView에 설정합니다.
MainActivity.java(2)
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
        if (requestCode == RESULT_PICK_IMAGEFILE && resultCode == RESULT_OK) {
            Uri uri = null;
            if (resultData != null) {
                uri = resultData.getData();

                try {
                    Bitmap bmp = getBitmapFromUri(uri);
                    imageView.setImageBitmap(bmp);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    private Bitmap getBitmapFromUri(Uri uri) throws IOException {
        ParcelFileDescriptor parcelFileDescriptor =
                getContentResolver().openFileDescriptor(uri, "r");
        FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
        Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
        parcelFileDescriptor.close();
        return image;
    }

}

참고 자료


· 스토리지 액세스 프레임워크
https://developer.android.com/guide/topics/providers/document-provider.html?hl=ja
・이벤트 결과 얻기
https://developer.android.com/training/basics/intents/result.html?hl=ja

좋은 웹페이지 즐겨찾기