Android应用开发:电话监听和录音代码示例

2019-12-10 20:06:31于丽
易采站长站为您分析Android应用开发中电话监听和电话录音的代码实例,同时附录了一个拍照、录像的例子,需要的朋友可以参考下    

在oncreate 中执行:

复制代码
public void onCreate() {
  super.onCreate();
  Log.i("TAG", "服务启动了");

 

  // 对电话的来电状态进行监听
  TelephonyManager telManager = (TelephonyManager) this
    .getSystemService(Context.TELEPHONY_SERVICE);
  // 注册一个监听器对电话状态进行监听
  telManager.listen(new MyPhoneStateListener(),
    PhoneStateListener.LISTEN_CALL_STATE);
}


实现MyPhoneStateListener:
复制代码
private class MyPhoneStateListener extends PhoneStateListener {
  MediaRecorder recorder;
  File audioFile;
  String phoneNumber;

 

  public void onCallStateChanged(int state, String incomingNumber) {
   switch (state) {
   case TelephonyManager.CALL_STATE_IDLE: /* 无任何状态时 */
    if (recorder != null) {
     recorder.stop(); //停止刻录
     recorder.reset(); //重设
     recorder.release(); //刻录完成一定要释放资源
    }
    break;
   case TelephonyManager.CALL_STATE_OFFHOOK: /* 接起电话时 */

    try {
     recorder = new MediaRecorder();
     recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 设置音频采集原
     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //内容输出格式
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //音频编码方式

     // recorder.setOutputFile("/sdcard/myvoice.amr");
     audioFile = new File(
       Environment.getExternalStorageDirectory(),
       phoneNumber + "_" + System.currentTimeMillis()
         + ".3gp");
     recorder.setOutputFile(audioFile.getAbsolutePath());
     Log.i("TAG", audioFile.getAbsolutePath());