/**
* Copyright (c) 2012 Vinayak Solutions Private Limited
* See the file license.txt for copying permission.
*/
package com.vinsol.expensetracker.show;
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.vinsol.expensetracker.Constants;
import com.vinsol.expensetracker.R;
import com.vinsol.expensetracker.entry.Voice;
import com.vinsol.expensetracker.helpers.AudioPlay;
import com.vinsol.expensetracker.helpers.FavoriteHelper;
import com.vinsol.expensetracker.utils.DisplayTimeForChronometer;
import com.vinsol.expensetracker.utils.Log;
import com.vinsol.expensetracker.utils.MyCountDownTimer;
public class ShowVoice extends ShowAbstract {
private RelativeLayout showVoiceDetails;
private Button showPlayButton;
private Button showStopButton;
private Chronometer showTimeDetailsChronometer;
private MyCountDownTimer countDownTimer;
private AudioPlay mAudioPlay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
showVoiceDetails = (RelativeLayout) findViewById(R.id.show_voice_details);
showPlayButton = (Button) findViewById(R.id.show_play_button);
showStopButton = (Button) findViewById(R.id.show_stop_button);
showTimeDetailsChronometer = (Chronometer) findViewById(R.id.show_time_details_chronometer);
typeOfEntry = R.string.voice;
typeOfEntryFinished = R.string.finished_voiceentry;
typeOfEntryUnfinished = R.string.unfinished_voiceentry;
showHelper();
showPlayButton.setOnClickListener(this);
showStopButton.setOnClickListener(this);
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
updateUI();
if (intentExtras.containsKey(Constants.KEY_ENTRY_LIST_EXTRA)) {
File tempFile = fileHelper.getAudioFileEntry(mShowList.id);
if (tempFile.canRead()) {
mAudioPlay = new AudioPlay(mShowList.id, this, false);
showStopButton.setVisibility(View.GONE);
showPlayButton.setVisibility(View.VISIBLE);
showTimeDetailsChronometer.setText(new DisplayTimeForChronometer().getDisplayTime(mAudioPlay.getPlayBackTime()));
} else {
showTimeDetailsChronometer.setText("Audio File Missing");
showTimeDetailsChronometer.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
showStopButton.setVisibility(View.GONE);
showPlayButton.setVisibility(View.GONE);
}
mFavoriteHelper = new FavoriteHelper(this,mDatabaseAdapter,fileHelper,mShowList);
}
} else {
Toast.makeText(this, "sdcard not available", Toast.LENGTH_LONG).show();
}
}
private void updateUI() {
// //// ****** Shows Voice Details ********////////
showVoiceDetails.setVisibility(View.VISIBLE);
}
@Override
protected void deleteFile() {
// /// ******* If Audio PlayBack is there stop playing audio*******//////
try {
if (mAudioPlay.isAudioPlaying()) {
mAudioPlay.stopPlayBack();
}
} catch (NullPointerException e) {
}
showTimeDetailsChronometer.stop();
fileHelper.deleteAllEntryFiles(mShowList.id);
}
@Override
protected void editAction() {
Intent editIntent = new Intent(this, Voice.class);
try {
if (mAudioPlay.isAudioPlaying())
mAudioPlay.stopPlayBack();
} catch (Exception e) {
}
editIntent.putExtras(intentExtras);
startActivityForResult(editIntent, SHOW_RESULT);
}
@Override
public void onClick(View v) {
super.onClick(v);
switch (v.getId()) {
case R.id.show_play_button:
// //// ******** to handle playback of recorded file *********
// ////////
mAudioPlay = new AudioPlay(mShowList.id, this, false);
// ///// ******* Chronometer Starts Countdown ****** ///////
countDownTimer = new MyCountDownTimer(mAudioPlay.getPlayBackTime(), 1000, showTimeDetailsChronometer, showStopButton ,showPlayButton, mAudioPlay);
// //// ****** Handles UI items on button click ****** ///////
showPlayButton.setVisibility(View.GONE);
showStopButton.setVisibility(View.VISIBLE);
///// ******** Start Audio Playback and counter to play audio
// ****** ///////
if (!mAudioPlay.isAudioPlaying()) {
mAudioPlay.startPlayBack();
} else {
mAudioPlay.stopPlayBack();
mAudioPlay.startPlayBack();
}
countDownTimer.start();
break;
case R.id.show_stop_button:
if(countDownTimer != null) {countDownTimer.cancel();}
////// ****** Handles UI items on button click ****** ///////
showStopButton.setVisibility(View.GONE);
showPlayButton.setVisibility(View.VISIBLE);
////// ******* Stop Recording Audio and stop chronometer ********
//////////
showTimeDetailsChronometer.stop();
if (mAudioPlay != null && mAudioPlay.isAudioPlaying()) {mAudioPlay.stopPlayBack();}
showTimeDetailsChronometer.setText(new DisplayTimeForChronometer().getDisplayTime(mAudioPlay.getPlayBackTime()));
break;
default:
break;
}
}
@Override
protected void onPause() {
////// ***** Check whether audio is recording or not ******* ///////
////// ****** If audio recording started then stop recording audio ***** ///////
try {
countDownTimer.cancel();
} catch (NullPointerException e) {
}
try {
if (mAudioPlay.isAudioPlaying())
mAudioPlay.stopPlayBack();
} catch (Exception e) {
Log.d("Audio Play Stop");
}
super.onPause();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(SHOW_RESULT == requestCode) {
intentExtras = data.getExtras();
if (Activity.RESULT_OK == resultCode) {
doTaskOnActivityResult();
showDelete.setOnClickListener(this);
showPlayButton.setOnClickListener(this);
showStopButton.setOnClickListener(this);
showEdit.setOnClickListener(this);
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
updateUI();
if (intentExtras.containsKey(Constants.KEY_ENTRY_LIST_EXTRA)) {
File tempFile = fileHelper.getAudioFileEntry(mShowList.id);
if (tempFile.canRead()) {
mAudioPlay = new AudioPlay(mShowList.id, this, false);
showStopButton.setVisibility(View.GONE);
showPlayButton.setVisibility(View.VISIBLE);
showTimeDetailsChronometer.setText(new DisplayTimeForChronometer().getDisplayTime(mAudioPlay.getPlayBackTime()));
} else {
showTimeDetailsChronometer.setText("Audio File Missing");
showStopButton.setVisibility(View.GONE);
showPlayButton.setVisibility(View.GONE);
}
mShowList = intentExtras.getParcelable(Constants.KEY_ENTRY_LIST_EXTRA);
mFavoriteHelper = new FavoriteHelper(this,mDatabaseAdapter,fileHelper,mShowList);
}
} else {
Toast.makeText(this, "sdcard not available", Toast.LENGTH_LONG).show();
}
}
if(resultCode == Activity.RESULT_CANCELED) {
finish();
}
}
}
}