public class MediaController {
private MediaPlayer mediaPlayer;
private MediaRecorder mediaRecorder;
Context context;
WifiManager.WifiLock wifiLock;
private static MediaController instance;
public static synchronized MediaController getInstance(Context context)
{
if (instance == null)
instance = new MediaController(context);
return instance;
}
public void setMediaPlayer(MediaPlayer mediaPlayer){
this.mediaPlayer = mediaPlayer;
}
private MediaController(Context context) {
this.context=context;
}
public MediaPlayer getMediaPlayer(){
return mediaPlayer;
}
public void prepareToPlay(String source , MediaPlayer.OnPreparedListener onPreparedListener , OnFinishCallbacks callbacks){
try {
if(mediaPlayer!=null) {
stopPlaying();
mediaPlayer = null;
}
if(mediaPlayer == null)
mediaPlayer = new MediaPlayer();
// wifiLock = ((WifiManager) context.getSystemService(Context.WIFI_SERVICE))
// .createWifiLock(WifiManager.WIFI_MODE_FULL, "mylock");
// wifiLock.acquire();
mediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Logger.log("Media play is complete!!");
// stopPlaying();
if(callbacks!=null)
callbacks.onSuccessed();
}
});
Logger.log("#76 play source ->" + source);
mediaPlayer.setDataSource(source);
mediaPlayer.setOnPreparedListener(onPreparedListener);
mediaPlayer.prepareAsync(); // might take long! (for buffering, etc)
} catch (IOException e) {
e.printStackTrace();
}
}
public void play(){
if(mediaPlayer!=null) {
Logger.log("#1290 mediaPlay play~");
mediaPlayer.start();
}
}
public int pause(){
if(mediaPlayer!=null){
mediaPlayer.pause();
int currentPos = mediaPlayer.getCurrentPosition();
Logger.log("#1290 mediaPlay pause ~ " + currentPos);
return currentPos;
}
return 0;
}
public int getDuration(){
if(mediaPlayer!=null)
return mediaPlayer.getDuration();
return 0;
}
public void resume(int length){
if(mediaPlayer!=null){
Logger.log("#1290 mediaPlay resume ~" + length);
mediaPlayer.seekTo(length);
mediaPlayer.start();
}
}
public void stopPlaying(){
if (mediaPlayer!=null && mediaPlayer.isPlaying()){
Logger.log("#1290 mediaPlay stopPlaying ~");
mediaPlayer.stop();
// mediaPlayer.release();
// wifiLock.release();
// wifiLock = null;
}
}
public void release(){
if(mediaPlayer != null){
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
}
}
public boolean isPlaying(){
if(mediaPlayer!=null){
return mediaPlayer.isPlaying();
}
return false;
}
public void stopRecording(){
if (mediaRecorder!=null){
try{
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
mediaRecorder = null;
playAlartToStopRecording();
}catch (Exception ex){
ex.printStackTrace();
}finally {
}
}
}
public void recordStart(){
if (mediaRecorder!=null){
mediaRecorder.release();
mediaRecorder = null;
}
playAlartToStartRecording();
mediaRecorder = new MediaRecorder();
//녹음 시작
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setAudioSamplingRate(Variable._SAMPLING_RATE);
mediaRecorder.setAudioEncodingBitRate(Variable._ENCODING_BIT_RATE);
mediaRecorder.setAudioChannels(Variable._CHANEL);
mediaRecorder.setOutputFile(Common.RECORDED_FILE);
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean isRecording(){
return mediaRecorder != null;
}
public void playAlartToStartRecording(){
final MediaPlayer mp = MediaPlayer.create(context, R.raw.record_on);
if(mp == null)
return;
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
}
});
}
public void playAlartToStopRecording(){
final MediaPlayer mp = MediaPlayer.create(context, R.raw.record_off);
if(mp == null)
return;
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
}
});
}
}
MediaController mediaController;mediaController = MediaController.getInstance(GlobalApplication.get(chatRoomLeftFragView.getContext()));
public void startPlay() {
if(mediaController == null){
mediaController = MediaController.getInstance(GlobalApplication.get(chatRoomLeftFragView.getContext()));
}
Logger.log("#voice check-->"+chatData.getVoice());
MediaPlayer.OnPreparedListener onPreparedListener = new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaController.setMediaPlayer(mp);
mediaController.play();
}
};
mediaController.prepareToPlay(chatData.getVoice(), onPreparedListener, new OnFinishCallbacks() {
@Override
public void onSuccessed() {
Logger.log("#1633 #8888 onSuccessed playing sound");
}
@Override
public void onFailed() {
Logger.log("#1633 #999 onSuccessed canceling Playing sound");
}
});
}
'Programming > Android' 카테고리의 다른 글
android 디바이스 화면 크기 구하기 (0) | 2017.06.23 |
---|---|
android Fragment에서 Activity 메소드 사용하기 (0) | 2017.05.26 |
android Dialog 이미지 그대로 넣기 (0) | 2017.04.06 |
android SharedPreferences (0) | 2017.03.29 |
안드로이드 WebView Progressbar (0) | 2017.03.16 |