【问题标题】:How to implement video with connectionservice如何用connectionservice实现视频
【发布时间】:2017-03-30 06:50:45
【问题描述】:

我想通过连接服务使用系统应用程序实现视频聊天。 https://developer.android.com/reference/android/telecom/ConnectionService.html。不幸的是,我找不到任何示例或教程如何做到这一点。这是我所做的:

注册服务:

TelecomManager manager = (TelecomManager) getSystemService(TELECOM_SERVICE);
PhoneAccountHandle phoneAccountHandle = new PhoneAccountHandle(new    ComponentName(getBaseContext().getPackageName(),    PhoneConnectionService.class.getName()), "myConnectionServiceId");
PhoneAccount.Builder builder = PhoneAccount.builder(phoneAccountHandle,   Localization.localize(R.string.IDS_APP_NAME_SHORT));
builder.setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER | PhoneAccount.CAPABILITY_CONNECTION_MANAGER| PhoneAccount.CAPABILITY_VIDEO_CALLING );
PhoneAccount phoneAccount = builder.build();
manager.registerPhoneAccount(phoneAccount);  

拨打电话:

TelecomManager manager = (TelecomManager) context.getSystemService(TELECOM_SERVICE);
PhoneAccountHandle phoneAccountHandle = new PhoneAccountHandle(new ComponentName(context.getPackageName(), PhoneConnectionService.class.getName()), "estosConnectionServiceId");
Bundle test = new Bundle();
test.putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE,phoneAccountHandle);
test.putInt(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, VideoProfile.STATE_BIDIRECTIONAL);
test.putParcelable(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS,extras);
manager.placeCall(Uri.parse("tel:" + number),test);

我的 ConnectionService 被调用并

@Override
public Connection onCreateOutgoingConnection(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) {

    Connection conn = new MyAndroidCallConnection();
    conn.setAddress(request.getAddress(),PRESENTATION_ALLOWED);
    conn.setInitializing();
    conn.setVideoProvider(new MyVideoProvider());
    conn.setActive();

    return conn;
}

我将我的 videoprovider 放入系统要求的连接中。 电话活动出现并向我显示带有小摄像头标志的呼叫,因此系统知道我想做什么。 我现在以某种方式期望从系统调用 videoprovider 方法来为我提供视频等的表面,但没有调用任何方法。 有人知道我做错了什么或者知道在哪里可以找到这个主题的好例子。

【问题讨论】:

  • 在调用code()的情况下,你能解释一下放置parcelable对象的原因吗?我问的原因是,我正在尝试实现 gsm 调用但面临一些问题。也许这是我需要关注的关键领域,但无法获得任何相关文档。非常感谢您的回复。

标签: java android video


【解决方案1】:

我只是忘了将conn.setVideoState(VideoProfile.STATE_BIDIRECTIONAL); 添加到我的连接中,而不仅仅是在placeCall 上。现在 VideoProvider 可以按预期访问了

【讨论】:

    猜你喜欢
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2022-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多