service笔记(监听电话录音)

第一步:在清单文件中注册一个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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值