电话录音示范源代码


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

  13.                 @Override
  14.                 public void onClick(View v) {
  15.                         Intent serviceIntent=new Intent(getApplicationContext(),CallRecordService.class);
  16.                         getApplicationContext().startService(serviceIntent);
  17.                         
  18.                 }
  19.             
  20.     }
  21. }
复制代码
  1. public class CallRecordService extends Service {
  2.         
  3.         @Override
  4.         public IBinder onBind(Intent intent) {
  5.                 // TODO Auto-generated method stub
  6.                 return null;
  7.         }

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

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

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

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

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

你可能感兴趣的:(电话录音示范源代码)