Programming/Android

android media play

Min 2017. 5. 12. 11:14
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");
}
});
}