Android游戏中获取电话的状态来进行游戏的暂停和继续
来源:互联网 发布:不用网络的汽车游戏 编辑:程序博客网 时间:2024/04/30 12:25
开发应用程序的时候,我们希望能够监听电话的呼入,以便执行暂停音乐播放器等操作,当电话结束之后,再次恢复播放。在Android平台可以通过TelephonyManager和PhoneStateListener来完成此任务。
TelephonyManager作为一个Service接口提供给用户查询电话相关的内容,比如IMEI,LineNumber1等。通过下面的代码即可获得TelephonyManager的实例。
java代码:
TelephonyManager mTelephonyMgr = (TelephonyManager) this .getSystemService(Context.TELEPHONY_SERVICE);
在Android平台中,PhoneStateListener是个很有用的监听器,用来监听电话的状态,比如呼叫状态和连接服务等。Android监听通话方法如下所示:
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()方法即可监听呼叫状态。在TelephonyManager中定义了三种状态,分别是振铃(RINGING),摘机(OFFHOOK)和空闲(IDLE),我们通过state的值就知道现在的电话状态了。
获得了TelephonyManager接口之后,调用listen()方法即可实现Android监听通话。
java代码:
mTelephonyMgr.listen(new TeleListener(), PhoneStateListener.LISTEN_CALL_STATE);
下面是个简单的测试例子,只是把呼叫状态追加到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里面添加个permission.
java代码:
< uses-permission android:name="android.permission.READ_PHONE_STATE" />
- Android游戏中获取电话的状态来进行游戏的暂停和继续
- 解析Android游戏中获取电话状态进行游戏暂停或继续的解决方法
- unity中游戏暂停的问题
- 使用CCRenderTexture来是实现游戏的暂停
- Cocos2d-x游戏暂停、继续游戏、重新开始界面的实现---之游戏开发《赵云要格斗》(10)
- NSTimer的暂停和继续
- NSTimer的暂停和继续
- NSTimer的暂停和继续
- NSTimer的暂停和继续
- Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作实例
- Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作实例
- Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作实例
- Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作实例
- Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作实例
- Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作实例
- Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作实例
- android 暂停和继续第三方应用的语音播放
- android 暂停和继续第三方应用的语音播放
- 《当程序员的那些狗日日子》(四十三)绝缘空间
- Android中游戏的存储(下)----好久不见
- 在centos 6 64位系统上安装broadcom网卡驱动
- 加班,谁之过?
- List combining / C Macro
- Android游戏中获取电话的状态来进行游戏的暂停和继续
- android 的短信数据库的读取
- 32位寄存器与指令
- C语言中两个反正切函数atan与atan2的区别
- DISCUZ! X1.5 X2.0RC完美解决用户组上传论坛附件大小限制!
- FLT_MIN,FLT_MAX,FLT_EPSILON 有什么用?
- 将有限自动状态机应用到基于WATIR的前端测试中
- C++运行结果出现1.#INF
- 为赋新词强说愁