本文整理汇总了Java中io.rong.calllib.RongCallClient类的典型用法代码示例。如果您正苦于以下问题:Java RongCallClient类的具体用法?Java RongCallClient怎么用?Java RongCallClient使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
RongCallClient类属于io.rong.calllib包,在下文中一共展示了RongCallClient类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: onDisableCameraBtnClick
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
public void onDisableCameraBtnClick(View view) {
TextView text = (TextView) bottomButtonContainer.findViewById(R.id.rc_voip_disable_camera_text);
String currentUserId = RongIMClient.getInstance().getCurrentUserId();
RongCallClient.getInstance().setEnableLocalVideo(view.isSelected());
if (view.isSelected()) {
text.setText(R.string.rc_voip_disable_camera);
if (localViewUserId.equals(currentUserId)) {
localView.setVisibility(View.VISIBLE);
} else {
remoteViewContainer.findViewWithTag(currentUserId).setVisibility(View.VISIBLE);
}
} else {
text.setText(R.string.rc_voip_enable_camera);
if (localViewUserId.equals(currentUserId)) {
localView.setVisibility(View.GONE);
} else {
remoteViewContainer.findViewWithTag(currentUserId).setVisibility(View.GONE);
}
}
view.setSelected(!view.isSelected());
}
开发者ID:hushengjun,项目名称:FastAndroid,代码行数:23,代码来源:MultiVideoCallActivity.java
示例2: onItemClick
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@Override
public void onItemClick(View view, int position, CallSTerminateMessage content, UIMessage message) {
RongCallSession profile = RongCallClient.getInstance().getCallSession();
if (profile != null && profile.getActiveTime() > 0) {
Toast.makeText(view.getContext(), view.getContext().getString(R.string.rc_voip_call_start_fail), Toast.LENGTH_SHORT).show();
return;
}
RongCallCommon.CallMediaType mediaType = content.getMediaType();
String action = null;
if (mediaType.equals(RongCallCommon.CallMediaType.VIDEO)) {
action = RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEVIDEO;
} else {
action = RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEAUDIO;
}
Intent intent = new Intent(action);
intent.setPackage(view.getContext().getPackageName());
intent.putExtra("conversationType", message.getConversationType().getName().toLowerCase());
intent.putExtra("targetId", message.getTargetId());
intent.putExtra("callAction", RongCallAction.ACTION_OUTGOING_CALL.getName());
view.getContext().startActivity(intent);
}
开发者ID:hushengjun,项目名称:FastAndroid,代码行数:22,代码来源:CallEndMessageItemProvider.java
示例3: showVideoCallInformation
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
public void showVideoCallInformation() {
isInformationShow = true;
mUserInfoContainer.setVisibility(View.VISIBLE);
mUserInfoContainer.findViewById(R.id.rc_voip_call_minimize).setVisibility(View.VISIBLE);
mButtonContainer.setVisibility(View.VISIBLE);
FrameLayout btnLayout = (FrameLayout) inflater.inflate(R.layout.rc_voip_call_bottom_connected_button_layout, null);
btnLayout.findViewById(R.id.rc_voip_call_mute).setSelected(muted);
btnLayout.findViewById(R.id.rc_voip_handfree).setVisibility(View.GONE);
btnLayout.findViewById(R.id.rc_voip_camera).setVisibility(View.VISIBLE);
mButtonContainer.removeAllViews();
mButtonContainer.addView(btnLayout);
View view = findViewById(R.id.rc_voip_audio_chat);
view.setVisibility(View.VISIBLE);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RongCallClient.getInstance().changeCallMediaType(RongCallCommon.CallMediaType.AUDIO);
callSession.setMediaType(RongCallCommon.CallMediaType.AUDIO);
initAudioCallView();
}
});
}
开发者ID:hushengjun,项目名称:FastAndroid,代码行数:23,代码来源:SingleCallActivity.java
示例4: onBackPressed
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@Override
public void onBackPressed() {
List<CallUserProfile> participantProfiles = callSession.getParticipantProfileList();
RongCallCommon.CallStatus callStatus = null;
for (CallUserProfile item : participantProfiles) {
if (item.getUserId().equals(callSession.getSelfUserId())) {
callStatus = item.getCallStatus();
break;
}
}
if (callStatus != null && callStatus.equals(RongCallCommon.CallStatus.CONNECTED)) {
super.onBackPressed();
} else {
RongCallClient.getInstance().hangUpCall(callSession.getCallId());
}
}
开发者ID:hushengjun,项目名称:FastAndroid,代码行数:17,代码来源:MultiVideoCallActivity.java
示例5: onRequestPermissionsResult
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@TargetApi(23)
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
if (PermissionCheckUtil.checkPermissions(this, AUDIO_CALL_PERMISSIONS)) {
if (startForCheckPermissions) {
startForCheckPermissions = false;
RongCallClient.getInstance().onPermissionGranted();
} else {
initView();
}
} else {
if (startForCheckPermissions) {
startForCheckPermissions = false;
RongCallClient.getInstance().onPermissionDenied();
} else {
finish();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
开发者ID:hushengjun,项目名称:FastAndroid,代码行数:27,代码来源:MultiAudioCallActivity.java
示例6: onActivityResult
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS) {
if (PermissionCheckUtil.checkPermissions(this, AUDIO_CALL_PERMISSIONS)) {
if (startForCheckPermissions) {
startForCheckPermissions = false;
RongCallClient.getInstance().onPermissionGranted();
} else {
initView();
}
} else {
if (startForCheckPermissions) {
startForCheckPermissions = false;
RongCallClient.getInstance().onPermissionDenied();
} else {
finish();
}
}
} else {
if (callSession.getEndTime() != 0) {
finish();
return;
}
shouldShowFloat = true;
if (resultCode == RESULT_OK) {
ArrayList<String> invited = data.getStringArrayListExtra("invited");
RongCallClient.getInstance().addParticipants(callSession.getCallId(), invited);
}
}
}
开发者ID:hushengjun,项目名称:FastAndroid,代码行数:33,代码来源:MultiAudioCallActivity.java
示例7: onBackPressed
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@Override
public void onBackPressed() {
if (callSession == null) {
callSession = RongCallClient.getInstance().getCallSession();
if (callSession == null) {
super.onBackPressed();
return;
}
}
List<CallUserProfile> participantProfiles = callSession.getParticipantProfileList();
RongCallCommon.CallStatus callStatus = null;
for (CallUserProfile item : participantProfiles) {
if (item.getUserId().equals(callSession.getSelfUserId())) {
callStatus = item.getCallStatus();
break;
}
}
if (callStatus != null && callStatus.equals(RongCallCommon.CallStatus.CONNECTED)) {
super.onBackPressed();
} else {
RongCallClient.getInstance().hangUpCall(callSession.getCallId());
}
}
开发者ID:hushengjun,项目名称:FastAndroid,代码行数:24,代码来源:MultiAudioCallActivity.java
示例8: startVoice
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
public void startVoice(View view) {
RongCallSession profile = RongCallClient.getInstance().getCallSession();
if (profile != null && profile.getActiveTime() > 0) {
Toast.makeText(mContext, getString(io.rong.callkit.R.string.rc_voip_call_start_fail), Toast.LENGTH_SHORT).show();
return;
}
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null || !networkInfo.isConnected() || !networkInfo.isAvailable()) {
Toast.makeText(mContext, getString(io.rong.callkit.R.string.rc_voip_call_network_error), Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEAUDIO);
intent.putExtra("conversationType", Conversation.ConversationType.PRIVATE.getName().toLowerCase());
intent.putExtra("targetId", mFriend.getUserId());
intent.putExtra("callAction", RongCallAction.ACTION_OUTGOING_CALL.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setPackage(getPackageName());
getApplicationContext().startActivity(intent);
}
开发者ID:LanguidSheep,项目名称:sealtalk-android-master,代码行数:22,代码来源:UserDetailActivity.java
示例9: startVideo
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
public void startVideo(View view) {
RongCallSession profile = RongCallClient.getInstance().getCallSession();
if (profile != null && profile.getActiveTime() > 0) {
Toast.makeText(mContext, getString(io.rong.callkit.R.string.rc_voip_call_start_fail), Toast.LENGTH_SHORT).show();
return;
}
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null || !networkInfo.isConnected() || !networkInfo.isAvailable()) {
Toast.makeText(mContext, getString(io.rong.callkit.R.string.rc_voip_call_network_error), Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEVIDEO);
intent.putExtra("conversationType", Conversation.ConversationType.PRIVATE.getName().toLowerCase());
intent.putExtra("targetId", mFriend.getUserId());
intent.putExtra("callAction", RongCallAction.ACTION_OUTGOING_CALL.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setPackage(getPackageName());
getApplicationContext().startActivity(intent);
}
开发者ID:LanguidSheep,项目名称:sealtalk-android-master,代码行数:21,代码来源:UserDetailActivity.java
示例10: showVideoCallInformation
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
public void showVideoCallInformation() {
isInformationShow = true;
mUserInfoContainer.setVisibility(View.VISIBLE);
mUserInfoContainer.findViewById(R.id.rc_voip_call_minimize).setVisibility(View.VISIBLE);
mButtonContainer.setVisibility(View.VISIBLE);
FrameLayout btnLayout = (FrameLayout) inflater.inflate(R.layout.rc_voip_call_bottom_connected_button_layout, null);
btnLayout.findViewById(R.id.rc_voip_call_mute).setSelected(muted);
btnLayout.findViewById(R.id.rc_voip_handfree).setVisibility(View.GONE);
btnLayout.findViewById(R.id.rc_voip_camera).setVisibility(View.VISIBLE);
mButtonContainer.removeAllViews();
mButtonContainer.addView(btnLayout);
View view = findViewById(R.id.rc_voip_audio_chat);
view.setVisibility(View.VISIBLE);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RongCallClient.getInstance().changeCallMediaType(RongCallCommon.CallMediaType.AUDIO);
initAudioCallView();
}
});
}
开发者ID:rongcloud,项目名称:callkit-android,代码行数:22,代码来源:SingleCallActivity.java
示例11: onCreate
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
RongCallClient.getInstance().setVoIPCallListener(this);
shouldRestoreFloat = true;
PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();
if (!isScreenOn) {
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright");
wl.acquire();
wl.release();
}
handler = new Handler();
}
开发者ID:rongcloud,项目名称:callkit-android,代码行数:21,代码来源:BaseCallActivity.java
示例12: onRequestPermissionsResult
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@TargetApi(23)
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED && permissions[0].equals(Manifest.permission.RECORD_AUDIO)) {
if (startForCheckPermissions) {
startForCheckPermissions = false;
RongCallClient.getInstance().onPermissionGranted();
} else {
initView();
}
} else {
if (startForCheckPermissions) {
startForCheckPermissions = false;
RongCallClient.getInstance().onPermissionDenied();
} else {
finish();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
开发者ID:rongcloud,项目名称:callkit-android,代码行数:27,代码来源:MultiAudioCallActivity.java
示例13: onRestoreFloatBox
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@Override
public void onRestoreFloatBox(Bundle bundle) {
super.onRestoreFloatBox(bundle);
if (bundle != null) {
maudioContainer.addView(outgoingLayout);
memberContainer = (CallUserGridView) maudioContainer.findViewById(R.id.rc_voip_members_container);
FrameLayout controller = (FrameLayout) maudioContainer.findViewById(R.id.rc_voip_control_layout);
controller.addView(outgoingController);
callSession = RongCallClient.getInstance().getCallSession();
memberContainer.enableShowState(true);
List<CallUserProfile> participantProfiles = callSession.getParticipantProfileList();
for (CallUserProfile item : participantProfiles) {
if (!item.getUserId().equals(callSession.getSelfUserId()) && !item.getUserId().equals(callSession.getCallerUserId())) {
if (item.getCallStatus().equals(RongCallCommon.CallStatus.CONNECTED))
memberContainer.addChild(item.getUserId(), RongContext.getInstance().getUserInfoFromCache(item.getUserId()));
else {
String state = getString(R.string.rc_voip_call_connecting);
memberContainer.addChild(item.getUserId(), RongContext.getInstance().getUserInfoFromCache(item.getUserId()), state);
}
}
}
onCallConnected(callSession, null);
}
}
开发者ID:rongcloud,项目名称:callkit-android,代码行数:26,代码来源:MultiAudioCallActivity.java
示例14: startVoice
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
public void startVoice(View view) {
RongCallSession profile = RongCallClient.getInstance().getCallSession();
if (profile != null && profile.getActiveTime() > 0) {
Toast.makeText(mContext,
profile.getMediaType() == RongCallCommon.CallMediaType.AUDIO ?
getString(io.rong.callkit.R.string.rc_voip_call_audio_start_fail) :
getString(io.rong.callkit.R.string.rc_voip_call_video_start_fail),
Toast.LENGTH_SHORT)
.show();
return;
}
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null || !networkInfo.isConnected() || !networkInfo.isAvailable()) {
Toast.makeText(mContext, getString(io.rong.callkit.R.string.rc_voip_call_network_error), Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEAUDIO);
intent.putExtra("conversationType", Conversation.ConversationType.PRIVATE.getName().toLowerCase(Locale.US));
intent.putExtra("targetId", mFriend.getUserId());
intent.putExtra("callAction", RongCallAction.ACTION_OUTGOING_CALL.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setPackage(getPackageName());
getApplicationContext().startActivity(intent);
}
开发者ID:sealtalk,项目名称:sealtalk-android,代码行数:27,代码来源:UserDetailActivity.java
示例15: startVideo
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
public void startVideo(View view) {
RongCallSession profile = RongCallClient.getInstance().getCallSession();
if (profile != null && profile.getActiveTime() > 0) {
Toast.makeText(mContext,
profile.getMediaType() == RongCallCommon.CallMediaType.AUDIO ?
getString(io.rong.callkit.R.string.rc_voip_call_audio_start_fail) :
getString(io.rong.callkit.R.string.rc_voip_call_video_start_fail),
Toast.LENGTH_SHORT)
.show();
return;
}
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null || !networkInfo.isConnected() || !networkInfo.isAvailable()) {
Toast.makeText(mContext, getString(io.rong.callkit.R.string.rc_voip_call_network_error), Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEVIDEO);
intent.putExtra("conversationType", Conversation.ConversationType.PRIVATE.getName().toLowerCase(Locale.US));
intent.putExtra("targetId", mFriend.getUserId());
intent.putExtra("callAction", RongCallAction.ACTION_OUTGOING_CALL.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setPackage(getPackageName());
getApplicationContext().startActivity(intent);
}
开发者ID:sealtalk,项目名称:sealtalk-android,代码行数:26,代码来源:UserDetailActivity.java
示例16: onItemClick
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@Override
public void onItemClick(View view, int position, CallSTerminateMessage content, UIMessage message) {
RongCallSession profile = RongCallClient.getInstance().getCallSession();
if (profile != null && profile.getActiveTime() > 0) {
Toast.makeText(view.getContext(),
profile.getMediaType() == RongCallCommon.CallMediaType.AUDIO ?
view.getContext().getString(R.string.rc_voip_call_audio_start_fail) :
view.getContext().getString(R.string.rc_voip_call_video_start_fail),
Toast.LENGTH_SHORT)
.show();
return;
}
RongCallCommon.CallMediaType mediaType = content.getMediaType();
String action = null;
if (mediaType.equals(RongCallCommon.CallMediaType.VIDEO)) {
action = RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEVIDEO;
} else {
action = RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEAUDIO;
}
Intent intent = new Intent(action);
intent.setPackage(view.getContext().getPackageName());
intent.putExtra("conversationType", message.getConversationType().getName().toLowerCase(Locale.US));
intent.putExtra("targetId", message.getTargetId());
intent.putExtra("callAction", RongCallAction.ACTION_OUTGOING_CALL.getName());
view.getContext().startActivity(intent);
}
开发者ID:sealtalk,项目名称:sealtalk-android,代码行数:27,代码来源:CallEndMessageItemProvider.java
示例17: onAddMember
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@Override
protected void onAddMember(List<String> newMemberIds) {
if (newMemberIds == null || newMemberIds.isEmpty()) {
return;
}
List<String> added = new ArrayList<>();
List<String> participants = new ArrayList<>();
List<CallUserProfile> list = RongCallClient.getInstance().getCallSession().getParticipantProfileList();
for (CallUserProfile profile : list) {
participants.add(profile.getUserId());
}
for (String id : newMemberIds) {
if (participants.contains(id)) {
continue;
} else {
added.add(id);
}
}
if (added.isEmpty()) {
return;
}
RongCallClient.getInstance().addParticipants(callSession.getCallId(), added);
}
开发者ID:sealtalk,项目名称:sealtalk-android,代码行数:25,代码来源:MultiVideoCallActivity.java
示例18: onNewIntent
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@Override
protected void onNewIntent(Intent intent) {
startForCheckPermissions = intent.getBooleanExtra("checkPermissions", false);
RongCallAction callAction = RongCallAction.valueOf(intent.getStringExtra("callAction"));
if (callAction == null) {
return;
}
if (callAction.equals(RongCallAction.ACTION_OUTGOING_CALL)) {
if (intent.getAction().equals(RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEAUDIO)) {
mediaType = RongCallCommon.CallMediaType.AUDIO;
} else {
mediaType = RongCallCommon.CallMediaType.VIDEO;
}
} else if (callAction.equals(RongCallAction.ACTION_INCOMING_CALL)) {
callSession = intent.getParcelableExtra("callSession");
mediaType = callSession.getMediaType();
} else {
callSession = RongCallClient.getInstance().getCallSession();
mediaType = callSession.getMediaType();
}
if (!requestCallPermissions(mediaType, REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS)) {
return;
}
if (callSession != null) {
setupIntent();
}
super.onNewIntent(intent);
}
开发者ID:hushengjun,项目名称:FastAndroid,代码行数:31,代码来源:SingleCallActivity.java
示例19: onRequestPermissionsResult
import io.rong.calllib.RongCallClient; //导入依赖的package包/类
@TargetApi(23)
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
boolean permissionGranted;
if (mediaType == RongCallCommon.CallMediaType.AUDIO) {
permissionGranted = PermissionCheckUtil.checkPermissions(this, AUDIO_CALL_PERMISSIONS);
} else {
permissionGranted = PermissionCheckUtil.checkPermissions(this, VIDEO_CALL_PERMISSIONS);
}
if (permissionGranted) {
if (startForCheckPermissions) {
startForCheckPermissions = false;
RongCallClient.getInstance().onPermissionGranted();
} else {
setupIntent();
}
} else {
if (startForCheckPermissions) {
startForCheckPermissions = false;
RongCallClient.getInstance().onPermissionDenied();
} else {
finish();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
开发者ID:hushengjun,项目名称:FastAndroid,代码行数:34,代码来源:SingleCallActivity.java
注:本文中的io.rong.calllib.RongCallClient类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论