Skip to content

Instantly share code, notes, and snippets.

Created February 14, 2012 19:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save anonymous/1829663 to your computer and use it in GitHub Desktop.
Save anonymous/1829663 to your computer and use it in GitHub Desktop.
recording call
package android.testcall;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.testcall.R;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.testcall.FileTraceListener;
public class TestCallActivity extends Activity {
public static final String REPOSITORY = Environment.getExternalStorageDirectory().toString();
private Handler mHandler;
private TelephonyManager _CurrTelephonyManager;
private PhoneStateListener phoneListener;
private FileTraceListener _fileTrace;
private MediaRecorder recorder;
private EditText phoneNumber;
private String _logFileName;
private boolean llamada;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testcallactivity);
this._fileTrace = new FileTraceListener();
try {
_CurrTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String DATE_FORMAT = "yyyyMMddhhmm";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
Calendar c1 = Calendar.getInstance(); // today
File myNewFolder = new File(REPOSITORY + "/logs/");
if (!myNewFolder.exists())
myNewFolder.mkdirs();
_logFileName = "/calldate" + sdf.format(c1.getTime()) + ".log";
_fileTrace.open(myNewFolder.toString() + _logFileName);
recorder = new MediaRecorder();
} catch (Exception exc) {
exc.printStackTrace();
_fileTrace.close();
_fileTrace = null;
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
setContentView(R.layout.testcallactivity);
phoneNumber = (EditText) findViewById(R.id.EtPhoneNumber);
phoneListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
if (llamada) {
_fileTrace.onTrace("INFO", "CallState: ", "CALL_STATE_IDLE", null);
recorder.stop();
recorder.release();
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
llamada = true;
_fileTrace.onTrace("INFO", "Recording Start",
"CALL_STATE_OFFHOOK", null);
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(REPOSITORY + "/calls/audio.3gp");
recorder.setMaxDuration(120000);
try {
recorder.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mHandler = new Handler();
mHandler.postDelayed(stopRecord, 20000);
recorder.start();
break;
case TelephonyManager.CALL_STATE_RINGING:
if (llamada) {
_fileTrace.onTrace("INFO", "CallState: ", "CALL_STATE_RINGING", null);
recorder.stop();
recorder.release();
}
break;
}
}
};
_CurrTelephonyManager.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);
final Button btCall = (Button) findViewById(R.id.BtCallNumber);
btCall.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
_fileTrace.onTrace("DEBUG", btCall, "Press Button ", null);
Intent intent = new Intent(Intent.ACTION_CALL);
String uri = "tel:" + phoneNumber.getText().toString().trim();
intent.setData(Uri.parse(uri));
startActivity(intent);
_fileTrace.onTrace("INFO", "Call Number: ", phoneNumber
.getText().toString(), null);
}
});
final Button btClose = (Button) findViewById(R.id.BtClose);
btClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
_fileTrace.onTrace("DEBUG", btClose, "Press Button ", null);
_fileTrace.onTrace("INFO", "Close Program", null, null);
_fileTrace.close();
finish();
}
});
}
private Runnable stopRecord = new Runnable() {
public void run() {
_fileTrace.onTrace("INFO", "CallState: ", "CALL_STATE_RINGING", null);
recorder.stop();
recorder.release();
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment