일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Fragment
- 막내의막무가내 SQL
- 부스트코스에이스
- 막내의막무가내 안드로이드
- 막내의막무가내 알고리즘
- flutter network call
- 막내의 막무가내 알고리즘
- 막내의막무가내 코볼 COBOL
- 프래그먼트
- 막내의막무가내 프로그래밍
- 막내의막무가내 일상
- 막내의막무가내 코틀린
- 막내의막무가내 rxjava
- 막내의막무가내 플러터 flutter
- 막내의막무가내 플러터
- 막내의막무가내 안드로이드 에러 해결
- 주엽역 생활맥주
- 막내의막무가내 목표 및 회고
- 주택가 잠실새내
- 안드로이드 sunflower
- 안드로이드
- 막내의막무가내 안드로이드 코틀린
- 막내의막무가내
- 2022년 6월 일상
- 막내의 막무가내
- 부스트코스
- 안드로이드 Sunflower 스터디
- 막내의막무가내 코틀린 안드로이드
- 프로그래머스 알고리즘
- 막무가내
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[안드로이드] 부스트코스 7단원 멀티미디어 내용요약 본문
카메라 갤러리
카메라 앱 화면 보여주기
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의 수명주기 상태에 대해 더 알고 싶다면 아래 링크를 참조하세요.
동영상 재생
동영상을 위한 뷰
<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" />
다음과 같은 단계로 실행
- 미디어리코더 객체 생성
- 오디오 입력 및 출력 형식 설정
- 오디오 인코더와 파일 지정
- 녹음 시작
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
'안드로이드 > 자바 & Previous' 카테고리의 다른 글
[안드로이드] 서버 소켓 프로그래밍 (채팅) (0) | 2019.12.18 |
---|---|
[안드로이드] Retrofit2 @Body @Field 차이 (5) | 2019.11.07 |
[안드로이드] Room 데이터베이스 (14) | 2019.08.25 |
[안드로이드] Parcelabe vs Serializable 성능차이 (0) | 2019.08.14 |
[안드로이드] 특정 텍스트 복사 ClipboardManager (0) | 2019.08.13 |