解析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 開源手機(jī)操作系統(tǒng)。那么在這一系統(tǒng)中想要實(shí)現(xiàn)通話的監(jiān)聽功能的話,我們應(yīng)當(dāng)如何操作呢?在這里就為大家詳細(xì)介紹了Android監(jiān)聽通話的相關(guān)實(shí)現(xiàn)方法。
開發(fā)應(yīng)用程序的時(shí)候,我們希望能夠監(jiān)聽電話的呼入,以便執(zhí)行暫停音樂播放器等操作,當(dāng)電話結(jié)束之后,再次恢復(fù)播放。在Android平臺(tái)可以通過TelephonyManager和PhoneStateListener來完成此任務(wù)。
TelephonyManager作為一個(gè)Service接口提供給用戶查詢電話相關(guān)的內(nèi)容,比如IMEI,LineNumber1等。通過下面的代碼即可獲得TelephonyManager的實(shí)例。
java代碼:
TelephonyManager mTelephonyMgr = (TelephonyManager) this .getSystemService(Context.TELEPHONY_SERVICE);
在Android平臺(tái)中,PhoneStateListener是個(gè)很有用的監(jiān)聽器,用來監(jiān)聽電話的狀態(tài),比如呼叫狀態(tài)和連接服務(wù)等。Android監(jiān)聽通話方法如下所示:
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ài)。在TelephonyManager中定義了三種狀態(tài),分別是振鈴(RINGING),摘機(jī)(OFFHOOK)和空閑(IDLE),我們通過state的值就知道現(xiàn)在的電話狀態(tài)了。
獲得了TelephonyManager接口之后,調(diào)用listen()方法即可實(shí)現(xiàn)Android監(jiān)聽通話。
java代碼:
mTelephonyMgr.listen(new TeleListener(), PhoneStateListener.LISTEN_CALL_STATE);
下面是個(gè)簡單的測試?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" />
開發(fā)應(yīng)用程序的時(shí)候,我們希望能夠監(jiān)聽電話的呼入,以便執(zhí)行暫停音樂播放器等操作,當(dāng)電話結(jié)束之后,再次恢復(fù)播放。在Android平臺(tái)可以通過TelephonyManager和PhoneStateListener來完成此任務(wù)。
TelephonyManager作為一個(gè)Service接口提供給用戶查詢電話相關(guān)的內(nèi)容,比如IMEI,LineNumber1等。通過下面的代碼即可獲得TelephonyManager的實(shí)例。
java代碼:
復(fù)制代碼 代碼如下:
TelephonyManager mTelephonyMgr = (TelephonyManager) this .getSystemService(Context.TELEPHONY_SERVICE);
在Android平臺(tái)中,PhoneStateListener是個(gè)很有用的監(jiān)聽器,用來監(jiān)聽電話的狀態(tài),比如呼叫狀態(tài)和連接服務(wù)等。Android監(jiān)聽通話方法如下所示:
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ài)。在TelephonyManager中定義了三種狀態(tài),分別是振鈴(RINGING),摘機(jī)(OFFHOOK)和空閑(IDLE),我們通過state的值就知道現(xiàn)在的電話狀態(tài)了。
獲得了TelephonyManager接口之后,調(diào)用listen()方法即可實(shí)現(xiàn)Android監(jiān)聽通話。
java代碼:
mTelephonyMgr.listen(new TeleListener(), PhoneStateListener.LISTEN_CALL_STATE);
下面是個(gè)簡單的測試?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 游戲開發(fā)之Canvas畫布的介紹及方法
- Android五子棋游戲程序完整實(shí)例分析
- Android游戲開發(fā)實(shí)踐之人物移動(dòng)地圖的平滑滾動(dòng)處理
- Android開發(fā)之經(jīng)典游戲貪吃蛇
- Unity3D游戲引擎實(shí)現(xiàn)在Android中打開WebView的實(shí)例
- Android 游戲開發(fā)入門簡單示例
- Android高仿2048小游戲?qū)崿F(xiàn)代碼
- Android 游戲引擎libgdx 資源加載進(jìn)度百分比顯示案例分析
- Android數(shù)字華容道小游戲開發(fā)
相關(guān)文章
Android開發(fā)實(shí)現(xiàn)長按返回鍵彈出關(guān)機(jī)框功能
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)長按返回鍵彈出關(guān)機(jī)框功能,涉及Android針對(duì)長按事件的響應(yīng)與處理相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
Android?中?FrameLayout?布局及屬性的使用詳解
這篇文章主要介紹了Android?中?FrameLayout?布局及屬性的使用,FrameLayout?在實(shí)現(xià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開機(jī)自啟動(dòng)功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)app開機(jī)自啟動(dòng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Android 快速繪制一個(gè)圓角矩形的實(shí)例
下面小編就為大家分享一篇Android 快速繪制一個(gè)圓角矩形的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Android HttpClient GET或者POST請(qǐng)求基本使用方法
在Android開發(fā)中我們經(jīng)常會(huì)用到網(wǎng)絡(luò)連接功能與服務(wù)器進(jìn)行數(shù)據(jù)的交互,為此Android的SDK提供了Apache的HttpClient來方便我們使用各種Http服務(wù).這里只介紹如何使用HttpClient發(fā)起GET或者POST請(qǐng)求2012-12-12

