bind方式开启服务的特点

1)电话窃听器案例:

实现步骤:

【1】定义一个服务 开启服务  一定要在清单文件中配置

【2】在服务的onCreate()方法里 获取TelephonyManager的实例

//获取TelephonyManager的实例TelephonyManager tm= (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
【3】//注册电话的监听tm.listen(new MyPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);

【4】定义一个类来监听电话的状态

代码:

public class PhoneService extends Service {    private MediaRecorder recorder;    @Nullable    @Override    public IBinder onBind(Intent intent) {        return null;    }    @Override    public void onCreate() {        //获取TelephonyManager的实例        TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);        //注册电话的监听        tm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);        super.onCreate();    }    @Override    public void onDestroy() {        super.onDestroy();    }    //定义一个类来监听电话状态    private class MyPhoneStateListener extends PhoneStateListener {        @Override        public void onCallStateChanged(int state, String phoneNumber) {            //具体判断电话状态            switch (state) {                case TelephonyManager.CALL_STATE_IDLE://空闲状态                    if (recorder != null) {                        recorder.stop();//停止录音                        recorder.reset();                        recorder.release();                    }                    break;                case TelephonyManager.CALL_STATE_OFFHOOK://接听状态                    System.out.println("开始录");                    recorder.start();                    break;                case TelephonyManager.CALL_STATE_RINGING://响铃状态                    System.out.println("准备录音机");                    //创建MediaRecorder 的实例                    recorder = new MediaRecorder();                    //设置音频来源                    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);                    System.out.println("准备录");                    //设置输出格式                    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);                    //设置音频的编码方式                    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);                    //设置存放路径                    recorder.setOutputFile("/mnt/sdcard/luyin.3gp");                    //准备录                    try {                        recorder.prepare();                    } catch (IOException e) {                        e.printStackTrace();                    }                    break;            }            super.onCallStateChanged(state, phoneNumber);        }    }}

 在服务中动态注册特殊的广播接收者

更多相关文章

  1. 通知推送、导航栏、状态栏
  2. Android(安卓)6.0状态栏使用灰色文字和图标
  3. AndroidのUI体验之上拉下拉
  4. 短信拦截与外拨电话拦截中的Action与权限
  5. Android(安卓)Viewpager中的Fragment 保存状态
  6. Android(安卓)服务入门(电话监听)
  7. 修改状态栏颜色和状态栏字体颜色2
  8. android中回调函数
  9. android CheckBox控件的定义及事件监听

随机推荐

  1. android:allowTaskReparenting(clearTask
  2. LibGDX输入模块之陀螺仪
  3. LinearLayout的layout_weight的使用
  4. 【Android】Service中判断当前是否全屏(状
  5. Android简单数据存储SharedPreferences
  6. Unity3D与android交互
  7. Android——发送和接收广播
  8. android API之ActivityGroup
  9. Android8.0中获取U盘的各种信息
  10. Android框架Picasso介绍