WIP: callPageV2 #52

Draft
florian wants to merge 16 commits from callPageV2 into dev
3 changed files with 45 additions and 10 deletions
Showing only changes of commit 7339d5982e - Show all commits

View File

@ -153,6 +153,18 @@ class MainActivity : FlutterActivity() {
}
result.success(true)
}
"getCallState" -> {
val stateStr = when (MyInCallService.currentCall?.state) {
android.telecom.Call.STATE_ACTIVE -> "active"
android.telecom.Call.STATE_RINGING -> "ringing"
android.telecom.Call.STATE_DIALING -> "dialing"
android.telecom.Call.STATE_DISCONNECTED -> "disconnected"
android.telecom.Call.STATE_DISCONNECTING -> "disconnecting"
else -> "unknown"
}
Log.d(TAG, "getCallState called, returning: $stateStr")
result.success(stateStr)
}
else -> result.notImplemented()
}
}

View File

@ -37,6 +37,7 @@ class _CallPageState extends State<CallPage> {
@override
void initState() {
super.initState();
_checkInitialCallState();
_listenToCallState();
}
@ -47,10 +48,24 @@ class _CallPageState extends State<CallPage> {
super.dispose();
}
void _checkInitialCallState() async {
try {
final state = await _callService.getCallState();
print('CallPage: Initial call state: $state');
if (mounted && state == "active") {
setState(() {
_callStatus = "00:00";
_startCallTimer();
});
}
} catch (e) {
print('CallPage: Error checking initial state: $e');
}
}
void _listenToCallState() {
_callStateSubscription = _callService.callStateStream.listen((state) {
final eventTime = DateTime.now().millisecondsSinceEpoch;
print('CallPage: [${eventTime}ms] Call state changed to $state');
print('CallPage: Call state changed to $state');
if (mounted) {
setState(() {
if (state == "active") {
@ -76,7 +91,6 @@ class _CallPageState extends State<CallPage> {
final minutes = (_callSeconds ~/ 60).toString().padLeft(2, '0');
final seconds = (_callSeconds % 60).toString().padLeft(2, '0');
_callStatus = '$minutes:$seconds';
print('CallPage: [${DateTime.now().millisecondsSinceEpoch}ms] Timer updated, duration: $_callStatus');
});
}
});
@ -114,12 +128,11 @@ class _CallPageState extends State<CallPage> {
void _hangUp() async {
try {
final hangUpStart = DateTime.now().millisecondsSinceEpoch;
print('CallPage: [${hangUpStart}ms] Initiating hangUp');
print('CallPage: Initiating hangUp');
final result = await _callService.hangUpCall(context);
print('CallPage: [${DateTime.now().millisecondsSinceEpoch}ms] Hang up result: $result');
print('CallPage: Hang up result: $result');
} catch (e) {
print('CallPage: [${DateTime.now().millisecondsSinceEpoch}ms] Error hanging up: $e');
print('CallPage: Error hanging up: $e');
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Error hanging up: $e")),

View File

@ -133,6 +133,17 @@ class CallService {
});
}
Future<String?> getCallState() async {
try {
final state = await _channel.invokeMethod('getCallState');
print('CallService: getCallState returned: $state');
return state as String?;
} catch (e) {
print('CallService: Error getting call state: $e');
return null;
}
}
void dispose() {
_callStateController.close();
}
@ -322,7 +333,6 @@ class CallService {
_activeCallNumber = null;
}
Future<Map<String, dynamic>> makeGsmCall(
BuildContext context, {
required String phoneNumber,