Chinaunix首页 | 论坛 | 博客
  • 博客访问: 285751
  • 博文数量: 68
  • 博客积分: 1474
  • 博客等级: 上尉
  • 技术积分: 616
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-12 12:07
文章分类

全部博文(68)

文章存档

2011年(68)

分类: 嵌入式

2011-10-06 16:10:24

1. 如何判断手机是否处于正在通话中?(任何时候都可以判断手机是否处于通过中)
  1. private boolean phoneIsInUse() {
  2.      boolean phoneInUse = false;
  3.      try {
  4.      ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
  5.      if (phone != null) phoneInUse = !phone.isIdle();
  6.      } catch (RemoteException e) {
  7.      Log.w(TAG, "phone.isIdle() failed", e);
  8.      }
  9.      return phoneInUse;
  10.     }

2.通话状态的判断(需要注册监听以后,才可以判断手机通话状态的改变,可能连续接收到同一个状态的改变)

  1. package cn.com.chenzheng_java;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.telephony.PhoneStateListener;
  5. import android.telephony.TelephonyManager;
  6. import android.widget.TextView;
  7. /**
  8.  *
  9.  * @author
  10.  * @description 通过该实例,我们可以看到,如果我们想要监听电话的拨打状况,需要这么几步
  11.  * 第一:获取电话服务管理器TelephonyManager manager = this.getSystemService(TELEPHONY_SERVICE);
  12.  * 第二:通过TelephonyManager注册我们要监听的电话状态改变事件。manager.listen(new MyPhoneStateListener(),
  13.  *          PhoneStateListener.LISTEN_CALL_STATE);这里的PhoneStateListener.LISTEN_CALL_STATE就是我们想要
  14.  *         监听的状态改变事件,初次之外,还有很多其他事件哦。
  15.  * 第三步:通过extends PhoneStateListener来定制自己的规则。将其对象传递给第二步作为参数
  16.  * 第四步:这一步很重要,那就是给应用添加权限。android.permission.READ_PHONE_STATE
  17.  *
  18.  *
  19.  */
  20. public class PhoneCallStateActivity extends Activity {
  21.     TelephonyManager manager ;
  22.     String result = "监听电话状态:/n";
  23.      TextView textView ;
  24.     @Override
  25.     public void onCreate(Bundle savedInstanceState) {
  26.         super.onCreate(savedInstanceState);
  27.         setContentView(R.layout.main);
  28.         //获取电话服务
  29.         manager = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
  30.         // 手动注册对PhoneStateListener中的listen_call_state状态进行监听
  31.         manager.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);
  32.         
  33.         textView = (TextView) findViewById(R.id.textView1);
  34.         textView.setText(result);
  35.     }
  36.    /***
  37.     * 继承PhoneStateListener类,我们可以重新其内部的各种监听方法
  38.     *然后通过手机状态改变时,系统自动触发这些方法来实现我们想要的功能
  39.     */
  40.     class MyPhoneStateListener extends PhoneStateListener{

  41.         @Override
  42.         public void onCallStateChanged(int state, String incomingNumber) {
  43.             switch (state) {
  44.             case TelephonyManager.CALL_STATE_IDLE:
  45.                 result+=" 手机空闲起来了 ";
  46.                 break;
  47.             case TelephonyManager.CALL_STATE_RINGING:
  48.                 result+=" 手机铃声响了,来电号码:"+incomingNumber;
  49.                 break;
  50.             case TelephonyManager.CALL_STATE_OFFHOOK:
  51.                 result+=" 电话被挂起了 ";
  52.             default:
  53.                 break;
  54.             }
  55.             textView.setText(result);
  56.             super.onCallStateChanged(state, incomingNumber);
  57.         }
  58.         
  59.     }
  60.     
  61.     
  62. }

这里一定要注意,别忘记给应用注册权限:

阅读(8502) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~