android-电话录音

android-电话录音

01 在清单文件AndroidManifest.xml中添加权限:
02     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
03     <!-- 在SDCard中创建与删除文件权限 -->
04     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
05     <!-- 往SDCard写入数据权限 -->
06     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
07     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
08     <!-- 访问internet权限 -->
09     <uses-permission android:name="android.permission.INTERNET"/>
10     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
11 public class PhoneListenerService extends Service {
12 @Override
13 public void onCreate() {
14         TelephonyManager manager =
15                   (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
16         //监听电话的状态
17     manager.listen(new MyListener(), PhoneStateListener.LISTEN_CALL_STATE);
18 }
19  
20 private final class MyListener extends PhoneStateListener {
21     private String num;
22     private MediaRecorder recorder;
23     public void onCallStateChanged(int state, String incomingNumber) {
24         switch (state) {
25             case TelephonyManager.CALL_STATE_RINGING:  /* 电话进来时 */
26                 num = incomingNumber;
27                 break;
28             case TelephonyManager.CALL_STATE_OFFHOOK: /* 接起电话时 */
29                 try {
30                     File file = new File(Environment.getExternalStorageDirectory(), num + "_" + System.currentTimeMillis() + ".3gp");
31                     recorder = new MediaRecorder();
32                     recorder.setAudioSource(AudioSource.MIC);//声音采集来源(话筒)
33                     recorder.setOutputFormat(OutputFormat.THREE_GPP);//输出的格式
34                     recorder.setAudioEncoder(AudioEncoder.AMR_NB);//音频编码方式
35                     recorder.setOutputFile(file.getAbsolutePath());//输出方向
36                     recorder.prepare();
37                     recorder.start();
38                 } catch (Exception e) {
39                     e.printStackTrace();
40                 }
41                 break;
42             case TelephonyManager.CALL_STATE_IDLE:  /* 无任何状态时 */
43                 if (recorder != null) {
44                     recorder.stop();
45                     recorder.release();
46                 }
47                 break;
48         }
49     }
50 }
51 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值