service笔记(监听电话录音)

来源:互联网 发布:智士软件 编辑:程序博客网 时间:2024/06/16 06:19

第一步:在清单文件中注册一个service name指定继承service的类

第二步:新建一个类继承serivce,重写oncreate onStartCommand ondestory 方法

第三步:在oncreate中通过   得到一个系统服务 TelephonyManager tm = (TelephonyManager) getSystemService(this.TELEPHONY_SERVICE);

tm.listen(new myPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);



private class myPhoneStateListener extends PhoneStateListener {
        private MediaRecorder recorder = null;//这里将mediarecorder这个类提示怎么编码,所以下面的代码可以根据提示进行拷贝

        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            // TODO Auto-generated method stub
            super.onCallStateChanged(state, incomingNumber);

            try {
                switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:// 闲置状态
                    if (recorder != null) {
                        recorder.stop();
                        recorder.reset(); // You can reuse the object by going
                                            // back to setAudioSource() step
                        recorder.release(); // Now the object cannot be reused
                        recorder = null;
                    }
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK:// 通话状态
                    if (recorder != null) {
                        recorder.start(); // Recording is now started
                    }
                    break;
                case TelephonyManager.CALL_STATE_RINGING:// 响铃状态
                    recorder = new MediaRecorder();
                    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                    recorder.setOutputFile("/sdcard/" + System.currentTimeMillis() + ".3gp");
                    recorder.prepare();

                    break;
                default:
                    break;
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }


第四步:在activity当中  Intent intent = new Intent(this, otherservice.class);  startService(intent);即可, 如果停止服务可以stopService(intenet);

0 0
原创粉丝点击