创建的事sip.js 版本0.21.2 呼叫成功后听不到对方声音,对方可以听到我的声音 本人小白刚接触这些,希望大佬能够提个处理方向
<script setup>
import { reactive } from 'vue'
import { UserAgent, Inviter, SessionState } from 'sip.js'
const transportOptions = {
server: "ws://192.168.0.9:5066",
traceSip: true,
keepAliveInterval: 600// SIP Websocket 服务器的 Websocket URL
}
const uri = UserAgent.makeURI("sip:1002@192.168.0.9:5060")
const userAgentOptions = {
authorizationPassword: '123456', // 分机密码
authorizationUsername: '1002', // 分机号
transportOptions,
uri,
}
let inviter = reactive()
const but1 = () => {
registerer.register() // 注册,向服务器进行身份验证并接收消息
// userAgent defined elsewhere
userAgent.start().then(() => {
const target = UserAgent.makeURI("sip:1001@192.168.0.9:5060")
inviter = new Inviter(userAgent, target, {
sessionDescriptionHandlerOptions: {
constraints: { audio: true, video: false }
}
})
inviter.invite();
inviter.stateChange.addListener((state) => {
switch (state) {
case SessionState.Initial: console.log(' 初始状态') // 最初
break;
case SessionState.Establishing:
let remoteVideo = document.getElementById('remoteVideo');
let localVideo = document.getElementById('localVideo');
var pc = inviter.sessionDescriptionHandler.peerConnection;
var remoteStream;
console.log(pc);
console.log('成功=======================================');
if (pc.getReceivers) {
remoteStream = new window.MediaStream();
pc.getReceivers().forEach((receiver) => {
// console.log(receiver)
var track = receiver.track;
console.log(track);
if (track & track.kind === "video") {
remoteStream.addTrack(track);
}
});
} else {
remoteStream = pc.getRemoteStreams()[0];
}
remoteVideo.srcObject = remoteStream;
console.log(remoteVideo.srcObject);
console.log("1-------------------------------------------");
var localStream_1;
if (pc.getSenders) {
localStream_1 = new window.MediaStream();
pc.getSenders().forEach((sender) => {
var track = sender.track;
console.log(track);
if (track && track.kind === "video") {
localStream_1.addTrack(track);
}
});
} else {
localStream_1 = pc.getLocalStreams()[0];
}
localVideo.srcObject = localStream_1;
console.log(localVideo.srcObject);
break;
case SessionState.Established: console.log('呼叫已建立') // 确立
break;
case SessionState.Terminating: console.log('正在结束呼叫') // 终止
case SessionState.Terminated: console.log('呼叫已结束') // 结束
break;
default:
throw console.log(`Unknown session state.`)
}
})
})
}
const but11 = () => {
let sessionall = inviter
if (!sessionall) {
} else if (sessionall.startTime) { // Connected
sessionall.bye();
} else if (sessionall.reject) { // Incoming
sessionall.reject();
} else if (sessionall.cancel) { // Outbound
sessionall.cancel();
}
}
</script>
问题:Android Studio中使用Echarts的双击事件不响应,如何解决?
答案:要解决这个问题,请尝试以下步骤:
implementation 'org.xerial:sqlite-jdbc:3.36.0.2'
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
import android.webkit.WebSettings;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = findViewById(R.id.webView);
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/echarts_double_click_event.html");
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 ECharts -->
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.2.0/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
// 使用刚指定的配置项和数据显示图表
myChart.setOption(option);
// 添加双击事件监听器
myChart.on('dblclick', function (params) {
alert('双击事件触发,点击的数据索引为:' + params.dataIndex);
});
</script>
</body>
</html>
<uses-permission android:name="android.permission.INTERNET" />
推荐腾讯云相关产品:腾讯云提供了多种云服务,包括云服务器、云数据库、云存储等。对于Android开发,您可能需要使用腾讯云的服务器来托管您的应用或存储数据。您可以访问腾讯云官网了解更多详情:https://cloud.tencent.com/