1.写一个监听来电消息的服务类, 监听电话、录音、保存录音结果
import java.io.File;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Environment;
import android.os.IBinder;
import android.os.Vibrator;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.widget.Toast;
public class PhoneService extends Service{
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(new PhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);
}
private final class PhoneListener extends PhoneStateListener{
private MediaRecorder mediaRecorder;
private File file;
private Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
@Override
public void onCallStateChanged(int state, String incomingNumber) {
try {
switch (state){
case TelephonyManager.CALL_STATE_RINGING: //来电
Toast.makeText(getApplicationContext(), "来电", Toast.LENGTH_SHORT).show();
break;
case TelephonyManager.CALL_STATE_OFFHOOK: //接通电话
file = new File(Environment.getExternalStorageDirectory(), incomingNumber + System.currentTimeMillis() + ".3gp");
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile(file.getAbsolutePath());
mediaRecorder.prepare();
mediaRecorder.start();
Toast.makeText(getApplicationContext(), "电话已接通,开始录音。", Toast.LENGTH_SHORT).show();
//震动一下
vibrator.vibrate(200);
break;
case TelephonyManager.CALL_STATE_IDLE: //挂断电话
if (mediaRecorder != null){
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
Toast.makeText(getApplicationContext(), "电话已挂断,录音停止。", Toast.LENGTH_SHORT).show();
//震动一下
vibrator.vibrate(200);
}
break;
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
2.在manifest里面设置权限
<!-- 读取电话状态权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- SD卡读写权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 录音权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!-- 震动权限 -->
<uses-permission android:name="android.permission.VIBRATE"/>
3.开启监听服务
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class XNMainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Intent tmpIntent = new Intent(this, PhoneService.class);
startService(tmpIntent);
finish();
}
}
分享到:
相关推荐
在“android电话录音源代码”中,我们主要关注以下几个关键知识点: 1. **权限申请**: 在Android中,录音功能需要申请`RECORD_AUDIO`权限。在Android 6.0(API级别23)及以上版本,应用需要在运行时请求此权限,...
"android电话录音软件源码" 提供了一种实现这一功能的解决方案,允许用户在通话过程中录制声音,并将录音文件存储在本地或者上传至远程服务器。 首先,我们来看一下核心知识点: 1. **权限管理**:在Android系统中...
在Android平台上,开发一个电话录音机程序涉及到多个关键知识点,包括权限管理...通过以上技术,你可以构建一个功能完备的Android电话录音机程序。在开发过程中,注意遵循最佳实践,优化性能,同时确保用户隐私和安全。
这里我们主要探讨的是一款简单的Android电话录音软件的源码,这将涉及到以下几个关键知识点: 1. **权限管理**:在Android中,录音功能需要获取`RECORD_AUDIO`权限。在Android 6.0及以上版本,还需要在运行时请求...
本文将深入探讨Android电话录音的问题,并详细分析其背后的技术原理。 首先,让我们了解一下Android录音的基本流程。在Android中,录音操作通常通过`MediaRecorder`类来实现。在创建`MediaRecorder`实例后,我们...
关于android电话录音问题的详细分析.pdf
在Android平台上实现通话录音功能是一项技术挑战,但也是许多应用程序开发者需要掌握的关键技能。这篇文章将深入探讨如何在Android系统中实现实时通话录音,并提供相关的源码参考。 首先,了解Android权限管理至关...
在实现电话录音功能时,务必确保用户已授予录音权限(`Manifest.permission.RECORD_AUDIO`),并且在 Android 6.0 及以上版本需要在运行时请求权限。此外,某些设备可能不允许应用在后台录音,所以最好在用户知情的...
在Android平台上,`Service`组件是开发者用于实现长时间运行任务的核心工具,比如在后台执行音频录制,例如电话录音。在本项目"android_service_电话录音"中,开发者利用了`Service`来实现在通话过程中录制音频,这...
在Android平台上开发录音应用程序是一项常见的任务,涉及到多媒体处理和设备硬件的交互。下面将详细解析“Android录音程序源码”的核心知识点。 1. **MediaRecorder类**:Android系统提供了`MediaRecorder`类来处理...
项目中实现了两种通话录音, 调用系统的拨号功能,检测...方式二:SIP软电话,集成linphone框架的VoIP网络电话,实现网络通话并录音, 项目详解连接:https://blog.csdn.net/m13984458297/article/details/127534688
在Android平台上开发通话录音软件是一项常见的移动应用开发任务,这类软件能够帮助用户记录他们的电话对话和语音留言,确保重要信息的留存和回顾。为了实现这一功能,开发者通常需要利用Android提供的API和权限管理...
在Android平台上实现通话双向录音是一项技术挑战,因为涉及到系统权限、音频流的处理以及与通话服务的交互。本文将深入探讨如何在Android设备上实现这一功能,并提供相关的知识点。 首先,我们要了解Android的权限...
综上所述,【安卓通话录音源码】是一个涵盖了Android权限管理、电话状态监听、音频录制、文件操作和异常处理等多个核心概念的项目,对于希望深入理解Android通话录音机制的开发者来说,这是一个很好的学习材料。...
工程编码:GBK 调通需要设置 RecordDialog类中的参数--- 服务器上传地址 uploadServerUrl ...RecordDialog 录音对话框 RecordManger 录音功能类 TalkNetManager 网络会话对话框 UploadUtil 文件上传工具类
在Android平台上,开发电话和...综上所述,实现"android电话、短信黑白名单拦截、电话录音"涉及多个Android核心组件和API的使用。理解并熟练掌握这些知识点,将使你能够开发出高效且用户体验良好的电话和短信管理应用。
在Android平台上实现通话录音是一项...综上所述,实现Android通话录音涉及了`AudioRecord`的使用、权限管理、电话状态监听、文件操作以及播放录音等多个方面,需要开发者具备扎实的Android开发基础和良好的编程实践。
在标题"android 暂停录音,继续录音"中提到的功能,实际上涉及到的是对`MediaRecorder`的暂停和恢复操作,这在某些特定的应用场景中非常有用,比如电话中断、用户交互或者节省电池等。接下来,我们将详细探讨如何在...
以上是基于Android开发接打电话录音应用的基本技术要点。在实际开发中,还需要考虑用户体验、错误处理、资源释放等问题,以确保应用的稳定性和效率。通过深入理解这些知识点,开发者可以构建出满足需求的高质量应用...