public class CallRecord01 extends Activity {
  1. private Button beginrecordservice;
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.main);
  6. //
  7. beginrecordservice=(Button)findViewById(R.id.startrecordservice);
  8. beginrecordservice.setOnClickListener(new BeginRecord());
  9. }
  10. //
  11. private class BeginRecord implements OnClickListener{

  12. @Override
  13. public void onClick(View v) {
  14. Intent serviceIntent=new Intent(getApplicationContext(),CallRecordService.class);
  15. getApplicationContext().startService(serviceIntent);

  16. }

  17. }
  18. }
复制代码
  1. public class CallRecordService extends Service {

  2. @Override
  3. public IBinder onBind(Intent intent) {
  4. // TODO Auto-generated method stub
  5. return null;
  6. }

  7. @Override
  8. public void onCreate() {
  9. super.onCreate();
  10. Toast.makeText(getApplicationContext(), "录音服务已经创建!", Toast.LENGTH_LONG).show();
  11. }

  12. @Override
  13. public void onDestroy() {
  14. super.onDestroy();
  15. Toast.makeText(getApplicationContext(), "录音服务已经销毁!", Toast.LENGTH_LONG).show();
  16. }

  17. @Override
  18. public void onStart(Intent intent, int startId) {
  19. super.onStart(intent, startId);
  20. Toast.makeText(getApplicationContext(), "录音服务已经启动!", Toast.LENGTH_LONG).show();
  21. //
  22. TelephonyManager telephonymanager=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
  23. telephonymanager.listen(new PhoneListener(getApplicationContext()), PhoneStateListener.LISTEN_CALL_STATE);

  24. }

  25. }
复制代码
  1. public class PhoneListener extends PhoneStateListener {
  2. File audioFile;
  3. MediaRecorder mediaRecorder; //= new MediaRecorder();
  4. Context c;
  5. //
  6. boolean iscall=false;
  7. //
  8. public PhoneListener(Context context){
  9. c=context;
  10. iscall=false;
  11. }
  12. @Override
  13. public void onCallStateChanged(int state, String incomingNumber) {
  14. super.onCallStateChanged(state, incomingNumber);
  15. mediaRecorder = new MediaRecorder();
  16. switch(state){
  17. case TelephonyManager.CALL_STATE_OFFHOOK:
  18. iscall=true;
  19. try {
  20. recordCallComment();

  21. } catch (IOException e) {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. mediaRecorder.stop();
  25. }
  26. Toast.makeText(c, "正在录音", Toast.LENGTH_SHORT).show();
  27. break;
  28. case TelephonyManager.CALL_STATE_IDLE:
  29. //if(mediaRecorder!=null){
  30. //mediaRecorder.stop();
  31. //mediaRecorder=null;
  32. //}
  33. if(iscall){
  34. mediaRecorder.stop();
  35. iscall=false;
  36. }
  37. break;
  38. }
  39. }
  40. //
  41. public void recordCallComment() throws IOException{
  42. System.out.println(mediaRecorder);

  43. //这里AudioSource.MIC可以改为AudioSource.VOICE_CALL, 把音源变
  44. //电话通话内容, 但似乎很多机都不支持通话录音
  45. mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  46. mediaRecorder
  47. .setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
  48. mediaRecorder
  49. .setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
  50. audioFile = File.createTempFile("record_", ".amr");
  51. mediaRecorder.setOutputFile(audioFile.getAbsolutePath());
  52. mediaRecorder.prepare();
  53. mediaRecorder.start();
  54. }

  55. }
复制代码
From : http://www.eoeandroid.com/thread-114871-1-1.html

更多相关文章

  1. Android(安卓)中歌曲录制。。。
  2. Android(安卓)代码监控apk安装,卸载,替换
  3. Android(安卓)studio 57 MP3 音乐播放器 代码上一曲下一曲
  4. Android(安卓)BaseAdapter 例子
  5. Android(安卓)代码监控apk安装,卸载,替换
  6. android_intent
  7. Android中九种dialog对话框代码
  8. Android语音识别
  9. android 在标题栏加上按钮

随机推荐

  1. 如何去写 Android(安卓)init.rc (Android
  2. Android之Audio初探
  3. Android(安卓)的消息队列模型
  4. Android(安卓)软键盘 禁用回车功能或者换
  5. Android(安卓)-- 网络相关的系统服务启动
  6. Android(安卓)TextView加上阴影效果
  7. Android布局的一些属性和开关、创建log图
  8. Android获取摄像头详细信息
  9. Android(安卓)kernel code merged into m
  10. Android(安卓)启动过程