관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[안드로이드] 부스트코스 7단원 멀티미디어 내용요약 본문

안드로이드/자바 & Previous

[안드로이드] 부스트코스 7단원 멀티미디어 내용요약

막무가내막내 2019. 9. 3. 20:45
728x90

카메라 갤러리

카메라 앱 화면 보여주기 

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));

if (intent.resolveActivity(getPackageManager()) != null) {
  startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
}

 

 

사진 찍은 결과 보여주기

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 8;
        Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), options); 
        imageView.setImageBitmap(bitmap); 
    }
}

 

레트로핏2 통신을위한 multibodypart 사용할거면 다음과 같이 경로 넣어주면된다.

https://androidclarified.com/android-image-upload-example/

//Create a file object using file path
     File file = new File(filePath);
     // Create a request body with file and image media type
     RequestBody fileReqBody = RequestBody.create(MediaType.parse("image/*"), file);
     // Create MultipartBody.Part using file request-body,file name and part name 
     MultipartBody.Part part = MultipartBody.Part.createFormData("upload", file.getName(), fileReqBody);
     //Create request body with text description and text media type
     RequestBody description = RequestBody.create(MediaType.parse("text/plain"), "image-type");

 

 


 

미디어 플레이어

방식 크게 3가지 존재, 음악 파일을 재생하기 위해서는 먼저 MediaPlayer 객체를 만들고 대상 파일을 setDataSource 메소드로 지정해야한다. 

 

1. 인터넷에 있는 파일 위치 지정

String url = "http://techtown.org/download/a.mp3";

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(url);

2. 프로젝트 파일에 포함한 후 위치 지정(es/raw 폴더에 a.mp3 라는 이름으로 음악 파일을 넣어두었다면)

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.a);

3. 단말 SD카드에 넣은 후 위치 지정(단말 SD 카드에 넣어둔 파일의 폴더 위치가 /sdcard/a.mp3라면)

String filepath = "/sdcard/a.mp3";

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(filepath);

 

이렇게 지정을 한 후 재생은 다음과 같이 하면된다.

mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.start();

 

참고 : 

MediaPlayer 객체는 수명주기(LifeCycle)을 가지고 있으며 수명주기에 따라 상태가 달라집니다.

예를 들어, 초기화된 상태(Initialized), 준비된 상태(Prepared), 시작된 상태(Started), 중지된 상태(Stopped) 등이 있습니다.

MediaPlayer의 수명주기 상태에 대해 더 알고 싶다면 아래 링크를 참조하세요.

MediaPlayer의 수명주기(LifeCycle)

 

 

 

 

 


 

동영상 재생 

동영상을 위한 뷰

<VideoView
    android:id="@+id/videoView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

 

동영상 재생

videoView = (VideoView) findViewById(R.id.videoView);

//MediaController 객체를 만든 후 VideoView 객체에 설정합니다
MediaController mc = new MediaController(this);
videoView.setMediaController(mc);

//동영상 파일이 있는 위치가 VIDEO_URL이라는 이름의 상수에 지정되어 있다면
//setVideoURI 메소드를 호출하여 동영상 파일의 위치를 지정할 수 있습니다
videoView.setVideoURI(Uri.parse(VIDEO_URL));
videoView.requestFocus();

 

 


 

음성녹음

마이크로 입력되는 음성을 녹음할 때는 미디어리코더(MediaRecorder) 객체가 사용된다.

시작하기 앞서 권한 필요

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

다음과 같은 단계로 실행

  1. 미디어리코더 객체 생성
  2. 오디오 입력 및 출력 형식 설정
  3. 오디오 인코더와 파일 지정
  4. 녹음 시작
if (recorder == null) {
    recorder = new MediaRecorder();
}
//오디오 입력을 설정할 때 사용되는데 여기에서는 마이크를 이용해 입력을 받으므로 
//MediaRecorder.AudioSource.MIC 상수로 설정
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

//미디어 포맷은 MediaRecoder.OutputFormat.MPEG_4 상수를 이용하여 MPEG4 포맷으로 지정
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

//인코더를 설정하는 데 사용되며, 디폴트 인코더를 사용하도록 지정
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 

//결과물 파일을 설정하는데 사용되며 미리 정의한 RECORDED_FILE 상수를 이용해 지정
recorder.setOutputFile(RECORDED_FILE);

try {
	//음을 위해 필요한 정보를 모두 설정하고 나면 두 개의 메소드, prepare()와 start()를 이용해 녹음을 시작
    recorder.prepare();
    recorder.start();
} catch (Exception ex) {
    Log.e("SampleAudioRecorder", "Exception : ", ex);
}

 

 

-녹음한 파일 저장

녹음을 끝내면 SD 카드에 저장할 수도 있고 단말의 저장소에 저장할 수도 있다.

내용 제공자를 이용해 저장하면 음성 파일을 저장할 때 사용하는 기본적인 사항들을 같이 설정할 수 있다.

ContentValues values = new ContentValues(10);
values.put(MediaStore.MediaColumns.TITLE, "Recorded");
values.put(MediaStore.Audio.Media.ALBUM, "Audio Album");
values.put(MediaStore.Audio.Media.ARTIST, "Mike");
values.put(MediaStore.Audio.Media.DISPLAY_NAME, "Recorded Audio");
values.put(MediaStore.Audio.Media.IS_RINGTONE, 1);
values.put(MediaStore.Audio.Media.IS_MUSIC, 1);
values.put(MediaStore.MediaColumns.DATE_ADDED, System.currentTimeMillis()/1000);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp4");
values.put(MediaStore.Audio.Media.DATA, RECORDED_FILE);

Uri audioUri = getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values);

내용 제공자에 새로운 값을 추가하기 위해 ContentValues 객체에 필요한 정보를 put() 메소드로 넣은 후 insert() 메소드를 이용해 이 객체를 추가한다.

 

MIME_TYPE은 미디어파일포맷 의미

DATA는 녹음파일을 의미, 녹음파일 이름을 설정해주면 된다.

 

 

 

이상 멀티미디어 요약 정리를 마치겠습니다.

출처:https://www.edwith.org/boostcourse-android/joinLectures/13172

 

[부스트코스] 안드로이드 프로그래밍 강좌소개 : edwith

- 부스트코스

www.edwith.org

 

728x90
Comments