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 | } |