分享

android

 mot0522 2012-08-09

android-电话录音

AlexZhuang 发布于 2012年04月13日 22时, 2评/1155阅 12人收藏此代码, 我要收藏
0
android-电话录音
标签: <无>

代码片段(1)

[代码] 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"/>
11public class PhoneListenerService extends Service {
12@Override
13public void onCreate() {
14        TelephonyManager manager =
15                  (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
16        //监听电话的状态
17    manager.listen(new MyListener(), PhoneStateListener.LISTEN_CALL_STATE);
18}
19 
20private 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}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多