android电话录音

1. 在清单文件AndroidManifest.xml中添加权限:

<!-- 在SDCard中创建与删除文件权限 -->

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

    <!-- 往SDCard写入数据权限 -->

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.RECORD_AUDIO"/>

    <!-- 访问internet权限 -->

    <uses-permission android:name="android.permission.INTERNET"/>

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

2. 具体实现代码:

public class PhoneListenerService extends Service {
@Override
public void onCreate() {
        TelephonyManager manager = 
                  (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
		//监听电话的状态
	manager.listen(new MyListener(), PhoneStateListener.LISTEN_CALL_STATE);
}

private final class MyListener extends PhoneStateListener {
	private String num;
	private MediaRecorder recorder;
	public void onCallStateChanged(int state, String incomingNumber) {
		switch (state) {
			case TelephonyManager.CALL_STATE_RINGING:  /* 电话进来时 */
				num = incomingNumber;
				break;
			case TelephonyManager.CALL_STATE_OFFHOOK: /* 接起电话时 */
				try {
					File file = new File(Environment.getExternalStorageDirectory(), num + "_" + System.currentTimeMillis() + ".3gp");
					recorder = new MediaRecorder();
					recorder.setAudioSource(AudioSource.MIC);//声音采集来源(话筒)
					recorder.setOutputFormat(OutputFormat.THREE_GPP);//输出的格式
					recorder.setAudioEncoder(AudioEncoder.AMR_NB);//音频编码方式
					recorder.setOutputFile(file.getAbsolutePath());//输出方向
					recorder.prepare();
					recorder.start();
				} catch (Exception e) {
					e.printStackTrace();
				}
				break;
			case TelephonyManager.CALL_STATE_IDLE:  /* 无任何状态时 */
				if (recorder != null) {
					recorder.stop();
					recorder.release();
				}
				break;
		}
	}
}
}

转载于:https://my.oschina.net/AlexZhuang/blog/53493

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值