你对这个问题有任何想法:当我关闭收到的视频通话时,应用程序崩溃,给我这个错误:
11-13 16:59:00.341 6531-6531/appPackage E/SinchVideoService﹕ stop
11-13 16:59:00.341 6531-6531/appPackage D/SinchClient﹕ Degub: terminate()
11-13 16:59:00.351 6531-6698/appPackage E/rtc﹕ #
# Fatal error in ../../../talk/app/webrtc/androidvideocapturer.cc, line 195
# Check failed: !running_
#
#
11-13 16:59:00.351 6531-6698/appPackage A/libc﹕ Fatal signal 6 (SIGABRT), code -6 in tid 6698 (Sinch Worker Th)
这似乎是一个Sinch内部错误,任何想法?
-----编辑------
当活动被破坏时会发生:
@Override
public void onDestroy()
{
if (getSinchServiceInterface() != null)
{
getSinchServiceInterface().removeMessageClientListener(this);
getSinchServiceInterface().stopClient();
}
super.onDestroy();
}
当调用扩展Service的类时,此方法(stop())被调用。
private void stop()
{
if (mSinchClient != null)
{
mSinchClient.terminate();
mSinchClient = null;
}
}
- 编辑---
这是我启动客户的地方:
protected void onServiceConnected()
{
getSinchServiceInterface().setStartListener(this);
PreferencesDataAccess prefs = new PreferencesDataAccess(this);
getSinchServiceInterface().startClient("user-" + prefs.getCurrentUser().getUserID());
getSinchServiceInterface().addMessageClientListener(this);
}
这是初始化的地方:
private void start(String userName)
{
if (mSinchClient == null)
{
mUserId = userName;
mSinchClient = Sinch.getSinchClientBuilder().context(getApplicationContext()).userId(userName)
.applicationKey(APP_KEY)
.applicationSecret(APP_SECRET)
.environmentHost(ENVIRONMENT).build();
mSinchClient.setSupportCalling(true);
mSinchClient.setSupportMessaging(true);
mSinchClient.startListeningOnActiveConnection();
mSinchClient.addSinchClientListener(new MySinchClientListener());
mSinchClient.getCallClient().addCallClientListener(new SinchCallClientListener());
mSinchClient.start();
}
}
答案 0 :(得分:1)
使用terminateGracefully()
代替终止。这将等待一些网络事件并优雅地关闭客户端。
此外,你不应该仅仅因为拒绝接听电话而停止sinch客户端。 sinch客户端应该存在于您的应用程序中,以便您可以接听电话。您应该停止Sinch客户的唯一时间是: - 用户退出您的应用程序,您根本不想接收此客户端的电话。
当你打电话给拒绝时,你只需要打电话给“挂机”,不要杀死客户端。
答案 1 :(得分:0)
您需要致电
kernel void kernel_passthrough(texture2d<float, access::read> inTexture [[texture(0)]],
texture2d<float, access::write> outTexture [[texture(1)]],
uint2 gid [[thread_position_in_grid]])
{
float4 inColor = inTexture.read(gid);
//
// flip texture vertically if it needs to display with right orientation
//
outTexture.write(inColor, gid);
}
在调用terminate()之前;否则你将获得一个传递给SinchClientListener的无效对象。