解析Android游戏中获取电话状态进行游戏暂停或继续的解决方法

时间:2023-09-09 00:31:09 

对智能手机有所了解的朋友都知道其中一个应用广泛的手机操作系统Android 开源手机操作系统。那么在这一系统中想要实现通话的监听功能的话,我们应当如何操作呢?在这里就为大家详细介绍了Android监听通话的相关实现方法。

开发应用程序的时候,我们希望能够监听电话的呼入,以便执行暂停音乐播放器等操作,当电话结束之后,再次恢复播放。在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" />

标签:游戏,暂停,继续
0
投稿

猜你喜欢

  • 简单实现C#异步操作

    2022-09-05 06:03:00
  • Android自定义view实现有header和footer作为layout使用的滚动控件

    2023-07-31 19:29:54
  • C语言 奇偶排序算法详解及实例代码

    2023-04-17 04:47:39
  • Java数组高级算法与Arrays类常见操作小结【排序、查找】

    2022-12-02 15:17:14
  • Android自定义View圆形进度条控件(三)

    2021-11-13 10:17:51
  • C#实现3步手动建DataGridView的方法

    2021-10-13 22:35:56
  • Java利用cors实现跨域请求实例

    2023-02-24 14:57:35
  • Android控件PopupWindow模仿ios底部弹窗

    2023-03-09 20:42:10
  • Maven的几个常用plugin

    2021-12-05 13:36:28
  • 实例讲解建立Android项目

    2023-10-04 17:41:20
  • java如何导出insert语句并生成sql脚本

    2022-05-18 10:33:54
  • idea springboot远程debug的操作方法

    2022-11-01 00:04:31
  • Java文本文件操作方法实例详解

    2021-12-14 10:03:21
  • Android 知乎广告效果实现代码

    2022-12-02 08:50:12
  • Spring中事务传播行为的介绍

    2023-06-24 01:21:01
  • Java处理Webp图片格式转换的示例代码

    2022-03-09 06:27:29
  • Android天气预报app改进版

    2023-12-04 05:54:07
  • Java提示缺少返回语句的解决办法

    2021-08-04 19:42:03
  • Android Studio导入jar包过程详解

    2023-01-02 08:04:51
  • 使用Nexus搭建Maven私服教程的方法步骤

    2023-03-05 18:56:58
  • asp之家 软件编程 m.aspxhome.com