Android(安卓)day_11-2 (服务)
16lz
2021-01-26
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); } }}
在服务中动态注册特殊的广播接收者
更多相关文章
- 通知推送、导航栏、状态栏
- Android(安卓)6.0状态栏使用灰色文字和图标
- AndroidのUI体验之上拉下拉
- 短信拦截与外拨电话拦截中的Action与权限
- Android(安卓)Viewpager中的Fragment 保存状态
- Android(安卓)服务入门(电话监听)
- 修改状态栏颜色和状态栏字体颜色2
- android中回调函数
- android CheckBox控件的定义及事件监听