监听电话状态的模板代码

package com.example.calling;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class PhoneStatusService extends Service {
   private TelephonyManager tm;
   private MyPhoneStatusListener  mPhoneStatusListener;
   @Override
   public IBinder onBind(Intent intent) {
      return null;
   }
   @Override
   public void onCreate() {
      super.onCreate();
      // 1. 获取手机管理器
      tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
      // 2. 设置监听
      mPhoneStatusListener = new MyPhoneStatusListener();
      tm.listen(mPhoneStatusListener, PhoneStateListener.LISTEN_CALL_STATE);
   }

   /**
    * 3. 用内部类实现监听
    * 手机状态监听
    */
   private class MyPhoneStatusListener extends PhoneStateListener {
      //当手机通话状态变化时,回调
      //state  :通话的3中状态
      //incomingNumber:来电号码
      @Override
      public void onCallStateChanged(int state, String incomingNumber) {
         super.onCallStateChanged(state, incomingNumber);
         System.out.println("来电号码:"+incomingNumber);
         switch (state) {
            case TelephonyManager.CALL_STATE_IDLE://空闲
                System.out.println("空闲");
                break;
            case TelephonyManager.CALL_STATE_RINGING://响铃
                System.out.println("响铃");
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK://通话
                System.out.println("通话");
                break;
            default:
                break;
         }
      }
   }
   @Override
   public void onDestroy() {
      super.onDestroy();
      //4. 注销监听
      tm.listen(mPhoneStatusListener, PhoneStateListener.LISTEN_NONE);
   }
}
时间: 2024-11-16 03:42:15

监听电话状态的模板代码的相关文章

android 监听网络状态的变化及实战

android 监听网络状态的变化及实际应用 转载请注明博客地址:http://blog.csdn.net/gdutxiaoxu/article/details/53008266 平时我们在请求错误的情况下,通常会进行处理一下,一般来说,主要分为两方面的错误 - 没有网络的错误 - 在有网络的情况下,我们客户端的错误或者服务器端的错误 今天这篇博客主要阐述以下问题 怎样监听网络状态的变化,包括是否打开WiFi,否打开数据网络,当前连接的网络是否可用 网络没有打开情况下的处理,如弹出对话框,跳转到

iOS开发:使用代理模式监听开关状态改变事件

记一次解决跨控制器监听开关状态改变的尝试. 为了统一设置UITableViewCell里的内容,自定义了UITableViewCell类的一个基类,命名为SettingCell.SettingCell里显示的内容由数据模型SettingItem提供:在SettingCell里定义一个属性即可. @property (nonatomic, strong) SettingItem *item; 再定义几个SettingItem的子类表示显示不同内容的Cell(如图1).由于所有开关状态的归档和解档都

【C/C++】多进程:父进程监听子进程状态 wait()的使用

文章结构: wait能力介绍 wait()函数讲解 示例代码及操作演示 wait能力介绍 在上一篇[C/C++]多进程:子进程的创建fork()中演示了子进程的创建. 创建子进程后,父进程具有监听子进程的运行状态的能力,用到的函数为: #include <sys/wait.h> pid_t wait(int *status); pid_t waitpid(pid_t pid, int *status, int options); 以上函数用于等待子进程子进程的状态变化回调并且获取状态变化信息.

监听电话录音

package com.example.calling; import java.io.IOException; import android.app.Service; import android.content.Context; import android.content.Intent; import android.media.MediaRecorder; import android.os.IBinder; import android.telephony.PhoneStateList

设置休眠时间,获得休眠时间,监听屏幕状态,服务启动界面

public class MyService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { Log.e("zz","zz"); MyService.ScreenListener mScreenListener= new MyService.ScreenListe

android监听SIM状态

/* 监听sim状态改变的广播,返回sim卡的状态, 有效或者无效. 双卡中只要有一张卡的状态有效即返回状态为有效,两张卡都无效则返回无效. */ import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.TelephonyManager;

Android实时监听网络状态

在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒.一般可以通过ConnectivityManager来完成该工作. ConnectivityManager有四个主要任务: 1.监听手机网络状态(包括GPRS,WIFI, UMTS等) 2.手机状态发生改变时,发送广播 3.当一个网络连接失败时进行故障切换 4.为应用程序提供可以获取可用网络的高精度和粗糙的状态 当我们要在程序中监听网络状态时,只要一下几个步骤即可:  1.处理Recevier接口

洛谷 P2025 脑力大人之监听电话

P2025 脑力大人之监听电话 题目背景 画外音: (声明:不要管前面那个,纯属意外,现已经重新编题,绝对原创) 上次海选,我们选出了参赛者中的20%参加本次比赛,现在我们将进行第二轮的筛选,这次的比赛将更加残酷.每25人为一组,其中的第一名将直接进入下一轮,而第4名以后的人(不包括第4名)将被直接淘汰.第2-4名将参加接下来的加赛,加赛中的前2%将进入下一轮. 欢迎您收看有洛谷卫视重磅推出的综合性文艺知识类节目“开心玩游戏,轻松赢比赛”,我是LUWM.学编程,就选洛谷, 感谢洛谷Online

监听电话来时候的一些状态

#import <CoreTelephony/CTCallCenter.h> #import <CoreTelephony/CTCall.h> /// 监听拨打电话状态 _callCenter = [[CTCallCenter alloc] init]; _callCenter.callEventHandler=^(CTCall* call) { if (call.callState == CTCallStateDisconnected) { NSLog(@"挂断电话&q