解析Android游戲中獲取電話狀態(tài)進(jìn)行游戲暫?;蚶^續(xù)的解決方法
更新時(shí)間:2013年05月20日 17:36:39 作者:
本篇文章是對(duì)在Android游戲中獲取電話狀態(tài)進(jìn)行游戲暫?;蚶^續(xù)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
對(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)方法。
開(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í)例。
java代碼:
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)通話方法如下所示:
java代碼:
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)通話。
java代碼:
mTelephonyMgr.listen(new TeleListener(), PhoneStateListener.LISTEN_CALL_STATE);
下面是個(gè)簡(jiǎn)單的測(cè)試?yán)樱皇前押艚袪顟B(tài)追加到TextView之上。
java代碼:
package eoe.demo;
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.
java代碼:
< uses-permission android:name="android.permission.READ_PHONE_STATE" />
開(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í)例。
java代碼:
復(fù)制代碼 代碼如下:
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)通話方法如下所示:
java代碼:
復(fù)制代碼 代碼如下:
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)通話。
java代碼:
mTelephonyMgr.listen(new TeleListener(), PhoneStateListener.LISTEN_CALL_STATE);
下面是個(gè)簡(jiǎn)單的測(cè)試?yán)樱皇前押艚袪顟B(tài)追加到TextView之上。
java代碼:
復(fù)制代碼 代碼如下:
package eoe.demo;
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.
java代碼:
< uses-permission android:name="android.permission.READ_PHONE_STATE" />
您可能感興趣的文章:
- Android游戲源碼分享之2048
- Android 游戲開(kāi)發(fā)之Canvas畫布的介紹及方法
- Android五子棋游戲程序完整實(shí)例分析
- Android游戲開(kāi)發(fā)實(shí)踐之人物移動(dòng)地圖的平滑滾動(dòng)處理
- Android開(kāi)發(fā)之經(jīng)典游戲貪吃蛇
- Unity3D游戲引擎實(shí)現(xiàn)在Android中打開(kāi)WebView的實(shí)例
- Android 游戲開(kāi)發(fā)入門簡(jiǎn)單示例
- Android高仿2048小游戲?qū)崿F(xiàn)代碼
- Android 游戲引擎libgdx 資源加載進(jìn)度百分比顯示案例分析
- Android數(shù)字華容道小游戲開(kāi)發(fā)
相關(guān)文章
Android開(kāi)發(fā)實(shí)現(xiàn)長(zhǎng)按返回鍵彈出關(guān)機(jī)框功能
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)長(zhǎng)按返回鍵彈出關(guān)機(jī)框功能,涉及Android針對(duì)長(zhǎng)按事件的響應(yīng)與處理相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
Android?中?FrameLayout?布局及屬性的使用詳解
這篇文章主要介紹了Android?中?FrameLayout?布局及屬性的使用,FrameLayout?在實(shí)現(xiàn)簡(jiǎn)單布局時(shí)非常方便,特別適用于疊加式布局,如顯示疊加的圖層或浮動(dòng)按鈕等,需要的朋友可以參考下2024-03-03
Android應(yīng)用內(nèi)調(diào)用第三方應(yīng)用的方法
這篇文章主要介紹了Android應(yīng)用內(nèi)調(diào)用第三方應(yīng)用的方法,有需要的朋友可以參考一下2014-01-01
Android實(shí)現(xiàn)帶有進(jìn)度條的按鈕效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)帶有進(jìn)度條的按鈕效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
Android實(shí)現(xiàn)app開(kāi)機(jī)自啟動(dòng)功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)app開(kāi)機(jī)自啟動(dòng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Android 快速繪制一個(gè)圓角矩形的實(shí)例
下面小編就為大家分享一篇Android 快速繪制一個(gè)圓角矩形的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
Android HttpClient GET或者POST請(qǐng)求基本使用方法
在Android開(kāi)發(fā)中我們經(jīng)常會(huì)用到網(wǎng)絡(luò)連接功能與服務(wù)器進(jìn)行數(shù)據(jù)的交互,為此Android的SDK提供了Apache的HttpClient來(lái)方便我們使用各種Http服務(wù).這里只介紹如何使用HttpClient發(fā)起GET或者POST請(qǐng)求2012-12-12

