最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android 電話狀態(tài)監(jiān)聽(來電和去電)實現(xiàn)代碼

 更新時間:2012年12月05日 10:03:02   作者:  
從事android開發(fā)的朋友們可能電話狀態(tài)監(jiān)聽不是很擅長,接下來將詳細介紹電話狀態(tài)監(jiān)聽功能的實現(xiàn)步驟,需要了解的朋友可以參考下
實現(xiàn)手機電話狀態(tài)的監(jiān)聽,主要依靠兩個類:TelephoneManger和PhoneStateListener。
TelephonseManger提供了取得手機基本服務的信息的一種方式。因此應用程序可以使用TelephonyManager來探測手機基本服務的情況。應用程序可以注冊listener來監(jiān)聽電話狀態(tài)的改變。我們不能對TelephonyManager進行實例化,只能通過獲取服務的形式:
Context.getSystemService(Context.TELEPHONY_SERVICE);
注意:對手機的某些信息進行讀取是需要一定許可(permission)的。
主要靜態(tài)成員常量:(它們對應PhoneStateListener.LISTEN_CALL_STATE所監(jiān)聽到的內(nèi)容)
int CALL_STATE_IDLE 空閑狀態(tài),沒有任何活動。
int CALL_STATE_OFFHOOK 摘機狀態(tài),至少有個電話活動。該活動或是撥打(dialing)或是通話,或是 on hold。并且沒有電話是ringing or waiting
int CALL_STATE_RINGING 來電狀態(tài),電話鈴聲響起的那段時間或正在通話又來新電,新來電話不得不等待的那段時間。
手機通話狀態(tài)在廣播中的對應值
EXTRA_STATE_IDLE 它在手機通話狀態(tài)改變的廣播中,用于表示CALL_STATE_IDLE狀態(tài)
EXTRA_STATE_OFFHOOK 它在手機通話狀態(tài)改變的廣播中,用于表示CALL_STATE_OFFHOOK狀態(tài)
EXTRA_STATE_RINGING 它在手機通話狀態(tài)改變的廣播中,用于表示CALL_STATE_RINGING狀態(tài)
ACTION_PHONE_STATE_CHANGED 在廣播中用ACTION_PHONE_STATE_CHANGED這個Action來標示通話狀態(tài)改變的廣播(intent)。
注:需要許可READ_PHONE_STATE。
String EXTRA_INCOMING_NUMBER
在手機通話狀態(tài)改變的廣播,用于從extra取來電號碼。
String EXTRA_STATE 在通話狀態(tài)改變的廣播,用于從extra取來通話狀態(tài)。

主要成員函數(shù)
public int getCallState() 取得手機的通話狀態(tài)。
public CellLocation getCellLocation () 返回手機當前所處的位置。如果當前定位服務不可用,則返回null
注:需要許可(Permission)ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION.
public int getDataActivity () 返回當前數(shù)據(jù)連接活動狀態(tài)的情況。
public int getDataState () 返回當前數(shù)據(jù)連接狀態(tài)的情況。
public String getDeviceId ()
返回手機的設(shè)備ID。比如對于GSM的手機來說是IMEI碼,對于CDMA的手機來說MEID碼或ESN碼。如果讀取失敗,則返回null。

如何實現(xiàn)電話狀態(tài)的監(jiān)聽呢?
Android在電話狀態(tài)改變是會發(fā)送action為android.intent.action.PHONE_STATE的廣播,而撥打電話時會發(fā)送action為android.intent.action.NEW_OUTGOING_CALL的廣播,但是我看了下開發(fā)文檔,暫時沒發(fā)現(xiàn)有來電時的廣播。通過自定義廣播接收器,接受上述兩個廣播便可。
Java代碼:
復制代碼 代碼如下:

