설.현.아빠
Chapter 3 - 2 ] MP3 음악 파일의 재생 기능 추가. 본문
이거이거 초반 부터 너무 달리는거 아냐..이 책은 좀...안드로이드를 1~2달 정도 접해본 사람이 봐야할 책같다.
개인적으로는 알짜만 골라 배우는 안드로이드 프로그래밍 2가 초보자를 위해서는 좋은듯..^^(기초부터 차근차근..)
안드로이드의 매체 재생 기능들은 android.media Package의 MediaPlayer Class가 제공한다.
자바는 참 제공을 많이해줘...내가 알던 C랑은 많이 달라. 친절해서 고맙지만 때론 그 친절함이 내 발목을 잡지...
제공 하면 멀하나...어떻게 쓰는지를 모르는데..
먼저 주요 메소드들을 알아 보자.
MediaPlayer.create() - 주어진 대상을 재생할 새 매체 재생기를 생성한다.
MediaPlayer.start() - 시작
MediaPlayer.stop() - 멈춤
MediaPlayer.release() - 매체 재생기의 자원들을 해제.
Uri.parse() - 적절히 서식화된 URI 주소로부터 Uri 객체를 인스턴스화한다..(이건 머..아무때나 막나오는구만..)
<?xml version="1.0" encoding="utf-8"?>
<!-- AndroidManifest.xml -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.MyFirstAndroidApp"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name"android:debuggable="true">
<activity android:name=".MyFirstAndroidApp"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity></application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
package com.android.MyFirstAndroidApp;
import android.app.Activity;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;public class MyFirstAndroidApp extends Activity {
private MediaPlayer mp3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
playMusicFromSDcard();
}// Uri객체와 MediaPlayer객체를 생성하고, MP3를 재생한다.
public void playMusicFromSDcard() {
try {
Uri file = Uri.parse("file:///sdcard/our_last_summer_small.mp3");
mp3 = MediaPlayer.create(this, file);
mp3.start();
} catch (Exception e) {
Log.d("Log","player failed",e);
} {
}
}// 깔끔하게 종료시키기 위해 onStop()구현.
@Override
protected void onStop() {
if(mp3!=null) {
mp3.stop();
mp3.release();
}
super.onStop();
}
}
이런 사기꾼들..인터넷 접속하면서 permission설정도 안하고 하는구나~
초보자들은 그냥 안되는구나...하고 넘어가잖아~
그리고! 달랑 이게 끝은 아니겠지? 뒤에 Chapter로 넘어가다 보면 또 나오겠지? 설마 이렇게 시시하게 끝내나..
어째든
알아두기 1 :
단말의 sdcard에 저장된 mp3파일 재생할때는 file:/// 3개..3개..혹시나 하고 2개 넣었더니 안된다...^^
알아두기 2 :
웹상에 존재하는 파일 플레이 방법
Uri file = Uri.parse(http://www.abcd.com/music/abc.mp3);
패키지의 assets/audio/abc.mp3플레이
AssetFileDescriptor file = getAssets().openFd("autio/abc.mp3");
MediaPlayer mp3 = new MediaPlayer();
mp3.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength());
file.close();
mp3.start();
이건 .... 안되네..file.getFileDescriptor()를 통해 파일 정보나 file.getLength()를 통해서 파일 크기는 다 정상적으로 읽히지만..
정작 음악은 안나온다는...ㅠㅠ안해!
패키지의 res/raw/oh.mp3플레이
MediaPlayer mp3 = MediaPlayer.create(context, R.raw.abc);
mp3.start();
ㅋㅋ 이건 잘된다~~
패키지의 res/raw/oh.mp4플레이
Uri Upath = Uri.parse("android.resource://패키지명/" + R.raw.mp4file);
VideoView videoview = (VideoView)findViewById(R.id.videoView);
MediaController mc = new MediaController(this);mc.setMediaPlayer(videoview);
videoview.setVideoURI(Upath);
videoview.setMediaController(mc);
videoview.start();
파일시스템의 /data/abc.mp3 플레이
MediaPlayer mp3 = new MediaPlayer();
mp3.setDataSource("/data/abc.mp3");
mp3.start();
또 뻥치네..[2010-12-10 17:34:58] Failed to push selection: Permission denied
파일시스템에 data에 파일 어떻게 넣지..요건..쫌..Critical 할 수도 있으니까. PASS!!
알아두기 3 : mp4 플레이
VideoView videoview = (VideoView)findViewById(R.id.daumroadviewVideoView);
MediaController mc = new MediaController(this);
mc.setMediaPlayer(videoview);
videoview.setVideoPath("/data/KensCafe_2.mp4");
videoview.setMediaController(mc);
videoview.start();물론 Emulator로 돌렸을때 정상동작 확인했다..실제 폰에서는 아직 미확인!! Emulator 느려터져쓰~
'교재 & 강좌 > 시작하세요! 안드로이드 프로그래밍' 카테고리의 다른 글
Chapter 4 - 1 ] 단순 자원값 설정하기. (0) | 2011.02.11 |
---|---|
Chapter 3 - 3 ] 전화기의 최근 위치 찾기. (0) | 2011.02.11 |
Chapter 3 - 1 ] throw , throws 이해하기. (0) | 2011.02.11 |