android来电事件,android – 来电时没有响铃事件

我不知道问题出在哪里.

监听器没有捕获到铃声事件(所以我可以决定接受还是拒绝来电).

在清单中是这样的:

在主要活动onCreate是这样的:

IntentFilter filter = new IntentFilter();

filter.addAction("android.SipDemo.INCOMING_CALL");

callReceiver = new IncomingCallReceiver();

this.registerReceiver(callReceiver, filter);

...

SipManager manager = SipManager.newInstance(this);

Intent i = new Intent();

i.setAction("android.SipDemo.INCOMING_CALL");

PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);

manager.open(me, pi, null);

在BroadcastReceiver类中是这样的:

public void onReceive(Context context, Intent intent) {

SipAudioCall incomingCall = null;

try {

SipAudioCall.Listener listener = new SipAudioCall.Listener() {

...

@Override

public void onCallEnded(SipAudioCall call) {

// TODO Auto-generated method stub

super.onCallEnded(call);

}

@Override

public void onRinging(SipAudioCall call, SipProfile caller) {

try {

call.answerCall(30);

call.startAudio();

call.setSpeakerMode(true);

if(call.isMuted()) {

call.toggleMute();

}

} catch (Exception e) {

e.printStackTrace();

}

}

};

WalkieTalkieActivity wtActivity = (WalkieTalkieActivity) context;

incomingCall = wtActivity.manager.takeAudioCall(intent, listener);

wtActivity.call = incomingCall;

...

我收到CallEnd事件和onChanged(在我结束通话后),但我没有收到关于铃声的事件.

什么可能是一个问题?

日Thnx

编辑:

我改变了一切.

我把新的意图过滤器放到这样的接收器(粗体):

**

**

我更改了BroadcastReceiver继承类(粗体):

@Override

public void onReceive(Context context, Intent intent) {

try {

**PhoneStateListener phoneListener=new PhoneStateListener() {

@Override

public void onCallStateChanged(int state, String incomingNumber) {

// TODO Auto-generated method stub

Log.d("DEBUG", "Phone listener....");

String stateString = "N/A";

switch (state) {

case TelephonyManager.CALL_STATE_IDLE:

stateString = "Idle";

break;

case TelephonyManager.CALL_STATE_OFFHOOK:

stateString = "Off Hook";

break;

case TelephonyManager.CALL_STATE_RINGING:

stateString = "Ringing";

break;

}

}

};**

WalkieTalkieActivity wtActivity = (WalkieTalkieActivity) context;

SipSession ses=wtActivity.manager.getSessionFor(intent);

**TelephonyManager telephony = (TelephonyManager) Context.getSystemService(Context.TELEPHONY_SERVICE);

telephony.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);**

...

现在我只得到IDLE状态,但仍然没有响.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,我们可以了解到Android开发中的基本知识点、AndroidManifest.xml文件的作用、Intent的使用方法、自定义控件实现方法等。针对您的问题,我们可以通过监听来电广播实现暂停歌词的功能。具体实现步骤如下: 1. 在AndroidManifest.xml文件中添加权限和广播接收器: ```xml <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <receiver android:name=".PhoneStateReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> ``` 2. 创建一个广播接收器PhoneStateReceiver,用于监听来电广播: ```java public class PhoneStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) { // 来电响铃暂停歌词 // TODO: 暂停歌词的代码 } else if (TelephonyManager.EXTRA_STATE_IDLE.equals(state)) { // 通话结束恢复歌词 // TODO: 恢复歌词的代码 } } } ``` 3. 在需要暂停歌词的地方调用registerReceiver()方法注册广播接收器: ```java PhoneStateReceiver receiver = new PhoneStateReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); registerReceiver(receiver, filter); ``` 4. 在不需要监听来电广播调用unregisterReceiver()方法注销广播接收器: ```java unregisterReceiver(receiver); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值