package com.pocketdigi.phonelistener;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
public class PhoneReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("action"+intent.getAction());
//如果是去電
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
String phoneNumber = intent
.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.d(TAG, "call OUT:" + phoneNumber);
}else{
//查了下android文檔,貌似沒有專門用于接收來電的action,所以,非去電即來電.
//如果我們想要監(jiān)聽電話的撥打狀況,需要這么幾步 :
* 第一:獲取電話服務管理器TelephonyManager manager = this.getSystemService(TELEPHONY_SERVICE);
* 第二:通過TelephonyManager注冊我們要監(jiān)聽的電話狀態(tài)改變事件。manager.listen(new MyPhoneStateListener(),
* PhoneStateListener.LISTEN_CALL_STATE);這里的PhoneStateListener.LISTEN_CALL_STATE就是我們想要
* 監(jiān)聽的狀態(tài)改變事件,初次之外,還有很多其他事件哦。
* 第三步:通過extends PhoneStateListener來定制自己的規(guī)則。將其對象傳遞給第二步作為參數(shù)。
* 第四步:這一步很重要,那就是給應用添加權(quán)限。android.permission.READ_PHONE_STATE
TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
//設(shè)置一個監(jiān)聽器
}
}
PhoneStateListener listener=new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incomingNumber) {
//注意,方法必須寫在super方法后面,否則incomingNumber無法獲取到值。
super.onCallStateChanged(state, incomingNumber);
switch(state){
case TelephonyManager.CALL_STATE_IDLE:
System.out.println("掛斷");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
System.out.println("接聽");
break;
case TelephonyManager.CALL_STATE_RINGING:
System.out.println("響鈴:來電號碼"+incomingNumber);
//輸出來電號碼
break;
}
}
};
}

要在AndroidManifest.xml注冊廣播接收器:
復制代碼 代碼如下:

<receiver android:name=".PhoneReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
<receiver android:name=".PhoneReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE"/> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver>

還要添加權(quán)限:
復制代碼 代碼如下:

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

相關(guān)文章

  • Android模擬用戶點擊的實現(xiàn)方法

    Android模擬用戶點擊的實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Android模擬用戶點擊的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學學習學習吧。
    2018-02-02
  • Android仿優(yōu)酷圓形菜單學習筆記分享

    Android仿優(yōu)酷圓形菜單學習筆記分享

    這篇文章主要為大家分享了Android仿優(yōu)酷圓形菜單學習筆記,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • AndroidStudio升級4.1坑(無法啟動、插件plugin不好用、代碼不高亮)

    AndroidStudio升級4.1坑(無法啟動、插件plugin不好用、代碼不高亮)

    這篇文章主要介紹了AndroidStudio升級4.1坑(無法啟動、插件plugin不好用、代碼不高亮),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Android Studio和阿里云數(shù)據(jù)庫實現(xiàn)一個遠程聊天程序

    Android Studio和阿里云數(shù)據(jù)庫實現(xiàn)一個遠程聊天程序

    本文主要介紹了Android Studio和阿里云數(shù)據(jù)庫實現(xiàn)一個遠程聊天程序,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Android Studio無法改變Button背景顏色解決辦法

    Android Studio無法改變Button背景顏色解決辦法

    今天我來和大家探討一個在Android開發(fā)中常見但可能讓初學者感到困惑的問題,如何在Android Studio中改變Button的背景顏色,這個問題看似簡單,但實際操作中可能會遇到一些意想不到的挑戰(zhàn),接下來,我將從多個角度為大家提供解決方案,需要的朋友可以參考下
    2024-05-05
  • android上的一個網(wǎng)絡(luò)接口和圖片緩存框架enif簡析

    android上的一個網(wǎng)絡(luò)接口和圖片緩存框架enif簡析

    android上的一個網(wǎng)絡(luò)接口和圖片緩存框架enif詳細介紹:底層網(wǎng)絡(luò)接口采用apache的httpclient連接池框架、圖片緩存采用基于LRU的算法等等,需要了解的朋友可以詳細參考下
    2012-12-12
  • Android selector背景選擇器的使用詳解

    Android selector背景選擇器的使用詳解

    本篇文章是對Android中selector背景選擇器的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Android studio實現(xiàn)簡單計算器

    Android studio實現(xiàn)簡單計算器

    這篇文章主要為大家詳細介紹了Android studio實現(xiàn)簡單計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Android Studio下載與安裝簡易教程

    Android Studio下載與安裝簡易教程

    這篇文章主要為大家詳細介紹了Android Studio下載與安裝簡易教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Android?Framework原理Binder驅(qū)動源碼解析

    Android?Framework原理Binder驅(qū)動源碼解析

    這篇文章主要為大家介紹了Android?Framework原理Binder驅(qū)動源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論

龙陵县| 宜春市| 博湖县| 长沙县| 鄂尔多斯市| 孟村| 长武县| 商城县| 秀山| 交城县| 社旗县| 化德县| 长葛市| 和田县| 孟连| 玉屏| 上犹县| 胶南市| 平顶山市| 枞阳县| 綦江县| 延吉市| 广水市| 济南市| 穆棱市| 密山市| 定州市| 稻城县| 兴安县| 永康市| 都安| 泸水县| 新邵县| 芦溪县| 桦川县| 辛集市| 西畴县| 镇平县| 昌乐县| 申扎县| 双鸭山市|