新聞中心
對(duì)智能手機(jī)有所了解的朋友都知道其中一個(gè)應(yīng)用廣泛的手機(jī)操作系統(tǒng)Android 開(kāi)源手機(jī)操作系統(tǒng)。那么在這一系統(tǒng)中想要實(shí)現(xiàn)通話的監(jiān)聽(tīng)功能的話,我們應(yīng)當(dāng)如何操作呢?在這里就為大家詳細(xì)介紹了Android監(jiān)聽(tīng)通話的相關(guān)實(shí)現(xiàn)方法。#t#

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括槐蔭網(wǎng)站建設(shè)、槐蔭網(wǎng)站制作、槐蔭網(wǎng)頁(yè)制作以及槐蔭網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,槐蔭網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到槐蔭省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
開(kāi)發(fā)應(yīng)用程序的時(shí)候,我們希望能夠監(jiān)聽(tīng)電話的呼入,以便執(zhí)行暫停音樂(lè)播放器等操作,當(dāng)電話結(jié)束之后,再次恢復(fù)播放。在Android平臺(tái)可以通過(guò)TelephonyManager和PhoneStateListener來(lái)完成此任務(wù)。
TelephonyManager作為一個(gè)Service接口提供給用戶查詢電話相關(guān)的內(nèi)容,比如IMEI,LineNumber1等。通過(guò)下面的代碼即可獲得TelephonyManager的實(shí)例。
- TelephonyManager mTelephonyMgr = (TelephonyManager) this
- .getSystemService(Context.TELEPHONY_SERVICE);
在Android平臺(tái)中,PhoneStateListener是個(gè)很有用的監(jiān)聽(tīng)器,用來(lái)監(jiān)聽(tīng)電話的狀態(tài),比如呼叫狀態(tài)和連接服務(wù)等。Android監(jiān)聽(tīng)通話方法如下所示:
- public void onCallForwardingIndicatorChanged(boolean cfi)
- public void onCallStateChanged(int state,
String incomingNumber)- public void onCellLocationChanged(CellLocation location)
- public void onDataActivity(int direction)
- public void onDataConnectionStateChanged(int state)
- public void onMessageWaitingIndicatorChanged(boolean mwi)
- public void onServiceStateChanged
(ServiceState serviceState)- public void onSignalStrengthChanged(int asu)
這里我們只需要覆蓋onCallStateChanged()方法即可監(jiān)聽(tīng)呼叫狀態(tài)。在TelephonyManager中定義了三種狀態(tài),分別是振鈴(RINGING),摘機(jī)(OFFHOOK)和空閑(IDLE),我們通過(guò)state的值就知道現(xiàn)在的電話狀態(tài)了。
獲得了TelephonyManager接口之后,調(diào)用listen()方法即可實(shí)現(xiàn)Android監(jiān)聽(tīng)通話。
- mTelephonyMgr.listen(new TeleListener(),
- PhoneStateListener.LISTEN_CALL_STATE);
下面是個(gè)簡(jiǎn)單的測(cè)試?yán)?,只是把呼叫狀態(tài)追加到TextView之上。
- package com.j2medev;
- import android.app.Activity;
- import android.content.Context;
- import android.os.Bundle;
- import android.telephony.PhoneStateListener;
- import android.telephony.TelephonyManager;
- import android.util.Log;
- import android.widget.TextView;
- public class Telephony extends Activity {
- private static final String TAG = "Telephony";
- TextView view = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- TelephonyManager mTelephonyMgr = (TelephonyManager) this
- .getSystemService(Context.TELEPHONY_SERVICE);
- mTelephonyMgr.listen(new TeleListener(),
- PhoneStateListener.LISTEN_CALL_STATE);
- view = new TextView(this);
- view.setText("listen the state of phone\n");
- setContentView(view);
- }
- class TeleListener extends PhoneStateListener {
- @Override
- public void onCallStateChanged(int state,
String incomingNumber) {- super.onCallStateChanged(state, incomingNumber);
- switch (state) {
- case TelephonyManager.CALL_STATE_IDLE: {
- Log.e(TAG, "CALL_STATE_IDLE");
- view.append("CALL_STATE_IDLE " + "\n");
- break;
- }
- case TelephonyManager.CALL_STATE_OFFHOOK: {
- Log.e(TAG, "CALL_STATE_OFFHOOK");
- view.append("CALL_STATE_OFFHOOK" + "\n");
- break;
- }
- case TelephonyManager.CALL_STATE_RINGING: {
- Log.e(TAG, "CALL_STATE_RINGING");
- view.append("CALL_STATE_RINGING" + "\n");
- break;
- }
- default:
- break;
- }
- }
- }
- }
不要忘記在AndroidManifest.xml里面添加個(gè)permission.
- < uses-permission android:name=
"android.permission.READ_PHONE_STATE" />
Android監(jiān)聽(tīng)通話的具體操作方法就為大家介紹到這里。
當(dāng)前題目:Android監(jiān)聽(tīng)通話正確操作方法介紹
網(wǎng)站地址:http://www.5511xx.com/article/dhisjgg.html


咨詢
建站咨詢
