片段中的Android广播

我正在构建自己的VoIP应用程序。最初使用Activity和BroadcastReceiver并能正常工作,现在我想将它们转换为Drawer的Fragment。

因为BroadcastReceiver不能被Fragment使用,所以我在stackoverflow上找到了一些方法,但是仍然无法使用...

下面的所有代码都在同一个文件中

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        V = inflater.inflate(R.layout.dial, container, false);
        filter = new IntentFilter();
        filter.addAction("android.SipDemo.INCOMING_CALL");
        LocalBroadcastManager.getInstance(getActivity()).registerReceiver(callReceiver, filter);
        getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        initializeManager();

        // Inflate the layout for this fragment
        return V;
    }

private final BroadcastReceiver callReceiver = new BroadcastReceiver()
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        SipAudioCall incomingCall = null;
        try {

            SipAudioCall.Listener listener = new SipAudioCall.Listener() {
                @Override
                public void onRinging(SipAudioCall call, SipProfile caller) {
                    try {
                        call.answerCall(30);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                public void onCallEnded(SipAudioCall call) {
                    endMessage();
                }
            };
            incomingCall = manager.takeAudioCall(intent, listener);
            updateStatus("call incoming");
            call = incomingCall;
            call.answerCall(30);
            call.startAudio();
            call.setSpeakerMode(isSpeakerClicked);
        } catch (Exception e) {
            if (incomingCall != null) {
                incomingCall.close();
            }
        }
    }
};
深帕特尔

在您的片段中:

打电话给registerBroadcast()onCreateView

private void registerBroadcast() {
        LocalBroadcastManager.getInstance(getActivity()).registerReceiver(addCallReceiver,
                new IntentFilter(getString(R.string.broadcast_add_call)));
    }

BroadcastReceiver addCallReceiver= new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // perform actions
    }
};

从要触发接收器的位置:

LocalBroadcastManager.getInstance(mContext).sendBroadcast(new Intent(getString(R.string.broadcast_add_call)));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章