TelephonyManager.listen 监听使用的有关问题--怎么实现TM同时监控多个状态的改变
求助:TelephonyManager.listen 监听使用的问题--如何实现TM同时监控多个状态的改变
TelephonyManager.listen(PhoneStateListener, PhoneStateListener.XXXX);
如何实现同时监听两个状态的改变呢?直接设置时实际时最有一次设定有效
tm.listen(strenthL, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
tm.listen(pl, PhoneStateListener.LISTEN_CELL_INFO);
tm.listen(pl, PhoneStateListener.LISTEN_CALL_STATE);
在设置监听时有多个选项:
LISTEN_CALL_FORWARDING_INDICATOR
LISTEN_CALL_STATE
LISTEN_CELL_LOCATION
LISTEN_DATA_ACTIVITY
LISTEN_DATA_CONNECTION_STATE
LISTEN_MESSAGE_WAITING_INDICATOR
LISTEN_NONE
LISTEN_SERVICE_STATE
LISTEN_SIGNAL_STRENGTH
对应不同的回调函数:
onCallForwardingIndicatorChanged(cfi)
onCallStateChanged(state, incomingNumber)
onCellInfoChanged(cellInfo)
onCellLocationChanged(location)
onDataActivity(direction)
onDataConnectionStateChanged(state)
onDataConnectionStateChanged(state, networkType)
onMessageWaitingIndicatorChanged(mwi)
onServiceStateChanged(serviceState)
onSignalStrengthChanged(asu)
onSignalStrengthsChanged(signalStrength)
------解决思路----------------------
你可以试试这种形式
tm.listen(pl, PhoneStateListener.LISTEN_CELL_INFO
------解决思路----------------------
PhoneStateListener.LISTEN_CALL_STATE);
------解决思路----------------------
API的有些flag是互斥的,有些则可以叠加的。
从API文档说明来看,第二个参数是events,表示多个事件;而且注释里也说明“至少一个事件状态”,所以events是可以多个flag叠加的,即你可以一次性同时注册多个事件的监听器。
TelephonyManager.listen(PhoneStateListener, PhoneStateListener.XXXX);
如何实现同时监听两个状态的改变呢?直接设置时实际时最有一次设定有效
tm.listen(strenthL, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
tm.listen(pl, PhoneStateListener.LISTEN_CELL_INFO);
tm.listen(pl, PhoneStateListener.LISTEN_CALL_STATE);
在设置监听时有多个选项:
LISTEN_CALL_FORWARDING_INDICATOR
LISTEN_CALL_STATE
LISTEN_CELL_LOCATION
LISTEN_DATA_ACTIVITY
LISTEN_DATA_CONNECTION_STATE
LISTEN_MESSAGE_WAITING_INDICATOR
LISTEN_NONE
LISTEN_SERVICE_STATE
LISTEN_SIGNAL_STRENGTH
对应不同的回调函数:
onCallForwardingIndicatorChanged(cfi)
onCallStateChanged(state, incomingNumber)
onCellInfoChanged(cellInfo)
onCellLocationChanged(location)
onDataActivity(direction)
onDataConnectionStateChanged(state)
onDataConnectionStateChanged(state, networkType)
onMessageWaitingIndicatorChanged(mwi)
onServiceStateChanged(serviceState)
onSignalStrengthChanged(asu)
onSignalStrengthsChanged(signalStrength)
------解决思路----------------------
你可以试试这种形式
tm.listen(pl, PhoneStateListener.LISTEN_CELL_INFO
------解决思路----------------------
PhoneStateListener.LISTEN_CALL_STATE);
------解决思路----------------------
API的有些flag是互斥的,有些则可以叠加的。
/*
* To register a listener, pass a {@link PhoneStateListener}
* and specify at least one telephony state of interest in
* the events argument.
*/
public void listen(PhoneStateListener listener, int events)
从API文档说明来看,第二个参数是events,表示多个事件;而且注释里也说明“至少一个事件状态”,所以events是可以多个flag叠加的,即你可以一次性同时注册多个事件的监听器。