Android监听通话正确操作方法介绍

对智能手机有所了解的朋友都知道其中一个应用广泛的手机操作系统Android 开源手机操作系统。那么在这一系统中想要实现通话的监听功能的话,我们应当如何操作呢?在这里就为大家详细介绍了Android监听通话的相关实现方法。#t#

成都创新互联公司服务项目包括槐荫网站建设、槐荫网站制作、槐荫网页制作以及槐荫网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,槐荫网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到槐荫省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

开发应用程序的时候,我们希望能够监听电话的呼入,以便执行暂停音乐播放器等操作,当电话结束之后,再次恢复播放。在Android平台可以通过TelephonyManager和PhoneStateListener来完成此任务。

TelephonyManager作为一个Service接口提供给用户查询电话相关的内容,比如IMEI,LineNumber1等。通过下面的代码即可获得TelephonyManager的实例。

 
 
 
  1. TelephonyManager mTelephonyMgr = (TelephonyManager) this  
  2. .getSystemService(Context.TELEPHONY_SERVICE); 

在Android平台中,PhoneStateListener是个很有用的监听器,用来监听电话的状态,比如呼叫状态和连接服务等。Android监听通话方法如下所示:

 
 
 
  1. public void onCallForwardingIndicatorChanged(boolean cfi)  
  2. public void onCallStateChanged(int state, 
    String incomingNumber)  
  3. public void onCellLocationChanged(CellLocation location)  
  4. public void onDataActivity(int direction)  
  5. public void onDataConnectionStateChanged(int state)  
  6. public void onMessageWaitingIndicatorChanged(boolean mwi)  
  7. public void onServiceStateChanged
    (ServiceState serviceState)  
  8. public void onSignalStrengthChanged(int asu) 

这里我们只需要覆盖onCallStateChanged()方法即可监听呼叫状态。在TelephonyManager中定义了三种状态,分别是振铃(RINGING),摘机(OFFHOOK)和空闲(IDLE),我们通过state的值就知道现在的电话状态了。

获得了TelephonyManager接口之后,调用listen()方法即可实现Android监听通话。

 
 
 
  1. mTelephonyMgr.listen(new TeleListener(),  
  2. PhoneStateListener.LISTEN_CALL_STATE); 

下面是个简单的测试例子,只是把呼叫状态追加到TextView之上。

 
 
 
  1. package com.j2medev;  
  2. import android.app.Activity;  
  3. import android.content.Context;  
  4. import android.os.Bundle;  
  5. import android.telephony.PhoneStateListener;  
  6. import android.telephony.TelephonyManager;  
  7. import android.util.Log;  
  8. import android.widget.TextView;  
  9. public class Telephony extends Activity {  
  10. private static final String TAG = "Telephony";  
  11. TextView view = null;  
  12. @Override  
  13. protected void onCreate(Bundle savedInstanceState) {  
  14. super.onCreate(savedInstanceState);  
  15. TelephonyManager mTelephonyMgr = (TelephonyManager) this  
  16. .getSystemService(Context.TELEPHONY_SERVICE);  
  17. mTelephonyMgr.listen(new TeleListener(),  
  18. PhoneStateListener.LISTEN_CALL_STATE);  
  19. view = new TextView(this);  
  20. view.setText("listen the state of phone\n");  
  21. setContentView(view);  
  22. }  
  23. class TeleListener extends PhoneStateListener {  
  24. @Override  
  25. public void onCallStateChanged(int state, 
    String incomingNumber) {  
  26. super.onCallStateChanged(state, incomingNumber);  
  27. switch (state) {  
  28. case TelephonyManager.CALL_STATE_IDLE: {  
  29. Log.e(TAG, "CALL_STATE_IDLE");  
  30. view.append("CALL_STATE_IDLE " + "\n");  
  31. break;  
  32. }  
  33. case TelephonyManager.CALL_STATE_OFFHOOK: {  
  34. Log.e(TAG, "CALL_STATE_OFFHOOK");  
  35. view.append("CALL_STATE_OFFHOOK" + "\n");  
  36. break;  
  37. }  
  38. case TelephonyManager.CALL_STATE_RINGING: {  
  39. Log.e(TAG, "CALL_STATE_RINGING");  
  40. view.append("CALL_STATE_RINGING" + "\n");  
  41. break;  
  42. }  
  43. default:  
  44. break;  
  45. }  
  46. }  
  47. }  

不要忘记在AndroidManifest.xml里面添加个permission.

 
 
 
  1. < uses-permission android:name=
    "android.permission.READ_PHONE_STATE" /> 

Android监听通话的具体操作方法就为大家介绍到这里。

分享题目:Android监听通话正确操作方法介绍
本文路径:http://www.shufengxianlan.com/qtweb/news21/530621.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联