WebRtc Event Changes

development_amir
Aamir Muhammad 3 years ago
parent 691ee4ccbf
commit 65c380997e

@ -34,7 +34,7 @@ configurations.all {
}
android {
compileSdkVersion 31
compileSdkVersion 33
sourceSets {
main.java.srcDirs += 'src/main/kotlin'

@ -90,7 +90,7 @@
</intent-filter>
</activity>
<receiver android:exported="true" android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
<receiver android:exported="true" tools:replace="android:exported" android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>

@ -11,7 +11,7 @@ class ToDoCountProviderModel with ChangeNotifier {
bool get isShowBadge => _isShowBadge;
void setState(int count, bool isShowBadge, String notifCount) {
void setState(int count, bool isShowBadge, String notifCount) {
_count = count;
_isShowBadge = isShowBadge;
_notificationsCount = notifCount;

@ -73,7 +73,6 @@ class LandingPage extends StatefulWidget {
class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
var authProvider = new AuthProvider();
int currentTab = 0;
PageController pageController;
ProjectViewModel projectViewModel;
@ -451,7 +450,6 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
}
dummyCall() async {
// final server = await SelectionDialog(
// context,
// title: "Select Server",
@ -485,6 +483,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
"picture": "video",
"is_call": "true",
"is_webrtc": "true",
// "server": "https://192.168.8.163:8086",
"server": "https://livecareturn.hmg.com:8086",
};

@ -18,7 +18,6 @@ import 'package:just_audio/just_audio.dart';
import '../../config/config.dart';
import '../videocall-webrtc-rnd/utils/device_info.dart';
class IncomingCall extends StatefulWidget {
IncomingCallData incomingCallData;
@ -29,7 +28,6 @@ class IncomingCall extends StatefulWidget {
}
class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderStateMixin {
AnimationController _animationController;
bool openCallInWeb = true;
@ -44,9 +42,10 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
@override
void initState() {
_animationController = AnimationController(vsync: this, duration: Duration(milliseconds: 500));
isCameraReady = false;
//_runAnimation();
connectSignaling();
WidgetsBinding.instance.addPostFrameCallback((_) =>_runAnimation());
WidgetsBinding.instance.addPostFrameCallback((_) => _runAnimation());
super.initState();
}
@ -62,19 +61,13 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
super.dispose();
}
Future<void> future() async {
await connectSignaling();
// await _initializeControllerFuture();
}
@override
Widget build(BuildContext context) {
return AppScaffold(
isShowAppBar: false,
isShowDecPage: false,
body: FutureBuilder<void>(
future: future(),
future: _initializeControllerFuture,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return Stack(
@ -217,21 +210,15 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
}
void _runAnimation() async {
final cameras = await availableCameras();
final firstCamera = cameras[1];
_controller = CameraController(
// Get a specific camera from the list of available cameras.
firstCamera,
// Define the resolution to use.
ResolutionPreset.medium,
);
_initializeControllerFuture = _controller.initialize();
// setState(() {
// isCameraReady = true;
// });
setState(() {});
setAudioFile();
for (int i = 0; i < 100; i++) {
await _animationController.forward();
@ -246,34 +233,27 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
await _controller.dispose();
changeCallStatusAPI(4);
if(_session != null && _signaling != null){
if (_session != null && _signaling != null) {
await Navigator.of(context).pushReplacement(
MaterialPageRoute(
// fullscreenDialog: true,
builder: (BuildContext context) {
if(widget.incomingCallData.isWebRTC == "true"){
if (widget.incomingCallData.isWebRTC == "true") {
return StartVideoCall(signaling: _signaling, session: _session);
}else{
return OpenTokConnectCallPage(
apiKey: OPENTOK_API_KEY,
sessionId: widget.incomingCallData.sessionId,
token: widget.incomingCallData.token
);
} else {
return OpenTokConnectCallPage(apiKey: OPENTOK_API_KEY, sessionId: widget.incomingCallData.sessionId, token: widget.incomingCallData.token);
}
// return VideoCallWebPage(receiverId: widget.incomingCallData.receiverID, callerId: widget.incomingCallData.callerID); // Web WebRTC VideoCall
// return CallHomePage(receiverId: widget.incomingCallData.receiverID, callerId: widget.incomingCallData.callerID); // App WebRTC VideoCall
},
),
);
}else{
} else {
// Invalid Params/Data
AppToast.showErrorToast(message: "Failed to establish connection with server");
}
} catch (err) {
print(err);
await PlatformExceptionAlertDialog(
@ -284,8 +264,7 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
void changeCallStatusAPI(int sessionStatus) {
LiveCareService service = new LiveCareService();
service.endCallAPI(widget.incomingCallData.sessionId, sessionStatus, context).then((res) {
}).catchError((err) {
service.endCallAPI(widget.incomingCallData.sessionId, sessionStatus, context).then((res) {}).catchError((err) {
print(err);
});
}
@ -293,9 +272,11 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
void backToHome() async {
// final connected = await signaling.declineCall(widget.incomingCallData.callerID, widget.incomingCallData.receiverID);
LandingPage.isOpenCallPage = false;
// _signaling
player.stop();
changeCallStatusAPI(3);
_signaling.bye(_session, callRejected: true);
_signaling.callDisconnected(_session, callRejected: true);
Navigator.of(context).pop();
}
@ -318,30 +299,28 @@ class _IncomingCallState extends State<IncomingCall> with SingleTickerProviderSt
}
}
connectSignaling({@required bool iAmCaller = false}) async{
connectSignaling({@required bool iAmCaller = false}) async {
print("----------------- + Signaling Connection Started ---------------------------");
final caller = widget.incomingCallData.callerID;
final receiver = widget.incomingCallData.receiverID;
final host = widget.incomingCallData.server;
final self_role = iAmCaller ? "Caller" : "Receiver";
final self_id = iAmCaller ? caller : receiver;
final self_user = SocketUser(id: self_id, name: "$self_role-$self_id", userAgent: DeviceInfo.userAgent, moreInfo: {});
final selfRole = iAmCaller ? "Caller" : "Receiver";
final selfId = iAmCaller ? caller : receiver;
final selfUser = SocketUser(id: selfId, name: "$selfRole-$selfId", userAgent: DeviceInfo.userAgent, moreInfo: {});
final remote_role = !iAmCaller ? "Caller" : "Receiver";
final remote_id = !iAmCaller ? caller : receiver;
final remote_user = SocketUser(id: remote_id, name: "$remote_role-$remote_id", userAgent: DeviceInfo.userAgent, moreInfo: {});
final remoteRole = !iAmCaller ? "Caller" : "Receiver";
final remoteId = !iAmCaller ? caller : receiver;
final remoteUser = SocketUser(id: remoteId, name: "$remoteRole-$remoteId", userAgent: DeviceInfo.userAgent, moreInfo: {});
final session_id = "$caller-$receiver";
_session = SessionOneToOne(id: session_id, local_user: self_user, remote_user: remote_user);
final sessionId = "$caller-$receiver";
_session = SessionOneToOne(id: sessionId, local_user: selfUser, remote_user: remoteUser);
_signaling = Signaling(host, session: _session);
_signaling = Signaling(host, session: _session);
await _signaling.connect();
if(_signaling.state == SignalingState.Open){
if (_signaling.state == SignalingState.Open) {
return;
}
}
}

@ -147,7 +147,17 @@ class Signaling {
_send('bye', {
'session_id': session.id,
'from': session.local_user.id,
'call_rejected' : callRejected
// 'call_rejected' : callRejected
});
_closeSession(session);
}
void callDisconnected(SessionOneToOne session, {bool callRejected = false}) {
_send('patient_call_rejected', {
'session_id': session.id,
'to': session.remote_user.id,
'from': session.local_user.id,
// 'call_rejected' : callRejected
});
_closeSession(session);
}
@ -256,7 +266,9 @@ class Signaling {
},
]
};
} catch (e) {}
} catch (e) {
print("jsjhs" + e.toString());
}
}
_socket?.onOpen = () {
@ -487,7 +499,6 @@ class Signaling {
});
await localStream?.dispose();
localStream = null;
await session.pc?.close();
await session.dc?.close();
}

@ -151,15 +151,16 @@ class StartVideoCallState extends State<StartVideoCall> {
});
}
_switchCamera() {
_signaling?.switchCamera();
}
_muteMic() {
_signaling?.muteMic();
}
// _switchCamera() {
// _signaling?.switchCamera();
// }
//
// _muteMic() {
// _signaling?.muteMic();
// }
Function _onAudioEnable(){
print("================= Audio Event Triggered ===================");
final audioTrack = localMediaStream.getAudioTracks()[0];
final micEnabled = audioTrack.enabled;
localMediaStream.getAudioTracks()[0].enabled = !micEnabled;
@ -169,6 +170,7 @@ class StartVideoCallState extends State<StartVideoCall> {
}
Function _onVideoEnabled() {
print("================= Video Event Triggered ===================");
final videoTrack = localMediaStream.getVideoTracks()[0];
bool videoEnabled = videoTrack.enabled;
localMediaStream.getVideoTracks()[0].enabled = !videoEnabled;
@ -176,6 +178,7 @@ class StartVideoCallState extends State<StartVideoCall> {
}
Function _onSwitchCamera() {
print("================= Camera Switch Event Triggered ===================");
Helper.switchCamera(localMediaStream.getVideoTracks()[0]);
}
@ -197,6 +200,8 @@ class StartVideoCallState extends State<StartVideoCall> {
}
Future<void> _onHangup({bool byRemote = false}) async {
print("================= HangUp Event Triggered ===================");
print("================= $byRemote ===================");
if(byRemote){
Navigator.of(context).pop();
}else{

@ -9,12 +9,8 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter_hms_gms_availability/flutter_hms_gms_availability.dart';
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:huawei_location/location/fused_location_provider_client.dart';
import 'package:huawei_location/location/location.dart';
import 'package:huawei_location/location/location_callback.dart';
import 'package:huawei_location/location/location_request.dart';
import 'package:huawei_location/location/location_settings_request.dart';
import 'package:huawei_location/permission/permission_handler.dart';
import 'package:huawei_location/huawei_location.dart';
import 'package:permission_handler/permission_handler.dart';
class LocationUtils {
@ -77,7 +73,8 @@ class LocationUtils {
LocationCallback _locationCallback;
_getHMSCurrentLocation(Function(LatLng) callBack) async {
PermissionHandler permissionHandler = PermissionHandler();
// PermissionHandler permissionHandler = PermissionHandler();
Permission permissionHandler;
int _locationUpdateCbId = 0;
doIt() {
@ -106,7 +103,8 @@ class LocationUtils {
});
}
if (await permissionHandler.hasLocationPermission()) {
// if (await permissionHandler.hasLocationPermission()) {
if (await permissionHandler.status.isGranted) {
doIt();
} else {
bool has = await requestPermissions();

Loading…
Cancel
Save