[英]Incoming phone call handling
This is familiar problem. 这是熟悉的问题。 I am writing a media player application.
我正在编写一个媒体播放器应用程序。 I want to pause my media player when there is a incoming call.
我想在有来电时暂停媒体播放器。 How can i do that.
我怎样才能做到这一点。 Already done with my SMS handling with following code.
我的短信处理已通过以下代码完成。
IntentFilter intentFilter= new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
SMSReceiver sMSReceiver= new SMSReceiver();
registerReceiver(sMSReceiver, intentFilter);
So is there any simple way to handle incoming calls also 有没有简单的方法来处理来电
Use TelephonyManager.EXTRA_STATE_RINGING
and TelephonyManager.EXTRA_STATE_IDLE
. 使用
TelephonyManager.EXTRA_STATE_RINGING
和TelephonyManager.EXTRA_STATE_IDLE
。 Check the intent for: 检查意图:
intent.getStringExtra(TelephonyManager.EXTRA_STATE)
which should equal one of these. 应该等于其中之一。
In your manifest: 在您的清单中:
<receiver android:name=".CallReciever">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
Just write one Broadcast receiver and declared it in manifest 只需编写一个广播接收器并在清单中声明它
<receiver
android:name="com.sample.myapp.ReceiveIncomingCall"
android:enabled="true"
android:exported="true"
android:permission="android.permission.READ_PHONE_STATE" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
write a Receiver like this... 像这样写一个接收器...
public class ReceiveIncomingCall extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
// call is coming...
}
}
}
and add 并添加
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
in your manifest 在你的清单上
You should properly handle audio focus. 您应该正确处理音频焦点。 There is a good guide on Android Developers: http://developer.android.com/training/managing-audio/audio-focus.html
Android开发人员有一个很好的指南: http : //developer.android.com/training/managing-audio/audio-focus.html
OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT
// Pause playback
} else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
// Resume playback
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
am.abandonAudioFocus(afChangeListener);
// Stop playback
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.