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

对智能手机有所了解的朋友都知道其中一个应用广泛的手机操作系统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" />

时间: 2024-10-23 08:29:36

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

Android线程中设置控件的值提示报错的解决方法_Android

本文实例讲述了Android线程中设置控件的值提示报错的解决方法.分享给大家供大家参考,具体如下: 在Android线程中设置控件的值一般会与Handler联合使用,如下: package com.yarin.android.Examples_04_15; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import andro

Android编程中出现The connection to adb is down问题的解决方法_Android

本文分析了Android编程中出现The connection to adb is down问题的解决方法.分享给大家供大家参考,具体如下: 1.报错: BUILD FAILED D:\workspace\ganji\build.xml:144: The following error occurred while executing this line: D:\workspace\ganji\build.xml:271: Unable to delete file D:\workspace\g

Android线程中设置控件的值提示报错的解决方法

本文实例讲述了Android线程中设置控件的值提示报错的解决方法.分享给大家供大家参考,具体如下: 在Android线程中设置控件的值一般会与Handler联合使用,如下: package com.yarin.android.Examples_04_15; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import andro

Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)_Android

本文实例讲述了Android监听手机电话状态与发送邮件通知来电号码的方法.分享给大家供大家参考,具体如下: 在android中可以用PhoneStateListener来聆听手机电话状态(比如待机.通话中.响铃等).本例是通过它来监听手机电话状态,当手机来电时,通过邮件将来电号码发送到用户邮箱的例子.具体程序如下: import android.app.Activity; import android.content.Intent; import android.os.Bundle; impor

Android中利用NetworkInfo判断网络状态时出现空指针(NullPointerException)问题的解决方法_Android

在Android中,很多人会用如下的方法判断当前网络是否可用: /** * 获取当前网络状态(是否可用) */ public static boolean isNetworkAvailable() { boolean isAalable = false; ConnectivityManager connManager = (ConnectivityManager) BaseApplication.getApplication().getSystemService(Context.CONNECTI

Android开发中获取View视图宽与高的常用方法小结

本文实例讲述了Android开发中获取View视图宽与高的常用方法.分享给大家供大家参考,具体如下: 一.根据WindowManager管理器获得 1)这两种方法在屏幕未显示的时候,还是处于0的状态,即要在setContentView调用之后才有效. 2)Activity必须如此设置才能获得view的宽高 //设置为无标题 requestWindowFeature(Window.FEATURE_NO_TITLE); //设置为全屏模式getWindow().setFlags(WindowMana

Android OnCreate()中获取控件高度与宽度两种方法详解_Android

Android OnCreate()中获取控件高度与宽度 试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与getHeight()方法返回是0,具体原因 看一下Activity的生命周期 就会明白. 上代码: 方法一: int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.Me

Android OnCreate()中获取控件高度与宽度两种方法详解

Android OnCreate()中获取控件高度与宽度 试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与getHeight()方法返回是0,具体原因 看一下Activity的生命周期 就会明白. 上代码: 方法一: int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.Me

Android实现侦听电池状态显示、电量及充电动态显示的方法_Android

本文实例讲述了Android实现侦听电池状态显示.电量及充电动态显示的方法,是Android应用程序开发中非常常用的重要功能.分享给大家供大家参考之用.具体方法如下: 使用android系统的电池侦听和系统的电池图片如下: 引入源代码中的两个xml文件(这里我在android2.2的jar包中找不到,所以才引入,源代码路径:C:\android-sdk-windows\platforms\android-8\data\res\drawable),之后会发现stat_sys_battery.xml