gpt4 book ai didi

Android 在一个 fragment 中广播

转载 作者:行者123 更新时间:2023-11-29 02:28:24 25 4
gpt4 key购买 nike

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

因为Fragment无法使用BroadcastReceiver,所以在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();
}
}
}
};

最佳答案

In your Fragment :

onCreateView 中调用 registerBroadcast()

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
}
};

From where you want to trigger receiver :

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

关于Android 在一个 fragment 中广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50920007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com